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;