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

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)