ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/kgsueme/bin/kgsueme
(Generate patch)

Comparing kgsueme/bin/kgsueme (file contents):
Revision 1.2 by pcg, Wed May 28 22:17:09 2003 UTC vs.
Revision 1.5 by pcg, Thu May 29 01:13:32 2003 UTC

11use IO::Socket::INET; 11use IO::Socket::INET;
12 12
13use Errno; 13use Errno;
14 14
15init Gtk; 15init Gtk;
16
17$HACK = 1; # do NEVER enable. ;)
16 18
17our $config; 19our $config;
18 20
19{ 21{
20 use Storable (); 22 use Storable ();
135 137
136 KGS::Listener::Debug->new->listen($self->{conn}); #d# debug only :) 138 KGS::Listener::Debug->new->listen($self->{conn}); #d# debug only :)
137 139
138 $self->listen($self->{conn}); 140 $self->listen($self->{conn});
139 141
142 $self->{roomlist} = new roomlist conn => $self->{conn};
143
140 $self->{window} = new Gtk::Window 'toplevel'; 144 $self->{window} = new Gtk::Window 'toplevel';
141 $self->{window}->set_title('kgsueme'); 145 $self->{window}->set_title('kgsueme');
142 ::state $self->{window}, "main::window", undef, window_size => [400, 100]; 146 ::state $self->{window}, "main::window", undef, window_size => [400, 100];
143 $self->{window}->signal_connect(delete_event => sub { main_quit Gtk }); 147 $self->{window}->signal_connect(delete_event => sub { main_quit Gtk });
144 148
145 $self->{window}->add(my $vbox = new Gtk::VBox); 149 $self->{window}->add(my $vbox = new Gtk::VBox);
146 150
147 $vbox->pack_start(($self->{buttonbox} = new Gtk::HButtonBox), 0, 1, 0); 151 $vbox->pack_start(($buttonbox = new Gtk::HButtonBox), 0, 1, 0);
152 $buttonbox->set_spacing(0);
148 153
149 my $button = sub { 154 my $button = sub {
150 $self->{buttonbox}->add(my $button = new Gtk::Button $_[0]); 155 $buttonbox->add(my $button = new Gtk::Button $_[0]);
151 signal_connect $button clicked => $_[1]; 156 signal_connect $button clicked => $_[1];
152 }; 157 };
153 158
154 $button->("Login", sub { 159 $button->("Login", sub { $self->login; });
155 $self->login; 160 $button->("Roomlist", sub { $self->{roomlist}->show; });
156 });
157 $button->("Roomlist", sub {
158 $self->{roomlist} ||= new roomlist conn => $self->{conn};
159 $self->{roomlist}->show;
160 });
161 $button->("Save Config & Layout", sub { ::save_state }); 161 $button->("Save Config & Layout", sub { ::save_state });
162 $button->("Quit", sub { main_quit Gtk });
162 163
163 $vbox->pack_start((my $hbox = new Gtk::HBox), 0, 1, 0); 164 $vbox->pack_start((my $hbox = new Gtk::HBox), 0, 1, 0);
164 165
165 $hbox->add(new Gtk::Label "Login"); 166 $hbox->add(new Gtk::Label "Login");
166 167
167 $hbox->add($self->{login} = new_with_max_length Gtk::Entry 12); 168 $hbox->add($self->{login} = new_with_max_length Gtk::Entry 12);
168 $self->{login}->set_text($::config->{login}); 169 $self->{login}->set_text($::config->{login});
170
171 if ($::HACK) {
172 $self->{login}->signal_connect(activate => sub {
173 $self->{conn}{name} = $self->{login}->get_text;
174 });
175 }
169 176
170 $hbox->add(new Gtk::Label "Password"); 177 $hbox->add(new Gtk::Label "Password");
171 $hbox->add($self->{password} = new Gtk::Entry); 178 $hbox->add($self->{password} = new Gtk::Entry);
172 $self->{password}->set_visibility(0); 179 $self->{password}->set_visibility(0);
173 180
210 my ($self, $msg) = @_; 217 my ($self, $msg) = @_;
211 218
212 ::status("login", "logged in as '$self->{conn}{name}' with status '$msg->{result}'"); 219 ::status("login", "logged in as '$self->{conn}{name}' with status '$msg->{result}'");
213 $::config->{login} = $self->{conn}{name}; 220 $::config->{login} = $self->{conn}{name};
214 221
215 $self->{window}->show_all; 222 if ($msg->{success}) {
223 warn "hiya\n";
224 for (keys %{$::config->{rooms}}) {
225 warn "hiya $_\n";
226 $self->{roomlist}->join_room($_);
227 }
228 }
229
230 warn PApp::Util::dumpval($::config);
216} 231}
217 232
218sub event_disconnect { } 233sub event_disconnect { }
219 234
220############################################################################# 235#############################################################################
231 246
232 $self->{window} = new Gtk::Window 'toplevel'; 247 $self->{window} = new Gtk::Window 'toplevel';
233 $self->{window}->set_title('KGS Rooms'); 248 $self->{window}->set_title('KGS Rooms');
234 ::state $self->{window}, "roomlist::window", undef, window_size => [400, 200]; 249 ::state $self->{window}, "roomlist::window", undef, window_size => [400, 200];
235 250
236 $self->{window}->signal_connect(delete_event => sub { hide $self->{window} }); 251 $self->{window}->signal_connect(delete_event => sub { $self->{window}->hide });
237 252
238 $self->{window}->add(my $vbox = new Gtk::VBox); 253 $self->{window}->add(my $vbox = new Gtk::VBox);
239 254
240 $vbox->pack_start((my $sw = new Gtk::ScrolledWindow), 1, 1, 0); 255 $vbox->pack_start((my $sw = new Gtk::ScrolledWindow), 1, 1, 0);
241 $sw->set_policy("automatic", "always"); 256 $sw->set_policy("automatic", "always");
246 ::state $self->{roomlist}, "roomlist::roomlist", undef, clist_column_widths => [20, 200]; 261 ::state $self->{roomlist}, "roomlist::roomlist", undef, clist_column_widths => [20, 200];
247 262
248 $self->{roomlist}->signal_connect(select_row => sub { 263 $self->{roomlist}->signal_connect(select_row => sub {
249 my $room = $self->{roomlist}->get_row_data($_[1]) 264 my $room = $self->{roomlist}->get_row_data($_[1])
250 or return; 265 or return;
251 $self->{room}{$room->{channel}} ||= new room %$room, conn => $self->{conn}, users => {};
252 $self->{room}{$room->{channel}}->join;
253 $self->{roomlist}->unselect_all; 266 $self->{roomlist}->unselect_all;
267 $self->join_room($room->{channel});
254 }); 268 });
255 269
256 $self; 270 $self;
271}
272
273sub join_room {
274 my ($self, $channel) = @_;
275
276 $self->{room}{$channel} ||= room->new(channel => $channel, conn => $self->{conn}, users => {});
277 $self->{room}{$channel}->join;
257} 278}
258 279
259sub show { 280sub show {
260 my ($self, $msg) = @_; 281 my ($self, $msg) = @_;
261 282
407 428
408sub part { 429sub part {
409 my ($self) = @_; 430 my ($self) = @_;
410 $self->SUPER::part; 431 $self->SUPER::part;
411 432
433 delete $::config->{rooms}{$self->{channel}};
412 $self->{window}->hide_all; 434 $self->{window}->hide_all;
413 $self->event_update; 435 $self->event_update;
414 $self->event_update_games; 436 $self->event_update_games;
437}
438
439sub event_join {
440 my ($self) = @_;
441 $self->SUPER::event_join;
442
443 $::config->{rooms}{$self->{channel}} = 1;
415} 444}
416 445
417sub event_update_roominfo { 446sub event_update_roominfo {
418 my ($self) = @_; 447 my ($self) = @_;
419 448
543 } 572 }
544 } 573 }
545 } 574 }
546} 575}
547 576
577package KGS::Game::Board;
578package KGS::Game::Node;
579package KGS::Game::Tree;
580
5481; 5811;
549 582
550 583
551 584

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines