VR-Forces 4.10 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 
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 DtCommandAssignmentWidget;
44 
52  {
53  Q_OBJECT
54 
55  public:
56 
58  DtVrfTaskSetMenu(const std::string& className, const QString& title, int flags, QWidget* parent, makVrv::DtDe&,
59  const DtSubMenuConfiguration& c);
60 
62  virtual ~DtVrfTaskSetMenu();
63 
64  virtual void setValidate(bool b);
65 
67  virtual void setShowAllItems(bool b);
68 
75  virtual void setPartOfPlanDialog(int b);
76  virtual void setEntitySet(const makVrv::DtSelectionManager::IdSet& set);
77  virtual void setMenuItemValidation(bool b);
78 
81  virtual void setHideDisabledItem(bool yesNo);
82 
84  virtual void setSignalDialogCreation(bool b);
85 
86  bool signalDialogCreation() const
87  {
88  return mySignalDialogCreation;
89  }
90 
91  virtual void setValidationsDisabled(bool);
92  bool validationsDisabled() const
93  {
94  return myValidationsDisabled;
95  }
96 
99  virtual void setSignalTaskSetRequests(bool b);
100 
102  {
103  return mySignalTaskSetRequests;
104  }
105 
106  int partOfPlanDialog() const
107  {
108  return myPartOfPlanDialog;
109  }
110 
112  {
113  return myEntitySet;
114  }
115 
117  virtual void setAlwaysStartAsEnabled(bool b);
118 
119  bool alwaysStartAsEnabled() const
120  {
121  return myAlwaysStartAsEnabled;
122  }
123 
126  {
127  myValidateIfNoPendingRequests = b;
128  }
129 
131  {
132  return myValidateIfNoPendingRequests;
133  }
134 
136  virtual makVrv::DtSelectionManager::IdSet selectionsToUseForTaskSetDialog() const;
137 
139  {
140  myParentMenu = p;
141  }
142 
144  {
145  return myParentMenu;
146  }
147 
149  virtual void clearMenu();
150 
154  virtual bool updateSubMenuVisibilityState(QMenu*,bool hasRadio = true);
155 
156  typedef std::map<int, std::set<QAction*> > TaskActions;
157 
158  const TaskActions& taskActions() { return myTaskSetActions; };
159 
160  virtual void filterByTaskCategory(const DtString&);
161  virtual void removeFilterByTaskCategory(const DtString&);
162  const std::set<DtString>& filterByTaskCategories() const
163  {
164  return myFilterByTaskCategories;
165  }
166 
167  virtual std::set<QAction*> actionsThatSupport(int) const;
168 
171  virtual void setMenuProxy(DtScriptedTaskConfigurableMenu*);
172  virtual DtScriptedTaskConfigurableMenu* menuProxy();
173 
174  virtual const char* supportedToolbar() const = 0;
175  virtual const char* supportedMenu() const = 0;
176  virtual const DtSubMenuConfiguration& defaultMenuConfiguration() const = 0;
177  virtual const makVrv::DtQtMenuAssembler::MenuBuilderMap& defaultMenuBuilderMap() const = 0;
178  virtual const makVrv::DtQtMenuAssembler::MenuItemBuilderMap& defaultMenuItemBuilderMap() const = 0;
179  virtual void recreateMenu() = 0;
180  virtual DtScriptedTaskConfigurableMenu* mainMenuInstance() = 0;
181 
182  virtual void sortMenu();
183 
185  virtual void editingDialog(DtTaskSetDialogInterface*);
186 
187  DtTaskSetDialogInterface* currentDialog() { return myCurrentDialog; };
188 
190  virtual bool hasSupportFor(const DtSetMessageType&) const;
191 
193  virtual bool hasSupportFor(const DtSimTaskMessageType&) const;
194 
196  virtual bool hasSupportForActionType(int) const;
197 
198  public:
199  boost::signals2::signal<void (std::vector<DtUUID> names, const DtSetDataRequest&)> signal_sendSetRequest;
200  boost::signals2::signal<void (std::vector<DtUUID> names, const DtSimTask&)> signal_sendTaskRequest;
201  boost::signals2::signal<void (QAction*)> signal_validateMenuItem;
202  boost::signals2::signal<void ()> signal_menuValidated;
203 
205  boost::signals2::signal<void (DtTaskSetDialogInterface*)> signal_dialogCreated;
206 
209  boost::signals2::signal<void (DtTaskSetDialogInterface*)> signal_dialogDestroyed;
210  boost::signals2::signal<void (DtCommandAssignmentWidget*)> signal_commandDialogDestroyed;
211 
212  virtual void slot_sendSetRequest(std::vector<DtUUID> names, const DtSetDataRequest& s);
213  virtual void slot_sendTaskRequest(std::vector<DtUUID> names, const DtSimTask& s);
214 
216  virtual void slot_createTaskSetDialog(int menuItemType, QWidget*, DtVrfTaskSetAction*,
217  const std::vector<makVrv::DtSimEntry*>&, int);
218  boost::signals2::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
219  const std::vector<makVrv::DtSimEntry*>&, int, DtVrfTaskSetMenu*)> signal_createTaskSetDialog;
220 
222  virtual void signalCommandDialogCreation(int menuItemType, QWidget* parent, DtVrfTaskSetAction* forAction,
223  const std::vector<makVrv::DtSimEntry*>& data, int partOfPlan);
224  boost::signals2::signal<void (int menuItemType, QWidget*, DtVrfTaskSetAction*,
225  const std::vector<makVrv::DtSimEntry*>&, int, DtVrfTaskSetMenu*)> signal_createCommandDialog;
226 
229  virtual void mergeChangesFrom(const std::string& menu, const DtSubMenuConfiguration&, DtSubMenuConfiguration&,
230  bool maintainOriginalOrder = false);
231 
232  public slots:
233  virtual void validate();
234 
235  protected slots:
236  virtual void radioMenuDestroyed();
237  virtual void dialogDestroyed();
238 
239  protected:
242  virtual void renameIfDuplicate(QAction*);
243 
246  virtual QString alternateName(QAction*) const;
247 
250  virtual void revalidate(makVrv::DtUniqueID);
251 
252  virtual bool eventFilter(QObject *, QEvent *);
253  virtual void actionAdded(QEvent*);
254  virtual void addTaskAction(QAction*);
255  virtual void rebuildToolbar(const std::string&);
256 
257  virtual void slot_taskSetMenuSortChanged(bool);
258 
259  virtual void sortMenu(QMenu*);
260 
261  virtual void validateMenuItems(int terrainPatchOffset);
262  virtual void slot_backendUpdated(const DtVrfBackendState&, int);
263  virtual bool available(int menu, std::set<int>& l) const;
264 
265  virtual bool needsValidation() const;
266  virtual makVrv::DtSelectionManager::IdSet selectionToUseToValidate() const;
267 
270  virtual void availableMenuItems(
271  const makVrv::DtSelectionManager::IdSet& selections,
272  std::set<int>& available,
273  bool noTaskSetValueMeansAll);
274 
276  virtual bool isFilteredByTaskCategories(const DtEntityType&, int) const;
277 
278  virtual bool shouldAddAsPartOfMenu(const QList<QAction*>& acts, QAction* toMatch) const;
279 
280  virtual void destroyActions(const QList<QAction*>& actions);
281 
282  virtual void stateRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
283 
285  //
288  virtual void setupMenu(const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration = makVrv::DtMenuConfiguration(),
289  const makVrv::DtToolbarConfiguration& initialCreateToolbarConfiguration = makVrv::DtToolbarConfiguration(),
290  bool useGlobalMenuManager = false, bool recreateToolbars = false);
291 
292  protected:
302  std::vector<DtVrfTaskSetMenu*> myRadioMenus;
304  std::string myClassName;
316  std::set<DtString> myFilterByTaskCategories;
317  };
318 
320  {
321  public:
322  DtMenuReadyMenuManager() : makVrv::DtMenuManager()
323  {
324  }
325 
326  void clear()
327  {
328  myMenuItems.clear();
329  myMenus.clear();
330  }
331  };
332 
335  {
336  public:
337  DtMenuReadyMenuAssembler(makVrv::DtDe&, QWidget*, QMenuBar*);
338 
340  {
341  myMenuManager.clear();
342 
343  myMenuBuilders.clear();
344  myMenuItemBuilders.clear();
345  }
346 
347  virtual void unregisterMenu(const std::string& s)
348  {
349  makVrv::DtMenu* b = menuBuilder(s);
350 
351  if (b)
352  {
353  MenuBuilderMap::iterator iter = myMenuBuilders.begin();
354 
355  while (iter != myMenuBuilders.end())
356  {
357  if (iter->second == b)
358  {
359  myMenuBuilders.erase(iter);
360  }
361  ++iter;
362  }
363  }
364  }
365 
367  QMenuBar* menuBar()
368  {
369  return myMenuBar;
370  }
371 
373  virtual QWidget* menuWindow();
374 
376  virtual makVrv::DtMenuManager& menuManager();
377 
380  {
381  return myMenuManager.findMenu(path);
382  }
383 
384  protected:
385  QWidget* myMainWindow;
386  QMenuBar* myMenuBar;
388  };
389 }
bool myConnectedForValidate
Definition: vrfTaskSetMenu.h:306
Definition: vrfBackendState.h:69
bool myHideDisabledItems
Definition: vrfTaskSetMenu.h:305
Definition: vrfTaskSetMenu.h:51
bool mySignalDialogCreation
Definition: vrfTaskSetMenu.h:301
boost::unordered_map< std::string, DtMenuItem * > MenuItemBuilderMap
Definition: DtQtMenuAssembler.h:31
TaskActions myTaskSetActions
Definition: vrfTaskSetMenu.h:293
boost::signals2::signal< void(DtTaskSetDialogInterface *)> signal_dialogDestroyed
Signal sent when the current editing dialog is destroyed.
Definition: vrfTaskSetMenu.h:209
int partOfPlanDialog() const
Definition: vrfTaskSetMenu.h:106
Definition: vrfTaskSetMenu.h:319
QWidget * myMainWindow
Definition: vrfTaskSetMenu.h:385
boost::signals2::signal< void(QAction *)> signal_validateMenuItem
Definition: vrfTaskSetMenu.h:201
bool alwaysStartAsEnabled() const
Definition: vrfTaskSetMenu.h:119
bool myRecreateMenuOnSelectionChange
Definition: vrfTaskSetMenu.h:310
bool signalTaskSetRequests() const
Definition: vrfTaskSetMenu.h:101
const TaskActions & taskActions()
Definition: vrfTaskSetMenu.h:158
Definition: taskSetDialogInterface.h:83
Contains makVrv:DtSelectionManager class.
Contains makVrv::DtStateView class.
std::map< int, std::set< QAction * > > TaskActions
Definition: vrfTaskSetMenu.h:156
Subclass for additional functionality needed by VRF.
Definition: subMenuConfiguration.h:73
boost::signals2::signal< void(DtTaskSetDialogInterface *)> signal_dialogCreated
Signal emitted when task/set dialog is created the myCurrentDialog will hold this dialog...
Definition: vrfTaskSetMenu.h:205
A Qt implementation of a DtMenuAssembler.
Definition: DtQtMenuAssembler.h:26
makVrv::DtSelectionManager::IdSet myEntitySet
Definition: vrfTaskSetMenu.h:294
void clear()
Definition: vrfTaskSetMenu.h:326
std::set< DtString > myFilterByTaskCategories
Definition: vrfTaskSetMenu.h:316
void setValidateIfNoPendingRequests(bool b)
Validate even if there are prending requests. Default is true.
Definition: vrfTaskSetMenu.h:125
QMenuBar * myMenuBar
Definition: vrfTaskSetMenu.h:386
QMenuBar * menuBar()
If main menu, returns menu bar to add menu to.
Definition: vrfTaskSetMenu.h:367
DtTaskSetDialogInterface * myCurrentDialog
Definition: vrfTaskSetMenu.h:312
Contains makVrv::DtMenuManager class.
bool validateIfNoPendingRequests() const
Definition: vrfTaskSetMenu.h:130
DtSubMenuConfiguration myConfiguration
Definition: vrfTaskSetMenu.h:311
bool myValidateIfNoPendingRequests
Definition: vrfTaskSetMenu.h:314
Contains makVrv::DtQtMenuAssembler class.
bool myHasBeenValidatedOnce
Definition: vrfTaskSetMenu.h:315
const makVrv::DtSelectionManager::IdSet & entitySet() const
Definition: vrfTaskSetMenu.h:111
boost::signals2::signal< void(int menuItemType, QWidget *, DtVrfTaskSetAction *, const std::vector< makVrv::DtSimEntry * > &, int, DtVrfTaskSetMenu *)> signal_createTaskSetDialog
Definition: vrfTaskSetMenu.h:219
DtSetDataRequest is an abstract base class from which real setDataRequests can derive.
Definition: setDataRequest.h:40
bool myMenuItemValidation
Definition: vrfTaskSetMenu.h:298
Contains makVrv::DtVirtualBaseClass class.
bool myAlwaysStartAsEnabled
Definition: vrfTaskSetMenu.h:313
DtMenuReadyMenuManager()
Definition: vrfTaskSetMenu.h:322
bool myUseGlobalMenuManager
Definition: vrfTaskSetMenu.h:309
bool mySignalTaskSetRequests
Definition: vrfTaskSetMenu.h:300
int myPartOfPlanDialog
Definition: vrfTaskSetMenu.h:299
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:225
A Menu manager which is how to lookup and find menu/menu items using menu paths.
Definition: DtMenuManager.h:31
A menu that validates itself on selection.
Definition: selectionEnabledMenu.h:55
Contains makVrv::DtEntityState class.
virtual void unregisterMenu(const std::string &s)
Definition: vrfTaskSetMenu.h:347
boost::signals2::signal< void()> signal_menuValidated
Definition: vrfTaskSetMenu.h:202
bool validationsDisabled() const
Definition: vrfTaskSetMenu.h:92
a Class which represents a menu path.
Definition: DtMenuPath.h:27
boost::signals2::signal< void(DtCommandAssignmentWidget *)> signal_commandDialogDestroyed
Definition: vrfTaskSetMenu.h:210
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
DtVrfTaskSetMenu * myParentMenu
Definition: vrfTaskSetMenu.h:303
virtual ~DtMenuReadyMenuAssembler()
Definition: vrfTaskSetMenu.h:339
std::vector< DtVrfTaskSetMenu * > myRadioMenus
Definition: vrfTaskSetMenu.h:302
DtVrfTaskSetMenu * parentMenu()
Definition: vrfTaskSetMenu.h:143
The abstract base menu class.
Definition: DtMenu.h:23
const std::set< DtString > & filterByTaskCategories() const
Definition: vrfTaskSetMenu.h:162
bool myValidate
Definition: vrfTaskSetMenu.h:295
DtSimTask is an abstract base class from which real tasks can derive.
Definition: simTask.h:31
Assembler to use specifically for putting into a widget (not the main menu)
Definition: vrfTaskSetMenu.h:334
DtMenuReadyMenuManager myMenuManager
Definition: vrfTaskSetMenu.h:387
A configuration of the toolbar layout.
Definition: DtToolbarConfiguration.h:25
DtTaskSetDialogInterface * currentDialog()
Definition: vrfTaskSetMenu.h:187
Definition: translator.h:58
A configuration of the menu layout.
Definition: DtMenuConfiguration.h:24
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
Contains makVrf::DtTaskSetMenu, makVrf::DtVrfTaskSetAction, and makVrf::DtTaskSetMenuItem class...
Definition: vrfTaskSetAction.h:104
QMenu * findMenu(const makVrv::DtMenuPath &path)
Returns the QMenu for the given path.
Definition: vrfTaskSetMenu.h:379
bool myRecreateToolbars
Definition: vrfTaskSetMenu.h:308
bool myShowAllItems
Definition: vrfTaskSetMenu.h:297
#define DT_DLL_VRFGUITASKSETQT
Definition: vrfGuiTaskSetQt.h:22
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
bool myValidationsDisabled
Definition: vrfTaskSetMenu.h:296
DtScriptedTaskConfigurableMenu * myMenuProxy
Definition: vrfTaskSetMenu.h:307
bool signalDialogCreation() const
Definition: vrfTaskSetMenu.h:86
std::string myClassName
Definition: vrfTaskSetMenu.h:304
void setParentMenu(DtVrfTaskSetMenu *p)
Definition: vrfTaskSetMenu.h:138

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)