here you go. sorry again...
test3.pl
package GridLayout;
sub new {
my($c, $r, $w, $h, $xpad, $ypad) = @_;
$w += 10; # compensate for the window frame
$h += 30; # " " " " " " title bar
my $r_grid = {
"cols" => $c,
"rows" => $r,
"width" => $w,
"height" => $h,
"xPad" => $xpad,
"yPad" => $ypad,
};
bless $r_grid, 'GridLayout';
return $r_grid;
}
sub column {
my ($grid_param, $col, $align) = @_;
$col--;
$colWidth = int($grid_param->{'width'} / $grid_param->{'cols'});
$x = ($col * $colWidth) + ($grid_param->{'xPad'});
$x = int((($colWidth - $widgetWidth) / 2) + $x) if $align =~ /c/i;
$x = int((($colWidth - $widgetWidth) - $grid_param->{'xPad'}) + $x) if $align =~
/r/i;
$widgetWidth=0; #in case a width declaration is missed or not used
return $x;
}
sub row {
my ($grid_param,$row, $align) = @_;
$row--;
$rowHeight = int($grid_param->{'height'} / $grid_param->{'rows'});
$y = ($row * $rowHeight) + ($grid_param->{'yPad'});
$y = int((($rowHeight - $widgetHeight) / 2) + $y) if $align =~ /c/i;
$y = int((($rowHeight - $widgetHeight) - ($grid_param->{'yPad'})) + $y) if $align
=~ /b/i;
$widgetHeight=0; #same reason as coment in &column
return $y;
}
sub width {
my ($grid_param,$w) = @_;
$widgetWidth = $w;
return $widgetWidth;
}
sub height {
my ($grid_param,$h) = @_;
$widgetHeight = $h;
return $widgetHeight;
}
1;