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