1 // Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
23 #ifndef SUIT_SESSION_H
24 #define SUIT_SESSION_H
27 #include "SUIT_Application.h"
32 #include <QStringList>
39 #define LIB_HANDLE HINSTANCE
41 #define LIB_HANDLE void*
44 class SUIT_ResourceMgr;
45 class SUIT_ExceptionHandler;
48 #pragma warning( disable:4251 )
51 The class Sesssion manages launching of Applications. Application must be returned \n
52 by static function "createApplication" in external library. The Library must be loaded with \n
53 loadLibrary method and after that application can be started.
55 class SUIT_EXPORT SUIT_Session : public QObject
60 typedef LIB_HANDLE AppLib;
62 enum { ASK = 0, SAVE, DONT_SAVE } CloseMode;
63 enum { NORMAL = 0, FORCED } ExitStatus;
67 virtual ~SUIT_Session();
69 static SUIT_Session* session();
71 SUIT_Application* startApplication( const QString&, int = 0, char** = 0 );
73 QList<SUIT_Application*> applications() const;
74 SUIT_Application* activeApplication() const;
76 SUIT_ResourceMgr* resourceMgr() const;
78 void closeSession( int mode = ASK, int flags = 0 );
79 int exitFlags() const;
81 SUIT_ExceptionHandler* handler() const;
83 void insertApplication( SUIT_Application* );
86 void applicationClosed( SUIT_Application* );
89 virtual SUIT_ResourceMgr* createResourceMgr( const QString& ) const;
92 void onApplicationClosed( SUIT_Application* );
93 void onApplicationActivated( SUIT_Application* );
96 typedef QList<SUIT_Application*> AppList;
97 typedef QMap<QString, AppLib> AppLibMap;
100 QString lastError() const;
101 AppLib loadLibrary( const QString&, QString& );
102 QString applicationName( const QString& ) const;
105 SUIT_ResourceMgr* myResMgr;
108 SUIT_Application* myActiveApp;
110 SUIT_ExceptionHandler* myHandler;
111 static SUIT_Session* mySession;