VR-Forces 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>
23 #include <vrvCoreQt/DtPage.h>
24 #include <QtGui/QPixmap>
25 #include <QtGui/QIcon>
26 #include <QtWidgets/QTreeWidget>
27 #endif
28 
29 #include <boost/signals2.hpp>
30 
31 #include <QtWidgets/QWidget>
32 
33 namespace makVrv
34 {
35  class DtDe;
36  class DtQtPagePanel;
37 }
38 
39 class QButtonGroup;
40 class QScrollArea;
41 class QVBoxLayout;
42 class QToolButton;
43 class QMenu;
44 class QSpacerItem;
45 class QLineEdit;
46 class QPushButton;
47 class QLabel;
48 class QHBoxLayout;
49 class QSlider;
50 
51 namespace makVrf
52 {
53  class DtVrfTaskSetAction;
54  class DtVrfTaskSetManager;
55  class DtVrfTaskSetMenu;
56  class DtTaskSetDialogInterface;
57  class DtVrfTaskSetMenu;
58  class DtBasePlanWidget;
59  class DtCommandAssignmentWidgetInterface;
60  class DtSearchWidget;
61  class DtCommandAssignmentWidget;
62  class DtVrfTaskSetAction;
63  class DtConditionalDialogInterface;
64  class DtConditionalExpressionInterface;
65  class DtToolButtonWrapperWidget;
66  class DtTreeWidget;
67  class DtTaskMenu;
68  class DtSetMenu;
69 
70  namespace makVrfGuiObjectInformationQt
71  {
72  class DtCommandPanelTreeWidget;
73  class DtCommandPanelItem;
74  class DtSelectedObjectInformationWidget;
75 
78  {
79  Q_OBJECT
80  public:
81 
82  struct Section
83  {
84  Section() : expandCollapse(nullptr), canvas(nullptr), items(nullptr), layout(nullptr), isPartOfSort(true), buttons(nullptr) {};
85  QToolButton* expandCollapse;
86  QString title;
87  QWidget* canvas;
89  QVBoxLayout* layout;
92  std::map<DtString, DtCommandPanelItem*> treeWidgetItems;
93  };
94 
95  public:
97  DtCommandPanel( makVrv::DtDe& de, QWidget* parent = 0, Qt::WindowFlags flags = 0);
98 
100  virtual ~DtCommandPanel();
101 
103  virtual QIcon icon();
104 
107  virtual makVrv::DtQIconConfigurations qIconConfigurations() const;
108 
110  virtual QString title();
111 
113  virtual const std::string& pageClassName() const;
114 
116  static const std::string& thePageClassName();
117 
118  virtual void activate();
119  virtual void deactivate();
120 
121  virtual void setShowIcons(bool b);
122  bool showIcons() const
123  {
124  return myShowIcons;
125  }
126 
127  protected:
128  virtual makVrv::DtQtPagePanel* qtPagePanelParent() const;
129  virtual void menuCleared();
130  virtual void setupUi();
131  virtual void setupItems();
132  virtual void clear();
133  virtual void hideAllSections(bool resetCounts = true);
134 
135  enum Mode
136  {
137  IsTask = 0,
138  IsSet = 2,
139  Flat = 3
140  };
141 
142  DtVrfTaskSetManager& vrfTaskSetManager();
143  virtual int addSection(QMenu*, Mode, bool isPartOfSort = true);
144  virtual int addActions(QMenu*, Section&, Mode mode);
145  virtual void setupItems(DtVrfTaskSetMenu*, Mode mode);
146 
147  virtual void enableSection(Section& section, QMenu*, Mode mode);
148  virtual void enableItem(Section& section, QAction*, Mode mode);
149  virtual void enableItems(DtVrfTaskSetMenu*, Mode mode);
150  virtual void enableItems();
151 
152  virtual void validate();
153  virtual void triggerVrfAction(DtVrfTaskSetAction* act, QTreeWidgetItem* item);
154  virtual void triggerNormalAction(QAction* act, QTreeWidgetItem* item);
155  virtual Section& getOrCreateSection(QMenu*);
156  virtual void sortSections();
157  virtual void clearInterfaces();
158 
159  virtual void attributesModified(const makVrv::DtElementAttributeManager::EntryAttributesList&);
160  virtual void slot_commandLevelChanged(const DtString&, int level, bool);
161  virtual void slot_dialogCreated(DtTaskSetDialogInterface*, DtVrfTaskSetAction*, bool& reject);
162  virtual void slot_dialogShown(DtTaskSetDialogInterface*);
163  virtual void slot_dialogDestroyed(DtTaskSetDialogInterface*);
164  virtual void slot_dialogRun(DtTaskSetDialogInterface*);
165  virtual void slot_commandDialogCreated(DtCommandAssignmentWidgetInterface*, QAction*, bool& reject);
166  virtual void slot_commandDialogShown(DtCommandAssignmentWidgetInterface*);
167  virtual void slot_commandDialogRun(DtCommandAssignmentWidgetInterface*);
168  virtual void slot_commandDialogDestroyed(DtCommandAssignmentWidgetInterface*);
169  virtual void slot_conditionDialogShown(DtConditionalDialogInterface*, QAction*);
170  virtual void slot_conditionDialogDestroyed(DtConditionalDialogInterface*);
171  virtual void slot_conditionDialogRun(DtConditionalDialogInterface*);
172  virtual void slot_expressionRun(DtConditionalExpressionInterface*);
173  virtual void slot_expressionDestroyed(DtConditionalExpressionInterface*);
174  virtual void slot_alwaysPopOutChanged(bool b);
175  virtual void initialize();
176  virtual void resizeCommandLevelIconsIfNeeded();
177  virtual void planWidgetChangedFocus(DtBasePlanWidget*, bool focusIn, bool force = false);
178  virtual bool eventFilter(QObject*, QEvent*);
179  virtual void filterItem(QTreeWidgetItem*);
180  virtual bool sizeSection(Section&);
181  virtual void addInterface(QWidget*, QAction*);
182  virtual void interfaceShown(QWidget*);
183  virtual void removeInterface(QWidget*);
184  virtual QMenu* createRightClickMenu(QTreeWidgetItem*);
185  virtual void commandButtonSelected(int);
186  virtual Section* sectionFor(QTreeWidget*);
187  virtual void setShowFavoritesForSection(Section& section, bool b);
188  virtual void slot_guiOptionsChanged();
189  virtual void updateBasedOnShowType();
190  virtual void slot_onCurrentSelectionChanged(const makVrv::DtSelectionManager::IdSet&);
191  virtual void createSimObjectTaskMenu();
192  virtual void createSimObjectSetMenu();
193  virtual bool canSelectTaskSet() const;
194  virtual void dialogRun(QWidget* d);
195  virtual void slot_selectionPopped();
196  virtual void deferredSetupItems();
197  virtual void checkDeactivate();
198 
199  virtual void updateTitleColor();
200  virtual void setupCustomTitleBarIfDocked();
201  virtual void menuRecreated();
202 
204  virtual void expandOrCollapseSection(QToolButton* b, bool setInSettings = true);
205 
206  virtual void slot_expandCollapsedStateChanged(const DtString&, bool);
207  virtual void slot_objectRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
208 
209  virtual bool isPoppedOut(QWidget*) const;
210  virtual bool activePlanWidgetIsIssueCommandWidget() const;
211  virtual void setButtonAction(QToolButton*, QAction*);
212 
213  virtual void completeSelection(makVrv::DtSelectionManager::IdSet);
214 
215  virtual QSize sizeHint() const override;
216  virtual QSize minimumSizeHint() const override;
217 
218  protected slots:
219  virtual void resizeToMinimumHeight();
220  virtual void itemButtonClicked();
221  virtual void onAlwaysPopOutChanged();
222  virtual void sliderChanged();
223  virtual void slot_onItemRightClickedOn(QTreeWidgetItem* i, QMouseEvent* e, int col);
224  virtual void expandCollapseSection();
225  virtual void itemSelectionChanged(QTreeWidgetItem*);
226  virtual void expandAll();
227  virtual void collapseAll();
228  virtual void filterItems();
229  virtual void removeFromFavoritesRightClick();
230  virtual void addToFavoritesRightClick();
231  virtual void menuDestroyed();
232  virtual void commandButtonSelected();
233  virtual void activePlanWidgetDestroyed();
234  virtual void widgetDestroyed();
235  virtual void onToolButtonRightClicked(QToolButton*);
236  virtual void internalActivate();
237 
238  protected:
239  boost::signals2::scoped_connection myTriggerConnection;
242  boost::signals2::scoped_connection myInitializeConnection;
243  boost::signals2::scoped_connection myActivePlanWidgetDestroyedConnection;
244  boost::signals2::scoped_connection mySetupItemsConnection;
245  boost::signals2::scoped_connection myCompleteSelectionConnection;
246 
248  std::map<QString, QWidget*> mySortedSections;
249  struct Interface
250  {
251  Interface() : label(nullptr), widget(nullptr), alwaysPopOut(true) {};
252 
253  QLabel* label;
254  QWidget* widget;
256  };
257 
258  typedef std::vector<Interface> Interfaces;
260 
263 
266 
272  bool myActive;
277  typedef std::vector<Section> Sections;
279  QPixmap myEmptyIcon;
284  bool mySettingUpPlanWidget = false;
285  bool myIsFloating = false;
286  bool myFloatingStatusChanged = false;
287  boost::signals2::scoped_connection myDePostInitializeActivationConnection;
288 
289  double myDeactivateStartTime = 0.;
290 
291  boost::signals2::scoped_connection myCheckDeactivateConnection;
292  boost::signals2::scoped_connection myRecheckSelectionConnection;
293 
294  public:
295  QVBoxLayout* myMainLayout;
296  QScrollArea* myTaskSetScrollArea;
297 
300  QHBoxLayout* myDescriptionLayout;
302 
306 
307  QWidget* myFilterCanvas;
308  QVBoxLayout* myFilterCanvasLayout;
310  QHBoxLayout* myFilterButtonLayout;
314 
317  std::vector<QToolButton*> myCommandLevels;
318 
321 
323 
324  QWidget* myTaskSetWidget;
325  QVBoxLayout* myTaskSetWidgetLayout;
327 
328  QWidget* myCommandWidget;
329  QVBoxLayout* myCommandWidgetLayout;
331 
334 
336  };
337 
338 
340  {
341  public:
342 
345 
347  virtual ~DtCommandPanelCreator();
348 
352  virtual std::string pageClassName() const;
353 
355  virtual makVrv::DtPage* create(QWidget* parent = 0, Qt::WindowFlags f = 0);
356  };
357 
360  {
361  public:
362  DtCommandPanelItem(makVrv::DtDe& de, QTreeWidget* parent, const std::string& on, const std::string& off);
363 
364  virtual ~DtCommandPanelItem();
365 
366  virtual void setFavoritesSupported(bool b);
367 
368  virtual void setFavorite(bool b);
369  bool favorite() const
370  {
371  return myFavorite;
372  }
373 
374  virtual void setIcon(const QIcon& k);
375 
376  const QIcon& icon() const
377  {
378  return myIcon;
379  }
380 
381  virtual QVariant data(int col, int role) const;
382 
383  virtual void setIsMagicCommand(bool);
384  bool isMagicCommand() const
385  {
386  return myIsMagicCommand;
387  }
388 
389  protected:
390  QIcon myIcon;
393  std::string myFavoriteOn;
394  std::string myFavoriteOff;
399  };
400 
403  {
404  public:
407 
409  virtual ~DtCommandPanelItemCreator();
410 
411  virtual DtCommandPanelItem* create(QTreeWidget* parent, const std::string& on, const std::string& off);
412 
413  static DtCommandPanelItemCreator& instance(makVrv::DtDe& de);
414  static void registerInstance(makVrv::DtDe& de, DtCommandPanelItemCreator*);
415 
416  protected:
418  };
419 
422  {
423  public:
424  DtCommandPanelTreeWidget(makVrv::DtDe& de, QWidget* p);
425  virtual ~DtCommandPanelTreeWidget();
426 
427  bool favoritesSupported() const
428  {
429  return myFavoritesSupported;
430  }
431 
432  virtual void setFavoritesSupported(bool b);
433 
435  virtual void mousePressEvent(QMouseEvent *event);
436 
437  protected:
439  };
440 
443  {
444  public:
447 
450 
452  static void registerInstance(makVrv::DtDe& de, DtCommandPanelTreeWidgetCreator* instance);
453 
454  virtual DtCommandPanelTreeWidget* create(QWidget* parent);
455 
456  protected:
458  };
459  }
460 }
boost::signals2::scoped_connection myDePostInitializeActivationConnection
Definition: commandPanel.h:287
bool myFavoritesSupported
Definition: commandPanel.h:395
QMenu * myRightClickMenu
Definition: commandPanel.h:332
bool favorite() const
Definition: commandPanel.h:369
!!!!!!!!!!!!!!!!!!!!! DtCommandPanelItem
Definition: commandPanel.h:359
Definition: treeWidget.h:35
Contains makVrv::DtUserInterfaceAssembler class.
bool myFirstInitialize
Definition: commandPanel.h:274
Definition: vrfTaskSetMenu.h:51
bool myLaunchedFromCommandPanel
Definition: commandPanel.h:283
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:122
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:376
Definition: conditionalDialogInterface.h:45
Contains makVrv::DtPage class.
QSlider * myCommandLevelSlider
Definition: commandPanel.h:333
Sections mySections
Definition: commandPanel.h:278
!!!!!!!!!!!!!! DtCommandPanel
Definition: commandPanel.h:77
DtCommandPanelTreeWidget * items
Definition: commandPanel.h:88
DtToolButtonWrapperWidget * buttons
Definition: commandPanel.h:90
Definition: setMenu.h:30
makVrv::DtDe & myDe
Definition: commandPanel.h:391
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:329
class DtSelectedObjectInformationWidget:
Definition: selectedObjectInformationWidget.h:46
QScrollArea * myCommandWidgetScrollArea
Definition: commandPanel.h:305
!!!!!!!!!! DtCommandPanelTreeWidget
Definition: commandPanel.h:421
DtVrfTaskSetMenu * mySimObjectTaskMenu
Definition: commandPanel.h:264
makVrv::DtSignalConnectionManager mySetMenuConnections
Definition: commandPanel.h:241
bool myIgnoreNextSelection
Definition: commandPanel.h:273
bool isMagicCommand() const
Definition: commandPanel.h:384
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:295
QWidget * myDescriptionCanvas
Definition: commandPanel.h:299
QWidget * myCommandWidgetCanvas
Definition: commandPanel.h:303
QScrollArea * myTaskSetScrollArea
Definition: commandPanel.h:296
Definition: conditionalExpressionInterface.h:79
boost::signals2::scoped_connection myCheckDeactivateConnection
Definition: commandPanel.h:291
makVrv::DtSignalConnectionManager myConnectionManager
Definition: commandPanel.h:247
QPixmap myEmptyIcon
Definition: commandPanel.h:279
DtVrfTaskSetMenu * mySetMenu
Definition: commandPanel.h:262
std::vector< Section > Sections
Definition: commandPanel.h:277
DtSetMenu * mySimObjectSetMenu
Definition: commandPanel.h:397
boost::signals2::scoped_connection myCompleteSelectionConnection
Definition: commandPanel.h:245
DtSelectedObjectInformationWidget * mySelectedObjectInformationWidget
Definition: commandPanel.h:335
boost::signals2::scoped_connection myRecheckSelectionConnection
Definition: commandPanel.h:292
A widget class for encapsulating radio commands for tasks or sets.
Definition: commandAssignmentWidgetInterface.h:30
DtVrfTaskSetMenu * myTaskMenu
Definition: commandPanel.h:261
boost::signals2::scoped_connection myTriggerConnection
Definition: commandPanel.h:239
QFrame * mySeparator
Definition: commandPanel.h:298
bool myIsMagicCommand
Definition: commandPanel.h:398
QWidget * myCommandWidget
Definition: commandPanel.h:328
DtVrfTaskSetManager * myVrfTaskSetManager
Definition: commandPanel.h:280
QVBoxLayout * myFilterCanvasLayout
Definition: commandPanel.h:308
Contains makVrv::DtVirtualBaseClass class.
int myLastMinimumWidth
Definition: commandPanel.h:282
bool myShowingFavoritesOnly
Definition: commandPanel.h:269
QToolButton * myExpandAll
Definition: commandPanel.h:319
QVBoxLayout * myTaskSetWidgetLayout
Definition: commandPanel.h:325
bool myRestoreOnNextShowItem
Definition: commandPanel.h:275
std::map< QString, QWidget * > mySortedSections
Definition: commandPanel.h:248
std::string myFavoriteOn
Definition: commandPanel.h:393
DtVrfTaskSetMenu * mySimObjectSetMenu
Definition: commandPanel.h:265
std::vector< EntryAttributes > EntryAttributesList
Define the type used to signal changes to one or more attributes for one or more elements.
Definition: DtElementAttributeManager.h:44
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
QVBoxLayout * myFilterAndSliderLayout
Definition: commandPanel.h:309
Contains makVrv::DtVrlinkSimulatedEntityState class.
QToolButton * myShowMagicCommands
Definition: commandPanel.h:311
bool favoritesSupported() const
Definition: commandPanel.h:427
The page is a single widget component which is viewed in a page collection.
Definition: DtPage.h:30
!!!!!!!!!!!! DtCommandPanelTreeWidgetCreator
Definition: commandPanel.h:442
QHBoxLayout * myAdditionFilterButtonsLayout
Definition: commandPanel.h:313
bool myMenuRecreated
Definition: commandPanel.h:276
QVBoxLayout * myCommandWidgetCanvasLayout
Definition: commandPanel.h:304
DtTaskMenu * mySimObjectTaskMenu
Definition: commandPanel.h:396
std::vector< Interface > Interfaces
Definition: commandPanel.h:258
QToolButton * myAlwaysPopOut
Definition: commandPanel.h:312
boost::signals2::scoped_connection myActivePlanWidgetDestroyedConnection
Definition: commandPanel.h:243
QHBoxLayout * myFilterButtonLayout
Definition: commandPanel.h:310
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:270
boost::signals2::scoped_connection myInitializeConnection
Definition: commandPanel.h:242
Base class to provide boost signal/slot management.
#define DT_DLL_VRFGUIOBJECTINFORMATIONQT
Contains DLL export macros.
Definition: vrfGuiObjectInformationQt.h:24
Definition: searchWidget.h:22
makVrv::DtSelectionManager::IdSet myEntitySet
Definition: commandPanel.h:268
Interfaces myInterfaces
Definition: commandPanel.h:259
std::vector< QToolButton * > myCommandLevels
Definition: commandPanel.h:317
makVrv::DtDe & myDe
Definition: commandPanel.h:417
QWidget * myTaskSetWidget
Definition: commandPanel.h:324
QVBoxLayout * layout
Definition: commandPanel.h:89
Registered creator for the tree widget item class.
Definition: commandPanel.h:402
const char int mode
Definition: ioapi.h:38
QHBoxLayout * myDescriptionLayout
Definition: commandPanel.h:300
QLabel * myDescription
Definition: commandPanel.h:301
Contains the DtElementAttributeManager class declaration.
QWidget * myFilterCanvas
Definition: commandPanel.h:307
QSpacerItem * myTaskSetScrollAreaItem
Definition: commandPanel.h:326
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:72
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:131
int myButtonSize
Definition: commandPanel.h:281
bool myShowLargeIcons
Definition: commandPanel.h:271
DtBasePlanWidget * myActivePlanWidget
Definition: commandPanel.h:267
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:394
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:92
QSpacerItem * myCommandWidgetLayoutSpacerItem
Definition: commandPanel.h:330
boost::signals2::scoped_connection mySetupItemsConnection
Definition: commandPanel.h:244
Definition: basePlanWidget.h:46
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
DtSearchWidget * mySearchWidget
Definition: commandPanel.h:322
QToolButton * myCollapseAll
Definition: commandPanel.h:320
makVrv::DtSignalConnectionManager myTaskMenuConnections
Definition: commandPanel.h:240
QHBoxLayout * myCommandLevelsCanvasLayout
Definition: commandPanel.h:316
bool myActive
Definition: commandPanel.h:272
QWidget * myCommandLevelsCanvas
Definition: commandPanel.h:315

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)