#ifndef ROOT_TGComboBox
#define ROOT_TGComboBox
#ifndef ROOT_TGListBox
#include "TGListBox.h"
#endif
class TGScrollBarElement;
class TGTextEntry;
class TGComboBoxPopup : public TGCompositeFrame {
protected:
TGListBox *fListBox;
TGLBEntry *fSelected;
public:
TGComboBoxPopup(const TGWindow *p = 0, UInt_t w = 1, UInt_t h = 1,
UInt_t options = kVerticalFrame,
Pixel_t back = GetWhitePixel());
virtual Bool_t HandleButton(Event_t *);
void KeyPressed(TGFrame*, UInt_t, UInt_t);
void SetListBox(TGListBox *lb) { fListBox = lb; }
void PlacePopup(Int_t x, Int_t y, UInt_t w, UInt_t h);
void EndPopup();
ClassDef(TGComboBoxPopup,0)
};
class TGComboBox : public TGCompositeFrame, public TGWidget {
private:
TGComboBox(const TGComboBox&);
TGComboBox& operator=(const TGComboBox&);
protected:
TGLBEntry *fSelEntry;
TGTextEntry *fTextEntry;
TGScrollBarElement *fDDButton;
TGComboBoxPopup *fComboFrame;
TGListBox *fListBox;
const TGPicture *fBpic;
TGLayoutHints *fLhs;
TGLayoutHints *fLhb;
TGLayoutHints *fLhdd;
virtual void Init();
public:
TGComboBox(const TGWindow *p = 0, Int_t id = -1,
UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
Pixel_t back = GetWhitePixel());
TGComboBox(const TGWindow *p, const char *text, Int_t id = -1,
UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
Pixel_t back = GetWhitePixel());
virtual ~TGComboBox();
virtual void DrawBorder();
virtual TGDimension GetDefaultSize() const { return TGDimension(fWidth, fHeight); }
virtual Bool_t HandleButton(Event_t *event);
virtual Bool_t HandleDoubleClick(Event_t *event);
virtual Bool_t HandleMotion(Event_t *event);
virtual Bool_t HandleSelection(Event_t *event);
virtual Bool_t HandleSelectionRequest(Event_t *event);
virtual Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
virtual void AddEntry(TGString *s, Int_t id)
{ fListBox->AddEntry(s, id); Resize(); }
virtual void AddEntry(const char *s, Int_t id)
{ fListBox->AddEntry(s, id); Resize(); }
virtual void AddEntry(TGLBEntry *lbe, TGLayoutHints *lhints)
{ fListBox->AddEntry(lbe, lhints); Resize(); }
virtual void InsertEntry(TGString *s, Int_t id, Int_t afterID)
{ fListBox->InsertEntry(s, id, afterID); Resize(); }
virtual void InsertEntry(const char *s, Int_t id, Int_t afterID)
{ fListBox->InsertEntry(s, id, afterID); Resize(); }
virtual void InsertEntry(TGLBEntry *lbe, TGLayoutHints *lhints, Int_t afterID)
{ fListBox->InsertEntry(lbe, lhints, afterID); Resize(); }
virtual void NewEntry(const char *s = "Entry")
{ fListBox->NewEntry(s); Resize(); }
virtual void RemoveEntry(Int_t id = -1);
virtual void RemoveAll();
virtual void Layout();
virtual Bool_t IsTextInputEnabled() const { return (fTextEntry != 0); }
virtual void EnableTextInput(Bool_t on);
virtual void RemoveEntries(Int_t from_ID, Int_t to_ID)
{ fListBox->RemoveEntries(from_ID, to_ID); }
virtual Int_t GetNumberOfEntries() const
{ return fListBox->GetNumberOfEntries(); }
virtual TGListBox *GetListBox() const { return fListBox; }
virtual TGTextEntry *GetTextEntry() const { return fTextEntry; }
virtual TGLBEntry *FindEntry(const char *s) const;
virtual void Select(Int_t id, Bool_t emit = kTRUE);
virtual Int_t GetSelected() const { return fListBox->GetSelected(); }
virtual TGLBEntry *GetSelectedEntry() const
{ return fListBox->GetSelectedEntry(); }
virtual void SetTopEntry(TGLBEntry *e, TGLayoutHints *lh);
virtual void SetEnabled(Bool_t on = kTRUE);
virtual Bool_t IsEnabled() const { return fDDButton->IsEnabled(); }
virtual void SortByName(Bool_t ascend = kTRUE)
{ fListBox->SortByName(ascend); }
virtual void Selected(Int_t widgetId, Int_t id);
virtual void Selected(Int_t id) { Emit("Selected(Int_t)", id); }
virtual void Selected(const char *txt) { Emit("Selected(char*)", txt); }
virtual void ReturnPressed();
virtual void SavePrimitive(ostream &out, Option_t *option = "");
ClassDef(TGComboBox,0)
};
class TGLineStyleComboBox : public TGComboBox {
public:
TGLineStyleComboBox(const TGWindow *p = 0, Int_t id = -1,
UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
Pixel_t back = GetWhitePixel());
virtual void SavePrimitive(ostream &out, Option_t *option = "");
ClassDef(TGLineStyleComboBox, 0)
};
class TGLineWidthComboBox : public TGComboBox {
public:
TGLineWidthComboBox(const TGWindow *p = 0, Int_t id = -1,
UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
Pixel_t back = GetWhitePixel(), Bool_t none=kFALSE);
virtual void SavePrimitive(ostream &out, Option_t *option = "");
ClassDef(TGLineWidthComboBox, 0)
};
const Int_t kMaxFonts = 20;
class TGFontTypeComboBox : public TGComboBox {
protected:
FontStruct_t fFonts[kMaxFonts];
public:
TGFontTypeComboBox(const TGWindow *p = 0, Int_t id = -1,
UInt_t options = kHorizontalFrame | kSunkenFrame | kDoubleBorder,
Pixel_t bask = GetWhitePixel());
virtual ~TGFontTypeComboBox();
ClassDef(TGFontTypeComboBox, 0)
};
#endif