85 lines
2.1 KiB
Perl
85 lines
2.1 KiB
Perl
|
|
||
|
use Win32::GUI;
|
||
|
|
||
|
$BS_GROUPBOX = 7;
|
||
|
|
||
|
sub AutoFormCheckboxGroup
|
||
|
{
|
||
|
my($pWnd) = shift(@_);
|
||
|
my($bRadio) = shift(@_);
|
||
|
my($sName) = shift(@_);
|
||
|
my($nLeft) = shift(@_);
|
||
|
my($nTop) = shift(@_);
|
||
|
my($sText) = shift(@_);
|
||
|
|
||
|
my($nMaxLength) = length($sName) + 2;
|
||
|
for (my $i = 1 ; $i < scalar(@_) ; $i += 2)
|
||
|
{
|
||
|
if (length($_[$i]) > $nMaxLength)
|
||
|
{
|
||
|
$nMaxLength = length($_[$i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
my($nWidth) = ($nMaxLength * $g_nHorzCharSize) + $g_nHorzSpacing * 2;
|
||
|
my($nHeight) = (scalar(@_) / 2 + 1) * ($g_nVertSpacing + $g_nVertCharSize) + $g_nVertSpacing;
|
||
|
|
||
|
FormCheckboxGroup($pWnd, $bRadio, $sName, $nLeft, $nTop, $nWidth, $nHeight, $sText, @_);
|
||
|
}
|
||
|
|
||
|
# pWnd, bRadio, sName, nLeft, nTop, nWidth, nHeight, sText, [cbx1name, cbx1text], [...]
|
||
|
sub FormCheckboxGroup
|
||
|
{
|
||
|
my($pWnd) = shift(@_);
|
||
|
my($bRadio) = shift(@_);
|
||
|
my($sName) = shift(@_);
|
||
|
my($nLeft) = shift(@_);
|
||
|
my($nTop) = shift(@_);
|
||
|
my($nWidth) = shift(@_);
|
||
|
my($nHeight) = shift(@_);
|
||
|
my($sText) = shift(@_);
|
||
|
|
||
|
if (scalar(@_) % 2 == 1)
|
||
|
{
|
||
|
print(STDERR "bad windows dimensions\n");
|
||
|
return(0);
|
||
|
}
|
||
|
|
||
|
$pWnd->AddButton(
|
||
|
-name => $sName,
|
||
|
-left => $nLeft,
|
||
|
-top => $nTop,
|
||
|
-width => $nWidth,
|
||
|
-height => $nHeight,
|
||
|
-text => $sText,
|
||
|
-style => WS_VISIBLE | WS_CHILD | $BS_GROUPBOX,
|
||
|
);
|
||
|
|
||
|
for (my $i = 0 ; $i < scalar(@_) ; $i += 2)
|
||
|
{
|
||
|
if ($bRadio)
|
||
|
{
|
||
|
$W->AddRadioButton(
|
||
|
-name => $_[$i],
|
||
|
-left => $nLeft + $g_nHorzSpacing,
|
||
|
-top => $nTop + ((($i / 2) + 1) * ($g_nVertSpacing + $g_nVertCharSize)),
|
||
|
-text => $_[$i + 1]." ",
|
||
|
);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$W->AddCheckbox(
|
||
|
-name => $_[$i],
|
||
|
-left => $nLeft + $g_nHorzSpacing,
|
||
|
-top => $nTop + ((($i / 2) + 1) * ($g_nVertSpacing + $g_nVertCharSize)),
|
||
|
-text => $_[$i + 1]." ",
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if ($_[0] && $bRadio)
|
||
|
{
|
||
|
$pWnd->{$_[0]}->Checked(1);
|
||
|
}
|
||
|
}
|