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)
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 DtSearchWidget;
60  class DtCommandAssignmentWidget;
61  class DtVrfTaskSetAction;
62  class DtConditionalDialogInterface;
63  class DtConditionalExpressionInterface;
64  class DtToolButtonWrapperWidget;
65  class DtTreeWidget;
66  class DtTaskMenu;
67  class DtSetMenu;
68 
69  namespace makVrfGuiObjectInformationQt
70  {
71  class DtCommandPanelTreeWidget;
72  class DtCommandPanelItem;
73  class DtSelectedObjectInformationWidget;
74 
77  {
78  Q_OBJECT
79  public:
80 
81  struct Section
82  {
83  Section() : expandCollapse(nullptr), canvas(nullptr), items(nullptr), layout(nullptr), isPartOfSort(true), buttons(nullptr) {};
84  QToolButton* expandCollapse;
85  QString title;
86  QWidget* canvas;
88  QVBoxLayout* layout;
91  std::map<DtString, DtCommandPanelItem*> treeWidgetItems;
92  };
93 
94  public:
96  DtCommandPanel( makVrv::DtDe& de, QWidget* parent = 0, Qt::WindowFlags flags = 0);
97 
99  virtual ~DtCommandPanel() override;
100 
102  virtual QIcon icon() override;
103 
106  virtual makVrv::DtQIconConfigurations qIconConfigurations() const override;
107 
109  virtual QString title() override;
110 
112  virtual const std::string& pageClassName() const override;
113 
115  static const std::string& thePageClassName();
116 
117  virtual void activate() override;
118  virtual void deactivate() override;
119 
120  virtual void setShowIcons(bool b);
121  bool showIcons() const
122  {
123  return myShowIcons;
124  }
125 
126  protected:
127  virtual void setupSelectedObjectWidget();
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*) override;
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(DtSimObjectReference 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  boost::signals2::scoped_connection myDeferredSelectionSetupConnection;
294 
295  public:
296  QVBoxLayout* myMainLayout;
298 
301  QHBoxLayout* myDescriptionLayout;
303 
307 
308  QWidget* myFilterCanvas;
309  QVBoxLayout* myFilterCanvasLayout;
311  QHBoxLayout* myFilterButtonLayout;
315 
318  std::vector<QToolButton*> myCommandLevels;
319 
322 
324 
325  QWidget* myTaskSetWidget;
326  QVBoxLayout* myTaskSetWidgetLayout;
328 
329  QWidget* myCommandWidget;
330  QVBoxLayout* myCommandWidgetLayout;
332 
335 
337  };
338 
339 
341  {
342  public:
343 
346 
348  virtual ~DtCommandPanelCreator() override;
349 
353  virtual std::string pageClassName() const override;
354 
356  virtual makVrv::DtPage* create(QWidget* parent = 0, Qt::WindowFlags f = 0) override;
357  };
358 
361  {
362  public:
363  DtCommandPanelItem(makVrv::DtDe& de, QTreeWidget* parent, const std::string& on, const std::string& off);
364 
365  virtual ~DtCommandPanelItem() override;
366 
367  virtual void setFavoritesSupported(bool b);
368 
369  virtual void setFavorite(bool b);
370  bool favorite() const
371  {
372  return myFavorite;
373  }
374 
375  virtual void setIcon(const QIcon& k);
376 
377  const QIcon& icon() const
378  {
379  return myIcon;
380  }
381 
382  virtual QVariant data(int col, int role) const override;
383 
384  virtual void setIsMagicCommand(bool);
385  bool isMagicCommand() const
386  {
387  return myIsMagicCommand;
388  }
389 
390  protected:
391  QIcon myIcon;
394  std::string myFavoriteOn;
395  std::string myFavoriteOff;
400  };
401 
404  {
405  public:
408 
410  virtual ~DtCommandPanelItemCreator() override;
411 
412  virtual DtCommandPanelItem* create(QTreeWidget* parent, const std::string& on, const std::string& off);
413 
414  static DtCommandPanelItemCreator& instance(makVrv::DtDe& de);
415  static void registerInstance(makVrv::DtDe& de, DtCommandPanelItemCreator*);
416 
417  protected:
419  };
420 
423  {
424  public:
425  DtCommandPanelTreeWidget(makVrv::DtDe& de, QWidget* p);
426  virtual ~DtCommandPanelTreeWidget() override;
427 
428  bool favoritesSupported() const
429  {
430  return myFavoritesSupported;
431  }
432 
433  virtual void setFavoritesSupported(bool b);
434 
436  virtual void mousePressEvent(QMouseEvent* event) override;
437 
438  protected:
440  };
441 
444  {
445  public:
447  virtual ~DtCommandPanelTreeWidgetCreator() override;
448 
451 
453  static void registerInstance(makVrv::DtDe& de, DtCommandPanelTreeWidgetCreator* instance);
454 
455  virtual DtCommandPanelTreeWidget* create(QWidget* parent);
456 
457  protected:
459  };
460  }
461 }
boost::signals2::scoped_connection myDePostInitializeActivationConnection
Definition: commandPanel.h:287
bool myFavoritesSupported
Definition: commandPanel.h:396
QMenu * myRightClickMenu
Definition: commandPanel.h:333
bool favorite() const
Definition: commandPanel.h:370
!!!!!!!!!!!!!!!!!!!!! DtCommandPanelItem
Definition: commandPanel.h:360
Definition: treeWidget.h:35
Contains makVrv::DtUserInterfaceAssembler class.
bool myFirstInitialize
Definition: commandPanel.h:274
Definition: vrfTaskSetMenu.h:50
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:121
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:377
Definition: conditionalDialogInterface.h:47
Contains makVrv::DtPage class declaration.
QSlider * myCommandLevelSlider
Definition: commandPanel.h:334
Sections mySections
Definition: commandPanel.h:278
!!!!!!!!!!!!!! DtCommandPanel
Definition: commandPanel.h:76
DtCommandPanelTreeWidget * items
Definition: commandPanel.h:87
DtToolButtonWrapperWidget * buttons
Definition: commandPanel.h:89
Definition: setMenu.h:30
makVrv::DtDe & myDe
Definition: commandPanel.h:392
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:330
class DtSelectedObjectInformationWidget:
Definition: selectedObjectInformationWidget.h:45
QScrollArea * myCommandWidgetScrollArea
Definition: commandPanel.h:306
!!!!!!!!!! DtCommandPanelTreeWidget
Definition: commandPanel.h:422
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:385
Definition: taskSetDialogInterface.h:82
Contains makVrv:DtSelectionManager class.
The page creator. This class should be extended by all page classes.
Definition: DtPage.h:152
QVBoxLayout * myMainLayout
Definition: commandPanel.h:296
QWidget * myDescriptionCanvas
Definition: commandPanel.h:300
QWidget * myCommandWidgetCanvas
Definition: commandPanel.h:304
QScrollArea * myTaskSetScrollArea
Definition: commandPanel.h:297
Definition: conditionalExpressionInterface.h:87
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:398
boost::signals2::scoped_connection myCompleteSelectionConnection
Definition: commandPanel.h:245
DtSelectedObjectInformationWidget * mySelectedObjectInformationWidget
Definition: commandPanel.h:336
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:299
bool myIsMagicCommand
Definition: commandPanel.h:399
QWidget * myCommandWidget
Definition: commandPanel.h:329
DtVrfTaskSetManager * myVrfTaskSetManager
Definition: commandPanel.h:280
QVBoxLayout * myFilterCanvasLayout
Definition: commandPanel.h:309
Contains makVrv::DtVirtualBaseClass class.
int myLastMinimumWidth
Definition: commandPanel.h:282
bool myShowingFavoritesOnly
Definition: commandPanel.h:269
QToolButton * myExpandAll
Definition: commandPanel.h:320
QVBoxLayout * myTaskSetWidgetLayout
Definition: commandPanel.h:326
bool myRestoreOnNextShowItem
Definition: commandPanel.h:275
std::map< QString, QWidget * > mySortedSections
Definition: commandPanel.h:248
std::string myFavoriteOn
Definition: commandPanel.h:394
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:310
QToolButton * myShowMagicCommands
Definition: commandPanel.h:312
bool favoritesSupported() const
Definition: commandPanel.h:428
The page is a single widget component which is viewed in a page collection.
Definition: DtPage.h:51
!!!!!!!!!!!! DtCommandPanelTreeWidgetCreator
Definition: commandPanel.h:443
QHBoxLayout * myAdditionFilterButtonsLayout
Definition: commandPanel.h:314
bool myMenuRecreated
Definition: commandPanel.h:276
QVBoxLayout * myCommandWidgetCanvasLayout
Definition: commandPanel.h:305
DtTaskMenu * mySimObjectTaskMenu
Definition: commandPanel.h:397
std::vector< Interface > Interfaces
Definition: commandPanel.h:258
QToolButton * myAlwaysPopOut
Definition: commandPanel.h:313
boost::signals2::scoped_connection myDeferredSelectionSetupConnection
Definition: commandPanel.h:293
boost::signals2::scoped_connection myActivePlanWidgetDestroyedConnection
Definition: commandPanel.h:243
QHBoxLayout * myFilterButtonLayout
Definition: commandPanel.h:311
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:318
makVrv::DtDe & myDe
Definition: commandPanel.h:418
QWidget * myTaskSetWidget
Definition: commandPanel.h:325
QVBoxLayout * layout
Definition: commandPanel.h:88
Registered creator for the tree widget item class.
Definition: commandPanel.h:403
const char int mode
Definition: ioapi.h:38
QHBoxLayout * myDescriptionLayout
Definition: commandPanel.h:301
QLabel * myDescription
Definition: commandPanel.h:302
Contains the DtElementAttributeManager class declaration.
QWidget * myFilterCanvas
Definition: commandPanel.h:308
QSpacerItem * myTaskSetScrollAreaItem
Definition: commandPanel.h:327
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
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:395
This class will maintain a list of all available task and sets for a particular object in the scenari...
Definition: vrfTaskSetManager.h:80
std::map< DtString, DtCommandPanelItem * > treeWidgetItems
Definition: commandPanel.h:91
QSpacerItem * myCommandWidgetLayoutSpacerItem
Definition: commandPanel.h:331
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:323
QToolButton * myCollapseAll
Definition: commandPanel.h:321
makVrv::DtSignalConnectionManager myTaskMenuConnections
Definition: commandPanel.h:240
QHBoxLayout * myCommandLevelsCanvasLayout
Definition: commandPanel.h:317
bool myActive
Definition: commandPanel.h:272
QWidget * myCommandLevelsCanvas
Definition: commandPanel.h:316

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)