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) = @_;


Reply via email to