The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Tickit::Widget::Table - tabular widget support for Tickit

VERSION

version 0.100

SYNOPSIS

 use Tickit::Widget::HBox;
 use Tickit::Widget::Table;
 # Create the widget
 my $table = Tickit::Widget::Table->new(
   padding => 1,
   columns => [
     { label => 'First column', align => 'center', width => 'auto' },
     { label => 'Second column', align => 'right', width => 'auto' },
   ],
 );
 $table->add_row(
   data => [
     'First entry',
     'Second column',
   ]
 );
 $table->add_row(
   data => [
     'Second entry',
     'More data',
   ]
 );
 # Put it in something
 my $container = Tickit::Widget::HBox->new;
 $container->add($table, expand => 1);

DESCRIPTION

Basic support for table widgets. See examples/ in the main distribution for usage instructions.

Highlight mode

  • none - no highlight support

  • row - up/down keys move highlight between rows

  • column - left/right keys select the currently highlighted column

  • cell - individual cells can be highlighted

METHODS

new

Create a new table widget.

Takes the following named parameters:

  • columns - column definition arrayref, see "add_column" for the details

  • padding - amount of padding (in chars) to apply between columns

  • default_action - coderef to execute when a cell/row/column is activated, unless there is an action defined on that item already

  • header - flag to select whether a header is shown. If not provided it is assumed that a header is wanted.

  • highlight_mode - one of row (default), column, cell, defines how navigation and selection work

add_header_row

Adds a header row to the top of the table. Takes no parameters.

add_initial_columns

Populates initial columns from the given arrayref. Generally handled internally when passing columns in the constructor.

padding

Returns amount of padding between cells

lines

Number of rows.

cols

Number of screen columns.

rows

'rows' are the number of data rows we have in the table. That's one less than the total number of rows if we have a header row

columns

Number of columns in the table.

data_rows

Returns the rows containing data - this excludes the header row if there is one.

reposition_cursor

Put the cursor in the right place. Possibly used internally, probably of dubious utility.

header_row

Returns the header row if there is one.

set_highlighted_row

Highlight a row in the table. Only one row can be highlighted at a time, as opposed to selected rows.

set_highlighted_column

Highlight a row in the table. Only one row can be highlighted at a time, as opposed to selected rows.

set_highlighted_cell

Highlight a cell in the table. Only one cell can be highlighted at a time, as opposed to selected rows.

highlight_row

Returns currently-highlighted row, if we have one. In cell mode, returns the row corresponding to current cell highlight.

highlight_column

Returns currently-highlighted column, if we have one. In cell mode, returns the column corresponding to current cell highlight.

highlight_cell

highlighted_item

highlight_row_index

Index of the currently-highlighted row.

highlight_column_index

Index of the currently-highlighted column.

refit

Check current widths and apply width on columns we already have sufficient information for.

min_refit

Try to shrink columns down to minimum possible width if they're flexible. Typically used by "add_column" to allow the new column to fit properly.

get_column_width

Return the width for the given column, or undef if this column should be autosized.

column_list

Returns all columns for this table as a list.

add_column

Add a new column to the table, returning a Tickit::Widget::Table::Column instance.

update_highlight

add_row

Adds a new row of data to the table. This will instantiate a new Tickit::Widget::Table::Row and return it.

remove_row

Remove the given row.

clear_data

Clears any data for this table, leaving structure including header row intact.

window_gained

Once we have a window, we want to refit to ensure that all the child elements are given subwindows with appropriate geometry.

window_lost

When the main window is lost, we also clear all the subwindows that were created for children.

on_key

Key handling: convert some common key requests to events.

on_toggle_select_all

Select everything, unless everything is already selected in which case select nothing instead.

on_select

Toggle selection for this row.

on_key_insert

Should not be here.

on_key_delete

Should not be here.

on_cursor_up

Move to the row above.

on_cursor_home

Move to the top of the table.

on_cursor_end

Move to the end of the table.

on_cursor_pageup

Move several lines up.

on_cursor_down

Move one line down.

on_cursor_pagedown

Move several lines down.

on_cursor_left

Move to the item on the left.

on_cursor_right

Move to the item on the right.

highlight_mode

default_action

bind_key

Accessor/mutator for the on_key callback.

Returns $self when used as a mutator, or the current on_key value when called with no parameters.

on_highlight_changed

Accessor/mutator for the on_highlight_changed callback.

Returns $self when used as a mutator, or the current on_highlight_changed value when called with no parameters.

INHERITED METHODS

Tickit::Widget::VBox

get_child_base, get_total_quota, set_child_window

Tickit::Widget::LinearBox

add, child_opts, children, remove, render_to_rb, reshape, set_child, set_child_opts

Tickit::ContainerWidget

child_resized, children_changed, find_child, focus_next

Tickit::Widget

get_style_pen, get_style_text, get_style_values, key_focus_next_after, key_focus_next_before, on_pen_changed, parent, pen, redraw, resized, set_parent, set_pen, set_style, set_style_tag, set_window, style_classes, take_focus, window

AUTHOR

Tom Molesworth <cpan@entitymodel.com>

LICENSE

Copyright Tom Molesworth 2011-2013. Licensed under the same terms as Perl itself.