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

Comparing kgsueme/kgsueme/appwin.pl (file contents):
Revision 1.2 by pcg, Sat May 31 11:12:22 2003 UTC vs.
Revision 1.3 by pcg, Sat May 31 13:58:30 2003 UTC

1package appwin; 1package appwin;
2 2
3use Scalar::Util;
4
3use base KGS::Listener; 5use base KGS::Listener;
6use base gtk::widget;
4 7
5my %context_id; 8my %context_id;
6 9
7sub status { 10sub status {
8 my ($type, $text) = @_; 11 my ($type, $text) = @_;
14sub new { 17sub new {
15 my $self = shift; 18 my $self = shift;
16 $self = $self->SUPER::new(@_); 19 $self = $self->SUPER::new(@_);
17 20
18 $appwin::self = $self; # singleton 21 $appwin::self = $self; # singleton
22 Scalar::Util::weaken $appwin::self;
19 23
20 $self->{conn} = new KGS::Protocol; 24 $self->{conn} = new KGS::Protocol;
21 25
22 KGS::Listener::Debug->new->listen($self->{conn}, "any"); #d# debug only :) 26 KGS::Listener::Debug->new->listen($self->{conn}, "any"); #d# debug only :)
23 27
25 29
26 $self->{roomlist} = new roomlist conn => $self->{conn}; 30 $self->{roomlist} = new roomlist conn => $self->{conn};
27 31
28 $self->{window} = new Gtk2::Window 'toplevel'; 32 $self->{window} = new Gtk2::Window 'toplevel';
29 $self->{window}->set_title('kgsueme'); 33 $self->{window}->set_title('kgsueme');
30 gtk::state $self->{window}, "main::window", undef, window_size => [400, 100]; 34 gtk::state $self->{window}, "main::window", undef, window_size => [400, 400];
31 $self->{window}->signal_connect(delete_event => sub { main_quit Gtk2; 1 }); 35 $self->{window}->signal_connect(delete_event => sub { main_quit Gtk2; 1 });
32 36
33 $self->{window}->add(my $vbox = new Gtk2::VBox); 37 $self->{window}->add(my $vbox = new Gtk2::VBox);
34 38
35 $vbox->pack_start(($buttonbox = new Gtk2::HButtonBox), 0, 1, 0); 39 $vbox->pack_start(($buttonbox = new Gtk2::HButtonBox), 0, 1, 0);
59 } 63 }
60 64
61 $hbox->add(new Gtk2::Label "Password"); 65 $hbox->add(new Gtk2::Label "Password");
62 $hbox->add($self->{password} = new Gtk2::Entry); 66 $hbox->add($self->{password} = new Gtk2::Entry);
63 $self->{password}->set_visibility(0); 67 $self->{password}->set_visibility(0);
68
69 $self->{gamelist} = new gamelist conn => $self->{conn};
70 $vbox->pack_start ($self->{gamelist}->widget, 1, 1, 0);
71
72 $appwin::gamelist = $self->{gamelist};
73 Scalar::Util::weaken $appwin::gamelist;
64 74
65 $vbox->pack_start(($self->{status} = new Gtk2::Statusbar), 0, 1, 0); 75 $vbox->pack_start(($self->{status} = new Gtk2::Statusbar), 0, 1, 0);
66 76
67 $self->{window}->show_all; 77 $self->{window}->show_all;
68 78
103 113
104 appwin::status("login", "logged in as '$self->{conn}{name}' with status '$msg->{result}'"); 114 appwin::status("login", "logged in as '$self->{conn}{name}' with status '$msg->{result}'");
105 $::config->{login} = $self->{conn}{name}; 115 $::config->{login} = $self->{conn}{name};
106 116
107 if ($msg->{success}) { 117 if ($msg->{success}) {
118 # auto-join
108 for (keys %{$::config->{rooms}}) { 119 for (values %{$::config->{rooms}}) {
109 $self->{roomlist}->join_room($_); 120 $self->{roomlist}->join_room($_);
110 } 121 }
111 sound::play 3, "connect"; 122 sound::play 3, "connect";
112 } elsif ($msg->{result} eq "user unknown") { 123 } elsif ($msg->{result} eq "user unknown") {
113 sound::play 2, "user_unknown"; 124 sound::play 2, "user_unknown";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines