Salome HOME
Initial version
[modules/gui.git] / src / SUIT / SUIT_Operation.h
1 #ifndef SUIT_OPERATION_H
2 #define SUIT_OPERATION_H
3
4 #include <qobject.h>
5 #include <qstring.h>
6 #include <qiconset.h>
7 #include <qkeysequence.h>
8
9 #include "SUIT.h"
10
11 class SUIT_Study;
12 class SUIT_Application;
13
14 class SUIT_EXPORT SUIT_Operation : public QObject  
15 {
16         Q_OBJECT
17
18 public:
19         enum OperationState { Waiting, Running, Suspended };
20
21 public:
22         SUIT_Operation( SUIT_Application* );
23         virtual ~SUIT_Operation();
24
25         OperationState    state() const;
26         SUIT_Study*       study() const;
27         SUIT_Application* application() const;
28
29         bool              setSlot( const QObject* theReceiver, const char* theSlot );
30
31 public slots:
32         void              start();
33         void              abort();
34         void              commit();
35         void              resume();
36         void              suspend();
37
38 signals:
39         void              started( SUIT_Operation* );
40         void              aborted( SUIT_Operation* );
41         void              resumed( SUIT_Operation* );
42         void              commited( SUIT_Operation* );
43         void              suspended( SUIT_Operation* );
44         void              callSlot();
45
46 protected:
47         virtual bool      isReadyToStart();
48         virtual void      startOperation();
49         virtual void      abortOperation();
50         virtual void      commitOperation();
51         virtual void      resumeOperation();
52         virtual void      suspendOperation();
53
54   // Returns TRUE if the given operator is valid for (can be started "above") the current operator
55         virtual bool      isValid( SUIT_Operation* ) const;
56
57         /*!
58                 Returns TRUE if current operation must not be checked for 
59                 ActiveOperation->IsValid(this).  Default implementation returns FALSE, 
60                 so it is being checked for IsValid, but some operations may overload IsGranted()
61                 In this case they will always start, no matter what operation is running.
62         */
63         virtual bool      isGranted() const;
64
65   virtual void      setStudy( SUIT_Study* );
66   virtual void      setApplication( SUIT_Application* );
67
68 private:
69         SUIT_Application* myApp;
70         SUIT_Study*                 myStudy;
71         OperationState    myState;
72
73         friend class SUIT_Study;
74 };
75
76 #endif