VR-Forces 4.1 Class Documentation
DtCreateMenu.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 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 
57  DtVrfCreateMenu(makVrv::DtDe&, const QString& name, QWidget* parent = 0, makVrf::DtMenu* baseCreateMenu = 0);
58  virtual ~DtVrfCreateMenu();
59 
64  virtual void setupMenu(makVrf::DtMenu*, const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration());
65 
68  virtual void setMenuBuilder(DtCreateMenu*);
69 
70  virtual bool signalCreation() const;
71 
74  boost::signal<void (const DtEntityType&, std::string, int, const std::vector<DtVector>&,double, bool, bool )> signal_createObject;
75  virtual void slot_createObject(const DtEntityType&, std::string, int, const std::vector<DtVector>&, double, bool, bool );
76 
78  virtual void slot_creationStopped();
79 
81  virtual DtEntityType nameToType(const QString&) const;
82 
84  virtual bool triggerAction(const DtEntityMapperKey& key);
85 
86  virtual const MappedActions& mappedActions() const;
87 
88  protected:
89  virtual void setupConnections();
90 
91  virtual void buildCreationMenu(const DtList& list,
92  DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations,
93  const makVrv::DtMenuPath& rootr);
94 
96  virtual void addAdditionalItems(DtConfigurableMenuAssembler& assemblers, DtSubMenuConfiguration& configurations);
97 
98  virtual void clearMenu();
99 
101  virtual void enableActions(const QList<QAction*>&);
102 
104  virtual void destroyActions(const QList<QAction*>&);
105 
106  virtual bool canCreate(QAction*) const;
107 
110  virtual void slot_createMenuLoaded(const DtScenarioExplorer&);
111 
113  virtual void recreateMenu();
114 
115  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
116 
119  virtual void mergeChangesFrom(const DtSubMenuConfiguration&, DtSubMenuConfiguration&);
120 
122  virtual std::string cleanEntry(const std::string&) const;
123 
125  virtual DtCreateObjectAction* createObjectActionFor(const std::string& menuId, const QString& menuName, const DtEntityMapperKey& key,
126  const std::string& keywords, const std::string& menuIcon, const std::string& toolTip) const;
127 
128  virtual void addMappedActionsFrom(QMenu*);
129 
131  virtual bool updateSubMenuVisibilityState(QMenu*);
132 
133  protected slots:
134  virtual void onCreateObjectFromMenu(const DtEntityMapperKey&, int, const std::string&);
135 
137  virtual void enableMenu();
138 
139  protected:
148 
149  typedef std::pair<DtCreateObjectAction*, QAction*> ObjectActionData;
150  typedef std::map<std::string, ObjectActionData> TempObjectActions;
152 
154  };
155 
157  {
158  public:
160  {
162  : before(false)
163  , path(makVrv::DtMenuPath::empty())
164  , related(makVrv::DtMenuPath::empty())
165  {
166  };
167 
168  makVrv::DtMenuPath path;
171  std::string keywords;
172  std::string menuIcon;
173  bool before;
174  };
175 
176  typedef std::vector<AdditionalItem> AdditionalItems;
178 
179  public:
180 
182  DtCreateMenu(makVrv::DtDe&, const QString& createName = DtCreateMenuId);
183 
185  virtual ~DtCreateMenu();
186 
188  virtual QMenu* createMenu(makVrv::DtDe&, QWidget* parent);
189 
190  static DtCreateMenu& instance(makVrv::DtDe&);
191 
195  static DtCreateMenu* menuInstance(makVrv::DtDe&);
196 
197  virtual DtCreateMenu* newInstance();
198 
201  virtual DtCreateMenu* clone() const;
202 
204  virtual DtCreateMenu* duplicate(QMenu*&, QWidget* parent, makVrf::DtMenu* menu = 0);
205 
206  void setTearOffsEnabled(bool b)
207  {
208  myTearOffsEnabled = b;
209  }
210 
211  virtual void setBaseCreateMenu(makVrf::DtMenu*);
212 
214  virtual DtEntityType nameToType(const QString&) const;
215 
217  virtual bool triggerAction(const DtEntityMapperKey& key);
218 
219  bool tearOffsEnabled() const
220  {
221  return myTearOffsEnabled;
222  }
223 
225  virtual void setSignalCreation(bool);
226  bool signalCreation() const
227  {
228  return mySignalCreation;
229  }
230 
232  const AdditionalItems& additionalItems() const
233  {
234  return myAdditionalItems;
235  }
236 
237  AdditionalItems& additionalItems()
238  {
239  return myAdditionalItems;
240  }
241 
243  virtual void setCreateObjectActionCreatorFor(const DtEntityType&, DtCreateObjectActionCreator*);
244 
246  virtual DtCreateObjectActionCreator* createObjectActionCreatorFor(const DtEntityType&) const;
247 
248  const DtVrfCreateMenu::MappedActions& mappedActions() const;
249 
250  virtual bool removePaletteItems() const
251  {
252  return myRemovePaletteItems;
253  }
254 
256  virtual void setRemovePaletteItems(bool b)
257  {
258  myRemovePaletteItems = b;
259  }
260 
261  public:
262  boost::signal<void (const DtEntityType&, std::string, int, const std::vector<DtVector>&)> signal_createObject;
263 
264  protected:
266  virtual void createMenuConfiguration(makVrv::DtDe& de);
267 
268  public:
276  virtual DtSubMenuConfiguration& menuConfiguration();
277 
279  virtual DtConfigurableMenuAssembler& menuAssembler();
280 
281  public:
289  virtual void addItemToCreate(const makVrv::DtMenuPath& path, const DtEntityMapperKey& key,
290  const DtString& keywords = "", const DtString& menuIcon = "");
291 
293  virtual void removeItemToCreate(const makVrv::DtMenuPath&);
294 
296  virtual void addItemToCreateBefore(const makVrv::DtMenuPath& path,
297  const makVrv::DtMenuPath& before, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
298 
300  virtual void addItemToCreateAfter(const makVrv::DtMenuPath& path,
301  const makVrv::DtMenuPath& after, const DtEntityMapperKey& key, const DtString& keywords = "", const DtString& menuIcon = "");
302 
303  protected:
304  virtual void slot_onCreateObject(const DtEntityType&, std::string, int, const std::vector<DtVector>&);
305 
306  protected:
308 
312 
314 
318 
320  };
321 
324  {
325  public:
327 
328  protected:
329  virtual QMenu* createMenu( makVrv::DtDe& de, QWidget* parent );
330  };
331 }

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)