VR-Forces 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) 2024 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/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 std::string& uuidString, 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 std::string chooseNewAttributeName(const DtVisualizerSchema::SchemaParameters& unusedSchemaParameters);
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 const std::string& selectedInstanceName();
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  virtual void queryLeafFilePath(DtDe& de, const std::string& importType, const std::string& path, const std::string& fileFilter);
194 
196  virtual void checkIfModified();
197 
198  protected:
199 
200  void setupGui();
201 
204  QString nameOfSelectedElement() const;
205 
206  //Utility function.
207  int indexOfSelectedVisualizer();
208 
209  // May return empty string
210  std::string uuidStringOfSelectedVisualizer();
211 
214  QString nameOfSelectedAttribute() const;
215 
217  virtual bool isEmpty();
218 
221  virtual void slot_jumpToDefinition(const DtUnicode& element);
222 
226  virtual void slot_jumpToDefByModelDef(const DtUnicode& modelDef);
227 
228  virtual std::string uuidStringFromVisDefTreeItem(QTreeWidgetItem* item);
229 
230  public slots:
231 
232  void slot_currentElementItemChanged ( QTreeWidgetItem * current,
233  QTreeWidgetItem * previous );
234 
235  void slot_currentVisualizerDefItemChanged ( QTreeWidgetItem * current,
236  QTreeWidgetItem * previous );
237 
238  void slot_addElementDefinition();
239  void slot_removeElementDefinition();
240  void slot_renameElementDefinition();
241 
242  void slot_addVisualizerDef();
243  void slot_removeVisualizerDef();
244  void slot_changeFileName();
245 
246  void slot_addAttribute();
247  void slot_removeAttribute();
248  void slot_removeOverrideAttribute();
249  void slot_changeFileFilter();
250  void slot_copyVisualizerDefinition();
251  void slot_pasteAndReplaceVisualizerDefinition();
252  void slot_pasteAndAddVisualizerDefinition();
253  void slot_clearVisualizerDefinitions();
254  void slot_modelSetChanged(int index);
255  void slot_fileSaveToChanged(int index);
256 
257  void destroyEditors();
258 
260  void slot_displayContextMenu(const QPoint& point);
261 
264  void slot_jumpToModelDefinition();
265 
266  protected:
267 
268  DtDe& myDe;
269  DtElementDefinitionTypeManager::ElementDefinitionType myType;
270  DtStateVisualizer::Type myVisType;
272  QMap<QString,QTreeWidgetItem*> myCacheMap;
273  bool myShowDeleteDialog;
274  std::vector<std::string> myCopiedVisDefs;
275 
276  QString mySelectedItemNameBackup;
277 
278  QList<QTreeWidgetItem*> myTopItemCache;
279  QList<QTreeWidgetItem*> myDeleteCache;
280  QList<QTreeWidgetItem*> myVisualizerDefinitionTreeItemDeleteWidgetCache;
281 
282  QVBoxLayout* myMainLayout;
283  QSplitter* mySplitter;
284  QWidget* myLeftWidgetPane;
285  QVBoxLayout* myLeftWidgetLayout;
286  QWidget* myRightWidgetPane;
287  QVBoxLayout* myRightWidgetLayout;
288 
289  QLabel* myElementDefinitionLabel;
290  QTreeWidget* myTreeWidget;
291 
292  QHBoxLayout* myElementButtonLayout;
293  QPushButton* myAddElementButton;
294  QPushButton* myRemoveElementButton;
295  QPushButton* myRenameElementButton;
296 
297  QHBoxLayout* myVisualizerDefinitionButtonLayout;
298  QPushButton* myAddVisualizerDefButton;
299  QPushButton* myRemoveVisualizerDefButton;
300  QPushButton* myChangeFilePathButton;
301  QPushButton* myAddVisualizerAttributeButton;
302  QPushButton* myRemoveVisualizerAttributeButton;
303  QPushButton* myRemoveLocalOverrideVisualizerButton;
304  QPushButton* myChangeFileFilterButton;
305  QPushButton* myCopyVisualizerDefinitionButton;
306  QPushButton* myPasteAndReplaceVisualizerDefinitionButton;
307  QPushButton* myPasteAndAddVisualizerDefinitionButton;
308  QPushButton* myClearVisualizerDefinitionsButton;
309 
310  QLabel* myVisualDefinitionLabel;
311 
312  QHBoxLayout* myModelSetLayout;
313  QHBoxLayout* myFileSaveToLayout;
314  QHBoxLayout* myCopiedVisDefListLayout;
315 
316  QLabel* myModelSetLabel;
317  QLabel* myFileSaveToLabel;
318  QLabel* myCopiedVisDefListLabel;
319 
320  QColor myNormalDefinitionColor;
321  QColor myInheritedDefinitionColor;
322  QColor myDuplicateDefinitionColor;
323  QColor myInvalidDefinitionColor;
324 
325  QComboBox* myModelSetComboBox;
326  QComboBox* myFileSaveToComboBox;
327  QComboBox* myCopiedVisDefComboBox;
328 
329  QTreeWidget* myVisualizerDefinitionTreeWidget;
330  QTextEdit* myDescriptionText;
331 
332  std::string mySelectedInstanceName;
333 
334  DtPersistenceControlsInterface* myPersistenceToolbar;
335 
336  DtSignalConnectionManager myConnectionManager;
337  };
338 }
Definition: DtElementEditorInterface.h:22
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:561
Abstract interface for controlling persistence of state in a dialog.
Definition: DtPersistenceControlsInterface.h:20
Logic class for the DtElementEditorWidget.
Definition: DtElementEditorLogic.h:34
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:30
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:76
Definition: DtVisualizerSchema.h:19

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)