218ead2f7ab43a63b7ca6a265fe2811a4cd6820b
[u/mrichter/AliRoot.git] / EVE / Reve / RGTopFrame.h
1 // $Header$
2
3 #ifndef REVE_RGTopFrame_H
4 #define REVE_RGTopFrame_H
5
6 #include <TGFrame.h>
7 #include <TGeoManager.h>
8 #include <TGStatusBar.h>
9
10 #include <map>
11
12 class TMacro;
13 class TFolder;
14 class TCanvas;
15 class TGStatusBar;
16 class TGListTree;
17 class TGListTreeItem;
18
19 namespace Reve {
20
21 class VSDSelector;
22 class RGBrowser;
23 class RGEditor;
24
25 class RenderElement;
26 class RenderElementList;
27
28 class EventBase;
29
30
31 class RGTopFrame : public TGMainFrame
32 {
33 public:
34   enum LookType_e { LT_Classic, LT_Editor, LT_GLViewer };
35
36 private:
37   void                Init();
38   TCanvas             *fCC;
39   TCanvas             *fHistoCanvas;
40   VSDSelector         *fSelector;
41   RGBrowser           *fBrowser;
42   TGStatusBar         *fStatusBar;
43   const char          *fVSDFile;
44
45   TFolder             *fMacroFolder;
46
47   RGEditor            *fEditor;
48
49   EventBase           *fCurrentEvent;
50   RenderElementList   *fGlobalStore;
51
52   Int_t                fRedrawDisabled;
53   Bool_t               fTimerActive;
54   TTimer               fRedrawTimer;
55
56 protected:
57   LookType_e           fLook;
58
59   std::map<TString, TGeoManager*> fGeometries;
60
61 public:
62   RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look=LT_Classic);
63
64   TCanvas*     GetCC()         { return fCC; }
65   VSDSelector* GetSelector()   { return fSelector; }
66   RGBrowser*   GetBrowser()    { return fBrowser; }
67   TGStatusBar* GetStatusBar()  { return fStatusBar; }
68
69   TGListTree*        GetListTree() const;
70   EventBase*         GetCurrentEvent() const { return fCurrentEvent; }
71   RenderElementList* GetGlobalStore()  const { return fGlobalStore; }
72
73   TFolder* GetMacroFolder() const { return fMacroFolder; }
74   TMacro*  GetMacro(const Text_t* name) const;
75
76   RGEditor* GetEditor() const { return fEditor; }
77   void EditRenderElement(RenderElement* rnr_element);
78
79   void DisableRedraw() { ++fRedrawDisabled; }
80   void EnableRedraw()  { --fRedrawDisabled; if(fRedrawDisabled <= 0) Redraw3D(); }
81
82   void Redraw3D() { if(fRedrawDisabled <= 0 && !fTimerActive) RegisterRedraw3D(); }
83   void RegisterRedraw3D();
84   void DoRedraw3D();
85
86   static int SpawnGuiAndRun(int argc, char **argv);
87
88   // These are more like ReveManager stuff.
89   TGListTreeItem* AddEvent(EventBase* event); // Could have Reve::Event ...
90   TGListTreeItem* AddRenderElement(RenderElement* rnr_element);
91   TGListTreeItem* AddRenderElement(RenderElement* parent, RenderElement* rnr_element);
92   TGListTreeItem* AddGlobalRenderElement(RenderElement* rnr_element);
93   TGListTreeItem* AddGlobalRenderElement(RenderElement* parent, RenderElement* rnr_element);
94
95   void RemoveRenderElement(RenderElement* parent, RenderElement* rnr_element);
96
97   void DrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
98   void UndrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
99
100   void RenderElementChecked(TObject* obj, Bool_t state);
101
102   void NotifyBrowser(TGListTreeItem* parent_lti=0);
103   void NotifyBrowser(RenderElement* parent);
104
105   // Hmmph ... geometry management?
106   TGeoManager* GetGeometry(const TString& filename);
107
108   ClassDef(RGTopFrame, 0);
109 };
110
111 } // namespace Reve
112
113 extern Reve::RGTopFrame* gReve;
114
115 #endif