VR-Forces 4.1.1 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 
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 
160  {
161  public:
163  {
165  : before(false)
166  , path(makVrv::DtMenuPath::empty())
167  , related(makVrv::DtMenuPath::empty())
168  {
169  };
170 
171  makVrv::DtMenuPath path;
174  std::string keywords;
175  std::string menuIcon;
176  bool before;
177  };
178 
179  typedef std::vector<AdditionalItem> AdditionalItems;
181 
182  public:
183 
185  DtCreateMenu(makVrv::DtDe&, const QString& createName = DtCreateMenuId);
186 
188  virtual ~DtCreateMenu();
189 
191  virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent);
192 
193  static DtCreateMenu& instance(makVrv::DtDe&);
194 
198  virtual void setUseGlobalMenuManager(bool);
199  virtual bool useGlobalMenuManager() const;
200 
204  static DtCreateMenu* menuInstance(makVrv::DtDe&);
205 
206  virtual DtCreateMenu* newInstance();
207 
210  virtual DtCreateMenu* clone() const;
211 
213  virtual DtCreateMenu* duplicate(QMenu*&, QWidget* parent, makVrf::DtMenu* menu = 0);
214 
215  void setTearOffsEnabled(bool b)
216  {
217  myTearOffsEnabled = b;
218  }
219 
220  virtual void setBaseCreateMenu(makVrf::DtMenu*);
221 
223  virtual DtEntityType nameToType(const QString&) const;
224 
226  virtual bool triggerAction(const DtEntityMapperKey& key);
227 
228  bool tearOffsEnabled() const
229  {
230  return myTearOffsEnabled;
231  }
232 
234  virtual void setSignalCreation(bool);
235  bool signalCreation() const
236  {
237  return mySignalCreation;
238  }
239 
241  const AdditionalItems& additionalItems() const
242  {
243  return myAdditionalItems;
244  }
245 
246  AdditionalItems& additionalItems()
247  {
248  return myAdditionalItems;
249  }
250 
252  virtual void setCreateObjectActionCreatorFor(const DtEntityType&, DtCreateObjectActionCreator*);
253 
255  virtual DtCreateObjectActionCreator* createObjectActionCreatorFor(const DtEntityType&) const;
256 
257  const DtVrfCreateMenu::MappedActions& mappedActions() const;
258 
259  virtual bool removePaletteItems() const
260  {
261  return myRemovePaletteItems;
262  }
263 
265  virtual void setRemovePaletteItems(bool b)
266  {
267  myRemovePaletteItems = b;
268  }
269 
270  public:
271  boost::signal<void (const DtEntityType&, std::string, int, const std::vector<DtVector>&)> signal_createObject;
272 
273  protected:
275  virtual void createMenuConfiguration(makVrv::DtDe& de);
276 
277  public:
285  virtual DtSubMenuConfiguration& menuConfiguration();
286 
288  virtual DtConfigurableMenuAssembler& menuAssembler();
289 
290  public:
298  virtual void addItemToCreate(const makVrv::DtMenuPath& path, const DtEntityMapperKey& key,
299  const DtString& keywords = "", const DtString& menuIcon = "");
300 
302  virtual void removeItemToCreate(const makVrv::DtMenuPath&);
303 
305  virtual void addItemToCreateBefore(const makVrv::DtMenuPath& path,
306  const makVrv::DtMenuPath& before, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
307 
309  virtual void addItemToCreateAfter(const makVrv::DtMenuPath& path,
310  const makVrv::DtMenuPath& after, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
311 
312  protected:
313  virtual void slot_onCreateObject(const DtEntityType&, std::string, int, const std::vector<DtVector>&);
314 
315  protected:
317 
321 
323 
327 
330  };
331 
334  {
335  public:
337 
338  protected:
339  virtual QMenu* createMenu( makVrv::DtDe& de, QWidget* parent );
340  };
341 }

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)