VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfTaskSetMenu.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 #include <vrfutil/rwUUID.h>
14 
15 #include <vrvCoreQt/DtMenuItem.h>
18 #include <vrvCore/DtStateView.h>
19 #include <vrvCore/DtEntityState.h>
20 
21 #include <QtWidgets/QAction>
22 
23 class QEvent;
24 class DtSetDataRequest;
25 class DtSimTask;
26 class QToolBar;
27 
28 namespace makVrv
29 {
30  class DtSimEntry;
31 }
32 
33 namespace makVrf
34 {
35  class DtVrfBackendState;
36  class DtVrfTaskSetMenu;
37  class DtScriptedTaskConfigurableMenu;
38  class DtTaskSetDialogInterface;
39  class DtVrfTaskSetAction;
40 
48  {
49  Q_OBJECT
50 
51  public:
55  DtVrfTaskSetMenuItem(const std::string&, makVrv::DtDe&, bool addToolbarItem = true);
56 
58  virtual ~DtVrfTaskSetMenuItem();
59 
60  protected:
71  virtual QAction* registerMenuItem(const QString& title, QWidget* parent, int iAction, const QString& iconBaseName);
72 
74  virtual void on_triggered();
75 
78  virtual DtVrfTaskSetAction* createAction(QWidget* parent);
79 
80  protected:
82  };
83 
86  {
87  public:
89  virtual ~DtVrfTaskSetActionCreator();
90 
92  static DtVrfTaskSetActionCreator& instance(makVrv::DtDe& de);
93  static void registerInstance(makVrv::DtDe&, DtVrfTaskSetActionCreator*);
94 
95  virtual DtVrfTaskSetAction* createAction(makVrv::DtDe&, QWidget* parent);
96  };
97 
105  {
106  Q_OBJECT
107 
108  public:
112 
114  virtual ~DtVrfTaskSetAction();
115 
118  void setParentMenu(DtVrfTaskSetMenu* p)
119  {
120  myParentMenu = p;
121  }
122 
125  DtVrfTaskSetMenu* parentMenu()
126  {
127  return myParentMenu;
128  }
129 
130  public:
134  virtual void slot_onSendSetRequest(std::vector<DtUUID> names, const DtSetDataRequest&);
135 
140  boost::signal<void (std::vector<DtUUID> names, const DtSetDataRequest&)> signal_sendSetRequest;
141 
145  virtual void slot_onSendTaskRequest(std::vector<DtUUID> names, const DtSimTask&);
146 
151  boost::signal<void (std::vector<DtUUID> names, const DtSimTask&)> signal_sendTaskRequest;
152 
160  boost::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
161  const std::vector<makVrv::DtSimEntry*>&, bool)> signal_createTaskSetDialog;
162 
163  public:
166  virtual void on_triggered();
167 
168  protected:
171  };
172 
180  {
181  Q_OBJECT
182 
183  public:
184 
186  DtVrfTaskSetMenu(const std::string& className, const QString& title, int flags, QWidget* parent, makVrv::DtDe&,
187  const DtSubMenuConfiguration& c);
188 
190  virtual ~DtVrfTaskSetMenu();
191 
192  virtual void setValidate(bool b);
193 
195  virtual void setShowAllItems(bool b);
196 
202  virtual void setPartOfPlanDialog(int b);
203  virtual void setEntitySet(const makVrv::DtSelectionManager::IdSet& set);
204  virtual void setMenuItemValidation(bool b);
205 
208  virtual void setHideDisabledItem(bool yesNo);
209 
211  virtual void setSignalDialogCreation(bool b);
212 
213  bool signalDialogCreation() const
214  {
215  return mySignalDialogCreation;
216  }
217 
218  virtual void setValidationsDisabled(bool);
219  bool validationsDisabled() const
220  {
221  return myValidationsDisabled;
222  }
223 
226  virtual void setSignalTaskSetRequests(bool b);
227 
228  bool signalTaskSetRequests() const
229  {
230  return mySignalTaskSetRequests;
231  }
232 
233  int partOfPlanDialog() const
234  {
235  return myPartOfPlanDialog;
236  }
237 
238  const makVrv::DtSelectionManager::IdSet& entitySet() const
239  {
240  return myEntitySet;
241  }
242 
244  virtual void setAlwaysStartAsEnabled(bool b);
245 
246  bool alwaysStartAsEnabled() const
247  {
248  return myAlwaysStartAsEnabled;
249  }
250 
252  void setValidateIfNoPendingRequests(bool b)
253  {
254  myValidateIfNoPendingRequests = b;
255  }
256 
257  bool validateIfNoPendingRequests() const
258  {
259  return myValidateIfNoPendingRequests;
260  }
261 
263  virtual makVrv::DtSelectionManager::IdSet selectionsToUseForTaskSetDialog() const;
264 
266  const makVrv::DtSelectionManager::IdSet& validatingFor() const
267  {
268  return myValidatedFor;
269  }
270 
271  void setParentMenu(DtVrfTaskSetMenu* p)
272  {
273  myParentMenu = p;
274  }
275 
276  DtVrfTaskSetMenu* parentMenu()
277  {
278  return myParentMenu;
279  }
280 
282  virtual void clearMenu();
283 
287  virtual bool updateSubMenuVisibilityState(QMenu*,bool hasRadio = true);
288 
289  typedef std::map<int, std::set<QAction*> > TaskActions;
290 
291  const TaskActions& taskActions() { return myTaskSetActions; };
292 
293  virtual std::set<QAction*> actionsThatSupport(int) const;
294 
297  virtual void setMenuProxy(DtScriptedTaskConfigurableMenu*);
298  virtual DtScriptedTaskConfigurableMenu* menuProxy();
299 
300  virtual const char* supportedToolbar() const = 0;
301  virtual const char* supportedMenu() const = 0;
302  virtual const DtSubMenuConfiguration& defaultMenuConfiguration() const = 0;
303  virtual const makVrv::DtQtMenuAssembler::MenuBuilderMap& defaultMenuBuilderMap() const = 0;
304  virtual const makVrv::DtQtMenuAssembler::MenuItemBuilderMap& defaultMenuItemBuilderMap() const = 0;
305  virtual void recreateMenu() = 0;
306  virtual DtScriptedTaskConfigurableMenu* mainMenuInstance() = 0;
307 
309  virtual void editingDialog(DtTaskSetDialogInterface*);
310 
311  DtTaskSetDialogInterface* currentDialog() { return myCurrentDialog; };
312 
314  virtual bool hasSupportFor(const DtSetMessageType&) const;
315 
317  virtual bool hasSupportFor(const DtSimTaskMessageType&) const;
318 
320  virtual bool hasSupportForActionType(int) const;
321 
322  public:
323  boost::signal<void (std::vector<DtUUID> names, const DtSetDataRequest&)> signal_sendSetRequest;
324  boost::signal<void (std::vector<DtUUID> names, const DtSimTask&)> signal_sendTaskRequest;
325  boost::signal<void (QAction*)> signal_validateMenuItem;
326  boost::signal<void ()> signal_menuValidated;
327 
329  boost::signal<void (DtTaskSetDialogInterface*)> signal_dialogCreated;
330 
333  boost::signal<void ()> signal_dialogDestroyed;
334 
335  virtual void slot_sendSetRequest(std::vector<DtUUID> names, const DtSetDataRequest& s);
336  virtual void slot_sendTaskRequest(std::vector<DtUUID> names, const DtSimTask& s);
337 
339  virtual void slot_createTaskSetDialog(int menuItemType, QWidget*, DtVrfTaskSetAction*,
340  const std::vector<makVrv::DtSimEntry*>&, int);
341  boost::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
342  const std::vector<makVrv::DtSimEntry*>&, int, DtVrfTaskSetMenu*)> signal_createTaskSetDialog;
343 
345  virtual void signalCommandDialogCreation(int menuItemType, QWidget* parent, DtVrfTaskSetAction* forAction,
346  const std::vector<makVrv::DtSimEntry*>& data, int partOfPlan);
347  boost::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
348  const std::vector<makVrv::DtSimEntry*>&, int, DtVrfTaskSetMenu*)> signal_createCommandDialog;
349 
352  virtual void mergeChangesFrom(const std::string& menu, const DtSubMenuConfiguration&, DtSubMenuConfiguration&,
353  bool maintainOriginalOrder = false);
354 
355  public slots:
356  virtual void validate();
357 
358  protected slots:
359  virtual void radioMenuDestroyed();
360  virtual void dialogDestroyed();
361 
362  protected:
365  virtual void renameIfDuplicate(QAction*);
366 
369  virtual QString alternateName(QAction*) const;
370 
373  virtual void revalidate(makVrv::DtUniqueID);
374 
375  virtual bool eventFilter(QObject *, QEvent *);
376  virtual void actionAdded(QEvent*);
377  virtual void addTaskAction(QAction*);
378  virtual void rebuildToolbar(const std::string&);
379 
380  virtual void validateMenuItems(int terrainPatchOffset);
381  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
382  virtual bool available(int menu, std::vector<int>& l) const;
383 
386  virtual void availableMenuItems(
387  const makVrv::DtSelectionManager::IdSet& selections,
388  std::vector<int>& available,
389  bool noTaskSetValueMeansAll);
390 
391  virtual bool shouldAddAsPartOfMenu(const QList<QAction*>& acts, QAction* toMatch) const;
392 
395  virtual std::vector<DtUUID> whoShouldITask(const std::vector<DtUUID>& name, const DtSimTask& newTask);
396 
397  virtual void destroyActions(const QList<QAction*>& actions);
398 
399  virtual void stateRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
400 
405  virtual void setupMenu(const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration(),
406  const makVrv::DtToolbarConfiguration& initialCreateToolbarConfiguration = makVrv::DtToolbarConfiguration(),
407  bool useGlobalMenuManager = false, bool recreateToolbars = false);
408 
409  protected:
419  std::vector<DtVrfTaskSetMenu*> myRadioMenus;
421  std::string myClassName;
433  };
434 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)