Salome HOME
Initial version
[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 <qptrstack.h>
10
11 class SUIT_DataObject;
12 class SUIT_Application;
13
14 #ifdef WIN32
15 #pragma warning( disable:4251 )
16 #endif
17
18 class SUIT_EXPORT SUIT_Study : public QObject
19 {
20   Q_OBJECT
21 public:
22   SUIT_Study( SUIT_Application* );
23   virtual ~SUIT_Study();
24
25   virtual int       id() const;
26
27   SUIT_DataObject*  root() const;
28   QString           studyName() const;
29   SUIT_Application* application() const;
30   SUIT_Operation*   activeOperation() const;
31
32   virtual bool      isSaved()  const;
33   virtual bool      isModified() const;
34
35   virtual void      closeDocument();
36   virtual void      createDocument();
37   virtual bool      openDocument( const QString& );
38
39   bool              saveDocument();
40   virtual bool      saveDocumentAs( const QString& );
41
42   virtual void      abortAllOperations();
43
44   virtual void      update();
45
46   virtual void      sendChangesNotification();
47
48 signals:
49   void              studyModified( SUIT_Study* );
50
51 protected:
52   virtual void      setIsSaved( const bool );
53   virtual void      setIsModified( const bool );
54   virtual void      setRoot( SUIT_DataObject* );
55   virtual void      setStudyName( const QString& );
56
57   void              stopOperation();
58   bool              canStartOperation( SUIT_Operation* );
59
60 protected:
61   typedef QPtrStack<SUIT_Operation> OperationsStack;
62
63 protected:
64   OperationsStack   myOperations;
65
66 private:
67   int               myId;
68   SUIT_Application* myApp;
69   SUIT_DataObject*  myRoot;
70   QString           myName;
71   bool              myIsSaved;
72   bool              myIsModified;
73
74   friend class SUIT_Operation;
75 };
76
77 #ifdef WIN32
78 #pragma warning( default:4251 )
79 #endif
80
81 #endif