VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
taskSetVariableWidget.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #ifdef WIN32
14  #if !defined(_DEBUG)
15  #define QT_NO_DEBUG
16  #endif
17 #else
18  #define QT_NO_DEBUG
19 #endif
20 
21 
23 #include <vrvCore/DtUniqueID.h>
25 #include <vrvUtil/DtUnicode.h>
26 #include <boost/signals2.hpp>
27 
29 #include <QtWidgets/QWidget>
30 #include <set>
31 
32 #define CHECK_AND_CONVERT(variable, function) if (variable == 0xFFFFFFFF) variable = myRange.variable(); else variable = function(variable, mySelection);
33 #define CHECK_AND_CONVERT_APPLICATION(variable, function) if (variable == 0xFFFFFFFF) variable = myRange.variable(); else variable = function(variable);
34 
35 class DtString;
36 class QSpacerItem;
37 class QVBoxLayout;
38 class QLabel;
39 class QFrame;
40 class QGridLayout;
41 class QHBoxLayout;
42 class DtReaderWriter;
43 class QRadioButton;
44 class QDomElement;
45 class QDesignerFormEditorInterface;
46 class QXmlStreamWriter;
49 
50 namespace makVrv
51 {
52  class DtDe;
53 }
54 
55 namespace makVrf
56 {
57  class DtScriptedTaskVariableLayoutConverter;
58  class DtScriptedTaskDialog;
59 
61  {
62  Q_OBJECT
63  Q_PROPERTY(qreal top READ top WRITE setTop)
64  Q_PROPERTY(qreal bottom READ bottom WRITE setBottom)
65 
66  public:
67  DtRange() : myBottom(-100000.), myTop(100000) {};
68  DtRange(const DtRange& orig) : myBottom(orig.myBottom), myTop(orig.myTop) {};
69  DtRange& operator=(const DtRange& rhs) { myBottom = rhs.myBottom; myTop = rhs.myTop; return *this; };
70 
71  qreal top() const { return myTop; };
72  qreal bottom() const { return myBottom; };
73  void setTop(qreal t) { myTop = t; };
74  void setBottom(qreal b) { myBottom = b; };
75 
76  public:
77  double myTop;
78  double myBottom;
79  };
80 
84  {
85  public:
86  DtTaskSetVariableWidgetExtensionInterface(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0);
88 
91  virtual int setFrom(const DtScriptedTaskVariable&, QGridLayout* parentLayout, int startRow) = 0;
92 
94  virtual void setTo(DtScriptedTaskVariable&) const = 0;
95 
97  virtual bool isValid()
98  {
99  return true;
100  }
101 
103  virtual void setReadOnly(bool) = 0;
104 
105  protected:
107  };
108 
116  {
117  public:
119  {
120  NormalMode = 0x00000000,
121  QtDesignerMode = 0x00000001
122  };
123 
125 
126  //DTOR
128 
131  virtual void setLabel(const std::string&) = 0;
132  virtual void setLabel(const QString&) = 0;
133 
135  virtual void setToolTip(const QString&) = 0;
136 
138  virtual void setTopLineVisible(bool)
139  {
140  }
141 
142  virtual bool topLineVisible() const
143  {
144  return false;
145  }
146 
148  virtual bool isValid() const = 0;
149 
154  virtual void setRange(double bottom, double top) = 0;
155 
157  virtual void setDefaultValue(const std::string&) = 0;
158 
162 
165  virtual void setVariableData(const std::string&) = 0;
166 
168  virtual void setupFrom(const std::set<makVrv::DtUniqueID>& data) = 0;
169 
171  virtual DtReaderWriter* createBoundVariable(const std::string& variableName) = 0;
172 
174  virtual void setupFromBoundVariable(const DtReaderWriter* variableName) = 0;
175 
177  virtual DtTaskSetVariableWidgetExtensionInterface* parameterContents(QWidget* parent, const Qt::WindowFlags& flags = 0) const
178  {
179  return 0;
180  }
181 
183  virtual bool guiElementOnly() const
184  {
185  return false;
186  }
187 
189  static bool canBeUsedAsWidget()
190  {
191  return true;
192  }
193 
195  virtual void setIndent(int) = 0;
196 
198  virtual std::string variableDataFromUiDesigner(const QDomElement&, const DtScriptedTaskVariableLayoutConverter&) const = 0;
199 
201  static void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core)
202  {
203  }
204 
205  static bool includeInQtDesigner()
206  {
207  return true;
208  }
209 
212  virtual std::string scriptedTaskVariableName() const = 0;
214 
216  virtual void widgetInitializedForDialog(DtScriptedTaskDialog*, const std::set<makVrv::DtUniqueID>& data)
217  {
218  }
219 
221  virtual void setSelection(const std::set<makVrv::DtUniqueID>& selection) {};
222 
223  virtual const std::set<makVrv::DtUniqueID>& selection() const
224  {
225  static std::set<makVrv::DtUniqueID> theEmptySet;
226  return theEmptySet;
227  }
228  };
229 
232  {
233  Q_OBJECT
234  Q_PROPERTY(QString label READ label WRITE setLabel)
235  Q_PROPERTY(bool isInternal READ isInternal WRITE setIsInternal)
236  Q_PROPERTY(int indent READ indent WRITE setIndent)
237  Q_PROPERTY(QString variableData READ variableData WRITE setVariableData DESIGNABLE false)
238 
239  public:
240  DtTaskSetVariableWidget(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0, const CreationFlags& cflags = NormalMode);
241 
242  //DTOR
243  virtual ~DtTaskSetVariableWidget() override;
244 
246  virtual void setToolTip(const QString&) override;
247 
250  virtual void setLabel(const std::string&) override;
251 
253  virtual void setLabel(const QString&) override;
254 
256  virtual void setVariableData(const std::string&) override;
257 
259  virtual void setVariableData(const QString&);
260  virtual QString variableData() const;
261 
262  virtual QString label() const;
263 
264  virtual void setupFrom(const std::set<makVrv::DtUniqueID>&) override;
265 
267  virtual void setIsInternal(bool);
268  virtual bool isInternal() const;
269 
271  virtual void setTopLineVisible(bool) override;
272  virtual bool topLineVisible() const override;
273 
275  virtual void createTopLine();
276 
279  virtual void setIndent(int) override;
280  virtual int indent() const;
281 
283  virtual bool isValid() const override;
284 
286  virtual void setTopLabelChecked(bool);
287  virtual bool topLabelChecked() const;
288 
290  virtual void setRange(double, double) override {
291  }
292 
293  virtual void setRange(const DtRange&);
294  virtual void setRangeTop(double);
295  virtual void setRangeTop(int);
296  virtual double rangeTop() const;
297 
298  virtual void setRangeBottom(double);
299  virtual void setRangeBottom(int);
300  virtual double rangeBottom() const;
301 
302  virtual const DtRange& getRange() const;
303 
306  virtual void setTopLabelIsCheckable(bool);
307  virtual bool topLabelIsCheckable() const;
308  virtual void getDefaultSpecificTitles(QString& defaultTitle, QString& specificTitle) const;
309  virtual void setDefaultSpecificTitles(const QString& defaultTitle, const QString& specificTitle);
310 
312  virtual void setupDefaultSpecificFromVariableData(const DtString& var);
313 
314  boost::signals2::signal<void (bool)> signal_topLevelCheckStateChanged;
315 
316  static bool includeInQtDesigner()
317  {
318  return true;
319  }
320 
321  virtual std::string variableDataFromUiDesigner(
322  const QDomElement&, const DtScriptedTaskVariableLayoutConverter&) const override;
323 
324  virtual std::string scriptedTaskVariableName() const override;
325 
327  virtual void setSelection(const std::set<makVrv::DtUniqueID>& selection) override;
328  virtual const std::set<makVrv::DtUniqueID>& selection() const override
329  {
330  return mySelection;
331  }
332 
333  virtual void setDefaultValueFromStateProperty(const DtPropertyInterface&) override;
334 
335  protected:
337  virtual void selectionChanged(const std::set<makVrv::DtUniqueID>& oldSelection);
338 
339  signals:
340 
343  void validityUpdated();
344 
345  protected slots:
346  virtual void topLabelCheckStateChanged();
347 
348  protected:
355 
356  QString myVariableData;
357  std::set<makVrv::DtUniqueID> mySelection;
358 
359  public:
360  int myIndent;
362  QHBoxLayout* mySpacedLayout;
363 
366  QWidget* myTopLine;
368  QWidget* myChoiceCanvas;
369  QRadioButton* myUseDefault;
370  QRadioButton* myUseSpecific;
371  QSpacerItem* myTopSeparator;
372  QHBoxLayout* myTopLineLayout;
373  QSpacerItem* mySpacerItem;
374  };
375 
377 
379  {
380  public:
382  {
383  };
384 
385  virtual DtTaskSetVariableWidgetInterface* create(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0,
387 
388  virtual makVrv::DtUnicode codeVariableType() const = 0;
389  virtual std::string className() const = 0;
390 
391  virtual bool canBeUsedAsWidget() const = 0;
392 
395 
397  virtual std::string designerIcon() const
398  {
399  return "../data/images/icons/Simulate_FrontEnd_Icon.ico";
400  }
401 
403  virtual std::string designerGroup() const = 0;
404 
406  virtual std::string headerFile() const = 0;
407 
409  virtual std::string variableName() const = 0;
410 
412  virtual bool includeInDesigner() const = 0;
413 
416  virtual void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core) = 0;
417 
419  };
420 
421  template <typename _Class>
423  {
424  public:
426 
427  virtual ~DtTaskSetVariableWidgetCreator() override {
428  };
429 
430  virtual DtTaskSetVariableWidgetInterface* create(makVrv::DtDe& de, QWidget* parent,
431  const Qt::WindowFlags& flags = 0,
434  {
435  return new _Class(de, parent, flags, cflags);
436  }
437 
438  virtual makVrv::DtUnicode codeVariableType() const override {
439  return _Class::codeVariableType();
440  }
441 
442  virtual std::string className() const override {
443  return _Class::staticMetaObject.className();
444  }
445 
446  virtual std::string designerGroup() const override {
447  return _Class::designerGroup();
448  }
449 
450  virtual std::string headerFile() const override {
451  return _Class::headerFile();
452  }
453 
454  virtual std::string variableName() const override {
455  return _Class::variableName();
456  }
457 
458  virtual bool canBeUsedAsWidget() const override {
459  return _Class::canBeUsedAsWidget();
460  }
461 
462  virtual bool includeInDesigner() const override {
463  return _Class::includeInQtDesigner();
464  }
465 
468  virtual void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core) override
469  {
470  _Class::initializeForQtDesignerExtension(de, core);
471  }
472  };
473 }
QVBoxLayout * myVariableContentLayout
When creating subclasses of this item, use the variable content layout to add your content...
Definition: taskSetVariableWidget.h:365
QSpacerItem * myTopSeparator
Definition: taskSetVariableWidget.h:371
virtual bool topLineVisible() const
Definition: taskSetVariableWidget.h:142
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
QLabel * myTopLabel
Definition: taskSetVariableWidget.h:367
CreationFlags
Definition: taskSetVariableWidget.h:118
virtual std::string designerIcon() const
Used for Qt Designer plugins.
Definition: taskSetVariableWidget.h:397
makVrv::DtDe & myDe
Definition: taskSetVariableWidget.h:349
virtual std::string designerGroup() const override
The designer group that this is going into.
Definition: taskSetVariableWidget.h:446
qreal top() const
Definition: taskSetVariableWidget.h:71
This class will parse the UI file for known scripted task variable types and pull out specified scrip...
Definition: scriptedTaskVariableLayoutConverter.h:32
Definition: taskSetVariableWidget.h:120
virtual ~DtTaskSetVariableWidgetInterface()
Definition: taskSetVariableWidget.h:127
DtTaskSetVariableWidgetCreator()
Definition: taskSetVariableWidget.h:425
Definition: readerWriter.h:85
QRadioButton * myUseDefault
Definition: taskSetVariableWidget.h:369
QHBoxLayout * myTopLineLayout
Definition: taskSetVariableWidget.h:372
virtual makVrv::DtUnicode codeVariableType() const override
Definition: taskSetVariableWidget.h:438
QVBoxLayout * myVariableWidgetLayout
Definition: taskSetVariableWidget.h:361
void setBottom(qreal b)
Definition: taskSetVariableWidget.h:74
static bool includeInQtDesigner()
Definition: taskSetVariableWidget.h:316
DtTaskSetVariableWidgetInterface()
Definition: taskSetVariableWidget.h:124
This class will created a dialog from scripted task meta data and send that information to the back-e...
Definition: scriptedTaskDialog.h:60
virtual DtTaskSetVariableWidgetExtensionInterface * parameterContents(QWidget *parent, const Qt::WindowFlags &flags=0) const
If there are any, returns contents for this variable for variable extension. Default is no extension...
Definition: taskSetVariableWidget.h:177
virtual void setSelection(const std::set< makVrv::DtUniqueID > &selection)
The selection set can be used to determine the display units to show.
Definition: taskSetVariableWidget.h:221
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:53
double myBottom
Definition: taskSetVariableWidget.h:78
QRadioButton * myUseSpecific
Definition: taskSetVariableWidget.h:370
virtual const std::set< makVrv::DtUniqueID > & selection() const
Definition: taskSetVariableWidget.h:223
Basic implementation that has a label at the top.
Definition: taskSetVariableWidget.h:231
qreal bottom() const
Definition: taskSetVariableWidget.h:72
virtual void widgetInitializedForDialog(DtScriptedTaskDialog *, const std::set< makVrv::DtUniqueID > &data)
Called when the widget is initialized from a scripted task dialog. Default implementation is to do no...
Definition: taskSetVariableWidget.h:216
virtual bool canBeUsedAsWidget() const override
Definition: taskSetVariableWidget.h:458
virtual ~DtTaskSetVariableWidgetCreator() override
Definition: taskSetVariableWidget.h:427
QWidget * myTopLine
Definition: taskSetVariableWidget.h:366
Definition: taskSetVariableWidget.h:422
boost::signals2::signal< void(bool)> signal_topLevelCheckStateChanged
Definition: taskSetVariableWidget.h:314
int myIndent
Definition: taskSetVariableWidget.h:360
virtual void initializeForQtDesignerExtension(makVrv::DtDe &de, QDesignerFormEditorInterface *core) override
Called when initializing widget for potential Qt Designer plugin usage. Please refer to Qt documentat...
Definition: taskSetVariableWidget.h:468
This class will define the interface needed for being a task set variable that can be used in task di...
Definition: taskSetVariableWidget.h:115
virtual ~DtTaskSetVariableWidgetCreatorInterface()
Definition: taskSetVariableWidget.h:381
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
makVrv::DtDe & myDe
Definition: taskSetVariableWidget.h:106
bool myTopLabelIsCheckable
Definition: taskSetVariableWidget.h:351
A class for keeping track of meta data for variables of scripted tasks. The information is currently ...
Definition: scriptedTaskVariable.h:34
std::set< makVrv::DtUniqueID > mySelection
Definition: taskSetVariableWidget.h:357
#define DT_DLL_VRFGUIDATAENTRYWIDGETS
Definition: vrfGuiDataEntryWidgets.h:22
void setTop(qreal t)
Definition: taskSetVariableWidget.h:73
virtual bool guiElementOnly() const
Returns true if this is a GUI element only. Default is false.
Definition: taskSetVariableWidget.h:183
virtual const std::set< makVrv::DtUniqueID > & selection() const override
Definition: taskSetVariableWidget.h:328
bool myIsInternal
Definition: taskSetVariableWidget.h:353
static bool includeInQtDesigner()
These methods must be implemented in order to be considered a DtTaskSetVariable that can be used as p...
Definition: taskSetVariableWidget.h:205
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
virtual bool includeInDesigner() const override
Include this class in the designer plugin.
Definition: taskSetVariableWidget.h:462
DtRange myRange
Definition: taskSetVariableWidget.h:352
virtual std::string className() const override
Definition: taskSetVariableWidget.h:442
virtual std::string headerFile() const override
The header file to include when generating code.
Definition: taskSetVariableWidget.h:450
Definition: taskSetVariableWidget.h:60
double myTop
Definition: taskSetVariableWidget.h:74
Base class to provide boost signal/slot management.
QHBoxLayout * mySpacedLayout
Definition: taskSetVariableWidget.h:362
static bool canBeUsedAsWidget()
Whether or not this shows up as a usable variable widget.
Definition: taskSetVariableWidget.h:189
Creator class to be used when creating instances of task/set variables.
Definition: taskSetVariableWidget.h:378
QWidget * myChoiceCanvas
Definition: taskSetVariableWidget.h:368
makVrv::DtSignalConnectionManager myConnections
Definition: taskSetVariableWidget.h:350
Contains makVrv::DtUniqueID type.
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
virtual bool isValid()
Validity check for data entered.
Definition: taskSetVariableWidget.h:97
DtRange & operator=(const DtRange &rhs)
Definition: taskSetVariableWidget.h:69
Extension interface for contents for definition of variables in the scripted task meta data variable ...
Definition: taskSetVariableWidget.h:83
virtual std::string variableName() const override
The default variable nameto initially assign to this object.
Definition: taskSetVariableWidget.h:454
virtual DtTaskSetVariableWidgetInterface * create(makVrv::DtDe &de, QWidget *parent, const Qt::WindowFlags &flags=0, const DtTaskSetVariableWidgetInterface::CreationFlags &cflags=DtTaskSetVariableWidgetInterface::NormalMode) override
Definition: taskSetVariableWidget.h:430
static void initializeForQtDesignerExtension(makVrv::DtDe &de, QDesignerFormEditorInterface *core)
Implement at class level to perform Qt Designer custom widget initialization. Please refer to Qt docu...
Definition: taskSetVariableWidget.h:201
DtRange(const DtRange &orig)
Definition: taskSetVariableWidget.h:68
QSpacerItem * mySpacerItem
Definition: taskSetVariableWidget.h:373
virtual void setTopLineVisible(bool)
Hides top line.
Definition: taskSetVariableWidget.h:138
CreationFlags myCreationFlags
Definition: taskSetVariableWidget.h:354
virtual void setDefaultValueFromStateProperty(const DtPropertyInterface &)
Default value to set in control based on the specified state property. Only supported by some subclas...
Definition: taskSetVariableWidget.h:161
QString myVariableData
Definition: taskSetVariableWidget.h:356

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)