]> SALOME platform Git repositories - modules/gui.git/blob - src/LightApp/LightApp_ModuleAction.h
Salome HOME
4be268decea3c76a6eacf5e047bf9b03bd1986d6
[modules/gui.git] / src / LightApp / LightApp_ModuleAction.h
1 //  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
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.
10 //
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.
15 //
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
19 //
20 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 // File   : LightApp_ModuleAction.h
23 // Author : Sergey TELKOV, Vadim SANDLER
24 //
25 #ifndef LIGHTAPP_MODULEACTION_H
26 #define LIGHTAPP_MODULEACTION_H
27
28 #include "LightApp.h"
29
30 #include <QtxAction.h>
31
32 #ifdef WIN32
33 #pragma warning ( disable:4251 )
34 #endif
35
36 class QtxComboBox;
37
38 class LIGHTAPP_EXPORT LightApp_ModuleAction : public QtxAction
39 {
40   Q_OBJECT
41
42 private:
43   class ActionSet;
44   class ComboAction;
45
46 public:
47   enum { None = 0x00, Buttons = 0x01, ComboItem = 0x02, All = Buttons | ComboItem };
48
49 public:
50   LightApp_ModuleAction( const QString&, QObject* = 0 );
51   LightApp_ModuleAction( const QString&, const QIcon&, QObject* = 0 );
52   virtual ~LightApp_ModuleAction();
53
54   QStringList      modules() const;
55
56   QIcon            moduleIcon( const QString& ) const;
57   void             setModuleIcon( const QString&, const QIcon& );
58
59   void             insertModule( const QString&, const QIcon&, const int = -1 );
60   void             removeModule( const QString& );
61
62   QString          activeModule() const;
63   void             setActiveModule( const QString& );
64
65   void             setMode( const int );
66   int              mode() const;
67
68 protected:
69   virtual void     addedTo( QWidget* );
70   virtual void     removedFrom( QWidget* );
71
72 signals:
73   void             moduleActivated( const QString& );
74
75 private:
76   void             init();
77
78   void             update();
79   void             update( QtxComboBox* );
80
81   QAction*         active() const;
82   void             activate( int, bool = true );
83
84 private slots:
85   void             onChanged();
86   void             onTriggered( int );
87   void             onComboActivated( int );
88
89 private:
90   ComboAction*     myCombo;
91   ActionSet*       mySet;
92   int              myMode;
93 };
94
95 class LightApp_ModuleAction::ComboAction : public QtxAction
96 {
97   Q_OBJECT
98
99 public:
100   ComboAction( QObject* parent );
101
102   QList<QtxComboBox*> widgets() const;
103
104 protected:
105   virtual QWidget*    createWidget( QWidget* );
106
107 signals:
108   void                activatedId( int );
109 };
110
111 #endif // LIGHTAPP_MODULEACTION_H