]>
Commit | Line | Data |
---|---|---|
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 | 15 | class TMacro; |
16 | class TFolder; | |
5a5a1232 | 17 | class TCanvas; |
a8600b56 | 18 | class TGTab; |
5a5a1232 | 19 | class TGStatusBar; |
20 | class TGListTree; | |
21 | class TGListTreeItem; | |
22 | ||
59095b11 | 23 | class TGLViewer; |
24 | ||
5a5a1232 | 25 | namespace Reve { |
26 | ||
27 | class VSDSelector; | |
28 | class RGBrowser; | |
29 | class RGEditor; | |
1a4ab447 | 30 | |
5a5a1232 | 31 | class RenderElement; |
5b457dfa | 32 | class PadPrimitive; |
1a4ab447 | 33 | |
34 | class EventBase; | |
35 | ||
5a5a1232 | 36 | |
37 | class RGTopFrame : public TGMainFrame | |
38 | { | |
265ecb21 | 39 | RGTopFrame(const RGTopFrame&); // Not implemented |
40 | RGTopFrame& operator=(const RGTopFrame&); // Not implemented | |
41 | ||
5a5a1232 | 42 | public: |
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 | 56 | private: |
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 | ||
80 | protected: | |
81 | LookType_e fLook; | |
82 | ||
83 | std::map<TString, TGeoManager*> fGeometries; | |
84 | ||
85 | public: | |
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 | ||
157 | extern Reve::RGTopFrame* gReve; | |
158 | ||
159 | #endif |