VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
configurableMenu.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
7 
8 #pragma once
9 
16 #include <vrvCoreQt/DtMenuItem.h>
17 #include <vrvCoreQt/DtMenu.h>
19 #include <vrvCoreQt/DtMenuManager.h>
20 
21 #include <QtCore/QString>
22 
23 
24 namespace makVrv
25 {
26  class DtDe;
27 };
28 
29 namespace makVrf
30 {
32  {
33  public:
35  {
36  public:
37  SubToolbarPathBuilder(const std::string& path)
38  : ToolbarPathBuilder(path)
39  {
40  }
41  };
42 
43  DtSubToolbarPath(const makVrv::DtToolbarPath& p) : makVrv::DtToolbarPath(p) {};
44  DtSubToolbarPath(const std::string& p) : makVrv::DtToolbarPath(SubToolbarPathBuilder(p)) {};
45 
47  {
48  makVrv::DtToolbarPath::operator=(rhs);
49  return *this;
50  }
51 
53  {
54  makVrv::DtToolbarPath::operator=(rhs);
55  return *this;
56  }
57 
58  DtSubToolbarPath& operator=(const std::string& rhs)
59  {
60  myPath = rhs;
61  return *this;
62  }
63 
64  const std::string& path() const
65  {
67  }
68 
70  {
71  return SubToolbarPathBuilder(p.path());
72  }
73 
74  static SubToolbarPathBuilder path(const std::string& p)
75  {
76  return SubToolbarPathBuilder(p);
77  }
78  };
79 
81  {
82  public:
84  : makVrv::DtMenuManager()
85  , myDeleteMenus(false)
86  {
87  }
88 
89  void clear()
90  {
91  myMenuItems.clear();
92  myMenus.clear();
93  }
94 
95  void setDeleteMenus(bool b)
96  {
97  myDeleteMenus = b;
98  }
99 
100  bool deleteMenus() const
101  {
102  return myDeleteMenus;
103  }
104 
106  {
107  if (myDeleteMenus) cleanup();
108  }
109 
110  void cleanup();
111 
112  std::string findMenuPath(QMenu*) const;
113  std::string findItemPath(QAction*) const;
114 
115  protected:
117  };
118 
121  {
122  public:
124 
126  {
127  myMenuManager.clear();
128 
129  if (!myDeleteReferences)
130  {
131  myMenuBuilders.clear();
132  myMenuItemBuilders.clear();
133  }
134  else
135  {
136  cleanup();
137  }
138  }
139 
140  void setDeleteReferences(bool b)
141  {
142  myDeleteReferences = b;
143  }
144 
145  bool deleteReferences() const
146  {
147  return myDeleteReferences;
148  }
149 
150  void setLocalOnly(bool b)
151  {
152  myLocalOnly = b;
153  }
154 
155  void setLocalMenuManager(bool b)
156  {
157  myLocalMenuManager = b;
158  }
159 
161  virtual void assemble(const makVrv::DtMenuConfiguration& configuration);
162  virtual void fixCircularDependencies(DtSubMenuConfiguration& configuration) const;
163 
165  virtual bool hasCircularDependency(DtSubMenuConfiguration& configuration) const;
166 
167  bool localOnly() const
168  {
169  return myLocalOnly;
170  }
171 
172  void cleanup();
173 
176  {
177  if (myLocalMenuManager)
178  {
179  return myMenuManager;
180  }
181  else
182  {
183  return DtQtMenuAssembler::menuManager();
184  }
185  }
186 
188  {
189  if (myLocalMenuManager)
190  {
191  return myMenuManager;
192  }
193  else
194  {
195  return makVrv::DtMenuManager::instance(myDe);
196  }
197  }
198 
201  {
202  return menuManager().findMenu(path);
203  }
204 
206  {
207  return menuManager().findMenuItem(path);
208  }
209 
211  virtual void registerMenu(makVrv::DtMenu*);
212 
214  virtual void unregisterMenu(makVrv::DtMenu*, bool deleteBuilder = true);
215 
217  virtual void registerMenu(makVrv::DtMenuItem*);
218 
220  virtual void unregisterMenu(makVrv::DtMenuItem*, bool deleteBuilder = true);
221 
224  virtual void merge(const DtQtMenuAssembler::MenuBuilderMap&);
225 
228  virtual void merge(const DtQtMenuAssembler::MenuItemBuilderMap&);
229 
231  {
232  myMakeChangesTo.push_back(c);
233  }
234 
236  {
237  myMakeChangesTo.clear();
238  }
239 
240  virtual QMenuBar* menuBar()
241  {
242  if (myLocalOnly) return 0;
244  }
245 
246  virtual QWidget* menuWindow()
247  {
248  if (myLocalOnly) return 0;
250  }
251 
254  {
255  myCreateSubMenusForMissingMenus = b;
256  }
257 
258  virtual void assembleMenu(const makVrv::DtMenuPath& menuPath);
259 
260  protected:
262  virtual bool fixMenuPath(const makVrv::DtMenuPath& menuPath, DtSubMenuConfiguration& configuration, bool checkOnly = false) const;
263 
264  protected:
266  std::vector<makVrv::DtQtMenuAssembler*> myMakeChangesTo;
271  };
272 
275  {
276  public:
277 
279  DtConfigurableMenu(makVrv::DtDe&, const std::string& className);
280 
282  virtual ~DtConfigurableMenu();
283 
286  {
287  return myConfiguration;
288  }
289 
292  {
293  return myAssembler;
294  }
295 
299  virtual void registerMenu(makVrv::DtMenu* customMenu);
300 
304  virtual void registerMenuItem(makVrv::DtMenuItem* customMenuItem);
305 
306  virtual void createSimpleMenu(std::string menuText, makVrv::DtMenuPath menuIdPath, int weight = -1);
307  virtual void createSimpleMenuAfter(std::string menuText, makVrv::DtMenuPath menuIdPath, makVrv::DtMenuPath afterIdPath);
308  virtual void createSimpleMenuBefore(std::string menuText, makVrv::DtMenuPath menuIdPath, makVrv::DtMenuPath beforeIdPath);
309 
310  virtual void createSimpleMenuItem(std::string itemText, makVrv::DtMenuPath itemIdPath,
311  DtSimpleMenuItemAction* action, void* usr = NULL, int weight = -1);
312  virtual void createSimpleMenuItemAfter(std::string itemText, makVrv::DtMenuPath itemIdPath, makVrv::DtMenuPath afterIdPath,
313  DtSimpleMenuItemAction* action, void* usr = NULL);
314  virtual void createSimpleMenuItemBefore(std::string itemText, makVrv::DtMenuPath itemIdPath, makVrv::DtMenuPath beforeIdPath,
315  DtSimpleMenuItemAction* action, void* usr = NULL);
316 
319  virtual void mergeMenu(makVrv::DtQtMenuAssembler& assembler, makVrv::DtMenuConfiguration& configuration);
320 
323  virtual void mergeMenu(makVrv::DtQtMenuAssembler& assembler);
324 
326  virtual void mergeMenu(makVrv::DtMenuConfiguration& configuration);
327 
328  static bool hasMenuPath(const makVrv::DtMenuConfiguration& menus, const makVrv::DtMenuPath& sourcePath, const std::string& item, makVrv::DtMenuPath& foundPath);
329 
331  boost::signals2::signal<void (DtConfigurableMenu*)> signal_menuRecreated;
332 
333  protected:
334  virtual void initMenuItems(makVrv::DtDe& de);
335 
337  {
338  return myAssembler;
339  }
340 
342  {
343  return myConfiguration;
344  }
345 
347  virtual void createMenuConfiguration(makVrv::DtDe&) {};
348 
349  protected:
350  DtConfigurableMenuAssembler myAssembler;
354 
355  public:
356  boost::signals2::signal<void (QAction*)> signal_validateMenuItem;
357 
358  };
359 }
DtSubToolbarPath & operator=(const DtSubToolbarPath &rhs)
Definition: configurableMenu.h:46
DtSubToolbarPath & operator=(const std::string &rhs)
Definition: configurableMenu.h:58
Definition: DtToolbarPath.h:49
DtSubToolbarPath & operator=(const SubToolbarPathBuilder &rhs)
Definition: configurableMenu.h:52
DtSubMenuConfiguration & configuration()
Definition: configurableMenu.h:341
const std::string & path() const
Definition: DtToolbarPath.h:139
virtual ~DtConfigurableMenuAssembler()
Definition: configurableMenu.h:125
Builder for menu items.
Definition: DtMenuItem.h:26
virtual QWidget * menuWindow()
Virtual base class.
Definition: DtVirtualBaseClass.h:22
bool deleteMenus() const
Definition: configurableMenu.h:100
void setLocalMenuManager(bool b)
Definition: configurableMenu.h:155
void setDeleteMenus(bool b)
Definition: configurableMenu.h:95
DtConfigurationMenuManager()
Definition: configurableMenu.h:83
bool myDeleteMenus
Definition: configurableMenu.h:116
virtual QWidget * menuWindow()
Definition: configurableMenu.h:246
void clear()
Definition: configurableMenu.h:89
virtual DtConfigurableMenuAssembler & menuAssembler()
Returns the assembler for the menu to be used. May be effected directly.
Definition: configurableMenu.h:291
void setLocalOnly(bool b)
Definition: configurableMenu.h:150
boost::signals2::signal< void(QAction *)> signal_validateMenuItem
Definition: configurableMenu.h:356
Subclass for additional functionality needed by VRF.
Definition: subMenuConfiguration.h:73
bool myInitialized
Definition: configurableMenu.h:352
A Qt implementation of a DtMenuAssembler.
Definition: DtQtMenuAssembler.h:29
static SubToolbarPathBuilder path(const std::string &p)
Definition: configurableMenu.h:74
bool myDeleteReferences
Definition: configurableMenu.h:267
Contains makVrv::DtMenuManager class.
DtSubToolbarPath(const makVrv::DtToolbarPath &p)
Definition: configurableMenu.h:43
Contains makVrv::DtQtMenuAssembler class.
void setCreateSubMenusForMissingMenus(bool b)
If true, for any missing sub-menu item, create a menu builder and add it. Default is false...
Definition: configurableMenu.h:253
virtual QMenuBar * menuBar()
Definition: configurableMenu.h:240
Contains makVrv::DtVirtualBaseClass class.
bool myCreateSubMenusForMissingMenus
Definition: configurableMenu.h:269
static DtMenuManager & instance(DtDe &de)
Get an instance of the Menu manager.
makVrv::DtMenuManager & menuManager()
Returns menu manager.
Definition: configurableMenu.h:175
A Menu manager which is how to lookup and find menu/menu items using menu paths.
Definition: DtMenuManager.h:34
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
SubToolbarPathBuilder(const std::string &path)
Definition: configurableMenu.h:37
Definition: configurableMenu.h:34
a Class which represents a menu path.
Definition: DtMenuPath.h:30
#define DT_DLL_VRFGUICOMMONQT
Definition: vrfGuiCommonQt.h:22
bool deleteReferences() const
Definition: configurableMenu.h:145
void( DtSimpleMenuItemAction)(makVrv::DtDe &de, void *usr)
Function that can be called by a DtSimpleMenuItem.
Definition: simpleMenu.h:23
boost::signals2::signal< void(DtConfigurableMenu *)> signal_menuRecreated
Signal sent when this menu is recreated from it&#39;s original creation.
Definition: configurableMenu.h:331
void setDeleteReferences(bool b)
Definition: configurableMenu.h:140
The abstract base menu class.
Definition: DtMenu.h:26
Definition: configurableMenu.h:80
Base class to provide boost signal/slot management.
Contains makVrv::DtToolbarConfiguration class.
a Class which represents a toolbar path.
Definition: DtToolbarPath.h:43
virtual QMenuBar * menuBar()
DtSubToolbarPath(const std::string &p)
Definition: configurableMenu.h:44
virtual ~DtConfigurationMenuManager()
Definition: configurableMenu.h:105
makVrv::DtSignalConnectionManager myConnections
Definition: configurableMenu.h:353
std::vector< makVrv::DtQtMenuAssembler * > myMakeChangesTo
Definition: configurableMenu.h:266
A configuration of the menu layout.
Definition: DtMenuConfiguration.h:27
virtual DtSubMenuConfiguration & menuConfiguration()
Returns the configuration for the menu to be used. May be effected directly.
Definition: configurableMenu.h:285
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtConfigurableMenuAssembler & assembler()
Definition: configurableMenu.h:336
const std::string & path() const
Definition: configurableMenu.h:64
void makeChangesTo(makVrv::DtQtMenuAssembler *c)
Definition: configurableMenu.h:230
const makVrv::DtMenuManager & menuManager() const
Definition: configurableMenu.h:187
Definition: configurableMenu.h:273
DtSubMenuConfiguration myConfiguration
Definition: configurableMenu.h:351
QMenu * findMenu(const makVrv::DtMenuPath &path)
Returns the QMenu object for the given path.
Definition: configurableMenu.h:200
bool myLocalMenuManager
Definition: configurableMenu.h:270
DtConfigurationMenuManager myMenuManager
Definition: configurableMenu.h:265
bool localOnly() const
Definition: configurableMenu.h:167
bool myLocalOnly
Definition: configurableMenu.h:268
void clearMakeChangesTo()
Definition: configurableMenu.h:235
QAction * findMenuItem(const makVrv::DtMenuPath &path)
Definition: configurableMenu.h:205
static SubToolbarPathBuilder path(const makVrv::DtToolbarPath &p)
Definition: configurableMenu.h:69
Definition: configurableMenu.h:31
Used by menu classes to modify menu registrations in a menu.
Definition: configurableMenu.h:120

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)