3 #ifndef REVE_RGTopFrame_H
4 #define REVE_RGTopFrame_H
8 #include <TGStatusBar.h>
9 #include <TGeoManager.h>
11 #include <TVirtualPad.h>
30 class RenderElementList;
35 class RGTopFrame : public TGMainFrame
37 RGTopFrame(const RGTopFrame&); // Not implemented
38 RGTopFrame& operator=(const RGTopFrame&); // Not implemented
41 enum LookType_e { LT_Classic, LT_Editor, LT_GLViewer };
48 RedrawDisabler(RGTopFrame* f) : fFrame(f)
49 { if (fFrame) fFrame->DisableRedraw(); }
51 { if (fFrame) fFrame->EnableRedraw(); }
55 TGCompositeFrame *fMasterFrame;
59 VSDSelector *fSelector;
61 TGStatusBar *fStatusBar;
64 TFolder *fMacroFolder;
68 EventBase *fCurrentEvent;
69 RenderElementList *fGlobalStore;
71 Int_t fRedrawDisabled;
79 std::map<TString, TGeoManager*> fGeometries;
82 RGTopFrame(const TGWindow *p, UInt_t w, UInt_t h, LookType_e look=LT_Classic);
84 TGCompositeFrame* GetMasterFrame() { return fMasterFrame; }
85 TGTab* GetMasterTab() { return fMasterTab; }
87 TCanvas* GetGLCanvas() { return fGLCanvas; }
88 VSDSelector* GetSelector() { return fSelector; }
89 RGBrowser* GetBrowser() { return fBrowser; }
90 TGStatusBar* GetStatusBar() { return fStatusBar; }
92 TCanvas* AddCanvasTab(const char* name);
94 TGListTree* GetListTree() const;
95 EventBase* GetCurrentEvent() const { return fCurrentEvent; }
96 RenderElementList* GetGlobalStore() const { return fGlobalStore; }
98 TFolder* GetMacroFolder() const { return fMacroFolder; }
99 TMacro* GetMacro(const Text_t* name) const;
101 RGEditor* GetEditor() const { return fEditor; }
102 void EditRenderElement(RenderElement* rnr_element);
104 void DisableRedraw() { ++fRedrawDisabled; }
105 void EnableRedraw() { --fRedrawDisabled; if(fRedrawDisabled <= 0) Redraw3D(); }
107 void Redraw3D(Bool_t resetCameras=kFALSE) {
108 if(fRedrawDisabled <= 0 && !fTimerActive) RegisterRedraw3D();
109 if(resetCameras) fResetCameras = kTRUE;
111 void RegisterRedraw3D();
114 static int SpawnGuiAndRun(int argc, char **argv);
115 static void SpawnGui(LookType_e revemode = LT_Editor);
117 // These are more like ReveManager stuff.
118 TGListTreeItem* AddEvent(EventBase* event); // Could have Reve::Event ...
119 TGListTreeItem* AddRenderElement(RenderElement* rnr_element);
120 TGListTreeItem* AddRenderElement(RenderElement* parent, RenderElement* rnr_element);
121 TGListTreeItem* AddGlobalRenderElement(RenderElement* rnr_element);
122 TGListTreeItem* AddGlobalRenderElement(RenderElement* parent, RenderElement* rnr_element);
124 void RemoveRenderElement(RenderElement* parent, RenderElement* rnr_element);
125 void PreDeleteRenderElement(RenderElement* rnr_element);
127 void DrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
128 void UndrawRenderElement(RenderElement* rnr_element, TVirtualPad* pad=0);
130 void RenderElementChecked(TObject* obj, Bool_t state);
132 void NotifyBrowser(TGListTreeItem* parent_lti=0);
133 void NotifyBrowser(RenderElement* parent);
135 // Hmmph ... geometry management?
136 TGeoManager* GetGeometry(const TString& filename);
138 void ThrowException(const char* text="foo");
140 ClassDef(RGTopFrame, 0);
145 extern Reve::RGTopFrame* gReve;