VR-Forces 4.10 Class Documentation
 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 
62  {
63  Q_OBJECT
64 
65  public:
66  typedef std::map<std::string, QAction*> MappedActions;
67 
70  DtVrfCreateMenu(makVrv::DtDe&, const QString& name, QWidget* parent = 0, DtVrfMenu* baseCreateMenu = 0,
71  bool useGlobalMenuManager = false, DtCreateMenuFlags = DtCreateMenuCreateAll);
72  virtual ~DtVrfCreateMenu();
73 
78  virtual void setupMenu(DtVrfMenu*, const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration());
79 
82  virtual void setMenuBuilder(DtCreateMenu*);
83 
84  virtual bool signalCreation() const;
85 
88  boost::signals2::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
89  virtual void slot_createObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
90 
92  boost::signals2::signal<void (const DtEntityMapperKey&, int force, const std::string& keywords)> signal_creatingObject;
93 
95  virtual void slot_creationStopped();
96 
98  virtual DtEntityType nameToType(const QString&) const;
99 
101  virtual bool triggerAction(const DtEntityMapperKey& key);
102 
103  virtual const MappedActions& mappedActions() const;
104 
105  protected:
106  virtual void setupConnections();
107 
108  virtual void buildCreationMenu(const DtList& list,
109  DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations,
110  const makVrv::DtMenuPath& rootr);
111 
113  virtual void addAdditionalItems(DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations);
114 
115  virtual void clearMenu();
116 
118  virtual void enableActions(const QList<QAction*>&);
119 
121  virtual void destroyActions(const QList<QAction*>&);
122 
123  virtual bool canCreate(QAction*) const;
124 
125  bool removePaletteItems() const
126  {
127  return ((myMenuFlags & DtCreateMenuRemovePaletteItems) != 0);
128  }
129 
131  {
132  return ((myMenuFlags & DtCreateMenuRemoveExtraCreateItems) != 0);
133  }
134 
137  virtual void slot_createMenuLoaded(const DtScenarioExplorer&);
138 
140  virtual void recreateMenu();
141 
142  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
143 
146  virtual void mergeChangesFrom(const DtSubMenuConfiguration&, DtSubMenuConfiguration&);
147 
149  virtual std::string cleanEntry(const std::string&) const;
150 
152  virtual DtCreateObjectAction* createObjectActionFor(const std::string& menuId, const QString& menuName, const DtEntityMapperKey& key,
153  const std::string& keywords, const std::string& menuIcon, const std::string& toolTip) const;
154 
155  virtual void addMappedActionsFrom(QMenu*);
156 
158  virtual bool updateSubMenuVisibilityState(QMenu*);
159 
160  protected slots:
161  virtual void onCreateObjectFromMenu(const DtEntityMapperKey&, int, const std::string&);
162 
164  virtual void enableMenu();
165 
166  virtual void createMenuDestroyed();
167 
168  protected:
175 
176  typedef std::pair<DtCreateObjectAction*, QAction*> ObjectActionData;
177  typedef std::map<std::string, ObjectActionData> TempObjectActions;
179 
181  };
182 
188  {
189  public:
191  {
193  : before(false)
194  , path(makVrv::DtMenuPath::empty())
195  , related(makVrv::DtMenuPath::empty())
196  {
197  };
198 
199  makVrv::DtMenuPath path;
202  std::string keywords;
203  std::string menuIcon;
204  bool before;
205  };
206 
207  typedef std::vector<AdditionalItem> AdditionalItems;
209 
210  public:
211 
213  DtCreateMenu(makVrv::DtDe&, const QString& createName = DtCreateMenuId);
214 
216  virtual ~DtCreateMenu();
217 
219  virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent);
220 
221  static DtCreateMenu& instance(makVrv::DtDe&);
222 
226  virtual void setUseGlobalMenuManager(bool);
227  virtual bool useGlobalMenuManager() const;
228 
232  static DtCreateMenu* menuInstance(makVrv::DtDe&);
233 
234  virtual DtCreateMenu* newInstance();
235 
238  virtual DtCreateMenu* clone() const;
239 
241  virtual DtCreateMenu* duplicate(QMenu*&, QWidget* parent, DtVrfMenu* menu = 0);
242 
243  void setTearOffsEnabled(bool b)
244  {
245  myTearOffsEnabled = b;
246  }
247 
248  virtual void setBaseCreateMenu(DtVrfMenu*);
249 
251  virtual DtEntityType nameToType(const QString&) const;
252 
254  virtual bool triggerAction(const DtEntityMapperKey& key);
255 
256  bool tearOffsEnabled() const
257  {
258  return myTearOffsEnabled;
259  }
260 
262  virtual void setSignalCreation(bool);
263  bool signalCreation() const
264  {
265  return mySignalCreation;
266  }
267 
270  {
271  return myAdditionalItems;
272  }
273 
275  {
276  return myAdditionalItems;
277  }
278 
280  virtual void setCreateObjectActionCreatorFor(const DtEntityType&, DtCreateObjectActionCreator*);
281 
283  virtual DtCreateObjectActionCreator* createObjectActionCreatorFor(const DtEntityType&) const;
284 
285  const DtVrfCreateMenu::MappedActions& mappedActions() const;
286 
287  virtual DtCreateMenuFlags menuFlags() const
288  {
289  return myMenuFlags;
290  }
291 
292  bool removePaletteItems() const
293  {
294  return ((myMenuFlags & DtCreateMenuRemovePaletteItems) != 0);
295  }
296 
298  {
299  return ((myMenuFlags & DtCreateMenuRemoveExtraCreateItems) != 0);
300  }
301 
304  {
305  myMenuFlags = b;
306  }
307 
308  public:
309  boost::signals2::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
310 
311  protected:
313  virtual void createMenuConfiguration(makVrv::DtDe& de);
314 
315  public:
323  virtual DtSubMenuConfiguration& menuConfiguration();
324 
326  virtual DtConfigurableMenuAssembler& menuAssembler();
327 
328  public:
336  virtual void addItemToCreate(const makVrv::DtMenuPath& path, const DtEntityMapperKey& key,
337  const DtString& keywords = "", const DtString& menuIcon = "");
338 
340  virtual void removeItemToCreate(const makVrv::DtMenuPath&);
341 
343  virtual void addItemToCreateBefore(const makVrv::DtMenuPath& path,
344  const makVrv::DtMenuPath& before, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
345 
347  virtual void addItemToCreateAfter(const makVrv::DtMenuPath& path,
348  const makVrv::DtMenuPath& after, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
349 
350  protected:
351  virtual void slot_onCreateObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
352  virtual void menuRecreated();
353 
354  protected:
356 
360 
362 
366 
369  };
370 
373  {
374  public:
376  virtual ~DtRightClickCreateMenu();
377 
378  protected:
379  virtual QMenu* createMenu( makVrv::DtDe& de, QWidget* parent );
380 
381  protected:
383  };
384 }
Definition: vrfBackendState.h:69
bool removePaletteItems() const
Definition: createMenu.h:125
Definition: entityMapperKey.h:23
Definition: createObjectAction.h:36
AdditionalItems & additionalItems()
Definition: createMenu.h:274
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:303
#define DT_DLL_VRFGUICOREQT
Definition: vrfGuiCoreQt.h:26
DtVrfMenu * myBaseCreateMenu
Definition: createMenu.h:180
Definition: createMenu.h:54
static DtConfigurableMenuAssembler * theMenuAssembler
Variables used to store initial menu configuration.
Definition: createMenu.h:364
class DtScenarioExplorer:
Definition: scenarioExplorer.h:26
makVrv::DtMenuPath related
Definition: createMenu.h:201
DtVrfMenu * myBaseCreateMenu
Definition: createMenu.h:367
virtual DtCreateMenuFlags menuFlags() const
Definition: createMenu.h:287
AdditionalItems myAdditionalItems
Definition: createMenu.h:357
DtCreateMenuFlags myMenuFlags
Definition: createMenu.h:173
bool removeExtraCreateItems() const
Definition: createMenu.h:297
boost::signals2::signal< void(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData &)> signal_createObject
Signal sent when creation manager signals that an item has been created.
Definition: createMenu.h:88
SMS, palette and other create menu items.
Definition: createMenu.h:55
std::pair< DtCreateObjectAction *, QAction * > ObjectActionData
Definition: createMenu.h:176
Definition: createMenu.h:187
Subclass for additional functionality needed by VRF.
Definition: subMenuConfiguration.h:73
bool tearOffsEnabled() const
Definition: createMenu.h:256
QMenu * myCreateMenu
Definition: createMenu.h:169
std::string menuIcon
Definition: createMenu.h:203
std::string keywords
Definition: createMenu.h:202
bool myUseGlobalMenuManager
Definition: createMenu.h:368
AdditionalItem()
Definition: createMenu.h:192
TempObjectActions myTempObjectActions
Definition: createMenu.h:178
Definition: createMenu.h:190
boost::signals2::signal< void(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData &)> signal_createObject
Definition: createMenu.h:309
DtOrderedEntityTypeList< DtCreateObjectActionCreator * > ObjectActionCreators
Definition: createMenu.h:208
const char DtCreateMenuId[]
Defined for vrfGuiCoreQt/DtCreateMenu.h.
Definition: vrfMenuIds.h:462
const AdditionalItems & additionalItems() const
Returns items that are scheduled to be added to new create menus.
Definition: createMenu.h:269
bool removePaletteItems() const
Definition: createMenu.h:292
void setTearOffsEnabled(bool b)
Definition: createMenu.h:243
std::map< std::string, ObjectActionData > TempObjectActions
Definition: createMenu.h:177
std::map< std::string, QAction * > MappedActions
Definition: createMenu.h:66
ObjectActionCreators myObjectActionCreators
Definition: createMenu.h:359
bool removeExtraCreateItems() const
Definition: createMenu.h:130
bool signalCreation() const
Definition: createMenu.h:263
DtEntityMapperKey key
Definition: createMenu.h:200
Base class for menus that are assembled on an as needed basis.
Definition: selectionEnabledMenu.h:29
std::vector< AdditionalItem > AdditionalItems
Definition: createMenu.h:207
Creator used to register with the DtCreateMenu to create types of object actions. ...
Definition: createObjectAction.h:144
a Class which represents a menu path.
Definition: DtMenuPath.h:27
DtCreateMenu * myCreateMenu
Definition: createMenu.h:382
MappedActions myMappedActions
Definition: createMenu.h:172
Definition: vrfObjectManipulationHandlerBaseClass.h:485
bool myCreating
Definition: createMenu.h:171
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:92
bool myTearOffsEnabled
Definition: createMenu.h:355
Definition: translator.h:58
A configuration of the menu layout.
Definition: DtMenuConfiguration.h:24
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtCreateMenu * myBuilder
Definition: createMenu.h:170
Definition: createMenu.h:61
DtCreateMenuFlags myMenuFlags
Definition: createMenu.h:361
Definition: configurableMenu.h:273
bool myUseGlobalMenuManager
Definition: createMenu.h:174
bool mySignalCreation
Definition: createMenu.h:358
Used by menu classes to modify menu registrations in a menu.
Definition: configurableMenu.h:120
static DtSubMenuConfiguration * theMenuConfiguration
Definition: createMenu.h:365
bool before
Definition: createMenu.h:204
Class used in right click menu. Returns previously created instance of Create Menu.
Definition: createMenu.h:372
DtCreateMenuFlags
Definition: createMenu.h:52

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)