#!/usr/bin/perl -w
# grid 的使用範例: 計算機的空殼子 (按鍵只是好看, 沒有功能.)

use Tk;
use strict;

my ($main, $i, %keytext, $key);

$main = MainWindow->new();
$main->{off} = $main->Button(-text=>"off");
$main->{readout} = $main->Entry;;
$main->{readout}->insert(0, "0");
$main->{sbar} = $main->Scrollbar(-orient=>"horizontal",
    -command=>[$main->{readout}, "xview"]);
$main->{readout}->configure(-xscrollcommand=>[$main->{sbar}, "set"]);
for ($i=0; $i<=9; ++$i) {
    $main->{"k$i"} = $main->Button(-text=>$i);
}
%keytext = (
    point=>".", add=>"+", sub=>"-", mul=>"*", div=>"/",
    equal=>"=", pm=>"+/-", clear=>"C/CE"
);
foreach $key (keys %keytext) {
    $main->{$key} = $main->Button(-text=>$keytext{$key});
}

$main->{off}->grid($main->{readout}, -sticky=>"news");
$main->{sbar}->grid(-column=>1, -sticky=>"news");
$main->{k7}->grid($main->{k8}, $main->{k9}, $main->{mul},
    $main->{clear}, -sticky=>"news");
$main->{k4}->grid($main->{k5}, $main->{k6}, $main->{sub},
    $main->{div}, -sticky=>"news");
$main->{k1}->grid($main->{k2}, $main->{k3}, $main->{add},
    $main->{equal}, -sticky=>"news");
$main->{k0}->grid($main->{pm}, $main->{point}, -sticky=>"news");

$main->{off}->grid(-rowspan=>2);
$main->{readout}->grid($main->{sbar}, -columnspan=>4);
$main->{add}->grid($main->{equal}, -rowspan=>2);

foreach $i (qw(0 2 3 4)) {
    $main->gridRowconfigure($i, -weight=>1);
    $main->gridColumnconfigure($i, -weight=>1, -minsize=>40);
}
$main->gridRowconfigure(5, -weight=>1);
$main->gridColumnconfigure(1, -weight=>1, -minsize=>40);

MainLoop();

