NAME
Tk::TextANSIColor - Tk::Text widget with support for ANSI color escape codes
SYNOPSIS
use Tk::TextANSIColor;
$wid = $mw->TextANSIColor(?options,...?);
$wid->insert($pos, $string, ?taglist, ?string, ?taglist);
$string_with_escape_codes = $wid->getansi('0.0','end');
use Term::ANSIColor;
$red = color('red'); # Retrieve color codes
$bold = color('bold');
$wid->insert('end', "$red red text $bold with bold\n");
DESCRIPTION
This widget extends the capabilities of the standard Tk::Text widget by adding support for ANSI color escape codes. When these escape codes are detected they are replaced by equivalent tags.
This widget was developed to solve the problem associated with driving a scrolling status display on a GUI as well as a status display going to an Xterm without having to know whether an xterm or Tk window is receiving the status information. Mainly used in conjunction with a tied filehandle:
$text = $MW->TextANSIColor->pack;
tie *TEXT, "Tk::TextANSIColor", $text;
$info = colored("Some information\n", 'red');
# Print information to all filehandles
print TEXT $info
print STDOUT $info
Currently the Term::ANSIColor module is required in order to decode the escape codes (and probably to generate them in the first place).
METHODS
The following methods are available in addition to those described in the documentation for Tk::Text:
- getansi
-
$widget->getansi(index1, ?index2?)
Similar to the standard
get
method forTk::Text
widgets, except it returns a range of characters from the text with the ANSI escape-codes embedded. This allows one to insert a string containing ANSI escape-codes into the widget, manipulate them, and fetch them back from the widget with the escape codes intact. The return value will be all the characters in the text starting with the one whose index isindex1
and ending just before the one whose index isindex2
(the character atindex2
will not be returned). Ifindex2
is omitted then the single character atindex1
is returned. If there are no characters in the specified range (e.g.index1
is past the end of the file orindex2
is less than or equal to index1) then an empty string is returned. If the specified range contains embedded windows, no information about them is included in the returned string. Use the standardget
method to fetch the string without ANSI escape-codes.
TAGS
This widget uses the following tags internally:
ANSIbd - bold
ANSIul - underline
ANSIfgCOL - foreground color
ANSIbgCOL - background color
where COL can be one of black, red, green, yellow, blue, magenta, cyan or white.
If required, the tags can be altered after the widget is created by using the tagConfigure() method. e.g.:
$widget->tagConfigure('ANSIfgred', -foreground => 'blue');
in order to make 'red' appear 'blue'.
REQUIREMENTS
This modules requires the Term::ANSIColor
module. The Tk
module is also required.
SEE ALSO
Tk::Text, Term::ANSIColor, Tk::ROTextANSIColor
AUTHOR
Tim Jenness (<tjenness@cpan.org>)
COPYRIGHT
Copyright (c) 1999-2001,2003 Tim Jenness. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.