// @(#)root/gui:$Id$
// Author: Fons Rademakers   25/02/98

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TGToolBar
#define ROOT_TGToolBar


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGToolBar                                                            //
//                                                                      //
// A toolbar is a composite frame that contains TGPictureButtons.       //
// Often used in combination with a TGHorizontal3DLine.                 //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TGFrame
#include "TGFrame.h"
#endif

class TGButton;
class TGPictureButton;
class TList;
class TMap;

struct ToolBarData_t {
   const char *fPixmap;
   const char *fTipText;
   Bool_t      fStayDown;
   Int_t       fId;
   TGButton   *fButton;
};



class TGToolBar : public TGCompositeFrame {

protected:
   TList   *fPictures;      // list of pictures that should be freed
   TList   *fTrash;         // list of buttons and layout hints to be deleted
   TMap    *fMapOfButtons;  // map of button/id pairs in this group

private:
   TGToolBar(const TGToolBar&);              // not implemented
   TGToolBar& operator=(const TGToolBar&);   // not implemented

public:
   TGToolBar(const TGWindow *p = 0, UInt_t w = 1, UInt_t h = 1,
             UInt_t options = kHorizontalFrame,
             Pixel_t back = GetDefaultFrameBackground());
   virtual ~TGToolBar();

   virtual TGButton *AddButton(const TGWindow *w, ToolBarData_t *button, Int_t spacing = 0);
   virtual TGButton *AddButton(const TGWindow *w, TGPictureButton *button, Int_t spacing = 0);

   virtual void ChangeIcon(ToolBarData_t *button, const char *new_icon);
   virtual void Cleanup();
   virtual TGButton *GetButton(Int_t id) const;
   virtual Long_t    GetId(TGButton *button) const;
   virtual void      SetId(TGButton *button, Long_t id);

   virtual void ButtonPressed();
   virtual void ButtonReleased();
   virtual void ButtonClicked();

   virtual void Pressed(Int_t id)  { Emit("Pressed(Int_t)",id); }   //*SIGNAL*
   virtual void Released(Int_t id) { Emit("Released(Int_t)",id);}   //*SIGNAL*
   virtual void Clicked(Int_t id)  { Emit("Clicked(Int_t)",id); }   //*SIGNAL*

   virtual void   SavePrimitive(std::ostream &out, Option_t *option = "");

   ClassDef(TGToolBar,0)  //A bar containing picture buttons
};

#endif
 TGToolBar.h:1
 TGToolBar.h:2
 TGToolBar.h:3
 TGToolBar.h:4
 TGToolBar.h:5
 TGToolBar.h:6
 TGToolBar.h:7
 TGToolBar.h:8
 TGToolBar.h:9
 TGToolBar.h:10
 TGToolBar.h:11
 TGToolBar.h:12
 TGToolBar.h:13
 TGToolBar.h:14
 TGToolBar.h:15
 TGToolBar.h:16
 TGToolBar.h:17
 TGToolBar.h:18
 TGToolBar.h:19
 TGToolBar.h:20
 TGToolBar.h:21
 TGToolBar.h:22
 TGToolBar.h:23
 TGToolBar.h:24
 TGToolBar.h:25
 TGToolBar.h:26
 TGToolBar.h:27
 TGToolBar.h:28
 TGToolBar.h:29
 TGToolBar.h:30
 TGToolBar.h:31
 TGToolBar.h:32
 TGToolBar.h:33
 TGToolBar.h:34
 TGToolBar.h:35
 TGToolBar.h:36
 TGToolBar.h:37
 TGToolBar.h:38
 TGToolBar.h:39
 TGToolBar.h:40
 TGToolBar.h:41
 TGToolBar.h:42
 TGToolBar.h:43
 TGToolBar.h:44
 TGToolBar.h:45
 TGToolBar.h:46
 TGToolBar.h:47
 TGToolBar.h:48
 TGToolBar.h:49
 TGToolBar.h:50
 TGToolBar.h:51
 TGToolBar.h:52
 TGToolBar.h:53
 TGToolBar.h:54
 TGToolBar.h:55
 TGToolBar.h:56
 TGToolBar.h:57
 TGToolBar.h:58
 TGToolBar.h:59
 TGToolBar.h:60
 TGToolBar.h:61
 TGToolBar.h:62
 TGToolBar.h:63
 TGToolBar.h:64
 TGToolBar.h:65
 TGToolBar.h:66
 TGToolBar.h:67
 TGToolBar.h:68
 TGToolBar.h:69
 TGToolBar.h:70
 TGToolBar.h:71
 TGToolBar.h:72
 TGToolBar.h:73
 TGToolBar.h:74
 TGToolBar.h:75
 TGToolBar.h:76
 TGToolBar.h:77
 TGToolBar.h:78
 TGToolBar.h:79
 TGToolBar.h:80
 TGToolBar.h:81
 TGToolBar.h:82
 TGToolBar.h:83