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