Salome HOME
Initial version
[modules/gui.git] / src / CAM / CAM_Application.h
1 #ifndef CAM_APPLICATION_H
2 #define CAM_APPLICATION_H
3
4 #include "STD_Application.h"
5
6 #include "CAM_Module.h"
7
8 #include <qptrlist.h>
9
10 class QPopupMenu;
11
12 #ifdef WIN32
13 #pragma warning( disable:4251 )
14 #endif
15
16 class CAM_EXPORT CAM_Application : public STD_Application  
17 {
18   Q_OBJECT
19
20 public:
21   typedef QPtrList<CAM_Module>         ModuleList;
22   typedef QPtrListIterator<CAM_Module> ModuleListIterator;
23
24 public:
25   CAM_Application( const bool = true );
26   virtual ~CAM_Application();
27
28   virtual void        start();
29
30   CAM_Module*         activeModule() const;
31   CAM_Module*         module(  const QString& ) const;
32
33   ModuleListIterator  modules() const;
34   void                modules( ModuleList& ) const;
35   void                modules( QStringList&, const bool loaded = true ) const;
36
37   virtual void        addModule( CAM_Module* );
38
39   virtual void        loadModules();
40   virtual CAM_Module* loadModule( const QString& );
41
42   virtual bool        activateModule( const QString& );
43
44   virtual void        contextMenuPopup( const QString&, QPopupMenu* );
45
46   QString             moduleName( const QString& ) const;
47   QString             moduleTitle( const QString& ) const;
48
49 protected:
50   virtual SUIT_Study* createNewStudy();
51   virtual void        updateCommandsStatus();
52
53   virtual void        moduleAdded( CAM_Module* );
54   virtual void        beforeCloseDoc( SUIT_Study* );
55   virtual bool        activateModule( CAM_Module* = 0 );
56
57   virtual void        setActiveStudy( SUIT_Study* );
58
59   QString             moduleLibrary( const QString&, const bool = true ) const;
60
61 private:
62   void                readModuleList();
63
64 private:
65   typedef struct { QString name, title, internal; } ModuleInfo;
66   typedef QValueList<ModuleInfo>                    ModuleInfoList;
67
68 private:
69   CAM_Module*         myModule;
70   ModuleList          myModules;
71   ModuleInfoList      myInfoList;
72   bool                            myAutoLoad;
73 };
74
75 #ifdef WIN32
76 #pragma warning( default:4251 )
77 #endif
78
79 #endif