Salome HOME
Copyrights update
[modules/gui.git] / src / Qtx / QtxWorkstackAction.h
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/
18 //
19 // File:      QtxWorkstackAction.h
20 // Author:    Sergey TELKOV
21
22 #ifndef QTXWORKSTACKACTION_H
23 #define QTXWORKSTACKACTION_H
24
25 #include "QtxAction.h"
26
27 class QtxWorkstack;
28
29 #ifdef WIN32
30 #pragma warning( disable:4251 )
31 #endif
32
33 class QTX_EXPORT QtxWorkstackAction : public QtxAction
34 {
35   Q_OBJECT
36
37 public:
38   enum { VSplit     = 0x0001,
39          HSplit     = 0x0002,
40          Windows    = 0x0010,
41          Split      = VSplit | HSplit,
42          Standard   = Split | Windows };
43
44 public:
45   QtxWorkstackAction( QtxWorkstack*, QObject* = 0, const char* = 0 );
46   virtual ~QtxWorkstackAction();
47
48   QtxWorkstack* workstack() const;
49
50   int           items() const;
51   void          setItems( const int );
52   bool          hasItems( const int ) const;
53
54   int           accel( const int ) const;
55   QIconSet      iconSet( const int ) const;
56   QString       menuText( const int ) const;
57   QString       statusTip( const int ) const;
58
59   void          setAccel( const int, const int );
60   void          setIconSet( const int, const QIconSet& );
61   void          setMenuText( const int, const QString& );
62   void          setStatusTip( const int, const QString& );
63
64   virtual bool  addTo( QWidget* );
65   virtual bool  addTo( QWidget*, const int );
66   virtual bool  removeFrom( QWidget* );
67
68   void          perform( const int );
69
70 private slots:
71   void          onAboutToShow();
72   void          onItemActivated( int );
73   void          onPopupDestroyed( QObject* );
74
75 private:
76   void          checkPopup( QPopupMenu* );
77   void          updatePopup( QPopupMenu* );
78
79   int           clearPopup( QPopupMenu* );
80   void          fillPopup( QPopupMenu*, const int );
81
82 private:
83   typedef QMap<QPopupMenu*, QIntList> MenuMap;
84   typedef QMap<int, QtxAction*>       ItemMap;
85
86 private:
87   MenuMap       myMenu;
88   ItemMap       myItem;
89   int           myFlags;
90   QtxWorkstack* myWorkstack;
91 };
92
93 #ifdef WIN32
94 #pragma warning( default:4251 )
95 #endif
96
97 #endif