VR-Forces 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)
13 #include <vrfutil/rwUUID.h>
17 #include <vrvCoreQt/DtMenuItem.h>
21 #endif
22 #include <boost/signals2.hpp>
23 
24 #include <QtWidgets/QAction>
25 
26 class QEvent;
27 class DtSimTask;
28 class QToolBar;
29 
30 namespace makVrv
31 {
32  ;
33 }
34 
35 namespace makVrf
36 {
37  class DtVrfBackendState;
38  class DtVrfTaskSetMenu;
39  class DtScriptedTaskConfigurableMenu;
40  class DtTaskSetDialogInterface;
41  class DtVrfTaskSetAction;
42  class DtCommandAssignmentWidgetInterface;
43 
51  {
52  Q_OBJECT
53 
54  public:
55  enum MenuType
56  {
57  TaskMenu = 1,
58  SetMenu = 2
59  };
60 
62  DtVrfTaskSetMenu(const std::string& className, const QString& title, int flags, QWidget* parent, makVrv::DtDe&,
63  const DtSubMenuConfiguration& c);
64 
66  virtual ~DtVrfTaskSetMenu() override;
67 
68  virtual void setValidate(bool b);
69 
71  virtual void setShowAllItems(bool b);
72 
79  virtual void setPartOfPlanDialog(int b);
80  virtual void setEntitySet(const makVrv::DtSelectionManager::IdSet& set);
81  virtual void setMenuItemValidation(bool b);
82 
85  virtual void setHideDisabledItem(bool yesNo);
86 
88  virtual void setSignalDialogCreation(bool b);
89 
90  virtual void setFlags(int flags);
91 
92  bool signalDialogCreation() const
93  {
94  return mySignalDialogCreation;
95  }
96 
97  virtual void setValidationsDisabled(bool);
98  bool validationsDisabled() const
99  {
100  return myValidationsDisabled;
101  }
102 
105  virtual void setSignalTaskSetRequests(bool b);
106 
108  {
109  return mySignalTaskSetRequests;
110  }
111 
112  int partOfPlanDialog() const
113  {
114  return myPartOfPlanDialog;
115  }
116 
117  virtual bool hasPendingRequests() const;
118 
120  {
121  return myEntitySet;
122  }
123 
125  virtual MenuType menuType() const = 0;
126 
128  virtual void setAlwaysStartAsEnabled(bool b);
129 
130  bool alwaysStartAsEnabled() const
131  {
132  return myAlwaysStartAsEnabled;
133  }
134 
137  {
138  myValidateIfNoPendingRequests = b;
139  }
140 
142  {
143  return myValidateIfNoPendingRequests;
144  }
145 
147  virtual makVrv::DtSelectionManager::IdSet selectionsToUseForTaskSetDialog() const;
148 
150  {
151  myParentMenu = p;
152  }
153 
155  {
156  return myParentMenu;
157  }
158 
160  virtual void clearMenu();
161 
165  virtual bool updateSubMenuVisibilityState(QMenu*, bool hasRadio = true, bool* anyEnabled = nullptr);
166 
167  typedef std::map<int, std::set<QAction*> > TaskActions;
168 
169  const TaskActions& taskActions() { return myTaskSetActions; };
170 
171  virtual void filterByTaskCategory(const DtString&);
172  virtual void removeFilterByTaskCategory(const DtString&);
173  const std::set<DtString>& filterByTaskCategories() const
174  {
175  return myFilterByTaskCategories;
176  }
177 
178  virtual std::set<QAction*> actionsThatSupport(int) const;
179  virtual std::set<QAction*> actionsThatSupport(const std::string&) const;
180 
183  virtual void setMenuProxy(DtScriptedTaskConfigurableMenu*);
184  virtual DtScriptedTaskConfigurableMenu* menuProxy();
185 
186  virtual const char* supportedToolbar() const = 0;
187  virtual const char* supportedMenu() const = 0;
188  virtual const DtSubMenuConfiguration& defaultMenuConfiguration() const = 0;
189  virtual const makVrv::DtQtMenuAssembler::MenuBuilderMap& defaultMenuBuilderMap() const = 0;
190  virtual const makVrv::DtQtMenuAssembler::MenuItemBuilderMap& defaultMenuItemBuilderMap() const = 0;
191  virtual void recreateMenu() = 0;
192  virtual DtScriptedTaskConfigurableMenu* mainMenuInstance() = 0;
193 
194  virtual void sortMenu();
195 
197  virtual void editingDialog(DtTaskSetDialogInterface*);
198 
199  DtTaskSetDialogInterface* currentDialog() { return myCurrentDialog; };
200 
202  virtual bool hasSupportFor(const DtSetMessageType&) const;
203 
205  virtual bool hasSupportFor(const DtSimTaskMessageType&) const;
206 
208  virtual bool hasSupportForActionType(int) const;
209  virtual void validateMenuItems(int terrainPatchOffset) override;
210 
211  public:
212  boost::signals2::signal<void (std::vector<DtUUID> names, const DtSetDataRequest&)> signal_sendSetRequest;
213  boost::signals2::signal<void (std::vector<DtUUID> names, const DtSimTask&)> signal_sendTaskRequest;
214  boost::signals2::signal<void (QAction*)> signal_validateMenuItem;
215  boost::signals2::signal<void ()> signal_menuValidated;
216  boost::signals2::signal<void ()> signal_menuCleared;
217 
219  boost::signals2::signal<void (DtTaskSetDialogInterface*)> signal_dialogCreated;
220 
223  boost::signals2::signal<void (DtTaskSetDialogInterface*)> signal_dialogDestroyed;
224  boost::signals2::signal<void (DtCommandAssignmentWidgetInterface*)> signal_commandDialogDestroyed;
225 
226  virtual void slot_sendSetRequest(std::vector<DtUUID> names, const DtSetDataRequest& s);
227  virtual void slot_sendTaskRequest(std::vector<DtUUID> names, const DtSimTask& s);
228 
230  virtual void slot_createTaskSetDialog(int menuItemType, QWidget*, DtVrfTaskSetAction*,
231  const std::set<makVrv::DtUniqueID>&, int, bool oneClick);
232  boost::signals2::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
233  const std::set<makVrv::DtUniqueID>&, int, DtVrfTaskSetMenu*, bool oneClick)> signal_createTaskSetDialog;
234 
236  virtual void signalCommandDialogCreation(int menuItemType, QWidget* parent, DtVrfTaskSetAction* forAction,
237  const std::set<makVrv::DtUniqueID>& data, int partOfPlan);
238  boost::signals2::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
239  const std::set<makVrv::DtUniqueID>&, int, DtVrfTaskSetMenu*)> signal_createCommandDialog;
240 
243  virtual void mergeChangesFrom(const std::string& menu, const DtSubMenuConfiguration&, DtSubMenuConfiguration&,
244  bool maintainOriginalOrder = false);
245  virtual makVrv::DtSelectionManager::IdSet selectionToUseToValidate() const;
246 
247  public slots:
248  virtual void validate();
249 
250  protected slots:
251  virtual void radioMenuDestroyed();
252  virtual void dialogDestroyed();
253 
254  protected:
257  virtual void renameIfDuplicate(QAction*);
258 
261  virtual QString alternateName(QAction*) const;
262 
265  virtual void revalidate(makVrv::DtUniqueID);
266 
267  virtual bool eventFilter(QObject*, QEvent*) override;
268  virtual void actionAdded(QEvent*);
269  virtual void addTaskAction(QAction*);
270  virtual void rebuildToolbar(const std::string&);
271 
272  virtual void slot_taskSetMenuSortChanged(bool);
273 
274  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
275  virtual bool available(int menu, std::set<int>& l) const;
276 
277  virtual bool needsValidation() const override;
278 
281  virtual void availableMenuItems(
282  const makVrv::DtSelectionManager::IdSet& selections,
283  std::set<int>& available,
284  bool noTaskSetValueMeansAll);
285 
287  virtual bool isFilteredByTaskCategories(const DtEntityType&, int) const;
288 
289  virtual bool shouldAddAsPartOfMenu(const QList<QAction*>& acts, QAction* toMatch) const;
290 
291  virtual void destroyActions(const QList<QAction*>& actions);
292 
293  virtual void stateRemoved(DtSimObjectReference state);
294 
296  //
299  virtual void setupMenu(const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration(),
300  const makVrv::DtToolbarConfiguration& initialCreateToolbarConfiguration = makVrv::DtToolbarConfiguration(),
301  bool useGlobalMenuManager = false, bool recreateToolbars = false);
302 
303  protected:
313  std::vector<DtVrfTaskSetMenu*> myRadioMenus;
315  std::string myClassName;
327  std::set<DtString> myFilterByTaskCategories;
328  int myFlags;
329  };
330 
332  {
333  public:
334  DtMenuReadyMenuManager() : makVrv::DtMenuManager()
335  {
336  }
337 
338  void clear()
339  {
340  myMenuItems.clear();
341  myMenus.clear();
342  }
343  };
344 
347  {
348  public:
349  DtMenuReadyMenuAssembler(makVrv::DtDe&, QWidget*, QMenuBar*);
350 
351  virtual ~DtMenuReadyMenuAssembler() override
352  {
353  myMenuManager.clear();
354 
355  myMenuBuilders.clear();
356  myMenuItemBuilders.clear();
357  }
358 
359  virtual void unregisterMenu(const std::string& s)
360  {
361  makVrv::DtMenu* b = menuBuilder(s);
362 
363  if (b)
364  {
365  MenuBuilderMap::iterator iter = myMenuBuilders.begin();
366 
367  while (iter != myMenuBuilders.end())
368  {
369  if (iter->second == b)
370  {
371  myMenuBuilders.erase(iter);
372  }
373  ++iter;
374  }
375  }
376  }
377 
379  virtual QMenuBar* menuBar() override {
380  return myMenuBar;
381  }
382 
384  virtual QWidget* menuWindow() override;
385 
387  virtual makVrv::DtMenuManager& menuManager() override;
388 
391  {
392  return myMenuManager.findMenu(path);
393  }
394 
395  protected:
396  QWidget* myMainWindow;
397  QMenuBar* myMenuBar;
399  };
400 }
bool myConnectedForValidate
Definition: vrfTaskSetMenu.h:317
Definition: vrfBackendState.h:65
boost::signals2::signal< void(int menuItemType, QWidget *, DtVrfTaskSetAction *, const std::set< makVrv::DtUniqueID > &, int, DtVrfTaskSetMenu *, bool oneClick)> signal_createTaskSetDialog
Definition: vrfTaskSetMenu.h:233
bool myHideDisabledItems
Definition: vrfTaskSetMenu.h:316
Definition: vrfTaskSetMenu.h:50
bool mySignalDialogCreation
Definition: vrfTaskSetMenu.h:312
boost::unordered_map< std::string, DtMenuItem * > MenuItemBuilderMap
Definition: DtQtMenuAssembler.h:31
TaskActions myTaskSetActions
Definition: vrfTaskSetMenu.h:304
boost::signals2::signal< void(int menuItemType, QWidget *, DtVrfTaskSetAction *, const std::set< makVrv::DtUniqueID > &, int, DtVrfTaskSetMenu *)> signal_createCommandDialog
Definition: vrfTaskSetMenu.h:239
virtual QMenuBar * menuBar() override
If main menu, returns menu bar to add menu to.
Definition: vrfTaskSetMenu.h:379
boost::signals2::signal< void()> signal_menuCleared
Definition: vrfTaskSetMenu.h:216
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:223
int myFlags
Definition: vrfTaskSetMenu.h:328
int partOfPlanDialog() const
Definition: vrfTaskSetMenu.h:112
Definition: vrfTaskSetMenu.h:331
QWidget * myMainWindow
Definition: vrfTaskSetMenu.h:396
boost::signals2::signal< void(QAction *)> signal_validateMenuItem
Definition: vrfTaskSetMenu.h:214
bool alwaysStartAsEnabled() const
Definition: vrfTaskSetMenu.h:130
bool myRecreateMenuOnSelectionChange
Definition: vrfTaskSetMenu.h:321
bool signalTaskSetRequests() const
Definition: vrfTaskSetMenu.h:107
const TaskActions & taskActions()
Definition: vrfTaskSetMenu.h:169
Definition: taskSetDialogInterface.h:82
Contains makVrv:DtSelectionManager class.
std::map< int, std::set< QAction * > > TaskActions
Definition: vrfTaskSetMenu.h:167
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:219
A Qt implementation of a DtMenuAssembler.
Definition: DtQtMenuAssembler.h:26
makVrv::DtSelectionManager::IdSet myEntitySet
Definition: vrfTaskSetMenu.h:305
void clear()
Definition: vrfTaskSetMenu.h:338
std::set< DtString > myFilterByTaskCategories
Definition: vrfTaskSetMenu.h:327
void setValidateIfNoPendingRequests(bool b)
Validate even if there are prending requests. Default is true.
Definition: vrfTaskSetMenu.h:136
QMenuBar * myMenuBar
Definition: vrfTaskSetMenu.h:397
DtTaskSetDialogInterface * myCurrentDialog
Definition: vrfTaskSetMenu.h:323
Contains makVrv::DtMenuManager class.
bool validateIfNoPendingRequests() const
Definition: vrfTaskSetMenu.h:141
DtSubMenuConfiguration myConfiguration
Definition: vrfTaskSetMenu.h:322
bool myValidateIfNoPendingRequests
Definition: vrfTaskSetMenu.h:325
Contains makVrv::DtQtMenuAssembler class.
bool myHasBeenValidatedOnce
Definition: vrfTaskSetMenu.h:326
const makVrv::DtSelectionManager::IdSet & entitySet() const
Definition: vrfTaskSetMenu.h:119
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:309
Contains makVrv::DtVirtualBaseClass class.
bool myAlwaysStartAsEnabled
Definition: vrfTaskSetMenu.h:324
DtMenuReadyMenuManager()
Definition: vrfTaskSetMenu.h:334
bool myUseGlobalMenuManager
Definition: vrfTaskSetMenu.h:320
bool mySignalTaskSetRequests
Definition: vrfTaskSetMenu.h:311
int myPartOfPlanDialog
Definition: vrfTaskSetMenu.h:310
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
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
virtual void unregisterMenu(const std::string &s)
Definition: vrfTaskSetMenu.h:359
boost::signals2::signal< void()> signal_menuValidated
Definition: vrfTaskSetMenu.h:215
bool validationsDisabled() const
Definition: vrfTaskSetMenu.h:98
a Class which represents a menu path. The specific strings are not menu text, but the names used when...
Definition: DtMenuPath.h:27
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
DtVrfTaskSetMenu * myParentMenu
Definition: vrfTaskSetMenu.h:314
std::vector< DtVrfTaskSetMenu * > myRadioMenus
Definition: vrfTaskSetMenu.h:313
DtVrfTaskSetMenu * parentMenu()
Definition: vrfTaskSetMenu.h:154
The abstract base menu class.
Definition: DtMenu.h:23
const std::set< DtString > & filterByTaskCategories() const
Definition: vrfTaskSetMenu.h:173
bool myValidate
Definition: vrfTaskSetMenu.h:306
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:55
Assembler to use specifically for putting into a widget (not the main menu)
Definition: vrfTaskSetMenu.h:346
DtMenuReadyMenuManager myMenuManager
Definition: vrfTaskSetMenu.h:398
A configuration of the toolbar layout.
Definition: DtToolbarConfiguration.h:25
DtTaskSetDialogInterface * currentDialog()
Definition: vrfTaskSetMenu.h:199
boost::signals2::signal< void(DtCommandAssignmentWidgetInterface *)> signal_commandDialogDestroyed
Definition: vrfTaskSetMenu.h:224
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:76
Contains makVrf::DtTaskSetMenu, makVrf::DtVrfTaskSetAction, and makVrf::DtTaskSetMenuItem class...
Definition: vrfTaskSetAction.h:108
QMenu * findMenu(const makVrv::DtMenuPath &path)
Returns the QMenu for the given path.
Definition: vrfTaskSetMenu.h:390
bool myRecreateToolbars
Definition: vrfTaskSetMenu.h:319
bool myShowAllItems
Definition: vrfTaskSetMenu.h:308
virtual ~DtMenuReadyMenuAssembler() override
Definition: vrfTaskSetMenu.h:351
#define DT_DLL_VRFGUITASKSETQT
Definition: vrfGuiTaskSetQt.h:22
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
bool myValidationsDisabled
Definition: vrfTaskSetMenu.h:307
DtScriptedTaskConfigurableMenu * myMenuProxy
Definition: vrfTaskSetMenu.h:318
bool signalDialogCreation() const
Definition: vrfTaskSetMenu.h:92
std::string myClassName
Definition: vrfTaskSetMenu.h:315
void setParentMenu(DtVrfTaskSetMenu *p)
Definition: vrfTaskSetMenu.h:149

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)