KGS
view release on metacpan or search on metacpan
kgsueme/gamelist.pl view on Meta::CPAN
push @{$self->{rlcolumns}}, my $column =
Gtk2::TreeViewColumn->new_with_attributes ("Notes", $gtk::text_renderer, text => 7);
$column->set(resizable => 1);
$column->set(sizing => 'autosize');
gtk::state $column, "gamelist::model::Notes", undef, column_size => 200;
$self->{view1}->append_column ($column);
###########
push @{$self->{rlcolumns}}, my $column =
Gtk2::TreeViewColumn->new_with_attributes ("Opponent", $gtk::text_renderer, text => 6);
$column->set(resizable => 1);
$column->set(sizing => 'fixed');
gtk::state $column, "gamelist::model::Opponent", undef, column_size => 120;
$self->{view2}->append_column ($column);
push @{$self->{rlcolumns}}, my $column =
Gtk2::TreeViewColumn->new_with_attributes ("Rk", $gtk::text_renderer, text => 7);
$column->set_sort_column_id(8);
$column->set(sizing => 'grow-only');
$self->{view2}->append_column ($column);
push @{$self->{rlcolumns}}, my $column =
Gtk2::TreeViewColumn->new_with_attributes ("Mv", $gtk::int_renderer, text => 9);
$column->set_sort_column_id(9);
$column->set(sizing => 'grow-only');
$self->{view2}->append_column ($column);
push @{$self->{rlcolumns}}, my $column =
Gtk2::TreeViewColumn->new_with_attributes ("Ob", $gtk::int_renderer, text => 10);
$column->set_sort_column_id(10);
$column->set(sizing => 'grow-only');
$self->{view2}->append_column ($column);
push @{$self->{rlcolumns}}, my $column =
Gtk2::TreeViewColumn->new_with_attributes ("Info", $gtk::text_renderer, text => 11);
$column->set(resizable => 1);
$column->set(sizing => 'autosize');
gtk::state $column, "gamelist::model::Info", undef, column_size => 120;
$self->{view2}->append_column ($column);
###########
$self->{view1}->signal_connect(row_activated => sub {
my ($widget, $path, $column) = @_;
my $game = $self->{model1}->get ($self->{model1}->get_iter ($path), 0);
$self->{app}->open_game (%$game); # challenging private game sis allowed
1;
});
$self->{view2}->signal_connect(row_activated => sub {
my ($widget, $path, $column) = @_;
my $game = $self->{model2}->get ($self->{model2}->get_iter ($path), 0);
$self->{app}->open_game (%$game) unless $game->is_private;
1;
});
$self;
}
sub update {
my ($self, $room, $add, $update, $remove) = @_;
$self->{games}{$room->{name}} = $room->{games};
my $m1 = $self->{model1};
my $m2 = $self->{model2};
for (@$remove) {
(delete $_->{model})->remove (delete $_->{iter}) if $_->{model};
}
for (@$add, @$update) {
my $owner = $_->owner;
if ($_->is_inprogress) {
(delete $_->{model})->remove (delete $_->{iter}) if $_->{model} && $_->{model} != $m2;#d#
$_->{model} = $m2;
$m2->set ($_->{iter} ||= $m2->append,
0, $_,
1, $room->{name},
2, $_->type_char,
3, $owner->{name},
4, $owner->rank_string,
5, $owner->rank_number,
6, $_->opponent_string,
7, $_->{black}->rank_string,
8, $_->{black}->rank_number,
9, $_->moves,
10, $_->{observers},
11, $_->rules,
);
} else {
(delete $_->{model})->remove (delete $_->{iter}) if $_->{model} && $_->{model} != $m1;#d#
$_->{model} = $m1;
$m1->set ($_->{iter} ||= $m1->append,
0, $_,
1, $room->{name},
2, $_->type_char,
3, $owner->{name},
4, $owner->rank_string,
5, $owner->rank_number,
6, $_->rules,
7, $_->{notes},
);
}
}
}
1;
( run in 0.899 second using v1.01-cache-2.11-cpan-a49fcb8fa48 )