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/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;
50 
51 namespace makVrv
52 {
53  class DtDe;
54 }
55 
56 namespace makVrf
57 {
58  class DtScriptedTaskVariableLayoutConverter;
59  class DtScriptedTaskDialog;
60 
62  {
63  Q_OBJECT
64  Q_PROPERTY(qreal top READ top WRITE setTop)
65  Q_PROPERTY(qreal bottom READ bottom WRITE setBottom)
66 
67  public:
68  DtRange() : myBottom(-100000.), myTop(100000) {};
69  DtRange(const DtRange& orig) : myBottom(orig.myBottom), myTop(orig.myTop) {};
70  DtRange& operator=(const DtRange& rhs) { myBottom = rhs.myBottom; myTop = rhs.myTop; return *this; };
71 
72  qreal top() const { return myTop; };
73  qreal bottom() const { return myBottom; };
74  void setTop(qreal t) { myTop = t; };
75  void setBottom(qreal b) { myBottom = b; };
76 
77  public:
78  double myTop;
79  double myBottom;
80  };
81 
85  {
86  public:
87  DtTaskSetVariableWidgetExtensionInterface(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0);
89 
92  virtual int setFrom(const DtScriptedTaskVariable&, QGridLayout* parentLayout, int startRow) = 0;
93 
95  virtual void setTo(DtScriptedTaskVariable&) const = 0;
96 
98  virtual bool isValid()
99  {
100  return true;
101  }
102 
104  virtual void setReadOnly(bool) = 0;
105 
106  protected:
108  };
109 
117  {
118  public:
120  {
121  NormalMode = 0x00000000,
122  QtDesignerMode = 0x00000001
123  };
124 
126 
127  //DTOR
129 
132  virtual void setLabel(const std::string&) = 0;
133  virtual void setLabel(const QString&) = 0;
134 
136  virtual void setToolTip(const QString&) = 0;
137 
139  virtual void setTopLineVisible(bool)
140  {
141  }
142 
143  virtual bool topLineVisible() const
144  {
145  return false;
146  }
147 
149  virtual bool isValid() const = 0;
150 
155  virtual void setRange(double bottom, double top) = 0;
156 
158  virtual void setDefaultValue(const std::string&) = 0;
159 
163 
166  virtual void setVariableData(const std::string&) = 0;
167 
169  virtual void setupFrom(const std::vector<makVrv::DtSimEntry*>& data) = 0;
170 
172  virtual DtReaderWriter* createBoundVariable(const std::string& variableName) = 0;
173 
175  virtual void setupFromBoundVariable(const DtReaderWriter* variableName) = 0;
176 
178  virtual DtTaskSetVariableWidgetExtensionInterface* parameterContents(QWidget* parent, const Qt::WindowFlags& flags = 0) const
179  {
180  return 0;
181  }
182 
184  virtual bool guiElementOnly() const
185  {
186  return false;
187  }
188 
190  static bool canBeUsedAsWidget()
191  {
192  return true;
193  }
194 
196  virtual void setIndent(int) = 0;
197 
199  virtual std::string variableDataFromUiDesigner(const QDomElement&, const DtScriptedTaskVariableLayoutConverter&) const = 0;
200 
202  static void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core)
203  {
204  }
205 
206  static bool includeInQtDesigner()
207  {
208  return true;
209  }
210 
213  virtual std::string scriptedTaskVariableName() const = 0;
215 
217  virtual void widgetInitializedForDialog(DtScriptedTaskDialog*, const std::vector<makVrv::DtSimEntry*>& data)
218  {
219  }
220 
222  virtual void setSelection(const std::set<makVrv::DtUniqueID>& selection) {};
223  virtual void setSelection(const std::vector<makVrv::DtSimEntry*>& data) {};
224 
225  virtual const std::set<makVrv::DtUniqueID>& selection() const
226  {
227  static std::set<makVrv::DtUniqueID> theEmptySet;
228  return theEmptySet;
229  }
230  };
231 
234  {
235  Q_OBJECT
236  Q_PROPERTY(QString label READ label WRITE setLabel)
237  Q_PROPERTY(bool isInternal READ isInternal WRITE setIsInternal)
238  Q_PROPERTY(int indent READ indent WRITE setIndent)
239  Q_PROPERTY(QString variableData READ variableData WRITE setVariableData DESIGNABLE false)
240 
241  public:
242  DtTaskSetVariableWidget(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0, const CreationFlags& cflags = NormalMode);
243 
244  //DTOR
245  virtual ~DtTaskSetVariableWidget();
246 
248  virtual void setToolTip(const QString&);
249 
252  virtual void setLabel(const std::string&);
253 
255  virtual void setLabel(const QString&);
256 
258  virtual void setVariableData(const std::string&);
259 
261  virtual void setVariableData(const QString&);
262  virtual QString variableData() const;
263 
264  virtual QString label() const;
265 
267  virtual void setupFrom(const std::vector<makVrv::DtSimEntry*>& data);
268 
270  virtual void setIsInternal(bool);
271  virtual bool isInternal() const;
272 
274  virtual void setTopLineVisible(bool);
275  virtual bool topLineVisible() const;
276 
278  virtual void createTopLine();
279 
282  virtual void setIndent(int);
283  virtual int indent() const;
284 
286  virtual bool isValid() const;
287 
289  virtual void setTopLabelChecked(bool);
290  virtual bool topLabelChecked() const;
291 
293  virtual void setRange(double, double)
294  {
295  }
296 
297  virtual void setRange(const DtRange&);
298  virtual void setRangeTop(double);
299  virtual void setRangeTop(int);
300  virtual double rangeTop() const;
301 
302  virtual void setRangeBottom(double);
303  virtual void setRangeBottom(int);
304  virtual double rangeBottom() const;
305 
306  virtual const DtRange& getRange() const;
307 
310  virtual void setTopLabelIsCheckable(bool);
311  virtual bool topLabelIsCheckable() const;
312  virtual void getDefaultSpecificTitles(QString& defaultTitle, QString& specificTitle) const;
313  virtual void setDefaultSpecificTitles(const QString& defaultTitle, const QString& specificTitle);
314 
316  virtual void setupDefaultSpecificFromVariableData(const DtString& var);
317 
318  boost::signals2::signal<void (bool)> signal_topLevelCheckStateChanged;
319 
320  static bool includeInQtDesigner()
321  {
322  return true;
323  }
324 
325  virtual std::string variableDataFromUiDesigner(const QDomElement&, const DtScriptedTaskVariableLayoutConverter&) const;
326 
327  virtual std::string scriptedTaskVariableName() const;
328 
330  virtual void setSelection(const std::set<makVrv::DtUniqueID>& selection);
331  virtual void setSelection(const std::vector<makVrv::DtSimEntry*>& data);
332  virtual const std::set<makVrv::DtUniqueID>& selection() const override
333  {
334  return mySelection;
335  }
336 
337  virtual void setDefaultValueFromStateProperty(const DtPropertyInterface&);
338 
339  protected:
341  virtual void selectionChanged(const std::set<makVrv::DtUniqueID>& oldSelection);
342 
343  signals:
344 
347  void validityUpdated();
348 
349  protected slots:
350  virtual void topLabelCheckStateChanged();
351 
352  protected:
359 
360  QString myVariableData;
361  std::set<makVrv::DtUniqueID> mySelection;
362 
363  public:
364  int myIndent;
366  QHBoxLayout* mySpacedLayout;
367 
370  QWidget* myTopLine;
372  QWidget* myChoiceCanvas;
373  QRadioButton* myUseDefault;
374  QRadioButton* myUseSpecific;
375  QSpacerItem* myTopSeparator;
376  QHBoxLayout* myTopLineLayout;
377  QSpacerItem* mySpacerItem;
378  };
379 
381 
383  {
384  public:
386  {
387  };
388 
389  virtual DtTaskSetVariableWidgetInterface* create(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0,
391 
392  virtual makVrv::DtUnicode codeVariableType() const = 0;
393  virtual std::string className() const = 0;
394 
395  virtual bool canBeUsedAsWidget() const = 0;
396 
399 
401  virtual std::string designerIcon() const
402  {
403  return "../data/images/icons/Simulate_FrontEnd_Icon.ico";
404  }
405 
407  virtual std::string designerGroup() const = 0;
408 
410  virtual std::string headerFile() const = 0;
411 
413  virtual std::string variableName() const = 0;
414 
416  virtual bool includeInDesigner() const = 0;
417 
420  virtual void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core) = 0;
421 
423  };
424 
425  template <typename _Class>
427  {
428  public:
430 
432  {
433  };
434 
435  virtual DtTaskSetVariableWidgetInterface* create(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0,
437  {
438  return new _Class(de, parent, flags, cflags);
439  }
440 
442  {
443  return _Class::codeVariableType();
444  }
445 
446  virtual std::string className() const
447  {
448  return _Class::staticMetaObject.className();
449  }
450 
451  virtual std::string designerGroup() const
452  {
453  return _Class::designerGroup();
454  }
455 
456  virtual std::string headerFile() const
457  {
458  return _Class::headerFile();
459  }
460 
461  virtual std::string variableName() const
462  {
463  return _Class::variableName();
464  }
465 
466  virtual bool canBeUsedAsWidget() const
467  {
468  return _Class::canBeUsedAsWidget();
469  }
470 
471  virtual bool includeInDesigner() const
472  {
473  return _Class::includeInQtDesigner();
474  }
475 
478  virtual void initializeForQtDesignerExtension(makVrv::DtDe& de, QDesignerFormEditorInterface* core)
479  {
480  _Class::initializeForQtDesignerExtension(de, core);
481  }
482  };
483 }
QVBoxLayout * myVariableContentLayout
When creating subclasses of this item, use the variable content layout to add your content...
Definition: taskSetVariableWidget.h:369
QSpacerItem * myTopSeparator
Definition: taskSetVariableWidget.h:375
virtual void setSelection(const std::vector< makVrv::DtSimEntry * > &data)
Definition: taskSetVariableWidget.h:223
virtual bool topLineVisible() const
Definition: taskSetVariableWidget.h:143
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:431
QLabel * myTopLabel
Definition: taskSetVariableWidget.h:371
virtual bool canBeUsedAsWidget() const
Definition: taskSetVariableWidget.h:466
CreationFlags
Definition: taskSetVariableWidget.h:119
virtual std::string designerIcon() const
Used for Qt Designer plugins.
Definition: taskSetVariableWidget.h:401
virtual std::string variableName() const
The default variable nameto initially assign to this object.
Definition: taskSetVariableWidget.h:461
makVrv::DtDe & myDe
Definition: taskSetVariableWidget.h:353
qreal top() const
Definition: taskSetVariableWidget.h:72
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:121
virtual ~DtTaskSetVariableWidgetInterface()
Definition: taskSetVariableWidget.h:128
DtTaskSetVariableWidgetCreator()
Definition: taskSetVariableWidget.h:429
Definition: readerWriter.h:85
QRadioButton * myUseDefault
Definition: taskSetVariableWidget.h:373
QHBoxLayout * myTopLineLayout
Definition: taskSetVariableWidget.h:376
QVBoxLayout * myVariableWidgetLayout
Definition: taskSetVariableWidget.h:365
void setBottom(qreal b)
Definition: taskSetVariableWidget.h:75
static bool includeInQtDesigner()
Definition: taskSetVariableWidget.h:320
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:478
DtTaskSetVariableWidgetInterface()
Definition: taskSetVariableWidget.h:125
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:178
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:222
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:48
double myBottom
Definition: taskSetVariableWidget.h:79
QRadioButton * myUseSpecific
Definition: taskSetVariableWidget.h:374
virtual const std::set< makVrv::DtUniqueID > & selection() const
Definition: taskSetVariableWidget.h:225
Basic implementation that has a label at the top.
Definition: taskSetVariableWidget.h:233
qreal bottom() const
Definition: taskSetVariableWidget.h:73
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:217
QWidget * myTopLine
Definition: taskSetVariableWidget.h:370
Definition: taskSetVariableWidget.h:426
boost::signals2::signal< void(bool)> signal_topLevelCheckStateChanged
Definition: taskSetVariableWidget.h:318
int myIndent
Definition: taskSetVariableWidget.h:364
This class will define the interface needed for being a task set variable that can be used in task di...
Definition: taskSetVariableWidget.h:116
virtual ~DtTaskSetVariableWidgetCreatorInterface()
Definition: taskSetVariableWidget.h:385
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
makVrv::DtDe & myDe
Definition: taskSetVariableWidget.h:107
bool myTopLabelIsCheckable
Definition: taskSetVariableWidget.h:355
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:361
virtual std::string designerGroup() const
The designer group that this is going into.
Definition: taskSetVariableWidget.h:451
#define DT_DLL_VRFGUIDATAENTRYWIDGETS
Definition: vrfGuiDataEntryWidgets.h:22
virtual std::string className() const
Definition: taskSetVariableWidget.h:446
void setTop(qreal t)
Definition: taskSetVariableWidget.h:74
virtual bool guiElementOnly() const
Returns true if this is a GUI element only. Default is false.
Definition: taskSetVariableWidget.h:184
virtual const std::set< makVrv::DtUniqueID > & selection() const override
Definition: taskSetVariableWidget.h:332
bool myIsInternal
Definition: taskSetVariableWidget.h:357
static bool includeInQtDesigner()
These methods must be implemented in order to be considered a DtTaskSetVariable that can be used as p...
Definition: taskSetVariableWidget.h:206
DtRange myRange
Definition: taskSetVariableWidget.h:356
virtual bool includeInDesigner() const
Include this class in the designer plugin.
Definition: taskSetVariableWidget.h:471
Definition: taskSetVariableWidget.h:61
double myTop
Definition: taskSetVariableWidget.h:75
Base class to provide boost signal/slot management.
QHBoxLayout * mySpacedLayout
Definition: taskSetVariableWidget.h:366
static bool canBeUsedAsWidget()
Whether or not this shows up as a usable variable widget.
Definition: taskSetVariableWidget.h:190
Creator class to be used when creating instances of task/set variables.
Definition: taskSetVariableWidget.h:382
QWidget * myChoiceCanvas
Definition: taskSetVariableWidget.h:372
virtual DtTaskSetVariableWidgetInterface * create(makVrv::DtDe &de, QWidget *parent, const Qt::WindowFlags &flags=0, const DtTaskSetVariableWidgetInterface::CreationFlags &cflags=DtTaskSetVariableWidgetInterface::NormalMode)
Definition: taskSetVariableWidget.h:435
makVrv::DtSignalConnectionManager myConnections
Definition: taskSetVariableWidget.h:354
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:72
virtual makVrv::DtUnicode codeVariableType() const
Definition: taskSetVariableWidget.h:441
virtual bool isValid()
Validity check for data entered.
Definition: taskSetVariableWidget.h:98
DtRange & operator=(const DtRange &rhs)
Definition: taskSetVariableWidget.h:70
virtual std::string headerFile() const
The header file to include when generating code.
Definition: taskSetVariableWidget.h:456
Extension interface for contents for definition of variables in the scripted task meta data variable ...
Definition: taskSetVariableWidget.h:84
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:202
DtRange(const DtRange &orig)
Definition: taskSetVariableWidget.h:69
QSpacerItem * mySpacerItem
Definition: taskSetVariableWidget.h:377
virtual void setTopLineVisible(bool)
Hides top line.
Definition: taskSetVariableWidget.h:139
CreationFlags myCreationFlags
Definition: taskSetVariableWidget.h:358
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:162
QString myVariableData
Definition: taskSetVariableWidget.h:360

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)