VR-Forces 5.0.2 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtInstanceEditorWidget.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 #include <vrvCoreQt/vrvCoreQt.h>
13 #include <QtWidgets/QWidget>
15 #include <boost/unordered_map.hpp>
16 #include <set>
17 
18 class QActionGroup;
19 class QHBoxLayout;
20 class QMenu;
21 class QPushButton;
22 class QTreeWidget;
23 class QTreeWidgetItem;
24 class QToolBox;
25 class QLabel;
26 class QTextEdit;
27 class QComboBox;
28 class QHBoxLayout;
29 class QLineEdit;
30 
31 namespace makVrv
32 {
33  class DtContextTreeWidget;
34 
37  class DT_DLL_VRVCOREQT DtInstanceEditorWidget : public QWidget,
39  {
40  Q_OBJECT
41  Q_PROPERTY(QColor NormalDefinitionColor MEMBER myNormalDefinitionColor USER true)
42  Q_PROPERTY(QColor DuplicateDefinitionColor MEMBER myDuplicateDefinitionColor USER true)
43  Q_PROPERTY(QColor ErrorTextColor MEMBER myErrorTextColor USER true)
44  public:
45  DtInstanceEditorWidget(DtDe& de, const QString& widgetEditorType, QWidget* parent = 0, Qt::WindowFlags flags = 0);
46 
47  virtual ~DtInstanceEditorWidget();
48 
50  virtual void setInstanceTypeName(const std::string& name );
51 
53  virtual void addInstance(const std::string& name);
54 
56  virtual void setDuplicate(const std::string& name, bool b);
57 
59  virtual void deleteInstance(const std::string& name);
60 
63  virtual void setInstanceFlags(const std::string& name, bool isSaved, bool isOk, bool isEnabled);
64 
66  virtual void clearInstances();
67 
69  virtual void selectInstance(const std::string& name);
70 
72  virtual std::vector<std::string> selectedInstances() const;
73 
75  virtual void clearFilters();
76 
78  virtual void selectFilter(const std::string& name);
79 
82  virtual void addFilterItem(const std::string&, int);
83 
87  virtual void setEnableFilterEditor(bool filters);
88 
90  virtual void setInstancesCopyable(bool copyable);
91 
93  virtual void setInstancesEditable(bool editable);
94 
96  virtual void setInstancesRenamable(bool renamable);
97 
99  virtual void setInstancesRemovable(bool removable);
100 
102  virtual void setFilters(const std::vector<std::pair<std::string,bool> >& filters);
103 
105  virtual void setFilterToolTip(const std::string& text);
106 
108  virtual QPushButton* addButton();
109 
111  virtual void setDeleteButtonText(QString text);
112 
114  virtual void setCopyButtonText(QString text);
115 
117  virtual void setEditButtonText(QString text);
118 
120  virtual void setRenameButtonText(QString text);
121 
123  virtual void sortInstances();
124 
127  virtual void setupInvalidInstances();
128 
130  virtual void renameInstance(const std::string& oldName, const std::string& newName, int selectedInstanceIndex);
131 
133  virtual void setDeleteButtonEnabled(bool);
134 
136  virtual void setDeleteButtonToolTip(const QString&);
137 
140  virtual void setSelectionMode(SelectionMode mode);
141 
143  virtual void invalidateColorQtProperties();
144 
146  virtual void resetFilters();
147 
148  protected slots:
149 
150  virtual void on_myTreeWidget_itemSelectionChanged();
151  virtual void on_myAddButton_clicked();
152 
153  virtual void on_myDeleteButton_clicked();
154  virtual void on_myCopyButton_clicked();
155  virtual void on_myEditButton_clicked();
156  virtual void on_myRenameButton_clicked();
157  virtual void on_myFilterGroup_triggered(const QString&);
158  virtual void on_myFilterActionGroup_triggered(QAction*);
159  virtual void on_mySearchLineEdit_textChanged(const QString&);
160  virtual void on_mySearchCleanButton_released();
161 
162  //{
163  //Internal functions used to activate editors
164  void on_myTreeWidget_itemClicked(QTreeWidgetItem * item, int column);
165  void on_myTreeWidget_itemActivated(QTreeWidgetItem * item, int column);
166  void on_myTreeWidget_itemDoubleClicked(QTreeWidgetItem * item, int column);
167  //}
168 
169 
170  virtual std::string selectedInstance() const;
171  virtual std::string selectedInstanceCategory() const;
172  virtual int selectedInstanceCategoryIndex() const;
173 
174  protected:
175 
176  QString askForNewInstanceName(QString initial, const QString& title);
177 
178  void setupGui();
179 
180  // Helper function for checking if we have an item already
181  // Returns the item* if found or null if not
182  QTreeWidgetItem* findItem(const std::string& name);
183 
185  virtual void updateErrorMessage(QTreeWidgetItem* item);
186 
187  protected:
188 
189  DtDe& myDe;
190 
191  bool myInstancesCopyable;
192  bool myInstancesEditable;
193  bool myInstancesRenamable;
194  bool myInstancesRemovable;
195 
196  // Way faster than searching the myTreeWidget over and over
197  typedef boost::unordered_map<std::string, QTreeWidgetItem*>::iterator ItemItr;
198  boost::unordered_map<std::string, QTreeWidgetItem*> myNameToItemMap;
199  std::set<QTreeWidgetItem*> myInvalidItems;
200 
201  QLabel* myTitle;
202  QHBoxLayout* myButtonLayout;
203  QPushButton* myAddButton;
204  QPushButton* myDeleteButton;
205  QPushButton* myCopyButton;
206  QPushButton* myEditButton;
207  QPushButton* myRenameButton;
208 
209  QLabel* mySearchLabel;
210  QLineEdit* mySearchLineEdit;
211  QPushButton* mySearchCleanButton;
212 
213  QPushButton* myFilterButton;
214  QActionGroup* myFilterActionGroup;
215 
216  QTextEdit* myErrorMessages;
217 
218  QColor myNormalDefinitionColor;
219  QColor myDuplicateDefinitionColor;
220  QColor myErrorTextColor;
221 
222  DtContextTreeWidget* myTreeWidget;
223  QString myInstanceTypeLabel;
224 
225  QString myWidgetEditorType;
226  bool myShowDeleteDialog;
227 
228  };
229 }
SelectionMode
Definition: DtInstanceEditorInterface.h:23
Abstract interface for instance editor widgets.
Definition: DtInstanceEditorInterface.h:20
#define DT_DLL_VRVCOREQT
Definition: vrvCoreQt.h:20
Contains DLL export macros.
A tree widget that will allow the addition of menu items that will appear on a context menu when the ...
Definition: DtContextTreeWidget.h:29
boost::unordered_map< std::string, QTreeWidgetItem * >::iterator ItemItr
Definition: DtInstanceEditorWidget.h:197
const char int mode
Definition: ioapi.h:38
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
Contains makVrv::DtInstanceEditorInterface class.
A widget class for editing instances.
Definition: DtInstanceEditorWidget.h:37

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)