Salome HOME
PAL10125 - by double click on reference original object becomes selected
[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      closeDocument(bool permanently = true);
37   virtual void      createDocument();
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 private:
70   typedef QPtrList<SUIT_Operation> Operations;
71   void              stop( SUIT_Operation* );
72
73 private:
74   int               myId;
75   SUIT_Application* myApp;
76   SUIT_DataObject*  myRoot;
77   QString           myName;
78   bool              myIsSaved;
79   bool              myIsModified;
80   Operations        myOperations;
81   bool              myBlockChangeState;
82 };
83
84 #ifdef WIN32
85 #pragma warning( default:4251 )
86 #endif
87
88 #endif