NAME

Tickit::Widget::Tabbed - provide tabbed window support

SYNOPSIS

use Tickit::Widget::Tabbed;
my $tabbed = Tickit::Widget::Tabbed->new;
$tabbed->add_tab(Tickit::Widget::Static->new(text => 'some text'), label => 'First tab');
$tabbed->add_tab(Tickit::Widget::Static->new(text => 'some text'), label => 'Second tab');

DESCRIPTION

Provides a container that operates as a tabbed window.

Subclass of Tickit::ContainerWidget.

STYLE

The default style pen is used as the widget pen. The following style pen prefixes are also used:

ribbon => PEN

The pen used for the ribbon

active => PEN

The pen attributes used for the active tab on the ribbon

more => PEN

The pen used for "more" ribbon scroll markers

The following style keys are used:

more_left => STRING
more_right => STRING

The text used to indicate that there is more content scrolled to the left or right, respectively, in the ribbon

METHODS

new

Instantiate a new tabbed window.

Takes the following named parameters:

  • tab_position - (optional) location of the tabs, should be one of left, top, right, bottom.

tab_position

Accessor for the tab position (top, left, right, bottom).

active_tab_index

Returns the 0-based index of the currently-active tab.

active_tab

Returns the currently-active tab as a tab object. See below.

active_tab_widget

Returns the widget in the currently active tab.

add_tab

Add a new tab to this tabbed widget. Returns an object representing the tab; see "METHODS ON TAB OBJECTS" below.

First parameter is the widget to use.

Remaining form a hash:

label - label to show on the new tab

remove_tab

Remove tab given by 0-based index or tab object.

move_tab

Move tab given by 0-based index or tab object forward the given number of positions.

activate_tab

Switch to the given tab; by 0-based index, or object.

next_tab

Switch to the next tab. This may be bound as a key action.

prev_tab

Switch to the previous tab. This may be bound as a key action.

METHODS ON TAB OBJECTS

The following methods may be called on the objects returned by add_tab or active_tab.

index

Returns the 0-based index of this tab

widget

Returns the Tickit::Widget contained by this tab

label

Returns the current label text

set_label

Set new label text for the tab

is_active

Returns true if this tab is the currently active one

activate

Activate this tab

set_on_activated

Set a callback or method name to invoke when the tab is activated

set_on_deactivated

Set a callback or method name to invoke when the tab is deactivated

pen

Returns the Tickit::Pen used to draw the label.

Pen observers are no longer registered on the return value; to set a different pen on the tab, use the set_pen method instead.

CUSTOM TAB CLASS

Rather than use the default built-in object class for tab objects, a Tickit::Widget::Tabbed or subclass thereof can return objects in another class instead. This is most useful for subclasses of the tabbed widget itself.

To perform this, create a subclass of Tickit::Widget::Tabbed::Tab. Since version 0.022 this module is implemented using Object::Pad, so you can rely on having that available for implementing a subclass:

use Object::Pad;

class MyCustomTabClass extends Tickit::Widget::Tabbed::Tab;

BUILD {
       ...
}

Arrange for this class to be used by the tabbed widget either by passing its name as a constructor argument called tab_class, or by overriding a method called TAB_CLASS.

my $tabbed = Tickit::Widget::Tabbed->new(
        tab_class => "MyCustomTabClass"
);

or

use constant TAB_CLASS => "MyCustomTabClass";

CUSTOM RIBBON CLASS

Rather than use the default built-in object class for the ribbon object, a Tickit::Widget::Tabbed or subclass thereof can use an object in another subclass instead. This is most useful for subclasses of the tabbed widget itself.

For more detail, see the documentation in Tickit::Widget::Tabbed::Ribbon.

SEE ALSO

AUTHOR

Tom Molesworth <cpan@entitymodel.com>, Paul Evans <leonerd@leonerd.org.uk>

LICENSE

Copyright Tom Molesworth 2011; Paul Evans 2014. Licensed under the same terms as Perl itself.