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

Comparing kgsueme/kgsueme/app.pl (file contents):
Revision 1.21 by root, Mon May 31 22:44:50 2004 UTC vs.
Revision 1.22 by root, Wed Jun 2 04:39:07 2004 UTC

20 $::self->{status}->push ($context_id{$type} ||= $::self->{status}->get_context_id ($type), $text) if $text; 20 $::self->{status}->push ($context_id{$type} ||= $::self->{status}->get_context_id ($type), $text) if $text;
21} 21}
22 22
23sub new { 23sub new {
24 my ($self, %arg) = @_; 24 my ($self, %arg) = @_;
25
25 $self = $self->Glib::Object::new; 26 $self = $self->Glib::Object::new;
26 $self->{$_} = delete $arg{$_} for keys %arg; 27 $self->{$_} = delete $arg{$_} for keys %arg;
28 gtk::state $self, "main::window", undef, window_size => [700, 580];
29
30# $self->set (allow_shrink => 1);
27 31
28 Scalar::Util::weaken ($::self = $self); # singleton... 32 Scalar::Util::weaken ($::self = $self); # singleton...
29 33
30 $self->{protocol} = new KGS::Protocol::Client; 34 $self->{protocol} = new KGS::Protocol::Client;
31 35
32 $self->{roomlist} = new roomlist app => $self; 36 $self->{roomlist} = new roomlist app => $self;
33 37
34 $self->set_title ('kgsueme'); 38 $self->set_title ('kgsueme');
35 gtk::state $self, "main::window", undef, window_size => [400, 580];
36 $self->signal_connect (destroy => sub { %{$_[0]} = () }); 39 $self->signal_connect (destroy => sub { %{$_[0]} = () });
37 $self->signal_connect (delete_event => sub { main_quit Gtk2; 1 }); 40 $self->signal_connect (delete_event => sub { main_quit Gtk2; 1 });
38 41
39 $self->add (my $vbox = new Gtk2::VBox); 42 $self->add (my $vbox = new Gtk2::VBox);
40 43
46 signal_connect $button clicked => $_[1]; 49 signal_connect $button clicked => $_[1];
47 }; 50 };
48 51
49 $button->("Login", sub { $self->login; }); 52 $button->("Login", sub { $self->login; });
50 $button->("Roomlist", sub { $self->{roomlist}->show; }); 53 $button->("Roomlist", sub { $self->{roomlist}->show; });
51 $button->("Save Config & Layout", \&util::save_config); 54 $button->("Save Layout", \&util::save_config);
52 $button->("Logout", sub { $self->{conn}->send ("quit") if $self->{conn} }); 55 $button->("Logout", sub { $self->{conn}->send ("quit") if $self->{conn} });
53 $button->("Quit", sub { main_quit Gtk2 }); 56 $button->("Quit", sub { main_quit Gtk2 });
54 57
55 $vbox->pack_start ((my $hbox = new Gtk2::HBox), 0, 1, 0); 58 $vbox->pack_start ((my $hbox = new Gtk2::HBox), 0, 1, 0);
56 59
64 $self->{password}->set (visibility => 0, is_focus => 1); 67 $self->{password}->set (visibility => 0, is_focus => 1);
65 $self->{password}->signal_connect (activate => sub { $self->login }); 68 $self->{password}->signal_connect (activate => sub { $self->login });
66 69
67 $vbox->pack_start ((my $vpane = new Gtk2::VPaned), 1, 1, 0); 70 $vbox->pack_start ((my $vpane = new Gtk2::VPaned), 1, 1, 0);
68 $vpane->set (position_set => 1); 71 $vpane->set (position_set => 1);
69 gtk::state $vpane, "main::vpane", undef, position => 400; 72 gtk::state $vpane, "main::vpane", undef, position => 300;
70 73
71 $vbox->pack_start(($self->{status} = new Gtk2::Statusbar), 0, 1, 0); 74 $vbox->pack_start(($self->{status} = new Gtk2::Statusbar), 0, 1, 0);
72 75
73 $self->{gamelist} = new gamelist app => $self; 76 $self->{gamelist} = new gamelist app => $self;
74 $vpane->pack1 ($self->{gamelist}, 1, 1); 77 $vpane->pack1 ($self->{gamelist}, 1, 1);
109 112
110 # now login 113 # now login
111 $ENV{KGSUEME_CLIENTVER} ||= "1.4.1_01:Swing app:Sun Microsystems Inc."; # he asked for it...#d# 114 $ENV{KGSUEME_CLIENTVER} ||= "1.4.1_01:Swing app:Sun Microsystems Inc."; # he asked for it...#d#
112 $self->{protocol}->login ($ENV{KGSUEME_CLIENTVER} || "kgsueme $VERSION $^O", # allow users to overwrite 115 $self->{protocol}->login ($ENV{KGSUEME_CLIENTVER} || "kgsueme $VERSION $^O", # allow users to overwrite
113 $self->{login}->get_text, 116 $self->{login}->get_text,
114 $self->{password}->get_text); 117 $self->{password}->get_text,
118 "en_US");
115 119
116 my $input; $input = add_watch Glib::IO fileno $sock, [G_IO_IN, G_IO_ERR, G_IO_HUP], sub { 120 my $input; $input = add_watch Glib::IO fileno $sock, [G_IO_IN, G_IO_ERR, G_IO_HUP], sub {
117 # this is dorked 121 # this is dorked
118 my $buf; 122 my $buf;
119 my $len = sysread $sock, $buf, 16384; 123 my $len = sysread $sock, $buf, 16384;
151} 155}
152 156
153sub listen { 157sub listen {
154 my $self = shift; 158 my $self = shift;
155 159
156 $self->SUPER::listen (@_, qw(login userpic idle_warn msg_chat chal_defaults)); 160 $self->SUPER::listen (@_, qw(login userpic idle_warn msg_chat chal_defaults upd_rooms));
157} 161}
158 162
159sub inject_idle_warn { 163sub inject_idle_warn {
160 my ($self, $msg) = @_; 164 my ($self, $msg) = @_;
161 165
168 if ((lc $msg->{name2}) eq (lc $self->{name})) { 172 if ((lc $msg->{name2}) eq (lc $self->{name})) {
169 unless ($self->{user}{lc $msg->{name}}) { 173 unless ($self->{user}{lc $msg->{name}}) {
170 $self->open_user (name => $msg->{name})->inject ($msg); 174 $self->open_user (name => $msg->{name})->inject ($msg);
171 sound::play 2, "ring"; 175 sound::play 2, "ring";
172 } 176 }
177 }
178}
179
180sub inject_upd_rooms {
181 my ($self, $msg) = @_;
182
183 return if %{$self->{room}};
184
185 # join default room
186 for (@{$msg->{rooms}}) {
187 $self->open_room (%$_) if $_->is_default;
173 } 188 }
174} 189}
175 190
176sub inject_chal_defaults { 191sub inject_chal_defaults {
177 my ($self, $msg) = @_; 192 my ($self, $msg) = @_;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines