Salome HOME
Initial version
[modules/gui.git] / src / Qtx / QtxActionMgr.h
1 // File:      QtxActionMgr.h
2 // Author:    Alexander SOLOVYEV, Sergey TELKOV
3
4 #ifndef QTXACTIONMGR_H
5 #define QTXACTIONMGR_H
6
7 #include "Qtx.h"
8
9 #include <qmap.h>
10 #include <qobject.h>
11
12 class QAction;
13 class QDomNode;
14
15
16 #ifdef WIN32
17 #pragma warning( disable:4251 )
18 #endif
19
20 class QTX_EXPORT QtxActionMgr : public QObject
21 {
22   Q_OBJECT 
23
24   class SeparatorAction;
25
26 public:
27   class Reader;
28   class XMLReader;
29
30 protected:
31   class Creator;
32
33 public:
34   QtxActionMgr( QObject* parent );
35   virtual ~QtxActionMgr();
36
37   virtual int      registerAction( QAction*, const int = -1 );
38   virtual void     unRegisterAction( const int );
39
40   QAction*         action( const int ) const;
41   int              actionId( const QAction* ) const;
42   bool             contains( const int ) const;
43
44   int              count() const;
45   bool             isEmpty() const;
46   void             idList( QIntList& ) const;
47
48   bool             isUpdatesEnabled() const;
49   virtual void     setUpdatesEnabled( const bool );
50
51   virtual bool     isVisible( const int, const int ) const;
52   virtual void     setVisible( const int, const int, const bool );
53
54   void             update();
55
56   virtual bool     isEnabled( const int ) const;
57   virtual void     setEnabled( const int, const bool );
58
59   static QAction*  separator( const bool = false );
60
61 protected:
62   virtual void     internalUpdate();
63   int              generateId() const;
64
65 private:
66   typedef QMap<int, QAction*>  ActionMap;
67
68 private:
69   bool             myUpdate;
70   ActionMap        myActions;
71 };
72
73
74 QTX_EXPORT typedef QMap<QString, QString> ItemAttributes;
75
76 class QtxActionMgr::Creator
77 {
78 public:
79   Creator( QtxActionMgr::Reader* );
80   virtual ~Creator();
81
82   Reader* reader() const;
83
84   virtual int append( const QString&, const bool,
85                       const ItemAttributes&, const int ) = 0;
86   virtual void connect( QAction* ) const;
87
88   virtual bool loadPixmap( const QString&, QPixmap& ) const;
89
90 protected:
91   static int     intValue( const ItemAttributes&, const QString&, const int );
92   static QString strValue( const ItemAttributes&, const QString&,
93                                       const QString& = QString::null );
94 private:
95   QtxActionMgr::Reader*  myReader;
96 };
97
98 class QtxActionMgr::Reader
99 {
100 public:
101   QTX_EXPORT Reader();
102   QTX_EXPORT virtual ~Reader();
103
104   QTX_EXPORT QStringList  options() const;
105   QTX_EXPORT QString      option( const QString&, const QString& = QString::null ) const;
106   QTX_EXPORT void         setOption( const QString&, const QString& );
107
108   QTX_EXPORT virtual bool read( const QString&, Creator& ) const = 0;
109
110 private:
111   QMap< QString, QString > myOptions;
112 };
113
114 class QtxActionMgr::XMLReader : public Reader
115 {
116 public:
117   QTX_EXPORT XMLReader( const QString&, const QString&, const QString& );
118   QTX_EXPORT virtual ~XMLReader();
119
120   QTX_EXPORT virtual bool read( const QString&, Creator& ) const;
121
122 protected:
123   QTX_EXPORT virtual void read( const QDomNode&, const int, Creator& ) const;
124   QTX_EXPORT virtual bool isNodeSimilar( const QDomNode&, const QString& ) const;
125 };
126
127
128 #endif