VR-Forces 4.8 Class Documentation
 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)
14 #include <readerWriter/rwInt.h>
15 #include <readerWriter/rwReal.h>
16 #include <readerWriter/rwString.h>
18 #endif
19 
20 #include <QTableWidget>
21 #include <QHeaderView>
22 #include <QKeyEvent>
23 #include <QItemDelegate>
24 #include <QComboBox>
25 
28 class QTableWidgetItem;
29 class QHBoxLayout;
30 class QPushButton;
31 class QVBoxLayout;
32 class DtRwPropertiesList;
33 class DtRwPropertiesMap;
34 class QCheckBox;
35 
39 {
40 public:
41  DtUiPropertiesTableWidget(QWidget * parent = 0) : QTableWidget(parent) {}
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::BackgroundColorRole)
68  {
69  if (flags() & Qt::ItemIsEditable)
70  {
71  return QTableWidgetItem::data(role);
72  }
73  else
74  {
75  return QColor(Qt::lightGray);
76  }
77  }
78  else if (role == Qt::FontRole)
79  {
80  QFont f = qvariant_cast<QFont>(QTableWidgetItem::data(Qt::FontRole));
81 
82  bool same = true;
83 
84  if (!myOriginalValue && myModifiedValue)
85  {
86  same = false;
87  }
88  else if (myIsKey)
89  {
90  same = (myOriginalValue->name() == myModifiedValue->name());
91  }
92  else if (myOriginalValue && myModifiedValue)
93  {
94  if (myIsPropertyValue)
95  {
96  same = DtRwProperties::propertyFactory()->compareReaderWriter(myOriginalValue, myModifiedValue);
97  }
98  else
99  {
100  same = DtRwProperties::factory()->compareReaderWriter(myOriginalValue, myModifiedValue);
101  }
102  }
103 
104  f.setBold(!same);
105 
106  return f;
107  }
108 
109  return QTableWidgetItem::data(role);
110  }
111 
112  void setReadOnly(bool b) { if (b) setFlags((Qt::ItemFlags)(flags() & ~Qt::ItemIsEditable)); else setFlags((Qt::ItemFlags)(flags() | Qt::ItemIsEditable)); };
113  const DtReaderWriter* originalValue() const { return myOriginalValue; }
114  const DtReaderWriter* modifiedValue() const { return myModifiedValue; }
115 
116 protected:
117  bool myIsKey;
123 };
124 
126 {
127 public:
128  DtUiTableWidgetItemDelegate(QObject* p, bool b) : QItemDelegate(p), myRowsAsColumns(b), myTable(dynamic_cast<QTableWidget*>(p)) {};
129 
130 protected:
131  virtual QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
132  const QModelIndex &index) const;
133 
134 protected:
136  QIntValidator myIntValidator;
137  QDoubleValidator myDoubleValidator;
139 };
140 
142 {
143 public:
144  DtUiTableWidgetComboBox(QWidget* w) : QComboBox(w) { };
146 
147  void setTableWidgetItem(DtUiTableWidgetItem* i) { myTableWidgetItem = i; };
148  DtUiTableWidgetItem* tableWidgetItem() const { return myTableWidgetItem; };
149 
150 protected:
151  virtual void paintEvent(QPaintEvent *);
152 
153 protected:
155 };
156 
158 {
159  Q_OBJECT
160 
161 public:
164 
166  virtual ~DtUiPropertiesTable();
167 
169 
170  virtual void setEnabled(bool);
171 
172 protected:
173  virtual void setFromParameters(const std::vector<DtReaderWriter*>& parentRw);
174 
176  virtual void createControls(QWidget* widget);
177  virtual void processUiEvent(const DtUiElementEvent& e);
178 
179  virtual void columnHeadersFrom(const DtPropertyInterface* prototype, QStringList& columns) const;
180  virtual QString columnTitleFor(const QString&) const;
181  virtual void fillInAndMapRwItemToTableItems(int row, int& colStart, DtReaderWriter*);
182 
183  virtual const DtReaderWriter* readerWriterFromPrototype(const DtReaderWriter* prototype, int col) const;
184 
185  virtual void flatten(const DtReaderWriter* prototype, std::vector<const DtReaderWriter*>& list) const;
186  virtual void tableItemCreated(DtUiTableWidgetItem*, int row, int col);
187 
188  virtual void itemRemoved(DtUiTableWidgetItem*);
189  virtual void updateEnableStatus();
190 
191  virtual QStringList convertToTitles(const QStringList& cols) const;
192 
193  virtual bool canHavePrimary() const;
194 
195  virtual void addPrimaryCheckBox(int row, int col);
196 
197  virtual DtString currentPrimary() const;
198  virtual DtString keyFor(int col) const;
199  virtual void updatePrimaryData();
200  virtual void setCurrentPrimary(const DtString&, bool, bool updateData = true);
201  virtual void elementChanged();
202  virtual void clearPrimaryData();
203  virtual void setPrimaryDataFrom(int);
204  virtual QCheckBox* primaryCheckBox(int) const;
205 
206  virtual void setEquipmentAvailable(const DtString&, bool);
207 
208  virtual void addPrimaryEntry(DtReaderWriter* rw);
209 
210  virtual void fixRowTitle(int row = - 1);
211  virtual bool initForPossibleMultiMap(DtRwPropertiesMap*);
212  virtual QString getContainedName(const QString& = "") const;
213 
214  virtual void fillInTableFromSelection(DtReaderWriter*);
215  virtual void addContainedItems(DtReaderWriter*);
216  virtual void updateAddButton();
217 
218  virtual void removeRow(int);
219  virtual void decorateElement();
220 
221 protected slots:
222  virtual void itemChanged(QTableWidgetItem*);
223  virtual void addRow();
224  virtual void removeRow();
225  virtual void itemSelectionChanged();
226  virtual void valueComboChanged();
227  virtual void primaryChanged();
228  virtual void addNewContainerItem();
229  virtual void editContainerItem();
230  virtual void removeContainerItem();
231  virtual void containedItemSelected();
232 
233 public:
237  QVBoxLayout* myLayout;
238  QHBoxLayout* myButtonLayout;
240 
263  QHBoxLayout* myContainerLayout;
267 
268 protected:
269  typedef std::map<DtUiTableWidgetItem*, DtReaderWriter*> TableWidgetItemMap;
277 };
void setReadOnly(bool b)
Definition: uiPropertiesTable.h:112
QIntValidator myIntValidator
Definition: uiPropertiesTable.h:136
bool myOwnsValues
Definition: uiPropertiesTable.h:121
bool myRowsAsColumns
Definition: uiPropertiesTable.h:272
void setTableWidgetItem(DtUiTableWidgetItem *i)
Definition: uiPropertiesTable.h:147
Definition: uiPropertiesTable.h:157
void setIsPropertyValue(bool b)
Definition: uiPropertiesTable.h:58
Definition: uiPropertiesTable.h:141
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:238
virtual void setFromParameters(DtReaderWriter *parentRw)
Calls setFromParameters with std::vector of parameter.
bool isKey() const
Definition: uiPropertiesTable.h:63
QDoubleValidator myDoubleValidator
Definition: uiPropertiesTable.h:137
QComboBox * myContainedItems
Definition: uiPropertiesTable.h:264
void setIsKey(bool b)
Definition: uiPropertiesTable.h:62
virtual void processUiEvent(const DtUiElementEvent &)
Process ui event. Default does nothing.
Definition: uiElement.h:220
virtual QSize sizeHint() const
const DtReaderWriter * myModifiedValue
Definition: uiPropertiesTable.h:119
bool myRowsAsColumns
Definition: uiPropertiesTable.h:138
TableWidgetItemMap myTableWidgetItemMap
Definition: uiPropertiesTable.h:270
Definition: readerWriter.h:85
virtual QVariant data(int role) const
Definition: uiPropertiesTable.h:65
boost::function< DtUiElement *(makVrv::DtDe &)> CreatorFunction
Definition: uiElement.h:174
QLabel * myMapLabel
Definition: uiPropertiesTable.h:266
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:258
virtual void elementChanged()
virtual void decorateElement()
Sets element decoration depending on the isModified state of the element.
Interface class used to define minimal interface for a property.
Definition: propertyInterface.h:48
DtRwPropertiesList * myPropertyTable
Definition: uiPropertiesTable.h:271
bool myInitializing
Definition: uiPropertiesTable.h:239
static DtReaderWriterFactory * factory()
DtUiTableWidgetItemDelegate(QObject *p, bool b)
Definition: uiPropertiesTable.h:128
Definition: uiPropertiesTable.h:125
QHBoxLayout * myContainerLayout
Definition: uiPropertiesTable.h:263
void setOriginalValue(const DtReaderWriter *rw)
Definition: uiPropertiesTable.h:56
DtUiPropertiesTableWidget * myTableWidget
Definition: uiPropertiesTable.h:234
const DtReaderWriter * originalValue() const
Definition: uiPropertiesTable.h:113
QPushButton * myEditContainer
Definition: uiPropertiesTable.h:261
const DtReaderWriter * myOriginalValue
Definition: uiPropertiesTable.h:118
Description: Readable, Writable int.
Definition: rwInt.h:25
QLabel * myContainerLabel
Definition: uiPropertiesTable.h:262
QTableWidget * myTable
Definition: uiPropertiesTable.h:135
bool myIsMultiMap
Definition: uiPropertiesTable.h:273
QVBoxLayout * myLayout
Definition: uiPropertiesTable.h:237
QString myContainedLabel
Definition: uiPropertiesTable.h:265
~DtUiPropertiesTableWidget()
Definition: uiPropertiesTable.h:42
Acts as a map for properties.
Definition: rwPropertiesMap.h:41
DtPropertyInterface * myPrototype
Definition: uiPropertiesTable.h:274
bool isInt() const
Definition: uiPropertiesTable.h:60
DtUiTableWidgetItem * tableWidgetItem() const
Definition: uiPropertiesTable.h:148
QPushButton * myAddContainer
Definition: uiPropertiesTable.h:259
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:269
virtual void setEnabled(bool)
If this item is not enabled it cannot be modified.
bool myIsPropertyValue
Definition: uiPropertiesTable.h:122
QPushButton * myRemoveContainer
Definition: uiPropertiesTable.h:260
QPushButton * myAdd
Definition: uiPropertiesTable.h:235
Acts as a DtRwList for properties.
Definition: rwPropertiesList.h:38
DtUiTableWidgetComboBox(QWidget *w)
Definition: uiPropertiesTable.h:144
DtRwPropertiesList * myModifiedVariable
Definition: uiPropertiesTable.h:275
The DtUiElement class is the base for which all UI elements are defined.
Definition: uiElement.h:92
bool isReal() const
Definition: uiPropertiesTable.h:61
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
DtUiTableWidgetItem()
Definition: uiPropertiesTable.h:51
Definition: uiPropertiesTable.h:48
DtUiTableWidgetItem * myTableWidgetItem
Definition: uiPropertiesTable.h:154
void setOwnsValues(bool b)
Definition: uiPropertiesTable.h:55
QPushButton * myRemove
Definition: uiPropertiesTable.h:236
virtual ~DtUiTableWidgetComboBox()
Definition: uiPropertiesTable.h:145
DtReaderWriter * mySelectedVariable
Definition: uiPropertiesTable.h:276
bool myIsKey
Definition: uiPropertiesTable.h:117
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:32
Base class of the ui element class chain.
Definition: uiElement.h:169
const DtReaderWriter * modifiedValue() const
Definition: uiPropertiesTable.h:114
static DtReaderWriterPropertyFactory * propertyFactory()
Returns the factory used to create properties. Types are by RW types.
bool myIsReadOnly
Definition: uiPropertiesTable.h:120

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)