VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
uiPropertiesTable.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2013 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
11 #if !defined(Q_MOC_RUN)
15 #include <readerWriter/rwInt.h>
16 #include <readerWriter/rwReal.h>
17 #include <readerWriter/rwString.h>
19 #endif
20 
21 #include <QtWidgets/QHeaderView>
22 #include <QtGui/QKeyEvent>
23 #include <QtWidgets/QStyledItemDelegate>
24 #include <QtWidgets/QComboBox>
25 
28 class QTableWidgetItem;
29 class QHBoxLayout;
30 class QToolButton;
31 class QVBoxLayout;
32 class DtRwPropertiesList;
33 class DtRwPropertiesMap;
34 class QCheckBox;
35 
39 {
40 public:
41  DtUiPropertiesTableWidget(QWidget* parent = 0)
42  : makVrv::DtStyledQTableWidget(parent)
43  {
44  setObjectName("DtUiPropertiesTableWidget");
45  }
46  virtual ~DtUiPropertiesTableWidget() override {}
47 
48  virtual QSize sizeHint() const override;
49  virtual void accept();
50 };
51 
53 {
54 public:
55  DtUiTableWidgetItem() : myOriginalValue(0), myModifiedValue(0), myIsKey(false), myIsReadOnly(false), myOwnsValues(false), myIsPropertyValue(true) {};
56 
57  virtual ~DtUiTableWidgetItem() override
58  { if (myOwnsValues) { delete myOriginalValue; delete myModifiedValue; } };
59 
60  void setOwnsValues(bool b) { myOwnsValues = b; };
61  void setOriginalValue(const DtReaderWriter* rw) { if (myOwnsValues) delete myOriginalValue; myOriginalValue = rw; };
62  void setModifiedValue(const DtReaderWriter* rw) { if (myOwnsValues) delete myModifiedValue; myModifiedValue = rw; };
63  void setIsPropertyValue(bool b) { myIsPropertyValue = b; };
64 
65  bool isInt() const { return dynamic_cast<const DtRwInt*>(myOriginalValue) != 0; };
66  bool isReal() const { return dynamic_cast<const DtRwReal*>(myOriginalValue) != 0; };
67  void setIsKey(bool b) { myIsKey = b; };
68  bool isKey() const { return myIsKey; };
69 
70  virtual QVariant data(int role) const override
71  {
72  if (role == Qt::FontRole)
73  {
74  QFont f = qvariant_cast<QFont>(QTableWidgetItem::data(Qt::FontRole));
75 
76  bool same = true;
77 
78  if (!myOriginalValue && myModifiedValue)
79  {
80  same = false;
81  }
82  else if (myIsKey)
83  {
84  same = (myOriginalValue->name() == myModifiedValue->name());
85  }
86  else if (myOriginalValue && myModifiedValue)
87  {
88  if (myIsPropertyValue)
89  {
90  same = DtRwProperties::propertyFactory()->compareReaderWriter(myOriginalValue, myModifiedValue);
91  }
92  else
93  {
94  same = DtRwProperties::factory()->compareReaderWriter(myOriginalValue, myModifiedValue);
95  }
96  }
97 
98  f.setBold(!same);
99 
100  return f;
101  }
102 
103  return DtStyledQTableWidgetItem::data(role);
104  }
105 
106  void setReadOnly(bool b) { if (b) setFlags((Qt::ItemFlags)(flags() & ~(Qt::ItemIsEnabled | Qt::ItemIsEditable))); else setFlags((Qt::ItemFlags)(flags() | (Qt::ItemIsEditable | Qt::ItemIsEnabled))); };
107  const DtReaderWriter* originalValue() const { return myOriginalValue; }
108  const DtReaderWriter* modifiedValue() const { return myModifiedValue; }
109 
110 protected:
111  bool myIsKey;
117 };
118 
120 {
121 public:
122  DtUiTableWidgetItemDelegate(QObject* p, bool b) : QStyledItemDelegate(p), myRowsAsColumns(b), myTable(dynamic_cast<QTableWidget*>(p)) {};
123 
124 protected:
125  virtual QWidget * createEditor(
126  QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
127 
128 protected:
130  QIntValidator myIntValidator;
131  QDoubleValidator myDoubleValidator;
133 };
134 
136 {
137 public:
138  DtUiTableWidgetComboBox(QWidget* w) : QComboBox(w) { setObjectName("DtUiTableWidgetComboBox"); };
139  virtual ~DtUiTableWidgetComboBox() override {};
140 
141  void setTableWidgetItem(DtUiTableWidgetItem* i) { myTableWidgetItem = i; };
142  DtUiTableWidgetItem* tableWidgetItem() const { return myTableWidgetItem; };
143 
144 protected:
145  DtUiTableWidgetItem* myTableWidgetItem;
146 };
147 
149 {
150  Q_OBJECT
151 
152 public:
155 
157  virtual ~DtUiPropertiesTable() override;
158 
160 
161  virtual void setEnabled(bool) override;
162 
163 protected:
164  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw) override;
165 
167  virtual void createControls(QWidget* widget) override;
168  virtual void processUiEvent(const DtUiElementEvent& e) override;
169 
170  virtual void columnHeadersFrom(const DtPropertyInterface* prototype, QStringList& columns) const;
171  virtual QString columnTitleFor(const QString&) const;
172  virtual void fillInAndMapRwItemToTableItems(int row, int& colStart, DtReaderWriter*);
173 
174  virtual const DtReaderWriter* readerWriterFromPrototype(const DtReaderWriter* prototype, int col) const;
175 
176  virtual void flatten(const DtReaderWriter* prototype, std::vector<const DtReaderWriter*>& list) const;
177  virtual void tableItemCreated(DtUiTableWidgetItem*, int row, int col);
178 
179  virtual void itemRemoved(DtUiTableWidgetItem*);
180  virtual void updateEnableStatus();
181 
182  virtual QStringList convertToTitles(const QStringList& cols) const;
183 
184  virtual bool canHavePrimary() const;
185 
186  virtual void addPrimaryCheckBox(int row, int col);
187 
188  virtual DtString currentPrimary() const;
189  virtual DtString keyFor(int col) const;
190  virtual void updatePrimaryData();
191  virtual void setCurrentPrimary(const DtString&, bool, bool updateData = true);
192  virtual void elementChanged() override;
193  virtual void clearPrimaryData();
194  virtual void setPrimaryDataFrom(int);
195  virtual QCheckBox* primaryCheckBox(int) const;
196 
197  virtual void setEquipmentAvailable(const DtString&, bool);
198 
199  virtual void addPrimaryEntry(DtReaderWriter* rw);
200 
201  virtual void fixRowTitle(int row = - 1);
202  virtual bool initForPossibleMultiMap(DtRwPropertiesMap*);
203  virtual QString getContainedName(const QString& = "") const;
204 
205  virtual void fillInTableFromSelection(DtReaderWriter*);
206  virtual void addContainedItems(DtReaderWriter*);
207  virtual void updateAddButton();
208 
209  virtual void removeRow(int);
210  virtual void decorateElement() override;
211 
212 protected slots:
213  virtual void itemChanged(QTableWidgetItem*);
214  virtual void addRow();
215  virtual void removeRow();
216  virtual void itemSelectionChanged();
217  virtual void valueComboChanged();
218  virtual void primaryChanged();
219  virtual void addNewContainerItem();
220  virtual void editContainerItem();
221  virtual void removeContainerItem();
222  virtual void containedItemSelected();
223 
224 public:
228  QVBoxLayout* myLayout;
229  QHBoxLayout* myButtonLayout;
231 
254  QHBoxLayout* myContainerLayout;
258 
259 protected:
260  typedef std::map<DtUiTableWidgetItem*, DtReaderWriter*> TableWidgetItemMap;
268 };
void setReadOnly(bool b)
Definition: uiPropertiesTable.h:106
QIntValidator myIntValidator
Definition: uiPropertiesTable.h:130
bool myOwnsValues
Definition: uiPropertiesTable.h:115
bool myRowsAsColumns
Definition: uiPropertiesTable.h:263
void setTableWidgetItem(DtUiTableWidgetItem *i)
Definition: uiPropertiesTable.h:141
Definition: uiPropertiesTable.h:148
A styled version of the QTableWidgetItem.
Definition: DtStyledQTableWidget.h:53
void setIsPropertyValue(bool b)
Definition: uiPropertiesTable.h:63
Definition: uiPropertiesTable.h:135
Override the QTableWidget simply to create a sizeHint based on the number and size of our rows and co...
Definition: uiPropertiesTable.h:38
virtual void createControls(QWidget *parent)
If additional widgets or connections need to be made do it here. The parent is the myWidget member...
QHBoxLayout * myButtonLayout
Definition: uiPropertiesTable.h:229
virtual void setFromParameters(DtReaderWriter *parentRw)
Calls setFromParameters with std::vector of parameter.
bool isKey() const
Definition: uiPropertiesTable.h:68
QToolButton * myEditContainer
Definition: uiPropertiesTable.h:252
virtual QVariant data(int role) const override
Definition: uiPropertiesTable.h:70
QDoubleValidator myDoubleValidator
Definition: uiPropertiesTable.h:131
QComboBox * myContainedItems
Definition: uiPropertiesTable.h:255
virtual void setFlags(Qt::ItemFlags newFlags)
Special QTableWidgetItem::setFlags(Qt::ItemFlags) implementation. This function can force the re-draw...
void setIsKey(bool b)
Definition: uiPropertiesTable.h:67
virtual void processUiEvent(const DtUiElementEvent &)
Process ui event. Default does nothing.
Definition: uiElement.h:236
const DtReaderWriter * myModifiedValue
Definition: uiPropertiesTable.h:113
bool myRowsAsColumns
Definition: uiPropertiesTable.h:132
TableWidgetItemMap myTableWidgetItemMap
Definition: uiPropertiesTable.h:261
Definition: readerWriter.h:85
boost::function< DtUiElement *(makVrv::DtDe &)> CreatorFunction
Definition: uiElement.h:190
QLabel * myMapLabel
Definition: uiPropertiesTable.h:257
void setModifiedValue(const DtReaderWriter *rw)
Definition: uiPropertiesTable.h:62
QWidget * myContainerCanvas
Currently only designed for a single map containing a single map, nothing fancy like a map possibly c...
Definition: uiPropertiesTable.h:249
virtual void elementChanged()
virtual void decorateElement()
Sets element decoration depending on the isModified state of the element. This version changes myLabe...
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:53
DtRwPropertiesList * myPropertyTable
Definition: uiPropertiesTable.h:262
A styled version of the QTableWidget. Cells in this table widget can be styled when enabled or disabl...
Definition: DtStyledQTableWidget.h:33
bool myInitializing
Definition: uiPropertiesTable.h:230
static DtReaderWriterFactory * factory()
DtUiTableWidgetItemDelegate(QObject *p, bool b)
Definition: uiPropertiesTable.h:122
Definition: uiPropertiesTable.h:119
virtual ~DtUiPropertiesTableWidget() override
Definition: uiPropertiesTable.h:46
QHBoxLayout * myContainerLayout
Definition: uiPropertiesTable.h:254
void setOriginalValue(const DtReaderWriter *rw)
Definition: uiPropertiesTable.h:61
DtUiPropertiesTableWidget * myTableWidget
Definition: uiPropertiesTable.h:225
QToolButton * myRemoveContainer
Definition: uiPropertiesTable.h:251
const DtReaderWriter * originalValue() const
Definition: uiPropertiesTable.h:107
const DtReaderWriter * myOriginalValue
Definition: uiPropertiesTable.h:112
Description: Readable, Writable int.
Definition: rwInt.h:25
QLabel * myContainerLabel
Definition: uiPropertiesTable.h:253
QTableWidget * myTable
Definition: uiPropertiesTable.h:129
bool myIsMultiMap
Definition: uiPropertiesTable.h:264
QToolButton * myRemove
Definition: uiPropertiesTable.h:227
QVBoxLayout * myLayout
Definition: uiPropertiesTable.h:228
QString myContainedLabel
Definition: uiPropertiesTable.h:256
Acts as a map for properties. A map is a definition that has a key and a prototype, with values being the key and prototype pair. The key can only be a string (DtRwStringType), int (DtRwIntType, DtRwInt8Type, DtRwInt16Type, DtRwInt32Type), or real (DtRwRealType, DtRwReal32Type, DtRwReal64Type).
Definition: rwPropertiesMap.h:41
DtPropertyInterface * myPrototype
Definition: uiPropertiesTable.h:265
bool isInt() const
Definition: uiPropertiesTable.h:65
DtUiTableWidgetItem * tableWidgetItem() const
Definition: uiPropertiesTable.h:142
DtUiPropertiesTableWidget(QWidget *parent=0)
Definition: uiPropertiesTable.h:41
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
std::map< DtUiTableWidgetItem *, DtReaderWriter * > TableWidgetItemMap
Definition: uiPropertiesTable.h:260
QToolButton * myAdd
Definition: uiPropertiesTable.h:226
virtual void setEnabled(bool)
If this item is not enabled it cannot be modified.
bool myIsPropertyValue
Definition: uiPropertiesTable.h:116
QToolButton * myAddContainer
Definition: uiPropertiesTable.h:250
Acts as a DtRwList for properties. Only real difference between this class and a DtRwProperties class...
Definition: rwPropertiesList.h:38
DtUiTableWidgetComboBox(QWidget *w)
Definition: uiPropertiesTable.h:138
DtRwPropertiesList * myModifiedVariable
Definition: uiPropertiesTable.h:266
The DtUiElement class is the base for which all UI elements are defined. If you wish to create a new ...
Definition: uiElement.h:97
bool isReal() const
Definition: uiPropertiesTable.h:66
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
DtUiTableWidgetItem()
Definition: uiPropertiesTable.h:55
Definition: uiPropertiesTable.h:52
void setOwnsValues(bool b)
Definition: uiPropertiesTable.h:60
virtual ~DtUiTableWidgetItem() override
Definition: uiPropertiesTable.h:57
DtReaderWriter * mySelectedVariable
Definition: uiPropertiesTable.h:267
bool myIsKey
Definition: uiPropertiesTable.h:111
virtual ~DtUiTableWidgetComboBox() override
Definition: uiPropertiesTable.h:139
virtual bool compareReaderWriter(const DtReaderWriter *sourceRw, const DtReaderWriter *destRw) const
Uses the operator== method on the RW objects to check for equality.
#define DT_DLL_simulationObjectEditorimpl
This file is used to determine how to build.
Definition: simulationObjectEditorImplDefines.h:33
Base class of the ui element class chain. Properties available through designer for all ui elements a...
Definition: uiElement.h:185
const DtReaderWriter * modifiedValue() const
Definition: uiPropertiesTable.h:108
static DtReaderWriterPropertyFactory * propertyFactory()
Returns the factory used to create properties. Types are by RW types.
bool myIsReadOnly
Definition: uiPropertiesTable.h:114

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)