VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtElementEditorWidget.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #if !defined(Q_MOC_RUN)
13 #include <vrvCoreQt/vrvCoreQt.h>
17 #include <vrvUtil/signalslib.h>
18 #include <vrvUtil/DtUnicode.h>
20 #endif
21 
22 #include <QtWidgets/QWidget>
23 #include <QtCore/QList>
24 #include <QtCore/QMap>
25 #include <boost/bind.hpp>
26 #include <vrvUtil/signalslib.h>
27 
28 class QComboBox;
29 class QHBoxLayout;
30 class QLabel;
31 class QPushButton;
32 class QSplitter;
33 class QTreeWidget;
34 class QTreeWidgetItem;
35 class QVBoxLayout;
36 class QTextEdit;
37 
38 namespace makVrv
39 {
40  class DtElementEditorLogic;
41  class DtPersistenceControlsInterface;
42 
45  class DT_DLL_VRVCOREQT DtElementEditorWidget : public QWidget,
47  {
48  Q_OBJECT
49  Q_PROPERTY(QColor NormalDefinitionColor MEMBER myNormalDefinitionColor USER true)
50  Q_PROPERTY(QColor InheritedDefinitionColor MEMBER myInheritedDefinitionColor USER true)
51  Q_PROPERTY(QColor DuplicateDefinitionColor MEMBER myDuplicateDefinitionColor USER true)
52  Q_PROPERTY(QColor InvalidDefinitionColor MEMBER myInvalidDefinitionColor USER true)
53 
54  public:
55 
58  DtElementDefinitionTypeManager::ElementDefinitionType type,
59  DtStateVisualizer::Type visType,
60  DtDe& de, QWidget* parent,
61  DtPersistenceControlsInterface* persistenceToolbar);
62 
64  virtual ~DtElementEditorWidget();
65 
67  virtual void activate();
68 
70  virtual void deactivate();
71 
73  virtual void changeElementsStart();
74  virtual void setDuplicate(const DtUnicode& name, bool isDuplicate);
75  virtual void addElement(const DtUnicode& name, bool valid, bool bold = false);
76  virtual void addElement(const DtUnicode& name, const DtUnicode& parentName, bool valid,
77  bool bold = false);
79  virtual void setBold(const DtUnicode& name, bool bold);
80  virtual void removeElement(const DtUnicode& name);
81  virtual void changeElementsStop();
82  virtual void clearElements();
83 
86  virtual void modifiedList(std::string& list);
87  virtual void selectElement(const DtUnicode& name);
88 
89  virtual void setModelSets(const std::vector<DtUnicode>& modelSets);
90 
93  virtual void setFileSaveTo(const std::vector<std::string>& FileSaveTo);
94 
95  virtual void setCurrentModelSet(int index);
96 
99  virtual void setCurrentFileSaveTo(int index);
100 
103  virtual std::string getCurrentFileSaveTo();
104 
107  virtual void setVisDefList(std::vector<std::string>& visDefList);
108 
109  virtual void changeDefinitionStart();
110  virtual void clearDefinitions();
111  virtual void addDefinition(int index, const DtUnicode& schemaName, const DtUnicode& visualName, bool inherited);
112  virtual void updateDefinition(int index, const DtUnicode& schemaName, const DtUnicode& visualName, bool inherited);
113  virtual void removeDefinition(int index);
114  virtual void changeDefinitionStop();
115 
116 
117  virtual void changeAttributeStart();
118  virtual void addAttribute(int defIndex, const std::string& name, const DtUnicode& value,
119  bool inherited, bool valid = true);
120  virtual void removeAttribute(int defIndex, const std::string& name);
121  virtual void changeAttributeStop();
122  virtual void selectAttribute(int defIndex, const std::string& name);
123  virtual void updateAttribute(int defIndex, const std::string& name,
124  const DtUnicode& value);
125 
126  QTreeWidgetItem* findAttributeItem( int defIndex, const std::string& name);
127  virtual void setAttributeDescription(const DtUnicode& desc);
128  virtual void createAttributeEditor(int defIndex, const std::string& name,
129  const std::string& attrClass);
130  virtual void destroyAttributeEditor(int defIndex, const std::string& name);
131  bool wasAttributeEditorValueModified(int defIndex, const std::string& name);
132 
135  virtual void setDefinitionErrorHint(const DtUnicode& hints);
136 
137  virtual std::string chooseNewVisualizerDefinitionType();
138  virtual int chooseNewAttributeName(const std::vector< std::pair< std::string, DtUnicode> >& nameTypePairs);
139 
141  virtual void setRemoveElementEnabled( bool b );
142 
146  virtual void setRemoveElementToolTip(const std::string& s);
147 
149  virtual void setAddVisualDefEnabled( bool b );
150 
152  virtual void setRemoveVisualDefEnabled( bool b );
153 
155  virtual void setChangeFileNameEnabled(bool b);
156 
158  virtual void setAddAttributeEnabled( bool b );
159 
161  virtual void setRemoveAttributeEnabled( bool b );
162 
164  virtual void showAddedElements(std::vector<DtUnicode>& addedNames,
165  std::vector<DtUnicode>& skippedNames);
166 
168  virtual std::vector<std::string> selectedInstancesNames();
169 
170 
173  virtual const DtUnicode getElementNameAbove(const DtUnicode& name);
174 
177  virtual const DtUnicode getElementNameBelow(const DtUnicode& name);
178 
180  virtual bool isLastElementUnder(const DtUnicode& name, const DtUnicode& parentName);
181 
183  virtual bool isFirstElementUnder(const DtUnicode& name, const DtUnicode& parentName);
184 
186  virtual void expandItem(const DtUnicode& name);
187 
189  virtual void invalidateColorQtProperties();
190 
192 
194  virtual void checkIfModified();
195 
196  protected:
197 
198  void setupGui();
199 
202  QString nameOfSelectedElement() const;
203 
204  //Utility function.
205  int indexOfSelectedVisualizer();
206 
209  QString nameOfSelectedAttribute() const;
210 
212  virtual bool isEmpty();
213 
216  virtual void slot_jumpToDefinition(const DtUnicode& element);
217 
221  virtual void slot_jumpToDefByModelDef(const DtUnicode& modelDef);
222 
223  public slots:
224 
225  void slot_currentElementItemChanged ( QTreeWidgetItem * current,
226  QTreeWidgetItem * previous );
227 
228  void slot_currentVisualizerDefItemChanged ( QTreeWidgetItem * current,
229  QTreeWidgetItem * previous );
230 
231  void slot_addElementDefinition();
232  void slot_removeElementDefinition();
233  void slot_renameElementDefinition();
234 
235  void slot_addVisualizerDef();
236  void slot_removeVisualizerDef();
237  void slot_changeFileName();
238 
239  void slot_addAttribute();
240  void slot_removeAttribute();
241  void slot_removeOverrideAttribute();
242  void slot_changeFileFilter();
243  void slot_copyVisualizerDefinition();
244  void slot_pasteAndReplaceVisualizerDefinition();
245  void slot_pasteAndAddVisualizerDefinition();
246  void slot_clearVisualizerDefinitions();
247  void slot_modelSetChanged(int index);
248  void slot_fileSaveToChanged(int index);
249 
250  void destroyEditors();
251 
253  void slot_displayContextMenu(const QPoint& point);
254 
257  void slot_jumpToModelDefinition();
258 
259  protected:
260 
261  DtDe& myDe;
262  DtElementDefinitionTypeManager::ElementDefinitionType myType;
263  DtStateVisualizer::Type myVisType;
265  QMap<QString,QTreeWidgetItem*> myCacheMap;
266  bool myShowDeleteDialog;
267  std::vector<std::string> myCopiedVisDefs;
268 
269  QString mySelectedItemNameBackup;
270 
271  QList<QTreeWidgetItem*> myTopItemCache;
272  QList<QTreeWidgetItem*> myDeleteCache;
273  QList<QTreeWidgetItem*> myVisualizerDefinitionTreeItemDeleteWidgetCache;
274 
275  QVBoxLayout* myMainLayout;
276  QSplitter* mySplitter;
277  QWidget* myLeftWidgetPane;
278  QVBoxLayout* myLeftWidgetLayout;
279  QWidget* myRightWidgetPane;
280  QVBoxLayout* myRightWidgetLayout;
281 
282  QLabel* myElementDefinitionLabel;
283  QTreeWidget* myTreeWidget;
284 
285  QHBoxLayout* myElementButtonLayout;
286  QPushButton* myAddElementButton;
287  QPushButton* myRemoveElementButton;
288  QPushButton* myRenameElementButton;
289 
290  QHBoxLayout* myVisualizerDefinitionButtonLayout;
291  QPushButton* myAddVisualizerDefButton;
292  QPushButton* myRemoveVisualizerDefButton;
293  QPushButton* myChangeFilePathButton;
294  QPushButton* myAddVisualizerAttributeButton;
295  QPushButton* myRemoveVisualizerAttributeButton;
296  QPushButton* myRemoveLocalOverrideVisualizerButton;
297  QPushButton* myChangeFileFilterButton;
298  QPushButton* myCopyVisualizerDefinitionButton;
299  QPushButton* myPasteAndReplaceVisualizerDefinitionButton;
300  QPushButton* myPasteAndAddVisualizerDefinitionButton;
301  QPushButton* myClearVisualizerDefinitionsButton;
302 
303  QLabel* myVisualDefinitionLabel;
304 
305  QHBoxLayout* myModelSetLayout;
306  QHBoxLayout* myFileSaveToLayout;
307  QHBoxLayout* myCopiedVisDefListLayout;
308 
309  QLabel* myModelSetLabel;
310  QLabel* myFileSaveToLabel;
311  QLabel* myCopiedVisDefListLabel;
312 
313  QColor myNormalDefinitionColor;
314  QColor myInheritedDefinitionColor;
315  QColor myDuplicateDefinitionColor;
316  QColor myInvalidDefinitionColor;
317 
318  QComboBox* myModelSetComboBox;
319  QComboBox* myFileSaveToComboBox;
320  QComboBox* myCopiedVisDefComboBox;
321 
322  QTreeWidget* myVisualizerDefinitionTreeWidget;
323  QTextEdit* myDescriptionText;
324 
325  DtPersistenceControlsInterface* myPersistenceToolbar;
326 
327  DtSignalConnectionManager myConnectionManager;
328  };
329 }
Definition: DtElementEditorInterface.h:19
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
Contains makVrv::DtElementEditorInterface class.
The main widget for editing element definitions.
Definition: DtElementEditorWidget.h:45
#define DT_DLL_VRVCOREQT
Definition: vrvCoreQt.h:20
Contains DLL export macros.
The element type manager is responsible for knowing about the types of elements as well as owning the...
Definition: DtElementDefinitionManager.h:500
Abstract interface for controlling persistence of state in a dialog.
Definition: DtPersistenceControlsInterface.h:20
Logic class for the DtElementEditorWidget.
Definition: DtElementEditorLogic.h:32
Contains makVrv:DtStateVisualizer class.
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
The DtStateVisualizer is an abstract class. Developers derive from this to create logic that &quot;directs...
Definition: DtStateVisualizer.h:32
Base class to provide boost signal/slot management.
Definition: translator.h:58
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

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)