X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSUIT%2FSUIT_Application.h;h=917c3872b27d916157f2e5f662bf965fb9b1b260;hb=e6caa123c65e3c4a3017364ec5bb4225fd898465;hp=5ee41624be0b4facd4ee94c0a1700314105cbe2b;hpb=9040dbd805bccc6af69508312a56be600f34cc0c;p=modules%2Fgui.git diff --git a/src/SUIT/SUIT_Application.h b/src/SUIT/SUIT_Application.h index 5ee41624b..917c3872b 100755 --- a/src/SUIT/SUIT_Application.h +++ b/src/SUIT/SUIT_Application.h @@ -1,18 +1,52 @@ +// Copyright (C) 2007-2015 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 +// + #ifndef SUIT_APPLICATION_H #define SUIT_APPLICATION_H #include "SUIT.h" -#include "SUIT_Study.h" -#include -#include +#include +#include +class QIcon; +class QLabel; +class QString; class QAction; +class QWidget; + class SUIT_Desktop; -class SUIT_Convertor; -class SUIT_ViewModel; +class SUIT_ViewManager; class SUIT_ResourceMgr; +class SUIT_ShortcutMgr; +class SUIT_Study; +#ifdef WIN32 +#pragma warning ( disable:4251 ) +#endif + +/*! \class QObject + * \brief For more information see QT documentation. + */ /*! An Application is a class which defines application configuration and behaviour. For example Application object defines what Viewers are used in this application, what auxilliary windows @@ -33,10 +67,12 @@ public: //! Returns main widget (Desktop) of the application (if it exists) virtual SUIT_Desktop* desktop(); - /*! Returns FALSE if applic ation can not be closed (because of non saved data for example). + /*! Returns FALSE if application can not be closed (because of non saved data for example). This method called by SUIT_Session whin closing of application was requested. */ - virtual bool isPossibleToClose(); + virtual bool isPossibleToClose( bool& ); + /*! Performs some finalization of life cycle of this application. + For instance, the application can force its documents(s) to close. */ virtual void closeApplication(); //! Returns active Study. If Application supports wirking with several studies this method should be redefined @@ -53,9 +89,6 @@ public: //! Opens document into active Study. If Study is empty - creates it. virtual bool useFile( const QString& theFileName); - //! Loads document into active Study. If Study is empty - creates it. - virtual bool useStudy( const QString& theName); - //! Creates new empty Study if active Study = 0 virtual void createEmptyStudy(); @@ -65,59 +98,81 @@ public: SUIT_ResourceMgr* resourceMgr() const; - /*! Returns instance of data object Convertor class according to given Viewer. - If convertation is not supported returns 0. */ - virtual SUIT_Convertor* getConvertor(const SUIT_ViewModel* theViewer) { return 0; } + SUIT_ShortcutMgr* shortcutMgr() const; //! Puts the message to the status bar - void putInfo ( const QString&, const int = 0 ); + void putInfo ( const QString&, const int = 0 ); //! Invokes application-specific "Open/Save File" dialog and returns the selected file name. - virtual QString getFileName( bool open, const QString& initial, const QString& filters, - const QString& caption, QWidget* parent ) = 0; + virtual QString getFileName( bool open, const QString& initial, const QString& filters, + const QString& caption, QWidget* parent ) = 0; //! Invokes application-specific "Select Directory" dialog and returns the selected directory name. - virtual QString getDirectory( const QString& initial, const QString& caption, QWidget* parent ) = 0; + virtual QString getDirectory( const QString& initial, const QString& caption, QWidget* parent ) = 0; + + + virtual int viewManagerId ( const SUIT_ViewManager* ) const = 0; + virtual void viewManagers( const QString&, QList& ) const = 0; + QAction* action( const int ) const; signals: void applicationClosed( SUIT_Application* ); void activated( SUIT_Application* ); + void infoChanged( QString ); + +public slots: + virtual void updateCommandsStatus(); + virtual void onHelpContextModule( const QString&, const QString&, const QString& = QString() ); + +private slots: + void onInfoClear(); protected: SUIT_Application* startApplication( int, char** ) const; SUIT_Application* startApplication( const QString&, int, char** ) const; - void setDesktop( SUIT_Desktop* ); + virtual void setDesktop( SUIT_Desktop* ); //! Creates a new Study instance. Must be redefined in new application according to its Study type. virtual SUIT_Study* createNewStudy(); virtual void setActiveStudy( SUIT_Study* ); - - int createTool( const QString& ); + + /** @name Create tool functions*/ //@{ + int createTool( const QString&, const QString& = QString() ); int createTool( const int, const int, const int = -1 ); int createTool( const int, const QString&, const int = -1 ); int createTool( QAction*, const int, const int = -1, const int = -1 ); - int createTool( QAction*, const QString&, const int = -1, const int = -1 ); + int createTool( QAction*, const QString&, const int = -1, const int = -1 );//@} + /** @name Create menu functions*/ //@{ int createMenu( const QString&, const int, const int = -1, const int = -1, const int = -1 ); int createMenu( const QString&, const QString&, const int = -1, const int = -1, const int = -1 ); int createMenu( const int, const int, const int = -1, const int = -1 ); int createMenu( const int, const QString&, const int = -1, const int = -1 ); int createMenu( QAction*, const int, const int = -1, const int = -1, const int = -1 ); - int createMenu( QAction*, const QString&, const int = -1, const int = -1, const int = -1 ); + int createMenu( QAction*, const QString&, const int = -1, const int = -1, const int = -1 );//@} + /** @name Set menu shown functions*/ //@{ void setMenuShown( QAction*, const bool ); - void setMenuShown( const int, const bool ); + void setMenuShown( const int, const bool );//@} + /** @name Set tool shown functions*/ //@{ void setToolShown( QAction*, const bool ); - void setToolShown( const int, const bool ); + void setToolShown( const int, const bool );//@} + + void setActionShown( QAction*, const bool ); + void setActionShown( const int, const bool ); static QAction* separator(); - QAction* action( const int ) const; int actionId( const QAction* ) const; - void registerAction( const int, QAction* ); - QAction* createAction( const int, const QString&, const QIconSet&, const QString&, + + QList actions() const; + QList actionIds() const; + + int registerAction( const int, QAction* ); + QAction* createAction( const int, const QString&, const QIcon&, const QString&, const QString&, const int, QObject* = 0, - const bool = false, QObject* = 0, const char* = 0 ); + const bool = false, QObject* = 0, const char* = 0, + const QString& = QString() ); protected slots: virtual void onDesktopActivated(); @@ -125,6 +180,10 @@ protected slots: private: SUIT_Study* myStudy; SUIT_Desktop* myDesktop; + QMap myActionMap; + SUIT_ShortcutMgr* myShortcutMgr; + + QLabel* myStatusLabel; }; //! This function must return a new application instance. @@ -136,4 +195,8 @@ extern "C" #define APP_CREATE_NAME "createApplication" +#ifdef WIN32 +#pragma warning ( default:4251 ) +#endif + #endif