Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TRootCanvas.h
Go to the documentation of this file.
1 // @(#)root/gui:$Id$
2 // Author: Fons Rademakers 15/01/98
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 
13 #ifndef ROOT_TRootCanvas
14 #define ROOT_TRootCanvas
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TRootCanvas //
19 // //
20 // This class creates a main window with menubar, scrollbars and a //
21 // drawing area. The widgets used are the new native ROOT GUI widgets. //
22 // //
23 //////////////////////////////////////////////////////////////////////////
24 
25 #include "TCanvasImp.h"
26 #include "TGFrame.h"
27 
28 class TGCanvas;
29 class TGMenuBar;
30 class TGPopupMenu;
31 class TGLayoutHints;
32 class TGStatusBar;
33 class TRootContainer;
34 class TGToolBar;
35 class TGHorizontal3DLine;
36 class TGVertical3DLine;
37 class TVirtualPadEditor;
38 class TGDockableFrame;
39 class TGDNDManager;
40 class TGToolTip;
41 
42 class TRootCanvas : public TGMainFrame, public TCanvasImp {
43 
44 friend class TRootContainer;
45 
46 private:
47  TGCanvas *fCanvasWindow; // canvas widget
48  TRootContainer *fCanvasContainer; // container in canvas widget
49  TGMenuBar *fMenuBar; // menubar
50  TGPopupMenu *fFileMenu; // file menu
51  TGPopupMenu *fFileSaveMenu; // save cascade submenu
52  TGPopupMenu *fEditMenu; // edit menu
53  TGPopupMenu *fEditClearMenu; // clear cascade submenu
54  TGPopupMenu *fViewMenu; // view menu
55  TGPopupMenu *fViewWithMenu; // view with... cascade submenu
56  TGPopupMenu *fOptionMenu; // option menu
57  TGPopupMenu *fToolsMenu; // tools menu
58  TGPopupMenu *fHelpMenu; // help menu
59  TGLayoutHints *fMenuBarLayout; // menubar layout hints
60  TGLayoutHints *fMenuBarItemLayout; // layout hints for menu in menubar
61  TGLayoutHints *fMenuBarHelpLayout; // layout hint for help menu in menubar
62  TGLayoutHints *fCanvasLayout; // layout for canvas widget
63  TGStatusBar *fStatusBar; // statusbar widget
64  TGLayoutHints *fStatusBarLayout; // layout hints for statusbar
65 
66  TGCompositeFrame *fEditorFrame; // side frame for current pad editor
67  TGLayoutHints *fEditorLayout; // layout for editor frame
68  TGCompositeFrame *fMainFrame; // main frame containing canvas and side frame
69  TGLayoutHints *fToolBarLayout; // layout for toolbar widget
70  TGToolBar *fToolBar; // icon button toolbar
71  TGHorizontal3DLine *fToolBarSep; // toolbar separator
72  TGLayoutHints *fMainFrameLayout; // layout for main frame
73  TGVertical3DLine *fVertical1; // toolbar vertical separator
74  TGVertical3DLine *fVertical2; // toolbar vertical separator
75  TGHorizontal3DLine *fHorizontal1; // toolbar sepatator
76  TGLayoutHints *fVertical1Layout; // layout hints for separator
77  TGLayoutHints *fVertical2Layout; // layout hints for separator
78  TGLayoutHints *fHorizontal1Layout; // layout hints for separator
79  TGDockableFrame *fToolDock; // dockable frame holding the toolbar
80  TGLayoutHints *fDockLayout; // layout hints for dockable frame widget
81  const TGPicture *fIconPic; // icon picture
82  TGToolTip *fToolTip; // tooltip for object info
83 
84  TVirtualPadEditor *fEditor; // pointer to currently loaded pad editor
85  Bool_t fEmbedded; // true if embedded in any other frame (e.g. in the browser)
86  Int_t fCanvasID; // index in fWindows array of TGX11
87  Bool_t fAutoFit; // when true canvas container keeps same size as canvas
88  Int_t fButton; // currently pressed button
89 
90  TRootCanvas(const TRootCanvas&); // Not implemented
91  TRootCanvas& operator=(const TRootCanvas&); // Not implemented
92  void CreateCanvas(const char *name);
93  void CreateEditor();
94 
95  Bool_t HandleContainerButton(Event_t *ev);
96  Bool_t HandleContainerDoubleClick(Event_t *ev);
97  Bool_t HandleContainerConfigure(Event_t *ev);
98  Bool_t HandleContainerKey(Event_t *ev);
99  Bool_t HandleContainerMotion(Event_t *ev);
100  Bool_t HandleContainerExpose(Event_t *ev);
101  Bool_t HandleContainerCrossing(Event_t *ev);
102 
103  Bool_t HandleDNDDrop(TDNDData *data);
104  Atom_t HandleDNDPosition(Int_t x, Int_t y, Atom_t action,
105  Int_t xroot, Int_t yroot);
106  Atom_t HandleDNDEnter(Atom_t * typelist);
107  Bool_t HandleDNDLeave();
108 
109 public:
110  TRootCanvas(TCanvas *c = 0, const char *name = "ROOT Canvas", UInt_t width = 500, UInt_t height = 300);
111  TRootCanvas(TCanvas *c, const char *name, Int_t x, Int_t y, UInt_t width, UInt_t height);
112  virtual ~TRootCanvas();
113 
114  void AdjustSize();
115  void Close();
116  void ForceUpdate() { Layout(); }
117  void FitCanvas();
118  void EventInfo(Int_t event, Int_t px, Int_t py, TObject *selected);
119  UInt_t GetWindowGeometry(Int_t &x, Int_t &y, UInt_t &w, UInt_t &h);
120  UInt_t GetCwidth() const;
121  UInt_t GetCheight() const;
122  void Iconify() { IconifyWindow(); }
123  Int_t InitWindow();
124  void PrintCanvas();
125  void RaiseWindow();
126  void SetWindowPosition(Int_t x, Int_t y);
127  void SetWindowSize(UInt_t w, UInt_t h);
128  void SetWindowTitle(const char *newTitle);
129  void SetCanvasSize(UInt_t w, UInt_t h);
130  void SetStatusText(const char *txt = 0, Int_t partidx = 0);
131 
132  void Show() { MapRaised(); }
133  void ShowMenuBar(Bool_t show = kTRUE);
134  void ShowStatusBar(Bool_t show = kTRUE);
135  void ShowEditor(Bool_t show = kTRUE);
136  void ShowToolBar(Bool_t show = kTRUE);
137  void ShowToolTips(Bool_t show = kTRUE);
138 
139  Bool_t HasEditor() const;
140  Bool_t HasMenuBar() const;
141  Bool_t HasStatusBar() const;
142  Bool_t HasToolBar() const;
143  Bool_t HasToolTips() const;
144 
145  void Activated(Int_t id);
146 
147  TGMenuBar *GetMenuBar() const { return fMenuBar; }
148  TGLayoutHints *GetMenuBarItemLayout() const { return fMenuBarItemLayout; }
149  TGStatusBar *GetStatusBar() const { return fStatusBar; }
150  TGDockableFrame *GetToolDock() const { return fToolDock; }
151 
152  // overridden from TGMainFrame
153  void CloseWindow();
154  Bool_t ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2);
155  void ReallyDelete();
156 
157  ClassDef(TRootCanvas,0) //ROOT native GUI version of main window with menubar and drawing area
158 };
159 
160 #endif