ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/kgsueme/gamelist.pl
Revision: 1.24
Committed: Wed Jun 2 04:39:07 2004 UTC (20 years ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.23: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 pcg 1.1 package gamelist;
2    
3 pcg 1.9 use KGS::Constants;
4    
5 pcg 1.20 use Glib::Object::Subclass
6     Gtk2::VPaned;
7 pcg 1.1
8     sub new {
9 pcg 1.20 my ($class, %arg) = @_;
10     my $self = $class->Glib::Object::new;
11     $self->{$_} = delete $arg{$_} for keys %arg;
12 pcg 1.1
13 pcg 1.20 $self->signal_connect (destroy => sub {
14     %{$_[0]} = ();
15     });
16    
17     $self->set(position_set => 1);
18 root 1.24 gtk::state $self, "gamelist::vpane", undef, position => 120;
19 pcg 1.1
20     $self->{model1} = new Gtk2::ListStore Glib::Scalar,
21     Glib::String, Glib::String, Glib::String, Glib::String, Glib::Int, Glib::String, Glib::String;
22 pcg 1.7 gtk::state $self->{model1}, "gamelist::model1", undef, modelsortorder => [4, 'descending'];
23 pcg 1.1
24 pcg 1.20 $self->add(my $sw = new Gtk2::ScrolledWindow);
25 pcg 1.1 $sw->set_policy("never", "always");
26     $sw->add($self->{view1} = new Gtk2::TreeView $self->{model1});
27 pcg 1.16 $self->{view1}->set (rules_hint => 1, search_column => 2);
28 pcg 1.1
29     $self->{model2} = new Gtk2::ListStore Glib::Scalar,
30 pcg 1.2 Glib::String, Glib::String, Glib::String, Glib::String, Glib::Int,
31     Glib::String, Glib::String, Glib::Int, Glib::Int, Glib::Int, Glib::String;
32 pcg 1.7 gtk::state $self->{model2}, "gamelist::model1", undef, modelsortorder => [4, 'descending'];
33 pcg 1.1
34 pcg 1.20 $self->add(my $sw = new Gtk2::ScrolledWindow);
35 pcg 1.1 $sw->set_policy("never", "always");
36     $sw->add($self->{view2} = new Gtk2::TreeView $self->{model2});
37     $self->{view2}->set_search_column(1);
38 pcg 1.16 $self->{view2}->set (rules_hint => 1, search_column => 2);
39 pcg 1.1
40     for my $view ($self->{view1}, $self->{view2}) {
41     push @{$self->{rlcolumns}}, my $column =
42     Gtk2::TreeViewColumn->new_with_attributes ("Room", $gtk::text_renderer, text => 1);
43     $column->set_sort_column_id(1);
44     $column->set(resizable => 1);
45     $column->set(sizing => 'fixed');
46     gtk::state $column, "gamelist::model::Room", undef, column_size => 80;
47     $view->append_column ($column);
48    
49     push @{$self->{rlcolumns}}, my $column =
50 pcg 1.3 Gtk2::TreeViewColumn->new_with_attributes ("T", $gtk::text_renderer, text => 2);
51 pcg 1.1 $column->set_sort_column_id(2);
52 pcg 1.3 $column->set(sizing => 'grow-only');
53 pcg 1.1 $view->append_column ($column);
54    
55     push @{$self->{rlcolumns}}, my $column =
56     Gtk2::TreeViewColumn->new_with_attributes ("Owner", $gtk::text_renderer, text => 3);
57     $column->set_sort_column_id(3);
58     $column->set(resizable => 1);
59     $column->set(sizing => 'fixed');
60     gtk::state $column, "gamelist::model::Owner", undef, column_size => 100;
61     $view->append_column ($column);
62    
63     push @{$self->{rlcolumns}}, my $column =
64 pcg 1.2 Gtk2::TreeViewColumn->new_with_attributes ("Rk", $gtk::text_renderer, text => 4);
65 pcg 1.1 $column->set_sort_column_id(5);
66 pcg 1.3 $column->set(sizing => 'grow-only');
67 pcg 1.1 $view->append_column ($column);
68 pcg 1.2 }
69 pcg 1.1
70 pcg 1.2 push @{$self->{rlcolumns}}, my $column =
71     Gtk2::TreeViewColumn->new_with_attributes ("Info", $gtk::text_renderer, text => 6);
72     $column->set(resizable => 1);
73 pcg 1.3 $column->set(sizing => 'autosize');
74 pcg 1.2 gtk::state $column, "gamelist::model::Info", undef, column_size => 80;
75     $self->{view1}->append_column ($column);
76 pcg 1.1
77     push @{$self->{rlcolumns}}, my $column =
78     Gtk2::TreeViewColumn->new_with_attributes ("Notes", $gtk::text_renderer, text => 7);
79     $column->set(resizable => 1);
80 pcg 1.3 $column->set(sizing => 'autosize');
81 pcg 1.1 gtk::state $column, "gamelist::model::Notes", undef, column_size => 200;
82     $self->{view1}->append_column ($column);
83    
84     ###########
85    
86     push @{$self->{rlcolumns}}, my $column =
87 pcg 1.2 Gtk2::TreeViewColumn->new_with_attributes ("Opponent", $gtk::text_renderer, text => 6);
88 pcg 1.4 $column->set(resizable => 1);
89 pcg 1.2 $column->set(sizing => 'fixed');
90     gtk::state $column, "gamelist::model::Opponent", undef, column_size => 120;
91     $self->{view2}->append_column ($column);
92    
93     push @{$self->{rlcolumns}}, my $column =
94     Gtk2::TreeViewColumn->new_with_attributes ("Rk", $gtk::text_renderer, text => 7);
95     $column->set_sort_column_id(8);
96 pcg 1.3 $column->set(sizing => 'grow-only');
97 pcg 1.2 $self->{view2}->append_column ($column);
98    
99     push @{$self->{rlcolumns}}, my $column =
100     Gtk2::TreeViewColumn->new_with_attributes ("Mv", $gtk::int_renderer, text => 9);
101 pcg 1.5 $column->set_sort_column_id(9);
102 pcg 1.3 $column->set(sizing => 'grow-only');
103 pcg 1.1 $self->{view2}->append_column ($column);
104    
105     push @{$self->{rlcolumns}}, my $column =
106 pcg 1.2 Gtk2::TreeViewColumn->new_with_attributes ("Ob", $gtk::int_renderer, text => 10);
107 pcg 1.5 $column->set_sort_column_id(10);
108 pcg 1.3 $column->set(sizing => 'grow-only');
109 pcg 1.1 $self->{view2}->append_column ($column);
110    
111 pcg 1.2 push @{$self->{rlcolumns}}, my $column =
112     Gtk2::TreeViewColumn->new_with_attributes ("Info", $gtk::text_renderer, text => 11);
113     $column->set(resizable => 1);
114 pcg 1.3 $column->set(sizing => 'autosize');
115 pcg 1.2 gtk::state $column, "gamelist::model::Info", undef, column_size => 120;
116     $self->{view2}->append_column ($column);
117    
118 pcg 1.1 ###########
119    
120     $self->{view1}->signal_connect(row_activated => sub {
121     my ($widget, $path, $column) = @_;
122     my $game = $self->{model1}->get ($self->{model1}->get_iter ($path), 0);
123 pcg 1.20 $self->{app}->open_game (%$game); # challenging private game sis allowed
124 pcg 1.6 1;
125 pcg 1.1 });
126    
127     $self->{view2}->signal_connect(row_activated => sub {
128     my ($widget, $path, $column) = @_;
129     my $game = $self->{model2}->get ($self->{model2}->get_iter ($path), 0);
130 pcg 1.21 $self->{app}->open_game (%$game) unless $game->is_private;
131 pcg 1.6 1;
132 pcg 1.1 });
133    
134     $self;
135     }
136    
137     sub update {
138 pcg 1.6 my ($self, $room, $add, $update, $remove) = @_;
139 pcg 1.1
140     $self->{games}{$room->{name}} = $room->{games};
141    
142 pcg 1.6 my $m1 = $self->{model1};
143     my $m2 = $self->{model2};
144    
145 pcg 1.12 for (@$remove) {
146 pcg 1.8 (delete $_->{model})->remove (delete $_->{iter}) if $_->{model};
147 pcg 1.6 }
148    
149     for (@$add, @$update) {
150     my $owner = $_->owner;
151 pcg 1.19 if ($_->is_inprogress) {
152 pcg 1.15 (delete $_->{model})->remove (delete $_->{iter}) if $_->{model} && $_->{model} != $m2;#d#
153 pcg 1.8 $_->{model} = $m2;
154     $m2->set ($_->{iter} ||= $m2->append,
155     0, $_,
156     1, $room->{name},
157 pcg 1.17 2, $_->type_char,
158 pcg 1.8 3, $owner->{name},
159     4, $owner->rank_string,
160 pcg 1.22 5, $owner->rank_number,
161 pcg 1.8 6, $_->opponent_string,
162 pcg 1.23 7, $_->{black}->rank_string,
163     8, $_->{black}->rank_number,
164 pcg 1.8 9, $_->moves,
165     10, $_->{observers},
166     11, $_->rules,
167     );
168     } else {
169 pcg 1.15 (delete $_->{model})->remove (delete $_->{iter}) if $_->{model} && $_->{model} != $m1;#d#
170 pcg 1.6 $_->{model} = $m1;
171     $m1->set ($_->{iter} ||= $m1->append,
172 pcg 1.8 0, $_,
173     1, $room->{name},
174 pcg 1.17 2, $_->type_char,
175 pcg 1.8 3, $owner->{name},
176     4, $owner->rank_string,
177 pcg 1.22 5, $owner->rank_number,
178 pcg 1.8 6, $_->rules,
179     7, $_->{notes},
180 pcg 1.6 );
181 pcg 1.1 }
182 pcg 1.6 }
183 pcg 1.1 }
184    
185     1;
186