VR-Forces Development_Version 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 <QtGui/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  virtual void slot_creationStopped();
92 
94  virtual DtEntityType nameToType(const QString&) const;
95 
97  virtual bool triggerAction(const DtEntityMapperKey& key);
98 
99  virtual const MappedActions& mappedActions() const;
100 
101  protected:
102  virtual void setupConnections();
103 
104  virtual void buildCreationMenu(const DtList& list,
105  DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations,
106  const makVrv::DtMenuPath& rootr);
107 
109  virtual void addAdditionalItems(DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations);
110 
111  virtual void clearMenu();
112 
114  virtual void enableActions(const QList<QAction*>&);
115 
117  virtual void destroyActions(const QList<QAction*>&);
118 
119  virtual bool canCreate(QAction*) const;
120 
121  bool removePaletteItems() const
122  {
123  return ((myMenuFlags & DtCreateMenuRemovePaletteItems) != 0);
124  }
125 
126  bool removeExtraCreateItems() const
127  {
128  return ((myMenuFlags & DtCreateMenuRemoveExtraCreateItems) != 0);
129  }
130 
133  virtual void slot_createMenuLoaded(const DtScenarioExplorer&);
134 
136  virtual void recreateMenu();
137 
138  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
139 
142  virtual void mergeChangesFrom(const DtSubMenuConfiguration&, DtSubMenuConfiguration&);
143 
145  virtual std::string cleanEntry(const std::string&) const;
146 
148  virtual DtCreateObjectAction* createObjectActionFor(const std::string& menuId, const QString& menuName, const DtEntityMapperKey& key,
149  const std::string& keywords, const std::string& menuIcon, const std::string& toolTip) const;
150 
151  virtual void addMappedActionsFrom(QMenu*);
152 
154  virtual bool updateSubMenuVisibilityState(QMenu*);
155 
156  protected slots:
157  virtual void onCreateObjectFromMenu(const DtEntityMapperKey&, int, const std::string&);
158 
160  virtual void enableMenu();
161 
162  virtual void createMenuDestroyed();
163 
164  protected:
171 
172  typedef std::pair<DtCreateObjectAction*, QAction*> ObjectActionData;
173  typedef std::map<std::string, ObjectActionData> TempObjectActions;
175 
177  };
178 
184  {
185  public:
187  {
189  : before(false)
190  , path(makVrv::DtMenuPath::empty())
191  , related(makVrv::DtMenuPath::empty())
192  {
193  };
194 
195  makVrv::DtMenuPath path;
198  std::string keywords;
199  std::string menuIcon;
200  bool before;
201  };
202 
203  typedef std::vector<AdditionalItem> AdditionalItems;
205 
206  public:
207 
209  DtCreateMenu(makVrv::DtDe&, const QString& createName = DtCreateMenuId);
210 
212  virtual ~DtCreateMenu();
213 
215  virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent);
216 
217  static DtCreateMenu& instance(makVrv::DtDe&);
218 
222  virtual void setUseGlobalMenuManager(bool);
223  virtual bool useGlobalMenuManager() const;
224 
228  static DtCreateMenu* menuInstance(makVrv::DtDe&);
229 
230  virtual DtCreateMenu* newInstance();
231 
234  virtual DtCreateMenu* clone() const;
235 
237  virtual DtCreateMenu* duplicate(QMenu*&, QWidget* parent, makVrf::DtMenu* menu = 0);
238 
239  void setTearOffsEnabled(bool b)
240  {
241  myTearOffsEnabled = b;
242  }
243 
244  virtual void setBaseCreateMenu(makVrf::DtMenu*);
245 
247  virtual DtEntityType nameToType(const QString&) const;
248 
250  virtual bool triggerAction(const DtEntityMapperKey& key);
251 
252  bool tearOffsEnabled() const
253  {
254  return myTearOffsEnabled;
255  }
256 
258  virtual void setSignalCreation(bool);
259  bool signalCreation() const
260  {
261  return mySignalCreation;
262  }
263 
265  const AdditionalItems& additionalItems() const
266  {
267  return myAdditionalItems;
268  }
269 
270  AdditionalItems& additionalItems()
271  {
272  return myAdditionalItems;
273  }
274 
276  virtual void setCreateObjectActionCreatorFor(const DtEntityType&, DtCreateObjectActionCreator*);
277 
279  virtual DtCreateObjectActionCreator* createObjectActionCreatorFor(const DtEntityType&) const;
280 
281  const DtVrfCreateMenu::MappedActions& mappedActions() const;
282 
283  virtual DtCreateMenuFlags menuFlags() const
284  {
285  return myMenuFlags;
286  }
287 
288  bool removePaletteItems() const
289  {
290  return ((myMenuFlags & DtCreateMenuRemovePaletteItems) != 0);
291  }
292 
293  bool removeExtraCreateItems() const
294  {
295  return ((myMenuFlags & DtCreateMenuRemoveExtraCreateItems) != 0);
296  }
297 
299  virtual void setMenuFlags(DtCreateMenuFlags b)
300  {
301  myMenuFlags = b;
302  }
303 
304  public:
305  boost::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
306 
307  protected:
309  virtual void createMenuConfiguration(makVrv::DtDe& de);
310 
311  public:
319  virtual DtSubMenuConfiguration& menuConfiguration();
320 
322  virtual DtConfigurableMenuAssembler& menuAssembler();
323 
324  public:
332  virtual void addItemToCreate(const makVrv::DtMenuPath& path, const DtEntityMapperKey& key,
333  const DtString& keywords = "", const DtString& menuIcon = "");
334 
336  virtual void removeItemToCreate(const makVrv::DtMenuPath&);
337 
339  virtual void addItemToCreateBefore(const makVrv::DtMenuPath& path,
340  const makVrv::DtMenuPath& before, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
341 
343  virtual void addItemToCreateAfter(const makVrv::DtMenuPath& path,
344  const makVrv::DtMenuPath& after, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
345 
346  protected:
347  virtual void slot_onCreateObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
348  virtual void menuRecreated();
349 
350  protected:
352 
356 
358 
362 
365  };
366 
369  {
370  public:
372  virtual ~DtRightClickCreateMenu();
373 
374  protected:
375  virtual QMenu* createMenu( makVrv::DtDe& de, QWidget* parent );
376 
377  protected:
379  };
380 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)