]>
Commit | Line | Data |
---|---|---|
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 | ||
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 | ||
e9ef1a49 | 169 | ClassDef(ReveManager, 0); // Reve application manager. |
32e219c2 | 170 | }; |
171 | ||
172 | } // namespace Reve | |
173 | ||
174 | extern Reve::ReveManager* gReve; | |
175 | ||
176 | #endif |