Version: 9.16.0
QtxPopupMgr.h
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, 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, or (at your option) any later version.
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
23// File: QtxPopupMgr.h
24// Author: Alexander SOLOVYOV, Sergey TELKOV
25//
26#ifndef QTXPOPUPMGR_H
27#define QTXPOPUPMGR_H
28
29#include "QtxActionMenuMgr.h"
30
31#include <QMap>
32#include <QVariant>
33
34class QtxEvalExpr;
35class QtxEvalParser;
37
39{
40 Q_OBJECT
41
42public:
44 typedef enum {
47 ToggleRule
48 } RuleType;
49
50private:
51 class PopupCreator;
52
53public:
54 QtxPopupMgr( QObject* = 0 );
55 QtxPopupMgr( QMenu*, QObject* = 0 );
56 virtual ~QtxPopupMgr();
57
58 int insertAction( const int, const int, const QString&, const RuleType = VisibleRule );
59 int insertAction( QAction*, const int, const QString&, const RuleType = VisibleRule );
60
61 virtual int registerAction( QAction*, const int, const QString& rule,
62 const RuleType = VisibleRule );
63 virtual void unRegisterAction( const int );
64
65 virtual bool isVisible( const int actId, const int place ) const;
66
67 QString rule( QAction*, const RuleType = VisibleRule ) const;
68 QString rule( const int, const RuleType = VisibleRule ) const;
69
70 void setRule( QAction*, const QString&, const RuleType = VisibleRule );
71 void setRule( const int, const QString&, const RuleType = VisibleRule );
72
73 bool hasRule( QAction*, const RuleType = VisibleRule ) const;
74 bool hasRule( const int, const RuleType = VisibleRule ) const;
75
76 QtxPopupSelection* selection() const;
77 void setSelection( QtxPopupSelection* );
78
79 QMenu* menu() const;
80 void setMenu( QMenu* );
81
82 void updateMenu();
83
84 virtual bool load( const QString&, QtxActionMgr::Reader& );
85
86protected:
87 virtual void internalUpdate();
88 void setParameters( QtxEvalParser*, QStringList& ) const;
89 virtual bool isSatisfied( QAction*, const RuleType = VisibleRule ) const;
90 QtxEvalExpr* expression( QAction*, const RuleType = VisibleRule, const bool = false ) const;
91
92private:
93 bool result( QtxEvalParser* p ) const;
94 QVariant parameter( const QString&, const int = -1 ) const;
95
96private slots:
97 void onSelectionDestroyed( QObject* );
98
99private:
100 typedef QMap<RuleType, QtxEvalExpr*> ExprMap;
101 typedef QMap<QAction*, ExprMap> RuleMap;
102 typedef QMap<QString, QVariant> CacheMap;
103
104private:
108
109 friend class QtxPopupSelection;
110};
111
113{
114 Q_OBJECT
115
116public:
118 virtual ~QtxPopupSelection();
119
120 virtual int count() const = 0;
121 virtual QVariant parameter( const QString& ) const;
122 virtual QVariant parameter( const int, const QString& ) const = 0;
123
124 QString option( const QString& ) const;
125 void setOption( const QString&, const QString& );
126
127 QtxPopupMgr* popupMgr() const;
128 void setPopupMgr( QtxPopupMgr* );
129
130private:
131 QString equalityParam() const;
132 QString selCountParam() const;
133
134private:
135 typedef QMap<QString, QString> OptionsMap;
136 typedef QPointer<QtxPopupMgr> PopupMgrPtr;
137
138private:
141};
142
143#endif // QTXPOPUPMGR_H
#define QTX_EXPORT
Definition: Qtx.h:36
For more information see QT documentation.
Main menu actions manager.
Definition: QtxActionMenuMgr.h:43
void updateMenu(MenuNode *=0, const bool=true, const bool=true)
Update menu.
Definition: QtxActionMenuMgr.cxx:866
virtual bool isVisible(const int, const int) const
Check if an action with actId identifier is visible to the parent action with place identifier.
Definition: QtxActionMenuMgr.cxx:163
virtual void internalUpdate()
Internal update.
Definition: QtxActionMenuMgr.cxx:982
virtual bool load(const QString &, QtxActionMgr::Reader &)
Load actions description from the file.
Definition: QtxActionMenuMgr.cxx:1100
Generic actions description files reader class.
Definition: QtxActionMgr.h:133
virtual void unRegisterAction(const int)
Unregister action from internal map.
Definition: QtxActionMgr.cxx:169
virtual int registerAction(QAction *, const int=-1)
Register an action in the internal map.
Definition: QtxActionMgr.cxx:138
String expression evaluator.
Definition: QtxEvalExpr.h:39
Expression parser.
Definition: QtxEvalExpr.h:87
Popup menu manager.
Definition: QtxPopupMgr.h:39
@ VisibleRule
menu item visibility state
Definition: QtxPopupMgr.h:45
@ EnableRule
menu item enable state
Definition: QtxPopupMgr.h:46
QMap< QString, QVariant > CacheMap
Definition: QtxPopupMgr.h:102
QMap< RuleType, QtxEvalExpr * > ExprMap
Definition: QtxPopupMgr.h:100
CacheMap myCache
Definition: QtxPopupMgr.h:106
QtxPopupSelection * mySelection
Definition: QtxPopupMgr.h:107
QMap< QAction *, ExprMap > RuleMap
Definition: QtxPopupMgr.h:101
RuleMap myRules
Definition: QtxPopupMgr.h:105
This class is a part of the popup menu management system.
Definition: QtxPopupMgr.h:113
PopupMgrPtr myPopupMgr
Definition: QtxPopupMgr.h:140
OptionsMap myOptions
Definition: QtxPopupMgr.h:139
QMap< QString, QString > OptionsMap
Definition: QtxPopupMgr.h:135
QPointer< QtxPopupMgr > PopupMgrPtr
Definition: QtxPopupMgr.h:136
virtual QVariant parameter(const int, const QString &) const =0
Get value of the parameter which is of list type.
virtual int count() const =0
Get number of the selected objects.