The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use strict;
use warnings;

use Tickit;
use Tickit::Widget::Table;
use Tickit::Widget::VBox;
use Tickit::Widget::Static;

my $t = Tickit->new;

my $vbox = Tickit::Widget::VBox->new;
my $static = Tickit::Widget::Static->new(
	text => 'Select items with space, and update this text with enter',
	align => 'left',
	valign => 'middle'
);
$vbox->add($static);
my $tbl = Tickit::Widget::Table->new(
	multi_select => 1,
	on_activate => sub {
		my ($indices, $items) = @_;
		if(@$items) {
			$static->set_text("Selected these: " . join(', ', map $_->[0], @$items));
		} else {
			$static->set_text("No items selected");
		}
	},
	columns => [
		{ label => 'Name' },
		{ label => 'Value', width => 0 },
	]
);
my $idx = 0;
$tbl->adapter->push([
	map [ $_ => $idx++ ], qw(cat dog lemming rabbit gnu springbok)
]);
$vbox->add($tbl, expand => 1);
$t->set_root_widget($vbox);
$t->run;