library: libGui #include "TGButtonGroup.h"

# TGButtonGroup

class description - source file - inheritance tree (.pdf)

## class TGButtonGroup : public TGGroupFrame

| Inheritance Chart:
`TObject`
| <- | `TGObject`
| <- | `TGWindow`
`TQObject`
| <- | `TGFrame`
| <- | `TGCompositeFrame`
| <- | `TGGroupFrame`
| <- | `TGButtonGroup` |
<- |
`TGHButtonGroup` |
`TGVButtonGroup` |

        protected:

          void Init()

        public:

                            TGButtonGroup(const TGWindow* parent = 0, const TString& title = , UInt_t options = kChildFrame|kVerticalFrame, GContext_t norm = GetDefaultGC()(), FontStruct_t font = GetDefaultFontStruct(), Pixel_t back = GetDefaultFrameBackground())
                            TGButtonGroup(const TGWindow* parent, UInt_t r, UInt_t c, Int_t s = 0, Int_t h = 0, const TString& title = , GContext_t norm = GetDefaultGC()(), FontStruct_t font = GetDefaultFontStruct(), Pixel_t back = GetDefaultFrameBackground())
                            TGButtonGroup(const TGButtonGroup&)
                    virtual ~TGButtonGroup()
               virtual void ButtonClicked()
               virtual void ButtonPressed()
               virtual void ButtonReleased()
             static TClass* Class()
               virtual void Clicked(Int_t id)
               virtual void DrawBorder()
          virtual TGButton* Find(Int_t id) const
          virtual TGButton* GetButton(Int_t id) const
                      Int_t GetCount() const
                      Int_t GetId(TGButton* button) const
               virtual void Hide()
              virtual Int_t Insert(TGButton* button, int id = -1)
            virtual TClass* IsA() const
                     Bool_t IsBorderDrawn() const
                     Bool_t IsExclusive() const
                     Bool_t IsRadioButtonExclusive() const
               virtual void Pressed(Int_t id)
               virtual void ReleaseButtons()
               virtual void Released(Int_t id)
               virtual void Remove(TGButton* button)
               virtual void SavePrimitive(ofstream& out, Option_t* option)
               virtual void SetBorderDrawn(Bool_t enable = kTRUE)
               virtual void SetButton(Int_t id, Bool_t down = kTRUE)
               virtual void SetExclusive(Bool_t flag = kTRUE)
               virtual void SetLayoutHints(TGLayoutHints* l, TGButton* button = 0)
               virtual void SetRadioButtonExclusive(Bool_t flag = kTRUE)
               virtual void SetTitle(TGString* title)
               virtual void SetTitle(const char* title)
               virtual void Show()
               virtual void ShowMembers(TMemberInspector& insp, char* parent)
               virtual void Streamer(TBuffer& b)
                       void StreamerNVirtual(TBuffer& b)

### Data Members

        protected:

          Bool_t fExclGroup     kTRUE if group is exclusive
          Bool_t fRadioExcl     kTRUE if radio buttons are exclusive
          Bool_t fDrawBorder    kTRUE if border and title are drawn
           TMap* fMapOfButtons  map of button/id pairs in this group

## Class Description

     The TGButtonGroup widget organizes TGButton widgets in a group.

     A button group widget makes it easier to deal with groups of buttons.
     A button in a button group is associated with a unique identifier.
     The button group emits a Clicked() signal with this identifier when
     the button is clicked. Thus, a button group is an ideal solution
     when you have several similar buttons and want to connect all their
     Clicked() signals, for example, to one slot.

     An exclusive button group switches off all toggle buttons except
     the one that was clicked. A button group is by default non-exclusive.
     All radio buttons that are inserted, will be mutually exclusive even
     if the button group is non-exclusive.

     There are two ways of using a button group:

        The button group is a parent widget of a number of buttons,
        i.e. the button group is the parent argument in the button
        constructor. The buttons are assigned identifiers 1, 2, 3 etc.
    /   in the order they are created or you can specify button id in
        the button constructor. A TGButtonGroup can display a frame and
        a title because it inherits from TGGroupFrame.

     Example:

        // vertical frame without border and title
        TGVButtonGroup *bg = new TGVButtonGroup(main_frame);

        // create text button with id=1
        TGTextButton *button1 = new TGTextButton(bg,"some text");

        // create another text button with id=2
        TGTextButton *button2 = new TGTextButton(bg,"another text");

        // map all buttons
        bg->Show();

     NOTE: there is no need to call AddFrame() since the buttons are
     automatically added with a default layout hint to their parent,
     i.e. the buttongroup. To override the default layout hints use the
     SetLayoutHints() method.

      ButtonGroup Signals:

        Pressed(Int_t id)  -->  is emitted when a button in the group is
                                pressed down. The id argument is the
                                button's identifier.
        Released(Int_t id) -->  is emitted when a button in the group is
                                released. The id argument is the button's
                                identifier.
        Clicked(Int_t id)  -->  is emitted when a button in the group is
                                clicked. The id argument is the button's
                                identifier.

     The TGHButtonGroup widget organizes TGButton widgets in a group
     with one horizontal row. TGHButtonGroup is a convenience class that
     offers a thin layer on top of TGButtonGroup. It inherits from
     TGButtonGroup.

     The TGVButtonGroup widget organizes TGButton widgets in a group
     with one vertical column. TGVButtonGroup is a convenience class that
     offers a thin layer on top of TGButtonGroup. It inherits from
     TGButtonGroup.

TGButtonGroup(const TGWindow *parent, const TString &title, UInt_t options, GContext_t norm, FontStruct_t font, ULong_t back) : TGGroupFrame(parent, new TGString(title), options, norm, font, back)

     Constructor. Layout 1 row or 1 column.

TGButtonGroup(const TGWindow *parent, UInt_t r, UInt_t c, Int_t s, Int_t h, const TString &title, GContext_t norm , FontStruct_t font , ULong_t back) : TGGroupFrame(parent, new TGString(title), 0, norm, font, back)

     Constructor. Layout defined by TGMatrixLayout:
        r = number of rows
        c = number of columns
        s = interval between frames
        h = layout hints

void Init()

     Default init.

~TGButtonGroup()

     Destructor, we do not delete the buttons.

void SetBorderDrawn(Bool_t enable)

     Makes border to be visible/invisible.

void SetExclusive(Bool_t enable)

     Sets the button group to be exclusive if enable is kTRUE,
     or to be non-exclusive if enable is kFALSE.
     An exclusive button group switches off all other toggle buttons when
     one is switched on. This is ideal for groups of radio-buttons
     A non-exclusive group allow many buttons to be switched on at the same
     time. The default setting is kFALSE.

void SetRadioButtonExclusive(Bool_t enable)

     If enable is kTRUE, this button group will treat radio buttons as
     mutually exclusive, and other buttons according to IsExclusive().
     This function is called automatically whenever a TGRadioButton
     is inserted, so you should normally never have to call it.

void SetButton(Int_t id, Bool_t down)

     Sets the button with id to be on/down, and if this is an
     exclusive group, all other button in the group to be off/up.

Int_t Insert(TGButton *button, Int_t id)

     Inserts a button with the identifier id into the button group.
     Returns the button identifier.

     It is not necessary to manually insert buttons that have this button
     group as their parent widget. An exception is when you want custom
     identifiers instead of the default 1, 2, 3 etc.

     The button is assigned the identifier id or an automatically
     generated identifier.  It works as follows: If id > 0, this
     identifier is assigned.  If id == -1 (default), the identifier is
     equal to the number of buttons in the group+1.  If id is any other
     negative integer, for instance -2, a unique identifier (negative
     integer <= -2) is generated.

     Inserting several buttons with id = -1 assigns the identifiers 1,
     2, 3, etc.

void Remove(TGButton *button)

     Removes a button from the button group.

TGButton* Find(Int_t id) const

     Finds and returns a pointer to the button with the specified
     identifier id. Returns null if the button was not found.

Int_t GetId(TGButton *button) const

     Finds and returns the id of the button.
     Returns -1 if the button is not a member of this group.

void ButtonPressed()

     This slot is activated when one of the buttons in the group emits the
     Pressed() signal.

void ButtonReleased()

     This slot is activated when one of the buttons in the group emits the
     Released() signal.

void ButtonClicked()

     This slot is activated when one of the buttons in the group emits the
     Clicked() signal.

void ReleaseButtons()

     This slot is activated when one of the buttons in the
     exclusive group emits the Pressed() signal.

void Show()

     Show group of buttons.

void Hide()

     Hide group of buttons.

void SetTitle(TGString *title)

     Set or change title.

void SetTitle(const char *title)

     Set or change title.

void SetLayoutHints(TGLayoutHints *l, TGButton *button)

     Set layout hints for the specified button or if button=0 for all
     buttons.

void SavePrimitive(ofstream &out, Option_t *option)

     Save a button group widget as a C++ statement(s) on output stream out

### Inline Functions

                     void Pressed(Int_t id)
                     void Released(Int_t id)
                     void Clicked(Int_t id)
                   Bool_t IsExclusive() const
                   Bool_t IsRadioButtonExclusive() const
                   Bool_t IsBorderDrawn() const
                    Int_t GetCount() const
                TGButton* GetButton(Int_t id) const
                     void DrawBorder()
                  TClass* Class()
                  TClass* IsA() const
                     void ShowMembers(TMemberInspector& insp, char* parent)
                     void Streamer(TBuffer& b)
                     void StreamerNVirtual(TBuffer& b)
            TGButtonGroup TGButtonGroup(const TGButtonGroup&)

Author: Valeriy Onuchin & Fons Rademakers 16/10/2000
Last update: root/gui:$Name: $:$Id: TGButtonGroup.cxx,v 1.22 2005/02/07 22:47:43 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *