Author: dylan
Date: 2004-05-28 01:06:30 -0400 (Fri, 28 May 2004)
New Revision: 178
Modified:
trunk/haver-gtk/bin/haver-gtk.pl
trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Query.pm
Log:
Okay, we're using Haver::Client::Command::Callback now,
there might be some bugs.
Really we need to move the /command handling
to a separate file, maybe a separate session.
Modified: trunk/haver-gtk/bin/haver-gtk.pl
===================================================================
--- trunk/haver-gtk/bin/haver-gtk.pl 2004-05-28 04:30:01 UTC (rev 177)
+++ trunk/haver-gtk/bin/haver-gtk.pl 2004-05-28 05:06:30 UTC (rev 178)
@@ -39,6 +39,7 @@
use Haver::OS;
use Haver::Config;
+use Haver::Client::Command::Callback;
# XXX: Implement config files
use Data::Dumper;
use Carp;
@@ -159,6 +160,11 @@
);
};
+my $cmd = new Haver::Client::Command::Callback;
+
+
+
+
if ($@) {
my $e = $@;
set_locale Gtk;
@@ -217,6 +223,7 @@
cmd_me
cmd_query
cmd_close
+ cmd_say
}]]);
POE::Kernel->run();
@@ -289,20 +296,28 @@
set_page 0;
$kernel->yield('connect_win');
+
+
+ foreach my $c (qw(say msg me close users join part quit)) {
+ $cmd->register($c, handler => $session->postback("cmd_$c"));
+ }
+
+
}
sub input {
my ($kernel, $heap) = @_[KERNEL,HEAP];
my $text = $gui{entry}->get_text;
$gui{entry}->set_text('');
- if($text =~ m|^/(\w+)\s*(.*)$|) {
- _call("cmd_$1", $2);
- # XXX: Error on nonexistent command
- return;
- }
- if(get_current_page()->can('send_msg')) {
- get_current_page()->send_msg(q{"}, $text);
- }
+ $cmd->input($text);
+
+
+# if($text =~ m|^/(\w+)\s*(.*)$|) {
+# _call("cmd_$1", $2);
+# # XXX: Error on nonexistent command
+# } elsif (get_current_page()->can('send_msg')) {
+# get_current_page()->send_msg(q{"}, $text);
+# }
}
sub entry_key_pressed {
@@ -404,7 +419,6 @@
$kernel->post("haver", "destroy");
}
-sub cmd_quit { goto &quit; }
sub haver_connected {
get_page(0)->print_page("Connected, logging in.");
@@ -489,16 +503,6 @@
$kernel->post('haver', 'users', $channel);
}
-sub cmd_join {
- my ($kernel, $heap, $chan) = @_[KERNEL,HEAP,ARG0];
- if(exists $heap->{clist}->{$chan}) {
- set_page "#$chan" if get_page "#$chan";
- return;
- }
- $kernel->post("haver", "join", $chan);
- $heap->{clist}->{$chan} = undef;
-}
-
sub haver_join {
my ($kernel, $heap, $args, $channel) = @_[KERNEL,HEAP,ARG0,ARG1];
my $uid = $args->[0];
@@ -531,12 +535,50 @@
}
}
+sub haver_users {
+ my ($kernel, $heap, $args, $chan) = @_[KERNEL,HEAP,ARG0,ARG1];
+ my @users = @$args;
+ get_page("#$chan")->set_ulist(@users);
+ get_page("#$chan")->print_page("Users for channel $chan:", join(" - ",
@users)); # XXX: Split into multiple lines
+}
+
+sub haver_parted {
+ my ($kernel, $heap, $chan) = @_[KERNEL,HEAP,ARG1];
+ my $page = delete $heap->{clist}->{$chan};
+ return unless defined $page;
+ del_page $page;
+}
+
+sub cmd_say {
+ my ($kernel, $heap, $args) = @_[KERNEL, HEAP, ARG1];
+ get_current_page()->send_msg(q{"}, $args->[0]);
+}
+
+
+
sub cmd_j { goto &cmd_join }
+sub cmd_quit { goto &quit; }
+
+
+sub cmd_join {
+ my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG1];
+ my ($chan) = @$args;
+
+ if(exists $heap->{clist}->{$chan}) {
+ set_page "#$chan" if get_page "#$chan";
+ return;
+ }
+ $kernel->post("haver", "join", $chan);
+ $heap->{clist}->{$chan} = undef;
+}
+
+
+
sub cmd_users {
- my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG0];
+ my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG1];
my $chan;
- if($args =~ /^(\w+)/) {
+ if($args->[0] =~ /^(\w+)/) {
$chan = $1;
} else {
$chan = get_current_page()->{string};
@@ -548,22 +590,10 @@
$kernel->post('haver', 'users', $chan);
}
-sub haver_users {
- my ($kernel, $heap, $args, $chan) = @_[KERNEL,HEAP,ARG0,ARG1];
- my @users = @$args;
- get_page("#$chan")->set_ulist(@users);
- get_page("#$chan")->print_page("Users for channel $chan:", join(" - ",
@users)); # XXX: Split into multiple lines
-}
-
-sub haver_parted {
- my ($kernel, $heap, $chan) = @_[KERNEL,HEAP,ARG1];
- my $page = delete $heap->{clist}->{$chan};
- return unless defined $page;
- del_page $page;
-}
-
sub cmd_part {
- my ($kernel, $heap, $chan) = @_[KERNEL,HEAP,ARG0];
+ my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG1];
+ my ($chan) = @$args;
+
unless($chan =~ s/^\#?(\w+)$/$1/) {
if($chan eq '') {
$chan = get_current_page()->{string};
@@ -583,16 +613,16 @@
}
sub cmd_msg {
- my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG0];
- unless($args =~ /^\s*(\S+)\s*(.+)$/) {
- print_current "Syntax: /msg UID text";
- return;
- }
- get_query_page($1)->send_msg(q{"}, $2);
+ my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG1];
+# unless($args =~ /^\s*(\S+)\s*(.+)$/) {
+# print_current "Syntax: /msg UID text";
+# return;
+# }
+ get_query_page($args->[0])->send_msg(q{"}, $args->[1]);
}
sub cmd_act {
- my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG0];
+ my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG1];
unless($args =~ /^\s*(\S+)\s*(.+)$/) {
print_current "Syntax: /msg UID text";
return;
@@ -601,23 +631,23 @@
}
sub cmd_me {
- my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG0];
+ my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG1];
return unless(get_current_page()->can('send_msg'));
- get_current_page()->send_msg(q{:}, $args);
+ get_current_page()->send_msg(q{:}, $args->[0]);
}
sub cmd_query {
- my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG0];
- set_page get_query_page($args);
+ my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG1];
+ set_page get_query_page($args->[0]);
}
sub cmd_close {
- my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG0];
+ my ($kernel, $heap, $args) = @_[KERNEL,HEAP,ARG1];
my $page = get_current_page();
- unless($args =~ /^\s*$/) {
- $page = get_page($args);
+ unless($args->[0] =~ /^\s*$/) {
+ $page = get_page($args->[0]);
if(!$page) {
- print_current "No such page $args";
+ print_current "No such page $args->[0]";
return;
}
}
@@ -629,3 +659,8 @@
print_current "Can't close that kind of page, sorry :(";
}
}
+
+
+
+
+
Modified: trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Query.pm
===================================================================
--- trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Query.pm 2004-05-28 04:30:01 UTC
(rev 177)
+++ trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Query.pm 2004-05-28 05:06:30 UTC
(rev 178)
@@ -28,7 +28,7 @@
use POE;
use base 'Haver::Client::Gtk::Page::Text';
-our $VERSION = 0.01
+our $VERSION = 0.01;
sub new ($$) {
my ($class, $uid) = @_;