VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
informationDialogPage.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #if !defined(Q_MOC_RUN)
13 
14 
19 
20 #include <vrvCoreQt/DtPage.h>
22 
24 #endif
25 #include <boost/signals2.hpp>
26 
27 #include <QtWidgets/QTreeWidget>
28 
29 class QLabel;
30 class QVBoxLayout;
31 class DtFrame;
32 
33 namespace makVrv
34 {
35  class DtDe;
36  class DtPersistenceToolbarWidget;
37 }
38 
39 namespace makVrf
40 {
41  class DtGuiSimObject;
42  class DtTimedSimObjectModifiedSignaler;
43 
44  namespace makVrfGuiObjectInformationQt
45  {
46  class DtInformationDialogPageLogic;
47  class DtInformationTreeWidgetItem;
48  class DtInformationDialog;
49 
51  {
52  public:
53  DtLineBreakWidget(QWidget* parent, QWidget* containing);
54 
55  virtual bool eventFilter(QObject*, QEvent*) override;
56 
57  virtual void setLineBreak(int);
58 
59  void setSelectable(bool b) { mySelectable = b; };
60  bool selectable() const { return mySelectable; };
61 
62  public:
63  QWidget* myContaining;
65 
66  protected:
68  };
69 
71  {
72  public:
73  DtShadedWidget(QWidget*);
74  virtual ~DtShadedWidget() override;
75 
76  void setDown(bool);
77  bool down() const { return myDown; };
78 
79  void setSelectable(bool);
80  bool selectable() const { return mySelectable && isEnabled(); };
81 
82  virtual void paintEvent(QPaintEvent*) override;
83 
84  protected:
85  bool myDown;
87  };
88 
90  public QObject
91  {
92  public:
95 
96  virtual ~DtItemUpdateFunction() override;
97 
99  virtual QWidget* createWidgetRepresentation(QWidget* parent, DtSimObjectReference, const std::string& keywords);
100  virtual QWidget* widgetRepresentation(QWidget* parent, DtSimObjectReference);
101 
102  virtual void setLogic(DtInformationDialogPageLogic* l);
104  {
105  return myLogic;
106  }
107 
108  virtual void slot_onStateViewUpdated() override {
109  stateViewUpdated(myState);
110  }
111 
112  virtual void stateViewUpdated(DtSimObjectReference);
113  virtual void setTreeWidgetItem(DtInformationTreeWidgetItem*);
114 
115  virtual void adjustWidgetForColumnSpan(int colSpan) override;
116  virtual void adjustWidgetForRowSpan(int rowSpan) override;
117 
118  virtual bool shouldBeHidden(DtSimObjectReference) const;
119 
120  virtual void activate(DtSimObjectReference) override;
121 
123  {
124  deactivate();
125  }
126 
127  makVrv::DtDe* de() const;
128 
129  virtual void deactivate() override;
130 
132  virtual std::string icon() const;
133 
135  {
136  return myTreeWidgetItem;
137  }
138 
140  {
141  return myTreeWidgetItem;
142  }
143 
144  virtual void setFixedItemWidth(int) override;
145  virtual void setFixedItemHeight(int) override;
146 
147  virtual DtFilename pixmapFile() const;
148 
149  virtual QSize minimumSizeHint() const override;
150  virtual void setMaximumSize(const QSize&) override;
151  virtual void setMinimumSize(const QSize&) override;
152  virtual QRect geometry() const override;
153 
154  virtual void setMinimumHeight(int) override;
155  virtual void setMinimumWidth(int) override;
156  virtual void setMaximumHeight(int) override;
157  virtual void setMaximumWidth(int) override;
158 
159  virtual bool eventFilter(QObject*, QEvent*) override;
160 
161  virtual bool mouseEnterEvent() override;
162  virtual bool mouseLeaveEvent() override;
163 
164  virtual void setItemParameters(const std::vector<std::string>& params);
165  virtual const std::vector<std::string>& itemParameters() const;
166 
168  virtual QVariant widgetValue(int col, int role, DtSimObjectReference) const;
169  virtual QString toolTip(DtSimObjectReference s) const;
170 
171  virtual QString title(DtSimObjectReference s) const;
172  virtual QVariant value(int col, int role) const;
173  virtual QVariant value(int col, int role, DtSimObjectReference) const;
174 
176  virtual bool needsPageLogicForWidgetRepresentation() const;
177 
178  QWidget* container() const
179  {
180  return myContainer;
181  }
182 
183  virtual QWidget* createContainerData() const;
184 
185  const QString& toolTip() const
186  {
187  return myToolTip;
188  }
189 
190  protected:
191  virtual void fixupPixmapsOnResize();
192 
193  protected:
197  std::vector<std::string> myItemParams;
198  QString myToolTip;
199 
200  public:
201  QWidget* myDefaultText = nullptr;
202  QLabel* myIconTitle = nullptr;
203  QWidget* myContainer = nullptr;
204  };
205 
207  {
208  public:
211  {
212  }
213 
216  {
217  }
218 
220  virtual void setFixedItemWidth(int i) override {
221  myFixedItemWidth = i;
222  }
223 
225  virtual void setFixedItemHeight(int i) override {
226  myFixedItemHeight = i;
227  }
228 
229  virtual void adjustWidgetForColumnSpan(int colSpan) override {
230  myColSpan = colSpan;
231  }
232 
233  virtual void adjustWidgetForRowSpan(int rowSpan) override {
234  myRowSpan = rowSpan;
235  }
236  };
237 
239  {
240  public:
242  virtual std::string creatorName() = 0;
245  };
246 
248  {
249  public:
251  virtual ~DtItemUpdateFunctionCreator() override {};
252 
253  virtual std::string creatorName() override { return T::creatorName(); };
254  virtual DtItemUpdateFunction* create(DtInformationDialogPageLogic* l) override { return new T(l); };
255  virtual DtItemUpdateFunction* create(makVrv::DtDe& de) override { return new T(de); };
256  };
257 
260  {
261  Q_OBJECT
262 
263  public:
265  {
266  AlwaysShow = 0,
267  NeverShow = 1,
268  InitiallyHideAndCheckToShow = 2
269  };
270 
272  DtInformationDialogPage(makVrv::DtDe& de, QWidget* parent, Qt::WindowFlags f = Qt::SubWindow);
273 
275  virtual ~DtInformationDialogPage() override;
276 
277  virtual ShowStatus setupGui(DtSimObjectReference);
278 
279  virtual QTreeWidget* dataItems();
280  virtual void slot_onStateViewUpdated();
281 
283  virtual void activate(DtSimObjectReference state);
284 
286  virtual void deactivate() override;
287 
288  virtual bool mouseEnterEvent() override;
289  virtual bool mouseLeaveEvent() override;
290 
291  virtual void setFixedItemHeight(int) override;
292  virtual void setFixedItemWidth(int) override;
293 
294  virtual void addDataItems(const makVrv::DtPageConfiguration::PagePathList&);
295 
298  virtual bool selectElement(const std::string&);
299 
301  virtual bool isSubElementSelected(const std::string&) const;
302 
304  virtual void unknownDataItem(const std::string&);
305 
307  {
308  return myInformationItems;
309  }
310 
312  virtual QWidget* createWidgetRepresentation(QWidget* parent, DtSimObjectReference,
313  const std::string& keywords);
314  virtual QWidget* widgetRepresentation(QWidget* parent, DtSimObjectReference );
315  virtual QSize minimumSizeHint() const override;
316  virtual void setMaximumSize(const QSize& size) override;
317  virtual void setMinimumSize(const QSize& size) override;
318  virtual QRect geometry() const override;
319 
320  virtual void setMinimumHeight(int) override;
321  virtual void setMinimumWidth(int) override;
322  virtual void setMaximumHeight(int) override;
323  virtual void setMaximumWidth(int) override;
324 
325  virtual void removeTitle();
326 
327  virtual void adjustWidgetForColumnSpan(int colSpan) override;
328  virtual void adjustWidgetForRowSpan(int rowSpan) override;
329 
332  virtual void setLineBreak(int);
333 
335  {
336  return 0;
337  }
338 
340  virtual void dialogAboutToShow(DtInformationDialog*);
341 
343  {
344  return myLogic;
345  }
346 
347  virtual void setSectionName(const std::string&);
348 
349  const std::string& sectionName() const
350  {
351  return mySectionName;
352  }
353 
354  virtual void setLogic(DtInformationDialogPageLogic*);
355 
357  virtual void signalToAddWhenReady(bool, DtSimObjectReference s);
359 
361  virtual void setSizeHint(const QSize&);
362  virtual QSize sizeHint() const override;
363 
364  virtual void mainWindowHidden();
365  virtual void mainWindowShown();
366 
367  boost::signals2::signal<void (DtInformationDialogPage*)> signal_readyToShow;
368  boost::signals2::signal<void ()> signal_stateViewUpdated;
369  boost::signals2::signal<void (std::string, DtInformationSectionDisplayHandler*)> signal_showInformationPage;
370  boost::signals2::signal<void (std::string, bool)> signal_expandSection;
371 
372  protected slots:
373  virtual void lineBreakDestroyed();
374 
375  virtual void onHeaderClicked(int column);
376  virtual void itemRightClickedOn(QTreeWidgetItem* item, QMouseEvent* e, int col);
377  virtual void onCopyValue();
378 
379  protected:
381  virtual QWidget* createPageContents(ShowStatus& status);
382  virtual void updateShowState(const std::string& s, bool b);
383 
386  virtual void sortPageContents();
387 
389  virtual void activate() override;
390 
391  virtual bool keepInformationDialogUpOnRewind() const { return true; };
392 
395  virtual QMenu* createRightClickMenu(QTreeWidgetItem*);
396 
397  protected:
402  QSize mySizeHint;
403  std::string mySectionName;
404 
405  public:
406  QVBoxLayout* myMainLayout;
407  QVBoxLayout* myContentsLayout;
411  QMenu* myRightClickMenu = nullptr;
412  };
413 
415  {
416  public:
417  enum AddFlags
418  {
419  Before = 1,
420  ChildOf = 2
421  };
422 
423  public:
425 
426  virtual ~DtInformationDialogPageLogic();
427 
428  virtual void clearInterface();
429 
431  {
432  return myDe;
433  }
434 
436  {
437  myInterface = iFace;
438  }
439 
440  virtual void addDataItems(const makVrv::DtPageConfiguration::PagePathList& pathList);
442  {
443  return mySimObject;
444  }
445 
446  public:
448  virtual DtInformationTreeWidgetItem* addDataItem(const std::string& name, DtItemUpdateFunction* function,
449  const std::string& before = "", int flags = Before);
450 
452  virtual void replaceUpdateFunction(const std::string& name, DtItemUpdateFunction* function);
453 
455  virtual void removeDataItem(const std::string& name);
456 
458  virtual void setDataItemVisible(const std::string&, bool);
459 
461  virtual void activate(DtSimObjectReference state);
462  virtual void deactivate();
463 
465  {
466  return mySimObject;
467  }
468 
469  virtual void setFixedItemHeight(int);
470  int fixedItemHeight() const
471  {
472  return myFixedItemHeight;
473  }
474 
475  virtual void setFixedItemWidth(int);
476  int fixedItemWidth() const
477  {
478  return myFixedItemWidth;
479  }
480 
481  virtual const std::set<makVrv::DtUniqueID>& elementIDs() const;
482  virtual void stateViewUpdated();
483  virtual void updateData();
484  virtual void updateItemVisibility();
485 
486  boost::signals2::signal<void ()> signal_stateViewUpdated;
487 
488  protected:
489  virtual void slot_defaultIconListChanged();
490  virtual void setSimObject(DtSimObjectReference);
491  virtual DtInformationTreeWidgetItem* createTreeWidgetItem();
492 
493  protected:
499  std::map<std::string, DtInformationTreeWidgetItem*> myItems;
503  mutable std::set<makVrv::DtUniqueID> myElementIDs;
504  boost::signals2::connection myTickConnection;
505  DtTimedSimObjectModifiedSignaler* myUpdater = nullptr;
506  };
507 
509  {
510  public:
512  virtual ~DtInformationTreeWidgetItem() override;
513 
514  virtual bool operator<(const QTreeWidgetItem&) const override;
515 
517  {
518  DtItemUpdateFunction* old = myUpdater;
519 
520  myUpdater = f;
521 
522  return old;
523  }
524 
525  const std::string& internalName() const
526  {
527  return myInternalName;
528  }
529 
530  void setInternalName(const std::string& n)
531  {
532  myInternalName = n;
533  }
534 
536  {
537  myUpdater->activate(s);
538  }
539 
541  {
542  myUpdater->deactivate(s);
543  }
544 
546  {
547  return myUpdater;
548  }
549 
550  protected:
551  virtual QVariant data(int col, int role) const override;
552 
553  protected:
555  std::string myInternalName;
556  };
557 
560  {
561  public:
564 
565  virtual DtInformationTreeWidgetItem* create();
566 
567  static DtInformationTreeWidgetItemCreator& instance(makVrv::DtDe& de);
568  static void registerInstance(makVrv::DtDe& de, DtInformationTreeWidgetItemCreator*);
569 
570  protected:
572  };
573  }
574 }
DtSimObjectReference state() const
Definition: informationDialogPage.h:441
int myFixedItemWidth
Definition: informationDialogPage.h:502
std::list< DtPagePath > PagePathList
Definition: DtPageConfiguration.h:30
std::string mySectionName
Definition: informationDialogPage.h:403
DtItemUpdateFunctionCreator()
Definition: informationDialogPage.h:250
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Registered creator for this class.
Definition: informationDialogPage.h:559
makVrv::DtSignalConnectionManager myConnections
Definition: informationDialogPage.h:497
virtual std::string creatorName() override
Definition: informationDialogPage.h:253
makVrv::DtPageConfiguration::PagePathList myInformationItems
Definition: informationDialogPage.h:399
void setSelectable(bool b)
Definition: informationDialogPage.h:59
DtInformationDialogPageLogic * myLogic
Definition: informationDialogPage.h:194
Contains makVrv::DtPage class declaration.
makVrv::DtDe & myDe
Definition: informationDialogPage.h:495
const DtInformationTreeWidgetItem * treeWidgetItem() const
Definition: informationDialogPage.h:139
std::string myInternalName
Definition: informationDialogPage.h:555
virtual void slot_onStateViewUpdated() override
Definition: informationDialogPage.h:108
std::map< std::string, DtInformationTreeWidgetItem * > myItems
Definition: informationDialogPage.h:499
int myFixedItemHeight
Definition: informationDialogPage.h:501
DtItemUpdateFunction * myUpdater
Definition: informationDialogPage.h:554
voidpf void uLong size
Definition: ioapi.h:39
boost::signals2::signal< void()> signal_stateViewUpdated
Definition: informationDialogPage.h:368
DtItemUpdateFunction * setUpdateFunction(DtItemUpdateFunction *f)
Definition: informationDialogPage.h:516
virtual ~DtItemUpdateFunctionCreatorInterface()
Definition: informationDialogPage.h:241
boost::signals2::signal< void()> signal_stateViewUpdated
Definition: informationDialogPage.h:486
void deactivate(DtSimObjectReference s)
Definition: informationDialogPage.h:540
bool down() const
Definition: informationDialogPage.h:77
makVrv::DtDe & myDe
Definition: informationDialogPage.h:571
QFrame * myLine
Definition: informationDialogPage.h:64
std::vector< std::string > myItemParams
Definition: informationDialogPage.h:197
virtual bool keepInformationDialogUpOnRewind() const
Definition: informationDialogPage.h:391
bool mySelectable
Definition: informationDialogPage.h:86
bool myDeleting
Definition: informationDialogPage.h:401
DtItemUpdateFunction * updater()
Definition: informationDialogPage.h:545
QWidget * container() const
Definition: informationDialogPage.h:178
DtInfoIconItem(DtInformationDialogPageLogic *l)
Definition: informationDialogPage.h:214
const std::string & sectionName() const
Definition: informationDialogPage.h:349
Definition: informationDialogPage.h:206
QString myToolTip
Definition: informationDialogPage.h:198
QWidget * myWidgetRepresentation
Definition: informationDialogPage.h:409
bool myFirstUpdate
Definition: informationDialogPage.h:500
DtInformationDialogPageLogic * logic() const
Definition: informationDialogPage.h:342
Sections that are added in an information dialog section dialog need to be subclasses of this...
Definition: informationDialogHandler.h:113
virtual void setFixedItemWidth(int i) override
Override to allow subclasses to set their own width.
Definition: informationDialogPage.h:220
boost::signals2::signal< void(std::string, bool)> signal_expandSection
Definition: informationDialogPage.h:370
int myLineBreak
Definition: informationDialogPage.h:400
Contains makVrv::DtPageConfiguration class.
virtual DtItemUpdateFunction * create(makVrv::DtDe &de) override
Definition: informationDialogPage.h:255
virtual void deactivate(DtSimObjectReference)
Definition: informationDialogPage.h:122
makVrv::DtSignalConnectionManager myConnections
Definition: informationDialogPage.h:196
virtual void adjustWidgetForRowSpan(int rowSpan) override
Definition: informationDialogPage.h:233
const QString & toolTip() const
Definition: informationDialogPage.h:185
bool selectable() const
Definition: informationDialogPage.h:60
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtInformationDialogPage * myInterface
Definition: informationDialogPage.h:494
virtual void setFixedItemHeight(int i) override
Override to allow subclasses to set their own height.
Definition: informationDialogPage.h:225
std::set< makVrv::DtUniqueID > myElementIDs
Definition: informationDialogPage.h:503
The page is a single widget component which is viewed in a page collection.
Definition: DtPage.h:51
boost::signals2::signal< void(DtInformationDialogPage *)> signal_readyToShow
Definition: informationDialogPage.h:367
void activate(DtSimObjectReference s)
Definition: informationDialogPage.h:535
bool mySelectable
Definition: informationDialogPage.h:67
int fixedItemWidth() const
Definition: informationDialogPage.h:476
DtInformationDialogPageLogic * logic()
Definition: informationDialogPage.h:103
QVBoxLayout * myMainLayout
Definition: informationDialogPage.h:406
virtual const makVrv::DtPageConfiguration::PagePathList & informationItems() const
Definition: informationDialogPage.h:306
DtInformationTreeWidgetItem * treeWidgetItem()
Definition: informationDialogPage.h:134
DtInfoIconItem(makVrv::DtDe &de)
Definition: informationDialogPage.h:209
DtInformationTreeWidgetItem * myTreeWidgetItem
Definition: informationDialogPage.h:195
Allows for setting of icons that will switch with the theme.
Definition: treeWidget.h:190
Base class to provide boost signal/slot management.
#define DT_DLL_VRFGUIOBJECTINFORMATIONQT
Contains DLL export macros.
Definition: vrfGuiObjectInformationQt.h:24
int fixedItemHeight() const
Definition: informationDialogPage.h:470
virtual void adjustWidgetForColumnSpan(int colSpan) override
Definition: informationDialogPage.h:229
virtual DtInformationDialogPageLogic * createLogic()
Definition: informationDialogPage.h:334
virtual void checkReadyToAdd(DtSimObjectReference)
Definition: informationDialogPage.h:358
const std::string & internalName() const
Definition: informationDialogPage.h:525
boost::signals2::connection myTickConnection
Definition: informationDialogPage.h:504
QVBoxLayout * myContentsLayout
Definition: informationDialogPage.h:407
DtLineBreakWidget * myLineBreakWidget
Definition: informationDialogPage.h:410
void setInternalName(const std::string &n)
Definition: informationDialogPage.h:530
ShowStatus
Definition: informationDialogPage.h:264
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
Definition: informationDialogPage.h:50
DtInformationDialogPageLogic * myLogic
Definition: informationDialogPage.h:398
QSize mySizeHint
Definition: informationDialogPage.h:402
makVrv::DtSignalConnectionManager myActivatedConnections
Definition: informationDialogPage.h:498
bool selectable() const
Definition: informationDialogPage.h:80
virtual ~DtItemUpdateFunctionCreator() override
Definition: informationDialogPage.h:251
Contains makVrv::DtInformationDialogHandler class.
makVrv::DtDe & de()
Definition: informationDialogPage.h:430
bool myDown
Definition: informationDialogPage.h:85
virtual DtItemUpdateFunction * create(DtInformationDialogPageLogic *l)=0
QTreeWidget * myDataItems
Definition: informationDialogPage.h:408
Simple handler that defines mouse events that can be handled by something added to a sectioned dialog...
Definition: informationDialogHandler.h:43
Definition: informationDialogPage.h:70
boost::signals2::signal< void(std::string, DtInformationSectionDisplayHandler *)> signal_showInformationPage
Definition: informationDialogPage.h:369
DtSimObjectReference mySimObject
Definition: informationDialogPage.h:496
virtual DtItemUpdateFunction * create(DtInformationDialogPageLogic *l) override
Definition: informationDialogPage.h:254
void setInterface(DtInformationDialogPage *iFace)
Definition: informationDialogPage.h:435
DtSimObjectReference simObject() const
Definition: informationDialogPage.h:464

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)