NAME
Tickit::Widget::GridBox
- lay out a set of child widgets in a grid
SYNOPSIS
use Tickit;
use Tickit::Widget::GridBox;
use Tickit::Widget::Static;
my $gridbox = Tickit::Widget::GridBox->new(
style => {
col_spacing => 2,
row_spacing => 1,
},
children => [
[ Tickit::Widget::Static->new( text => "top left" ),
Tickit::Widget::Static->new( text => "top right" ) ],
[ Tickit::Widget::Static->new( text => "bottom left" ),
Tickit::Widget::Static->new( text => "bottom right" ) ],
],
);
Tickit->new( root => $gridbox )->run;
DESCRIPTION
This container widget holds a set of child widgets distributed in a regular grid shape across rows and columns.
STYLE
The default style pen is used as the widget pen.
The following style keys are used:
- col_spacing => INT
-
The number of columns of spacing between columns
- row_spacing => INT
-
The number of rows of spacing between rows
CONSTRUCTOR
$gridbox = Tickit::Widget::GridBox->new( %args )
Constructs a new Tickit::Widget::GridBox
object.
Takes the following named arguments:
- children => ARRAY[ARRAY[Tickit::Widget]]
-
Optional. If present, should be a 2D ARRAYref of ARRAYrefs containing the
Tickit::Widget
children to display in the grid. They are all added with no additional options.
METHODS
$gridbox->add( $row, $col, $child, %opts )
Sets the child widget to display in the given grid cell. Cells do not need to be explicitly constructed; the grid will automatically expand to the size required. This method can also be used to replace an existing child at the given cell location. To remove a cell entirely, use the remove
method.
The following options are recognised:
- col_expand => INT
- row_expand => INT
-
Values for the
expand
setting for this column or row of the table. The largestexpand
setting for any cell in a given column or row sets the value used to distribute space to that column or row.
$gridbox->remove( $row, $col )
Removes the child widget on display in the given cell. May shrink the grid if this was the last child widget in the given row or column.
AUTHOR
Paul Evans <leonerd@leonerd.org.uk>