VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
createMenu.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #if !defined(Q_MOC_RUN)
20 
22 
23 #include <vrvCoreQt/DtMenu.h>
24 #endif
25 
26 #include <QtCore/QObject>
27 #include <QtWidgets/QMenu>
28 
29 #include <matrix/vlVector.h>
30 
31 namespace makVrv
32 {
33  class DtDe;
34  class DtQtMenuAssembler;
35  class DtMenuConfiguration;
36 };
37 
38 class QAction;
39 class QActionGroup;
40 class DtScenarioExplorer;
41 class DtString;
42 class DtFilename;
43 class DtEntityType;
44 
45 namespace makVrf
46 {
47  class DtVrfBackendState;
48  class DtVrfMenu;
49  class DtCreateMenu;
50  class DtEntityMapperKey;
51 
53  {
59  };
60 
61 
68  {
69  Q_OBJECT
70 
71  public:
72  typedef std::map<std::string, QAction*> MappedActions;
73 
76  DtVrfCreateMenu(makVrv::DtDe&, const QString& name, QWidget* parent = 0, DtVrfMenu* baseCreateMenu = 0,
77  bool useGlobalMenuManager = false, DtCreateMenuFlags = DtCreateMenuCreateAll);
78  virtual ~DtVrfCreateMenu();
79 
84  virtual void setupMenu(DtVrfMenu*, const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration());
85 
88  virtual void setMenuBuilder(DtCreateMenu*);
89 
90  virtual bool signalCreation() const;
91 
94  boost::signals2::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
95  virtual void slot_createObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
96 
98  boost::signals2::signal<void (const DtEntityMapperKey&, int force, const std::string& keywords)> signal_creatingObject;
99 
101  virtual void slot_creationStopped();
102 
104  virtual DtEntityType nameToType(const QString&) const;
105 
107  virtual bool triggerAction(const DtEntityMapperKey& key);
108 
109  virtual const MappedActions& mappedActions() const;
110 
111  protected:
112  virtual void setupConnections();
113 
114  virtual void buildCreationMenu(const DtList& list,
115  DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations,
116  const makVrv::DtMenuPath& rootr);
117 
119  virtual void addAdditionalItems(DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations);
120 
121  virtual void clearMenu();
122 
124  virtual void enableActions(const QList<QAction*>&);
125 
127  virtual void destroyActions(const QList<QAction*>&);
128 
129  virtual bool canCreate(QAction*) const;
130 
131  bool removePaletteItems() const
132  {
133  return ((myMenuFlags & DtCreateMenuRemovePaletteItems) != 0);
134  }
135 
137  {
138  return ((myMenuFlags & DtCreateMenuRemoveExtraCreateItems) != 0);
139  }
140 
143  virtual void slot_createMenuLoaded(const DtScenarioExplorer&);
144 
146  virtual void recreateMenu();
147 
148  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
149 
152  virtual void mergeChangesFrom(const DtSubMenuConfiguration&, DtSubMenuConfiguration&);
153 
155  virtual std::string cleanEntry(const std::string&) const;
156 
158  virtual DtCreateObjectAction* createObjectActionFor(const std::string& menuId, const QString& menuName, const DtEntityMapperKey& key,
159  const std::string& keywords, const std::string& menuIcon, const std::string& toolTip) const;
160 
161  virtual void addMappedActionsFrom(QMenu*);
162 
164  virtual bool updateSubMenuVisibilityState(QMenu*);
165 
166  protected slots:
167  virtual void onCreateObjectFromMenu(const DtEntityMapperKey&, int, const std::string&);
168 
170  virtual void enableMenu();
171 
172  virtual void createMenuDestroyed();
173 
174  protected:
181 
182  typedef std::pair<DtCreateObjectAction*, QAction*> ObjectActionData;
183  typedef std::map<std::string, ObjectActionData> TempObjectActions;
185 
187  };
188 
194  {
195  public:
197  {
199  : before(false)
200  , path(makVrv::DtMenuPath::empty())
201  , related(makVrv::DtMenuPath::empty())
202  {
203  };
204 
205  makVrv::DtMenuPath path;
208  std::string keywords;
209  std::string menuIcon;
210  bool before;
211  };
212 
213  typedef std::vector<AdditionalItem> AdditionalItems;
215 
216  public:
217 
219  DtCreateMenu(makVrv::DtDe&, const QString& createName = DtCreateMenuId);
220 
222  virtual ~DtCreateMenu();
223 
225  virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent);
226 
227  static DtCreateMenu& instance(makVrv::DtDe&);
228 
232  virtual void setUseGlobalMenuManager(bool);
233  virtual bool useGlobalMenuManager() const;
234 
238  static DtCreateMenu* menuInstance(makVrv::DtDe&);
239 
240  virtual DtCreateMenu* newInstance();
241 
244  virtual DtCreateMenu* clone() const;
245 
247  virtual DtCreateMenu* duplicate(QMenu*&, QWidget* parent, DtVrfMenu* menu = 0);
248 
249  void setTearOffsEnabled(bool b)
250  {
251  myTearOffsEnabled = b;
252  }
253 
254  virtual void setBaseCreateMenu(DtVrfMenu*);
255 
257  virtual DtEntityType nameToType(const QString&) const;
258 
260  virtual bool triggerAction(const DtEntityMapperKey& key);
261 
262  bool tearOffsEnabled() const
263  {
264  return myTearOffsEnabled;
265  }
266 
268  virtual void setSignalCreation(bool);
269  bool signalCreation() const
270  {
271  return mySignalCreation;
272  }
273 
276  {
277  return myAdditionalItems;
278  }
279 
281  {
282  return myAdditionalItems;
283  }
284 
286  virtual void setCreateObjectActionCreatorFor(const DtEntityType&, DtCreateObjectActionCreator*);
287 
289  virtual DtCreateObjectActionCreator* createObjectActionCreatorFor(const DtEntityType&) const;
290 
291  const DtVrfCreateMenu::MappedActions& mappedActions() const;
292 
293  virtual DtCreateMenuFlags menuFlags() const
294  {
295  return myMenuFlags;
296  }
297 
298  bool removePaletteItems() const
299  {
300  return ((myMenuFlags & DtCreateMenuRemovePaletteItems) != 0);
301  }
302 
304  {
305  return ((myMenuFlags & DtCreateMenuRemoveExtraCreateItems) != 0);
306  }
307 
310  {
311  myMenuFlags = b;
312  }
313 
314  public:
315  boost::signals2::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
316 
317  protected:
319  virtual void createMenuConfiguration(makVrv::DtDe& de);
320 
321  public:
329  virtual DtSubMenuConfiguration& menuConfiguration();
330 
332  virtual DtConfigurableMenuAssembler& menuAssembler();
333 
334  public:
342  virtual void addItemToCreate(const makVrv::DtMenuPath& path, const DtEntityMapperKey& key,
343  const DtString& keywords = "", const DtString& menuIcon = "");
344 
346  virtual void removeItemToCreate(const makVrv::DtMenuPath&);
347 
349  virtual void addItemToCreateBefore(const makVrv::DtMenuPath& path,
350  const makVrv::DtMenuPath& before, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
351 
353  virtual void addItemToCreateAfter(const makVrv::DtMenuPath& path,
354  const makVrv::DtMenuPath& after, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
355 
356  protected:
357  virtual void slot_onCreateObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
358  virtual void menuRecreated();
359 
360  protected:
362 
366 
368 
372 
375  };
376 
379  {
380  public:
382  virtual ~DtRightClickCreateMenu();
383 
384  protected:
385  virtual QMenu* createMenu( makVrv::DtDe& de, QWidget* parent );
386 
387  protected:
389  };
390 }
Definition: vrfBackendState.h:69
bool removePaletteItems() const
Definition: createMenu.h:131
Definition: entityMapperKey.h:23
Definition: createObjectAction.h:36
AdditionalItems & additionalItems()
Definition: createMenu.h:280
Definition: vrfMenu.h:18
Remove all palette menu items.
Definition: createMenu.h:56
virtual void setMenuFlags(DtCreateMenuFlags b)
When creating the menu, set to true to remove the &quot;Entity Palette...&quot; and other palette related items...
Definition: createMenu.h:309
#define DT_DLL_VRFGUICOREQT
Definition: vrfGuiCoreQt.h:26
DtVrfMenu * myBaseCreateMenu
Definition: createMenu.h:186
Definition: createMenu.h:54
static DtConfigurableMenuAssembler * theMenuAssembler
Variables used to store initial menu configuration.
Definition: createMenu.h:370
class DtScenarioExplorer:
Definition: scenarioExplorer.h:26
makVrv::DtMenuPath related
Definition: createMenu.h:207
DtVrfMenu * myBaseCreateMenu
Definition: createMenu.h:373
virtual DtCreateMenuFlags menuFlags() const
Definition: createMenu.h:293
AdditionalItems myAdditionalItems
Definition: createMenu.h:363
DtCreateMenuFlags myMenuFlags
Definition: createMenu.h:179
bool removeExtraCreateItems() const
Definition: createMenu.h:303
boost::signals2::signal< void(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData &)> signal_createObject
Signal sent when creation manager signals that an item has been created. Only emits this signal if th...
Definition: createMenu.h:94
SMS, palette and other create menu items.
Definition: createMenu.h:55
std::pair< DtCreateObjectAction *, QAction * > ObjectActionData
Definition: createMenu.h:182
Definition: createMenu.h:193
Subclass for additional functionality needed by VRF.
Definition: subMenuConfiguration.h:73
bool tearOffsEnabled() const
Definition: createMenu.h:262
QMenu * myCreateMenu
Definition: createMenu.h:175
std::string menuIcon
Definition: createMenu.h:209
std::string keywords
Definition: createMenu.h:208
bool myUseGlobalMenuManager
Definition: createMenu.h:374
AdditionalItem()
Definition: createMenu.h:198
TempObjectActions myTempObjectActions
Definition: createMenu.h:184
Definition: createMenu.h:196
boost::signals2::signal< void(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData &)> signal_createObject
Definition: createMenu.h:315
DtOrderedEntityTypeList< DtCreateObjectActionCreator * > ObjectActionCreators
Definition: createMenu.h:214
const char DtCreateMenuId[]
Defined for vrfGuiCoreQt/DtCreateMenu.h.
Definition: vrfMenuIds.h:479
const AdditionalItems & additionalItems() const
Returns items that are scheduled to be added to new create menus.
Definition: createMenu.h:275
bool removePaletteItems() const
Definition: createMenu.h:298
void setTearOffsEnabled(bool b)
Definition: createMenu.h:249
std::map< std::string, ObjectActionData > TempObjectActions
Definition: createMenu.h:183
std::map< std::string, QAction * > MappedActions
Definition: createMenu.h:72
ObjectActionCreators myObjectActionCreators
Definition: createMenu.h:365
bool removeExtraCreateItems() const
Definition: createMenu.h:136
bool signalCreation() const
Definition: createMenu.h:269
DtEntityMapperKey key
Definition: createMenu.h:206
Base class for menus that are assembled on an as needed basis.
Definition: selectionEnabledMenu.h:29
std::vector< AdditionalItem > AdditionalItems
Definition: createMenu.h:213
Creator used to register with the DtCreateMenu to create types of object actions. Override this creat...
Definition: createObjectAction.h:144
a Class which represents a menu path. The specific strings are not menu text, but the names used when...
Definition: DtMenuPath.h:27
DtCreateMenu * myCreateMenu
Definition: createMenu.h:388
MappedActions myMappedActions
Definition: createMenu.h:178
Definition: vrfObjectManipulationHandlerBaseClass.h:492
bool myCreating
Definition: createMenu.h:177
Base class to provide boost signal/slot management.
Remove items like Computed Route..., Create Multiple, etc.
Definition: createMenu.h:57
boost::signals2::signal< void(const DtEntityMapperKey &, int force, const std::string &keywords)> signal_creatingObject
Signal sent when an object has started to be created from this menu.
Definition: createMenu.h:98
bool myTearOffsEnabled
Definition: createMenu.h:361
Definition: translator.h:58
A configuration of a menu layout. A menu configuration manages an ordered collection of menu paths th...
Definition: DtMenuConfiguration.h:43
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
DtCreateMenu * myBuilder
Definition: createMenu.h:176
class DtVrfCreateMenu
Definition: createMenu.h:67
DtCreateMenuFlags myMenuFlags
Definition: createMenu.h:367
Definition: configurableMenu.h:273
bool myUseGlobalMenuManager
Definition: createMenu.h:180
bool mySignalCreation
Definition: createMenu.h:364
Used by menu classes to modify menu registrations in a menu.
Definition: configurableMenu.h:120
static DtSubMenuConfiguration * theMenuConfiguration
Definition: createMenu.h:371
bool before
Definition: createMenu.h:210
Class used in right click menu. Returns previously created instance of Create Menu.
Definition: createMenu.h:378
DtCreateMenuFlags
Definition: createMenu.h:52

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)