Version: 9.16.0
LightApp_Application.h
Go to the documentation of this file.
1// Copyright (C) 2007-2026 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
44class LogWindow;
45class QtxInfoPanel;
46#ifndef DISABLE_PYCONSOLE
47class PyConsole_Console;
49#endif
50class LightApp_WidgetContainer;
57class SUIT_Study;
58class SUIT_Accel;
59class SUIT_ViewModel;
60class CAM_Module;
61
62class QString;
63class QWidget;
64class QStringList;
65class QDockWidget;
66class QTimer;
67
68#ifdef WIN32
69#pragma warning( disable:4251 )
70#endif
71
77{
78 Q_OBJECT
79
80public:
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
100protected:
101 enum { NewStudyId = 1, OpenStudyId };
102
103 enum BrowsePolicy { BP_Never = 0, BP_ApplyAndClose, BP_Always };
104
105public:
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
199signals:
200 void moduleActivated( const QString& );
204 void preferenceChanged( const QString&, const QString&, const QString& );
206 void operationFinished( const QString&, const QString&, const QStringList& );
207
208public 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
221protected:
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
261protected 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
289private 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
302protected:
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
333private:
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
348protected:
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
358protected:
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
379QStringList 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:47
@ WT_ObjectBrowser
Definition: SalomePyQt.h:99
@ WT_User
Definition: SalomePyQt.h:105
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.
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