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