naquad has asked for the wisdom of the Perl Monks concerning the following question:

Hello.

I've created a simple log viewer using Cursess::UI::POE and POE::Wheel::FollowTail:

#!/usr/bin/perl -w # use strict; use Curses::UI::POE; use POE::Wheel::FollowTail; use constant MAX_LINES=>30; my $cui = new Curses::UI::POE -clear_on_exit=>1,-color_support=>1, inl +ine_states => { _start => sub { $_[HEAP]{follower}=POE::Wheel::FollowTail->new(Filename=>'/var/log +/messages',InputEvent=>'new_line',SeekBack=>8192); ($_[HEAP]{tview}=$_[HEAP]->add('win1','Window')->add('text','TextV +iewer',-wrapping=>1,-width=>-1,-height=>-1))->focus; $_[HEAP]->set_binding(\&exit,"q"); $_[HEAP]{lines}=[]; }, new_line=>sub { unshift @{$_[HEAP]{lines}}, $_[ARG0]; @{$_[HEAP]{lines}}>MAX_LINES && pop @{$_[HEAP]{lines}}; $_[HEAP]{tview}->text(join("\n", @{$_[HEAP]{lines}})); $_[HEAP]{tview}->draw; # btw, is this correct or i should use some + other method? } }; $cui->mainloop

It works ok, but i would like to get colorization. Thats the place where i've got stuck :(

The problem is i can't find a way to colorize output of Curses::UI::TextViewer. Is it possible at least? Or are there any better options?

Thank you for your answers.

Replies are listed 'Best First'.
Re: Colorize Curses::UI::TextViewer
by stefbv (Priest) on Dec 17, 2009 at 19:54 UTC

    First, I must say I have very little ( near -> 0 ) experience with Curses and/or POE.

    It depends on what you really want to achieve. If you want to highlight portions of the text, than I can't help you with that.

    But if all you want is to change the background and foreground of the text than is simple, change the line that defines the window to:

    $_[HEAP]{tview} = $_[HEAP]->add( 'win1', 'Window' )->add( 'text', 'TextViewer', -wrapping => 1, # -width => -1, # -height => -1 -border => 1, -y => 1, -bfg => 'red', -bg => "white", -fg => "green", )

    But, probably you already know that :)

    Regards, Stefan