Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TBrowser.h
Go to the documentation of this file.
1 // @(#)root/base:$Id$
2 // Author: Fons Rademakers 25/10/95
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 
13 #ifndef ROOT_TBrowser
14 #define ROOT_TBrowser
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TBrowser //
19 // //
20 // Using a TBrowser on can browse all ROOT objects. It shows in a list //
21 // on the left side of the window all browsable ROOT classes. Selecting //
22 // one of the classes displays, in the iconbox on the right side, all //
23 // objects in the class. Selecting one of the objects in the iconbox, //
24 // will place all browsable objects in a new list and draws the //
25 // contents of the selected class in the iconbox. And so on.... //
26 // //
27 //////////////////////////////////////////////////////////////////////////
28 
29 #include "TNamed.h"
30 #include "TBrowserImp.h"
31 
32 
33 class TContextMenu;
34 class TBrowserTimer;
35 
36 
37 class TBrowser : public TNamed {
38 
39 private:
40  TObject *fLastSelectedObject; //!The last TObject selected by user
41 
42  TBrowser(const TBrowser&) = delete; // TBrowser can not be copied since we do not know the type of the TBrowserImp (and it can not be 'Cloned')
43  TBrowser& operator=(const TBrowser&) = delete; // TBrowser can not be copied since we do not know the type of the TBrowserImp (and it can not be 'Cloned')
44 
45 protected:
46  TBrowserImp *fImp; //!Window system specific browser implementation
47  TBrowserTimer *fTimer; //!Browser's timer
48  TContextMenu *fContextMenu; //!Context menu pointer
49  Bool_t fNeedRefresh; //True if the browser needs refresh
50 
51 public:
52  enum EStatusBits {
53  kNoHidden = BIT(9) // don't show '.' files and directories
54  };
55 
56  TBrowser(const char *name="Browser", const char *title="ROOT Object Browser", TBrowserImp *extimp=0, Option_t *opt="");
57  TBrowser(const char *name, const char *title, UInt_t width, UInt_t height, TBrowserImp *extimp=0, Option_t *opt="");
58  TBrowser(const char *name, const char *title, Int_t x, Int_t y, UInt_t width, UInt_t height, TBrowserImp *extimp=0, Option_t *opt="");
59 
60  TBrowser(const char *name, TObject *obj, const char *title="ROOT Object Browser", Option_t *opt="");
61  TBrowser(const char *name, TObject *obj, const char *title, UInt_t width, UInt_t height, Option_t *opt="");
62  TBrowser(const char *name, TObject *obj, const char *title, Int_t x, Int_t y, UInt_t width, UInt_t height, Option_t *opt="");
63 
64  TBrowser(const char *name, void *obj, TClass *cl, const char *objname="", const char *title="ROOT Foreign Browser", Option_t *opt="");
65  TBrowser(const char *name, void *obj, TClass *cl, const char *objname, const char *title, UInt_t width, UInt_t height, Option_t *opt="");
66  TBrowser(const char *name, void *obj, TClass *cl, const char *objname, const char *title, Int_t x, Int_t y, UInt_t width, UInt_t height, Option_t *opt="");
67 
68  // In a world with only standard C++ compliant compilers, we could also add:
69  // template <class T> TBrowser(const char *name, T *obj, const char *objname="", const char *title="ROOT Foreign Browser") :
70  // : TNamed(name, title), fLastSelectedObject(0), fTimer(0), fContextMenu(0),
71  // fNeedRefresh(kFALSE)
72  // {
73  // Create a new browser with a name, title, width and height for TObject *obj.
74  //
75  // fImp = gGuiFactory->CreateBrowserImp(this, title, width, height);
76  // Create(new TBrowserObject(obj,gROOT->GetClass(typeid(T)),objname));
77  // }
78 
79  virtual ~TBrowser();
80 
81  void Add(TObject *obj, const char *name = 0, Int_t check = -1);
82  void Add(void *obj, TClass *cl, const char *name = 0, Int_t check = -1);
83 
84  void AddCheckBox(TObject *obj, Bool_t check = kFALSE);
85  void CheckObjectItem(TObject *obj, Bool_t check = kFALSE);
86  void RemoveCheckBox(TObject *obj);
87 
88  virtual void Create(TObject *obj = 0); // Create this Browser
89  virtual void Destructor();
90  void BrowseObject(TObject *obj) { if (fImp) fImp->BrowseObj(obj); }
91  void ExecuteDefaultAction(TObject *obj);
92  TBrowserImp *GetBrowserImp() const { return fImp; }
93  void SetBrowserImp(TBrowserImp *i) { fImp = i; }
94  TContextMenu *GetContextMenu() const { return fContextMenu; }
95  Bool_t GetRefreshFlag() const { return fNeedRefresh; }
96  TObject *GetSelected() const { return fLastSelectedObject; }
97  void SetRefreshFlag(Bool_t flag) { fNeedRefresh = flag; }
98  void Iconify() { if (fImp) fImp->Iconify(); }
99  virtual void RecursiveRemove(TObject *obj);
100  void Refresh();
101  void SetSelected(TObject *clickedObject);
102  void Show() { if (fImp) fImp->Show(); }
103  void SetDrawOption(Option_t *option="") { if (fImp) fImp->SetDrawOption(option); }
104  Option_t *GetDrawOption() const { return (fImp) ? fImp->GetDrawOption() : 0; }
105 
106  Long_t ExecPlugin(const char *name = 0, const char *fname = 0,
107  const char *cmd = 0, Int_t pos = 1, Int_t subpos = -1) {
108  return (fImp) ? fImp->ExecPlugin(name, fname, cmd, pos, subpos) : -1;
109  }
110  void SetStatusText(const char *txt, Int_t col) {
111  if (fImp) fImp->SetStatusText(txt, col);
112  }
113  void StartEmbedding(Int_t pos, Int_t subpos) {
114  if (fImp) fImp->StartEmbedding(pos, subpos);
115  }
116  void StopEmbedding(const char *name = "") { if (fImp) fImp->StopEmbedding(name); }
117 
118  ClassDef(TBrowser,0) //ROOT Object Browser
119 };
120 
121 #endif