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