]> SALOME platform Git repositories - modules/kernel.git/blob - src/SALOMEGUI/QAD_Desktop.h
Salome HOME
PR : merge branch V1_2c dans branche principale pour V1_3_0_b1
[modules/kernel.git] / src / SALOMEGUI / QAD_Desktop.h
1 //  SALOME SALOMEGUI : implementation of desktop and GUI kernel
2 //
3 //  Copyright (C) 2003  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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
21 //
22 //
23 //
24 //  File   : QAD_Desktop.h
25 //  Author : Nicolas REJNERI
26 //  Module : SALOME
27 //  $Header$
28
29 #ifndef QAD_DESKTOP_H
30 #define QAD_DESKTOP_H
31
32 #include "QAD.h"
33 #include "QAD_ResourceMgr.h"
34 #include "QAD_Application.h"
35 #include "QAD_OperatorMenus.h"
36 #include "QAD_Menus.h"
37 //NRI #include "QAD_HelpWindow.h"
38 #include "QAD_Action.h"
39
40 #include "SALOME_NamingService.hxx"
41 #include "SALOME_LifeCycleCORBA.hxx"
42
43 // IDL Headers 
44 #include <SALOMEconfig.h>
45 #include CORBA_CLIENT_HEADER(SALOME_ModuleCatalog)
46 #include CORBA_CLIENT_HEADER(SALOME_Component)
47 #include CORBA_SERVER_HEADER(SALOMEDS)
48
49 // QT Includes
50 #include <qlist.h>
51 #include <qmap.h>
52 #include <qmenubar.h>
53 #include <qtoolbar.h>
54 #include <qcombobox.h>
55 #include <qstatusbar.h>
56 #include <qpopupmenu.h>
57 #include "qworkspaceP.h"
58 #include <qmainwindow.h>
59 #include <qfiledialog.h>
60 #include <qtoolbutton.h>
61
62 // Open CASCADE Includes
63 #include <OSD_SharedLibrary.hxx>
64
65 class QAD_XmlHandler;
66
67 class QAD_EXPORT QAD_Desktop : public QMainWindow
68 {
69   Q_OBJECT
70
71 protected:
72   //NRI - unused - :  enum ComponentType {GEOM, MESH, SOLVER, DATA, VISU, OTHER} ;
73
74   enum {  FileNewId = 0, FileOpenId, FileLoadId, FileCloseId, FileSaveId, FileSaveAsId, FilePropsId, FileExitId,
75           ViewStatusBarId,
76           SelectionPointId, SelectionEdgeId, SelectionCellId, SelectionActorId,
77           PrefViewerOCCId, PrefViewerVTKId, PrefGraphSupervisorId, PrefViewerPlot2dId,
78           //VRV: T2.5 - add default viewer
79           DefaultViewerOCCId, DefaultViewerVTKId, DefaultGraphSupervisorId, DefaultPlot2dId,
80           //VRV: T2.5 - add default viewer
81           PrefViewerTrihedronId, PrefConsoleFontId, PrefObjectBrowserEntryId, 
82           PrefObjectBrowserIAPPId, PrefObjectBrowserValueId, PrefObjectBrowserCHRONO_SORTId, 
83           PrefDirsId, PrefMultiFileSave, PrefASCIISave, PrefExternalBrowserId, PrefSaveId,
84           //NRI : SAL2214
85           WindowNew3dId, ViewOCCId, ViewVTKId, ViewPlot2dId,
86           //NRI : SAL2214
87           WindowCascadeId, WindowTileId, 
88           HelpContentsId, HelpSearchId, HelpWhatsThisId, HelpAboutId };
89   enum UpdateCommand { ActivateApp, DeactivateApp };
90
91     /* Desktop can be created only by application */
92     friend  bool QAD_Application::createDesktop( SALOME_NamingService* name_service );
93     QAD_Desktop( SALOME_NamingService* name_service );
94
95 public:
96     ~QAD_Desktop();
97
98     /* global event filter for qapplication */
99     bool eventFilter( QObject* o, QEvent* e );
100
101     /* resources */
102     static QAD_ResourceMgr* getResourceManager();
103     static QAD_ResourceMgr* createResourceManager();
104
105     /* palette */
106     static QPalette* getPalette();
107     static QPalette* createPalette();
108
109     /* activeStudyChanged */
110     void onActiveStudyChanged();
111
112     /* popup */
113     void     definePopup(QString & theContext,
114                          QString & theParent, 
115                          QString & theObject );
116
117     void     createPopup(QPopupMenu* popupFather, QPopupMenu* popup,
118                          QString text, int popupID, bool separator = false);
119     void     createPopup(QPopupMenu* popup, const QString & theContext,
120                          const QString & theParent, const QString & theObject );
121     void     customPopup(QPopupMenu* popup, const QString & theContext,
122                          const QString & theParent, const QString & theObject);
123
124     /* selection mode */
125     void SetSelectionMode(int mode, bool activeCompOnly = false);
126
127     /* desktop */
128     void              showDesktop();
129     void              closeDesktop( bool forceClose = false );
130     void              putInfo ( const QString& );
131     void              putInfo ( const QString&, int );
132     QToolBar*         getStdToolBar() const;
133     QMenuBar*         getMainMenuBar() const;
134
135     /* application */
136     void              addApplication(QAD_Application* app);
137
138     /* studies */
139     const QString&    getDefaultTitle() const;
140     const QPixmap&    getDefaultIcon() const;
141     const QString&    getDefaultStudyName() const;
142     QAD_Application*  getActiveApp() const;
143     QAD_Study*        getActiveStudy() const;
144     QWorkspaceP*      getMainFrame() const;
145     QString           getNewStudyName();
146     QAD_Study*        findStudy( SALOMEDS::Study_ptr theStudy );
147
148     /* help actions */
149     virtual void      helpAbout();    
150 /*     virtual void      helpSearch(); */
151 /*     virtual void      helpContents(); */
152 /*     virtual void      helpContext(const QString& path, const QString& dir = QString::null); */
153
154     bool              loadComponent(QString);
155     void              activateComponent(const QString& theName, bool isLoadData = true);
156     void              createStudy();
157
158     void              setSettings();
159
160     SALOME_ModuleCatalog::ModuleCatalog_var getCatalogue();
161
162     QAD_Menus*            getActiveMenus()      {return myActiveMenus;}
163     QAD_OperatorMenus*    getOperatorMenus()    {return myOperatorMenus;}
164     const OSD_SharedLibrary&  getHandle() const {return mySharedLibrary;}// never return sych objects "by value"
165     const QString&        getActiveComponent() const;
166     SALOME_NamingService* getNameService()      {return myNameService;}
167
168     Engines::Component_var getEngine(const char *containerName,
169                                      const char *componentName);
170
171     QString getComponentName(const char *componentUserName);
172     QString getComponentUserName(const char *componentName);
173     
174     //NRI    QAD_HelpWindow*   getHelpWindow();
175
176     void              onMouseMove(QMouseEvent*);
177     bool              onMousePress(QMouseEvent*);
178     void              onKeyPress(QKeyEvent*);
179
180     virtual QAD_Study* loadStudy(QString theStudyName);
181
182 protected:
183     bool              closeAllStudies( QAD_Application* );
184     void              closeEvent( QCloseEvent* );
185     void              resizeEvent( QResizeEvent* );
186
187     virtual  QString  selectFileName ( bool open );
188
189     virtual   void    updateDesktop( UpdateCommand  );
190     virtual   void    updateStatusBar( UpdateCommand );
191     virtual   void    updateToolBars( UpdateCommand );
192     virtual   void    updateCaption( UpdateCommand );
193     virtual   void    updateMenu( UpdateCommand );
194
195     bool              loadComponentData( const QString& );
196
197 protected slots:
198     virtual void      onNewStudy();
199     virtual void      onNewStudy(QAD_Application* app);
200     virtual void      onLoadStudy();
201     virtual void      onOpenStudy();
202     virtual bool      onSaveStudy();
203     virtual bool      onSaveStudy(QAD_Study* doc);
204     virtual bool      onSaveAsStudy();
205     virtual bool      onSaveAsStudy(QAD_Study* doc);
206     virtual bool      onCloseStudy();
207     virtual bool      onCloseStudy(QAD_Study* doc);
208     //ask user to remove study from study manager permanently
209     virtual bool      onCloseStudy(QAD_Study* doc, bool ask);
210
211     virtual void      onStudyProperties();
212
213     virtual void      onViewStatusBar();
214     virtual void      onToolBarPopupAboutToShow();
215
216     virtual void      onExit();
217
218     virtual void      onWindowPopupAboutToShow();
219     void              onWindowsPopupActivated( int id );
220     void              onWindowsPopupStatusText( int id );
221
222     void              onSelectionMode();
223
224     void              onDirList();
225     void              onSavePref();
226     void              onViewerOCC();
227     void              onViewerVTK();
228     void              onGraphSupervisor();
229     void              onPlot2d();
230     void              onConsoleFontAction();
231   //VRV: T2.5 - add default viewer
232     void              onDefaultViewer( QActionP * theAction);
233   //VRV: T2.5 - add default viewer
234
235     void              onViewerTrihedron();
236     void              onObjectBrowser();
237     void              onMultiFileSave();
238     void              onASCIISave();
239     void              onExternalBrowser();      
240
241     void              onActivateApp(QAD_Application* app);
242     void              onDeactivateApp(QAD_Application* app);
243
244     void              onHelpContents();
245     void              onHelpContentsGUI();
246     void              onHelpContentsTUI();
247 /*     void           onHelpSearch(); */
248     void              onHelpAbout();
249
250     void              onNewWindow3d();
251
252     void              onOpenWith();
253
254     void              onDispatchTools(int id);
255     void              onDispatch(int id);
256     void              onDispatch();
257     void              clearMenus();
258     void              onButtonActiveComponent();
259     void              onComboActiveComponent( const QString & );
260     void              onComboActiveComponent( const QString & , bool isLoadData);
261     void              onCascade(); 
262
263     //NRI    void              onHelpWindowClosed();
264
265 protected:
266     QMenuBar*         myMainMenu;           /* the main menu bar */
267     int               myMainMenuPos;        /* index after which application inserts its items */
268     QPopupMenu        myFilePopup;
269     int               myFilePos;
270     QPopupMenu        myEditPopup;
271     int               myEditPos;
272     QPopupMenu        myViewPopup;
273     int               myViewPos;
274     QPopupMenu        myHelpPopup;
275     int               myHelpPos;
276
277   //VRV: T2.5 - add default viewer
278     QPopupMenu        myDefaultViewer;
279   //VRV: T2.5 - add default viewer
280     QPopupMenu        myObjBrowserPopup;
281     QPopupMenu        myViewerPopup;
282   //NRI : SAL2214
283     QPopupMenu        myNewViewPopup;
284   //NRI : SAL2214
285     QPopupMenu        myToolsPopup;
286     QPopupMenu        myPrefPopup;
287     QPopupMenu        mySelectionModePopup;
288     QPopupMenu        myWindowPopup;        /* not customized by an application */
289
290     ActionMap         myStdActions;         /* default actions */
291     QToolBar*         myStdToolBar;         /* standard toolbar */
292     QStatusBar*       myStatusBar;          /* the only status bar */
293
294     QList<ToggleAction> myToolBarAction;
295     QPopupMenu          myToolBarsPopup;
296
297     QList<QAD_Application> myApps;          /* running applications */
298     QAD_Application*  myActiveApp;          /* the active application */
299     QAD_Study*        myActiveStudy;        /* the active document */
300
301     int               myCntUntitled;        /* number of untitled docs */
302     QWorkspaceP*      myWorkspace;          /* workspace */
303
304     QPixmap           myDefaultIcon;        /* if no application is active */
305     QString           myDefaultTitle;       /* desktop will use them */
306
307     QAD_OperatorMenus* myOperatorMenus;
308     QList<QAD_Menus>   myMenusList;
309     QAD_Menus*         myActiveMenus;
310
311     //NRI    QAD_HelpWindow*    myHelpWindow;
312
313     QList<QToolButton> myComponentButton;
314
315     QMap<QString,QString> mapComponentName;
316
317 private:
318     static QAD_ResourceMgr*                 resourceMgr;
319     static QPalette*                        palette;
320     void                                    createActions();
321     void                                    updateActions();
322     OSD_SharedLibrary                       mySharedLibrary;
323     QAD_XmlHandler*                         myXmlHandler;
324     QString                                 myActiveComp;
325     SALOME_NamingService*                   myNameService;
326     SALOME_ModuleCatalog::ModuleCatalog_var myCatalogue;
327     SALOME_LifeCycleCORBA *                 myEnginesLifeCycle;
328     QComboBox *                             myCombo;
329     bool                                    myQueryClose;
330     bool                                    _islibso;
331 };
332
333 /********************************************************************
334 ** Class: AppSelectionDlg
335 ** Descr: Dialog for the selection of the application when several
336 **        applications exist in the desktop and new document creation
337 **        is activated by user.
338 ** Level: Internal
339 *********************************************************************/
340 class Desktop_AppSelectionDlg : public QDialog
341 {
342    Q_OBJECT
343
344 public:
345    Desktop_AppSelectionDlg( QAD_Desktop*, QList<QAD_Application>& );
346    ~Desktop_AppSelectionDlg();
347
348 public:
349     QAD_Application* selectedApp()  const;
350
351 protected:
352     void             resizeEvent( QResizeEvent* );
353
354 protected slots:
355     void             onAppSelected(int);
356     void             onHelp();
357
358 protected:
359     int                                     myAppId;
360     QList<QAD_Application>&                 myApps;
361 };
362
363 #endif
364