Author: bdonlan
Date: 2004-05-29 21:11:02 -0400 (Sat, 29 May 2004)
New Revision: 192

Added:
   trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Rawlog.pm
Modified:
   trunk/haver-gtk/TODO
   trunk/haver-gtk/bin/haver-gtk.pl
Log:
Moved rawlog logic and events off to a seperate module


Modified: trunk/haver-gtk/TODO
===================================================================
--- trunk/haver-gtk/TODO        2004-05-30 00:57:08 UTC (rev 191)
+++ trunk/haver-gtk/TODO        2004-05-30 01:11:02 UTC (rev 192)
@@ -1,7 +1,7 @@
 TODO:
-* Move rawlog functions to its own file
+* Find some framework for all these pages with associated sessions
 * Move cmd_* and haver_* to separate files
-* Pages should not care about page names
+* Pages.pm should not care about page names
 * Server list
 * Preferences
 * Timestamps

Modified: trunk/haver-gtk/bin/haver-gtk.pl
===================================================================
--- trunk/haver-gtk/bin/haver-gtk.pl    2004-05-30 00:57:08 UTC (rev 191)
+++ trunk/haver-gtk/bin/haver-gtk.pl    2004-05-30 01:11:02 UTC (rev 192)
@@ -44,6 +44,7 @@
 use Haver::Client::Gtk::Page::Channel;
 use Haver::Client::Gtk::Page::Text;
 use Haver::Client::Gtk::Page::Query;
+use Haver::Client::Gtk::Page::Rawlog;
 # XXX: Implement config files
 use Data::Dumper;
 use Carp;
@@ -131,8 +132,6 @@
        haver_connected
        haver_connect_fail
        haver_disconnected
-       haver_raw_in
-       haver_raw_out
        haver_login_request
        haver_login
        haver_login_fail
@@ -214,7 +213,7 @@
        $gui{main_window}->show;
 
        $pages->add_page(new Haver::Client::Gtk::Page::Text("Server"));
-       $pages->add_page(new Haver::Client::Gtk::Page::Text("!rawlog"));
+       $pages->add_page(new Haver::Client::Gtk::Page::Rawlog("!rawlog"));
        $pages->set_page(0);
 
        $kernel->yield('connect_win');
@@ -394,19 +393,13 @@
        $heap->{clist} = {};
        $kernel->yield('connect_win');
 }
-sub haver_raw_in {
-       my @data = @{$_[ARG0]};
-       $pages->get_page('!rawlog')->print_page("S: " . join "\t", @data);
-}
-sub haver_raw_out {
-       my @data = @{$_[ARG0]};
-       $pages->get_page('!rawlog')->print_page("C: " . join "\t", @data);
-}
+
 sub haver_login_request {
        my $kernel = $_[KERNEL];
        $pages->get_page(0)->print_page("Login failed.");
        $kernel->post('haver', 'disconnect');
 }
+
 sub haver_login {
        $pages->get_page(0)->print_page("Logged in.");
        $_[HEAP]->{ready} = 1;

Added: trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Rawlog.pm
===================================================================
--- trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Rawlog.pm 2004-05-30 00:57:08 UTC 
(rev 191)
+++ trunk/haver-gtk/lib/Haver/Client/Gtk/Page/Rawlog.pm 2004-05-30 01:11:02 UTC 
(rev 192)
@@ -0,0 +1,72 @@
+# vim: set ft=perl ts=4 sw=4:
+# Haver::Client::Gtk::Page::Rawlog - rawlog window for haver-gtk
+# 
+# Copyright (C) 2004 Bryan Donlan, Dylan William Hardison.
+# 
+# This module is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This module is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this module; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+package Haver::Client::Gtk::Page::Rawlog;
+use warnings;
+use strict;
+
+use POE;
+use base 'Haver::Client::Gtk::Page::Text';
+
+### METHODS
+
+sub new {
+       my ($class, $title) = @_;
+       $class = ref $class || $class || __PACKAGE__;
+       $title ||= 'Rawlog';
+       
+       my $self = Haver::Client::Gtk::Page::Text::new($class, $title);
+
+       $self->{session} = POE::Session->create(
+               object_states => [
+               $self => {qw{
+                       haver_raw_in            _in
+                       haver_raw_out           _out
+                       _start                          _start
+                       destroy                         _destroy
+                       }}, # $self => {qw{
+               ], # object_states =>
+       )->ID;
+
+       return $self;
+}
+
+### STATES
+
+sub _in {
+       my $self = $_[OBJECT];
+       my @data = @{$_[ARG0]};
+       $self->print_page("S: " . join "\t", @data);
+}
+
+sub _out {
+       my $self = $_[OBJECT];
+       my @data = @{$_[ARG0]};
+       $self->print_page("C: " . join "\t", @data);
+}
+
+sub _start {
+       $_[KERNEL]->post('haver', 'register', 'all');
+}
+
+sub _destroy {
+       $_[KERNEL]->post('haver', 'unregister', 'all');
+}
+
+1;


Reply via email to