VR-Forces 4.3 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  {
53  Q_OBJECT
54 
55  public:
56  typedef std::map<std::string, QAction*> MappedActions;
57 
60  DtVrfCreateMenu(makVrv::DtDe&, const QString& name, QWidget* parent = 0, makVrf::DtMenu* baseCreateMenu = 0,
61  bool useGlobalMenuManager = false);
62  virtual ~DtVrfCreateMenu();
63 
68  virtual void setupMenu(makVrf::DtMenu*, const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration());
69 
72  virtual void setMenuBuilder(DtCreateMenu*);
73 
74  virtual bool signalCreation() const;
75 
78  boost::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
79  virtual void slot_createObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
80 
82  virtual void slot_creationStopped();
83 
85  virtual DtEntityType nameToType(const QString&) const;
86 
88  virtual bool triggerAction(const DtEntityMapperKey& key);
89 
90  virtual const MappedActions& mappedActions() const;
91 
92  protected:
93  virtual void setupConnections();
94 
95  virtual void buildCreationMenu(const DtList& list,
96  DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations,
97  const makVrv::DtMenuPath& rootr);
98 
100  virtual void addAdditionalItems(DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations);
101 
102  virtual void clearMenu();
103 
105  virtual void enableActions(const QList<QAction*>&);
106 
108  virtual void destroyActions(const QList<QAction*>&);
109 
110  virtual bool canCreate(QAction*) const;
111 
114  virtual void slot_createMenuLoaded(const DtScenarioExplorer&);
115 
117  virtual void recreateMenu();
118 
119  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
120 
123  virtual void mergeChangesFrom(const DtSubMenuConfiguration&, DtSubMenuConfiguration&);
124 
126  virtual std::string cleanEntry(const std::string&) const;
127 
129  virtual DtCreateObjectAction* createObjectActionFor(const std::string& menuId, const QString& menuName, const DtEntityMapperKey& key,
130  const std::string& keywords, const std::string& menuIcon, const std::string& toolTip) const;
131 
132  virtual void addMappedActionsFrom(QMenu*);
133 
135  virtual bool updateSubMenuVisibilityState(QMenu*);
136 
137  protected slots:
138  virtual void onCreateObjectFromMenu(const DtEntityMapperKey&, int, const std::string&);
139 
141  virtual void enableMenu();
142 
143  virtual void createMenuDestroyed();
144 
145  protected:
152 
153  typedef std::pair<DtCreateObjectAction*, QAction*> ObjectActionData;
154  typedef std::map<std::string, ObjectActionData> TempObjectActions;
156 
158  };
159 
165  {
166  public:
168  {
170  : before(false)
171  , path(makVrv::DtMenuPath::empty())
172  , related(makVrv::DtMenuPath::empty())
173  {
174  };
175 
176  makVrv::DtMenuPath path;
179  std::string keywords;
180  std::string menuIcon;
181  bool before;
182  };
183 
184  typedef std::vector<AdditionalItem> AdditionalItems;
186 
187  public:
188 
190  DtCreateMenu(makVrv::DtDe&, const QString& createName = DtCreateMenuId);
191 
193  virtual ~DtCreateMenu();
194 
196  virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent);
197 
198  static DtCreateMenu& instance(makVrv::DtDe&);
199 
203  virtual void setUseGlobalMenuManager(bool);
204  virtual bool useGlobalMenuManager() const;
205 
209  static DtCreateMenu* menuInstance(makVrv::DtDe&);
210 
211  virtual DtCreateMenu* newInstance();
212 
215  virtual DtCreateMenu* clone() const;
216 
218  virtual DtCreateMenu* duplicate(QMenu*&, QWidget* parent, makVrf::DtMenu* menu = 0);
219 
220  void setTearOffsEnabled(bool b)
221  {
222  myTearOffsEnabled = b;
223  }
224 
225  virtual void setBaseCreateMenu(makVrf::DtMenu*);
226 
228  virtual DtEntityType nameToType(const QString&) const;
229 
231  virtual bool triggerAction(const DtEntityMapperKey& key);
232 
233  bool tearOffsEnabled() const
234  {
235  return myTearOffsEnabled;
236  }
237 
239  virtual void setSignalCreation(bool);
240  bool signalCreation() const
241  {
242  return mySignalCreation;
243  }
244 
246  const AdditionalItems& additionalItems() const
247  {
248  return myAdditionalItems;
249  }
250 
251  AdditionalItems& additionalItems()
252  {
253  return myAdditionalItems;
254  }
255 
257  virtual void setCreateObjectActionCreatorFor(const DtEntityType&, DtCreateObjectActionCreator*);
258 
260  virtual DtCreateObjectActionCreator* createObjectActionCreatorFor(const DtEntityType&) const;
261 
262  const DtVrfCreateMenu::MappedActions& mappedActions() const;
263 
264  virtual bool removePaletteItems() const
265  {
266  return myRemovePaletteItems;
267  }
268 
270  virtual void setRemovePaletteItems(bool b)
271  {
272  myRemovePaletteItems = b;
273  }
274 
275  public:
276  boost::signal<void (const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&)> signal_createObject;
277 
278  protected:
280  virtual void createMenuConfiguration(makVrv::DtDe& de);
281 
282  public:
290  virtual DtSubMenuConfiguration& menuConfiguration();
291 
293  virtual DtConfigurableMenuAssembler& menuAssembler();
294 
295  public:
303  virtual void addItemToCreate(const makVrv::DtMenuPath& path, const DtEntityMapperKey& key,
304  const DtString& keywords = "", const DtString& menuIcon = "");
305 
307  virtual void removeItemToCreate(const makVrv::DtMenuPath&);
308 
310  virtual void addItemToCreateBefore(const makVrv::DtMenuPath& path,
311  const makVrv::DtMenuPath& before, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
312 
314  virtual void addItemToCreateAfter(const makVrv::DtMenuPath& path,
315  const makVrv::DtMenuPath& after, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
316 
317  protected:
318  virtual void slot_onCreateObject(const DtVrfObjectManipulationHandlerBaseClass::ObjectManipulationData&);
319 
320  protected:
322 
326 
328 
332 
335  };
336 
339  {
340  public:
342  virtual ~DtRightClickCreateMenu();
343 
344  protected:
345  virtual QMenu* createMenu( makVrv::DtDe& de, QWidget* parent );
346 
347  protected:
349  };
350 }

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)