Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGButtonGroup.h
Go to the documentation of this file.
1 // @(#)root/gui:$Id$
2 // Author: Valeriy Onuchin & Fons Rademakers 16/10/2000
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_TGButtonGroup
13 #define ROOT_TGButtonGroup
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TGButtonGroup, TGVButtonGroup and TGHButtonGroup //
18 // //
19 // This header defines button group frames. //
20 // //
21 //////////////////////////////////////////////////////////////////////////
22 
23 #include "TGFrame.h"
24 #include "TMap.h"
25 
26 
27 class TGButton;
28 
29 
30 
31 class TGButtonGroup : public TGGroupFrame {
32 
33 friend class TGButton;
34 
35 private:
36  TGButtonGroup(const TGButtonGroup&); // Not implemented
37  TGButtonGroup& operator=(const TGButtonGroup&); // Not implemented
38 
39 protected:
40  Bool_t fState; // kTRUE if group is enabled
41  Bool_t fExclGroup; // kTRUE if group is exclusive
42  Bool_t fRadioExcl; // kTRUE if radio buttons are exclusive
43  Bool_t fDrawBorder; // kTRUE if border and title are drawn
44  TMap *fMapOfButtons; // map of button/id pairs in this group
45 
46  void Init();
47  virtual void DoRedraw();
48 
49 public:
50  TGButtonGroup(const TGWindow *parent = 0,
51  const TString &title = "",
52  UInt_t options = kChildFrame | kVerticalFrame,
53  GContext_t norm = GetDefaultGC()(),
54  FontStruct_t font = GetDefaultFontStruct(),
55  Pixel_t back = GetDefaultFrameBackground());
56 
57  TGButtonGroup(const TGWindow *parent,
58  UInt_t r, UInt_t c, Int_t s = 0, Int_t h = 0 ,
59  const TString &title = "",
60  GContext_t norm = GetDefaultGC()(),
61  FontStruct_t font = GetDefaultFontStruct(),
62  Pixel_t back = GetDefaultFrameBackground());
63 
64  virtual ~TGButtonGroup();
65 
66  virtual void Pressed(Int_t id) { Emit("Pressed(Int_t)",id); } //*SIGNAL*
67  virtual void Released(Int_t id) { Emit("Released(Int_t)",id);} //*SIGNAL*
68  virtual void Clicked(Int_t id) { Emit("Clicked(Int_t)",id); } //*SIGNAL*
69 
70  virtual void ButtonPressed();
71  virtual void ButtonReleased();
72  virtual void ButtonClicked();
73  virtual void ReleaseButtons();
74 
75  Bool_t IsEnabled() const { return fState; }
76  Bool_t IsExclusive() const { return fExclGroup; }
77  Bool_t IsRadioButtonExclusive() const { return fRadioExcl; }
78  Bool_t IsBorderDrawn() const { return fDrawBorder; }
79  Int_t GetCount() const { return fMapOfButtons->GetSize(); }
80  Int_t GetId(TGButton *button) const;
81 
82  virtual void SetExclusive(Bool_t flag = kTRUE);
83  virtual void SetRadioButtonExclusive(Bool_t flag = kTRUE);
84  virtual void SetState(Bool_t state = kTRUE);
85  virtual void SetBorderDrawn(Bool_t enable = kTRUE);
86  virtual void SetButton(Int_t id, Bool_t down = kTRUE);
87  virtual void SetTitle(TGString *title);
88  virtual void SetTitle(const char *title);
89 
90  virtual Int_t Insert(TGButton *button, int id = -1);
91  virtual void Remove(TGButton *button);
92  virtual TGButton *Find(Int_t id) const;
93  virtual TGButton *GetButton(Int_t id) const { return Find(id); }
94  virtual void Show();
95  virtual void Hide();
96  virtual void DrawBorder();
97  virtual void SetLayoutHints(TGLayoutHints *l, TGButton *button = 0);
98  virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
99 
100  ClassDef(TGButtonGroup,0) // Organizes TGButtons in a group
101 };
102 
103 
104 class TGVButtonGroup : public TGButtonGroup {
105 
106 public:
107  TGVButtonGroup(const TGWindow *parent,
108  const TString &title = "",
109  GContext_t norm = GetDefaultGC()(),
110  FontStruct_t font = GetDefaultFontStruct(),
111  Pixel_t back = GetDefaultFrameBackground()) :
112  TGButtonGroup(parent, title, kChildFrame | kVerticalFrame,
113  norm, font, back) { }
114 
115  virtual ~TGVButtonGroup() { }
116  virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
117 
118  ClassDef(TGVButtonGroup,0) // A button group with one vertical column
119 };
120 
121 
122 class TGHButtonGroup : public TGButtonGroup {
123 
124 public:
125  TGHButtonGroup(const TGWindow *parent,
126  const TString &title = "",
127  GContext_t norm = GetDefaultGC()(),
128  FontStruct_t font = GetDefaultFontStruct(),
129  Pixel_t back = GetDefaultFrameBackground()) :
130  TGButtonGroup(parent, title, kChildFrame | kHorizontalFrame,
131  norm, font, back) { }
132 
133  virtual ~TGHButtonGroup() { }
134  virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
135 
136  ClassDef(TGHButtonGroup,0) // A button group with one horizontal row
137 };
138 
139 #endif