Salome HOME
156643aac933a77e2cc98d7ea2339984cce6d002
[modules/gui.git] / src / Qtx / QtxWorkspaceAction.h
1 // File:      QtxWorkspaceAction.h
2 // Author:    Sergey TELKOV
3
4 #ifndef QTXWORKSPACEACTION_H
5 #define QTXWORKSPACEACTION_H
6
7 #include "QtxAction.h"
8
9 class QWorkspace;
10
11 #ifdef WIN32
12 #pragma warning( disable:4251 )
13 #endif
14
15 class QTX_EXPORT QtxWorkspaceAction : public QtxAction
16 {
17   Q_OBJECT
18
19 public:
20   enum { Cascade    = 0x0001,
21          Tile       = 0x0002,
22          VTile      = 0x0004,
23          HTile      = 0x0008,
24          Windows    = 0x0010,
25          Standard   = Cascade | Tile | Windows,
26          Operations = Cascade | Tile | VTile | HTile,
27          All        = Standard | HTile | VTile };
28
29 public:
30   QtxWorkspaceAction( QWorkspace*, QObject* = 0, const char* = 0 );
31   virtual ~QtxWorkspaceAction();
32
33   QWorkspace*  workspace() const;
34
35   int          items() const;
36   void         setItems( const int );
37   bool         hasItems( const int ) const;
38
39   int          accel( const int ) const;
40   QIconSet     iconSet( const int ) const;
41   QString      menuText( const int ) const;
42   QString      statusTip( const int ) const;
43
44   void         setAccel( const int, const int );
45   void         setIconSet( const int, const QIconSet& );
46   void         setMenuText( const int, const QString& );
47   void         setStatusTip( const int, const QString& );
48
49   virtual bool addTo( QWidget* );
50   virtual bool addTo( QWidget*, const int );
51   virtual bool removeFrom( QWidget* );
52
53   void         perform( const int );
54
55 public slots:
56   void         tile();
57   void         cascade();
58   void         tileVertical();
59   void         tileHorizontal();
60
61 private slots:
62   void         onAboutToShow();
63   void         onItemActivated( int );
64   void         onPopupDestroyed( QObject* );
65
66 private:
67   void         checkPopup( QPopupMenu* );
68   void         updatePopup( QPopupMenu* );
69
70   int          clearPopup( QPopupMenu* );
71   void         fillPopup( QPopupMenu*, const int );
72
73 private:
74   typedef QMap<QPopupMenu*, QIntList> MenuMap;
75   typedef QMap<int, QtxAction*>       ItemMap;
76
77 private:
78   MenuMap      myMenu;
79   ItemMap      myItem;
80   int          myFlags;
81   QWorkspace*  myWorkspace;
82 };
83
84 #ifdef WIN32
85 #pragma warning( default:4251 )
86 #endif
87
88 #endif