Salome HOME
Transaction management in operations modifed.
[modules/gui.git] / src / SUIT / SUIT_Study.h
1 #ifndef SUIT_STUDY_H
2 #define SUIT_STUDY_H
3
4 #include "SUIT.h"
5
6 #include "SUIT_Operation.h"
7
8 #include <qobject.h>
9 #include <qptrlist.h>
10
11 class SUIT_DataObject;
12 class SUIT_Application;
13 class QDialog;
14
15 #ifdef WIN32
16 #pragma warning( disable:4251 )
17 #endif
18
19 class SUIT_EXPORT SUIT_Study : public QObject
20 {
21   Q_OBJECT
22   
23 public:
24   SUIT_Study( SUIT_Application* );
25   virtual ~SUIT_Study();
26
27   virtual int       id() const;
28
29   SUIT_DataObject*  root() const;
30   QString           studyName() const;
31   SUIT_Application* application() const;
32
33   virtual bool      isSaved()  const;
34   virtual bool      isModified() const;
35
36   virtual void      createDocument();
37   virtual void      closeDocument( bool = true );
38   virtual bool      openDocument( const QString& );
39
40   bool              saveDocument();
41   virtual bool      saveDocumentAs( const QString& );
42
43   virtual void      update();
44
45   virtual void      sendChangesNotification();
46
47   // Operation management
48   SUIT_Operation*   activeOperation() const;
49   virtual void      abortAllOperations();
50   const QPtrList<SUIT_Operation>& operations() const;
51   
52   virtual SUIT_Operation* blockingOperation( SUIT_Operation* ) const;
53
54   bool              start( SUIT_Operation*, const bool check = true );
55   bool              abort( SUIT_Operation* );
56   bool              commit( SUIT_Operation* );
57   bool              suspend( SUIT_Operation* );
58   bool              resume( SUIT_Operation* );
59
60 signals:
61   void              studyModified( SUIT_Study* );
62
63 protected:
64   virtual void      setIsSaved( const bool );
65   virtual void      setIsModified( const bool );
66   virtual void      setRoot( SUIT_DataObject* );
67   virtual void      setStudyName( const QString& );
68
69         virtual void      operationStarted( SUIT_Operation* );
70         virtual void      operationAborted( SUIT_Operation* );
71         virtual void      operationStopped( SUIT_Operation* );
72         virtual void      operationCommited( SUIT_Operation* );
73
74   virtual bool      openTransaction();
75   virtual bool      abortTransaction();
76   virtual bool      hasTransaction() const;
77   virtual bool      commitTransaction( const QString& = QString::null );
78
79 private:
80   typedef QPtrList<SUIT_Operation> Operations;
81   void              stop( SUIT_Operation* );
82
83 private:
84   int               myId;
85   SUIT_Application* myApp;
86   SUIT_DataObject*  myRoot;
87   QString           myName;
88   bool              myIsSaved;
89   bool              myIsModified;
90   Operations        myOperations;
91   bool              myBlockChangeState;
92
93   friend class SUIT_Operation;
94 };
95
96 #ifdef WIN32
97 #pragma warning( default:4251 )
98 #endif
99
100 #endif