X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FLightApp%2FLightApp_Application.h;h=b7d2fb9ec993b98dd3fbf496882cc7965adcc035;hb=0b64aa0810631fb7d524ded17716e403f773da9e;hp=c6f3e8eda03108d1e22c801485db5fc405647c03;hpb=746396c4a7c45448601a5ef7c8ffcaa09048e5ed;p=modules%2Fgui.git diff --git a/src/LightApp/LightApp_Application.h b/src/LightApp/LightApp_Application.h index c6f3e8eda..b7d2fb9ec 100644 --- a/src/LightApp/LightApp_Application.h +++ b/src/LightApp/LightApp_Application.h @@ -1,7 +1,28 @@ +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// + // File: LightApp_Application.h // Created: 6/20/2005 18:39:25 PM // Author: OCC team -// Copyright (C) CEA 2005 #ifndef LIGHTAPP_APPLICATION_H #define LIGHTAPP_APPLICATION_H @@ -11,23 +32,34 @@ #endif // _MSC_VER > 1000 #include "LightApp.h" +#include +#include #include +#include +#include + class LogWindow; -class OB_Browser; -class PythonConsole; -class STD_Application; +#ifndef DISABLE_PYCONSOLE +class PyConsole_Console; +class PyConsole_Interp; +#endif class LightApp_WidgetContainer; class LightApp_Preferences; class LightApp_SelectionMgr; +class LightApp_FullScreenHelper; +class LightApp_DataObject; +class SUIT_DataBrowser; class SUIT_Study; class SUIT_Accel; +class SUIT_ViewModel; class CAM_Module; class QString; class QWidget; class QStringList; -class QPixmap; +class QDockWidget; +class QTimer; #ifdef WIN32 #pragma warning( disable:4251 ) @@ -37,15 +69,33 @@ class QPixmap; Description : Application containing only LightApp module */ -class LIGHTAPP_EXPORT LightApp_Application : public CAM_Application +class LIGHTAPP_EXPORT LightApp_Application : public CAM_Application, public SUIT_DataSearcher { Q_OBJECT public: - typedef enum { WT_ObjectBrowser, WT_PyConsole, WT_LogWindow, WT_User } WindowTypes; + typedef enum { WT_ObjectBrowser, +#ifndef DISABLE_PYCONSOLE + WT_PyConsole, +#endif + WT_LogWindow, + WT_User } + WindowTypes; + + enum { MenuWindowId = 6 }; + + enum { RenameId = CAM_Application::UserID, + CloseId, CloseAllId, GroupAllId, + PreferencesId, MRUId, ModulesListId, + NewGLViewId, NewPlot2dId, NewOCCViewId, NewVTKViewId, + NewQxSceneViewId, NewGraphicsViewId, NewPVViewId, NewPyViewerId, StyleId, FullScreenId, + UserID }; + +protected: + enum { NewStudyId = 1, OpenStudyId }; + + enum BrowsePolicy { BP_Never = 0, BP_ApplyAndClose, BP_Always }; - enum { NewGLViewId = STD_Application::UserID, NewPlot2dId, NewOCCViewId, NewVTKViewId, - PreferencesId, MRUId, RenameId, UserID }; public: LightApp_Application(); virtual ~LightApp_Application(); @@ -53,64 +103,118 @@ public: virtual QString applicationName() const; virtual QString applicationVersion() const; - virtual CAM_Module* loadModule( const QString& ); + virtual CAM_Module* loadModule( const QString&, const bool = true ); virtual bool activateModule( const QString& ); - virtual bool useStudy( const QString& ); - LightApp_SelectionMgr* selectionMgr() const; - + LogWindow* logWindow(); - OB_Browser* objectBrowser(); - PythonConsole* pythonConsole(); + SUIT_DataBrowser* objectBrowser(); +#ifndef DISABLE_PYCONSOLE + PyConsole_Console* pythonConsole(const bool force = false); +#endif virtual void updateObjectBrowser( const bool = true ); LightApp_Preferences* preferences() const; - virtual QString getFileFilter() const; + virtual QString getFileFilter( bool ) const; - virtual QString getFileName( bool open, const QString& initial, const QString& filters, - const QString& caption, QWidget* parent ); + virtual QString getFileName( bool open, const QString& initial, const QString& filters, + const QString& caption, QWidget* parent ); virtual QString getDirectory( const QString& initial, const QString& caption, QWidget* parent ); - virtual QStringList getOpenFileNames( const QString& initial, const QString& filters, - const QString& caption, QWidget* parent ); + virtual QStringList getOpenFileNames( const QString& initial, const QString& filters, + const QString& caption, QWidget* parent ); void updateActions(); SUIT_ViewManager* getViewManager( const QString&, const bool ); + virtual void addViewManager( SUIT_ViewManager* ); virtual void removeViewManager( SUIT_ViewManager* ); - QWidget* getWindow( const int, const int = -1 ); - QWidget* window( const int, const int = -1 ) const; - void addWindow( QWidget*, const int, const int = -1 ); - void removeWindow( const int, const int = -1 ); + virtual SUIT_ViewManager* createViewManager( const QString& vmType, bool detached = false ); + virtual SUIT_ViewManager* createViewManager( const QString& vmType, QWidget* w ); + virtual SUIT_ViewManager* createViewManager( SUIT_ViewModel* ); - bool isWindowVisible( const int ) const; - void setWindowShown( const int, const bool ); + QWidget* getWindow( const int, const int = -1 ); + QWidget* dockWindow( const int ) const; + void removeDockWindow( const int ); + void insertDockWindow( const int, QWidget* ); + void placeDockWindow( const int, Qt::DockWidgetArea ); virtual void start(); + virtual void closeApplication(); - virtual void contextMenuPopup( const QString&, QPopupMenu*, QString& ); + virtual void contextMenuPopup( const QString&, QMenu*, QString& ); virtual void createEmptyStudy(); + virtual void setDesktop( SUIT_Desktop* ); + SUIT_Accel* accel() const; + void setDefaultStudyName( const QString& theName ); + + static int studyId(); + + virtual bool event( QEvent* ); + + virtual bool checkDataObject( LightApp_DataObject* theObj ); + + virtual void updateDesktopTitle(); + + //! Returns list of view manager types which are supported by this application + QStringList viewManagersTypes() const; + + //! Removes ViewManagers only of known type + virtual void clearKnownViewManagers(); + + virtual QString browseObjects( const QStringList& theEntryList, + const bool theIsApplyAndClose = true, + const bool theIsOptimizedBrowsing = false ); + + virtual SUIT_DataObject* findObject( const QString& ) const; + + virtual bool renameAllowed( const QString& ) const; + virtual bool renameObject( const QString&, const QString& ); + + void emitOperationFinished( const QString&, const QString&, const QStringList& ); + + void updateVisibilityState( DataObjectList& theList, + SUIT_ViewModel* theViewModel ); + + virtual bool checkExistingDoc(); + +#ifndef DISABLE_PYCONSOLE + PyConsole_Interp* getPyInterp(); +#endif + signals: void studyOpened(); void studySaved(); void studyClosed(); + void preferenceChanged( const QString&, const QString&, const QString& ); + void preferenceResetToDefaults(); + void operationFinished( const QString&, const QString&, const QStringList& ); public slots: virtual void onHelpContentsModule(); + virtual void onHelpContextModule( const QString&, const QString&, const QString& = QString() ); virtual void onNewDoc(); virtual void onOpenDoc(); + virtual void onHelpAbout(); virtual bool onOpenDoc( const QString& ); - virtual bool onLoadDoc( const QString& ); + virtual void onCopy(); + virtual void onPaste(); + virtual void onSelectionChanged(); + virtual void onDockWindowVisibilityChanged( bool ); protected: virtual void createActions(); + virtual void createActionForViewer( const int id, + const int parentId, + const QString& suffix, + const int accel ); virtual SUIT_Study* createNewStudy(); virtual QWidget* createWindow( const int ); virtual void defaultWindows( QMap& ) const; @@ -118,7 +222,6 @@ protected: virtual void setActiveStudy( SUIT_Study* ); virtual void updateCommandsStatus(); - virtual void onSelectionChanged(); virtual void beforeCloseDoc( SUIT_Study* ); virtual void afterCloseDoc(); @@ -128,60 +231,118 @@ protected: LightApp_Preferences* preferences( const bool ) const; virtual void createPreferences( LightApp_Preferences* ); virtual void preferencesChanged( const QString&, const QString& ); - virtual void updateDesktopTitle(); + + virtual void loadPreferences(); + virtual void savePreferences(); + + virtual QMap activateModuleActions() const; + virtual void moduleActionSelected( const int ); + +#ifndef DISABLE_PYCONSOLE + virtual PyConsole_Interp* createPyInterp(); +#endif protected slots: virtual void onDesktopActivated(); + virtual void onViewManagerRemoved( SUIT_ViewManager* ); + virtual void onWindowActivated( SUIT_ViewWindow* theViewWindow ); void onNewWindow(); - void onModuleActivation( QAction* ); + void onModuleActivation( const QString& ); void onCloseView( SUIT_ViewManager* ); - void onStudyCreated( SUIT_Study* ); - void onStudyOpened( SUIT_Study* ); - void onStudySaved( SUIT_Study* ); - void onStudyClosed( SUIT_Study* ); + virtual void onStudyCreated( SUIT_Study* ); + virtual void onStudyOpened( SUIT_Study* ); + virtual void onStudySaved( SUIT_Study* ); + virtual void onStudyClosed( SUIT_Study* ); void onWCDestroyed( QObject* ); + void onMRUActivated( const QString& ); + + void onStylePreferences(); + void onFullScreen(); + + virtual void onDesktopMessage( const QString& ); + private slots: void onSelection(); void onRefresh(); + void onDropped( const QList&, SUIT_DataObject*, int, Qt::DropAction ); void onPreferences(); - void onMRUActivated( QString ); void onPreferenceChanged( QString&, QString&, QString& ); + void onRenameWindow(); + void onCloseWindow(); + void onCloseAllWindow(); + void onGroupAllWindow(); + void onRenamed(); + //void onMoved(); protected: void updateWindows(); void updateViewManagers(); void updateModuleActions(); + void removeModuleAction( const QString& ); + + bool checkModule( const QString& ); - void loadWindowsGeometry(); - void saveWindowsGeometry(); + void loadDockWindowsState(); + void saveDockWindowsState(); + + virtual void studyOpened( SUIT_Study* ); + virtual void studyCreated( SUIT_Study* ); + virtual void studySaved( SUIT_Study* ); void updatePreference( const QString&, const QString&, const QString& ); QString defaultModule() const; - void currentWindows( QMap& ) const; + virtual void currentWindows( QMap& ) const; void currentViewManagers( QStringList& ) const; - virtual SUIT_ViewManager* createViewManager( const QString& vmType ); void moduleIconNames( QMap& ) const; - void activateWindows(); + QDockWidget* windowDock( QWidget* ) const; + QByteArray dockWindowsState( const QMap&, const QMap& ) const; + void dockWindowsState( const QByteArray&, QMap&, QMap& ) const; + + virtual int openChoice( const QString& ); + virtual bool openAction( const int, const QString& ); + + void showPreferences( const QString& = QString() ); + +private: + void emptyPreferences( const QString& ); + QList findToolBars( const QStringList& names = QStringList() ); + + QByteArray processState(QByteArray& input, + const bool processWin, + const bool processTb, + const bool isRestoring, + QByteArray defaultState = QByteArray()); protected: - typedef QMap ActionMap; - typedef QMap WindowMap; + typedef QPointer WinPtr; + typedef QMap WinMap; + typedef QMap WinVis; + typedef QMap WinGeom; + + enum { OpenReload = CAM_Application::OpenExist + 1 }; protected: LightApp_Preferences* myPrefs; LightApp_SelectionMgr* mySelMgr; - ActionMap myActions; - WindowMap myWindows; + + LightApp_FullScreenHelper* myScreenHelper; + + WinMap myWin; + WinVis myWinVis; SUIT_Accel* myAccel; + QTimer* myAutoSaveTimer; static LightApp_Preferences* _prefs_; + + static int lastStudyId; + QStringList myUserWmTypes; }; #ifdef WIN32