TGXYLayout
class description - source file - inheritance tree
public:
TGXYLayout TGXYLayout(TGCompositeFrame* main)
TGXYLayout TGXYLayout(const TGXYLayout&)
void ~TGXYLayout()
static TClass* Class()
virtual TGDimension GetDefaultSize() const
virtual TClass* IsA() const
virtual void Layout()
void NewSize()
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
protected:
TList* fList list of frames to arrange
TGCompositeFrame* fMain container frame
Bool_t fFirst flag to determine the first call of Layout()
UInt_t fFirstWidth original width of the frame fMain
UInt_t fFirstHeight original height of the fram fMain
Int_t fTWidth text width of a default character "1234567890" / 10
Int_t fTHeight text height
TGXYLayout
Is a layout manager where the position and the size of each widget
in the frame are defined by X / Y - coordinates. The coordinates
for each widget are defined by the TGXYLayoutHints. Therefore it
is not possible to share a layout hint for several widgets.
The coordinates (X, Y) and the size (W, H) are defined in units
of the size of a typical character. Also the size of the
TGCompositeFrame for which a TGXYLayout manager is used has to be
defined in its constructor in units of the size of a character!
It is not possible to use any other layout hint than the
TGXYLayoutHints for this layout manager!
The rubberFlag in the constructor of the TGLXYLayoutHins defines
how the position and the size of a widget is recalculated if the
size of the frame is increased:
- kLRubberX: The X - position (left edge) is increased by the same
factor as the width of the frame increases.
- kLRubberY: The Y - position (upper edge) is increased by the same
factor as the height of the frame increases.
- kLRubberW: The width of the widget is increased by the same
factor as the width of the frame increases.
- kLRubberY: The height of the widget is increased by the same
factor as the height of the frame increases.
But the size never becomes smaller than defined by the
TGXYLayoutHints and the X and Y coordinates becomes never smaller
than defined by the layout hints.
TGXYLayoutHints
This layout hint must be used for the TGXYLouyout manager!
Example how to use this layout manager:
TGMyFrame::TGMyFrame()
: TGMainFrame(gClient->GetRoot(), 30, 12)
// frame is 30 character long and 12 character heigh
{
SetLayoutManager(new TGXYLayout(this));
// create a button of size 8 X 1.8 at position 20 / 1
TGTextButton * button;
button = new TGTextButton(this, "&Apply", 1);
AddFrame(button, new TGXYLayoutHints(20, 1, 8, 1.8));
// create a listbox of size 18 X 10 at position 1 / 1.
// The height will increase if the frame height increases
TGListBox * listBox;
listBox = new TGListBox(this, 2);
AddFrame(listBox, new TGXYLayoutHints(1, 1, 18, 10,
TGXYLayoutHints::kLRubberX |
TGXYLayoutHints::kLRubberY |
TGXYLayoutHints::kLRubberH ));
.
.
.
}
Normaly there is one layout hint per widget. Therefore these
can be deleted like in the following example in the desctuctor
of the frame:
TGMyFrame::~TGMyFrame()
{
// Destructor, deletes all frames and their layout hints.
TGFrameElement *ptr;
// delete all frames and layout hints
if (fList) {
TIter next(fList);
while ((ptr = (TGFrameElement *) next())) {
if (ptr->fLayout)
delete ptr->fLayout;
if (ptr->fFrame)
delete ptr->fFrame;
}
}
}
TGXYLayout(TGCompositeFrame *main)
Constructor. The main is the frame for which this layout manager works.
void Layout()
Recalculates the postion and the size of all widgets.
TGDimension GetDefaultSize() const
Returns the original size of the frame.
Inline Functions
void NewSize()
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
TGXYLayout TGXYLayout(const TGXYLayout&)
void ~TGXYLayout()
Author: Reiner Rohlfs 24/03/2002
Last update: root/gui:$Name: $:$Id: TGXYLayout.cxx,v 1.1 2002/08/08 16:54:11 rdm Exp $
Copyright (C) 1995-2001, Rene Brun, Fons Rademakers and Reiner Rohlfs *
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.