VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
bdiQPropTreeItem.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2021 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
6 
10 
11 #pragma once
12 
13 #include <vrvUtil/signalslib.h>
14 
15 #include <QDoubleSpinBox>
16 #include <QTreeWidget>
17 #include <QFocusEvent>
18 #include <QLineEdit>
19 #include <QColor>
20 
21 #include <vrvUtil/DtUnicode.h>
23 
24 
25 class QColorGroup;
26 class QPainter;
27 class QRect;
28 namespace makVrv
29 {
30  class bdiQPropTree;
31  typedef unsigned long DWORD;
34  {
35  Q_OBJECT;
36  public:
37 
38  // Construction
41  bdiQPropTreeItem(QTreeWidget* lv, const char* name, const char* name2 = NULL);
42  bdiQPropTreeItem(QTreeWidgetItem* parent_item, const char* name = NULL, const char* name2 = NULL);
43 
44  virtual ~bdiQPropTreeItem();
45 
46  virtual bool hasCustomContents(void);
47  virtual bool hasCustomWidget(void);
48  virtual void drawCustomContents(QPainter *p, const QRect &r);
49  virtual void toggle() {
50  ;
51  }
52  virtual void setFontSize(int fsize);
53  virtual void updateFromSource() { ; }
54 
55  // Attributes/Operations
56  public:
57  // TreeItem states
58  bool IsReadOnly();
59 
60  bool IsEnabled();
61  virtual bool isBold() {
62  return 0;
63  }
64 
65  virtual QWidget* getWidget();
66  virtual void updateWidgetColors() {
67  ;
68  }
69 
70  void placeEditor(QWidget *w);
71  void removeEditor();
72 
73  //void Select(bool bSelect = true);
74  void Expand(bool bExpand = true);
75  void ExpandRecursive(bool bExpand = true);
76  void ReadOnly(bool bReadOnly = true);
77  void setEnabled(bool bEnable = true);
78  void setEnabledRecursive(bool bEnable, bool skip_current);
79 
80  // Returns true if the item is on the root level. Root level items don't have attribute areas
81  bool IsRootLevel();
82 
83  // Set the items label text
84  void setLabelText(const DtUnicode& sLabel);
85  void setLabelText(const QString& sLabel);
86 
87  // Return the items label text
88  const QString& getLabelText();
89 
90  // Set the items info (description) text
91  void setInfoText(const DtUnicode& sInfo);
92  void setInfoText(const QString& sInfo);
93 
94  // Get the items info (description) text
95  const QString& getInfoText();
96 
97  // call to mark attribute changes
98  void CommitChanges();
99 
100  //
101  // Overrideables
102  //
103 
104  // Retrieve the item's attribute value
105  virtual void* getItemValue();
106 
107  // Set the item's attribute value
108  virtual void setDataPtr(void* lParam, int do_commit = 1);
109 
110  // Set the item's text
111  virtual void setItemText(const QString &text);
112 
113  // Called when the item needs to refresh its data
114  virtual void onRefresh();
115 
116  // Called when the item needs to commit its changes
117  virtual void onCommit();
118 
119  virtual void showEditor();
120  virtual void hideEditor();
121  virtual int isEditorShown() {
122  return true;
123  }
124 
125  //
126  // Usually only bdiQPropTree should calls these
127  //
128 
129  void SetPropOwner(bdiQPropTree* pProp);
130 
131  // TreeItem link QPointer access
132 
135 
136  bdiQPropTreeItem* getChildItem(int child = 0);
138 
139  void insertChildItem(int index, QTreeWidgetItem* item);
140 
141  void setRefreshParent(const bool refresh) {
142  m_bRefresh_parent = refresh;
143  }
144  void setRefreshTree(const bool refresh) {
145  m_bRefresh_tree = refresh;
146  }
147 
148  void setOpen(bool o);
149  void closeEditorRecursive();
150 
151  virtual void selectItem();
152 
153  virtual void set_var_script(const QString& var_script) {
154  m_set_var_script = var_script;
155  }
156  const QString& get_var_script() {
157  return m_set_var_script;
158  }
159 
161  return m_pProp;
162  }
163  void setPropTree(bdiQPropTree* pProp) {
164  m_pProp = pProp;;
165  }
166 
167 
168  virtual void update_ui_recursive();
169  void set_value_edited_tracker(int* value) {
170  m_pvalue_edited = value;
171  }
173  return m_pvalue_edited;
174  }
176  if (m_pvalue_edited) {
177  *m_pvalue_edited = 1;
178  }
179  }
180 
181  virtual void set_update_function(const std::function<void()>& _function) { m_update_function = _function; }
182  const std::function<void()>& get_update_function() { return m_update_function; }
183 
184  signals:
185 
186  void signal_set_var_script(const QString& script);
187  void signal_onCommit();
188  void signal_onRefresh();
189 
190  protected:
191 
192  // bdiQPropTree class that this class belongs
194 
195  // TreeItem label name
196  QString m_sLabel;
197 
198  // Descriptive info text
199  QString m_sInfo;
200 
201  // user defined void* value
202  void* m_lParam;
203 
204  // call on refresh on parent
206 
207  // call on refresh on parent
209 
211 
213 
214  std::function<void()> m_update_function;
215 
216  protected:
217 
218  QColor backColor;
219 
220  protected:
221 
222  // TreeItem state
224  {
225  TreeItemActivated = 0x00000001,
226  TreeItemReadOnly = 0x00000002,
227  TreeItemEnabled = 0x00000004
228  };
230 
231  private:
232 
233  // true if item is activated
235 
236  // true if item has been commited once (activation)
238 
239  };
240 
241 
245  {
246  public:
247 
248  bdiQPropTreeLineEdit(QWidget* parent, bdiQPropTreeItem* pitem)
249  : QLineEdit(parent)
250  , m_parent(pitem)
251  {
252  setMaximumSize(10000, 18);
253 
254  }
255 
256  bdiQPropTreeLineEdit(const QString &contents, QWidget* parent, bdiQPropTreeItem* pitem)
257  : QLineEdit(contents, parent)
258  , m_parent(pitem)
259  {
260  }
261 
263  {
264  m_parent = NULL;
265  }
266 
267  void focusOutEvent(QFocusEvent*);
268 
269  private:
270 
272 
273  };
274 
275 
279  {
280  public:
281 
282  bdiQPropTreeDoubleSpinBox(QWidget* parent, bdiQPropTreeItem* pitem, const char* name = 0)
283  : QDoubleSpinBox(parent)
284  , m_parent(pitem)
285  {
286  setObjectName(QString::fromUtf8(name));
287  setMaximumSize(10000, 16);
288  }
289 
291 
292  void focusOutEvent(QFocusEvent*);
293 
294  private:
295 
297 
298  };
299 }
void setEnabledRecursive(bool bEnable, bool skip_current)
virtual void set_var_script(const QString &var_script)
Definition: bdiQPropTreeItem.h:153
void Expand(bool bExpand=true)
bdiQPropTreeItem * parentItem()
bdiQPropTreeItem * m_parent
Definition: bdiQPropTreeItem.h:271
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
virtual void drawCustomContents(QPainter *p, const QRect &r)
virtual void hideEditor()
bdiQPropTreeItem * m_parent
Definition: bdiQPropTreeItem.h:296
virtual bool hasCustomContents(void)
virtual void showEditor()
Helper class for dealing with focus outs and line edits.
Definition: bdiQPropTreeItem.h:244
QString m_set_var_script
Definition: bdiQPropTreeItem.h:210
virtual void update_ui_recursive()
virtual void updateFromSource()
Definition: bdiQPropTreeItem.h:53
const QString & getLabelText()
QString m_sLabel
Definition: bdiQPropTreeItem.h:196
void ReadOnly(bool bReadOnly=true)
virtual void set_update_function(const std::function< void()> &_function)
Definition: bdiQPropTreeItem.h:181
QString m_sInfo
Definition: bdiQPropTreeItem.h:199
void setPropTree(bdiQPropTree *pProp)
Definition: bdiQPropTreeItem.h:163
void flag_value_editted()
Definition: bdiQPropTreeItem.h:175
virtual void toggle()
Definition: bdiQPropTreeItem.h:49
Declaration for the makVrv::DtStyledQTreeWidget class.
virtual void setItemText(const QString &text)
int * m_pvalue_edited
Definition: bdiQPropTreeItem.h:212
bdiQPropTree * m_pProp
Definition: bdiQPropTreeItem.h:193
Definition: bdiQPropTreeItem.h:33
bool m_bRefresh_parent
Definition: bdiQPropTreeItem.h:205
virtual ~bdiQPropTreeLineEdit()
Definition: bdiQPropTreeItem.h:262
void setRefreshTree(const bool refresh)
Definition: bdiQPropTreeItem.h:144
DWORD m_dwState
Definition: bdiQPropTreeItem.h:229
Helper class for dealing with focus outs and line edits.
Definition: bdiQPropTreeItem.h:278
QColor backColor
Definition: bdiQPropTreeItem.h:218
void placeEditor(QWidget *w)
virtual bool hasCustomWidget(void)
virtual int isEditorShown()
Definition: bdiQPropTreeItem.h:121
void focusOutEvent(QFocusEvent *)
bdiQPropTreeDoubleSpinBox(QWidget *parent, bdiQPropTreeItem *pitem, const char *name=0)
Definition: bdiQPropTreeItem.h:282
void setInfoText(const DtUnicode &sInfo)
bdiQPropTree * getPropTree()
Definition: bdiQPropTreeItem.h:160
bdiQPropTreeItem * getChildItem(int child=0)
A styled version of the QTreeWidgetItem.
Definition: DtStyledQTreeWidget.h:57
bdiQPropTreeItem * GetLastChild()
void focusOutEvent(QFocusEvent *)
virtual QWidget * getWidget()
void ExpandRecursive(bool bExpand=true)
Definition: bdiQPropTreeItem.h:227
void setRefreshParent(const bool refresh)
Definition: bdiQPropTreeItem.h:141
TreeItemStates
Definition: bdiQPropTreeItem.h:223
virtual void updateWidgetColors()
Definition: bdiQPropTreeItem.h:66
virtual void onRefresh()
virtual void selectItem()
virtual void setDataPtr(void *lParam, int do_commit=1)
unsigned long DWORD
Definition: bdiQPropTreeItem.h:30
void * m_lParam
Definition: bdiQPropTreeItem.h:202
int * get_value_edited_tracker()
Definition: bdiQPropTreeItem.h:172
void setLabelText(const DtUnicode &sLabel)
void SetPropOwner(bdiQPropTree *pProp)
const QString & getInfoText()
bool m_bActivated
Definition: bdiQPropTreeItem.h:234
virtual ~bdiQPropTreeDoubleSpinBox()
Definition: bdiQPropTreeItem.h:290
bdiQPropTreeLineEdit(QWidget *parent, bdiQPropTreeItem *pitem)
Definition: bdiQPropTreeItem.h:248
void signal_set_var_script(const QString &script)
virtual void * getItemValue()
bool m_bRefresh_tree
Definition: bdiQPropTreeItem.h:208
const std::function< void()> & get_update_function()
Definition: bdiQPropTreeItem.h:182
bdiQPropTreeItem * GetSibling()
bdiQPropTreeLineEdit(const QString &contents, QWidget *parent, bdiQPropTreeItem *pitem)
Definition: bdiQPropTreeItem.h:256
void insertChildItem(int index, QTreeWidgetItem *item)
void setEnabled(bool bEnable=true)
Definition: bdiQPropTreeItem.h:226
const QString & get_var_script()
Definition: bdiQPropTreeItem.h:156
virtual bool isBold()
Definition: bdiQPropTreeItem.h:61
Definition: bdiQPropTreeItem.h:225
bool m_bCommitOnce
Definition: bdiQPropTreeItem.h:237
virtual void setFontSize(int fsize)
void set_value_edited_tracker(int *value)
Definition: bdiQPropTreeItem.h:169
virtual void onCommit()
Definition: bdiQPropTree.h:51
std::function< void()> m_update_function
Definition: bdiQPropTreeItem.h:214

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)