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