Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGComboBox.h
Go to the documentation of this file.
1 // @(#)root/gui:$Id$
2 // Author: Fons Rademakers 13/01/98
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TGComboBox
13 #define ROOT_TGComboBox
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TGComboBox, TGComboBoxPopup //
19 // //
20 // A combobox (also known as a drop down listbox) allows the selection //
21 // of one item out of a list of items. The selected item is visible in //
22 // a little window. To view the list of possible items one has to click //
23 // on a button on the right of the little window. This will drop down //
24 // a listbox. After selecting an item from the listbox the box will //
25 // disappear and the newly selected item will be shown in the little //
26 // window. //
27 // //
28 // The TGComboBox is user callable. The TGComboBoxPopup is a service //
29 // class of the combobox. //
30 // //
31 // Selecting an item in the combobox will generate the event: //
32 // kC_COMMAND, kCM_COMBOBOX, combobox id, item id. //
33 // //
34 //////////////////////////////////////////////////////////////////////////
35 
36 #include "TGListBox.h"
37 
38 class TGScrollBarElement;
39 class TGTextEntry;
40 
41 class TGComboBoxPopup : public TGCompositeFrame {
42 
43 protected:
44  TGListBox *fListBox;
45  TGLBEntry *fSelected;
46 
47 private:
48  TGComboBoxPopup(const TGComboBoxPopup&); // Not implemented
49  TGComboBoxPopup& operator=(const TGComboBoxPopup&); // Not implemented
50 
51 public:
52  TGComboBoxPopup(const TGWindow *p = 0, UInt_t w = 1, UInt_t h = 1,
53  UInt_t options = kVerticalFrame,
54  Pixel_t back = GetWhitePixel());
55 
56  virtual Bool_t HandleButton(Event_t *);
57  void KeyPressed(TGFrame*, UInt_t, UInt_t);
58 
59  void SetListBox(TGListBox *lb) { fListBox = lb; }
60  void PlacePopup(Int_t x, Int_t y, UInt_t w, UInt_t h);
61  void EndPopup();
62 
63  ClassDef(TGComboBoxPopup,0) // Combobox popup window
64 };
65 
66 
67 class TGComboBox : public TGCompositeFrame, public TGWidget {
68 
69 private:
70  TGComboBox(const TGComboBox&); // Not implemented
71  TGComboBox& operator=(const TGComboBox&); // Not implemented
72 
73 protected:
74  TGLBEntry *fSelEntry; // selected item frame
75  TGTextEntry *fTextEntry; // text entry
76  TGScrollBarElement *fDDButton; // button controlling drop down of popup
77  TGComboBoxPopup *fComboFrame; // popup containing a listbox
78  TGListBox *fListBox; // the listbox with text items
79  const TGPicture *fBpic; // down arrow picture used in fDDButton
80  TGLayoutHints *fLhs; // layout hints for selected item frame
81  TGLayoutHints *fLhb; // layout hints for fDDButton
82  TGLayoutHints *fLhdd; // layout hints for fListBox
83 
84  virtual void Init();
85 
86 public:
87  TGComboBox(const TGWindow *p = 0, Int_t id = -1,
88  UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
89  Pixel_t back = GetWhitePixel());
90  TGComboBox(const TGWindow *p, const char *text, Int_t id = -1,
91  UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
92  Pixel_t back = GetWhitePixel());
93 
94  virtual ~TGComboBox();
95 
96  virtual void DrawBorder();
97  virtual TGDimension GetDefaultSize() const { return TGDimension(fWidth, fHeight); }
98 
99  virtual Bool_t HandleButton(Event_t *event);
100  virtual Bool_t HandleDoubleClick(Event_t *event);
101  virtual Bool_t HandleMotion(Event_t *event);
102  virtual Bool_t HandleSelection(Event_t *event);
103  virtual Bool_t HandleSelectionRequest(Event_t *event);
104  virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
105 
106  virtual void AddEntry(TGString *s, Int_t id)
107  { fListBox->AddEntry(s, id); Resize(); }
108  virtual void AddEntry(const char *s, Int_t id)
109  { fListBox->AddEntry(s, id); Resize(); }
110  virtual void AddEntry(TGLBEntry *lbe, TGLayoutHints *lhints)
111  { fListBox->AddEntry(lbe, lhints); Resize(); }
112  virtual void InsertEntry(TGString *s, Int_t id, Int_t afterID)
113  { fListBox->InsertEntry(s, id, afterID); Resize(); }
114  virtual void InsertEntry(const char *s, Int_t id, Int_t afterID)
115  { fListBox->InsertEntry(s, id, afterID); Resize(); }
116  virtual void InsertEntry(TGLBEntry *lbe, TGLayoutHints *lhints, Int_t afterID)
117  { fListBox->InsertEntry(lbe, lhints, afterID); Resize(); }
118  virtual void NewEntry(const char *s = "Entry")
119  { fListBox->NewEntry(s); Resize(); } //*MENU*
120  virtual void RemoveEntry(Int_t id = -1); //*MENU*
121  virtual void RemoveAll(); //*MENU*
122  virtual void Layout();
123  virtual Bool_t IsTextInputEnabled() const { return (fTextEntry != 0); }
124  virtual void EnableTextInput(Bool_t on); //*TOGGLE* *GETTER=IsTextInputEnabled
125  virtual void RemoveEntries(Int_t from_ID, Int_t to_ID)
126  { fListBox->RemoveEntries(from_ID, to_ID); }
127  virtual Int_t GetNumberOfEntries() const
128  { return fListBox->GetNumberOfEntries(); }
129 
130  virtual TGListBox *GetListBox() const { return fListBox; }
131  virtual TGTextEntry *GetTextEntry() const { return fTextEntry; }
132  virtual TGLBEntry *FindEntry(const char *s) const;
133  virtual void Select(Int_t id, Bool_t emit = kTRUE);
134  virtual Int_t GetSelected() const { return fListBox->GetSelected(); }
135  virtual TGLBEntry *GetSelectedEntry() const
136  { return fListBox->GetSelectedEntry(); }
137  virtual void SetTopEntry(TGLBEntry *e, TGLayoutHints *lh);
138  virtual void SetEnabled(Bool_t on = kTRUE); //*TOGGLE* *GETTER=IsEnabled
139  virtual Bool_t IsEnabled() const { return fDDButton->IsEnabled(); }
140  virtual void SortByName(Bool_t ascend = kTRUE)
141  { fListBox->SortByName(ascend); } //*MENU*icon=bld_sortup.png*
142 
143  virtual void Selected(Int_t widgetId, Int_t id); // *SIGNAL*
144  virtual void Selected(Int_t id) { Emit("Selected(Int_t)", id); } // *SIGNAL*
145  virtual void Selected(const char *txt) { Emit("Selected(char*)", txt); } // *SIGNAL*
146  virtual void ReturnPressed(); // *SIGNAL*
147  virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
148 
149  ClassDef(TGComboBox,0) // Combo box widget
150 };
151 
152 
153 //////////////////////////////////////////////////////////////////////////
154 // //
155 // The TGLineStyleComboBox user callable and it creates //
156 // a combobox for selecting the line style. //
157 // //
158 //////////////////////////////////////////////////////////////////////////
159 
160 class TGLineStyleComboBox : public TGComboBox {
161 
162 public:
163  TGLineStyleComboBox(const TGWindow *p = 0, Int_t id = -1,
164  UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
165  Pixel_t back = GetWhitePixel());
166 
167  virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
168 
169  ClassDef(TGLineStyleComboBox, 0) // Line style combobox widget
170 
171 };
172 
173 
174 //////////////////////////////////////////////////////////////////////////
175 // //
176 // The TGLineWidthComboBox user callable and it creates //
177 // a combobox for selecting the line width. //
178 // //
179 //////////////////////////////////////////////////////////////////////////
180 
181 
182 class TGLineWidthComboBox : public TGComboBox {
183 
184 public:
185  TGLineWidthComboBox(const TGWindow *p = 0, Int_t id = -1,
186  UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
187  Pixel_t back = GetWhitePixel(), Bool_t none=kFALSE);
188 
189  virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
190 
191  ClassDef(TGLineWidthComboBox, 0) // Line width combobox widget
192 
193 
194 };
195 
196 
197 //////////////////////////////////////////////////////////////////////////
198 // //
199 // The TGFontTypeComboBox is user callable and it creates //
200 // a combobox for selecting the font. //
201 // //
202 //////////////////////////////////////////////////////////////////////////
203 
204 const Int_t kMaxFonts = 20;
205 
206 class TGFontTypeComboBox : public TGComboBox {
207 
208 protected:
209  FontStruct_t fFonts[kMaxFonts];
210 
211 public:
212  TGFontTypeComboBox(const TGWindow *p = 0, Int_t id = -1,
213  UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
214  Pixel_t bask = GetWhitePixel());
215  virtual ~TGFontTypeComboBox();
216 
217  ClassDef(TGFontTypeComboBox, 0) // Font type combobox widget
218 };
219 
220 #endif