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