Salome HOME
Join modifications from branch BR_DEBUG_3_2_0b1
[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();
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 signals:
88   /*!emit that view manager added*/
89   void                  viewManagerAdded( SUIT_ViewManager* );
90   /*!emit that view manager removed*/
91   void                  viewManagerRemoved( SUIT_ViewManager* );
92   /*!emit that view manager activated*/
93   void                  viewManagerActivated( SUIT_ViewManager* );
94
95 public slots:
96   virtual void          onNewDoc();
97   virtual void          onCloseDoc( bool ask = true );
98   virtual void          onSaveDoc();
99   virtual bool          onSaveAsDoc();
100
101   virtual void          onOpenDoc();
102   virtual bool          onOpenDoc( const QString& );
103
104   virtual void          onLoadDoc();
105   virtual bool          onLoadDoc( const QString& );
106
107   virtual void          onExit();
108
109   virtual void          onCopy();
110   virtual void          onPaste();
111
112   virtual void          onViewStatusBar( bool );
113
114   virtual void          onHelpAbout();
115
116   virtual void          onDesktopClosing( SUIT_Desktop*, QCloseEvent* );
117   virtual void          onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* );
118
119 private slots:
120   virtual void          onViewManagerActivated( SUIT_ViewManager* );
121
122 protected:
123   enum {  MenuFileId = 1,
124           MenuViewId = 2,
125           MenuEditId = 3,
126           MenuHelpId = 7
127        };
128
129   enum {  FileNewId,   FileOpenId,   FileLoadId, FileCloseId,
130           FileSaveId,  FileSaveAsId, FileExitId, 
131           ViewStatusBarId, ViewWindowsId, NewWindowId,
132           EditCutId, EditCopyId, EditPasteId,
133           HelpAboutId,
134           UserID
135        };
136  
137 protected:
138   virtual void          createActions();
139   virtual void          updateDesktopTitle();
140   virtual void          updateCommandsStatus();
141
142   virtual void          setDesktop( SUIT_Desktop* );
143
144   virtual void          loadPreferences();
145   virtual void          savePreferences();
146
147   virtual void          studySaved( SUIT_Study* );
148   virtual void          studyOpened( SUIT_Study* );
149   virtual void          studyCreated( SUIT_Study* );
150
151   virtual void          beforeCloseDoc( SUIT_Study* theDoc );
152   virtual void          afterCloseDoc();
153
154   virtual void          setActiveViewManager( SUIT_ViewManager* );
155
156 private:
157   ViewManagerList       myViewMgrs;
158   SUIT_ViewManager*     myActiveViewMgr;
159
160 private:
161   bool                  myEditEnabled;
162   bool                  myClosePermanently;
163 };
164
165 #if defined WIN32
166 #pragma warning( default: 4251 )
167 #endif
168
169 #endif