Logo ROOT   6.16/01
Reference Guide
TGSplitFrame.h
Go to the documentation of this file.
1// @(#)root/gui:$Id$
2// Author: Bertrand Bellenot 23/01/2008
3
4/*************************************************************************
5 * Copyright (C) 1995-2008, 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#ifndef ROOT_TGSplitFrame
13#define ROOT_TGSplitFrame
14
15#include "TGFrame.h"
16
17#include "TMap.h"
18
19class TGSplitter;
20class TContextMenu;
21
22class TGRectMap : public TObject {
23
24private:
25 TGRectMap(const TGRectMap&); // not implemented
26 TGRectMap& operator=(const TGRectMap&); // not implemented
27
28public:
29 Int_t fX; // x position
30 Int_t fY; // y position
31 UInt_t fW; // width
32 UInt_t fH; // height
33
34 // constructors
36 fX(rx), fY(ry), fW(rw), fH(rh) { }
37 virtual ~TGRectMap() { }
38
39 // methods
40 Bool_t Contains(Int_t px, Int_t py) const
41 { return ((px >= fX) && (px < fX + (Int_t) fW) &&
42 (py >= fY) && (py < fY + (Int_t) fH)); }
43
44 ClassDef(TGRectMap, 0) // Rectangle used in TMap
45};
46
48
49private:
50 const TGFrame *fWindow; // frame to which tool tip is associated
51 TGGC fRectGC; // rectangles drawing context
52 TMap fMap; // map of rectangles/subframes
53 TContextMenu *fContextMenu; // Context menu for the splitter
54 Int_t fX; // X position in fWindow where to popup
55 Int_t fY; // Y position in fWindow where to popup
56
57 TGSplitTool(const TGSplitTool&); // not implemented
58 TGSplitTool& operator=(const TGSplitTool&); // not implemented
59
60public:
61 TGSplitTool(const TGWindow *p = 0, const TGFrame *f = 0);
62 virtual ~TGSplitTool();
63
64 void AddRectangle(TGFrame *frm, Int_t x, Int_t y, Int_t w, Int_t h);
65 void DoRedraw();
66 void DrawBorder();
69 void Show(Int_t x, Int_t y);
70 void Hide();
71 void Reset();
72 void SetPosition(Int_t x, Int_t y);
73
74 ClassDef(TGSplitTool, 0) // Split frame tool utility
75};
76
78
79private:
80 TGSplitFrame(const TGSplitFrame&); // Not implemented
81 TGSplitFrame& operator=(const TGSplitFrame&); // Not implemented
82
83protected:
84 TGFrame *fFrame; // Pointer to the embedded frame (if any)
85 TGTransientFrame *fUndocked; // Main frame used when "undocking" frame
86 TGSplitter *fSplitter; // Pointer to the (H/V) Splitter (if any)
87 TGSplitFrame *fFirst; // Pointer to the first child (if any)
88 TGSplitFrame *fSecond; // Pointer to the second child (if any)
89 TGSplitTool *fSplitTool; // SplitFrame Tool
90 Float_t fWRatio; // Width ratio between the first child and this
91 Float_t fHRatio; // Height ratio between the first child and this
92
93public:
94 TGSplitFrame(const TGWindow *p = 0, UInt_t w = 1, UInt_t h = 1,
95 UInt_t options = 0);
96 virtual ~TGSplitFrame();
97
98 virtual void AddFrame(TGFrame *f, TGLayoutHints *l = 0);
99 virtual void Cleanup();
101 virtual void HSplit(UInt_t h = 0);
102 virtual void VSplit(UInt_t w = 0);
103 virtual void RemoveFrame(TGFrame *f);
104
105 TGSplitFrame *GetFirst() const { return fFirst; }
106 TGFrame *GetFrame() const { return fFrame; }
107 TGSplitFrame *GetSecond() const { return fSecond; }
108 TGSplitter *GetSplitter() const { return fSplitter; }
111 TGFrame *GetUndocked() const { return fUndocked; }
112 Float_t GetHRatio() const { return fHRatio; }
113 Float_t GetWRatio() const { return fWRatio; }
114 void MapToSPlitTool(TGSplitFrame *top);
115 void OnSplitterClicked(Event_t *event);
118 void SplitHorizontal(const char *side = "top");
119 void SplitVertical(const char *side = "left");
120 void UnSplit(const char *which);
121
122 // methods accessible via context menu
123
124 void Close(); // *MENU*
125 void CloseAndCollapse(); // *MENU*
126 void ExtractFrame(); // *MENU*
127 void SwallowBack(); // *MENU*
128 void SwitchToMain(); // *MENU*
129 void SplitHor(); // *MENU*
130 void SplitVer(); // *MENU*
131
132 void Docked(TGFrame* frame); //*SIGNAL*
133 void Undocked(TGFrame* frame); //*SIGNAL*
134
135 static void SwitchFrames(TGFrame *frame, TGCompositeFrame *dest,
136 TGFrame *prev);
137 virtual void SavePrimitive(std::ostream &out, Option_t *option = "");
138
139 ClassDef(TGSplitFrame, 0) // Splittable composite frame
140};
141
142#endif
ROOT::R::TRInterface & r
Definition: Object.C:4
#define f(i)
Definition: RSha256.hxx:104
#define h(i)
Definition: RSha256.hxx:106
int Int_t
Definition: RtypesCore.h:41
unsigned int UInt_t
Definition: RtypesCore.h:42
bool Bool_t
Definition: RtypesCore.h:59
float Float_t
Definition: RtypesCore.h:53
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:324
This class provides an interface to context sensitive popup menus.
Definition: TContextMenu.h:40
Definition: TGGC.h:31
TGRectMap & operator=(const TGRectMap &)
UInt_t fH
Definition: TGSplitFrame.h:32
Int_t fX
Definition: TGSplitFrame.h:29
virtual ~TGRectMap()
Definition: TGSplitFrame.h:37
Bool_t Contains(Int_t px, Int_t py) const
Definition: TGSplitFrame.h:40
UInt_t fW
Definition: TGSplitFrame.h:31
TGRectMap(Int_t rx, Int_t ry, UInt_t rw, UInt_t rh)
Definition: TGSplitFrame.h:35
Int_t fY
Definition: TGSplitFrame.h:30
TGRectMap(const TGRectMap &)
void MapToSPlitTool(TGSplitFrame *top)
Map this split frame in the small overview tooltip.
virtual void Cleanup()
Recursively cleanup child frames.
virtual void VSplit(UInt_t w=0)
Vertically split the frame.
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a splittable frame as a C++ statement(s) on output stream out.
TGSplitFrame * GetFirst() const
Definition: TGSplitFrame.h:105
void OnSplitterClicked(Event_t *event)
Handle mouse click events on the splitter.
virtual ~TGSplitFrame()
Destructor. Make cleanup.
void SplitVertical(const char *side="left")
Vertically split the frame, and if it contains a child frame, ask the user where to keep it (left or ...
void SwitchToMain()
Switch the actual embedded frame to the main (first) split frame.
void SetHRatio(Float_t r)
Definition: TGSplitFrame.h:116
TGSplitFrame * fSecond
Definition: TGSplitFrame.h:88
TGSplitTool * GetSplitTool() const
Definition: TGSplitFrame.h:109
virtual void RemoveFrame(TGFrame *f)
Add a frame in the split frame using layout hints l.
virtual void HSplit(UInt_t h=0)
Horizontally split the frame.
TGSplitFrame * GetTopFrame()
Return the top level split frame.
void SetWRatio(Float_t r)
Definition: TGSplitFrame.h:117
void SwallowBack()
Swallow back the child frame previously extracted, and close its parent (transient frame).
TGFrame * GetFrame() const
Definition: TGSplitFrame.h:106
TGSplitTool * fSplitTool
Definition: TGSplitFrame.h:89
TGTransientFrame * fUndocked
Definition: TGSplitFrame.h:85
TGSplitter * fSplitter
Definition: TGSplitFrame.h:86
TGSplitFrame(const TGSplitFrame &)
void Docked(TGFrame *frame)
Emit Undocked() signal.
TGSplitter * GetSplitter() const
Definition: TGSplitFrame.h:108
Float_t GetWRatio() const
Definition: TGSplitFrame.h:113
void Undocked(TGFrame *frame)
Emit Undocked() signal.
TGFrame * fFrame
Definition: TGSplitFrame.h:84
static void SwitchFrames(TGFrame *frame, TGCompositeFrame *dest, TGFrame *prev)
Switch (exchange) two frames.
void Close()
Close (unmap and remove from the list of frames) the frame contained in this split frame.
TGSplitFrame * fFirst
Definition: TGSplitFrame.h:87
virtual Bool_t HandleConfigureNotify(Event_t *)
Handles resize events for this frame.
Float_t GetHRatio() const
Definition: TGSplitFrame.h:112
Float_t fHRatio
Definition: TGSplitFrame.h:91
void SplitHorizontal(const char *side="top")
Horizontally split the frame, and if it contains a child frame, ask the user where to keep it (top or...
Float_t fWRatio
Definition: TGSplitFrame.h:90
TGSplitFrame & operator=(const TGSplitFrame &)
TGSplitFrame * GetSecond() const
Definition: TGSplitFrame.h:107
TGFrame * GetUndocked() const
Definition: TGSplitFrame.h:111
void ExtractFrame()
Extract the frame contained in this split frame an reparent it in a transient frame.
void SplitVer()
Vertically split the frame, and if it contains a child frame, ask the user where to keep it (left or ...
void UnSplit(const char *which)
Close (unmap and remove from the list of frames) the frame contained in this split frame.
void CloseAndCollapse()
Close (unmap, remove from the list of frames and destroy) the frame contained in this split frame.
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
Add a frame in the split frame using layout hints l.
void SplitHor()
Horizontally split the frame, and if it contains a child frame, ask the user where to keep it (top or...
Bool_t HandleMotion(Event_t *event)
handle mouse motion events
TGSplitTool & operator=(const TGSplitTool &)
void Show(Int_t x, Int_t y)
Show tool window.
virtual ~TGSplitTool()
TGSplitTool destructor.
void AddRectangle(TGFrame *frm, Int_t x, Int_t y, Int_t w, Int_t h)
Add a rectangle representation of a split frame in the map, together with the frame itself.
void DrawBorder()
Draw border of tool window.
void SetPosition(Int_t x, Int_t y)
Set popup position within specified frame (as specified in the ctor).
void DoRedraw()
Redraw split frame tool.
void Reset()
Reset tool tip popup delay timer.
const TGFrame * fWindow
Definition: TGSplitFrame.h:50
TGSplitTool(const TGSplitTool &)
Bool_t HandleButton(Event_t *event)
Handle mouse click events in the tool.
void Hide()
Hide tool window. Use this method to hide the tool in a client class.
TContextMenu * fContextMenu
Definition: TGSplitFrame.h:53
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition: TMap.h:40
Mother of all ROOT objects.
Definition: TObject.h:37
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
auto * l
Definition: textangle.C:4
#define dest(otri, vertexptr)
Definition: triangle.c:1040