1 | package gamelist; |
1 | package gamelist; |
2 | |
2 | |
3 | use KGS::Constants; |
3 | use KGS::Constants; |
4 | |
4 | |
5 | use base gtk::widget; |
5 | use Glib::Object::Subclass |
|
|
6 | Gtk2::VPaned; |
6 | |
7 | |
7 | sub new { |
8 | sub new { |
8 | my $class = shift; |
9 | my ($class, %arg) = @_; |
9 | my $self = $class->SUPER::new(@_); |
10 | my $self = $class->Glib::Object::new; |
|
|
11 | $self->{$_} = delete $arg{$_} for keys %arg; |
10 | |
12 | |
11 | $self->{widget} = new Gtk2::VPaned; |
13 | $self->signal_connect (destroy => sub { |
|
|
14 | %{$_[0]} = (); |
|
|
15 | }); |
|
|
16 | |
12 | $self->{widget}->set(position_set => 1); |
17 | $self->set(position_set => 1); |
13 | gtk::state $self->{widget}, "gamelist::vpane", undef, position => 60; |
18 | gtk::state $self, "gamelist::vpane", undef, position => 60; |
14 | |
19 | |
15 | $self->{model1} = new Gtk2::ListStore Glib::Scalar, |
20 | $self->{model1} = new Gtk2::ListStore Glib::Scalar, |
16 | Glib::String, Glib::String, Glib::String, Glib::String, Glib::Int, Glib::String, Glib::String; |
21 | Glib::String, Glib::String, Glib::String, Glib::String, Glib::Int, Glib::String, Glib::String; |
17 | gtk::state $self->{model1}, "gamelist::model1", undef, modelsortorder => [4, 'descending']; |
22 | gtk::state $self->{model1}, "gamelist::model1", undef, modelsortorder => [4, 'descending']; |
18 | |
23 | |
19 | $self->{widget}->add(my $sw = new Gtk2::ScrolledWindow); |
24 | $self->add(my $sw = new Gtk2::ScrolledWindow); |
20 | $sw->set_policy("never", "always"); |
25 | $sw->set_policy("never", "always"); |
21 | $sw->add($self->{view1} = new Gtk2::TreeView $self->{model1}); |
26 | $sw->add($self->{view1} = new Gtk2::TreeView $self->{model1}); |
22 | $self->{view1}->set (rules_hint => 1, search_column => 2); |
27 | $self->{view1}->set (rules_hint => 1, search_column => 2); |
23 | |
28 | |
24 | $self->{model2} = new Gtk2::ListStore Glib::Scalar, |
29 | $self->{model2} = new Gtk2::ListStore Glib::Scalar, |
25 | Glib::String, Glib::String, Glib::String, Glib::String, Glib::Int, |
30 | Glib::String, Glib::String, Glib::String, Glib::String, Glib::Int, |
26 | Glib::String, Glib::String, Glib::Int, Glib::Int, Glib::Int, Glib::String; |
31 | Glib::String, Glib::String, Glib::Int, Glib::Int, Glib::Int, Glib::String; |
27 | gtk::state $self->{model2}, "gamelist::model1", undef, modelsortorder => [4, 'descending']; |
32 | gtk::state $self->{model2}, "gamelist::model1", undef, modelsortorder => [4, 'descending']; |
28 | |
33 | |
29 | $self->{widget}->add(my $sw = new Gtk2::ScrolledWindow); |
34 | $self->add(my $sw = new Gtk2::ScrolledWindow); |
30 | $sw->set_policy("never", "always"); |
35 | $sw->set_policy("never", "always"); |
31 | $sw->add($self->{view2} = new Gtk2::TreeView $self->{model2}); |
36 | $sw->add($self->{view2} = new Gtk2::TreeView $self->{model2}); |
32 | $self->{view2}->set_search_column(1); |
37 | $self->{view2}->set_search_column(1); |
33 | $self->{view2}->set (rules_hint => 1, search_column => 2); |
38 | $self->{view2}->set (rules_hint => 1, search_column => 2); |
34 | |
39 | |
… | |
… | |
113 | ########### |
118 | ########### |
114 | |
119 | |
115 | $self->{view1}->signal_connect(row_activated => sub { |
120 | $self->{view1}->signal_connect(row_activated => sub { |
116 | my ($widget, $path, $column) = @_; |
121 | my ($widget, $path, $column) = @_; |
117 | my $game = $self->{model1}->get ($self->{model1}->get_iter ($path), 0); |
122 | my $game = $self->{model1}->get ($self->{model1}->get_iter ($path), 0); |
118 | $self->{app}->open_game (%$game); |
123 | $self->{app}->open_game (%$game); # challenging private game sis allowed |
119 | 1; |
124 | 1; |
120 | }); |
125 | }); |
121 | |
126 | |
122 | $self->{view2}->signal_connect(row_activated => sub { |
127 | $self->{view2}->signal_connect(row_activated => sub { |
123 | my ($widget, $path, $column) = @_; |
128 | my ($widget, $path, $column) = @_; |
124 | my $game = $self->{model2}->get ($self->{model2}->get_iter ($path), 0); |
129 | my $game = $self->{model2}->get ($self->{model2}->get_iter ($path), 0); |
125 | $self->{app}->open_game (%$game); |
130 | $self->{app}->open_game (%$game) unless $game->option == GAMEOPT_PRIVATE; |
126 | 1; |
131 | 1; |
127 | }); |
132 | }); |
128 | |
133 | |
129 | $self; |
134 | $self; |
130 | } |
135 | } |