VR-Forces 4.2 Class Documentation
popupMenu.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2009 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: popupMenu.h,v $ $Revision: 1.42 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef DTPOPUPMENU_H
13 #define DTPOPUPMENU_H
14 
16 #include "vrfGuiCore/menuItems.h"
17 
18 #include <QtGui/QMenu>
19 #include <QtGui/QAction>
20 #include <QtCore/QList>
21 #include <QtCore/QHash>
22 
23 class DtMenuWidget;
25 
28 
31 {
32 public:
33  DtPopupMenuItem() : myPos(-1), myIsSeparator(false), myAddSeparator(false), myIsToggle(false), myIsOn(false),
34  myType(DtNoMenuItem), myGroup(DtNoMenuItem), myIsActionItem(false), myProcessed(false), myMenu(DtNoMenu) {};
35 
37  myText(orig.myText),
38  myToolTip(orig.myToolTip),
39  myAccel(orig.myAccel),
40  myName(orig.myName),
41  myObjectName(orig.myObjectName),
42  myPos(orig.myPos),
43  myIsSeparator(orig.myIsSeparator),
44  myAddSeparator(orig.myAddSeparator),
45  myIsToggle(orig.myIsToggle),
46  myIsOn(orig.myIsOn),
47  myIsActionItem(orig.myIsActionItem),
48  myType(orig.myType),
49  myGroup(orig.myGroup),
50  myMenu(orig.myMenu),
51  myProcessed(false)
52  {
53  }
54 
55  bool operator==(const DtPopupMenuItem& orig) const
56  {
57  return ((myText == orig.myText) &&
58  (myToolTip == orig.myToolTip) &&
59  (myAccel == orig.myAccel) &&
60  (myName == orig.myName) &&
61  (myObjectName == orig.myObjectName) &&
62  (myIsSeparator == orig.myIsSeparator) &&
63  (myAddSeparator == orig.myAddSeparator) &&
64  (myIsToggle == orig.myIsToggle) &&
65  (myIsOn == orig.myIsOn) &&
66  (myIsActionItem == orig.myIsActionItem) &&
67  (myType == orig.myType) &&
68  (myMenu == orig.myMenu) &&
69  (myGroup == orig.myGroup));
70  }
71 
72 public:
73  QString myText;
74  QString myToolTip;
75  QString myAccel;
76  QString myName;
77  QString myObjectName;
78  int myPos;
81  bool myIsToggle;
82  bool myIsOn;
88 };
89 
91 {
92 public:
93  DtMenuItemValidator(QObject* vc, const char* v) : myValidatorCall(vc), myValidator(v) {};
95  myValidatorCall(orig.myValidatorCall), myValidator(orig.myValidator) {}
97  const char* myValidator;
98 };
99 
101 {
102 public:
105  myActionCall(orig.myActionCall),
106  myAction(orig.myAction),
107  myValidators(orig.myValidators)
108  {
109  }
110 
111 public:
113  const char* myAction;
115 };
116 
122 {
123  Q_OBJECT
124 
125 public:
126  DtActionGroup(QMenu* parent);
127  virtual ~DtActionGroup();
128 
129  void setUsesDropDown(bool b) { myUsesDropDown = b; };
130  bool usesDropDown() const { return myUsesDropDown; };
131 
132  void setTitle(const QString& t);
133  const QString& title() const { return myTitle; };
134 
136  void setTearOffEnabled(bool);
137 
138  QMenu* menu();
139  QMenu* menuParent();
140 
144  QAction* addAction(QAction* action, QString addBefore = "");
145  QAction* addAction(const QString& text, QString addBefore = "");
146  QAction* addAction(const QIcon& icon, const QString& text, QString addBefore = "");
147 
149  virtual QMenu* createMenu();
150 
152  void addActions(const QList<QAction*>&);
153 
154  void removeAttachment();
155  void linkTo(DtActionGroup*, int);
156 
159  void attach();
160 
161  QAction* action(int);
162 
163  int numActions() const;
164 
165 protected slots:
166  virtual void actionDestroyed();
167 
168 protected:
170  virtual QAction* addActionInternal(QAction*, QString addBefore);
171 
172 protected:
176  QString myTitle;
179 
181 };
182 
183 const int DtSeparatorType = 0x80000000;
184 const int DtGroupAddType = 0x40000000;
185 
187 const int DtMapDoNotValidate = 0x00000001;
188 const int DtMapCreateMenuItems = 0x00000002;
189 
191 {
192  Q_OBJECT
193 
194 public:
198  DtPopupMenu ( QWidget * parent, bool display = true);
199  virtual ~DtPopupMenu();
200 
204  virtual bool init(DtMainMenuType iType, DtMenuWidget* menu, QWidget* owner, int iPos = -1, int iID = -1);
205  virtual void insertMenu(DtMenuWidget* menuWidget, int iPos = -1, int iID = -1);
206 
208  virtual bool setup(DtMenuWidget* menuWidget);
209 
210  virtual void preCreateMenuItems();
211 
212  virtual bool createMenuItems();
213 
214  virtual int id() const;
215 
217  virtual DtMenuItemType typeFromAction(QAction*);
218 
220  virtual DtMenuItemType typeFromName(const QString&);
221 
223  virtual QAction* menuItemForType(DtMenuItemType iType);
224 
226  virtual bool hasType(DtMenuItemType iType);
227 
230  virtual int positionOfMenuItem(const DtPopupMenuItem& item);
231  virtual int positionOfMenuItem(DtMenuItemType iType);
232 
236  virtual int menuItemPositionOf(QAction* action);
237 
239  virtual DtActionGroup* getActionGroupForType(DtMenuItemType iType);
240 
241  virtual DtMainMenuType type() const;
242 
244  virtual void setOwner(QWidget* owner);
245  virtual QWidget* owner() const;
246 
248  virtual void setEnableValidations(bool b);
249 
252  virtual void reconfigureMenu(QList<DtMenuItemType>& items, bool keep);
253 
255  virtual void updateMenuItems();
256 
258  virtual void seedActionGroups();
259 
265  virtual bool attachMenu(const QString& title, DtPopupMenu*, int iIndex = -1);
266 
267  bool initialized() const;
268 
270  DtFeatureActionManager* featureActionManager() const;
271  virtual void setFeatureActionManager(DtFeatureActionManager*);
272 
273  void setAddFeatures(bool);
274  bool addFeatures() const;
275 
277  virtual QString shortcutFor(const QString& feature) const;
278  virtual void addShortcut(const QString& feature, const QString& shortcut);
279  virtual void replaceShortcut(const QString& feature, const QString& shortcut);
280  virtual bool hasShortcutOverride(const QString& feature) const;
281  virtual bool hasShortcut(const QString& feature) const;
282 
284  virtual QString iconFor(const QString& feature, QIcon::Mode mode = QIcon::Normal, QIcon::State = QIcon::Off,
285  bool useDefault = false);
286 
288  virtual QString menuTextForAction(QAction*);
289 
290 public:
291  virtual QHash<DtMenuItemType, QAction*>& actions();
292  virtual QList<QAction*> menuActions();
293  virtual const QList<DtPopupMenu*>& attachedMenus() const;
294 
295 public:
299 
305  virtual DtPopupMenuItem* insertMenuItem(DtMenuItemType iPos, const QString& featureName, DtMenuItemType iType, QString text,
306  QString toolTip = QString::null, QString accel = QString::null, bool addSeparator = false,
307  bool toggle = false, bool isOn = false, const QString& objectName = "");
308 
310  virtual DtPopupMenuItem* insertMenuItem(DtMenuItemType iPos, DtMenuItemType iType, QString text,
311  QString toolTip = QString::null, QString accel = QString::null, bool addSeparator = false,
312  bool toggle = false, bool isOn = false, const QString& objectName = "");
313 
316  virtual DtPopupMenuItem* insertToggleMenuItem(DtMenuItemType iBefore, const QString& featureName, DtMenuItemType iType,
317  QString text, QString toolTip = QString::null, QString accel = QString::null, bool addSeparator = false,
318  bool isOn = false, const QString& objectName = "");
319 
321  virtual DtPopupMenuItem* insertToggleMenuItem(DtMenuItemType iBefore, DtMenuItemType iType,
322  QString text, QString toolTip = QString::null, QString accel = QString::null, bool addSeparator = false,
323  bool isOn = false, const QString& objectName = "");
324 
326  virtual void addMenuItemSeparator(DtMenuItemType iGroup);
327 
329  virtual void removeMenuItem(DtMenuItemType iType);
330 
333  virtual bool removeMenuGroup(const QString& gr);
334 
336  virtual void removeItemAtPosition(int iPos);
337 
340  virtual void addIcon(DtMenuItemType iType, QString icon, QIcon::Mode mode = QIcon::Normal, QIcon::State = QIcon::Off);
341 
343  virtual void removeIcon(DtMenuItemType iType, QIcon::Mode mode = (QIcon::Mode)-1, QIcon::State = QIcon::Off);
344 
348  virtual void addGroup(DtMenuItemType iToGroup, DtMenuItemType iGroup, int iPos, bool addSep = false);
349 
351  virtual void removeGroup(DtMenuItemType iGroup);
352 
355  virtual void addMenu(DtMainMenuType, int iPos, bool addSep);
356 
358  virtual void removeMenu(DtMainMenuType iGroup);
359 
362  virtual void mappingMenu(DtPopupMenu* menu, int iFlags = 0);
363 
367  virtual void mapMenuItem(DtMenuItemType iType, DtPopupMenu& popupMenu, int iPos = -1, bool addSeparator = false);
368 
370  virtual void setPosition(int iPos);
371 
373  virtual bool matchesName(QString name);
374 
376  virtual DtMenuItemType uniqueId() const;
377 
389  virtual QAction* addMenuItem(DtMenuItemType& retId,
390  const QString& featureName, const QString& item, const QString& addToMenu,
391  bool toggle = false, QObject* actionReceiver = NULL,
392  const char* action = NULL, QObject* validationReceiver = NULL,
393  const char* validation = NULL, const QString& tooltip = QString::null,
394  const QString& accelerator = QString::null, bool addSep = false);
395 
397  virtual void appendMenuValidator(DtMenuItemType iType, QObject* vCall, const char* validator);
398  virtual void appendMenuValidator(const QString& menu, QObject* vCall, const char* validator);
399 
401  virtual bool removeMenuItem(const QString& item);
402 
405  virtual void setupFrom(DtMainMenuType iType, DtPopupMenu*, QWidget*, DtMenuWidget* w);
406 
407 public:
410  virtual void renameMenuItem(DtMenuItemType iType, QString text = QString::null,
411  QString toolTip = QString::null, QString accel = QString::null);
412 
414  virtual void positionBefore(DtMenuItemType iType, DtMenuItemType iBefore);
415  virtual void positionAfter(DtMenuItemType iType, DtMenuItemType iAfter);
416 
417 public:
419  virtual QString menuName();
420 
425  virtual void addActionAndValidatorForType(DtMenuItemType iType, QObject* aCall, const char* action,
426  QObject* vCall = NULL, const char* validator = NULL);
427  virtual void addActionForType(DtMenuItemType iType, QObject* aCall, const char* action);
428  virtual void addValidatorForType(DtMenuItemType iType, QObject* vCall, const char* validator);
429 
431  virtual void addGlobalActionAndValidatorForType(DtMenuItemType iType, QObject* aCall, const char* action,
432  QObject* vCall = NULL, const char* validator = NULL);
433 
436  virtual DtActionGroup* actionGroupWithName(const QString&) const;
437  virtual QAction* actionWithName(const QString&) const;
438 
440  virtual void clearMenuItems();
441 
442  virtual void removeFeatureActions();
443 
444 signals:
446  void validateItems();
447 
448 public slots:
449  virtual void validate();
450  virtual void menuItemDestroyed(QAction*);
451  virtual void actionGroupDestroyed(DtActionGroup*);
452  virtual void featureActionManagerDestroyed();
453 
454 protected slots:
455  virtual void popupRemoved(QObject*);
456  virtual void menuItemDestroyed();
457  virtual void actionGroupDestroyed();
458 
459 protected:
462  virtual bool initMenuItems();
463 
465  virtual bool initActionGroups();
466 
471  virtual bool removeMenuItemAtPosition(int iPos);
472 
476  virtual void addNewMenuItem(DtPopupMenuItem& item, int iPos);
477 
480  virtual QAction* createMenuItem(const DtPopupMenuItem& item);
481 
484  virtual void attachMenuItems();
485 
487  virtual void attachMenuItem(const DtPopupMenuItem& item);
488 
491  virtual void addCompletedItemsToMenu();
492 
494  virtual void addAttachedMenus();
495 
497  virtual void setIcon(DtMenuItemType iType);
498 
501  virtual void attachValidators(bool b);
502 
504  virtual void initConnections();
505 
508  virtual DtPopupMenuItem* popupMenuItem(DtMenuItemType iType, bool actionable = false);
509 
511  virtual DtActionValidatorMap* actionValidatorMapEntry(DtMenuItemType iType);
512 
514  virtual void removeOrderedMenuItem(int iPos);
515 
517  virtual int addOrderedItem(const DtPopupMenuItem& item, int iPos);
518 
520  virtual void setMapMenuItemsTo(DtPopupMenu* menu);
521 
523  virtual void addActionGroup(DtActionGroup*);
524  virtual bool matchesName(QString menu, QString name) const;
525 
527  virtual DtActionGroup* internalGetActionGroupForType(DtMenuItemType type);
528 
530  virtual QAction* addNewActionToActionGroup(const DtPopupMenuItem& item);
531 
534  virtual void addAllActionsFor(DtActionGroup*);
535 
536 protected:
537  QHash<DtMenuItemType, QAction*> myActions;
538  QHash<DtMenuItemType, DtPopupMenuItem> myMenuItems;
539  QHash<DtMenuItemType, DtActionValidatorMap> myActionValidators;
541  QHash<DtMenuItemType, QIcon> myIcons;
542  int myId;
543  bool myCreated;
544  bool myInited;
549  bool myDisplay;
550 
551  QHash<DtPopupMenu*, int> myMenuMappingList;
552 
556 
557  static QHash<DtMenuItemType, DtActionValidatorMap> myGlobalActionValidators;
558 
561 
562  QHash<DtMenuItemType, DtActionGroup*> myInternalGroupMappings;
563 
566 
569 
571  QVector<QString> myRemovedActionGroups;
572 
574 
576 };
577 
578 typedef DtPopupMenu* (*DtPopupMenuCreatorFcn)(QWidget* parent, bool display);
579 
580 inline bool DtPopupMenu::initialized() const
581 {
582  return myInited;
583 }
584 
586 {
587  return myFeatureActionManager;
588 }
589 
590 inline void DtPopupMenu::setAddFeatures(bool b)
591 {
592  myAddFeatures = b;
593 }
594 
595 inline bool DtPopupMenu::addFeatures() const
596 {
597  return myAddFeatures;
598 }
599 
600 #endif

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)