]> SALOME platform Git repositories - modules/gui.git/blob - src/STD/STD_Application.h
Salome HOME
13ff29e641197d670efedad2d42bc8802b1c3811
[modules/gui.git] / src / STD / STD_Application.h
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19 #ifndef STD_APPLICATION_H
20 #define STD_APPLICATION_H
21
22 #include "STD.h"
23
24 #include <SUIT_Application.h>
25
26 #include <SUIT_Desktop.h>
27 #include <SUIT_ViewManager.h>
28
29 #include <qmap.h>
30 #include <qptrlist.h>
31
32 class QToolBar;
33 class QtxAction;
34 class QPopupMenu;
35 class SUIT_Operation;
36 class SUIT_ViewWindow;
37 class SUIT_ToolWindow;
38
39 typedef QPtrList<SUIT_ViewManager> ViewManagerList;
40
41 #if defined WIN32
42 #pragma warning( disable: 4251 )
43 #endif
44
45 class STD_EXPORT STD_Application : public SUIT_Application
46 {
47   Q_OBJECT
48
49 public:
50   STD_Application();
51   virtual ~STD_Application();
52
53   virtual QString       applicationName() const;
54
55   virtual bool          isPossibleToClose( bool& );
56   virtual bool          useFile( const QString& );
57
58   virtual void          createEmptyStudy();
59
60   void                  setEditEnabled( const bool );
61   bool                  isEditEnabled() const { return myEditEnabled; }
62
63   void                  clearViewManagers();
64   virtual void          addViewManager( SUIT_ViewManager* );
65   virtual void          removeViewManager( SUIT_ViewManager* );
66
67   SUIT_ViewManager*     activeViewManager() const;
68   SUIT_ViewManager*     viewManager( const QString& ) const;
69
70   bool                  containsViewManager( SUIT_ViewManager* ) const;
71
72   ViewManagerList       viewManagers() const;
73   void                  viewManagers( ViewManagerList& ) const;
74   void                  viewManagers( const QString&, ViewManagerList& ) const;
75
76   virtual QString       getFileFilter() const { return QString::null; }
77   virtual QString       getFileName( bool open, const QString& initial, const QString& filters, 
78                                      const QString& caption, QWidget* parent );
79   QString               getDirectory( const QString& initial, const QString& caption, QWidget* parent );
80
81   virtual void          start();
82
83   virtual void          closeApplication();
84
85   virtual void          contextMenuPopup( const QString&, QPopupMenu*, QString& ) {}
86
87   bool                  exitConfirmation() const;
88   void                  setExitConfirmation( const bool );
89
90 signals:
91   /*!emit that view manager added*/
92   void                  viewManagerAdded( SUIT_ViewManager* );
93   /*!emit that view manager removed*/
94   void                  viewManagerRemoved( SUIT_ViewManager* );
95   /*!emit that view manager activated*/
96   void                  viewManagerActivated( SUIT_ViewManager* );
97
98 public slots:
99   virtual void          onNewDoc();
100   virtual void          onCloseDoc( bool ask = true );
101   virtual void          onSaveDoc();
102   virtual bool          onSaveAsDoc();
103
104   virtual void          onOpenDoc();
105   virtual bool          onOpenDoc( const QString& );
106
107   virtual bool          onLoadDoc( const QString& );
108
109   virtual void          onExit();
110
111   virtual void          onCopy();
112   virtual void          onPaste();
113
114   virtual void          onViewStatusBar( bool );
115
116   virtual void          onHelpAbout();
117
118   virtual void          onDesktopClosing( SUIT_Desktop*, QCloseEvent* );
119   virtual void          onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* );
120
121 private slots:
122   virtual void          onViewManagerActivated( SUIT_ViewManager* );
123
124 protected:
125   enum {  MenuFileId = 1,
126           MenuViewId = 2,
127           MenuEditId = 3,
128           MenuHelpId = 7
129        };
130
131   enum {  FileNewId,   FileOpenId,   FileCloseId,
132           FileSaveId,  FileSaveAsId, FileExitId, 
133           ViewStatusBarId, ViewWindowsId, NewWindowId,
134           EditCutId, EditCopyId, EditPasteId,
135           HelpAboutId,
136           UserID
137        };
138  
139   enum { CloseCancel, CloseSave, CloseDiscard };
140
141 protected:
142   virtual void          createActions();
143   virtual void          updateDesktopTitle();
144   virtual void          updateCommandsStatus();
145
146   virtual void          setDesktop( SUIT_Desktop* );
147
148   virtual void          loadPreferences();
149   virtual void          savePreferences();
150
151   virtual void          studySaved( SUIT_Study* );
152   virtual void          studyOpened( SUIT_Study* );
153   virtual void          studyCreated( SUIT_Study* );
154
155   virtual void          beforeCloseDoc( SUIT_Study* theDoc );
156   virtual void          afterCloseDoc();
157
158   virtual void          setActiveViewManager( SUIT_ViewManager* );
159
160   virtual bool          closeAction( const int, bool& );
161   virtual int           closeChoice( const QString& );
162
163 private:
164   ViewManagerList       myViewMgrs;
165   SUIT_ViewManager*     myActiveViewMgr;
166
167 private:
168   bool                  myExitConfirm;
169   bool                  myEditEnabled;
170 };
171
172 #if defined WIN32
173 #pragma warning( default: 4251 )
174 #endif
175
176 #endif