NAME

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

VERSION

version 0.002

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(
 	'First entry',
	'Second column',
 );
 $table->add_row(
 	'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.

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_cell_action - coderef to execute when a cell is activated unless there is an action defined on the cell, row or column.

  • default_row_action - coderef to execute when a row is activated.

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

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.

highlight_row

Returns the currently-highlighted row.

highlight_row_index

Index of the currently-highlighted row.

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.

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_quit

Handle a quit request. This is clearly not the place to have code like this.

on_switch_window

uh, no. you didn't see this.

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.

AUTHOR

Tom Molesworth <cpan@entitymodel.com>

LICENSE

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