GUIDeFATE
view release on metacpan or search on metacpan
lib/GFtk.pm view on Meta::CPAN
sub aBt{
my ($self,$canvas, $id, $label, $location, $size, $action)=@_;
$canvas->{"btn$id"}=$canvas->Button(-text => $label,
-width => ${$size}[0]/6.68-4,
-height => ${$size}[1]/16,
-pady => 1,
-command => $action);
$canvas->createWindow(${$location}[0] ,${$location}[1],
-anchor => "nw",
-window => $canvas->{"btn$id"});
}
sub aTC{
my ($self,$canvas, $id, $text, $location, $size, $action)=@_;
$canvas->{"textctrl$id"}=$canvas->Entry(
-bg => 'white',
-width => (${$size}[0]+32)/8);
$canvas->createWindow(${$location}[0] ,${$location}[1],
-anchor => "nw",
-window => $canvas->{"textctrl$id"} );
}
sub aST{
my ($self,$canvas, $id, $text, $location)=@_;
$canvas->{"stattext$id"}=$canvas->createText(${$location}[0] ,${$location}[1],
-anchor => "nw",
-text => $text,
-font =>'medium'
);
}
sub aCB{ #adapted from http://www.perlmonks.org/?node_id=799673
my ($self,$canvas, $id, $label, $location, $size, $action)=@_;
if (defined $oVars{$label}){
my @strings2 = split(",",$oVars{$label});
$iVars{"combo$id"}=$strings2[0];
$canvas->{"combo$id"}=$canvas->BrowseEntry(
-variable => \($iVars{"combo$id"}),
-listheight => scalar @strings2,
-listwidth => (${$size}[0]-20)/2,
-browsecmd => $action);
foreach (@strings2){ $canvas->{"combo$id"}->insert("end",$_);}
$canvas->{"cont$id"}=$canvas->{"combo$id"}->Subwidget('slistbox')->Subwidget('scrolled');#??
$canvas->createWindow(${$location}[0] ,${$location}[1],
-width => (${$size}[0]-20)*1.5,
-height => ${$size}[1],
-anchor => "nw",
-window =>$canvas->{"combo$id"});
}
else {print "Combo options not defined for 'combo$id' with label $label\n"}
}
sub aMB{
my ($self,$canvas,$currentMenu, $id, $label, $type, $action)=@_;
if (($lastMenuLabel) &&($label eq $lastMenuLabel)){return $currentMenu} # bug workaround
else {$lastMenuLabel=$label}; # in menu generator
if ($type eq "menuhead"){
$currentMenu="menu".$id;
$self ->{$currentMenu} = $self ->{"menubar"}->cascade(-label => "~$label")
}
elsif ($type eq "radio"){
$self ->{$currentMenu}->radiobutton(-label => $label);
}
elsif ($type eq "check"){
$self ->{$currentMenu}->checkbutton(-label => $label);
}
elsif ($type eq "separator"){
$self ->{$currentMenu}->separator;
}
else{
if($currentMenu!~m/$label/){
$self ->{$currentMenu}->command(-label => $label, -command =>$action);
}
}
# logging menu generator print "$currentMenu---$id----$label---$type\n";
return $currentMenu;
}
sub aSP{
my ($self,$canvas, $id, $panelType, $content, $location, $size)=@_;
if ($panelType eq "I"){ # Image panels start with I
if (! -e $content){ return; }
no warnings; # sorry about that...suppresses a "Useless string used in void context"
my $image = Image::Magick->new;
my $r = $image->Read("$content");
if ($image){
my $bmp; # used to hold the bitmap.
my $geom=${$size}[0]."x".${$size}[1]."!";
$image->Scale(geometry => $geom);
$bmp = ( $image->ImageToBlob(magick=>'jpg') )[0];
$canvas->{"image".($id+1)}=$canvas->createImage(${$location}[0],${$location}[1],
-anchor=>"nw",
-image => $canvas->Photo(#"img$id",
-format=>'jpeg',
-data=>encode_base64($bmp) ));
}
else {"print failed to load image $content \n";}
}
if ($panelType eq "T"){
$id++;
$canvas->{"TextCtrl$id"}=$canvas->Text(
-bg => 'white',
-width => (${$size}[0])/7,
-height => (${$size}[1]+12)/15);
$canvas->{"TextCtrl$id"}->insert('end',$content);
$canvas->createWindow(${$location}[0] ,${$location}[1],
-anchor => "nw",
-window => $canvas->{"TextCtrl$id"});
}
}
}
#functions for GUIDeFATE to load the widgets into the backend
sub addWidget{
push (@widgets,shift );
}
( run in 0.784 second using v1.01-cache-2.11-cpan-e1769b4cff6 )