#!/tools/local/perl -w
use strict;
use Tk;
my $mw  = MainWindow->new;
my @but;
my @tab;

use Carp;
#$SIG{__WARN__} = \&Carp::confess;

my $pagestr = '0x00';
my $l = $mw->Label(-text => 'Page:',-justify => 'right',-anchor => 'e');
my $e = $mw->Entry(-width => 4,-textvariable => \$pagestr,-justify => 'left');
Tk::grid($l,$e);
$e->bind('<Return>',\&set_page);
my $uf = $mw->Font(family => 'arial unicode ms', pixel => 10);
print join(' ',$uf->actual),"\n";
for my $i (0x00..0xff)
 {
  my $s = chr($i);
  my $b = $mw->Button(-text => $s, -font => $uf);

  push(@but,$b);
  push(@tab,$b);
  if ($i % 16 == 15)
   {
    Tk::grid(splice(@but,0,16));
   }
 }
set_page($e);
MainLoop;

sub set_page
{
 my ($e) = @_;
 my $page = oct($pagestr);
 print "$pagestr => $page\n";
 $pagestr = sprintf("0x%02X",$page);
 for my $i (0x00..0xFF)
  {
   my $b = $tab[$i];
   my $u = ($page<<8) | $i;
   my $c = chr($u);
   my $s = "$c\n".sprintf("%02X",$i);
   die "bug $i" unless utf8::valid($s);
   $b->configure(-text => $s);
  }
}
