// @(#)root/gui:$Id: TRootCanvas.h 26760 2008-12-09 15:56:43Z brun $ // Author: Fons Rademakers 15/01/98 /************************************************************************* * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. * * All rights reserved. * * * * For the licensing terms see $ROOTSYS/LICENSE. * * For the list of contributors see $ROOTSYS/README/CREDITS. * *************************************************************************/ #ifndef ROOT_TRootCanvas #define ROOT_TRootCanvas ////////////////////////////////////////////////////////////////////////// // // // TRootCanvas // // // // This class creates a main window with menubar, scrollbars and a // // drawing area. The widgets used are the new native ROOT GUI widgets. // // // ////////////////////////////////////////////////////////////////////////// #ifndef ROOT_TCanvasImp #include "TCanvasImp.h" #endif #ifndef ROOT_TGFrame #include "TGFrame.h" #endif class TGCanvas; class TGMenuBar; class TGPopupMenu; class TGLayoutHints; class TGStatusBar; class TRootContainer; class TGToolBar; class TGHorizontal3DLine; class TGVertical3DLine; class TVirtualPadEditor; class TGDockableFrame; class TGDNDManager; class TRootCanvas : public TGMainFrame, public TCanvasImp { friend class TRootContainer; private: TGCanvas *fCanvasWindow; // canvas widget TRootContainer *fCanvasContainer; // container in canvas widget TGMenuBar *fMenuBar; // menubar TGPopupMenu *fFileMenu; // file menu TGPopupMenu *fFileSaveMenu; // save cascade submenu TGPopupMenu *fEditMenu; // edit menu TGPopupMenu *fEditClearMenu; // clear cascade submenu TGPopupMenu *fViewMenu; // view menu TGPopupMenu *fViewWithMenu; // view with... cascade submenu TGPopupMenu *fOptionMenu; // option menu TGPopupMenu *fToolsMenu; // tools menu TGPopupMenu *fHelpMenu; // help menu TGLayoutHints *fMenuBarLayout; // menubar layout hints TGLayoutHints *fMenuBarItemLayout; // layout hints for menu in menubar TGLayoutHints *fMenuBarHelpLayout; // layout hint for help menu in menubar TGLayoutHints *fCanvasLayout; // layout for canvas widget TGStatusBar *fStatusBar; // statusbar widget TGLayoutHints *fStatusBarLayout; // layout hints for statusbar TGCompositeFrame *fEditorFrame; // side frame for current pad editor TGLayoutHints *fEditorLayout; // layout for editor frame TGCompositeFrame *fMainFrame; // main frame containing canvas and side frame TGLayoutHints *fToolBarLayout; // layout for toolbar widget TGToolBar *fToolBar; // icon button toolbar TGHorizontal3DLine *fToolBarSep; // toolbar separator TGLayoutHints *fMainFrameLayout; // layout for main frame TGVertical3DLine *fVertical1; // toolbar vertical separator TGVertical3DLine *fVertical2; // toolbar vertical separator TGHorizontal3DLine *fHorizontal1; // toolbar sepatator TGLayoutHints *fVertical1Layout; // layout hints for separator TGLayoutHints *fVertical2Layout; // layout hints for separator TGLayoutHints *fHorizontal1Layout; // layout hints for separator TGDockableFrame *fToolDock; // dockable frame holding the toolbar TGLayoutHints *fDockLayout; // layout hints for dockable frame widget const TGPicture *fIconPic; // icon picture TVirtualPadEditor *fEditor; // pointer to currently loaded pad editor Int_t fCanvasID; // index in fWindows array of TGX11 Bool_t fAutoFit; // when true canvas container keeps same size as canvas Int_t fButton; // currently pressed button TRootCanvas(const TRootCanvas&); // Not implemented TRootCanvas& operator=(const TRootCanvas&); // Not implemented void CreateCanvas(const char *name); void CreateEditor(); Bool_t HandleContainerButton(Event_t *ev); Bool_t HandleContainerDoubleClick(Event_t *ev); Bool_t HandleContainerConfigure(Event_t *ev); Bool_t HandleContainerKey(Event_t *ev); Bool_t HandleContainerMotion(Event_t *ev); Bool_t HandleContainerExpose(Event_t *ev); Bool_t HandleContainerCrossing(Event_t *ev); Bool_t HandleDNDDrop(TDNDData *data); Atom_t HandleDNDPosition(Int_t x, Int_t y, Atom_t action, Int_t xroot, Int_t yroot); Atom_t HandleDNDEnter(Atom_t * typelist); Bool_t HandleDNDLeave(); public: TRootCanvas(TCanvas *c = 0, const char *name = "ROOT Canvas", UInt_t width = 500, UInt_t height = 300); TRootCanvas(TCanvas *c, const char *name, Int_t x, Int_t y, UInt_t width, UInt_t height); virtual ~TRootCanvas(); void AdjustSize(); void Close(); void ForceUpdate() { Layout(); } void FitCanvas(); UInt_t GetWindowGeometry(Int_t &x, Int_t &y, UInt_t &w, UInt_t &h); UInt_t GetCwidth() const; UInt_t GetCheight() const; void Iconify() { IconifyWindow(); } Int_t InitWindow(); void PrintCanvas(); void RaiseWindow(); void SetWindowPosition(Int_t x, Int_t y); void SetWindowSize(UInt_t w, UInt_t h); void SetWindowTitle(const char *newTitle); void SetCanvasSize(UInt_t w, UInt_t h); void SetStatusText(const char *txt = 0, Int_t partidx = 0); void Show() { MapRaised(); } void ShowMenuBar(Bool_t show = kTRUE); void ShowStatusBar(Bool_t show = kTRUE); void ShowEditor(Bool_t show = kTRUE); void ShowToolBar(Bool_t show = kTRUE); Bool_t HasEditor() const; Bool_t HasMenuBar() const; Bool_t HasStatusBar() const; Bool_t HasToolBar() const; TGMenuBar *GetMenuBar() const { return fMenuBar; } TGLayoutHints *GetMenuBarItemLayout() const { return fMenuBarItemLayout; } TGStatusBar *GetStatusBar() const { return fStatusBar; } TGDockableFrame *GetToolDock() const { return fToolDock; } // overridden from TGMainFrame void CloseWindow(); Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2); void ReallyDelete(); ClassDef(TRootCanvas,0) //ROOT native GUI version of main window with menubar and drawing area }; #endif