#!/usr/bin/perl -w

use Tk;
use strict;

my ($main, $i);

$main = MainWindow->new();
$main->{n} = $main->Button(-bg=>"blue");
$main->{s} = $main->Button(-bg=>"blue");
$main->{w} = $main->Button(-bg=>"red");
$main->{e} = $main->Button(-bg=>"green");
$main->{ne} = $main->Button(-bg=>"magenta");
$main->{sw} = $main->Button(-bg=>"cyan");

$main->{n}->grid(-sticky=>"news", -row=>0, -column=>0, -columnspan=>4);
$main->{s}->grid(-sticky=>"news", -row=>4, -column=>1, -columnspan=>4);
$main->{w}->grid(-sticky=>"news", -row=>1, -column=>0, -rowspan=>4);
$main->{e}->grid(-sticky=>"news", -row=>0, -column=>4, -rowspan=>4);
$main->{ne}->grid(-sticky=>"news", -row=>0, -column=>2,
    -rowspan=>3, -columnspan=>3);
$main->{sw}->grid(-sticky=>"news", -row=>2, -column=>0,
    -rowspan=>3, -columnspan=>3);

for ($i=0; $i<5; ++$i) {
    $main->gridColumnconfigure($i, -minsize=>30);
    $main->gridRowconfigure($i, -minsize=>30);
}

$main->gridColumnconfigure(1, -weight=>1);
$main->gridColumnconfigure(2, -weight=>3);
$main->gridColumnconfigure(3, -weight=>1);
$main->gridRowconfigure(1, -weight=>1);
$main->gridRowconfigure(2, -weight=>3);
$main->gridRowconfigure(3, -weight=>1);

foreach (qw(n s w e ne sw)) {
    my $w = $main->{$_};
    # 注意: closure 語法只對 lexical variable (用 my 宣告的變數) 有效!
    # $w->configure(-command=>sub {$w->raise;} );
    # 也請參考 perldoc Tk::callbacks 當中比較方便 (但只適用於 Tk) 的語法.
    $main->{$_}->bind("<Enter>", "raise");
}

MainLoop();

