in reply to Re: Query the height of Tk::Text widget with word wrap
in thread Query the height of Tk::Text widget with word wrap
#!/usr/bin/perl -- use strict; use warnings; use Tk; use Data::Dump qw/ dd pp /; my $mw = tkinit(qw/ -width 30 -height 30 /); my $t = $mw->Text(-wrap=>'word')->pack(qw/ -expand 1 -fill both /); $t->insert('end', q{"There must be some kind of way out of here," Said the joker to the +thief. "There's too much confusion, I can't get no relief. Businessme +n, they drink my wine, Plowmen dig my earth. None of them along the l +ine Know what any of it is worth." "No reason to get excited," The th +ief he kindly spoke. "There are many here among us Who feel that life + is but a joke. But you and I, we've been through that, And this is n +ot our fate. So let us not talk falsely now, The hour is getting late +." All along the watchtower, Princes kept the view, While all the wom +en came and went -- Barefoot servants too. Outside in the cold distan +ce, A wildcat did growl. Two riders were approaching, and The wind be +gan to howl. http://www.reasontorock.com/tracks/watchtower.html}); # q{"There must be some kind of way out of here," Said the joker to th +e thief.}); $t->tagConfigure('yellow', -background => "yellow"); my $b = $mw->Button( -text => 'dlineinfo', -command => [ sub { my( $mw, $t ) = @_; # ffd( $mw, $t, qw/ 1.20 1.12 12.30 15.28 22.16 24.2 +0 /); ffd( $mw, $t, qw/ 1.20 1.119 1.333 1.650 /); # 1.1000 to g +et the last character }, $mw, $t, ], )->pack( -before => $t ); $b->focus; #~ use Tk::WidgetDump; $mw->WidgetDump; MainLoop(); sub ffff { my( $mw, $t ) = @_; my $geom = $mw->geometry; my( $trooty, $theight ) = ( $t->rooty, $t->height ); my $ttaily = $trooty + $theight; "mw(geo{$geom}) trooty($trooty)+theight($theight)= $ttaily"; } sub ffd { my( $mw, $t ) = splice @_,0,2; print "\n", ffff( $mw, $t ), "\n"; for my $index( @_ ){ $t->tagAdd('yellow', "$index wordstart", "$index wordend", ); my @aline = qw/ lTx lTy wpx hpx bsT /; my @dline = $t->dlineinfo("$index wordstart"); my $theword = $t->get( "$index wordstart", "$index wordend" ); if( not @dline ){ print "($index $theword) SKIP not visible\n"; next; } printf "%-10s %-10s %5s %-5s %5s %-5s %5s %-5s %5s %-5s %5s %- +5s\n", $index, $theword, map { $aline[$_], $dline[$_] } 0 .. $#aline, ;;;;; my @bbLine = qw/ lTx lTy lTw lTh /; my( @bbLineStart ) = $t->bbox("$index linestart" ); my( @bbLineEnd ) = $t->bbox("$index lineend" ); # printf "%-10s %-10s %5s %-5s %5s %-5s %5s %-5s %5s %-5s %5s +%-5s\n",, # $index, # 'end', # ( map { $bbLine[$_], $bbLineEnd[$_] } 0 .. $#bbLine, +), # ('') x 2, # ;;;;; # printf "%-10s %-10s %5s %-5s %5s %-5s %5s %-5s %5s %-5s %5s +%-5s\n", # $index, # 'start', # ( map { $bbLine[$_], $bbLineEnd[$_] } 0 .. $#bbLine, +), # ('') x 2, # ;;;;; print "\n"; } #~ my $width = (200,400,600)[rand 2]; #~ $mw->geometry( $width."x$width"); } __END__
1.20 kind lTx 3 lTy 3 wpx 525 hpx 14 + bsT 11 1.119 relief lTx 3 lTy 17 wpx 553 hpx 14 + bsT 11 1.333 feel lTx 3 lTy 59 wpx 518 hpx 14 + bsT 11 1.650 riders lTx 3 lTy 115 wpx 553 hpx 14 + bsT 11
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Query the height of Tk::Text widget with word wrap
by elef (Friar) on Dec 01, 2013 at 11:57 UTC | |
by Anonymous Monk on Dec 01, 2013 at 13:04 UTC | |
by elef (Friar) on Dec 02, 2013 at 11:15 UTC | |
by Anonymous Monk on Dec 02, 2013 at 11:34 UTC | |
by elef (Friar) on Dec 02, 2013 at 17:07 UTC | |
|