VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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:
111  DtVrfTaskSetAction(QWidget* parent, makVrv::DtDe&);
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 
265  void setParentMenu(DtVrfTaskSetMenu* p)
266  {
267  myParentMenu = p;
268  }
269 
270  DtVrfTaskSetMenu* parentMenu()
271  {
272  return myParentMenu;
273  }
274 
276  virtual void clearMenu();
277 
281  virtual bool updateSubMenuVisibilityState(QMenu*,bool hasRadio = true);
282 
283  typedef std::map<int, std::set<QAction*> > TaskActions;
284 
285  const TaskActions& taskActions() { return myTaskSetActions; };
286 
287  virtual std::set<QAction*> actionsThatSupport(int) const;
288 
291  virtual void setMenuProxy(DtScriptedTaskConfigurableMenu*);
292  virtual DtScriptedTaskConfigurableMenu* menuProxy();
293 
294  virtual const char* supportedToolbar() const = 0;
295  virtual const char* supportedMenu() const = 0;
296  virtual const DtSubMenuConfiguration& defaultMenuConfiguration() const = 0;
297  virtual const makVrv::DtQtMenuAssembler::MenuBuilderMap& defaultMenuBuilderMap() const = 0;
298  virtual const makVrv::DtQtMenuAssembler::MenuItemBuilderMap& defaultMenuItemBuilderMap() const = 0;
299  virtual void recreateMenu() = 0;
300  virtual DtScriptedTaskConfigurableMenu* mainMenuInstance() = 0;
301 
302  virtual void sortMenu();
303 
305  virtual void editingDialog(DtTaskSetDialogInterface*);
306 
307  DtTaskSetDialogInterface* currentDialog() { return myCurrentDialog; };
308 
310  virtual bool hasSupportFor(const DtSetMessageType&) const;
311 
313  virtual bool hasSupportFor(const DtSimTaskMessageType&) const;
314 
316  virtual bool hasSupportForActionType(int) const;
317 
318  public:
319  boost::signal<void (std::vector<DtUUID> names, const DtSetDataRequest&)> signal_sendSetRequest;
320  boost::signal<void (std::vector<DtUUID> names, const DtSimTask&)> signal_sendTaskRequest;
321  boost::signal<void (QAction*)> signal_validateMenuItem;
322  boost::signal<void ()> signal_menuValidated;
323 
325  boost::signal<void (DtTaskSetDialogInterface*)> signal_dialogCreated;
326 
329  boost::signal<void ()> signal_dialogDestroyed;
330 
331  virtual void slot_sendSetRequest(std::vector<DtUUID> names, const DtSetDataRequest& s);
332  virtual void slot_sendTaskRequest(std::vector<DtUUID> names, const DtSimTask& s);
333 
335  virtual void slot_createTaskSetDialog(int menuItemType, QWidget*, DtVrfTaskSetAction*,
336  const std::vector<makVrv::DtSimEntry*>&, int);
337  boost::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
338  const std::vector<makVrv::DtSimEntry*>&, int, DtVrfTaskSetMenu*)> signal_createTaskSetDialog;
339 
341  virtual void signalCommandDialogCreation(int menuItemType, QWidget* parent, DtVrfTaskSetAction* forAction,
342  const std::vector<makVrv::DtSimEntry*>& data, int partOfPlan);
343  boost::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
344  const std::vector<makVrv::DtSimEntry*>&, int, DtVrfTaskSetMenu*)> signal_createCommandDialog;
345 
348  virtual void mergeChangesFrom(const std::string& menu, const DtSubMenuConfiguration&, DtSubMenuConfiguration&,
349  bool maintainOriginalOrder = false);
350 
351  public slots:
352  virtual void validate();
353 
354  protected slots:
355  virtual void radioMenuDestroyed();
356  virtual void dialogDestroyed();
357 
358  protected:
361  virtual void renameIfDuplicate(QAction*);
362 
365  virtual QString alternateName(QAction*) const;
366 
369  virtual void revalidate(makVrv::DtUniqueID);
370 
371  virtual bool eventFilter(QObject *, QEvent *);
372  virtual void actionAdded(QEvent*);
373  virtual void addTaskAction(QAction*);
374  virtual void rebuildToolbar(const std::string&);
375 
376  virtual void slot_taskSetMenuSortChanged(bool);
377 
378  virtual void sortMenu(QMenu*);
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 
384  virtual bool needsValidation() const;
385  virtual makVrv::DtSelectionManager::IdSet selectionToUseToValidate() const;
386 
389  virtual void availableMenuItems(
390  const makVrv::DtSelectionManager::IdSet& selections,
391  std::vector<int>& available,
392  bool noTaskSetValueMeansAll);
393 
394  virtual bool shouldAddAsPartOfMenu(const QList<QAction*>& acts, QAction* toMatch) const;
395 
398  virtual std::vector<DtUUID> whoShouldITask(const std::vector<DtUUID>& name, const DtSimTask& newTask);
399 
400  virtual void destroyActions(const QList<QAction*>& actions);
401 
402  virtual void stateRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
403 
408  virtual void setupMenu(const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration(),
409  const makVrv::DtToolbarConfiguration& initialCreateToolbarConfiguration = makVrv::DtToolbarConfiguration(),
410  bool useGlobalMenuManager = false, bool recreateToolbars = false);
411 
412  protected:
422  std::vector<DtVrfTaskSetMenu*> myRadioMenus;
424  std::string myClassName;
436  };
437 }

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)