Logo ROOT   6.14/05
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 
19 class TGSplitter;
20 class TContextMenu;
21 
22 class TGRectMap : public TObject {
23 
24 private:
25  TGRectMap(const TGRectMap&); // not implemented
26  TGRectMap& operator=(const TGRectMap&); // not implemented
27 
28 public:
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
35  TGRectMap(Int_t rx, Int_t ry, UInt_t rw, UInt_t rh):
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 
47 class TGSplitTool : public TGCompositeFrame {
48 
49 private:
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 
60 public:
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();
67  Bool_t HandleButton(Event_t *event);
68  Bool_t HandleMotion(Event_t *event);
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 
79 private:
80  TGSplitFrame(const TGSplitFrame&); // Not implemented
81  TGSplitFrame& operator=(const TGSplitFrame&); // Not implemented
82 
83 protected:
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 
93 public:
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();
100  virtual Bool_t HandleConfigureNotify(Event_t *);
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; }
109  TGSplitTool *GetSplitTool() const { return fSplitTool; }
110  TGSplitFrame *GetTopFrame();
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);
116  void SetHRatio(Float_t r) { fHRatio = r; }
117  void SetWRatio(Float_t r) { fWRatio = r; }
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
Int_t fX
Definition: TGSplitFrame.h:29
TGFrame * fFrame
Definition: TGSplitFrame.h:84
TGTransientFrame * fUndocked
Definition: TGSplitFrame.h:85
float Float_t
Definition: RtypesCore.h:53
const char Option_t
Definition: RtypesCore.h:62
Float_t GetWRatio() const
Definition: TGSplitFrame.h:113
Float_t GetHRatio() const
Definition: TGSplitFrame.h:112
#define f(i)
Definition: RSha256.hxx:104
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
TGRectMap(const TGRectMap &)
void SetWRatio(Float_t r)
Definition: TGSplitFrame.h:117
TGSplitFrame * GetSecond() const
Definition: TGSplitFrame.h:107
Double_t x[n]
Definition: legend1.C:17
TContextMenu * fContextMenu
Definition: TGSplitFrame.h:53
#define ClassDef(name, id)
Definition: Rtypes.h:320
UInt_t fH
Definition: TGSplitFrame.h:32
TGSplitFrame * GetFirst() const
Definition: TGSplitFrame.h:105
virtual ~TGRectMap()
Definition: TGSplitFrame.h:37
TGFrame * GetUndocked() const
Definition: TGSplitFrame.h:111
Float_t fHRatio
Definition: TGSplitFrame.h:91
UInt_t fW
Definition: TGSplitFrame.h:31
TGSplitter * GetSplitter() const
Definition: TGSplitFrame.h:108
TGFrame * GetFrame() const
Definition: TGSplitFrame.h:106
Bool_t Contains(Int_t px, Int_t py) const
Definition: TGSplitFrame.h:40
Int_t fY
Definition: TGSplitFrame.h:30
ROOT::R::TRInterface & r
Definition: Object.C:4
const TGFrame * fWindow
Definition: TGSplitFrame.h:50
void SetHRatio(Float_t r)
Definition: TGSplitFrame.h:116
TGSplitTool * GetSplitTool() const
Definition: TGSplitFrame.h:109
This class provides an interface to context sensitive popup menus.
Definition: TContextMenu.h:40
unsigned int UInt_t
Definition: RtypesCore.h:42
TGSplitter * fSplitter
Definition: TGSplitFrame.h:86
void Reset(Detail::TBranchProxy *x)
#define h(i)
Definition: RSha256.hxx:106
T2 fSecond
Definition: X11Events.mm:87
TMap implements an associative array of (key,value) pairs using a THashTable for efficient retrieval ...
Definition: TMap.h:40
TGSplitFrame * fSecond
Definition: TGSplitFrame.h:88
Double_t y[n]
Definition: legend1.C:17
Mother of all ROOT objects.
Definition: TObject.h:37
auto * l
Definition: textangle.C:4
#define dest(otri, vertexptr)
Definition: triangle.c:1040
TGRectMap(Int_t rx, Int_t ry, UInt_t rw, UInt_t rh)
Definition: TGSplitFrame.h:35
TGSplitTool * fSplitTool
Definition: TGSplitFrame.h:89
TGSplitFrame * fFirst
Definition: TGSplitFrame.h:87
Definition: TGGC.h:31
Float_t fWRatio
Definition: TGSplitFrame.h:90
TGRectMap & operator=(const TGRectMap &)
T1 fFirst
Definition: X11Events.mm:86
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a primitive as a C++ statement(s) on output stream "out".
Definition: TObject.cxx:664