VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 
20 
22 
23 #include <vrvCoreQt/DtMenu.h>
24 
25 #include <QtCore/QObject>
26 #include <QtWidgets/QMenu>
27 
28 #include <matrix/vlVector.h>
29 
30 namespace makVrv
31 {
32  class DtDe;
33  class DtQtMenuAssembler;
34  class DtMenuConfiguration;
35 };
36 
37 class QAction;
38 class QActionGroup;
39 class DtScenarioExplorer;
40 class DtString;
41 class DtFilename;
42 class DtEntityType;
43 
44 namespace makVrf
45 {
46  class DtVrfBackendState;
47  class DtMenu;
48  class DtCreateMenu;
49  class DtEntityMapperKey;
50 
52  {
58  };
59 
61  {
62  Q_OBJECT
63 
64  public:
65  typedef std::map<std::string, QAction*> MappedActions;
66 
69  DtVrfCreateMenu(makVrv::DtDe&, const QString& name, QWidget* parent = 0, makVrf::DtMenu* baseCreateMenu = 0,
70  bool useGlobalMenuManager = false, DtCreateMenuFlags = DtCreateMenuCreateAll);
71  virtual ~DtVrfCreateMenu();
72 
77  virtual void setupMenu(makVrf::DtMenu*, const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration());
78 
81  virtual void setMenuBuilder(DtCreateMenu*);
82 
83  virtual bool signalCreation() const;
84 
87  boost::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
88  virtual void slot_createObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
89 
91  boost::signal<void (const DtEntityMapperKey&, int force, const std::string& keywords)> signal_creatingObject;
92 
94  virtual void slot_creationStopped();
95 
97  virtual DtEntityType nameToType(const QString&) const;
98 
100  virtual bool triggerAction(const DtEntityMapperKey& key);
101 
102  virtual const MappedActions& mappedActions() const;
103 
104  protected:
105  virtual void setupConnections();
106 
107  virtual void buildCreationMenu(const DtList& list,
108  DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations,
109  const makVrv::DtMenuPath& rootr);
110 
112  virtual void addAdditionalItems(DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations);
113 
114  virtual void clearMenu();
115 
117  virtual void enableActions(const QList<QAction*>&);
118 
120  virtual void destroyActions(const QList<QAction*>&);
121 
122  virtual bool canCreate(QAction*) const;
123 
124  bool removePaletteItems() const
125  {
126  return ((myMenuFlags & DtCreateMenuRemovePaletteItems) != 0);
127  }
128 
129  bool removeExtraCreateItems() const
130  {
131  return ((myMenuFlags & DtCreateMenuRemoveExtraCreateItems) != 0);
132  }
133 
136  virtual void slot_createMenuLoaded(const DtScenarioExplorer&);
137 
139  virtual void recreateMenu();
140 
141  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
142 
145  virtual void mergeChangesFrom(const DtSubMenuConfiguration&, DtSubMenuConfiguration&);
146 
148  virtual std::string cleanEntry(const std::string&) const;
149 
151  virtual DtCreateObjectAction* createObjectActionFor(const std::string& menuId, const QString& menuName, const DtEntityMapperKey& key,
152  const std::string& keywords, const std::string& menuIcon, const std::string& toolTip) const;
153 
154  virtual void addMappedActionsFrom(QMenu*);
155 
157  virtual bool updateSubMenuVisibilityState(QMenu*);
158 
159  protected slots:
160  virtual void onCreateObjectFromMenu(const DtEntityMapperKey&, int, const std::string&);
161 
163  virtual void enableMenu();
164 
165  virtual void createMenuDestroyed();
166 
167  protected:
174 
175  typedef std::pair<DtCreateObjectAction*, QAction*> ObjectActionData;
176  typedef std::map<std::string, ObjectActionData> TempObjectActions;
178 
180  };
181 
187  {
188  public:
190  {
192  : before(false)
193  , path(makVrv::DtMenuPath::empty())
194  , related(makVrv::DtMenuPath::empty())
195  {
196  };
197 
198  makVrv::DtMenuPath path;
201  std::string keywords;
202  std::string menuIcon;
203  bool before;
204  };
205 
206  typedef std::vector<AdditionalItem> AdditionalItems;
208 
209  public:
210 
212  DtCreateMenu(makVrv::DtDe&, const QString& createName = DtCreateMenuId);
213 
215  virtual ~DtCreateMenu();
216 
218  virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent);
219 
220  static DtCreateMenu& instance(makVrv::DtDe&);
221 
225  virtual void setUseGlobalMenuManager(bool);
226  virtual bool useGlobalMenuManager() const;
227 
231  static DtCreateMenu* menuInstance(makVrv::DtDe&);
232 
233  virtual DtCreateMenu* newInstance();
234 
237  virtual DtCreateMenu* clone() const;
238 
240  virtual DtCreateMenu* duplicate(QMenu*&, QWidget* parent, makVrf::DtMenu* menu = 0);
241 
242  void setTearOffsEnabled(bool b)
243  {
244  myTearOffsEnabled = b;
245  }
246 
247  virtual void setBaseCreateMenu(makVrf::DtMenu*);
248 
250  virtual DtEntityType nameToType(const QString&) const;
251 
253  virtual bool triggerAction(const DtEntityMapperKey& key);
254 
255  bool tearOffsEnabled() const
256  {
257  return myTearOffsEnabled;
258  }
259 
261  virtual void setSignalCreation(bool);
262  bool signalCreation() const
263  {
264  return mySignalCreation;
265  }
266 
268  const AdditionalItems& additionalItems() const
269  {
270  return myAdditionalItems;
271  }
272 
273  AdditionalItems& additionalItems()
274  {
275  return myAdditionalItems;
276  }
277 
279  virtual void setCreateObjectActionCreatorFor(const DtEntityType&, DtCreateObjectActionCreator*);
280 
282  virtual DtCreateObjectActionCreator* createObjectActionCreatorFor(const DtEntityType&) const;
283 
284  const DtVrfCreateMenu::MappedActions& mappedActions() const;
285 
286  virtual DtCreateMenuFlags menuFlags() const
287  {
288  return myMenuFlags;
289  }
290 
291  bool removePaletteItems() const
292  {
293  return ((myMenuFlags & DtCreateMenuRemovePaletteItems) != 0);
294  }
295 
296  bool removeExtraCreateItems() const
297  {
298  return ((myMenuFlags & DtCreateMenuRemoveExtraCreateItems) != 0);
299  }
300 
302  virtual void setMenuFlags(DtCreateMenuFlags b)
303  {
304  myMenuFlags = b;
305  }
306 
307  public:
308  boost::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
309 
310  protected:
312  virtual void createMenuConfiguration(makVrv::DtDe& de);
313 
314  public:
322  virtual DtSubMenuConfiguration& menuConfiguration();
323 
325  virtual DtConfigurableMenuAssembler& menuAssembler();
326 
327  public:
335  virtual void addItemToCreate(const makVrv::DtMenuPath& path, const DtEntityMapperKey& key,
336  const DtString& keywords = "", const DtString& menuIcon = "");
337 
339  virtual void removeItemToCreate(const makVrv::DtMenuPath&);
340 
342  virtual void addItemToCreateBefore(const makVrv::DtMenuPath& path,
343  const makVrv::DtMenuPath& before, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
344 
346  virtual void addItemToCreateAfter(const makVrv::DtMenuPath& path,
347  const makVrv::DtMenuPath& after, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
348 
349  protected:
350  virtual void slot_onCreateObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
351  virtual void menuRecreated();
352 
353  protected:
355 
359 
361 
365 
368  };
369 
372  {
373  public:
375  virtual ~DtRightClickCreateMenu();
376 
377  protected:
378  virtual QMenu* createMenu( makVrv::DtDe& de, QWidget* parent );
379 
380  protected:
382  };
383 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)