VR-Forces 4.2 Class Documentation
DtCreateMenu.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 
19 
20 #include <vrvUtil/DtSignalConnectionManager.h>
21 
22 #include <vrvCoreQt/DtMenu.h>
23 
24 #include <QtCore/QObject>
25 #include <QtGui/QMenu>
26 
27 #include <matrix/vlVector.h>
28 
29 namespace makVrv
30 {
31  class DtDe;
32  class DtQtMenuAssembler;
33  class DtMenuConfiguration;
34 };
35 
36 class QAction;
37 class QActionGroup;
38 class DtScenarioExplorer;
39 class DtString;
40 class DtFilename;
41 class DtEntityType;
42 
43 namespace makVrf
44 {
45  class DtVrfBackendState;
46  class DtMenu;
47  class DtCreateMenu;
48  class DtEntityMapperKey;
49 
51  {
52  Q_OBJECT
53 
54  public:
55  typedef std::map<std::string, QAction*> MappedActions;
56 
59  DtVrfCreateMenu(makVrv::DtDe&, const QString& name, QWidget* parent = 0, makVrf::DtMenu* baseCreateMenu = 0,
60  bool useGlobalMenuManager = false);
61  virtual ~DtVrfCreateMenu();
62 
67  virtual void setupMenu(makVrf::DtMenu*, const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration());
68 
71  virtual void setMenuBuilder(DtCreateMenu*);
72 
73  virtual bool signalCreation() const;
74 
77  boost::signal<void (const DtEntityType&, std::string, int, const std::vector<DtVector>&,double, bool, bool )> signal_createObject;
78  virtual void slot_createObject(const DtEntityType&, std::string, int, const std::vector<DtVector>&, double, bool, bool );
79 
81  virtual void slot_creationStopped();
82 
84  virtual DtEntityType nameToType(const QString&) const;
85 
87  virtual bool triggerAction(const DtEntityMapperKey& key);
88 
89  virtual const MappedActions& mappedActions() const;
90 
91  protected:
92  virtual void setupConnections();
93 
94  virtual void buildCreationMenu(const DtList& list,
95  DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations,
96  const makVrv::DtMenuPath& rootr);
97 
99  virtual void addAdditionalItems(DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations);
100 
101  virtual void clearMenu();
102 
104  virtual void enableActions(const QList<QAction*>&);
105 
107  virtual void destroyActions(const QList<QAction*>&);
108 
109  virtual bool canCreate(QAction*) const;
110 
113  virtual void slot_createMenuLoaded(const DtScenarioExplorer&);
114 
116  virtual void recreateMenu();
117 
118  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
119 
122  virtual void mergeChangesFrom(const DtSubMenuConfiguration&, DtSubMenuConfiguration&);
123 
125  virtual std::string cleanEntry(const std::string&) const;
126 
128  virtual DtCreateObjectAction* createObjectActionFor(const std::string& menuId, const QString& menuName, const DtEntityMapperKey& key,
129  const std::string& keywords, const std::string& menuIcon, const std::string& toolTip) const;
130 
131  virtual void addMappedActionsFrom(QMenu*);
132 
134  virtual bool updateSubMenuVisibilityState(QMenu*);
135 
136  protected slots:
137  virtual void onCreateObjectFromMenu(const DtEntityMapperKey&, int, const std::string&);
138 
140  virtual void enableMenu();
141 
142  virtual void createMenuDestroyed();
143 
144  protected:
151 
152  typedef std::pair<DtCreateObjectAction*, QAction*> ObjectActionData;
153  typedef std::map<std::string, ObjectActionData> TempObjectActions;
155 
157  };
158 
164  {
165  public:
167  {
169  : before(false)
170  , path(makVrv::DtMenuPath::empty())
171  , related(makVrv::DtMenuPath::empty())
172  {
173  };
174 
175  makVrv::DtMenuPath path;
177  makVrv::DtMenuPath related;
178  std::string keywords;
179  std::string menuIcon;
180  bool before;
181  };
182 
183  typedef std::vector<AdditionalItem> AdditionalItems;
185 
186  public:
187 
189  DtCreateMenu(makVrv::DtDe&, const QString& createName = DtCreateMenuId);
190 
192  virtual ~DtCreateMenu();
193 
195  virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent);
196 
197  static DtCreateMenu& instance(makVrv::DtDe&);
198 
202  virtual void setUseGlobalMenuManager(bool);
203  virtual bool useGlobalMenuManager() const;
204 
208  static DtCreateMenu* menuInstance(makVrv::DtDe&);
209 
210  virtual DtCreateMenu* newInstance();
211 
214  virtual DtCreateMenu* clone() const;
215 
217  virtual DtCreateMenu* duplicate(QMenu*&, QWidget* parent, makVrf::DtMenu* menu = 0);
218 
219  void setTearOffsEnabled(bool b)
220  {
221  myTearOffsEnabled = b;
222  }
223 
224  virtual void setBaseCreateMenu(makVrf::DtMenu*);
225 
227  virtual DtEntityType nameToType(const QString&) const;
228 
230  virtual bool triggerAction(const DtEntityMapperKey& key);
231 
232  bool tearOffsEnabled() const
233  {
234  return myTearOffsEnabled;
235  }
236 
238  virtual void setSignalCreation(bool);
239  bool signalCreation() const
240  {
241  return mySignalCreation;
242  }
243 
245  const AdditionalItems& additionalItems() const
246  {
247  return myAdditionalItems;
248  }
249 
250  AdditionalItems& additionalItems()
251  {
252  return myAdditionalItems;
253  }
254 
256  virtual void setCreateObjectActionCreatorFor(const DtEntityType&, DtCreateObjectActionCreator*);
257 
259  virtual DtCreateObjectActionCreator* createObjectActionCreatorFor(const DtEntityType&) const;
260 
261  const DtVrfCreateMenu::MappedActions& mappedActions() const;
262 
263  virtual bool removePaletteItems() const
264  {
265  return myRemovePaletteItems;
266  }
267 
269  virtual void setRemovePaletteItems(bool b)
270  {
271  myRemovePaletteItems = b;
272  }
273 
274  public:
275  boost::signal<void (const DtEntityType&, std::string, int, const std::vector<DtVector>&)> signal_createObject;
276 
277  protected:
279  virtual void createMenuConfiguration(makVrv::DtDe& de);
280 
281  public:
289  virtual DtSubMenuConfiguration& menuConfiguration();
290 
292  virtual DtConfigurableMenuAssembler& menuAssembler();
293 
294  public:
302  virtual void addItemToCreate(const makVrv::DtMenuPath& path, const DtEntityMapperKey& key,
303  const DtString& keywords = "", const DtString& menuIcon = "");
304 
306  virtual void removeItemToCreate(const makVrv::DtMenuPath&);
307 
309  virtual void addItemToCreateBefore(const makVrv::DtMenuPath& path,
310  const makVrv::DtMenuPath& before, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
311 
313  virtual void addItemToCreateAfter(const makVrv::DtMenuPath& path,
314  const makVrv::DtMenuPath& after, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
315 
316  protected:
317  virtual void slot_onCreateObject(const DtEntityType&, std::string, int, const std::vector<DtVector>&);
318 
319  protected:
321 
325 
327 
331 
334  };
335 
338  {
339  public:
340  DtRightClickCreateMenu(makVrv::DtDe& de);
341 
342  protected:
343  virtual QMenu* createMenu( makVrv::DtDe& de, QWidget* parent );
344  };
345 }

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)