#!/usr/bin/perl -W
use strict;
use Carp;
use POE;
use Term::Visual;
my $vt = Term::Visual->new( Alias => "interface" );
$vt->set_palette( mycolor => "magenta on black",
statcolor => "green on black",
sockcolor => "cyan on black",
ncolor => "white on black",
st_frames => "bright cyan on blue",
st_values => "bright white on blue",
stderr_bullet => "bright white on red",
stderr_text => "bright yellow on black",
err_input => "bright white on red",
help => "white on black",
help_cmd => "bright white on black" );
my $window_id = $vt->create_window(
Window_Name => "window_one",
Buffer_Size => 1000,
History_Size => 50,
Use_Status => 0,
Use_Title => 0 );
POE::Session->create
(inline_states =>
{ _start => \&start_guts,
got_term_input => \&handle_term_input,
}
);
$vt->print($window_id, "My Window ID is $window_id");
## Initialize the back-end guts of the "client".
sub start_guts {
my ($kernel, $heap) = @_[KERNEL, HEAP];
# Tell the terminal to send me input as "got_term_input".
$kernel->post( interface => send_me_input => "got_term_input" );
# $vt->print($window_id, $vt->[0]{$window_id}->{Screen_Height});
}
### The main input handler for this program. This would be supplied
### by the guts of the client program.
sub handle_term_input {
my ($kernel, $heap, $input, $exception) = @_[KERNEL, HEAP, ARG0, ARG1];
# Got an exception. These are interrupt (^C) or quit (^\).
if (defined $exception) {
warn "got exception: $exception";
exit;
}
$vt->print($window_id, $input);
}
$poe_kernel->run();
$vt->shutdown;
exit 0;