Version: 9.15.0
LightApp_Application.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2025 CEA, EDF, 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, or (at your option) any later version.
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 
23 // File: LightApp_Application.h
24 // Created: 6/20/2005 18:39:25 PM
25 // Author: OCC team
26 
27 #ifndef LIGHTAPP_APPLICATION_H
28 #define LIGHTAPP_APPLICATION_H
29 
30 #if _MSC_VER > 1000
31 #pragma once
32 #endif // _MSC_VER > 1000
33 
34 #include "LightApp.h"
35 #include <SUIT_TreeModel.h>
36 #include <SUIT_DataObject.h>
37 #include <CAM_Application.h>
38 
39 #include <QPixmap>
40 #include <QPointer>
41 #include <QStringList>
42 #include <QDomDocument>
43 
44 class LogWindow;
45 class QtxInfoPanel;
46 #ifndef DISABLE_PYCONSOLE
47 class PyConsole_Console;
48 class PyConsole_Interp;
49 #endif
50 class LightApp_WidgetContainer;
56 class SUIT_DataBrowser;
57 class SUIT_Study;
58 class SUIT_Accel;
59 class SUIT_ViewModel;
60 class CAM_Module;
61 
62 class QString;
63 class QWidget;
64 class QStringList;
65 class QDockWidget;
66 class QTimer;
67 
68 #ifdef WIN32
69 #pragma warning( disable:4251 )
70 #endif
71 
77 {
78  Q_OBJECT
79 
80 public:
81  typedef enum { WT_ObjectBrowser,
83 #ifndef DISABLE_PYCONSOLE
85 #endif
88  WindowTypes;
89 
90  enum { MenuWindowId = 6 };
91 
92  enum { RenameId = CAM_Application::UserID,
93  CloseId, CloseAllId, GroupAllId,
94  PreferencesId, MRUId, ModulesListId,
95  NewGLViewId, NewPlot2dId, NewOCCViewId, NewVTKViewId,
96  NewQxSceneViewId, NewGraphicsViewId, NewQtViewId, NewPVViewId, NewPyViewerId, NewPV3DViewId, StyleId, FullScreenId,
97  WebSiteId, ForumId, VideosId, TutorialsId,
98  UserID };
99 
100 protected:
101  enum { NewStudyId = 1, OpenStudyId };
102 
103  enum BrowsePolicy { BP_Never = 0, BP_ApplyAndClose, BP_Always };
104 
105 public:
107  virtual ~LightApp_Application();
108 
109  virtual QString applicationName() const;
110  virtual QString applicationVersion() const;
111 
112  virtual CAM_Module* loadModule( const QString&, const bool = true );
113  virtual bool activateModule( const QString& );
114 
115  LightApp_SelectionMgr* selectionMgr() const;
116 
117  LogWindow* logWindow();
118  SUIT_DataBrowser* objectBrowser();
119  QtxInfoPanel* infoPanel();
120 #ifndef DISABLE_PYCONSOLE
121  PyConsole_Console* pythonConsole(const bool force = false);
122 #endif
123 
124  virtual void updateObjectBrowser( const bool = true );
125 
126  LightApp_Preferences* preferences() const;
127 
128  virtual QString getFileFilter( bool ) const;
129 
130  virtual QString getFileName( bool open, const QString& initial, const QString& filters,
131  const QString& caption, QWidget* parent );
132  virtual QString getDirectory( const QString& initial, const QString& caption, QWidget* parent );
133  virtual QStringList getOpenFileNames( const QString& initial, const QString& filters,
134  const QString& caption, QWidget* parent );
135 
136  void updateActions();
137 
138  SUIT_ViewManager* getViewManager( const QString&, const bool );
139  virtual void addViewManager( SUIT_ViewManager* );
140  virtual void removeViewManager( SUIT_ViewManager* );
141  virtual SUIT_ViewManager* createViewManager( const QString& vmType, bool detached = false );
142  virtual SUIT_ViewManager* createViewManager( const QString& vmType, QWidget* w );
143  virtual SUIT_ViewManager* createViewManager( SUIT_ViewModel* );
144 
145  QWidget* getWindow( const int );
146  QWidget* dockWindow( const int ) const;
147  void removeDockWindow( const int );
148  void insertDockWindow( const int, QWidget* );
149  void placeDockWindow( const int, Qt::DockWidgetArea );
150 
151  virtual void start();
152  virtual void closeApplication();
153 
154  virtual void contextMenuPopup( const QString&, QMenu*, QString& );
155 
156  virtual void createEmptyStudy();
157 
158  virtual void setDesktop( SUIT_Desktop* );
159 
160  SUIT_Accel* accel() const;
161 
162  void setDefaultStudyName( const QString& theName );
163 
164  virtual bool event( QEvent* );
165 
166  virtual bool checkDataObject( LightApp_DataObject* theObj );
167 
168  virtual void updateDesktopTitle();
169 
171  QStringList viewManagersTypes() const;
172 
174  virtual void clearKnownViewManagers();
175 
176  virtual QString browseObjects( const QStringList& theEntryList,
177  const bool theIsApplyAndClose = true,
178  const bool theIsOptimizedBrowsing = false );
179 
180  virtual SUIT_DataObject* findObject( const QString& ) const;
181 
182  virtual bool renameAllowed( const QString& ) const;
183  virtual bool renameObject( const QString&, const QString& );
184 
185  void emitOperationFinished( const QString&, const QString&, const QStringList& );
186 
187  void updateVisibilityState( DataObjectList& theList,
188  SUIT_ViewModel* theViewModel );
189 
190  void updatePresentations( const QString& theComponent,
191  const QStringList& theViewManagerTypes );
192 
193  virtual bool checkExistingDoc( bool = true );
194 
195 #ifndef DISABLE_PYCONSOLE
196  PyConsole_Interp* getPyInterp();
197 #endif
198 
199 signals:
200  void moduleActivated( const QString& );
201  void studyOpened();
202  void studySaved();
203  void studyClosed();
204  void preferenceChanged( const QString&, const QString&, const QString& );
206  void operationFinished( const QString&, const QString&, const QStringList& );
207 
208 public slots:
209  virtual void onHelpContentsModule();
210  virtual void onHelpContextModule( const QString&, const QString&, const QString& = QString() );
211  virtual void onNewDoc();
212  virtual void onOpenDoc();
213 
214  virtual void onHelpAbout();
215  virtual bool onOpenDoc( const QString& );
216  virtual void onCopy();
217  virtual void onPaste();
218  virtual void onSelectionChanged();
219  virtual void onDockWindowVisibilityChanged( bool );
220 
221 protected:
222  void showHelp( const QString& );
223  virtual void createActions();
224  virtual void addExtensionsActions(LightApp_ModuleAction* moduleAction);
225  virtual void customize();
226  virtual void createActionForViewer( const int id,
227  const int parentId,
228  const QString& suffix );
229  virtual SUIT_Study* createNewStudy();
230  virtual QWidget* createWindow( const int );
231  virtual void defaultWindows( QMap<int, int>& ) const;
232  void defaultViewManagers( QStringList& ) const;
233 
234  virtual void setActiveStudy( SUIT_Study* );
235  virtual void updateCommandsStatus();
236 
237  virtual bool canOpenDoc( const QString& );
238 
239  virtual void beforeCloseDoc( SUIT_Study* );
240  virtual void afterCloseDoc();
241  virtual void moduleAdded( CAM_Module* );
242  virtual void moduleDeactivated( CAM_Module* );
243  virtual bool activateModule( CAM_Module* = 0 );
244 
245  LightApp_Preferences* preferences( const bool ) const;
246  virtual void createPreferences( LightApp_Preferences* );
247  virtual void preferencesChanged( const QString&, const QString& );
248 
249  virtual void loadPreferences();
250  virtual void savePreferences();
251 
252  virtual QMap<int, QString> activateModuleActions() const;
253  virtual void moduleActionSelected( const int );
254 
255 #ifndef DISABLE_PYCONSOLE
256  virtual PyConsole_Interp* createPyInterp();
257 #endif
258 
259  virtual void addCatalogue( const QString&, const QString& ) {}
260 
261 protected slots:
262  virtual void onDesktopActivated();
263  virtual void onViewManagerRemoved( SUIT_ViewManager* );
264  virtual void onWindowActivated( SUIT_ViewWindow* theViewWindow );
265 
266  void onNewWindow();
267  virtual void onModuleActivation( const QString& );
268  void onExtAdding();
269  void onExtRemoving( const QString& );
270  void onShowExtInfo();
271  void onCloseView( SUIT_ViewManager* );
272 
273  virtual void onStudyCreated( SUIT_Study* );
274  virtual void onStudyOpened( SUIT_Study* );
275  virtual void onStudySaved( SUIT_Study* );
276  virtual void onStudyClosed( SUIT_Study* );
277 
278  void onWCDestroyed( QObject* );
279 
280  void onMRUActivated( const QString& );
281 
282  void onStylePreferences();
283  void onFullScreen();
284 
285  virtual void onDesktopMessage( const QString& );
286 
287  virtual void onInfoPanelShown();
288 
289 private slots:
290  void onSelection();
291  void onRefresh();
292  void onDropped( const QList<SUIT_DataObject*>&, SUIT_DataObject*, int, Qt::DropAction );
293  void onPreferences();
294  void onPreferenceChanged( QString&, QString&, QString& );
295  void onRenameWindow();
296  void onCloseWindow();
297  void onCloseAllWindow();
298  void onGroupAllWindow();
299  void onRenamed();
300  //void onMoved();
301 
302 protected:
303  void updateWindows();
304  void updateViewManagers();
305  void updateModuleActions();
306 
307  bool checkModule( const QString& );
308 
309  void loadDockWindowsState();
310  void saveDockWindowsState();
311 
312  virtual void studyOpened( SUIT_Study* );
313  virtual void studyCreated( SUIT_Study* );
314  virtual void studySaved( SUIT_Study* );
315 
316  void updatePreference( const QString&, const QString&, const QString& );
317 
318  QString defaultModule() const;
319  virtual void currentWindows( QMap<int, int>& ) const;
320  void currentViewManagers( QStringList& ) const;
321  QPixmap moduleIcon( const QString&, const int = -1 ) const;
322 
323  QDockWidget* windowDock( QWidget* ) const;
324  QByteArray dockWindowsState( const QMap<QString, bool>&, const QMap<QString, bool>& ) const;
325  void dockWindowsState( const QByteArray&, QMap<QString, bool>&, QMap<QString, bool>& ) const;
326 
327  virtual int openChoice( const QString& );
328  virtual bool openAction( const int, const QString& );
329 
330  void showPreferences( const QString& = QString() );
331  void showPreferences( const QStringList& );
332 
333 private:
334  bool addUserModule( const QString&, const QString&, bool = false );
335  void removeUserModule(const QString& moduleInnerName, LightApp_ModuleAction* moduleAction);
336  void emptyPreferences( const QString& );
337  QList<QToolBar*> findToolBars( const QStringList& names = QStringList() );
338  void createHelpItems( const QString& );
339  void removeHelpItems( const QString& );
340  void updateSalomeApprc();
341 
342  QByteArray processState(QByteArray& input,
343  const bool processWin,
344  const bool processTb,
345  const bool isRestoring,
346  QByteArray defaultState = QByteArray());
347 
348 protected:
349  typedef QPointer<QWidget> WinPtr;
350  typedef QMap<int, WinPtr> WinMap;
351  typedef QMap<QString, QByteArray> WinVis;
352  typedef QMap<QString, QByteArray> WinGeom;
354  typedef QMap<QString, IdList> IdMap;
355 
356  enum { OpenReload = CAM_Application::OpenExist + 1 };
357 
358 protected:
361 
363 
367 
370 
372 
373  QStringList myUserWmTypes;
374 
375  friend void LightAppCleanUpAppResources();
376 };
377 
378 //Tool function which parse xml (SalomeApp.xml) and give all parameter name
379 QStringList getParameterNamesFromSection(const QString &xmlFilePath, const QString &sectionName);
380 
381 #ifdef WIN32
382 #pragma warning( default:4251 )
383 #endif
384 
385 #endif
#define LIGHTAPP_EXPORT
Definition: LightApp.h:36
void LightAppCleanUpAppResources()
Definition: LightApp_Application.cxx:280
QStringList getParameterNamesFromSection(const QString &xmlFilePath, const QString &sectionName)
Definition: LightApp_Application.cxx:6127
QList< SUIT_DataObject * > DataObjectList
Definition: SALOME_PYQT_PyModule.h:45
@ WT_ObjectBrowser
Definition: SalomePyQt.h:89
@ WT_User
Definition: SalomePyQt.h:95
Introduces an application class which provides modular architecture.
Definition: CAM_Application.h:39
virtual void moduleAdded(CAM_Module *)
Callback function, called when the module is added to the application.
Definition: CAM_Application.cxx:638
virtual CAM_Module * loadModule(const QString &, const bool=true)
Load module modName.
Definition: CAM_Application.cxx:310
virtual bool activateModule(const QString &)
Activate module modName.
Definition: CAM_Application.cxx:423
virtual void beforeCloseDoc(SUIT_Study *)
Prepare application to study closing.
Definition: CAM_Application.cxx:598
virtual void contextMenuPopup(const QString &, QMenu *, QString &)
Add common menu items to the popup menu.
Definition: CAM_Application.cxx:960
virtual void moduleDeactivated(CAM_Module *)
Callback function, called when the module is just deactivated.
Definition: CAM_Application.cxx:650
virtual void createEmptyStudy()
Create new empty study.
Definition: CAM_Application.cxx:970
virtual void afterCloseDoc()
Definition: CAM_Application.cxx:604
virtual SUIT_Study * createNewStudy()
Create new study.
Definition: CAM_Application.cxx:575
virtual void setActiveStudy(SUIT_Study *)
Set active study.
Definition: CAM_Application.cxx:612
static QString moduleIcon(const QString &)
Get module icon name.
Definition: CAM_Application.cxx:691
virtual void updateCommandsStatus()
Update menu commands status.
Definition: CAM_Application.cxx:583
virtual bool checkModule(const QString &)
Check module availability.
Definition: CAM_Application.cxx:625
virtual void start()
Start an application.
Definition: CAM_Application.cxx:140
Base implementation of the module in the CAM application architecture.
Definition: CAM_Module.h:53
Definition: LightApp_Application.h:77
static LightApp_Preferences * _prefs_
Definition: LightApp_Application.h:371
QMap< QString, IdList > IdMap
Definition: LightApp_Application.h:354
virtual void addCatalogue(const QString &, const QString &)
Definition: LightApp_Application.h:259
void operationFinished(const QString &, const QString &, const QStringList &)
LightApp_Preferences * myPrefs
Definition: LightApp_Application.h:359
QTimer * myAutoSaveTimer
Definition: LightApp_Application.h:369
SUIT_Accel * myAccel
Definition: LightApp_Application.h:368
QMap< QString, QByteArray > WinGeom
Definition: LightApp_Application.h:352
WinVis myWinVis
Definition: LightApp_Application.h:365
LightApp_SelectionMgr * mySelMgr
Definition: LightApp_Application.h:360
WinMap myWin
Definition: LightApp_Application.h:364
void updatePreference(const QString &, const QString &, const QString &)
void moduleActivated(const QString &)
void preferenceResetToDefaults()
@ WT_InfoPanel
Definition: LightApp_Application.h:82
@ WT_PyConsole
Definition: LightApp_Application.h:84
@ WT_LogWindow
Definition: LightApp_Application.h:86
LightApp_FullScreenHelper * myScreenHelper
Definition: LightApp_Application.h:362
BrowsePolicy
Definition: LightApp_Application.h:103
QStringList myUserWmTypes
Definition: LightApp_Application.h:373
void preferenceChanged(const QString &, const QString &, const QString &)
@ CloseAllId
Definition: LightApp_Application.h:93
@ ForumId
Definition: LightApp_Application.h:97
@ FullScreenId
Definition: LightApp_Application.h:96
@ ModulesListId
Definition: LightApp_Application.h:94
@ NewGLViewId
Definition: LightApp_Application.h:95
QMap< int, WinPtr > WinMap
Definition: LightApp_Application.h:350
QList< int > IdList
Definition: LightApp_Application.h:353
QPointer< QWidget > WinPtr
Definition: LightApp_Application.h:349
QMap< QString, QByteArray > WinVis
Definition: LightApp_Application.h:351
IdMap myHelpItems
Definition: LightApp_Application.h:366
Base data object class to build the data model for all the SALOME modules.
Definition: LightApp_DataObject.h:36
Definition: LightApp_FullScreenHelper.h:37
An action, representing the list of modules to be inserted to the toolbar.
Definition: LightApp_ModuleAction.h:39
Definition: LightApp_Preferences.h:43
Definition: LightApp_SelectionMgr.h:53
Widget, displaying log messages.
Definition: LogWindow.h:55
For more information see QT documentation.
Definition: SUIT_Application.h:42
Info panel which allows presenting welcome, useful hints and other information dynamically,...
Definition: QtxInfoPanel.h:37
virtual void studyCreated(SUIT_Study *)
Definition: STD_Application.cxx:1058
virtual QString getFileFilter(bool open) const
Definition: STD_Application.cxx:949
virtual QString getFileName(bool open, const QString &initial, const QString &filters, const QString &caption, QWidget *parent)
Definition: STD_Application.cxx:955
virtual void addViewManager(SUIT_ViewManager *)
Definition: STD_Application.cxx:830
@ OpenExist
Definition: STD_Application.h:152
virtual void loadPreferences()
Definition: STD_Application.cxx:1043
virtual bool openAction(const int, const QString &)
Definition: STD_Application.cxx:530
virtual QString applicationName() const
Definition: STD_Application.cxx:82
virtual void customize()
Definition: STD_Application.cxx:277
virtual void updateDesktopTitle()
Definition: STD_Application.cxx:692
virtual void onOpenDoc()
Definition: STD_Application.cxx:326
virtual void closeApplication()
Definition: STD_Application.cxx:105
virtual void savePreferences()
Definition: STD_Application.cxx:1050
virtual int openChoice(const QString &)
Definition: STD_Application.cxx:519
virtual void onNewDoc()
Definition: STD_Application.cxx:282
virtual void onCopy()
Definition: STD_Application.cxx:656
@ UserID
Definition: STD_Application.h:63
QString getDirectory(const QString &initial, const QString &caption, QWidget *parent)
Definition: STD_Application.cxx:1018
virtual void onHelpAbout()
Definition: STD_Application.cxx:905
virtual void createActions()
Definition: STD_Application.cxx:148
virtual void onPaste()
Definition: STD_Application.cxx:661
virtual void setDesktop(SUIT_Desktop *)
Definition: STD_Application.cxx:1030
virtual void studySaved(SUIT_Study *)
Definition: STD_Application.cxx:1078
virtual void studyOpened(SUIT_Study *)
Definition: STD_Application.cxx:1068
virtual void removeViewManager(SUIT_ViewManager *)
Definition: STD_Application.cxx:851
Manager of keyboard accelerator bindings.
Definition: SUIT_Accel.h:35
virtual void onDesktopActivated()
Definition: SUIT_Application.cxx:756
virtual QString applicationVersion() const
Definition: SUIT_Application.cxx:120
virtual void onHelpContextModule(const QString &, const QString &, const QString &=QString())
Definition: SUIT_Application.cxx:771
Object browser customization.
Definition: SUIT_DataBrowser.h:34
Data object representing the data instance in the tree-like hierarchy.
Definition: SUIT_DataObject.h:49
Definition: SUIT_TreeModel.h:46
virtual SUIT_DataObject * findObject(const QString &) const =0
Definition: SUIT_Desktop.h:47
Definition: SUIT_Study.h:41
Definition: SUIT_ViewManager.h:50
Definition: SUIT_ViewModel.h:47
Definition: SUIT_ViewWindow.h:42