]>
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> | |
14b496ca | 11 | #include <TTimer.h> |
0b28fd57 | 12 | #include <TVirtualPad.h> |
5a5a1232 | 13 | |
14 | #include <map> | |
15 | ||
3adb4b94 | 16 | class TMacro; |
17 | class TFolder; | |
5a5a1232 | 18 | class TCanvas; |
a8600b56 | 19 | class TGTab; |
5a5a1232 | 20 | class TGStatusBar; |
21 | class TGListTree; | |
22 | class TGListTreeItem; | |
23 | ||
59095b11 | 24 | class TGLViewer; |
25 | ||
5a5a1232 | 26 | namespace Reve { |
27 | ||
28 | class VSDSelector; | |
29 | class RGBrowser; | |
30 | class RGEditor; | |
1a4ab447 | 31 | |
5a5a1232 | 32 | class RenderElement; |
5b457dfa | 33 | class PadPrimitive; |
1a4ab447 | 34 | |
35 | class EventBase; | |
36 | ||
5a5a1232 | 37 | |
38 | class RGTopFrame : public TGMainFrame | |
39 | { | |
265ecb21 | 40 | RGTopFrame(const RGTopFrame&); // Not implemented |
41 | RGTopFrame& operator=(const RGTopFrame&); // Not implemented | |
42 | ||
5a5a1232 | 43 | public: |
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 | 60 | private: |
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 | ||
84 | protected: | |
85 | LookType_e fLook; | |
86 | ||
87 | std::map<TString, TGeoManager*> fGeometries; | |
88 | ||
89 | public: | |
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 | ||
161 | extern Reve::RGTopFrame* gReve; | |
162 | ||
163 | #endif |