Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
buttonsLayout.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_gui
3/// This macro gives an example of different buttons' layout.
4/// To run it do either:
5/// ~~~
6/// .x buttonsLayout.C
7/// .x buttonsLayout.C++
8/// ~~~
9///
10/// \macro_code
11///
12/// \author Ilka Antcheva 1/12/2006
13
14#include <TGClient.h>
15#include <TGButton.h>
16
17class MyMainFrame : public TGMainFrame {
18
19private:
20 TGTextButton *test, *draw, *help, *ok, *cancel, *exit;
21
22public:
23 MyMainFrame(const TGWindow *p, UInt_t w, UInt_t h);
24 ~MyMainFrame() override;
25
26 ClassDef(MyMainFrame, 0)
27};
28
29MyMainFrame::MyMainFrame(const TGWindow *p, UInt_t w, UInt_t h) : TGMainFrame(p, w, h)
30{
31 // Create a container frames containing buttons
32
33 // one button is resized up to the parent width.
34 // Note! this width should be fixed!
35 TGVerticalFrame *hframe1 = new TGVerticalFrame(this, 170, 50, kFixedWidth);
36 test = new TGTextButton(hframe1, "&Test ");
37 // to take whole space we need to use kLHintsExpandX layout hints
38 hframe1->AddFrame(test, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 0, 2, 2));
39 AddFrame(hframe1, new TGLayoutHints(kLHintsCenterX, 2, 2, 5, 1));
40
41 // two buttons are resized up to the parent width.
42 // Note! this width should be fixed!
43 TGCompositeFrame *cframe1 = new TGCompositeFrame(this, 170, 20, kHorizontalFrame | kFixedWidth);
44 draw = new TGTextButton(cframe1, "&Draw");
45 // to share whole parent space we need to use kLHintsExpandX layout hints
46 cframe1->AddFrame(draw, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
47
48 // button background will be set to yellow
49 ULong_t yellow;
50 gClient->GetColorByName("yellow", yellow);
51 help = new TGTextButton(cframe1, "&Help");
52 help->ChangeBackground(yellow);
53 cframe1->AddFrame(help, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
54 AddFrame(cframe1, new TGLayoutHints(kLHintsCenterX, 2, 2, 5, 1));
55
56 // three buttons are resized up to the parent width.
57 // Note! this width should be fixed!
58 TGCompositeFrame *cframe2 = new TGCompositeFrame(this, 170, 20, kHorizontalFrame | kFixedWidth);
59 ok = new TGTextButton(cframe2, "OK");
60 // to share whole parent space we need to use kLHintsExpandX layout hints
61 cframe2->AddFrame(ok, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 3, 2, 2, 2));
62
63 cancel = new TGTextButton(cframe2, "Cancel ");
64 cframe2->AddFrame(cancel, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 3, 2, 2, 2));
65
66 exit = new TGTextButton(cframe2, "&Exit ", "gApplication->Terminate(0)");
67 cframe2->AddFrame(exit, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 0, 2, 2));
68
69 AddFrame(cframe2, new TGLayoutHints(kLHintsCenterX, 2, 2, 5, 1));
70
71 SetWindowName("Buttons' Layout");
72
73 // gives min/max window size + a step of x,y incrementing
74 // between the given sizes
75 SetWMSizeHints(200, 80, 320, 320, 1, 1);
77 // important for layout algorithm
78 Resize(GetDefaultSize());
79 MapWindow();
80}
81
82MyMainFrame::~MyMainFrame()
83{
84 // Clean up all widgets, frames and layouthints that were used
85 Cleanup();
86}
87
88void buttonsLayout()
89{
90 // Popup the GUI...
91 new MyMainFrame(gClient->GetRoot(), 350, 80);
92}
@ kFixedWidth
Definition GuiTypes.h:387
@ kHorizontalFrame
Definition GuiTypes.h:382
#define h(i)
Definition RSha256.hxx:106
unsigned long ULong_t
Definition RtypesCore.h:55
unsigned int UInt_t
Definition RtypesCore.h:46
#define ClassDef(name, id)
Definition Rtypes.h:342
#define gClient
Definition TGClient.h:157
@ kLHintsCenterX
Definition TGLayout.h:25
@ kLHintsTop
Definition TGLayout.h:27
@ kLHintsExpandX
Definition TGLayout.h:30
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize MapSubwindows
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t SetWMSizeHints
The base class for composite widgets (menu bars, list boxes, etc.).
Definition TGFrame.h:287
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
Definition TGFrame.cxx:1117
This class describes layout hints used by the layout classes.
Definition TGLayout.h:50
Defines top level windows that interact with the system Window Manager.
Definition TGFrame.h:397
Yield an action as soon as it is clicked.
Definition TGButton.h:142
A composite frame that layout their children in vertical way.
Definition TGFrame.h:374
ROOT GUI Window base class.
Definition TGWindow.h:23