--- kgsueme/bin/kgsueme 2003/05/28 22:17:09 1.2 +++ kgsueme/bin/kgsueme 2003/05/29 01:13:32 1.5 @@ -14,6 +14,8 @@ init Gtk; +$HACK = 1; # do NEVER enable. ;) + our $config; { @@ -137,6 +139,8 @@ $self->listen($self->{conn}); + $self->{roomlist} = new roomlist conn => $self->{conn}; + $self->{window} = new Gtk::Window 'toplevel'; $self->{window}->set_title('kgsueme'); ::state $self->{window}, "main::window", undef, window_size => [400, 100]; @@ -144,21 +148,18 @@ $self->{window}->add(my $vbox = new Gtk::VBox); - $vbox->pack_start(($self->{buttonbox} = new Gtk::HButtonBox), 0, 1, 0); + $vbox->pack_start(($buttonbox = new Gtk::HButtonBox), 0, 1, 0); + $buttonbox->set_spacing(0); my $button = sub { - $self->{buttonbox}->add(my $button = new Gtk::Button $_[0]); + $buttonbox->add(my $button = new Gtk::Button $_[0]); signal_connect $button clicked => $_[1]; }; - $button->("Login", sub { - $self->login; - }); - $button->("Roomlist", sub { - $self->{roomlist} ||= new roomlist conn => $self->{conn}; - $self->{roomlist}->show; - }); + $button->("Login", sub { $self->login; }); + $button->("Roomlist", sub { $self->{roomlist}->show; }); $button->("Save Config & Layout", sub { ::save_state }); + $button->("Quit", sub { main_quit Gtk }); $vbox->pack_start((my $hbox = new Gtk::HBox), 0, 1, 0); @@ -167,6 +168,12 @@ $hbox->add($self->{login} = new_with_max_length Gtk::Entry 12); $self->{login}->set_text($::config->{login}); + if ($::HACK) { + $self->{login}->signal_connect(activate => sub { + $self->{conn}{name} = $self->{login}->get_text; + }); + } + $hbox->add(new Gtk::Label "Password"); $hbox->add($self->{password} = new Gtk::Entry); $self->{password}->set_visibility(0); @@ -212,7 +219,15 @@ ::status("login", "logged in as '$self->{conn}{name}' with status '$msg->{result}'"); $::config->{login} = $self->{conn}{name}; - $self->{window}->show_all; + if ($msg->{success}) { + warn "hiya\n"; + for (keys %{$::config->{rooms}}) { + warn "hiya $_\n"; + $self->{roomlist}->join_room($_); + } + } + + warn PApp::Util::dumpval($::config); } sub event_disconnect { } @@ -233,7 +248,7 @@ $self->{window}->set_title('KGS Rooms'); ::state $self->{window}, "roomlist::window", undef, window_size => [400, 200]; - $self->{window}->signal_connect(delete_event => sub { hide $self->{window} }); + $self->{window}->signal_connect(delete_event => sub { $self->{window}->hide }); $self->{window}->add(my $vbox = new Gtk::VBox); @@ -248,14 +263,20 @@ $self->{roomlist}->signal_connect(select_row => sub { my $room = $self->{roomlist}->get_row_data($_[1]) or return; - $self->{room}{$room->{channel}} ||= new room %$room, conn => $self->{conn}, users => {}; - $self->{room}{$room->{channel}}->join; $self->{roomlist}->unselect_all; + $self->join_room($room->{channel}); }); $self; } +sub join_room { + my ($self, $channel) = @_; + + $self->{room}{$channel} ||= room->new(channel => $channel, conn => $self->{conn}, users => {}); + $self->{room}{$channel}->join; +} + sub show { my ($self, $msg) = @_; @@ -409,11 +430,19 @@ my ($self) = @_; $self->SUPER::part; + delete $::config->{rooms}{$self->{channel}}; $self->{window}->hide_all; $self->event_update; $self->event_update_games; } +sub event_join { + my ($self) = @_; + $self->SUPER::event_join; + + $::config->{rooms}{$self->{channel}} = 1; +} + sub event_update_roominfo { my ($self) = @_; @@ -545,6 +574,10 @@ } } +package KGS::Game::Board; +package KGS::Game::Node; +package KGS::Game::Tree; + 1;