Adding includes now needed by ROOT
[u/mrichter/AliRoot.git] / EVE / Reve / RGTopFrame.h
1 // $Header$
2
3 #ifndef REVE_RGTopFrame_H
4 #define REVE_RGTopFrame_H
5
6 #include <TClass.h>
7 #include <TGFrame.h>
8 #include <TGStatusBar.h>
9 #include <TGeoManager.h>
10 #include <TROOT.h>
11 #include <TVirtualPad.h>
12
13 #include <map>
14
15 class TMacro;
16 class TFolder;
17 class TCanvas;
18 class TGTab;
19 class TGStatusBar;
20 class TGListTree;
21 class TGListTreeItem;
22
23 namespace Reve {
24
25 class VSDSelector;
26 class RGBrowser;
27 class RGEditor;
28
29 class RenderElement;
30 class RenderElementList;
31
32 class EventBase;
33
34
35 class RGTopFrame : public TGMainFrame
36 {
37   RGTopFrame(const RGTopFrame&);            // Not implemented
38   RGTopFrame& operator=(const RGTopFrame&); // Not implemented
39
40 public:
41   enum LookType_e { LT_Classic, LT_Editor, LT_GLViewer };
42
43   class RedrawDisabler
44   {
45   private:
46     RGTopFrame* fFrame;
47   public:
48     RedrawDisabler(RGTopFrame* f) : fFrame(f)
49     { if (fFrame) fFrame->DisableRedraw(); }
50     ~RedrawDisabler()
51     { if (fFrame) fFrame->EnableRedraw(); }
52   };
53
54 private:
55   TGCompositeFrame    *fMasterFrame;
56   TGTab               *fMasterTab;
57
58   TCanvas             *fGLCanvas;
59   VSDSelector         *fSelector;
60   RGBrowser           *fBrowser;
61   TGStatusBar         *fStatusBar;
62   const char          *fVSDFile;
63
64   TFolder             *fMacroFolder;
65
66   RGEditor            *fEditor;
67
68   EventBase           *fCurrentEvent;
69   RenderElementList   *fGlobalStore;
70
71   Int_t                fRedrawDisabled;
72   Bool_t               fResetCameras;
73   Bool_t               fTimerActive;
74   TTimer               fRedrawTimer;
75
76 protected:
77   LookType_e           fLook;
78
79   std::map<TString, TGeoManager*> fGeometries;
80
81 public:
82   RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look=LT_Classic);
83
84   TGCompositeFrame* GetMasterFrame() { return fMasterFrame; }
85   TGTab*            GetMasterTab()   { return fMasterTab; }
86
87   TCanvas*     GetGLCanvas()   { return fGLCanvas; }
88   VSDSelector* GetSelector()   { return fSelector; }
89   RGBrowser*   GetBrowser()    { return fBrowser; }
90   TGStatusBar* GetStatusBar()  { return fStatusBar; }
91
92   TCanvas*     AddCanvasTab(const char* name);
93
94   TGListTree*        GetListTree() const;
95   EventBase*         GetCurrentEvent() const { return fCurrentEvent; }
96   RenderElementList* GetGlobalStore()  const { return fGlobalStore; }
97
98   TFolder* GetMacroFolder() const { return fMacroFolder; }
99   TMacro*  GetMacro(const Text_t* name) const;
100
101   RGEditor* GetEditor() const { return fEditor; }
102   void EditRenderElement(RenderElement* rnr_element);
103
104   void DisableRedraw() { ++fRedrawDisabled; }
105   void EnableRedraw()  { --fRedrawDisabled; if(fRedrawDisabled <= 0) Redraw3D(); }
106
107   void Redraw3D(Bool_t resetCameras=kFALSE) {
108     if(fRedrawDisabled <= 0 && !fTimerActive) RegisterRedraw3D();
109     if(resetCameras) fResetCameras = kTRUE;
110   }
111   void RegisterRedraw3D();
112   void DoRedraw3D();
113
114   static int  SpawnGuiAndRun(int argc, char **argv);
115   static void SpawnGui(LookType_e revemode = LT_Editor);
116
117   // These are more like ReveManager stuff.
118   TGListTreeItem* AddEvent(EventBase* event); // Could have Reve::Event ...
119   TGListTreeItem* AddRenderElement(RenderElement* rnr_element);
120   TGListTreeItem* AddRenderElement(RenderElement* parent, RenderElement* rnr_element);
121   TGListTreeItem* AddGlobalRenderElement(RenderElement* rnr_element);
122   TGListTreeItem* AddGlobalRenderElement(RenderElement* parent, RenderElement* rnr_element);
123
124   void RemoveRenderElement(RenderElement* parent, RenderElement* rnr_element);
125   void PreDeleteRenderElement(RenderElement* rnr_element);
126
127   void DrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
128   void UndrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
129
130   void RenderElementChecked(TObject* obj, Bool_t state);
131
132   void NotifyBrowser(TGListTreeItem* parent_lti=0);
133   void NotifyBrowser(RenderElement* parent);
134
135   // Hmmph ... geometry management?
136   TGeoManager* GetGeometry(const TString& filename);
137
138   void ThrowException(const char* text="foo");
139
140   ClassDef(RGTopFrame, 0);
141 };
142
143 } // namespace Reve
144
145 extern Reve::RGTopFrame* gReve;
146
147 #endif