class Fl_Group


Class Hierarchy

Include Files

Description

The Fl_Group class is the FLTK container widget. It maintains an array of child widgets. These children can themselves be any widget including Fl_Group. The most important subclass of Fl_Group is Fl_Window, however groups can also be used to control radio buttons or to enforce resize behavior.

Methods

Fl_Group::Fl_Group(int x, int y, int w, int h, const char *label = 0)

Creates a new Fl_Group widget using the given position, size, and label string. The default boxtype is FL_NO_BOX.

virtual Fl_Group::~Fl_Group()

The destructor also deletes all the children. This allows a whole tree to be deleted at once, without having to keep a pointer to all the children in the user code. A kludge has been done so the Fl_Group and all of it's children can be automatic (local) variables, but you must declare the Fl_Groupfirst, so that it is destroyed last.

void Fl_Group::add(Fl_Widget &w)
void Fl_Group::add(Fl_Widget *w)

Adds a widget to the group at the end of the child array.

Fl_Group &Fl_Group::add_resizable(Fl_Widget &box)

Adds a widget to the group and makes it the resizable widget.

const Fl_Widget **Fl_Group::array() const

Returns a pointer to the array of children. This pointer can change when children are added or removed!

void Fl_Group::begin()

begin() sets the current group so you can build the widget tree by just constructing the widgets. begin() is automatically called by the constructor for Fl_Group (and thus for Fl_Window as well). begin() does current(this).

Don't forget to end() the group or window!

Fl_Widget *Fl_Group::child(int n) const

Returns child n, where 0 <= n < children().

int Fl_Group::children() const

Returns how many child widgets the group has.

static Fl_Group *Fl_Group::current()
static void Fl_Group::current(Fl_Group *w)

current() returns the currently active group in the widget tree. To prevent widgets from being added to a group, call current() with a NULL group.

void Fl_Group::end()

end() does current(this->parent()). Any new widgets added to the widget tree will be added to the parent of the group.

int Fl_Group::find(const Fl_Widget *w) const
int Fl_Group::find(const Fl_Widget &w) const

Searches the child array for the widget and returns the index. Returns children() if the widget is NULL or not found.

void Fl_Group::insert(Fl_Widget &w, int n)
void Fl_Group::insert(Fl_Widget &w, Fl_Widget *beforethis)

Inserts a widget into the child array. It is put at index n which must be less or equal to children(). The second version does a find(beforethis) and inserts using that index.

void Fl_Group::remove(Fl_Widget &w)

Removes a widget from the group. This does nothing if the widget is not currently a child of this group.

void Fl_Group::resizable(Fl_Widget *box)
void Fl_Group::resizable(Fl_Widget &box)
Fl_Widget *Fl_Group::resizable() const

The resizable widget defines the resizing box for the group. When the group is resized it calculates a new size and position for all of its children. Widgets that are horizontally or vertically inside the dimensions of the box are scaled to the new size. Widgets outside the box are moved.

In these examples the gray area is the resizable:

  

The resizable may be set to the group itself (this is the default value for an Fl_Group, although NULL is the default for an Fl_Window), in which case all the contents are resized. If the resizable is NULL then all widgets remain a fixed size and distance from the top-left corner.

It is possible to achieve any type of resize behavior by using an invisible Fl_Box as the resizable and/or by using a hierarchy of child Fl_Group's.