// $Id: EGViewer.hh,v 1.27 2005/10/30 01:41:25 thea Exp $ // Author: Alessandro Thea 2005/05/23 /***************************************************************************** * ESAF: Euso Simulation and Analysis Framework * * * * Id: EGViewer * * Package: EventViewer * * Coordinator: Alessandro.Thea * * * *****************************************************************************/ #ifndef __EGVIEWER_HH__ #define __EGVIEWER_HH__ #include #include class TList; class TGListBox; class TGCompositeFrame; class TGTab; class TGTabElement; class TGStatusBar; class TCanvas; class TRootEmbeddedCanvas; class TMutex; class TGHorizontal3DLine; class TPad; class TGComboBox; class TGMenuBar; class TGPopupMenu; class TGProgressBar; class TGHProgressBar; class TVirtualPadEditor; //////////////////////////////////////////////////////////////////////////////// // // // EGViewer // // // // // // // //////////////////////////////////////////////////////////////////////////////// class EGViewer : public TGMainFrame { public: EGViewer(const char* name = 0, const char* title = 0, Int_t w = 800, Int_t h = 600); virtual ~EGViewer(); virtual TCanvas* AddTab( const char* name, const char* title=0 ); virtual TGCompositeFrame* AddEmptyTab( const char* title ); virtual void Clear( Option_t* /* options */ = "" ); virtual void CloseWindow(); virtual TCanvas* CurrentCanvas() const; virtual void EventInfo(Int_t event, Int_t px, Int_t py, TObject *selected); virtual TGProgressBar* GetProgressBar() const { return (TGProgressBar*)fProgressBar; } virtual TSeqCollection* GetListOfCanvases() const; virtual const char* GetName() const { return fName.Data(); } virtual const char* GetTitle() const { return fTitle.Data(); } virtual TCanvas* FindAddTab( const char* name, const char* title=0 ); virtual TCanvas* FindCanvas(const char* name) const; virtual TCanvas* FindCanvasByTab(Int_t i) const; virtual TCanvas* FindCanvasByTab(TGCompositeFrame *f) const; virtual Bool_t HandleKey(Event_t* event); virtual Bool_t HandleEvent(Event_t* event); virtual Bool_t ProcessMessage(Long_t msg, Long_t mp1, Long_t mp2); virtual Int_t NextTab() const; virtual Int_t PrevTab() const; virtual void RemoveTabs(); virtual void RemoveTab( const char* name ); virtual void RemoveTab(Int_t i); virtual Int_t SaveAsPS( const char* name = 0 ); virtual Int_t SaveAsPDF( const char* name = 0 ); virtual Int_t SaveAsRoot( const char* name = 0 ); virtual void SelectTab(Int_t) const; virtual void SetName( const char* name ) { fName = name; } virtual void SetStatusText(const char *txt, Int_t partidx); virtual void SetStatusText(const char *txt, Int_t partidx) const; virtual void SetTitle( const char* title ) { fTitle = title; } virtual void ShowTabList( Bool_t show = kTRUE ); virtual void ToggleTabList(); virtual void ShowEditor( Bool_t show = kTRUE ); virtual void ToggleEditor(); virtual void ShowProgressBarPosition(Bool_t set = kTRUE, Bool_t percent = kTRUE, const char* format = "%.2f"); virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0) const; virtual Int_t Read(const char *name); protected: EGViewer(Bool_t build, const char* name = 0, Int_t w = 800, Int_t h = 600); void AddPadToClean(TVirtualPad* pad) const; void DrawClonePad(TVirtualPad *newp, TVirtualPad *oldp) const; virtual Bool_t CloneToCanvas(TVirtualPad* pad); virtual void UpdateWMSizeHints(); virtual TGTab* GetTab() const { return fTab; } virtual Int_t A4Height( Int_t w ); virtual void CreateEditor(); void AddMenuBar(); void AddUserFrame(); void AddTabs(); void AddStatusBar(); Bool_t Constructor(const char* name, const char* title); TRootEmbeddedCanvas* GetEmbeddedCanvas( TGCompositeFrame* ) const; Bool_t IsPadLookup() const { return fPadLookup; } virtual Bool_t ProcessMessageCommandMenu(Long_t mp1); virtual Bool_t ProcessMessageCommand(Long_t submsg, Long_t mp1, Long_t mp2); virtual Bool_t ProcessMessageTextview(Long_t submsg, Long_t mp1, Long_t mp2); virtual Bool_t ProcessMessageUser(Long_t submsg, Long_t mp1, Long_t mp2); void SetPadFillColor(TVirtualPad &p, Int_t col) const; void SetPadLookup( Bool_t = kTRUE); void UpdateTab(TGCompositeFrame *f); void UpdatePSHeader(const TString &name) const; TList* fList; TList* fCanvases; TMutex *fMutex; TString fName; TString fTitle; TVirtualPad* fOldPad; Bool_t fPadLookup; TGComboBox *fTabCombo; TGCompositeFrame *fMenuFrame; TGCompositeFrame *fStatusFrame; TGCompositeFrame *fMainFrame; TGCompositeFrame *fUserFrame; TGCompositeFrame *fEditorFrame; TGHProgressBar *fProgressBar; TGHorizontal3DLine *fLine; TGLayoutHints *fLayCanvas; TGMenuBar *fMenuBar; TGPopupMenu *fFileMenu; TGPopupMenu *fFileSaveMenu; TGPopupMenu *fSizeMenu; TGPopupMenu *fSizePaperMenu; TGPopupMenu *fTabMenu; TGPopupMenu *fViewMenu; TGPopupMenu *fOptionMenu; TGStatusBar *fStatusBar; TGTab *fTab; TGListBox *fTabList; TGCompositeFrame *fTabListFrame; TVirtualPadEditor *fEditor; ClassDef(EGViewer,0) }; inline TSeqCollection* EGViewer::GetListOfCanvases() const { return fCanvases; } //////////////////////////////////////////////////////////////////////////////// // // // EClusterOfPrimitives // // // //////////////////////////////////////////////////////////////////////////////// class EClusterOfPrimitives : public TList { protected: TString fName; TString fTitle; TObject* Locate(Int_t px, Int_t py) const; public: EClusterOfPrimitives(); EClusterOfPrimitives( const char* name, const char* title ); virtual ~EClusterOfPrimitives(); virtual Int_t DistancetoPrimitive(Int_t px, Int_t py); virtual void Draw(Option_t *option=""); virtual void ExecuteEvent(Int_t, Int_t, Int_t); virtual const char* GetName() const { return fName.Data(); } virtual const char* GetTitle() const { return fTitle.Data(); } virtual void Paint(Option_t *option=""); virtual char *GetObjectInfo(Int_t px, Int_t py) const; ClassDef(EClusterOfPrimitives,1) }; #endif /* __EGVIEWER_HH__ */