OpendTect  6.3
uitreeview.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: A.H. Lammertink
8  Date: 29/01/2002
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uibasemod.h"
14 #include "uiobj.h"
15 #include "bufstringset.h"
16 #include "keyenum.h"
17 #include "draw.h"
18 #include "uistring.h"
19 
20 mFDQtclass(QTreeWidget)
21 mFDQtclass(QTreeWidgetItem)
22 mFDQtclass(QString)
23 mFDQtclass(QStringList)
24 
25 class uiPixmap;
26 class uiTreeViewBody;
27 class uiTreeViewItem;
28 
29 mExpClass(uiBase) uiTreeView : public uiObject
31 public:
32  uiTreeView(uiParent* parnt,
33  const char* nm="uiTreeView",
34  int preferredNrLines=0,
35  bool rootdecorated=true);
36  virtual ~uiTreeView();
37 
38  void setEmpty();
39  void setNrLines(int);
40 
41  bool rootDecorated() const;
42  void setRootDecorated(bool yn);
43  void showHeader(bool yn); // default is true
44 
45  void addColumns(const uiStringSet&);
46  void addColumns(const BufferStringSet&);
47  void setNrColumns(int); // when columns have no name
48  int nrColumns() const;
49 
50  void removeColumn(int index);
51  void setColumnText(int column,const uiString& label);
52  uiString getColumnText(int column) const;
53  void setColumnWidth(int column,int width);
54  void setFixedColumnWidth(int column,int width);
55  int columnWidth(int column) const;
56 
57  enum WidthMode { Manual, Fixed, Stretch, ResizeToContents,
58  Custom };
59  void setColumnWidthMode(WidthMode);
60  void setColumnWidthMode(int column,WidthMode);
61  WidthMode columnWidthMode(int column) const;
62 
63  void setColumnAlignment(OD::Alignment::HPos);
64  void setColumnAlignment(int,OD::Alignment::HPos);
65  OD::Alignment::HPos columnAlignment(int) const;
66 
67  enum ScrollMode { Auto, AlwaysOff, AlwaysOn };
68  void setHScrollBarMode(ScrollMode);
69  void setVScrollBarMode(ScrollMode);
70 
72  { NoSelection=0, Single, Multi, Extended, Contiguous };
74  { SelectItems, SelectRows, SelectColumns };
75  void setSelectionMode(SelectionMode);
76  SelectionMode selectionMode() const;
77  void setSelectionBehavior(SelectionBehavior);
78  SelectionBehavior selectionBehavior() const;
79 
80  void clearSelection();
81  void setSelected(uiTreeViewItem*,bool);
82  bool isSelected(const uiTreeViewItem*) const;
83  uiTreeViewItem* selectedItem() const;
84  const char* text(int col=0) const;
85  int nrSelected() const;
86  void getSelectedItems(ObjectSet<uiTreeViewItem>&) const;
87  void removeSelectedItems();
88 
89  int nrItems() const;
90  void setCurrentItem(uiTreeViewItem*,int column=0);
91  uiTreeViewItem* currentItem() const;
92  int currentColumn() const;
93  int indexOfItem(uiTreeViewItem*) const;
94  uiTreeViewItem* getItem(int) const;
95  uiTreeViewItem* firstItem() const;
96  uiTreeViewItem* lastItem() const;
97  uiTreeViewItem* findItem(const char*,int,bool) const;
98 
99  void setItemMargin(int);
100  int itemMargin() const;
101 
102  void setShowToolTips(bool);
103  bool showToolTips() const;
104 
105  void clear();
106  void selectAll();
107  void checkAll();
108  void uncheckAll();
109 
110  void expandAll();
111  void collapseAll();
112  void expandTo(int treedepth);
113  void ensureItemVisible(const uiTreeViewItem*);
114 
115  // For MOVING an item to another point in the tree
116  void takeItem(uiTreeViewItem*);
117  void insertItem(int,uiTreeViewItem*);
118 
119  uiParent* parent() { return parent_; }
120  bool handleLongTabletPress();
121 
123  void triggerUpdate();
124 
126  uiTreeViewItem* itemNotified() { return lastitemnotified_; }
127  int columnNotified() { return column_; }
128  void unNotify() { lastitemnotified_ = 0; }
129 
130  void setNotifiedItem(mQtclass(QTreeWidgetItem*));
131  void setNotifiedColumn(int col) { column_ = col; }
132 
149 
150 protected:
151 
153  uiTreeViewItem* lastitemnotified_;
155  int column_;
157 
158  void cursorSelectionChanged(CallBacker*);
159  void itemChangedCB(CallBacker*);
160  void updateCheckStatus(uiTreeViewItem*);
161 
162  uiTreeViewBody* lvbody() { return body_; }
163  const uiTreeViewBody* lvbody() const { return body_; }
164 
165  void updateHeaderLabels();
166  void translateText();
167 
168 private:
169 
170 
171  friend class i_treeVwMessenger;
172  friend class uiTreeViewBody;
173  friend class uiTreeViewItem;
174 
175  uiTreeViewBody* body_;
176 
178 
179  // 0: use nr itms in tree
180  uiTreeViewBody& mkbody(uiParent*,const char*,int);
181 
182 public:
183 
184  const char* columnText(int column) const;
185  //Commandline driver usage only
186 
187 };
188 
189 
196 public:
197  friend class uiTreeView;
198 
199  enum Type { Standard, CheckBox };
200 
201  mExpClass(uiBase) Setup
202  { mODTextTranslationClass(Setup);
203  public:
207  bool setchecked=true )
208  : type_(tp)
209  , after_(0)
210  , setcheck_(setchecked)
211  { label( txt ); }
212 
215  mDefSetupMemb(BufferString,iconname)
216  mDefSetupMemb(bool,setcheck)
218 
219  Setup& label( const uiString& txt )
220  {
221  if ( !txt.isEmpty() )
222  labels_ += txt;
223  return *this;
224  }
225  };
226 
228  uiTreeViewItem(uiTreeView* parent,const Setup&);
229  virtual ~uiTreeViewItem();
230 
231  mQtclass(QTreeWidgetItem*) qItem() { return qtreeitem_; }
232  const mQtclass(QTreeWidgetItem*) qItem() const { return qtreeitem_; }
233 
234  int nrChildren() const;
235 
236  void setBGColor(int column,const Color&);
237 
238  void edit(int col);
239 
240  void setCheckable(bool);
241  bool isCheckable() const;
242  bool isChecked(bool qtstatus=true) const;
244  void setChecked(bool,bool trigger=false);
246  void checkAll(bool yn,bool trigger=false);
247 
248  void setToolTip(int column,const uiString&);
249 
250  void translateText();
251 
252  static void updateToolTips();
253 
254  void insertItem(int,uiTreeViewItem*);
255  void takeItem(uiTreeViewItem*);
256  void removeItem(uiTreeViewItem*);
257  void moveItem(uiTreeViewItem* after);
258  int siblingIndex() const;
261  void setText( const uiString&,
262  int column=0 );
263  void setText( int i, int column=0 )
264  { setText( toUiString(i), column ); }
265  void setText( float f, int column=0 )
266  { setText( toUiString(f), column ); }
267  void setText( double d, int column=0 )
268  { setText( toUiString(d), column ); }
269 
270  const char* text(int column=0) const;
271 
272  void setIcon(int column,const char* iconname);
273  void setPixmap(int column,const uiPixmap&);
274  void setPixmap(int column,const Color&,
275  int width=16,int height=10);
276 
277  virtual const char* key(int,bool) const { return 0; }
278  virtual int compare( uiTreeViewItem*,int column,bool) const
279  { return mUdf(int); }
280 
281  void setOpen(bool yn=true);
282  bool isOpen() const;
283 
284  void setSelected(bool yn);
285  bool isSelected() const;
286 
287  uiTreeViewItem* getChild(int) const;
288  uiTreeViewItem* firstChild() const;
289  uiTreeViewItem* lastChild() const;
290  uiTreeViewItem* nextSibling() const;
291  uiTreeViewItem* prevSibling() const;
292  uiTreeViewItem* parent() const;
293 
294  uiTreeViewItem* itemAbove();
295  uiTreeViewItem* itemBelow();
296 
297  uiTreeView* treeView() const;
298 
299  void setSelectable(bool yn);
300  bool isSelectable() const;
301 
302  void setDragEnabled(bool);
303  void setDropEnabled(bool);
304  bool dragEnabled() const;
305  bool dropEnabled() const;
306 
307  void setVisible(bool yn);
308  bool isVisible() const;
309 
310  void setRenameEnabled(int column,bool);
311  bool renameEnabled(int column) const;
312 
313  void setEnabled(bool);
314  bool isEnabled() const;
315 
316 
321 
322  static mQtclass(QTreeWidgetItem*) qitemFor(uiTreeViewItem*);
323  static const mQtclass(QTreeWidgetItem*) qitemFor(const uiTreeViewItem*);
324 
325  static uiTreeViewItem* itemFor(mQtclass(QTreeWidgetItem*));
326  static const uiTreeViewItem* itemFor(const mQtclass(QTreeWidgetItem*));
327 
328 protected:
329 
330  mQtclass(QTreeWidgetItem*) qtreeitem_;
331 
332  void init(const Setup&);
333  void updateFlags();
334  bool updateToolTip(int column);
335 
336  uiStringSet texts_;
337  uiStringSet tooltips_;
338 
339  bool isselectable_;
340  bool iseditable_;
341  bool isdragenabled_;
342  bool isdropenabled_;
343  bool ischeckable_;
344  bool isenabled_;
345  bool checked_;
346 };
#define mExpClass(module)
Definition: commondefs.h:157
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
SelectionMode
Definition: uitreeview.h:71
static void updateToolTips()
#define mQtclass(cls)
Definition: commondefs.h:232
virtual int height() const
Actual size in pixels.
uiTreeViewItem * itemNotified()
item last notified. See notifiers below
Definition: uitreeview.h:126
Notifier< uiTreeView > expanded
Definition: uitreeview.h:146
mQtclass(QTreeWidgetItem *) qItem()
Definition: uitreeview.h:231
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
void setToolTip(const uiString &)
Notifier< uiTreeView > leftButtonClicked
Definition: uitreeview.h:140
Notifier< uiTreeViewItem > keyPressed
Definition: uitreeview.h:318
uiTreeViewBody * body_
Definition: uitreeview.h:175
void setText(float f, int column=0)
Definition: uitreeview.h:265
Notifier< uiTreeView > itemRenamed
Definition: uitreeview.h:136
mFDQtclass(QTreeWidget) mFDQtclass(QTreeWidgetItem) mFDQtclass(QString) mFDQtclass(QStringList) class uiPixmap
bool init()
void updateToolTip(CallBacker *=0)
SelectionBehavior
Definition: uitreeview.h:73
Notifier< uiTreeView > returnPressed
Definition: uitreeview.h:137
Notifier< uiTreeView > collapsed
Definition: uitreeview.h:147
uiParent * parent()
Definition: uitreeview.h:119
void checkAll()
void clear(std::ios &)
uiTreeViewBody * lvbody()
Definition: uitreeview.h:162
static const uiString & emptyString()
Definition: uistring.h:107
Notifier< uiTreeView > mouseButtonClicked
Definition: uitreeview.h:143
The base class for most UI elements.
Definition: uiobj.h:35
uiStringSet labels_
Definition: uitreeview.h:177
Definition: uistring.h:88
Definition: uiparent.h:24
Set of BufferString objects.
Definition: bufstringset.h:25
Definition: uitreeview.h:74
Definition: uitreeview.h:199
Notifier< uiTreeView > contextMenuRequested
Definition: uitreeview.h:144
Notifier< uiTreeView > leftButtonPressed
Definition: uitreeview.h:141
bool isSelected(const uiTreeViewItem *) const
void setText(double d, int column=0)
Definition: uitreeview.h:267
OD::ButtonState buttonstate_
Definition: uitreeview.h:156
void translateText()
Definition: uitreeview.h:194
ButtonState
Definition: keyenum.h:18
virtual int compare(uiTreeViewItem *, int column, bool) const
Definition: uitreeview.h:278
Notifier< uiTreeView > mouseButtonPressed
Definition: uitreeview.h:142
void setText(int i, int column=0)
Definition: uitreeview.h:263
friend class uiTreeViewItem
Definition: uitreeview.h:173
Notifier< uiTreeView > itemChanged
Definition: uitreeview.h:135
Notifier< uiTreeViewItem > stateChanged
only works for CheckBox type
Definition: uitreeview.h:317
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:270
void setSelected(uiTreeViewItem *, bool)
Notifier< uiTreeView > doubleClicked
Definition: uitreeview.h:145
BufferString rettxt
Definition: uitreeview.h:152
void takeItem(uiTreeViewItem *)
void insertItem(int, uiTreeViewItem *)
Notifier< uiTreeView > rightButtonClicked
Definition: uitreeview.h:138
#define mDefSetupMemb(typ, memb)
Definition: commondefs.h:129
const char * text(int col=0) const
uiString toUiString(const DBKey &ky)
Definition: dbkey.h:117
Definition: uitreeview.h:29
Off-screen pixel-based paint device.
Definition: uipixmap.h:33
virtual int width() const
Actual size in pixels.
uiParent * parent_
Definition: uitreeview.h:154
uiTreeViewItem * lastitemnotified_
Definition: uitreeview.h:153
Notifier< uiTreeView > currentChanged
Definition: uitreeview.h:134
Definition: uitreeview.h:72
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
virtual const char * key(int, bool) const
Definition: uitreeview.h:277
brief Helper class for uiTreeView to relay Qt&#39;s &#39;activated&#39; messages to uiAction. ...
Definition: i_qtreeview.h:27
const mQtclass(QTreeWidgetItem *) qItem() const
Definition: uitreeview.h:232
int columnNotified()
Definition: uitreeview.h:127
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
Definition: uistring.h:235
Type
Definition: uitreeview.h:199
ScrollMode
Definition: uitreeview.h:67
const uiTreeViewBody * lvbody() const
Definition: uitreeview.h:163
int column_
Definition: uitreeview.h:155
Notifier< uiTreeView > selectionChanged
Definition: uitreeview.h:133
Setup(const uiString &txt=uiString::emptyString(), uiTreeViewItem::Type tp=uiTreeViewItem::Standard, bool setchecked=true)
Definition: uitreeview.h:204
void setNotifiedColumn(int col)
Definition: uitreeview.h:131
WidthMode
Definition: uitreeview.h:57
void unNotify()
Definition: uitreeview.h:128
Definition: uitreeview.h:201
Notifier< uiTreeView > unusedKey
Definition: uitreeview.h:148
Notifier< uiTreeView > rightButtonPressed
Definition: uitreeview.h:139
HPos
Definition: draw.h:26

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017