################################################
#!/usr/bin/perl
use strict;
use warnings;
use Gtk2 -init;
use Gtk2::Ex::Simple::List;
use Glib ':constants';
my %activity_list = (
O => 'One',
M => 'Two',
U => 'Five',
E => 'Three, Sir, Three!',
A => 'BOOM'
);
my %activity_order = ('O' => 'M', 'M' => 'U', 'U' => 'E', 'E' => 'A', 'A' => 'O');
my %activities_rev = reverse %activity_list;
my $win = Gtk2::Window->new;
$win->set_border_width (6);
$win->signal_connect (delete_event => sub { Gtk2->main_quit; });
my $tslist = Gtk2::Ex::Simple::List->new (
"Special column" => 'markup',
"Normal column" => 'text'
);
$win->add ($tslist);
$tslist->get_selection->set_mode ('single');
$tslist->set_reorderable(FALSE);
$tslist->set_column_editable (0, FALSE);
$tslist->set_column_editable (1, TRUE);
my $dtslist = $tslist->{data};
push @$dtslist, [ $activity_list{M}, "text" ], [ $activity_list{O}, "text2" ];
my @columns = $tslist->get_columns;
$tslist->signal_connect('button-release-event' => sub {
my ($self, $event) = @_;
my ($path, $column, $cell_x, $cell_y) = $tslist->get_path_at_pos ($event->x, $event->y ); # <------- !!!!!
if ($path) {
if ($column == $columns[0]) {
my $row = $path->to_string;
my $value = $dtslist->[$row][0];
$dtslist->[$row][0] = $activity_list{$activity_order{$activities_rev{$value}}};
}
}
});
$win->show_all;
Gtk2->main;
################################################