]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/Reve/ReveManager.h
First big commit of the mchview program and its accompanying library,
[u/mrichter/AliRoot.git] / EVE / Reve / ReveManager.h
CommitLineData
32e219c2 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
15class TMacro;
16class TFolder;
17class TCanvas;
18
19class TGTab;
20class TGStatusBar;
21class TGListTree;
22class TGListTreeItem;
23class TGStatusBar;
24class TGWindow;
25
26class TGLViewer;
27
28namespace Reve {
29
30class RGLTEFrame;
31class RGBrowser;
32class RGEditor;
33
34class RenderElement;
35class PadPrimitive;
36
37class Viewer; class ViewerList;
38class Scene; class SceneList;
39
40class EventBase;
41
42
43class ReveManager
44{
45 ReveManager(const ReveManager&); // Not implemented
46 ReveManager& operator=(const ReveManager&); // Not implemented
47
48public:
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
63private:
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
88protected:
89 std::map<TString, TGeoManager*> fGeometries;
90
91public:
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
e9ef1a49 169 ClassDef(ReveManager, 0); // Reve application manager.
32e219c2 170};
171
172} // namespace Reve
173
174extern Reve::ReveManager* gReve;
175
176#endif