Salome HOME
1) provide customization of translation files formats
[modules/gui.git] / src / Qtx / QtxPopupMgr.h
1
2 #ifndef __QTX_POPUP_MGR_HEADER__
3 #define __QTX_POPUP_MGR_HEADER__
4
5 #include "Qtx.h"
6 #include "QtxActionMenuMgr.h"
7 #include "QtxParser.h"
8 #include "QtxStdOperations.h"
9
10 #include <qmap.h>
11
12 class QtxListOfOperations;
13
14 //================================================================
15 // Class    : 
16 // Purpose  : 
17 //================================================================
18 class QTX_EXPORT QtxPopupMgr : public QtxActionMenuMgr
19 {
20     Q_OBJECT
21
22 public:
23     class QTX_EXPORT Selection
24     {
25     public:
26         virtual int      count() const = 0;
27         virtual QtxValue param( const int, const QString& ) const = 0;
28               virtual QtxValue globalParam( const QString& ) const;
29
30               virtual QChar   equality() const;
31               virtual QString selCountParam() const;
32
33               static QChar    defEquality();
34               static QString  defSelCountParam();
35     };
36
37 protected:
38     class Operations : public QtxStrings
39     {
40     public:
41         Operations( QtxPopupMgr* );
42         virtual ~Operations();
43
44         virtual int   prior( const QString&, bool isBin ) const;
45         virtual QtxParser::Error calculate( const QString&, QtxValue&, QtxValue& ) const;
46
47         void clear();
48
49     private:
50         QtxPopupMgr*               myPopupMgr;
51         QtxParser*                 myParser;
52         QMap< QString, QtxValue >  myValues;
53     };
54
55     friend class Operations;
56
57 protected:
58   class PopupCreator;
59
60 public:
61     QtxPopupMgr( QPopupMenu*, QObject* = 0 );
62     virtual ~QtxPopupMgr();
63
64     virtual int  registerAction( QAction*,
65                                  const QString& visible,
66                                  const QString& toggle = QString::null,
67                                  const int = -1 );
68     virtual void unRegisterAction( const int );
69
70     virtual bool isVisible( const int actId, const int place ) const;
71
72     bool    hasRule( QAction*, bool visibility ) const;
73     bool    hasRule( const int, bool visibility ) const;
74     void    setRule( QAction*, const QString&, bool visibility );
75     void    setRule( const int, const QString&, bool visibility );
76     void    updatePopup( QPopupMenu*, Selection* );
77
78     //return name of parameter corresponding to selected objects count
79     //it will be set automatically
80
81     virtual bool load( const QString&, QtxActionMgr::Reader& );
82
83 protected:
84     typedef QMap< QAction*, QtxParser* > RulesMap;
85
86 protected:
87     virtual bool      isSatisfied( QAction*, bool visibility ) const;
88             void      setParams( QtxParser*, QStringList& ) const;
89             RulesMap& map( bool visibility ) const;
90
91     void createOperations();
92
93 private:
94     RulesMap             myVisibility, myToggle;
95     Selection*           myCurrentSelection;
96     QtxListOfOperations* myOperations;
97 };
98
99
100
101 class QtxPopupMgr::PopupCreator : public QtxActionMgr::Creator
102 {
103 public:
104   PopupCreator( QtxActionMgr::Reader*, QtxPopupMgr* );
105   virtual ~PopupCreator();
106
107   virtual int append( const QString&, const bool,
108                       const ItemAttributes&, const int );
109
110   virtual QString visibleRule( const ItemAttributes& ) const;
111   virtual QString toggleRule( const ItemAttributes& ) const;
112
113 private:
114   QtxPopupMgr* myMgr;
115 };
116
117
118 #endif