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