Tk-HTML
view release on metacpan or search on metacpan
HTML/Handler.pm view on Meta::CPAN
$w->{'Text'}[-1]->Call("\n");
}
else
{
$w->nl(1);
}
return $w;
}
sub hr
{
my ($h,$f,$elem) = @_;
return 0 unless $f;
my $w = $h->{widget};
my $r = $w->Frame(-height => 2,
-width => $w->cget('-width')*140,
-borderwidth => 1, -relief => 'sunken',
);
$h->nl(1);
$w->window('create','insert','-window' => $r, -pady => 0, -padx => 0);
$h->{NL} = 0;
$h->{'BODY'} = 1;
$h->nl(1);
return $f;
}
sub DeEscape
{
my ($var,$text) = @_;
$$var .= HTML::Entities::decode($text);
}
sub td_grid
{
my ($h,$f,$elem) = @_;
my $table = $elem->enclosing(1,'table');
if ($f)
{
$elem->{Text} = "";
$h->TextHandler([\&DeEscape,\$elem->{Text}]);
}
else
{
my $tw = $table->{widget};
my @elem = ();
my $al = $elem->{ALIGN};
if (defined $al)
{
push(@elem,-justify => 'right',-anchor => 'e') if ($al =~ /RIGHT/i);
}
my $widget = $elem->{'widget'};
unless (defined $widget)
{
$widget = $tw->Label(-relief => 'ridge',@elem, -text => $elem->{Text},
config($elem,
-background => 'bgcolor'));
}
$widget->grid(-in => $tw, -row => $table->{Row}, -column => $table->{Col},
config($elem,
-rowspan => 'rowspan',
-columnspan => 'colspan'), -sticky => 'nsew');
pop(@{$h->{'Text'}});
$table->{Col}++;
}
return $f;
}
sub broken_td
{
my ($h,$f,$elem) = @_;
my $row = $elem->enclosing(1,'tr');
my $table = $row->enclosing(1,'table');
my $tw = $table->{widget};
if ($f)
{
my $w = $h->{'widget'};
$elem->{'widget'} = $w;
# my $class = ref($w);
# my @args = ();
# foreach my $opt ($w->configure)
# {
# if (@$opt != 2)
# {
# my $val = $opt->[-1];
# my $def = $opt->[-2];
# push(@args,$opt->[0],$val) if defined($val) && (!defined($def) || $val ne $def);
# }
# }
# print join(' ','New:',@args),"\n";
# print format_attr($elem),"\n";
my @elem = ();
my $al = $elem->attr('align');
if (defined $al)
{
push(@elem,-justify => 'right',-anchor => 'e') if ($al =~ /RIGHT/i);
}
my $widget = Tk::HTML->new($tw, -relief => 'ridge',@elem,
config($elem,
-background => 'bgcolor'),
-width => 0, -height => 0);
$widget->grid(-in => $tw, -row => $table->{Row}, -column => $table->{Col},
config($elem,
-rowspan => 'rowspan',
-columnspan => 'colspan'), -sticky => 'nsew');
$h->{'widget'} = $widget;
}
else
{
my $widget = $h->{'widget'};
# $widget->GeometryRequest(0,0);
$h->{'widget'} = $elem->{widget};
$table->{Col}++;
}
return $f;
}
sub format_attr
{
my $elm = shift;
my $str = '<'.$elm->tag.' ';
my $sep = '';
my @list = %$elm;
while (@list)
{
my ($key,$val) = splice(@list,0,2);
next if $key =~ /^_/;
$str .= "$sep$key=\"$val\"";
$sep = ', ';
}
return $str . '>';
}
sub config
{
my $elem = shift;
my @args;
while (@_)
{
my ($opt,$attr) = splice(@_,0,2);
my $val = $elem->attr($attr);
push(@args,$opt => $val) if defined $val;
}
return @args;
}
sub table
{
my ($h,$f,$elem) = @_;
return $f;
}
sub td
{
my ($h,$f,$elem) = @_;
return $f;
}
sub tr
{
my ($h,$f,$elem) = @_;
return $h->br($f,$elem)
}
sub table_grid
( run in 0.581 second using v1.01-cache-2.11-cpan-39bf76dae61 )