TEveManager.h

Go to the documentation of this file.
00001 // @(#)root/eve:$Id: TEveManager.h 35074 2010-08-30 15:18:02Z matevz $
00002 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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&);            // Not implemented
00052    TEveManager& operator=(const TEveManager&); // Not implemented
00053 
00054 public:
00055    class TRedrawDisabler
00056    {
00057    private:
00058       TRedrawDisabler(const TRedrawDisabler&);            // Not implemented
00059       TRedrawDisabler& operator=(const TRedrawDisabler&); // Not implemented
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); // Exception-safe EVE redraw-disabler.
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); // Exception handler for Eve exceptions.
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    // Fine grained scene updates.
00115    TExMap                   *fStampedElements;
00116 
00117    // Selection / hihglight elements
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    // Fine grained updates via stamping.
00186    void ElementStamped(TEveElement* element);
00187 
00188    // These are more like TEveManager stuff.
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    // VizDB - Visualization-parameter data-base.
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    // Geometry management.
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); // Eve application manager.
00235 };
00236 
00237 R__EXTERN TEveManager* gEve;
00238 
00239 #endif

Generated on Tue Jul 5 14:14:58 2011 for ROOT_528-00b_version by  doxygen 1.5.1