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;

Reply via email to