This is a straight forward Perl syntax error. Look at the arguments
you are passing to the constructor of Client::TCP.
You are essentially passing a hash made up of coderefs to use as
callbacks, yet you don't separate entries with a comma.
Just because it is POE and it certainly seems like magic, shouldn't
cause you to throw out common Perl sense.
I mean, this isn't Moose ;-)
On Jan 4, 2008 10:58 AM, Jamie Lahowetz <[EMAIL PROTECTED]> wrote:
> Yah that was the problem, there was no loop and therefore the app ended. I
> got it working by creating the main Gtk2 loop.
>
> I have ran into another problem. I am trying to add the client session to
> the app and have been getting errors on it. I think these errors have to do
> with my lack of knowledge on POE. These errors are:
>
> syntax error at chat-client.pl line 75, near "ConnectError"
> Can't use global @_ in "my" at chat-client.pl line 76, near "= @_"
> syntax error at chat-client.pl line 85, near ")"
>
> the code:
>
>
> #!/usr/bin/perl
> use warnings;
> use strict;
>
> use Gtk2 -init;
> use Glib qw/TRUE FALSE/;
> use POE::Kernel { loop => "Glib" };
> use POE::Session;
>
>
> ###################################################################################################
> # Create the session that will drive the user interface
> POE::Session->create(
> inline_states => {
> _start => \&ui_start}
> );
>
> #start the UI interface (Main windowed)
> sub ui_start {
> my ( $kernel, $session, $heap ) = @_[ KERNEL, SESSION, HEAP ];
>
> $heap->{main_window} = Gtk2::Window->new("toplevel");
> $kernel->signal_ui_destroy( $heap->{main_window} );
>
> my $table = Gtk2::Table->new(3, 2, FALSE);
>
> my $label = Gtk2::Label->new("Chat Client Test");
>
> my $button = Gtk2::Button->new("Send");
>
> #my $buffer = Gtk2::TextBuffer->new;
>
> $heap->{buffer} = Gtk2::TextBuffer->new;
>
> my $textview = Gtk2::TextView->new_with_buffer( $heap->{buffer});
> $textview->set_cursor_visible (FALSE);
> my $swindow = Gtk2::ScrolledWindow->new( undef, undef);
> $swindow->set_policy( 'automatic', 'automatic');
> $swindow->set_shadow_type( 'etched-out');
>
> $swindow->add( $textview);
>
> my $entry = Gtk2::Entry->new();
>
> $table->attach_defaults($label, 0, 1, 0, 1);
> $table->attach_defaults($swindow, 0, 2, 1, 2);
> $table->attach_defaults($entry, 0, 1, 2, 3);
> $table->attach_defaults($button, 1, 2, 2, 3);
> $heap->{main_window}->add($table);
>
> $heap->{main_window}->show_all();
>
> spawn_client();
>
> gtk2->main;
> }
>
> ###################################################################################################
>
> ###################################################################################################
>
> #start the client session
> sub spawn_client {
> my $host = "Deadpickle-hobo";
> my $port = 11211;
>
> POE::Component::Client::TCP->new(
> RemoteAddress => $host,
> RemotePort => $port,
> Connected => sub {
> #print "connected to $host:$port ...\n";},
> my ( $kernel, $heap) = @_[ KERNEL, HEAP];
> $heap->{buffer}->set_text("connected to $host:$port ...\n");
> }
> ConnectError => sub {
> my ( $kernel, $heap) = @_[ KERNEL, HEAP];
> #print "could not connect to $host:$port ...\n";},
> $heap->{buffer}->set_text("could not connect to $host:$port
> ...\n");
> }
> ServerInput => sub {
> my ( $kernel, $heap, $input ) = @_[ KERNEL, HEAP, ARG0 ];
> #print $input. "\n";
> $heap->{buffer}->set_text($input);
> }
> );
> }
>
> ###################################################################################################
>
> $poe_kernel->run();
> exit 0;
>
>
>
> On Jan 4, 2008 10:02 AM, Mike Schroeder <[EMAIL PROTECTED]> wrote:
>
> > Is the window disappearing or is the script exiting? I know with
> > POE::Loop::Wx you sometimes need to add a keep alive loop in POE...
> >
> >
> > On 03/01/08 06:04 PM, Jamie Lahowetz wrote:
> > > I would like to create a Gtk2 based Chat client that can be used with
> > the
> > > chat server on the POE cookbook. To do this I have to sort of reteach
> > myself
> > > on using Gtk2 in the POE loop. Currently I am trying to get the program
> > to
> > > create a simple window. I'm having trouble with this, the window seems
> > to
> > > just disappear with no warnings. Any ideas?
> > >
> > > #!/usr/bin/perl
> > > use warnings;
> > > use strict;
> > >
> > > use Gtk2 -init;
> > > use Glib qw/TRUE FALSE/;
> > > use POE::Kernel { loop => "Glib" };
> > > use POE::Session;
> > >
> > > # Create the session that will drive the user interface.
> > >
> > > POE::Session->create(
> > > inline_states => {
> > > _start => \&ui_start,
> > > #ev_count => \&ui_count,
> > > #ev_clear => \&ui_clear,
> > > }
> > > );
> > >
> > > # Run the program until it is exited.
> > >
> > > $poe_kernel->run();
> > > exit 0;
> > >
> > > sub ui_start {
> > > my ( $kernel, $session, $heap ) = @_[ KERNEL, SESSION, HEAP ];
> > >
> > > $heap->{main_window} = Gtk2::Window->new("toplevel");
> > > $kernel->signal_ui_destroy( $heap->{main_window} );
> > >
> > > my $table = Gtk2::Table->new(3, 1, FALSE);
> > >
> > > my $label = Gtk2::Label->new("Chat Client Test");
> > >
> > > $table->attach_defaults($label, 0, 1, 0, 1);
> > >
> > > my $buffer = Gtk2::TextBuffer->new;
> > > my $textview = Gtk2::TextView->new_with_buffer( $buffer);
> > >
> > > $table->attach_defaults($textview, 0, 1, 1, 2);
> > >
> > > my $button = Gtk2::Button->new("Connect");
> > >
> > > $table->attach_defaults($button, 0, 1, 2, 3);
> > >
> > > $heap->{main_window}->add($table);
> > >
> > > $heap->{main_window}->show_all();
> > > }
> > >
> > >
> >
>
>
>
>
> --
> Jamie Ryan Lahowetz
> University of Nebraska - Lincoln
> Graduate Student - Geosciences
> 249 Hardin Hall, Section 21
> 402.304.0766
> [EMAIL PROTECTED]
>
--
Nick