VR-Forces 4.1 Class Documentation
menuWidget.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2009 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: menuWidget.h,v $ $Revision: 1.29 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef QTMENUWIDGET_H
13 #define QTMENUWIDGET_H
14 
15 #include <QtGui/QMenuBar>
16 
18 #include "commonWgt/popupMenu.h"
19 
20 #include "ngutil/dtqlist.h"
21 #include <QtCore/QHash>
22 
24 
27 
28 const int DtAfterMenu = 0x80000000;
29 const int DtSwapMenu = 0x40000000;
30 const int DtReconfigureMenu = 0x20000000;
31 const int DtByPosition = 0x10000000;
32 
38 
40 {
41 public:
42  virtual bool operator==(const DtGlobalChange&) const;
43 
44 public:
50 };
51 
53 {
54 public:
55  DtPopupCreator(DtPopupMenuCreatorFcn fcn) : myFcn(fcn) {};
56  DtPopupCreator(const DtPopupCreator& orig) : myFcn(orig.myFcn) {};
57 
59 };
60 
62 {
63  Q_OBJECT
64 
65 public:
66 
67  DtMenuWidget(QWidget* parent = NULL);
68 
69  virtual ~DtMenuWidget();
70 
71  virtual bool init(DtFeatureActionManager*);
72  virtual bool createMenuSystem();
73 
76  virtual DtMenuItemType typeFromAction(QAction* action);
77 
79  virtual DtPopupMenu* menuFromAction(QAction*);
80 
82  virtual QAction* menuItemForType(DtMenuItemType iType);
83 
85  virtual DtPopupMenu* menuForType(DtMainMenuType iType);
86 
88  virtual DtPopupMenu* menuThatHasMenuType(DtMenuItemType iType);
89 
91  virtual DtPopupMenu* menuThatHasActionGroupType(DtMenuItemType iType);
92 
95  virtual DtPopupMenu* createMenuOfType(DtMainMenuType iType, QWidget* owner);
96 
100  virtual DtPopupMenu* initializeMenuOfType(DtMainMenuType iType, QWidget* owner);
101 
104  virtual bool createMenu(DtPopupMenu* newMenu);
105 
107  virtual void updateMenuItems();
108 
111  virtual DtPopupMenu* menuWithName(const QString&);
112 
114  virtual DtMenuItemType uniqueId() const;
115 
117  virtual DtMainMenuType uniqueMenuId() const;
118 
122  virtual DtMainMenuType insertItem(DtPopupMenu* menu, int index = -1);
123 
126  virtual QAction* addMenuItem(const QString& featureName, const QString& item,
127  const QString& addToMenu, DtMenuItemType& retId,
128  bool toggle = false, QObject* actionReceiver = NULL,
129  const char* action = NULL, QObject* validationReceiver = NULL,
130  const char* validation = NULL, const QString& tooltip = QString::null,
131  const QString& accelerator = QString::null, bool addSep = false);
132 
134  virtual void appendMenuValidator(const QString& menuName, const QString& itemName,
135  QObject* validatorReceiver, char* validator);
136 
139  virtual bool removeMenuItem(const QString& item);
140 
143  virtual bool removeMenuGroup(const QString& group);
144 
147  virtual void recreateMenu(DtMainMenuType menu, bool useBaseMenuIfExists = true);
148 
150  DtFeatureActionManager* featureActionManager() const;
151  void setFeatureActionManager(DtFeatureActionManager*);
152 
154  virtual DtPopupMenu* menuAt(int iPos);
155 
158  virtual QString menuTextForAction(QAction*);
159 
160 public:
166  virtual int insertPopupMenu(DtMainMenuType iType, DtPopupMenuCreatorFcn fcn, DtMainMenuType iPos = DtNoMenu);
167 
170  virtual int replacePopupMenu(DtMainMenuType iType, DtPopupMenuCreatorFcn with);
171 
175  virtual bool removePopupMenu(DtMainMenuType iType, bool permenant = true);
176 
180  virtual DtPopupMenu* restoreMenu(DtMainMenuType type);
181 
183  virtual void removeMenuAtPosition(int iPos, bool freeMemory = false);
184 
186  virtual QHash<DtMainMenuType, DtPopupMenu*>& popupMenus();
187 
189  virtual void swapMenus(DtMainMenuType iA, DtMainMenuType iB);
190 
191 public:
193 
196  static void globalInsertPopupMenu(DtMainMenuType iType, DtPopupMenuCreatorFcn fcn, DtMainMenuType iAfterType = DtNoMenu);
197 
199  static void globalReplacePopupMenu(DtMainMenuType iType, DtPopupMenuCreatorFcn with);
200 
202  static void globalRemovePopupMenu(DtMainMenuType iType);
203 
205  static void globalSwapMenuPositions(DtMainMenuType iA, DtMainMenuType iB);
206 
211  static void globalCreateOnlyItemsForMenu(DtMainMenuType iType, QList<DtMenuItemType> menuItems);
212 
213 public:
215  static DtMenuWidget* create(QWidget* parent = NULL);
216 
217 protected:
220  virtual void modifyLocalMenuWithGlobalChanges();
221 
223  virtual DtPopupMenu* createMenu(DtPopupMenuCreatorFcn fcn, DtMainMenuType iType, int iPos = -1, bool initializeOnly = false,
224  DtPopupMenu* menuBase = NULL);
225 
227  virtual int positionOfCreator(DtPopupMenuCreatorFcn fcn);
228  virtual int positionOfCreator(DtMainMenuType iType);
229 
231  virtual DtMainMenuType typeForCreator(DtPopupMenuCreatorFcn fcn);
232 
234  virtual void removeOrderedCreator(int iPos);
235 
237  virtual void insertOrderedCreator(DtPopupMenuCreatorFcn, int iPos);
238 
239 signals:
240 
242  void validate();
243 
246  void menuRecreated(DtMainMenuType);
247 
248 public slots:
250  virtual void validateMenuItems();
251 
252 protected:
254  QHash<DtMainMenuType, DtPopupCreator> myPopupMenuCreators;
255  QHash<DtMainMenuType, DtPopupMenu*> myPopupMenus;
256  bool myCreated;
261 };
262 
264 {
265  return myFeatureActionManager;
266 }
267 
269 {
271 }
272 
273 #endif

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)