VR-Forces 5.0.3 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/QItemDelegate>
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) : makVrv::DtStyledQTableWidget(parent) { setObjectName("DtUiPropertiesTableWidget"); }
43 
44  virtual QSize sizeHint() const;
45  virtual void accept();
46 };
47 
49 {
50 public:
51  DtUiTableWidgetItem() : myOriginalValue(0), myModifiedValue(0), myIsKey(false), myIsReadOnly(false), myOwnsValues(false), myIsPropertyValue(true) {};
52 
53  virtual ~DtUiTableWidgetItem() { if (myOwnsValues) { delete myOriginalValue; delete myModifiedValue; } };
54 
55  void setOwnsValues(bool b) { myOwnsValues = b; };
56  void setOriginalValue(const DtReaderWriter* rw) { if (myOwnsValues) delete myOriginalValue; myOriginalValue = rw; };
57  void setModifiedValue(const DtReaderWriter* rw) { if (myOwnsValues) delete myModifiedValue; myModifiedValue = rw; };
58  void setIsPropertyValue(bool b) { myIsPropertyValue = b; };
59 
60  bool isInt() const { return dynamic_cast<const DtRwInt*>(myOriginalValue) != 0; };
61  bool isReal() const { return dynamic_cast<const DtRwReal*>(myOriginalValue) != 0; };
62  void setIsKey(bool b) { myIsKey = b; };
63  bool isKey() const { return myIsKey; };
64 
65  virtual QVariant data(int role) const
66  {
67  if (role == Qt::FontRole)
68  {
69  QFont f = qvariant_cast<QFont>(QTableWidgetItem::data(Qt::FontRole));
70 
71  bool same = true;
72 
73  if (!myOriginalValue && myModifiedValue)
74  {
75  same = false;
76  }
77  else if (myIsKey)
78  {
79  same = (myOriginalValue->name() == myModifiedValue->name());
80  }
81  else if (myOriginalValue && myModifiedValue)
82  {
83  if (myIsPropertyValue)
84  {
85  same = DtRwProperties::propertyFactory()->compareReaderWriter(myOriginalValue, myModifiedValue);
86  }
87  else
88  {
89  same = DtRwProperties::factory()->compareReaderWriter(myOriginalValue, myModifiedValue);
90  }
91  }
92 
93  f.setBold(!same);
94 
95  return f;
96  }
97 
98  return DtStyledQTableWidgetItem::data(role);
99  }
100 
101  void setReadOnly(bool b) { if (b) setFlags((Qt::ItemFlags)(flags() & ~(Qt::ItemIsEnabled | Qt::ItemIsEditable))); else setFlags((Qt::ItemFlags)(flags() | (Qt::ItemIsEditable | Qt::ItemIsEnabled))); };
102  const DtReaderWriter* originalValue() const { return myOriginalValue; }
103  const DtReaderWriter* modifiedValue() const { return myModifiedValue; }
104 
105 protected:
106  bool myIsKey;
112 };
113 
115 {
116 public:
117  DtUiTableWidgetItemDelegate(QObject* p, bool b) : QItemDelegate(p), myRowsAsColumns(b), myTable(dynamic_cast<QTableWidget*>(p)) {};
118 
119 protected:
120  virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
121  const QModelIndex &index) const;
122 
123 protected:
125  QIntValidator myIntValidator;
126  QDoubleValidator myDoubleValidator;
128 };
129 
131 {
132 public:
133  DtUiTableWidgetComboBox(QWidget* w) : QComboBox(w) { setObjectName("DtUiTableWidgetComboBox"); };
135 
136  void setTableWidgetItem(DtUiTableWidgetItem* i) { myTableWidgetItem = i; };
137  DtUiTableWidgetItem* tableWidgetItem() const { return myTableWidgetItem; };
138 
139 protected:
140  DtUiTableWidgetItem* myTableWidgetItem;
141 };
142 
144 {
145  Q_OBJECT
146 
147 public:
150 
152  virtual ~DtUiPropertiesTable();
153 
155 
156  virtual void setEnabled(bool);
157 
158 protected:
159  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw);
160 
162  virtual void createControls(QWidget* widget);
163  virtual void processUiEvent(const DtUiElementEvent& e);
164 
165  virtual void columnHeadersFrom(const DtPropertyInterface* prototype, QStringList& columns) const;
166  virtual QString columnTitleFor(const QString&) const;
167  virtual void fillInAndMapRwItemToTableItems(int row, int& colStart, DtReaderWriter*);
168 
169  virtual const DtReaderWriter* readerWriterFromPrototype(const DtReaderWriter* prototype, int col) const;
170 
171  virtual void flatten(const DtReaderWriter* prototype, std::vector<const DtReaderWriter*>& list) const;
172  virtual void tableItemCreated(DtUiTableWidgetItem*, int row, int col);
173 
174  virtual void itemRemoved(DtUiTableWidgetItem*);
175  virtual void updateEnableStatus();
176 
177  virtual QStringList convertToTitles(const QStringList& cols) const;
178 
179  virtual bool canHavePrimary() const;
180 
181  virtual void addPrimaryCheckBox(int row, int col);
182 
183  virtual DtString currentPrimary() const;
184  virtual DtString keyFor(int col) const;
185  virtual void updatePrimaryData();
186  virtual void setCurrentPrimary(const DtString&, bool, bool updateData = true);
187  virtual void elementChanged();
188  virtual void clearPrimaryData();
189  virtual void setPrimaryDataFrom(int);
190  virtual QCheckBox* primaryCheckBox(int) const;
191 
192  virtual void setEquipmentAvailable(const DtString&, bool);
193 
194  virtual void addPrimaryEntry(DtReaderWriter* rw);
195 
196  virtual void fixRowTitle(int row = - 1);
197  virtual bool initForPossibleMultiMap(DtRwPropertiesMap*);
198  virtual QString getContainedName(const QString& = "") const;
199 
200  virtual void fillInTableFromSelection(DtReaderWriter*);
201  virtual void addContainedItems(DtReaderWriter*);
202  virtual void updateAddButton();
203 
204  virtual void removeRow(int);
205  virtual void decorateElement();
206 
207 protected slots:
208  virtual void itemChanged(QTableWidgetItem*);
209  virtual void addRow();
210  virtual void removeRow();
211  virtual void itemSelectionChanged();
212  virtual void valueComboChanged();
213  virtual void primaryChanged();
214  virtual void addNewContainerItem();
215  virtual void editContainerItem();
216  virtual void removeContainerItem();
217  virtual void containedItemSelected();
218 
219 public:
223  QVBoxLayout* myLayout;
224  QHBoxLayout* myButtonLayout;
226 
249  QHBoxLayout* myContainerLayout;
253 
254 protected:
255  typedef std::map<DtUiTableWidgetItem*, DtReaderWriter*> TableWidgetItemMap;
263 };
void setReadOnly(bool b)
Definition: uiPropertiesTable.h:101
QIntValidator myIntValidator
Definition: uiPropertiesTable.h:125
bool myOwnsValues
Definition: uiPropertiesTable.h:110
bool myRowsAsColumns
Definition: uiPropertiesTable.h:258
void setTableWidgetItem(DtUiTableWidgetItem *i)
Definition: uiPropertiesTable.h:136
Definition: uiPropertiesTable.h:143
A styled version of the QTableWidgetItem.
Definition: DtStyledQTableWidget.h:53
void setIsPropertyValue(bool b)
Definition: uiPropertiesTable.h:58
Definition: uiPropertiesTable.h:130
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:224
virtual void setFromParameters(DtReaderWriter *parentRw)
Calls setFromParameters with std::vector of parameter.
bool isKey() const
Definition: uiPropertiesTable.h:63
QToolButton * myEditContainer
Definition: uiPropertiesTable.h:247
QDoubleValidator myDoubleValidator
Definition: uiPropertiesTable.h:126
QComboBox * myContainedItems
Definition: uiPropertiesTable.h:250
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:62
virtual void processUiEvent(const DtUiElementEvent &)
Process ui event. Default does nothing.
Definition: uiElement.h:231
virtual QSize sizeHint() const
const DtReaderWriter * myModifiedValue
Definition: uiPropertiesTable.h:108
bool myRowsAsColumns
Definition: uiPropertiesTable.h:127
TableWidgetItemMap myTableWidgetItemMap
Definition: uiPropertiesTable.h:256
Definition: readerWriter.h:85
virtual QVariant data(int role) const
Definition: uiPropertiesTable.h:65
boost::function< DtUiElement *(makVrv::DtDe &)> CreatorFunction
Definition: uiElement.h:185
QLabel * myMapLabel
Definition: uiPropertiesTable.h:252
void setModifiedValue(const DtReaderWriter *rw)
Definition: uiPropertiesTable.h:57
QWidget * myContainerCanvas
Currently only designed for a single map containing a single map, nothing fancy like a map possibly c...
Definition: uiPropertiesTable.h:244
virtual void elementChanged()
virtual void decorateElement()
Sets element decoration depending on the isModified state of the element. This version changes myLabe...
DtStyledQTableWidget(QWidget *parent=nullptr)
CTOR.
Interface class used to define minimal interface for a property. The DtPropertyInterface class provid...
Definition: propertyInterface.h:48
DtRwPropertiesList * myPropertyTable
Definition: uiPropertiesTable.h:257
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:225
static DtReaderWriterFactory * factory()
DtUiTableWidgetItemDelegate(QObject *p, bool b)
Definition: uiPropertiesTable.h:117
Definition: uiPropertiesTable.h:114
QHBoxLayout * myContainerLayout
Definition: uiPropertiesTable.h:249
void setOriginalValue(const DtReaderWriter *rw)
Definition: uiPropertiesTable.h:56
DtUiPropertiesTableWidget * myTableWidget
Definition: uiPropertiesTable.h:220
QToolButton * myRemoveContainer
Definition: uiPropertiesTable.h:246
const DtReaderWriter * originalValue() const
Definition: uiPropertiesTable.h:102
const DtReaderWriter * myOriginalValue
Definition: uiPropertiesTable.h:107
Description: Readable, Writable int.
Definition: rwInt.h:25
QLabel * myContainerLabel
Definition: uiPropertiesTable.h:248
QTableWidget * myTable
Definition: uiPropertiesTable.h:124
bool myIsMultiMap
Definition: uiPropertiesTable.h:259
QToolButton * myRemove
Definition: uiPropertiesTable.h:222
QVBoxLayout * myLayout
Definition: uiPropertiesTable.h:223
QString myContainedLabel
Definition: uiPropertiesTable.h:251
~DtUiPropertiesTableWidget()
Definition: uiPropertiesTable.h:42
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:260
bool isInt() const
Definition: uiPropertiesTable.h:60
DtUiTableWidgetItem * tableWidgetItem() const
Definition: uiPropertiesTable.h:137
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:255
QToolButton * myAdd
Definition: uiPropertiesTable.h:221
virtual void setEnabled(bool)
If this item is not enabled it cannot be modified.
bool myIsPropertyValue
Definition: uiPropertiesTable.h:111
QToolButton * myAddContainer
Definition: uiPropertiesTable.h:245
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:133
DtRwPropertiesList * myModifiedVariable
Definition: uiPropertiesTable.h:261
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:61
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
DtUiTableWidgetItem()
Definition: uiPropertiesTable.h:51
Definition: uiPropertiesTable.h:48
void setOwnsValues(bool b)
Definition: uiPropertiesTable.h:55
virtual ~DtUiTableWidgetComboBox()
Definition: uiPropertiesTable.h:134
DtReaderWriter * mySelectedVariable
Definition: uiPropertiesTable.h:262
bool myIsKey
Definition: uiPropertiesTable.h:106
virtual ~DtUiTableWidgetItem()
Definition: uiPropertiesTable.h:53
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:180
const DtReaderWriter * modifiedValue() const
Definition: uiPropertiesTable.h:103
static DtReaderWriterPropertyFactory * propertyFactory()
Returns the factory used to create properties. Types are by RW types.
bool myIsReadOnly
Definition: uiPropertiesTable.h:109

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)