# -*- coding: utf-8 -*-

# Copyright (c) 2003 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module defining the wizards interface to be implemented by individual wizards.
"""

from qt import QObject, QAction

class WizardIFace(QObject):
    """
    Base class defining the wizards interface to be implemented by individual wizards.
    
    Any child class has to implement these class methods:
    
        handle  -- the function to be executed
        getAction -- returns the action associated
    """
    def __init__(self, parent = None):
        """
        Constructor
        
        Arguments
        
            parent -- parent widget (QWidget)
        """
        QObject.__init__(self, parent)
    
    def handle(self):
        """
        Worker method associated with the wizard action 
        """
        raise RuntimeError, 'Not implemented'

    def getAction(self):
        '''
        Public method to get the action associated with this class wizard. 
        
        Returns
        
            the associated action
            
        The following is an example.
        
        self.action = QAction(self.trUtf8("Sample Wizard"),
             self.trUtf8("&Sample Wizard..."), 0, self)
        self.action.setStatusTip(self.trUtf8("Sample wizard"))
        self.action.setWhatsThis(self.trUtf8(
            """<b>Wizard</b>"""
            """<p>Sample wizard</p>"""
        ))
        self.connect(self.action, SIGNAL("activated()"), self.handle)
        return self.action
        '''
        raise RuntimeError, 'Not implemented'
