OpendTect  6.3
uilistbox.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: Nanne Hemstra
8  Date: 16/05/2000
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uibasemod.h"
14 #include "uigroup.h"
15 #include "uistrings.h"
16 #include "keyenum.h"
17 #include "draw.h"
18 
19 class BufferStringSet;
20 class uiCheckBox;
21 class uiLabel;
22 class uiListBoxBody;
23 class uiMenu;
24 class uiString;
25 
26 mFDQtclass(QListWidgetItem)
27 
28 
29 
30 
58 mExpClass(uiBase) uiListBoxObj : public uiObject
59 {
60 public:
61  uiListBoxObj(uiParent*,const char* nm,OD::ChoiceMode);
62  ~uiListBoxObj();
63 
64  uiListBoxBody& body() { return *body_; }
65 
66 private:
67  uiListBoxBody* body_;
68  uiListBoxBody& mkbody(uiParent*,const char*,OD::ChoiceMode);
69 };
70 
71 
72 
73 mExpClass(uiBase) uiListBox : public uiGroup
75 friend class i_listMessenger;
76 friend class uiListBoxBody;
77 public:
78  enum LblPos { LeftTop, RightTop, LeftMid, RightMid,
79  AboveLeft, AboveMid, AboveRight,
80  BelowLeft, BelowMid, BelowRight };
81 
82  mExpClass(uiBase) Setup
83  {
84  public:
88  : lbl_(l)
89  , cm_(icm)
90  , prefnrlines_(0)
91  , prefwidth_(0)
92  , lblpos_(lp)
93  {}
94 
97  mDefSetupMemb(int,prefnrlines)
98  mDefSetupMemb(int,prefwidth)
100 
101  };
102 
103  uiListBox(uiParent*,const char* nm=0,
105  uiListBox(uiParent*,const Setup&,const char* nm=0);
106  virtual ~uiListBox();
107 
108  uiListBoxObj* box() { return lb_; }
109  uiGroup* checkGroup() { return checkgrp_; }
110  uiCheckBox* masterCheckBox() { return cb_; }
111  int nrLabels() const { return lbls_.size(); }
112  uiLabel* label( int nr=0 ) { return lbls_[nr]; }
113  void setLabelText(const uiString&,int nr=0);
114 
115  inline OD::ChoiceMode choiceMode() const { return choicemode_; }
116  inline bool isMultiChoice() const
117  { return ::isMultiChoice(choicemode_); }
118  void setChoiceMode(OD::ChoiceMode);
119  void setMultiChoice(bool yn=true);
120  void setAllowNoneChosen(bool);
121  void setNotSelectable();
122 
123  int size() const;
124  inline bool isEmpty() const { return size() == 0; }
125  bool validIdx(int) const;
126  bool isPresent(const char*) const;
127  int maxNrOfChoices() const;
128 
129  OD::Alignment::HPos alignment() const { return alignment_; }
130  void setAlignment(OD::Alignment::HPos);
131  void setNrLines(int);
132  void setFieldWidth(int);
133  void setHSzPol(uiObject::SzPolicy);
134  void setVSzPol(uiObject::SzPolicy);
135 
136  void setEmpty();
137  void removeItem(int);
138  void removeItem(const char*);
139  void removeItem( const FixedString& fs )
140  { removeItem( fs.str() ); }
141  void setAllowDuplicates(bool yn);
142  void addItem(const uiString&,bool marked=false,int id=-1);
143  void addItem(const uiString&,const uiPixmap&,int id=-1);
144  void addItem(const uiString&,const Color&,int id=-1);
145 
146  void addItems(const char**);
147  void addItems(const BufferStringSet&);
148  void addItems(const uiStringSet&);
149 
150  void insertItem(const uiString&,int idx=-1,
151  bool marked=false,int id=-1);
152  void insertItem(const uiString&,const uiPixmap&,
153  int idx=-1,int id=-1);
154  void insertItem(const uiString&,const Color&,
155  int idx=-1,int id=-1);
156 
157  void setPixmap(int,const Color&);
158  void setPixmap(int,const uiPixmap&);
159  void setIcon(int,const char* icon_identifier);
160  void setColor(int,const Color&);
161 
162  Color getColor(int) const;
163 
164  void sortItems(bool asc=true);
165  void sortNmItems(bool asc=true);
166 
167  int indexOf(const char*) const;
168  const char* itemText(int) const;
169  const uiString textOfItem(int) const;
170  void setItemText(int,const uiString&);
171  void getItems(BufferStringSet&) const;
172 
173  int currentItem() const;
174  const char* getText() const { return itemText(currentItem()); }
175  void setCurrentItem(int);
176  void setCurrentItem(const char*);
177  void setCurrentItem(const uiString&);
178  void setCurrentItem( const OD::String& str )
179  { setCurrentItem( str.str() ); }
180  void setItemSelectable(int,bool);
181 
182  int nrChosen() const;
183  bool isChoosable(int) const;
184  bool isChosen(int) const;
185  int firstChosen() const;
186  int nextChosen(int prev=-1) const;
187  void getChosen(BufferStringSet&) const;
188  void getChosen(uiStringSet&) const;
189  void getChosen(TypeSet<int>&) const;
190  void setChoosable(int,bool yn);
191  void setChosen(int,bool yn=true);
192  void setChosen(Interval<int>,bool yn=true);
193  void chooseAll(bool yn=true);
194  void setChosen(const BufferStringSet&);
195  void setChosen(const TypeSet<int>&);
196 
197  bool isMarked(int) const;
198  void setMarked(int,bool);
199 
200  void setItemID(int idx,int id);
201  int currentItemID() const;
202  int getItemID(int idx) const;
203  int getItemIdx(int id) const;
204 
205  void scrollToTop();
206  void scrollToBottom();
207  bool handleLongTabletPress();
208  void disableRightClick(bool yn);
209  void blockScrolling(bool yn) { scrollingblocked_ = yn; }
210 
212  CNotifier<uiListBox,int> itemChosen; /*< if itmidx==-1, many items were
213  chosen at once */
218 
220  const CallBack& wcb )
221  { retrievecb_ = rcb; savecb_ = wcb; }
222 
223 private:
224 
225  void translateText();
226 
231  mutable uiString rettxt_;
236 
237  void menuCB(CallBacker*);
238  void handleCheckChange(mQtclass(QListWidgetItem*));
239  void usrChooseAll(bool yn=true);
240 
241  bool isNone() const { return choicemode_ == OD::ChooseNone;}
242  int optimumFieldWidth(int minwdth=20,int maxwdth=40) const;
243  static int cDefNrLines();
244 
245  void updateFields2ChoiceMode();
246  void initNewItem(int);
247  void setItemCheckable(int,bool);
248 
249  void setItemsCheckable( bool yn ) { setMultiChoice(yn); }
250  void setAllItemsChecked(bool);
251  void setItemChecked(int,bool);
252  void setItemChecked(const char*,bool);
253  bool isItemChecked(const char*) const;
254  int nrChecked() const;
255  void setCheckedItems(const BufferStringSet&);
256  void setCheckedItems(const TypeSet<int>&);
257  void getCheckedItems(BufferStringSet&) const;
258  void getCheckedItems(TypeSet<int>&) const;
259 
260  uiListBoxObj* lb_;
262  uiGroup* checkgrp_;
264 
265  void mkLabel(const uiString&,LblPos);
266  void mkCheckGroup();
267  void checkCB(CallBacker*);
268  void updateCheckState();
269 
270 public:
272  bool isItemChecked(int) const;
273 };
void blockScrolling(bool yn)
Definition: uilistbox.h:209
Definition: uigroup.h:53
#define mExpClass(module)
Definition: commondefs.h:157
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
ChoiceMode
What to choose from any list-type UI object.
Definition: oduicommon.h:40
Definition: uilistbox.h:82
const char * str() const
Definition: odstring.h:46
#define mQtclass(cls)
Definition: commondefs.h:232
bool isNone() const
Definition: uilistbox.h:241
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
bool scrollingblocked_
Definition: uilistbox.h:235
OD::String that holds an existing text string.
Definition: fixedstring.h:27
Definition: oduicommon.h:43
Definition: uilistbox.h:79
Definition: uilistbox.h:78
LblPos
Definition: uilistbox.h:78
ObjectSet< uiLabel > lbls_
Definition: uilistbox.h:261
The base class for most UI elements.
Definition: uiobj.h:35
uiGroup * checkgrp_
Definition: uilistbox.h:262
CallBack savecb_
Definition: uilistbox.h:233
Definition: uistring.h:88
Definition: uiparent.h:24
Set of BufferString objects.
Definition: bufstringset.h:25
ObjectSet< T >::size_type indexOf(const ObjectSet< T > &os, const S &val)
Locate object in set.
Definition: objectset.h:173
Definition: uilistbox.h:78
uiCheckBox * cb_
Definition: uilistbox.h:263
bool allowduplicates_
Definition: uilistbox.h:229
List Box.
Definition: uilistbox.h:73
Notifier< uiListBox > rightButtonClicked
Definition: uilistbox.h:215
OD::ChoiceMode choiceMode() const
Definition: uilistbox.h:115
ButtonState
Definition: keyenum.h:18
void setCurrentItem(const OD::String &str)
Definition: uilistbox.h:178
SzPolicy
How should the object&#39;s size behave? Undef : use default. Small : 1 base sz. Medium : 2* base sz + 1...
Definition: uiobj.h:55
OD::ChoiceMode choicemode_
Definition: uilistbox.h:227
uiMenu & rightclickmnu_
Definition: uilistbox.h:230
uiListBoxObj * box()
Definition: uilistbox.h:108
encapsulates the read-access-only part of strings in OD.
Definition: odstring.h:29
int nrLabels() const
Definition: uilistbox.h:111
CNotifier< uiListBox, int > itemChosen
Definition: uilistbox.h:212
uiString rettxt_
Definition: uilistbox.h:231
#define mDefSetupMemb(typ, memb)
Definition: commondefs.h:129
#define mFDQtclass(cls)
Definition: commondefs.h:231
Definition: uimenu.h:64
Notifier< uiListBox > deleteButtonPressed
Definition: uilistbox.h:217
Off-screen pixel-based paint device.
Definition: uipixmap.h:33
OD::Alignment::HPos alignment() const
Definition: uilistbox.h:129
OD::ButtonState buttonstate_
Definition: uilistbox.h:232
Definition: oduicommon.h:42
bool isMultiChoice() const
Definition: uilistbox.h:116
Notifier< uiListBox > leftButtonClicked
Definition: uilistbox.h:216
uiLabel * label(int nr=0)
Definition: uilistbox.h:112
bool isEmpty() const
Definition: uilistbox.h:124
Definition: uilabel.h:22
uiCheckBox * masterCheckBox()
Definition: uilistbox.h:110
Notifier< uiListBox > selectionChanged
Definition: uilistbox.h:211
void setItemsCheckable(bool yn)
Definition: uilistbox.h:249
const char * getText() const
Definition: uilistbox.h:174
uiGroup * checkGroup()
Definition: uilistbox.h:109
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer, similar to Qt.
Definition: color.h:24
OD::Alignment::HPos alignment_
Definition: uilistbox.h:228
Definition: uistring.h:235
static uiString sEmptyString()
Definition: uistrings.h:307
void offerReadWriteSelection(const CallBack &rcb, const CallBack &wcb)
Definition: uilistbox.h:219
bool isMultiChoice(OD::ChoiceMode cm)
Definition: oduicommon.h:89
CallBacks object-oriented (object + method).
Definition: callback.h:62
Setup(OD::ChoiceMode icm=OD::ChooseOnlyOne, const uiString &l=uiStrings::sEmptyString(), uiListBox::LblPos lp=uiListBox::LeftTop)
Definition: uilistbox.h:85
Definition: uibutton.h:130
Notifier< uiListBox > doubleClicked
Definition: uilistbox.h:214
Helper class for uiListBox to relay Qt&#39;s messages.
Definition: i_qlistbox.h:26
void removeItem(const FixedString &fs)
Definition: uilistbox.h:139
CallBack retrievecb_
Definition: uilistbox.h:234
uiListBoxObj * lb_
Definition: uilistbox.h:260
HPos
Definition: draw.h:26

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