]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/Reve/ReveManager.h
Dummy methods DefineParticle required by the interface added.
[u/mrichter/AliRoot.git] / EVE / Reve / ReveManager.h
1 // $Header$
2
3 #ifndef REVE_ReveManager_H
4 #define REVE_ReveManager_H
5
6 #include <TClass.h>
7 #include <TGeoManager.h>
8 #include <TROOT.h>
9 #include <TTimer.h>
10 #include <TVirtualPad.h>
11
12 #include <list>
13 #include <map>
14
15 class TMacro;
16 class TFolder;
17 class TCanvas;
18
19 class TGTab;
20 class TGStatusBar;
21 class TGListTree;
22 class TGListTreeItem;
23 class TGStatusBar;
24 class TGWindow;
25
26 class TGLViewer;
27
28 namespace Reve {
29
30 class RGLTEFrame;
31 class RGBrowser;
32 class RGEditor;
33
34 class RenderElement;
35 class PadPrimitive;
36
37 class Viewer; class ViewerList;
38 class Scene;  class SceneList;
39
40 class EventBase;
41
42
43 class ReveManager
44 {
45   ReveManager(const ReveManager&);            // Not implemented
46   ReveManager& operator=(const ReveManager&); // Not implemented
47
48 public:
49   class RedrawDisabler
50   {
51   private:
52     RedrawDisabler(const RedrawDisabler&);            // Not implemented
53     RedrawDisabler& operator=(const RedrawDisabler&); // Not implemented
54
55     ReveManager* fFrame;
56   public:
57     RedrawDisabler(ReveManager* f) : fFrame(f)
58     { if (fFrame) fFrame->DisableRedraw(); }
59     ~RedrawDisabler()
60     { if (fFrame) fFrame->EnableRedraw(); }
61   };
62
63 private:
64
65   RGBrowser           *fBrowser;
66   RGLTEFrame          *fLTEFrame;
67   RGEditor            *fEditor;
68   TGStatusBar         *fStatusBar;
69
70   TFolder             *fMacroFolder;
71
72   ViewerList          *fViewers;
73   SceneList           *fScenes;
74
75   Viewer              *fViewer;   // First / default gl-viewer.
76   Scene               *fGlobalScene;
77   Scene               *fEventScene;
78   EventBase           *fCurrentEvent;
79
80   Int_t                fRedrawDisabled;
81   Bool_t               fFullRedraw;
82   Bool_t               fResetCameras;
83   Bool_t               fDropLogicals;
84   Bool_t               fKeepEmptyCont;
85   Bool_t               fTimerActive;
86   TTimer               fRedrawTimer;
87
88 protected:
89   std::map<TString, TGeoManager*> fGeometries;
90
91 public:
92   ReveManager(UInt_t w, UInt_t h);
93   virtual ~ReveManager();
94
95   RGBrowser*   GetBrowser()   const { return fBrowser;   }
96   RGLTEFrame*  GetLTEFrame()  const { return fLTEFrame;  }
97   RGEditor*    GetEditor()    const { return fEditor;    }
98   TGStatusBar* GetStatusBar() const { return fStatusBar; }
99
100   SceneList*   GetScenes()   const { return fScenes;  }
101   ViewerList*  GetViewers()  const { return fViewers; }
102
103   Viewer*      GetDefViewer()    const { return fViewer; }
104   Scene*       GetGlobalScene()  const { return fGlobalScene; }
105   Scene*       GetEventScene()   const { return fEventScene; }
106   EventBase*   GetCurrentEvent() const { return fCurrentEvent; }
107
108   TCanvas*     AddCanvasTab(const char* name);
109   TGWindow*    GetMainWindow() const;
110   TGLViewer*   GetGLViewer() const;
111   Viewer*      SpawnNewViewer(const Text_t* name, const Text_t* title="", Bool_t embed=kTRUE);
112   Scene*       SpawnNewScene(const Text_t* name, const Text_t* title="");
113
114   TFolder*  GetMacroFolder() const { return fMacroFolder; }
115   TMacro*   GetMacro(const Text_t* name) const;
116
117   void EditRenderElement(RenderElement* rnr_element);
118
119   void DisableRedraw() { ++fRedrawDisabled; }
120   void EnableRedraw()  { --fRedrawDisabled; if(fRedrawDisabled <= 0) Redraw3D(); }
121
122   void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
123   {
124     if(fRedrawDisabled <= 0 && !fTimerActive) RegisterRedraw3D();
125     if(resetCameras) fResetCameras = kTRUE;
126     if(dropLogicals) fDropLogicals = kTRUE;
127   }
128   void RegisterRedraw3D();
129   void DoRedraw3D();
130   void FullRedraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE);
131
132   Bool_t GetKeepEmptyCont() const   { return fKeepEmptyCont; }
133   void   SetKeepEmptyCont(Bool_t k) { fKeepEmptyCont = k; }
134
135
136   void RenderElementChanged(RenderElement* rnr_element);
137   void ScenesChanged(std::list<Reve::RenderElement*>& scenes);
138
139   static int  SpawnGuiAndRun(int argc, char **argv);
140   static void SpawnGui();
141
142   // These are more like ReveManager stuff.
143   TGListTree*     GetListTree() const;
144   TGListTreeItem* AddToListTree(RenderElement* re, Bool_t open, TGListTree* lt=0);
145   void            RemoveFromListTree(RenderElement* re, TGListTree* lt, TGListTreeItem* lti);
146
147   TGListTreeItem* AddEvent(EventBase* event);
148   TGListTreeItem* AddRenderElement(RenderElement* rnr_element,
149                                    RenderElement* parent=0);
150   TGListTreeItem* AddGlobalRenderElement(RenderElement* rnr_element,
151                                          RenderElement* parent=0);
152
153   void RemoveRenderElement(RenderElement* rnr_element, RenderElement* parent);
154   void PreDeleteRenderElement(RenderElement* rnr_element);
155
156   void   RenderElementSelect(RenderElement* rnr_element);
157   Bool_t RenderElementPaste(RenderElement* rnr_element);
158   void   RenderElementChecked(RenderElement* rnrEl, Bool_t state);
159
160   void NotifyBrowser(TGListTreeItem* parent_lti=0);
161   void NotifyBrowser(RenderElement* parent);
162
163   // Hmmph ... geometry management?
164   TGeoManager* GetGeometry(const TString& filename);
165
166   void SetStatusLine(const char* text);
167   void ThrowException(const char* text="foo");
168
169   ClassDef(ReveManager, 0); // Reve application manager.
170 };
171
172 } // namespace Reve
173
174 extern Reve::ReveManager* gReve;
175
176 #endif