]>
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; |
15 | class TGStatusBar; | |
16 | class TGListTree; | |
17 | class TGListTreeItem; | |
18 | ||
19 | namespace Reve { | |
20 | ||
21 | class VSDSelector; | |
22 | class RGBrowser; | |
23 | class RGEditor; | |
1a4ab447 | 24 | |
5a5a1232 | 25 | class RenderElement; |
1a4ab447 | 26 | class RenderElementList; |
27 | ||
28 | class EventBase; | |
29 | ||
5a5a1232 | 30 | |
31 | class RGTopFrame : public TGMainFrame | |
32 | { | |
33 | public: | |
34 | enum LookType_e { LT_Classic, LT_Editor, LT_GLViewer }; | |
35 | ||
36 | private: | |
37 | void Init(); | |
38 | TCanvas *fCC; | |
39 | TCanvas *fHistoCanvas; | |
40 | VSDSelector *fSelector; | |
41 | RGBrowser *fBrowser; | |
42 | TGStatusBar *fStatusBar; | |
43 | const char *fVSDFile; | |
44 | ||
3adb4b94 | 45 | TFolder *fMacroFolder; |
46 | ||
5a5a1232 | 47 | RGEditor *fEditor; |
48 | ||
1a4ab447 | 49 | EventBase *fCurrentEvent; |
50 | RenderElementList *fGlobalStore; | |
5a5a1232 | 51 | |
1a4ab447 | 52 | Int_t fRedrawDisabled; |
426530cc | 53 | Bool_t fResetCameras; |
5a5a1232 | 54 | Bool_t fTimerActive; |
55 | TTimer fRedrawTimer; | |
56 | ||
57 | protected: | |
58 | LookType_e fLook; | |
59 | ||
60 | std::map<TString, TGeoManager*> fGeometries; | |
61 | ||
62 | public: | |
63 | RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look=LT_Classic); | |
64 | ||
65 | TCanvas* GetCC() { return fCC; } | |
66 | VSDSelector* GetSelector() { return fSelector; } | |
67 | RGBrowser* GetBrowser() { return fBrowser; } | |
68 | TGStatusBar* GetStatusBar() { return fStatusBar; } | |
69 | ||
1a4ab447 | 70 | TGListTree* GetListTree() const; |
71 | EventBase* GetCurrentEvent() const { return fCurrentEvent; } | |
72 | RenderElementList* GetGlobalStore() const { return fGlobalStore; } | |
5a5a1232 | 73 | |
3adb4b94 | 74 | TFolder* GetMacroFolder() const { return fMacroFolder; } |
75 | TMacro* GetMacro(const Text_t* name) const; | |
76 | ||
5a5a1232 | 77 | RGEditor* GetEditor() const { return fEditor; } |
78 | void EditRenderElement(RenderElement* rnr_element); | |
79 | ||
1a4ab447 | 80 | void DisableRedraw() { ++fRedrawDisabled; } |
81 | void EnableRedraw() { --fRedrawDisabled; if(fRedrawDisabled <= 0) Redraw3D(); } | |
5a5a1232 | 82 | |
426530cc | 83 | void Redraw3D(Bool_t resetCameras=kFALSE) { |
84 | if(fRedrawDisabled <= 0 && !fTimerActive) RegisterRedraw3D(); | |
85 | if(resetCameras) fResetCameras = kTRUE; | |
86 | } | |
5a5a1232 | 87 | void RegisterRedraw3D(); |
88 | void DoRedraw3D(); | |
89 | ||
90 | static int SpawnGuiAndRun(int argc, char **argv); | |
91 | ||
92 | // These are more like ReveManager stuff. | |
1a4ab447 | 93 | TGListTreeItem* AddEvent(EventBase* event); // Could have Reve::Event ... |
5a5a1232 | 94 | TGListTreeItem* AddRenderElement(RenderElement* rnr_element); |
1a4ab447 | 95 | TGListTreeItem* AddRenderElement(RenderElement* parent, RenderElement* rnr_element); |
5a5a1232 | 96 | TGListTreeItem* AddGlobalRenderElement(RenderElement* rnr_element); |
1a4ab447 | 97 | TGListTreeItem* AddGlobalRenderElement(RenderElement* parent, RenderElement* rnr_element); |
98 | ||
99 | void RemoveRenderElement(RenderElement* parent, RenderElement* rnr_element); | |
5a5a1232 | 100 | |
101 | void DrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0); | |
5a34ca2d | 102 | void UndrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0); |
5a5a1232 | 103 | |
104 | void RenderElementChecked(TObject* obj, Bool_t state); | |
105 | ||
1a4ab447 | 106 | void NotifyBrowser(TGListTreeItem* parent_lti=0); |
107 | void NotifyBrowser(RenderElement* parent); | |
5a5a1232 | 108 | |
109 | // Hmmph ... geometry management? | |
110 | TGeoManager* GetGeometry(const TString& filename); | |
111 | ||
112 | ClassDef(RGTopFrame, 0); | |
113 | }; | |
114 | ||
115 | } // namespace Reve | |
116 | ||
117 | extern Reve::RGTopFrame* gReve; | |
118 | ||
119 | #endif |