VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
commandPanel.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #if !defined(Q_MOC_RUN)
20 #include <vrvCore/DtStateView.h>
21 #include <vrvCore/DtEntityState.h>
22 #include <vrvCoreQt/DtPage.h>
23 #include <QtGui/QPixmap>
24 #include <QtGui/QIcon>
25 #include <QtWidgets/QTreeWidget>
26 #endif
27 
28 #include <boost/signals2.hpp>
29 
30 #include <QtWidgets/QWidget>
31 
32 namespace makVrv
33 {
34  class DtDe;
35  class DtQtPagePanel;
36 }
37 
38 class QButtonGroup;
39 class QScrollArea;
40 class QVBoxLayout;
41 class QToolButton;
42 class QMenu;
43 class QSpacerItem;
44 class QLineEdit;
45 class QPushButton;
46 class QLabel;
47 class QHBoxLayout;
48 class QSlider;
49 
50 namespace makVrf
51 {
52  class DtVrfTaskSetAction;
53  class DtVrfTaskSetManager;
54  class DtVrfTaskSetMenu;
55  class DtTaskSetDialogInterface;
56  class DtVrfTaskSetMenu;
57  class DtBasePlanWidget;
58  class DtCommandAssignmentWidgetInterface;
59  class DtCommandAssignmentWidget;
60  class DtVrfTaskSetAction;
61  class DtConditionalDialogInterface;
62  class DtConditionalExpressionInterface;
63  class DtToolButtonWrapperWidget;
64  class DtTreeWidget;
65  class DtTaskMenu;
66  class DtSetMenu;
67 
68  namespace makVrfGuiObjectInformationQt
69  {
70  class DtCommandPanelTreeWidget;
71  class DtCommandPanelItem;
72  class DtSelectedObjectInformationWidget;
73 
76  {
77  Q_OBJECT
78  public:
79 
80  struct Section
81  {
82  Section() : expandCollapse(nullptr), canvas(nullptr), items(nullptr), layout(nullptr), isPartOfSort(true), buttons(nullptr) {};
83  QToolButton* expandCollapse;
84  QString title;
85  QWidget* canvas;
87  QVBoxLayout* layout;
90  std::map<DtString, DtCommandPanelItem*> treeWidgetItems;
91  };
92 
93  public:
95  DtCommandPanel( makVrv::DtDe& de, QWidget* parent = 0, Qt::WindowFlags flags = 0);
96 
98  virtual ~DtCommandPanel();
99 
101  virtual QIcon icon();
102 
105  virtual makVrv::DtQIconConfigurations qIconConfigurations() const;
106 
108  virtual QString title();
109 
111  virtual const std::string& pageClassName() const;
112 
114  static const std::string& thePageClassName();
115 
116  virtual void activate();
117  virtual void deactivate();
118 
119  virtual void setShowIcons(bool b);
120  bool showIcons() const
121  {
122  return myShowIcons;
123  }
124 
125  protected:
126  virtual makVrv::DtQtPagePanel* qtPagePanelParent() const;
127  virtual void menuCleared();
128  virtual void setupUi();
129  virtual void setupItems();
130  virtual void clear();
131  virtual void hideAllSections(bool resetCounts = true);
132 
133  enum Mode
134  {
135  IsTask = 0,
136  IsSet = 2,
137  Flat = 3
138  };
139 
140  DtVrfTaskSetManager& vrfTaskSetManager();
141  virtual int addSection(QMenu*, Mode, bool isPartOfSort = true);
142  virtual int addActions(QMenu*, Section&, Mode mode);
143  virtual void setupItems(DtVrfTaskSetMenu*, Mode mode);
144 
145  virtual void enableSection(Section& section, QMenu*, Mode mode);
146  virtual void enableItem(Section& section, QAction*, Mode mode);
147  virtual void enableItems(DtVrfTaskSetMenu*, Mode mode);
148  virtual void enableItems();
149 
150  virtual void validate();
151  virtual void triggerVrfAction(DtVrfTaskSetAction* act, QTreeWidgetItem* item);
152  virtual void triggerNormalAction(QAction* act, QTreeWidgetItem* item);
153  virtual Section& getOrCreateSection(QMenu*);
154  virtual void sortSections();
155  virtual void clearInterfaces();
156 
157  virtual void slot_commandLevelChanged(const DtString&, int level, bool);
158  virtual void slot_dialogCreated(DtTaskSetDialogInterface*, DtVrfTaskSetAction*, bool& reject);
159  virtual void slot_dialogShown(DtTaskSetDialogInterface*);
160  virtual void slot_dialogDestroyed(DtTaskSetDialogInterface*);
161  virtual void slot_dialogRun(DtTaskSetDialogInterface*);
162  virtual void slot_commandDialogCreated(DtCommandAssignmentWidgetInterface*, QAction*, bool& reject);
163  virtual void slot_commandDialogShown(DtCommandAssignmentWidgetInterface*);
164  virtual void slot_commandDialogRun(DtCommandAssignmentWidgetInterface*);
165  virtual void slot_commandDialogDestroyed(DtCommandAssignmentWidgetInterface*);
166  virtual void slot_conditionDialogShown(DtConditionalDialogInterface*, QAction*);
167  virtual void slot_conditionDialogDestroyed(DtConditionalDialogInterface*);
168  virtual void slot_conditionDialogRun(DtConditionalDialogInterface*);
169  virtual void slot_expressionRun(DtConditionalExpressionInterface*);
170  virtual void slot_expressionDestroyed(DtConditionalExpressionInterface*);
171  virtual void slot_alwaysPopOutChanged(bool b);
172  virtual void initialize();
173  virtual void resizeCommandLevelIconsIfNeeded();
174  virtual void planWidgetChangedFocus(DtBasePlanWidget*, bool focusIn, bool force = false);
175  virtual bool eventFilter(QObject*, QEvent*);
176  virtual void filterItem(QTreeWidgetItem*);
177  virtual bool sizeSection(Section&);
178  virtual void addInterface(QWidget*, QAction*);
179  virtual void interfaceShown(QWidget*);
180  virtual void removeInterface(QWidget*);
181  virtual QMenu* createRightClickMenu(QTreeWidgetItem*);
182  virtual void commandButtonSelected(int);
183  virtual Section* sectionFor(QTreeWidget*);
184  virtual void setShowFavoritesForSection(Section& section, bool b);
185  virtual void slot_guiOptionsChanged();
186  virtual void updateBasedOnShowType();
187  virtual void slot_onCurrentSelectionChanged(const makVrv::DtSelectionManager::IdSet&);
188  virtual void createSimObjectTaskMenu();
189  virtual void createSimObjectSetMenu();
190  virtual bool canSelectTaskSet() const;
191  virtual void dialogRun(QWidget* d);
192  virtual void slot_selectionPopped();
193  virtual void deferredSetupItems();
194 
195  virtual void updateTitleColor();
196  virtual void setupCustomTitleBarIfDocked();
197  virtual void menuRecreated();
198 
200  virtual void expandOrCollapseSection(QToolButton* b, bool setInSettings = true);
201 
202  virtual void slot_expandCollapsedStateChanged(const DtString&, bool);
203  virtual void slot_objectRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
204 
205  virtual bool isPoppedOut(QWidget*) const;
206  virtual bool activePlanWidgetIsIssueCommandWidget() const;
207  virtual void setButtonAction(QToolButton*, QAction*);
208 
209  virtual void completeSelection(makVrv::DtSelectionManager::IdSet);
210 
211  virtual QSize sizeHint() const override;
212  virtual QSize minimumSizeHint() const override;
213 
214  protected slots:
215  virtual void resizeToMinimumHeight();
216  virtual void itemButtonClicked();
217  virtual void onAlwaysPopOutChanged();
218  virtual void sliderChanged();
219  virtual void slot_onItemRightClickedOn(QTreeWidgetItem* i, QMouseEvent* e, int col);
220  virtual void expandCollapseSection();
221  virtual void itemSelectionChanged(QTreeWidgetItem*);
222  virtual void expandAll();
223  virtual void collapseAll();
224  virtual void filterItems();
225  virtual void clearFilter();
226  virtual void removeFromFavoritesRightClick();
227  virtual void addToFavoritesRightClick();
228  virtual void menuDestroyed();
229  virtual void commandButtonSelected();
230  virtual void activePlanWidgetDestroyed();
231  virtual void widgetDestroyed();
232  virtual void onToolButtonRightClicked(QToolButton*);
233  virtual void checkDeactivate();
234 
235  protected:
236  boost::signals2::scoped_connection myTriggerConnection;
239  boost::signals2::scoped_connection myInitializeConnection;
240  boost::signals2::scoped_connection myActivePlanWidgetDestroyedConnection;
241  boost::signals2::scoped_connection mySetupItemsConnection;
242  boost::signals2::scoped_connection myCompleteSelectionConnection;
243 
245  std::map<QString, QWidget*> mySortedSections;
246  struct Interface
247  {
248  Interface() : label(nullptr), widget(nullptr), alwaysPopOut(true) {};
249 
250  QLabel* label;
251  QWidget* widget;
253  };
254 
255  typedef std::vector<Interface> Interfaces;
257 
260 
263 
269  bool myActive;
274  typedef std::vector<Section> Sections;
276  QPixmap myEmptyIcon;
281  bool mySettingUpPlanWidget = false;
282  bool myIsFloating = false;
283  bool myFloatingStatusChanged = false;
284 
285  public:
286  QVBoxLayout* myMainLayout;
287  QScrollArea* myTaskSetScrollArea;
288 
289  QFrame* mySeparator;
291  QHBoxLayout* myDescriptionLayout;
293 
297 
298  QWidget* myFilterCanvas;
299  QVBoxLayout* myFilterCanvasLayout;
301  QHBoxLayout* myFilterButtonLayout;
305 
308  std::vector<QToolButton*> myCommandLevels;
309 
312 
313  QWidget* mySearchCanvas;
314  QHBoxLayout* mySearchLayout;
318 
319  QWidget* myTaskSetWidget;
320  QVBoxLayout* myTaskSetWidgetLayout;
322 
323  QWidget* myCommandWidget;
324  QVBoxLayout* myCommandWidgetLayout;
326 
329 
331  };
332 
333 
335  {
336  public:
337 
340 
342  virtual ~DtCommandPanelCreator();
343 
347  virtual std::string pageClassName() const;
348 
350  virtual makVrv::DtPage* create(QWidget* parent = 0, Qt::WindowFlags f = 0);
351  };
352 
355  {
356  public:
357  DtCommandPanelItem(makVrv::DtDe& de, QTreeWidget* parent, const std::string& on, const std::string& off);
358 
359  virtual ~DtCommandPanelItem();
360 
361  virtual void setFavoritesSupported(bool b);
362 
363  virtual void setFavorite(bool b);
364  bool favorite() const
365  {
366  return myFavorite;
367  }
368 
369  virtual void setIcon(const QIcon& k);
370 
371  const QIcon& icon() const
372  {
373  return myIcon;
374  }
375 
376  virtual QVariant data(int col, int role) const;
377 
378  virtual void setIsMagicCommand(bool);
379  bool isMagicCommand() const
380  {
381  return myIsMagicCommand;
382  }
383 
384  protected:
385  QIcon myIcon;
388  std::string myFavoriteOn;
389  std::string myFavoriteOff;
394  };
395 
398  {
399  public:
402 
404  virtual ~DtCommandPanelItemCreator();
405 
406  virtual DtCommandPanelItem* create(QTreeWidget* parent, const std::string& on, const std::string& off);
407 
408  static DtCommandPanelItemCreator& instance(makVrv::DtDe& de);
409  static void registerInstance(makVrv::DtDe& de, DtCommandPanelItemCreator*);
410 
411  protected:
413  };
414 
417  {
418  public:
419  DtCommandPanelTreeWidget(makVrv::DtDe& de, QWidget* p);
420  virtual ~DtCommandPanelTreeWidget();
421 
422  bool favoritesSupported() const
423  {
424  return myFavoritesSupported;
425  }
426 
427  virtual void setFavoritesSupported(bool b);
428 
430  virtual void mousePressEvent(QMouseEvent *event);
431 
432  protected:
434  };
435 
438  {
439  public:
442 
445 
447  static void registerInstance(makVrv::DtDe& de, DtCommandPanelTreeWidgetCreator* instance);
448 
449  virtual DtCommandPanelTreeWidget* create(QWidget* parent);
450 
451  protected:
453  };
454  }
455 }
bool myFavoritesSupported
Definition: commandPanel.h:390
QMenu * myRightClickMenu
Definition: commandPanel.h:327
bool favorite() const
Definition: commandPanel.h:364
!!!!!!!!!!!!!!!!!!!!! DtCommandPanelItem
Definition: commandPanel.h:354
Definition: treeWidget.h:35
Contains makVrv::DtUserInterfaceAssembler class.
bool myFirstInitialize
Definition: commandPanel.h:271
Definition: vrfTaskSetMenu.h:51
bool myLaunchedFromCommandPanel
Definition: commandPanel.h:280
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
bool showIcons() const
Definition: commandPanel.h:120
This class will try and space out items such that they will wrap to multiple rows if buttons (or text...
Definition: toolButtonWrapperWidget.h:32
const QIcon & icon() const
Definition: commandPanel.h:371
Definition: conditionalDialogInterface.h:45
QHBoxLayout * mySearchLayout
Definition: commandPanel.h:314
Contains makVrv::DtPage class.
QSlider * myCommandLevelSlider
Definition: commandPanel.h:328
Sections mySections
Definition: commandPanel.h:275
!!!!!!!!!!!!!! DtCommandPanel
Definition: commandPanel.h:75
DtCommandPanelTreeWidget * items
Definition: commandPanel.h:86
DtToolButtonWrapperWidget * buttons
Definition: commandPanel.h:88
Definition: setMenu.h:30
makVrv::DtDe & myDe
Definition: commandPanel.h:386
DT_DLL_VRVCORE DtTaitBryan level(const DtCoordinateSystem &cs, const DtVector &localOrigin, double topoHeading)
Returns a level orientation with the topographic heading.
QVBoxLayout * myCommandWidgetLayout
Definition: commandPanel.h:324
class DtSelectedObjectInformationWidget:
Definition: selectedObjectInformationWidget.h:46
QScrollArea * myCommandWidgetScrollArea
Definition: commandPanel.h:296
!!!!!!!!!! DtCommandPanelTreeWidget
Definition: commandPanel.h:416
DtVrfTaskSetMenu * mySimObjectTaskMenu
Definition: commandPanel.h:261
makVrv::DtSignalConnectionManager mySetMenuConnections
Definition: commandPanel.h:238
QLabel * myFilterLabel
Definition: commandPanel.h:315
bool myIgnoreNextSelection
Definition: commandPanel.h:270
bool isMagicCommand() const
Definition: commandPanel.h:379
Definition: taskSetDialogInterface.h:84
Contains makVrv:DtSelectionManager class.
Contains makVrv::DtStateView class.
The page creator. This class should be extended by all page classes.
Definition: DtPage.h:121
QVBoxLayout * myMainLayout
Definition: commandPanel.h:286
QToolButton * myClearFilter
Definition: commandPanel.h:317
QWidget * myDescriptionCanvas
Definition: commandPanel.h:290
QWidget * myCommandWidgetCanvas
Definition: commandPanel.h:294
QScrollArea * myTaskSetScrollArea
Definition: commandPanel.h:287
QLineEdit * myFilter
Definition: commandPanel.h:316
Definition: conditionalExpressionInterface.h:79
makVrv::DtSignalConnectionManager myConnectionManager
Definition: commandPanel.h:244
QPixmap myEmptyIcon
Definition: commandPanel.h:276
DtVrfTaskSetMenu * mySetMenu
Definition: commandPanel.h:259
std::vector< Section > Sections
Definition: commandPanel.h:274
DtSetMenu * mySimObjectSetMenu
Definition: commandPanel.h:392
QWidget * mySearchCanvas
Definition: commandPanel.h:313
boost::signals2::scoped_connection myCompleteSelectionConnection
Definition: commandPanel.h:242
DtSelectedObjectInformationWidget * mySelectedObjectInformationWidget
Definition: commandPanel.h:330
A widget class for encapsulating radio commands for tasks or sets.
Definition: commandAssignmentWidgetInterface.h:30
DtVrfTaskSetMenu * myTaskMenu
Definition: commandPanel.h:258
boost::signals2::scoped_connection myTriggerConnection
Definition: commandPanel.h:236
QFrame * mySeparator
Definition: commandPanel.h:289
bool myIsMagicCommand
Definition: commandPanel.h:393
QWidget * myCommandWidget
Definition: commandPanel.h:323
DtVrfTaskSetManager * myVrfTaskSetManager
Definition: commandPanel.h:277
QVBoxLayout * myFilterCanvasLayout
Definition: commandPanel.h:299
Contains makVrv::DtVirtualBaseClass class.
int myLastMinimumWidth
Definition: commandPanel.h:279
bool myShowingFavoritesOnly
Definition: commandPanel.h:266
QToolButton * myExpandAll
Definition: commandPanel.h:310
QVBoxLayout * myTaskSetWidgetLayout
Definition: commandPanel.h:320
bool myRestoreOnNextShowItem
Definition: commandPanel.h:272
std::map< QString, QWidget * > mySortedSections
Definition: commandPanel.h:245
std::string myFavoriteOn
Definition: commandPanel.h:388
DtVrfTaskSetMenu * mySimObjectSetMenu
Definition: commandPanel.h:262
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
QVBoxLayout * myFilterAndSliderLayout
Definition: commandPanel.h:300
Contains makVrv::DtVrlinkSimulatedEntityState class.
QToolButton * myShowMagicCommands
Definition: commandPanel.h:302
bool favoritesSupported() const
Definition: commandPanel.h:422
The page is a single widget component which is viewed in a page collection.
Definition: DtPage.h:30
!!!!!!!!!!!! DtCommandPanelTreeWidgetCreator
Definition: commandPanel.h:437
QHBoxLayout * myAdditionFilterButtonsLayout
Definition: commandPanel.h:304
bool myMenuRecreated
Definition: commandPanel.h:273
QVBoxLayout * myCommandWidgetCanvasLayout
Definition: commandPanel.h:295
DtTaskMenu * mySimObjectTaskMenu
Definition: commandPanel.h:391
std::vector< Interface > Interfaces
Definition: commandPanel.h:255
QToolButton * myAlwaysPopOut
Definition: commandPanel.h:303
boost::signals2::scoped_connection myActivePlanWidgetDestroyedConnection
Definition: commandPanel.h:240
QHBoxLayout * myFilterButtonLayout
Definition: commandPanel.h:301
Container class that will create instances of the task menu which will configure itself for tasks...
Definition: taskMenu.h:33
bool myShowIcons
Definition: commandPanel.h:267
boost::signals2::scoped_connection myInitializeConnection
Definition: commandPanel.h:239
Base class to provide boost signal/slot management.
#define DT_DLL_VRFGUIOBJECTINFORMATIONQT
Contains DLL export macros.
Definition: vrfGuiObjectInformationQt.h:24
makVrv::DtSelectionManager::IdSet myEntitySet
Definition: commandPanel.h:265
Interfaces myInterfaces
Definition: commandPanel.h:256
std::vector< QToolButton * > myCommandLevels
Definition: commandPanel.h:308
makVrv::DtDe & myDe
Definition: commandPanel.h:412
QWidget * myTaskSetWidget
Definition: commandPanel.h:319
QVBoxLayout * layout
Definition: commandPanel.h:87
Registered creator for the tree widget item class.
Definition: commandPanel.h:397
const char int mode
Definition: ioapi.h:38
QHBoxLayout * myDescriptionLayout
Definition: commandPanel.h:291
QLabel * myDescription
Definition: commandPanel.h:292
QWidget * myFilterCanvas
Definition: commandPanel.h:298
QSpacerItem * myTaskSetScrollAreaItem
Definition: commandPanel.h:321
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
A collection of icon configurations. The collection maintains flags indicating whether to generate ic...
Definition: DtQIconConfiguration.h:75
int myButtonSize
Definition: commandPanel.h:278
bool myShowLargeIcons
Definition: commandPanel.h:268
DtBasePlanWidget * myActivePlanWidget
Definition: commandPanel.h:264
The Qt Page Panel, is a generic docked widget that contains a number of DtPages that it displays indi...
Definition: DtQtPagePanel.h:23
std::string myFavoriteOff
Definition: commandPanel.h:389
This class will maintain a list of all available task and sets for a particular object in the scenari...
Definition: vrfTaskSetManager.h:85
std::map< DtString, DtCommandPanelItem * > treeWidgetItems
Definition: commandPanel.h:90
QSpacerItem * myCommandWidgetLayoutSpacerItem
Definition: commandPanel.h:325
boost::signals2::scoped_connection mySetupItemsConnection
Definition: commandPanel.h:241
Definition: basePlanWidget.h:46
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
QToolButton * myCollapseAll
Definition: commandPanel.h:311
makVrv::DtSignalConnectionManager myTaskMenuConnections
Definition: commandPanel.h:237
QHBoxLayout * myCommandLevelsCanvasLayout
Definition: commandPanel.h:307
bool myActive
Definition: commandPanel.h:269
QWidget * myCommandLevelsCanvas
Definition: commandPanel.h:306

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)