VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptedTaskDialog.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #if !defined(Q_MOC_RUN)
21 #endif
22 #include <boost/signals2.hpp>
23 
24 #include <QtWidgets/QDialog>
25 
26 #include <vector>
27 
28 class QVBoxLayout;
29 class QScrollArea;
30 class QLabel;
31 class QFrame;
33 class DtSimMessage;
34 class QSpacerItem;
35 
36 namespace makVrf
37 {
38  class DtTaskSetVariableWidgetInterface;
39  class DtLocationEntryWidget;
40  class DtVrfFilteredListView;
41  class DtTaskSetVariableWidget;
42  class DtLocationReferenceEntryWidget;
43  class DtSimpleVariableWidget;
44 
46  {
47  public:
49  virtual ~DtQtScriptedTaskFormatter();
50 
51  virtual DtString stringRep(const DtScriptedTask&) const;
52  virtual DtString stringRep(const DtString& scriptId, const DtRwVariableBindings& variables, const DtRwVariableBindings& variableDataTypes) const;
53 
54  protected:
56  };
57 
61  {
62  Q_OBJECT
63  public:
64 
65  struct WidgetInfo
66  {
67  bool visible;
68  std::string type;
71  QHBoxLayout* hBoxLayout;
73  };
74 
75  //CTOR
76  DtScriptedTaskDialog(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0);
77 
78  //DTOR
79  virtual ~DtScriptedTaskDialog();
80 
81  virtual QSize minimumSizeHint() const;
82  virtual QSize sizeHint() const;
83 
84  virtual bool editStatement(const std::vector<makVrv::DtSimEntry*>& data, const DtSimStatement* s);
85 
87  virtual void initializeFromVariables(const QString& description, const std::vector<DtScriptedTaskVariable>& vars,
88  const std::vector<makVrv::DtSimEntry*>& initializeFrom = std::vector<makVrv::DtSimEntry*>());
89 
91  virtual void initializeFromLayout(const QString& description, const std::string& uiLayout,
92  const std::vector<makVrv::DtSimEntry*>& initializeFrom = std::vector<makVrv::DtSimEntry*>());
93 
95  virtual void setDescription(const QString&);
96 
98  virtual std::vector<DtScriptedTaskVariable> convertToVariables() const;
99 
101  virtual DtRwVariableBindings* convertToVariableBindings() const;
102 
103  virtual void setLocationValid(bool);
104 
105  virtual void validate();
106 
107  virtual QSize visibleSize();
108 
110  virtual void setupFromBoundVariables(const DtRwVariableBindings&);
111 
113  virtual DtRwVariableBindings* variableBindings() const;
114 
115  template <typename T> void getWidgetsOfType(std::vector<T>& widgets) const
116  {
117  std::map<std::string, WidgetInfo>::const_iterator iter = this->myWidgetVariables.begin();
118 
119  while (iter != this->myWidgetVariables.end())
120  {
121  T widget = dynamic_cast<T>(iter->second.widget);
122 
123  if (widget)
124  {
125  widgets.push_back(widget);
126  }
127 
128  ++iter;
129  }
130  }
131 
132  boost::signals2::signal<void (DtVrfFilteredListView*)> signal_filteredListViewSelectionChanged;
133  boost::signals2::signal<void (bool, DtTaskSetVariableWidget*)> signal_topLevelCheckStateChanged;
134 
135  virtual bool insertMapFocusHandler(DtMapFocusHandlerInterface* h, int index);
136 
138  virtual void setUiLayout(const std::string&);
139 
141  virtual QSize canvasSize();
142  virtual QWidget* contents(const std::vector<makVrv::DtSimEntry*>& data);
143 
145  virtual void setShowInternalVariables(bool);
146  bool showInternalVariables() const { return myShowInternalVariables; };
147 
148  static std::string buildLayoutFrom(makVrv::DtDe& de, const std::vector<DtScriptedTaskVariable>& vars, const std::string& description, bool showInternal = false);
149  virtual std::string buildLayoutFrom();
150 
151  virtual void resizeContentsToFit();
152 
154  virtual void setValidateBeforeSend(bool);
155  bool validateBeforeSend() const
156  {
157  return myValidateBeforeSend;
158  }
159 
160  protected:
161  virtual void slot_positionInputChanged(DtLocationReferenceEntryWidget* pew);
162  virtual void setupForLocationEntryWidget(DtLocationEntryWidget*);
163  virtual void setupForFilteredListView(DtVrfFilteredListView*);
164  virtual void setupForPositionEntryWidget(DtLocationReferenceEntryWidget*);
165  virtual void setupForSimpleVariableWidget(DtSimpleVariableWidget*);
166 
167  virtual bool initializeForScriptedTask(const std::vector<makVrv::DtSimEntry*>& data, const DtSimStatement* s);
168  virtual bool initializeForScriptedSet(const std::vector<makVrv::DtSimEntry*>& data, const DtSimStatement* s);
169  virtual bool initializeStatementForEditing(const std::vector<makVrv::DtSimEntry*>& data, const DtString& scriptId, const DtSimStatement* stmt);
170 
171  virtual void slot_topLevelCheckStateChanged(bool, DtTaskSetVariableWidget*);
172 
173  virtual void slot_filteredListViewChanged(DtVrfFilteredListView*);
174 
176  virtual void initializeFromAction(DtVrfTaskSetAction*);
177  virtual void initializeDialogFromScriptId(const std::string& scriptId);
178 
179  virtual void setupFormForDisplayFromMetaData();
180 
182  virtual void initializeDialogFromLayout(const QString& description, const std::string& scriptId);
183 
184  virtual bool wantsSelectionOfObjectInCommandMode(const std::vector<makVrv::DtSimEntry*>&) const;
185  virtual void sendRequest();
186 
188  virtual void run(const std::vector<makVrv::DtSimEntry*>&);
189 
191  virtual void setupFrom(const std::vector<makVrv::DtSimEntry*>& s);
192 
194  virtual void setupStatement(const DtSimStatement* stmt);
195 
197  virtual void postGuiSetup(const std::vector<makVrv::DtSimEntry*>& data);
198 
199  virtual void setLocationValid(DtLocationEntryWidget* loca, bool);
200 
203  virtual bool setupFromUiLayout(bool& setup, const std::vector<makVrv::DtSimEntry*>& data = std::vector<makVrv::DtSimEntry*>());
204 
207  virtual bool setupFromVariables(bool& setup, const std::vector<makVrv::DtSimEntry*>& data = std::vector<makVrv::DtSimEntry*>());
208 
210  virtual void requestUiLayout();
211 
213  virtual void receivedUiLayout(DtSimMessage*);
214 
216  virtual void initializeWidgetForVariable(DtTaskSetVariableWidgetInterface* w, const DtScriptedTaskVariable&, int index, bool fromDesigner, int& indent, bool& setup,
217  const std::vector<makVrv::DtSimEntry*>& data = std::vector<makVrv::DtSimEntry*>(), const std::set<makVrv::DtUniqueID>& selection = std::set<makVrv::DtUniqueID>());
218 
220  virtual void initializeDefaultValueFromStateProperty(DtTaskSetVariableWidgetInterface* widget,
221  const std::string& statePropertyName, const std::vector<makVrv::DtSimEntry*>& data);
222 
223  virtual void resizeToContents();
224 
225  public slots:
226 
229  virtual void updateValidity();
230 
231  public:
232  QWidget* myCanvas;
233  QVBoxLayout* myContentLayout;
235  QScrollArea* myScrollArea;
236  QWidget* myInsideWidget;
239  QVBoxLayout* myInsideLayout;
240 
241  protected:
244 
245  std::map<std::string, WidgetInfo> myWidgetVariables;
247  std::vector<DtScriptedTaskVariable> myScriptedTaskVariables;
248 
250 
251  typedef std::map<DtLocationEntryWidget*, bool> LocationValid;
253 
255 
256  std::string myUiLayout;
257 
260  std::vector<makVrv::DtUniqueID> mySimEntryIDs;
263 
264  bool myValidateBeforeSend = true;
265  };
266 
270  {
271  public:
272  DtScriptedTaskPreviewDialog(makVrv::DtDe& de, QWidget* parent, const Qt::WindowFlags& flags = 0);
273  virtual ~DtScriptedTaskPreviewDialog();
274 
276  virtual void init(const QString& description, const std::vector<DtScriptedTaskVariable>&);
277 
279  virtual void init(const QString& description, const std::string&);
280 
281  public:
284  };
285 
287  {
288  public:
289  virtual DtTaskSetDialogInterface* create(makVrv::DtDe&, QWidget* parent);
290  bool supportsType(makVrv::DtDe& de, const DtSimTaskMessageType&, const DtSimStatement*) const;
291  };
292 
294  {
295  public:
296  virtual DtTaskSetDialogInterface* create(makVrv::DtDe&, QWidget* parent);
297  bool supportsType(makVrv::DtDe& de, const DtSetMessageType&, const DtSimStatement*) const;
298  };
299 
301  {
302  public:
304  virtual DtScriptedTaskDialogCreator* create();
305 
307  static void registerInstance(makVrv::DtDe& de, DtScriptedTaskDialogCreatorInstance*);
308  };
309 
311  {
312  public:
314  virtual DtScriptedSetDialogCreator* create();
315 
317  static void registerInstance(makVrv::DtDe& de, DtScriptedSetDialogCreatorInstance*);
318  };
319 }
QVBoxLayout * myContentLayout
Definition: scriptedTaskDialog.h:233
QString myDescriptionText
Definition: scriptedTaskDialog.h:249
Definition: scriptedTaskTask.h:40
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Definition: taskSetDialogInterface.h:65
Definition: baseTaskSetDialogInterface.h:35
Definition: scriptedTaskDialog.h:65
int variableIndex
Definition: scriptedTaskDialog.h:72
makVrv::DtDe & myDe
Definition: scriptedTaskDialog.h:283
std::vector< makVrv::DtUniqueID > mySimEntryIDs
Variables when requesting UI layout during a run, will keep track of the element ids for sim entry (f...
Definition: scriptedTaskDialog.h:260
Definition: taskSetDialogInterface.h:84
Definition: scriptedTaskDialog.h:310
std::string myUiLayout
Definition: scriptedTaskDialog.h:256
bool myShowInternalVariables
Definition: scriptedTaskDialog.h:242
QFrame * myDescriptionSeparator
Definition: scriptedTaskDialog.h:238
QVBoxLayout * myInsideLayout
Definition: scriptedTaskDialog.h:239
Definition: scriptedTaskDialog.h:300
const DtSimStatement * myScriptedTaskToEdit
Definition: scriptedTaskDialog.h:262
boost::signals2::signal< void(DtVrfFilteredListView *)> signal_filteredListViewSelectionChanged
Definition: scriptedTaskDialog.h:132
This class will created a dialog from scripted task meta data and send that information to the back-e...
Definition: scriptedTaskDialog.h:60
ReaderWriter object that maintains a list of reader-writer variable bindings. It keeps a list of name...
Definition: rwVariableBindings.h:27
bool visible
Definition: scriptedTaskDialog.h:67
QHBoxLayout * hBoxLayout
Definition: scriptedTaskDialog.h:71
This widget will allow the user to pick either a destination location or destination object...
Definition: locationReferenceEntryWidget.h:32
A dialog that allows a preview of the scripted task dialog to be show without sending task requests...
Definition: scriptedTaskDialog.h:269
Basic implementation that has a label at the top.
Definition: taskSetVariableWidget.h:233
Definition: scriptedTaskDialog.h:45
Contains makVrv::DtVirtualBaseClass class.
Contains makVrf::DtBaseTaskSetDialogInterface class. This is the interface for the dialog used by mos...
std::map< DtLocationEntryWidget *, bool > LocationValid
Definition: scriptedTaskDialog.h:251
bool validateBeforeSend() const
Definition: scriptedTaskDialog.h:155
DtTaskSetVariableWidgetInterface * widget
Definition: scriptedTaskDialog.h:70
void getWidgetsOfType(std::vector< T > &widgets) const
Definition: scriptedTaskDialog.h:115
int myUiLayoutRequestId
Definition: scriptedTaskDialog.h:261
These classes will define simple data entry widgets that can be used in scripted (or other) tasks...
Definition: simpleVariableWidget.h:46
The DtScriptedTaskTask will encapsulate the variables defined by a scripted task in the variable bind...
Definition: scriptedTaskTask.h:37
File: simMsg.h.
Definition: simMessage.h:35
std::string type
Definition: scriptedTaskDialog.h:68
A widget class for managing a DtVrfTreeWidget of objects which supports user-defined filters...
Definition: vrfFilteredListView.h:64
This class will define the interface needed for being a task set variable that can be used in task di...
Definition: taskSetVariableWidget.h:116
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
A class for keeping track of meta data for variables of scripted tasks. The information is currently ...
Definition: scriptedTaskVariable.h:34
QSpacerItem * myInsideWidgetSpacerItem
Definition: scriptedTaskDialog.h:237
Definition: scriptedTaskDialog.h:293
QWidget * myCanvas
Definition: scriptedTaskDialog.h:232
Base class that must be implemented by items that wish to be part of a map focus handler chain...
Definition: mapFocusHandler.h:27
Class that is used as a template for task/set dialogs.
Definition: taskSetDialogInterface.h:46
boost::signals2::signal< void(bool, DtTaskSetVariableWidget *)> signal_topLevelCheckStateChanged
Definition: scriptedTaskDialog.h:133
bool showInternalVariables() const
Definition: scriptedTaskDialog.h:146
QWidget * myInsideWidget
Definition: scriptedTaskDialog.h:236
makVrv::DtSignalConnectionManager myConnections
Definition: scriptedTaskDialog.h:254
Base class to provide boost signal/slot management.
class DtSimStatement:
Definition: simStatement.h:38
LocationValid myLocationsValid
Definition: scriptedTaskDialog.h:252
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
This class will manage filtered list views for the basic purpose of allowing a single list view in th...
Definition: mapFocusHandler.h:77
DtScriptedTaskDialog * myScriptedTaskDialog
Definition: scriptedTaskDialog.h:282
std::vector< DtScriptedTaskVariable > myScriptedTaskVariables
Definition: scriptedTaskDialog.h:247
QLabel * myDescription
Definition: scriptedTaskDialog.h:234
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
Definition: locationEntryWidget.h:47
DtMapFocusHandler myMapFocusHandler
Definition: scriptedTaskDialog.h:243
Contains makVrf::DtTaskSetMenu, makVrf::DtVrfTaskSetAction, and makVrf::DtTaskSetMenuItem class...
Definition: vrfTaskSetAction.h:106
QScrollArea * myScrollArea
Definition: scriptedTaskDialog.h:235
makVrv::DtDe & myDe
Definition: scriptedTaskDialog.h:55
std::string scriptedTaskVariableName
Definition: scriptedTaskDialog.h:69
#define DT_DLL_VRFGUITASKSETQT
Definition: vrfGuiTaskSetQt.h:22
class DtScriptedTaskMetaData
Definition: scriptedTaskMetaData.h:57
DtScriptedTaskMetaData myScriptedTaskMetaData
Definition: scriptedTaskDialog.h:246
std::map< std::string, WidgetInfo > myWidgetVariables
Definition: scriptedTaskDialog.h:245
Definition: scriptedTaskDialog.h:286

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)