00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TEveManager
00013 #define ROOT_TEveManager
00014
00015 #include "TEveElement.h"
00016
00017 #include "TSysEvtHandler.h"
00018 #include "TTimer.h"
00019 #include "TVirtualPad.h"
00020
00021 class TMap;
00022 class TExMap;
00023 class TMacro;
00024 class TFolder;
00025 class TCanvas;
00026 class TGeoManager;
00027
00028 class TGTab;
00029 class TGStatusBar;
00030 class TGListTree;
00031 class TGListTreeItem;
00032 class TGStatusBar;
00033 class TGWindow;
00034
00035 class TGLViewer;
00036
00037 class TEveSelection;
00038 class TEveGListTreeEditorFrame;
00039 class TEveBrowser;
00040 class TEveGedEditor;
00041
00042 class TEveViewer; class TEveViewerList;
00043 class TEveScene; class TEveSceneList;
00044
00045 class TEveEventManager;
00046 class TEveWindowManager;
00047
00048
00049 class TEveManager
00050 {
00051 TEveManager(const TEveManager&);
00052 TEveManager& operator=(const TEveManager&);
00053
00054 public:
00055 class TRedrawDisabler
00056 {
00057 private:
00058 TRedrawDisabler(const TRedrawDisabler&);
00059 TRedrawDisabler& operator=(const TRedrawDisabler&);
00060
00061 TEveManager* fMgr;
00062 public:
00063 TRedrawDisabler(TEveManager* m) : fMgr(m)
00064 { if (fMgr) fMgr->DisableRedraw(); }
00065 virtual ~TRedrawDisabler()
00066 { if (fMgr) fMgr->EnableRedraw(); }
00067
00068 ClassDef(TRedrawDisabler, 0);
00069 };
00070
00071 class TExceptionHandler : public TStdExceptionHandler
00072 {
00073 public:
00074 TExceptionHandler() : TStdExceptionHandler() { Add(); }
00075 virtual ~TExceptionHandler() { Remove(); }
00076
00077 virtual EStatus Handle(std::exception& exc);
00078
00079 ClassDef(TExceptionHandler, 0);
00080 };
00081
00082 private:
00083 TExceptionHandler *fExcHandler;
00084
00085 TMap *fVizDB;
00086 Bool_t fVizDBReplace;
00087 Bool_t fVizDBUpdate;
00088
00089 TMap *fGeometries;
00090 TMap *fGeometryAliases;
00091
00092 TEveBrowser *fBrowser;
00093 TEveGListTreeEditorFrame *fLTEFrame;
00094
00095 TFolder *fMacroFolder;
00096
00097 TEveWindowManager *fWindowManager;
00098 TEveViewerList *fViewers;
00099 TEveSceneList *fScenes;
00100
00101 TEveScene *fGlobalScene;
00102 TEveScene *fEventScene;
00103 TEveEventManager *fCurrentEvent;
00104
00105 Int_t fRedrawDisabled;
00106 Bool_t fFullRedraw;
00107 Bool_t fResetCameras;
00108 Bool_t fDropLogicals;
00109 Bool_t fKeepEmptyCont;
00110 Bool_t fTimerActive;
00111 TTimer fRedrawTimer;
00112
00113 protected:
00114
00115 TExMap *fStampedElements;
00116
00117
00118 TEveSelection *fSelection;
00119 TEveSelection *fHighlight;
00120
00121 TEveElementList *fOrphanage;
00122 Bool_t fUseOrphanage;
00123
00124 public:
00125 TEveManager(UInt_t w, UInt_t h, Bool_t map_window=kTRUE, Option_t* opt="FI");
00126 virtual ~TEveManager();
00127
00128 TExceptionHandler* GetExcHandler() const { return fExcHandler; }
00129
00130 TEveSelection* GetSelection() const { return fSelection; }
00131 TEveSelection* GetHighlight() const { return fHighlight; }
00132
00133 TEveElementList* GetOrphanage() const { return fOrphanage; }
00134 Bool_t GetUseOrphanage() const { return fUseOrphanage; }
00135 void SetUseOrphanage(Bool_t o) { fUseOrphanage = o; }
00136 void ClearOrphanage();
00137
00138 TEveBrowser* GetBrowser() const { return fBrowser; }
00139 TEveGListTreeEditorFrame* GetLTEFrame() const { return fLTEFrame; }
00140 TEveGedEditor* GetEditor() const;
00141 TGStatusBar* GetStatusBar() const;
00142
00143 TEveWindowManager* GetWindowManager() const { return fWindowManager; }
00144
00145 TEveSceneList* GetScenes() const { return fScenes; }
00146 TEveViewerList* GetViewers() const { return fViewers; }
00147
00148 TEveScene* GetGlobalScene() const { return fGlobalScene; }
00149 TEveScene* GetEventScene() const { return fEventScene; }
00150 TEveEventManager* GetCurrentEvent() const { return fCurrentEvent; }
00151
00152 void SetCurrentEvent(TEveEventManager* mgr) { fCurrentEvent = mgr; }
00153
00154 TCanvas* AddCanvasTab(const char* name);
00155 TGWindow* GetMainWindow() const;
00156 TEveViewer* GetDefaultViewer() const;
00157 TGLViewer* GetDefaultGLViewer() const;
00158 TEveViewer* SpawnNewViewer(const char* name, const char* title="", Bool_t embed=kTRUE);
00159 TEveScene* SpawnNewScene(const char* name, const char* title="");
00160
00161 TFolder* GetMacroFolder() const { return fMacroFolder; }
00162 TMacro* GetMacro(const char* name) const;
00163
00164 void EditElement(TEveElement* element);
00165
00166 void DisableRedraw() { ++fRedrawDisabled; }
00167 void EnableRedraw() { --fRedrawDisabled; if (fRedrawDisabled <= 0) Redraw3D(); }
00168
00169 void Redraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE)
00170 {
00171 if (fRedrawDisabled <= 0 && !fTimerActive) RegisterRedraw3D();
00172 if (resetCameras) fResetCameras = kTRUE;
00173 if (dropLogicals) fDropLogicals = kTRUE;
00174 }
00175 void RegisterRedraw3D();
00176 void DoRedraw3D();
00177 void FullRedraw3D(Bool_t resetCameras=kFALSE, Bool_t dropLogicals=kFALSE);
00178
00179 Bool_t GetKeepEmptyCont() const { return fKeepEmptyCont; }
00180 void SetKeepEmptyCont(Bool_t k) { fKeepEmptyCont = k; }
00181
00182 void ElementChanged(TEveElement* element, Bool_t update_scenes=kTRUE, Bool_t redraw=kFALSE);
00183 void ScenesChanged(TEveElement::List_t& scenes);
00184
00185
00186 void ElementStamped(TEveElement* element);
00187
00188
00189 TGListTree* GetListTree() const;
00190 TGListTreeItem* AddToListTree(TEveElement* re, Bool_t open, TGListTree* lt=0);
00191 void RemoveFromListTree(TEveElement* element, TGListTree* lt, TGListTreeItem* lti);
00192
00193 TGListTreeItem* AddEvent(TEveEventManager* event);
00194
00195 void AddElement(TEveElement* element, TEveElement* parent=0);
00196 void AddGlobalElement(TEveElement* element, TEveElement* parent=0);
00197
00198 void RemoveElement(TEveElement* element, TEveElement* parent);
00199 void PreDeleteElement(TEveElement* element);
00200
00201 void ElementSelect(TEveElement* element);
00202 Bool_t ElementPaste(TEveElement* element);
00203
00204
00205 Bool_t InsertVizDBEntry(const TString& tag, TEveElement* model,
00206 Bool_t replace, Bool_t update);
00207 Bool_t InsertVizDBEntry(const TString& tag, TEveElement* model);
00208 TEveElement* FindVizDBEntry (const TString& tag);
00209
00210 void LoadVizDB(const TString& filename, Bool_t replace, Bool_t update);
00211 void LoadVizDB(const TString& filename);
00212 void SaveVizDB(const TString& filename);
00213
00214 Bool_t GetVizDBReplace() const { return fVizDBReplace; }
00215 Bool_t GetVizDBUpdate () const { return fVizDBUpdate; }
00216 void SetVizDBReplace(Bool_t r) { fVizDBReplace = r; }
00217 void SetVizDBUpdate (Bool_t u) { fVizDBUpdate = u; }
00218
00219
00220
00221 TGeoManager* GetGeometry(const TString& filename);
00222 TGeoManager* GetGeometryByAlias(const TString& alias);
00223 TGeoManager* GetDefaultGeometry();
00224 void RegisterGeometryAlias(const TString& alias, const TString& filename);
00225
00226 void SetStatusLine(const char* text);
00227 void ClearROOTClassSaved();
00228
00229 void CloseEveWindow();
00230
00231 static TEveManager* Create(Bool_t map_window=kTRUE, Option_t* opt="FIV");
00232 static void Terminate();
00233
00234 ClassDef(TEveManager, 0);
00235 };
00236
00237 R__EXTERN TEveManager* gEve;
00238
00239 #endif