Salome HOME
Fix for bug 10438: Crash during Explode on Blocks operation (Global selection on...
[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   /** @name Modules lists.*/
34   //@{
35   ModuleListIterator  modules() const;
36   void                modules( ModuleList& ) const;
37   void                modules( QStringList&, const bool loaded = true ) const;
38   //@}
39
40   virtual void        addModule( CAM_Module* );
41
42   virtual void        loadModules();
43   virtual CAM_Module* loadModule( const QString& );
44
45   virtual bool        activateModule( const QString& );
46
47   virtual void        contextMenuPopup( const QString&, QPopupMenu*, QString& );
48
49   QString             moduleName( const QString& ) const;
50   QString             moduleTitle( const QString& ) const;
51
52   virtual void        createEmptyStudy();
53
54 protected:
55   virtual SUIT_Study* createNewStudy();
56   virtual void        updateCommandsStatus();
57
58   virtual void        moduleAdded( CAM_Module* );
59   virtual void        beforeCloseDoc( SUIT_Study* );
60   virtual bool        activateModule( CAM_Module* = 0 );
61
62   virtual void        setActiveStudy( SUIT_Study* );
63
64   QString             moduleLibrary( const QString&, const bool = true ) const;
65
66 private:
67   void                readModuleList();
68
69 private:
70   typedef struct { QString name, title, internal; } ModuleInfo;
71   typedef QValueList<ModuleInfo>                    ModuleInfoList;
72
73 private:
74   CAM_Module*         myModule;
75   ModuleList          myModules;
76   ModuleInfoList      myInfoList;
77   bool                            myAutoLoad;
78 };
79
80 #ifdef WIN32
81 #pragma warning( default:4251 )
82 #endif
83
84 #endif