Tickit::ContainerWidget - abstract base class for widgets that contain other widgets
Tickit::ContainerWidget
TODO
This class acts as an abstract base class for widgets that contain at leaast one other widget object. It provides storage for a hash of "options" associated with each child widget.
Sets the child widget's parent, stores the options for the child, and calls the children_changed method. The concrete implementation will have to implement storage of this child widget.
children_changed
Removes the child widget's parent, and calls the children_changed method. The concrete implementation will have to remove this child from its storage.
Returns the options currently set for the given child as a key/value list in list context, or as a HASH reference in scalar context. The HASH reference in scalar context is the actual hash used to store the options - modifications to it will be preserved.
Sets new options on the given child. Any options whose value is given as undef are deleted.
undef
Returns a child widget. The $how argument determines how this is done, relative to the child widget given by $other:
$how
$other
The first child returned by children ($other is ignored)
children
The last child returned by children ($other is ignored)
The child widget just before $other in the order given by children
The child widget just after $other in the order given by children
Takes the following named arguments:
Optional. If defined, gives a filter function to filter the list of children before searching for the required one. Will be invoked once per child, with the child widget set as $_; it should return a boolean value to indicate if that child should be included in the search.
$_
Moves the input focus to the next widget in the widget tree, by searching in the direction given by $how relative to the widget given by $other (which must be an immediate child of $widget).
$widget
The direction $how must be one of the following four values:
Moves focus to the first or last child widget that can take focus. Recurses into child widgets that are themselves containers. $other is ignored.
Moves focus to the next or previous child widget in tree order from the one given by $other. Recurses into child widgets that are themselves containers, and out into parent containers.
These searches will wrap around the widget tree; moving after the last node in the widget tree will move to the first, and vice versa.
after
This differs from find_child in that it performs a full tree search through the widget tree, considering parents and children. If a before or after search falls off the end of one node, it will recurse up to its parent and search within the next child, and so on.
find_child
before
Usually this would be used via the widget itself:
$self->parent->focus_next( $how => $self );
Required. Should return a list of all the contained child widgets. The order is not specified, but should be in some stable order that makes sense given the layout of the widget's children.
This method is used by window_lost to remove the windows from all the child widgets automatically, and by find_child to obtain a child relative to another given one.
window_lost
Optional. An empty render method is provided for the case where the widget is purely a layout container that does not directly draw to its window. If the container requires drawing, this method may be overridden. Since the default implementation is empty, there is no need for a subclass to SUPER call it.
render
SUPER
Optional. If implemented, this method will be called after any change of the contained child widgets or their options. Typically this will be used to set windows on them by sub-dividing the window of the parent.
If not overridden, the base implementation will call reshape.
reshape
Optional. If implemented, this method will be called after a child widget changes or may have changed its size requirements. Typically this will be used to adjusts the windows allocated to children.
Paul Evans <leonerd@leonerd.org.uk>
To install Tickit, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Tickit
CPAN shell
perl -MCPAN -e shell install Tickit
For more information on module installation, please visit the detailed CPAN module installation guide.