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