VR-Forces 5.0.2 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/DtSimEntry.h>
24 #include <vrvCore/DtUniqueID.h>
26 #include <vrvUtil/DtUnicode.h>
27 #include <boost/signals2.hpp>
28 
30 #include <QtWidgets/QWidget>
31 #include <set>
32 
33 #define CHECK_AND_CONVERT(variable, function) if (variable == 0xFFFFFFFF) variable = myRange.variable(); else variable = function(variable, mySelection);
34 #define CHECK_AND_CONVERT_APPLICATION(variable, function) if (variable == 0xFFFFFFFF) variable = myRange.variable(); else variable = function(variable);
35 
36 class DtString;
37 class QSpacerItem;
38 class QVBoxLayout;
39 class QLabel;
40 class QFrame;
41 class QGridLayout;
42 class QHBoxLayout;
43 class DtReaderWriter;
44 class QRadioButton;
45 class QDomElement;
46 class QDesignerFormEditorInterface;
47 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 
161  virtual void setVariableData(const std::string&) = 0;
162 
164  virtual void setupFrom(const std::vector<makVrv::DtSimEntry*>& data) = 0;
165 
167  virtual DtReaderWriter* createBoundVariable(const std::string& variableName) = 0;
168 
170  virtual void setupFromBoundVariable(const DtReaderWriter* variableName) = 0;
171 
173  virtual DtTaskSetVariableWidgetExtensionInterface* parameterContents(QWidget* parent, const Qt::WindowFlags& flags = 0) const
174  {
175  return 0;
176  }
177 
179  virtual bool guiElementOnly() const
180  {
181  return false;
182  }
183 
185  static bool canBeUsedAsWidget()
186  {
187  return true;
188  }
189 
191  virtual void setIndent(int) = 0;
192 
194  virtual std::string variableDataFromUiDesigner(const QDomElement&, const DtScriptedTaskVariableLayoutConverter&) const = 0;
195 
197  static void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core)
198  {
199  }
200 
201  static bool includeInQtDesigner()
202  {
203  return true;
204  }
205 
208  virtual std::string scriptedTaskVariableName() const = 0;
210 
212  virtual void widgetInitializedForDialog(DtScriptedTaskDialog*, const std::vector<makVrv::DtSimEntry*>& data)
213  {
214  }
215 
217  virtual void setSelection(const std::set<makVrv::DtUniqueID>& selection) {};
218  virtual void setSelection(const std::vector<makVrv::DtSimEntry*>& data) {};
219 
220  virtual const std::set<makVrv::DtUniqueID>& selection() const
221  {
222  static std::set<makVrv::DtUniqueID> theEmptySet;
223  return theEmptySet;
224  }
225  };
226 
229  {
230  Q_OBJECT
231  Q_PROPERTY(QString label READ label WRITE setLabel)
232  Q_PROPERTY(bool isInternal READ isInternal WRITE setIsInternal)
233  Q_PROPERTY(int indent READ indent WRITE setIndent)
234  Q_PROPERTY(QString variableData READ variableData WRITE setVariableData DESIGNABLE false)
235 
236  public:
237  DtTaskSetVariableWidget(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0, const CreationFlags& cflags = NormalMode);
238 
239  //DTOR
240  virtual ~DtTaskSetVariableWidget();
241 
243  virtual void setToolTip(const QString&);
244 
247  virtual void setLabel(const std::string&);
248 
250  virtual void setLabel(const QString&);
251 
253  virtual void setVariableData(const std::string&);
254 
256  virtual void setVariableData(const QString&);
257  virtual QString variableData() const;
258 
259  virtual QString label() const;
260 
262  virtual void setupFrom(const std::vector<makVrv::DtSimEntry*>& data);
263 
265  virtual void setIsInternal(bool);
266  virtual bool isInternal() const;
267 
269  virtual void setTopLineVisible(bool);
270  virtual bool topLineVisible() const;
271 
273  virtual void createTopLine();
274 
277  virtual void setIndent(int);
278  virtual int indent() const;
279 
281  virtual bool isValid() const;
282 
284  virtual void setTopLabelChecked(bool);
285  virtual bool topLabelChecked() const;
286 
288  virtual void setRange(double, double)
289  {
290  }
291 
292  virtual void setRange(const DtRange&);
293  virtual void setRangeTop(double);
294  virtual void setRangeTop(int);
295  virtual double rangeTop() const;
296 
297  virtual void setRangeBottom(double);
298  virtual void setRangeBottom(int);
299  virtual double rangeBottom() const;
300 
301  virtual const DtRange& getRange() const;
302 
305  virtual void setTopLabelIsCheckable(bool);
306  virtual bool topLabelIsCheckable() const;
307  virtual void getDefaultSpecificTitles(QString& defaultTitle, QString& specificTitle) const;
308  virtual void setDefaultSpecificTitles(const QString& defaultTitle, const QString& specificTitle);
309 
311  virtual void setupDefaultSpecificFromVariableData(const DtString& var);
312 
313  boost::signals2::signal<void (bool)> signal_topLevelCheckStateChanged;
314 
315  static bool includeInQtDesigner()
316  {
317  return true;
318  }
319 
320  virtual std::string variableDataFromUiDesigner(const QDomElement&, const DtScriptedTaskVariableLayoutConverter&) const;
321 
322  virtual std::string scriptedTaskVariableName() const;
323 
325  virtual void setSelection(const std::set<makVrv::DtUniqueID>& selection);
326  virtual void setSelection(const std::vector<makVrv::DtSimEntry*>& data);
327  virtual const std::set<makVrv::DtUniqueID>& selection() const
328  {
329  return mySelection;
330  }
331 
332  protected:
334  virtual void selectionChanged(const std::set<makVrv::DtUniqueID>& oldSelection);
335 
336  signals:
337 
340  void validityUpdated();
341 
342  protected slots:
343  virtual void topLabelCheckStateChanged();
344 
345  protected:
352 
353  QString myVariableData;
354  std::set<makVrv::DtUniqueID> mySelection;
355 
356  public:
357  int myIndent;
359  QHBoxLayout* mySpacedLayout;
360 
363  QWidget* myTopLine;
365  QWidget* myChoiceCanvas;
366  QRadioButton* myUseDefault;
367  QRadioButton* myUseSpecific;
368  QSpacerItem* myTopSeparator;
369  QHBoxLayout* myTopLineLayout;
370  QSpacerItem* mySpacerItem;
371  };
372 
374 
376  {
377  public:
379  {
380  };
381 
382  virtual DtTaskSetVariableWidgetInterface* create(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0,
384 
385  virtual makVrv::DtUnicode codeVariableType() const = 0;
386  virtual std::string className() const = 0;
387 
388  virtual bool canBeUsedAsWidget() const = 0;
389 
392 
394  virtual std::string designerIcon() const
395  {
396  return "../data/images/icons/Simulate_FrontEnd_Icon.ico";
397  }
398 
400  virtual std::string designerGroup() const = 0;
401 
403  virtual std::string headerFile() const = 0;
404 
406  virtual std::string variableName() const = 0;
407 
409  virtual bool includeInDesigner() const = 0;
410 
413  virtual void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core) = 0;
414 
416  };
417 
418  template <typename _Class>
420  {
421  public:
423 
425  {
426  };
427 
428  virtual DtTaskSetVariableWidgetInterface* create(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0,
430  {
431  return new _Class(de, parent, flags, cflags);
432  }
433 
435  {
436  return _Class::codeVariableType();
437  }
438 
439  virtual std::string className() const
440  {
441  return _Class::staticMetaObject.className();
442  }
443 
444  virtual std::string designerGroup() const
445  {
446  return _Class::designerGroup();
447  }
448 
449  virtual std::string headerFile() const
450  {
451  return _Class::headerFile();
452  }
453 
454  virtual std::string variableName() const
455  {
456  return _Class::variableName();
457  }
458 
459  virtual bool canBeUsedAsWidget() const
460  {
461  return _Class::canBeUsedAsWidget();
462  }
463 
464  virtual bool includeInDesigner() const
465  {
466  return _Class::includeInQtDesigner();
467  }
468 
471  virtual void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core)
472  {
473  _Class::initializeForQtDesignerExtension(de, core);
474  }
475  };
476 }
QVBoxLayout * myVariableContentLayout
When creating subclasses of this item, use the variable content layout to add your content...
Definition: taskSetVariableWidget.h:362
QSpacerItem * myTopSeparator
Definition: taskSetVariableWidget.h:368
virtual void setSelection(const std::vector< makVrv::DtSimEntry * > &data)
Definition: taskSetVariableWidget.h:218
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
virtual ~DtTaskSetVariableWidgetCreator()
Definition: taskSetVariableWidget.h:424
QLabel * myTopLabel
Definition: taskSetVariableWidget.h:364
virtual bool canBeUsedAsWidget() const
Definition: taskSetVariableWidget.h:459
CreationFlags
Definition: taskSetVariableWidget.h:118
virtual std::string designerIcon() const
Used for Qt Designer plugins.
Definition: taskSetVariableWidget.h:394
virtual std::string variableName() const
The default variable nameto initially assign to this object.
Definition: taskSetVariableWidget.h:454
makVrv::DtDe & myDe
Definition: taskSetVariableWidget.h:346
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:422
Definition: readerWriter.h:85
QRadioButton * myUseDefault
Definition: taskSetVariableWidget.h:366
QHBoxLayout * myTopLineLayout
Definition: taskSetVariableWidget.h:369
QVBoxLayout * myVariableWidgetLayout
Definition: taskSetVariableWidget.h:358
void setBottom(qreal b)
Definition: taskSetVariableWidget.h:74
static bool includeInQtDesigner()
Definition: taskSetVariableWidget.h:315
virtual void initializeForQtDesignerExtension(makVrv::DtDe &de, QDesignerFormEditorInterface *core)
Called when initializing widget for potential Qt Designer plugin usage. Please refer to Qt documentat...
Definition: taskSetVariableWidget.h:471
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:58
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:173
virtual void setSelection(const std::set< makVrv::DtUniqueID > &selection)
The selection set can be used to determine the diplay units to show.
Definition: taskSetVariableWidget.h:217
double myBottom
Definition: taskSetVariableWidget.h:78
QRadioButton * myUseSpecific
Definition: taskSetVariableWidget.h:367
virtual const std::set< makVrv::DtUniqueID > & selection() const
Definition: taskSetVariableWidget.h:220
Basic implementation that has a label at the top.
Definition: taskSetVariableWidget.h:228
qreal bottom() const
Definition: taskSetVariableWidget.h:72
Contains makVrv::DtSimEntry class.
virtual void widgetInitializedForDialog(DtScriptedTaskDialog *, const std::vector< makVrv::DtSimEntry * > &data)
Called when the widget is initialized from a scripted task dialog. Default implementation is to do no...
Definition: taskSetVariableWidget.h:212
QWidget * myTopLine
Definition: taskSetVariableWidget.h:363
Definition: taskSetVariableWidget.h:419
boost::signals2::signal< void(bool)> signal_topLevelCheckStateChanged
Definition: taskSetVariableWidget.h:313
int myIndent
Definition: taskSetVariableWidget.h:357
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:378
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:348
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:354
virtual std::string designerGroup() const
The designer group that this is going into.
Definition: taskSetVariableWidget.h:444
#define DT_DLL_VRFGUIDATAENTRYWIDGETS
Definition: vrfGuiDataEntryWidgets.h:22
virtual std::string className() const
Definition: taskSetVariableWidget.h:439
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:179
bool myIsInternal
Definition: taskSetVariableWidget.h:350
static bool includeInQtDesigner()
These methods must be implemented in order to be considered a DtTaskSetVariable that can be used as p...
Definition: taskSetVariableWidget.h:201
DtRange myRange
Definition: taskSetVariableWidget.h:349
virtual bool includeInDesigner() const
Include this class in the designer plugin.
Definition: taskSetVariableWidget.h:464
Definition: taskSetVariableWidget.h:60
double myTop
Definition: taskSetVariableWidget.h:74
Base class to provide boost signal/slot management.
QHBoxLayout * mySpacedLayout
Definition: taskSetVariableWidget.h:359
static bool canBeUsedAsWidget()
Whether or not this shows up as a usable variable widget.
Definition: taskSetVariableWidget.h:185
Creator class to be used when creating instances of task/set variables.
Definition: taskSetVariableWidget.h:375
QWidget * myChoiceCanvas
Definition: taskSetVariableWidget.h:365
virtual DtTaskSetVariableWidgetInterface * create(makVrv::DtDe &de, QWidget *parent, const Qt::WindowFlags &flags=0, const DtTaskSetVariableWidgetInterface::CreationFlags &cflags=DtTaskSetVariableWidgetInterface::NormalMode)
Definition: taskSetVariableWidget.h:428
makVrv::DtSignalConnectionManager myConnections
Definition: taskSetVariableWidget.h:347
Contains makVrv::DtUniqueID type.
virtual const std::set< makVrv::DtUniqueID > & selection() const
Definition: taskSetVariableWidget.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:70
virtual makVrv::DtUnicode codeVariableType() const
Definition: taskSetVariableWidget.h:434
virtual bool isValid()
Validity check for data entered.
Definition: taskSetVariableWidget.h:97
DtRange & operator=(const DtRange &rhs)
Definition: taskSetVariableWidget.h:69
virtual std::string headerFile() const
The header file to include when generating code.
Definition: taskSetVariableWidget.h:449
Extension interface for contents for definition of variables in the scripted task meta data variable ...
Definition: taskSetVariableWidget.h:83
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:197
DtRange(const DtRange &orig)
Definition: taskSetVariableWidget.h:68
QSpacerItem * mySpacerItem
Definition: taskSetVariableWidget.h:370
virtual void setTopLineVisible(bool)
Hides top line.
Definition: taskSetVariableWidget.h:138
CreationFlags myCreationFlags
Definition: taskSetVariableWidget.h:351
QString myVariableData
Definition: taskSetVariableWidget.h:353

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)