VR-Forces 5.0.3 Developer's Guide
 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 
8 #if !defined(Q_MOC_RUN)
12 #include <vrfutil/rwUUID.h>
16 #include <vrvCoreQt/DtMenuItem.h>
20 #include <vrvCore/DtStateView.h>
21 #include <vrvCore/DtEntityState.h>
22 #endif
23 #include <boost/signals2.hpp>
24 
25 #include <QtWidgets/QAction>
26 
27 class QEvent;
28 class DtSimTask;
29 class QToolBar;
30 
31 namespace makVrv
32 {
33  class DtSimEntry;
34 }
35 
36 namespace makVrf
37 {
38  class DtVrfBackendState;
39  class DtVrfTaskSetMenu;
40  class DtScriptedTaskConfigurableMenu;
41  class DtTaskSetDialogInterface;
42  class DtVrfTaskSetAction;
43  class DtCommandAssignmentWidgetInterface;
44 
52  {
53  Q_OBJECT
54 
55  public:
56  enum MenuType
57  {
58  TaskMenu = 1,
59  SetMenu = 2
60  };
61 
63  DtVrfTaskSetMenu(const std::string& className, const QString& title, int flags, QWidget* parent, makVrv::DtDe&,
64  const DtSubMenuConfiguration& c);
65 
67  virtual ~DtVrfTaskSetMenu();
68 
69  virtual void setValidate(bool b);
70 
72  virtual void setShowAllItems(bool b);
73 
80  virtual void setPartOfPlanDialog(int b);
81  virtual void setEntitySet(const makVrv::DtSelectionManager::IdSet& set);
82  virtual void setMenuItemValidation(bool b);
83 
86  virtual void setHideDisabledItem(bool yesNo);
87 
89  virtual void setSignalDialogCreation(bool b);
90 
91  bool signalDialogCreation() const
92  {
93  return mySignalDialogCreation;
94  }
95 
96  virtual void setValidationsDisabled(bool);
97  bool validationsDisabled() const
98  {
99  return myValidationsDisabled;
100  }
101 
104  virtual void setSignalTaskSetRequests(bool b);
105 
107  {
108  return mySignalTaskSetRequests;
109  }
110 
111  int partOfPlanDialog() const
112  {
113  return myPartOfPlanDialog;
114  }
115 
116  virtual bool hasPendingRequests() const;
117 
119  {
120  return myEntitySet;
121  }
122 
124  virtual MenuType menuType() const = 0;
125 
127  virtual void setAlwaysStartAsEnabled(bool b);
128 
129  bool alwaysStartAsEnabled() const
130  {
131  return myAlwaysStartAsEnabled;
132  }
133 
136  {
137  myValidateIfNoPendingRequests = b;
138  }
139 
141  {
142  return myValidateIfNoPendingRequests;
143  }
144 
146  virtual makVrv::DtSelectionManager::IdSet selectionsToUseForTaskSetDialog() const;
147 
149  {
150  myParentMenu = p;
151  }
152 
154  {
155  return myParentMenu;
156  }
157 
159  virtual void clearMenu();
160 
164  virtual bool updateSubMenuVisibilityState(QMenu*,bool hasRadio = true);
165 
166  typedef std::map<int, std::set<QAction*> > TaskActions;
167 
168  const TaskActions& taskActions() { return myTaskSetActions; };
169 
170  virtual void filterByTaskCategory(const DtString&);
171  virtual void removeFilterByTaskCategory(const DtString&);
172  const std::set<DtString>& filterByTaskCategories() const
173  {
174  return myFilterByTaskCategories;
175  }
176 
177  virtual std::set<QAction*> actionsThatSupport(int) const;
178 
181  virtual void setMenuProxy(DtScriptedTaskConfigurableMenu*);
182  virtual DtScriptedTaskConfigurableMenu* menuProxy();
183 
184  virtual const char* supportedToolbar() const = 0;
185  virtual const char* supportedMenu() const = 0;
186  virtual const DtSubMenuConfiguration& defaultMenuConfiguration() const = 0;
187  virtual const makVrv::DtQtMenuAssembler::MenuBuilderMap& defaultMenuBuilderMap() const = 0;
188  virtual const makVrv::DtQtMenuAssembler::MenuItemBuilderMap& defaultMenuItemBuilderMap() const = 0;
189  virtual void recreateMenu() = 0;
190  virtual DtScriptedTaskConfigurableMenu* mainMenuInstance() = 0;
191 
192  virtual void sortMenu();
193 
195  virtual void editingDialog(DtTaskSetDialogInterface*);
196 
197  DtTaskSetDialogInterface* currentDialog() { return myCurrentDialog; };
198 
200  virtual bool hasSupportFor(const DtSetMessageType&) const;
201 
203  virtual bool hasSupportFor(const DtSimTaskMessageType&) const;
204 
206  virtual bool hasSupportForActionType(int) const;
207  virtual void validateMenuItems(int terrainPatchOffset);
208 
209  public:
210  boost::signals2::signal<void (std::vector<DtUUID> names, const DtSetDataRequest&)> signal_sendSetRequest;
211  boost::signals2::signal<void (std::vector<DtUUID> names, const DtSimTask&)> signal_sendTaskRequest;
212  boost::signals2::signal<void (QAction*)> signal_validateMenuItem;
213  boost::signals2::signal<void ()> signal_menuValidated;
214  boost::signals2::signal<void ()> signal_menuCleared;
215 
217  boost::signals2::signal<void (DtTaskSetDialogInterface*)> signal_dialogCreated;
218 
221  boost::signals2::signal<void (DtTaskSetDialogInterface*)> signal_dialogDestroyed;
222  boost::signals2::signal<void (DtCommandAssignmentWidgetInterface*)> signal_commandDialogDestroyed;
223 
224  virtual void slot_sendSetRequest(std::vector<DtUUID> names, const DtSetDataRequest& s);
225  virtual void slot_sendTaskRequest(std::vector<DtUUID> names, const DtSimTask& s);
226 
228  virtual void slot_createTaskSetDialog(int menuItemType, QWidget*, DtVrfTaskSetAction*,
229  const std::vector<makVrv::DtSimEntry*>&, int);
230  boost::signals2::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
231  const std::vector<makVrv::DtSimEntry*>&, int, DtVrfTaskSetMenu*)> signal_createTaskSetDialog;
232 
234  virtual void signalCommandDialogCreation(int menuItemType, QWidget* parent, DtVrfTaskSetAction* forAction,
235  const std::vector<makVrv::DtSimEntry*>& data, int partOfPlan);
236  boost::signals2::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
237  const std::vector<makVrv::DtSimEntry*>&, int, DtVrfTaskSetMenu*)> signal_createCommandDialog;
238 
241  virtual void mergeChangesFrom(const std::string& menu, const DtSubMenuConfiguration&, DtSubMenuConfiguration&,
242  bool maintainOriginalOrder = false);
243  virtual makVrv::DtSelectionManager::IdSet selectionToUseToValidate() const;
244 
245  public slots:
246  virtual void validate();
247 
248  protected slots:
249  virtual void radioMenuDestroyed();
250  virtual void dialogDestroyed();
251 
252  protected:
255  virtual void renameIfDuplicate(QAction*);
256 
259  virtual QString alternateName(QAction*) const;
260 
263  virtual void revalidate(makVrv::DtUniqueID);
264 
265  virtual bool eventFilter(QObject *, QEvent *);
266  virtual void actionAdded(QEvent*);
267  virtual void addTaskAction(QAction*);
268  virtual void rebuildToolbar(const std::string&);
269 
270  virtual void slot_taskSetMenuSortChanged(bool);
271 
272  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
273  virtual bool available(int menu, std::set<int>& l) const;
274 
275  virtual bool needsValidation() const;
276 
279  virtual void availableMenuItems(
280  const makVrv::DtSelectionManager::IdSet& selections,
281  std::set<int>& available,
282  bool noTaskSetValueMeansAll);
283 
285  virtual bool isFilteredByTaskCategories(const DtEntityType&, int) const;
286 
287  virtual bool shouldAddAsPartOfMenu(const QList<QAction*>& acts, QAction* toMatch) const;
288 
289  virtual void destroyActions(const QList<QAction*>& actions);
290 
291  virtual void stateRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
292 
294  //
297  virtual void setupMenu(const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration(),
298  const makVrv::DtToolbarConfiguration& initialCreateToolbarConfiguration = makVrv::DtToolbarConfiguration(),
299  bool useGlobalMenuManager = false, bool recreateToolbars = false);
300 
301  protected:
311  std::vector<DtVrfTaskSetMenu*> myRadioMenus;
313  std::string myClassName;
325  std::set<DtString> myFilterByTaskCategories;
326  int myFlags;
327  };
328 
330  {
331  public:
332  DtMenuReadyMenuManager() : makVrv::DtMenuManager()
333  {
334  }
335 
336  void clear()
337  {
338  myMenuItems.clear();
339  myMenus.clear();
340  }
341  };
342 
345  {
346  public:
347  DtMenuReadyMenuAssembler(makVrv::DtDe&, QWidget*, QMenuBar*);
348 
350  {
351  myMenuManager.clear();
352 
353  myMenuBuilders.clear();
354  myMenuItemBuilders.clear();
355  }
356 
357  virtual void unregisterMenu(const std::string& s)
358  {
359  makVrv::DtMenu* b = menuBuilder(s);
360 
361  if (b)
362  {
363  MenuBuilderMap::iterator iter = myMenuBuilders.begin();
364 
365  while (iter != myMenuBuilders.end())
366  {
367  if (iter->second == b)
368  {
369  myMenuBuilders.erase(iter);
370  }
371  ++iter;
372  }
373  }
374  }
375 
377  QMenuBar* menuBar()
378  {
379  return myMenuBar;
380  }
381 
383  virtual QWidget* menuWindow();
384 
386  virtual makVrv::DtMenuManager& menuManager();
387 
390  {
391  return myMenuManager.findMenu(path);
392  }
393 
394  protected:
395  QWidget* myMainWindow;
396  QMenuBar* myMenuBar;
398  };
399 }
bool myConnectedForValidate
Definition: vrfTaskSetMenu.h:315
Definition: vrfBackendState.h:69
bool myHideDisabledItems
Definition: vrfTaskSetMenu.h:314
Definition: vrfTaskSetMenu.h:51
bool mySignalDialogCreation
Definition: vrfTaskSetMenu.h:310
boost::unordered_map< std::string, DtMenuItem * > MenuItemBuilderMap
Definition: DtQtMenuAssembler.h:31
TaskActions myTaskSetActions
Definition: vrfTaskSetMenu.h:302
boost::signals2::signal< void()> signal_menuCleared
Definition: vrfTaskSetMenu.h:214
boost::signals2::signal< void(DtTaskSetDialogInterface *)> signal_dialogDestroyed
Signal sent when the current editing dialog is destroyed. Will not be sent if this menu is being dest...
Definition: vrfTaskSetMenu.h:221
int myFlags
Definition: vrfTaskSetMenu.h:326
int partOfPlanDialog() const
Definition: vrfTaskSetMenu.h:111
Definition: vrfTaskSetMenu.h:329
QWidget * myMainWindow
Definition: vrfTaskSetMenu.h:395
boost::signals2::signal< void(QAction *)> signal_validateMenuItem
Definition: vrfTaskSetMenu.h:212
bool alwaysStartAsEnabled() const
Definition: vrfTaskSetMenu.h:129
bool myRecreateMenuOnSelectionChange
Definition: vrfTaskSetMenu.h:319
bool signalTaskSetRequests() const
Definition: vrfTaskSetMenu.h:106
const TaskActions & taskActions()
Definition: vrfTaskSetMenu.h:168
Definition: taskSetDialogInterface.h:84
Contains makVrv:DtSelectionManager class.
Contains makVrv::DtStateView class.
std::map< int, std::set< QAction * > > TaskActions
Definition: vrfTaskSetMenu.h:166
Subclass for additional functionality needed by VRF.
Definition: subMenuConfiguration.h:73
Contains the DtUUID class declaration.
boost::signals2::signal< void(DtTaskSetDialogInterface *)> signal_dialogCreated
Signal emitted when task/set dialog is created the myCurrentDialog will hold this dialog...
Definition: vrfTaskSetMenu.h:217
A Qt implementation of a DtMenuAssembler.
Definition: DtQtMenuAssembler.h:26
makVrv::DtSelectionManager::IdSet myEntitySet
Definition: vrfTaskSetMenu.h:303
void clear()
Definition: vrfTaskSetMenu.h:336
std::set< DtString > myFilterByTaskCategories
Definition: vrfTaskSetMenu.h:325
void setValidateIfNoPendingRequests(bool b)
Validate even if there are prending requests. Default is true.
Definition: vrfTaskSetMenu.h:135
QMenuBar * myMenuBar
Definition: vrfTaskSetMenu.h:396
QMenuBar * menuBar()
If main menu, returns menu bar to add menu to.
Definition: vrfTaskSetMenu.h:377
DtTaskSetDialogInterface * myCurrentDialog
Definition: vrfTaskSetMenu.h:321
Contains makVrv::DtMenuManager class.
bool validateIfNoPendingRequests() const
Definition: vrfTaskSetMenu.h:140
DtSubMenuConfiguration myConfiguration
Definition: vrfTaskSetMenu.h:320
bool myValidateIfNoPendingRequests
Definition: vrfTaskSetMenu.h:323
Contains makVrv::DtQtMenuAssembler class.
bool myHasBeenValidatedOnce
Definition: vrfTaskSetMenu.h:324
const makVrv::DtSelectionManager::IdSet & entitySet() const
Definition: vrfTaskSetMenu.h:118
boost::signals2::signal< void(int menuItemType, QWidget *, DtVrfTaskSetAction *, const std::vector< makVrv::DtSimEntry * > &, int, DtVrfTaskSetMenu *)> signal_createTaskSetDialog
Definition: vrfTaskSetMenu.h:231
DtSetDataRequest is an abstract base class from which real setDataRequests can derive. It manages the read/write capability; derived classes need only use and register read/writatble data types for derived information.
Definition: setDataRequest.h:41
bool myMenuItemValidation
Definition: vrfTaskSetMenu.h:307
Contains makVrv::DtVirtualBaseClass class.
bool myAlwaysStartAsEnabled
Definition: vrfTaskSetMenu.h:322
DtMenuReadyMenuManager()
Definition: vrfTaskSetMenu.h:332
bool myUseGlobalMenuManager
Definition: vrfTaskSetMenu.h:318
bool mySignalTaskSetRequests
Definition: vrfTaskSetMenu.h:309
int myPartOfPlanDialog
Definition: vrfTaskSetMenu.h:308
Container class that will create instances of scripted task configurable menu.
Definition: scriptedTaskConfigurableMenu.h:38
boost::unordered_map< std::string, DtMenu * > MenuBuilderMap
Definition: DtQtMenuAssembler.h:30
boost::signals2::signal< void(int menuItemType, QWidget *, DtVrfTaskSetAction *, const std::vector< makVrv::DtSimEntry * > &, int, DtVrfTaskSetMenu *)> signal_createCommandDialog
Definition: vrfTaskSetMenu.h:237
The menu manager can be used to lookup registered QMenu and QAction objects based on their menu paths...
Definition: DtMenuManager.h:38
A menu that validates itself on selection.
Definition: selectionEnabledMenu.h:57
Contains makVrv::DtVrlinkSimulatedEntityState class.
virtual void unregisterMenu(const std::string &s)
Definition: vrfTaskSetMenu.h:357
boost::signals2::signal< void()> signal_menuValidated
Definition: vrfTaskSetMenu.h:213
bool validationsDisabled() const
Definition: vrfTaskSetMenu.h:97
a Class which represents a menu path. The specific strings are not menu text, but the names used when...
Definition: DtMenuPath.h:27
DtVrfTaskSetMenu * myParentMenu
Definition: vrfTaskSetMenu.h:312
virtual ~DtMenuReadyMenuAssembler()
Definition: vrfTaskSetMenu.h:349
std::vector< DtVrfTaskSetMenu * > myRadioMenus
Definition: vrfTaskSetMenu.h:311
DtVrfTaskSetMenu * parentMenu()
Definition: vrfTaskSetMenu.h:153
The abstract base menu class.
Definition: DtMenu.h:23
const std::set< DtString > & filterByTaskCategories() const
Definition: vrfTaskSetMenu.h:172
bool myValidate
Definition: vrfTaskSetMenu.h:304
DtSimTask is an abstract base class from which real tasks can derive. It manages the read/write capab...
Definition: simTask.h:30
MenuType
Definition: vrfTaskSetMenu.h:56
Assembler to use specifically for putting into a widget (not the main menu)
Definition: vrfTaskSetMenu.h:344
DtMenuReadyMenuManager myMenuManager
Definition: vrfTaskSetMenu.h:397
A configuration of the toolbar layout.
Definition: DtToolbarConfiguration.h:25
DtTaskSetDialogInterface * currentDialog()
Definition: vrfTaskSetMenu.h:197
boost::signals2::signal< void(DtCommandAssignmentWidgetInterface *)> signal_commandDialogDestroyed
Definition: vrfTaskSetMenu.h:222
Definition: translator.h:58
A configuration of a menu layout. A menu configuration manages an ordered collection of menu paths th...
Definition: DtMenuConfiguration.h:43
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:70
Contains makVrf::DtTaskSetMenu, makVrf::DtVrfTaskSetAction, and makVrf::DtTaskSetMenuItem class...
Definition: vrfTaskSetAction.h:106
QMenu * findMenu(const makVrv::DtMenuPath &path)
Returns the QMenu for the given path.
Definition: vrfTaskSetMenu.h:389
bool myRecreateToolbars
Definition: vrfTaskSetMenu.h:317
bool myShowAllItems
Definition: vrfTaskSetMenu.h:306
#define DT_DLL_VRFGUITASKSETQT
Definition: vrfGuiTaskSetQt.h:22
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
bool myValidationsDisabled
Definition: vrfTaskSetMenu.h:305
DtScriptedTaskConfigurableMenu * myMenuProxy
Definition: vrfTaskSetMenu.h:316
bool signalDialogCreation() const
Definition: vrfTaskSetMenu.h:91
std::string myClassName
Definition: vrfTaskSetMenu.h:313
void setParentMenu(DtVrfTaskSetMenu *p)
Definition: vrfTaskSetMenu.h:148

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)