This commit was generated by cvs2svn to compensate for changes in r13732,
[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 TCanvas;
13 class TGStatusBar;
14 class TGListTree;
15 class TGListTreeItem;
16
17 namespace Reve {
18
19 class VSDSelector;
20 class RGBrowser;
21 class RGEditor;
22 class RenderElement;
23
24 class RGTopFrame : public TGMainFrame
25 {
26 public:
27   enum LookType_e { LT_Classic, LT_Editor, LT_GLViewer };
28
29 private:
30   void                Init();
31   TCanvas             *fCC;
32   TCanvas             *fHistoCanvas;
33   VSDSelector         *fSelector;
34   RGBrowser           *fBrowser;
35   TGStatusBar         *fStatusBar;
36   const char          *fVSDFile;
37
38   RGEditor            *fEditor;
39
40   TObject             *fCurrentEvent;
41   TGListTreeItem      *fCurrentEventLTI;
42
43   TGListTreeItem      *fGeometryLTI;
44
45   Bool_t               fRedrawDisabled;
46   Bool_t               fTimerActive;
47   TTimer               fRedrawTimer;
48
49 protected:
50   LookType_e           fLook;
51
52   std::map<TString, TGeoManager*> fGeometries;
53
54 public:
55   RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look=LT_Classic);
56
57   TCanvas*     GetCC()         { return fCC; }
58   VSDSelector* GetSelector()   { return fSelector; }
59   RGBrowser*   GetBrowser()    { return fBrowser; }
60   TGStatusBar* GetStatusBar()  { return fStatusBar; }
61
62   TGListTree*     GetListTree();
63   TGListTreeItem* GetEventTreeItem();
64   TGListTreeItem* GetGlobalTreeItem();
65
66   RGEditor* GetEditor() const { return fEditor; }
67   void EditRenderElement(RenderElement* rnr_element);
68
69   void DisableRedraw() { fRedrawDisabled = true; }
70   void EnableRedraw()  { fRedrawDisabled = false; Redraw3D(); }
71
72   void Redraw3D() { if(!fRedrawDisabled && !fTimerActive) RegisterRedraw3D(); }
73   void RegisterRedraw3D();
74   void DoRedraw3D();
75
76   static int SpawnGuiAndRun(int argc, char **argv);
77
78   // These are more like ReveManager stuff.
79   TGListTreeItem* AddEvent(TObject* event); // Could have Reve::Event ...
80   TGListTreeItem* AddRenderElement(RenderElement* rnr_element);
81   TGListTreeItem* AddRenderElement(TGListTreeItem* parent, RenderElement* rnr_element);
82   TGListTreeItem* AddGlobalRenderElement(RenderElement* rnr_element);
83   TGListTreeItem* AddGlobalRenderElement(TGListTreeItem* parent, RenderElement* rnr_element);
84
85   void DrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
86
87   void RenderElementChecked(TObject* obj, Bool_t state);
88
89   void NotifyBrowser(TGListTreeItem* parent=0);
90
91   // Hmmph ... geometry management?
92   TGeoManager* GetGeometry(const TString& filename);
93
94   ClassDef(RGTopFrame, 0);
95 };
96
97 } // namespace Reve
98
99 extern Reve::RGTopFrame* gReve;
100
101 #endif