Hi Jeremy, Nice! I've been hoping for something like this. I'll give it a shot.
Brian On 4/27/06, Jeremy White <[EMAIL PROTECTED]> wrote: > > > >I've played around with TheGUILoft and was impressed with what it does > for > >the most part. My biggest problem is that it doesn't export win32-gui > >code. I'd like the option of beging able to do both. > > The script below converts a .gld file into perl code. The script itself is > a > bit of a hack...:) The idea of this script is that I'm able to design > (complex) windows in loft and use the output in my code, with no runtime > dependency on loft. > > Cheers, > > jez. > > ------------- > > use Storable qw(nstore store_fd nstore_fd freeze thaw dclone store); > use Cwd; > use Win32::GUI; > use Win32::GUI::Loft; > > my $filename='your.gld'; > print "package Windows; \n"; > my $design=Win32::GUI::Loft::Design->newLoad($filename) or die("Could not > open window file ($filename)"); > stripdesign($design); > print "return 1; \n"; > > sub stripdesign { > my $objDesign=shift; > #Window, dialog, or toolbar? > > my $dialog = $objDesign->objControlWindow()->prop("DialogBox"); > my $pkgNew = "Win32::GUI::Window"; #"window" > if($dialog eq "dialog") { > $pkgNew = "Win32::GUI::DialogBox"; > $widthChange += -3; > $heightChange += -1; > } > elsif($dialog eq "toolbar") { > $pkgNew = "Win32::GUI::ToolbarWindow"; > $widthChange += -1; > $heightChange += -4; > } > #Adjust the window size > #$objDesign->objControlWindow()->propIncSnap("Width", $widthChange, 0); > #$objDesign->objControlWindow()->propIncSnap("Height", $heightChange, 0); > my @aOptionRaw=$objDesign->objControlWindow()->buildOptions($objDesign); > my $name = $objDesign->objControlWindow()->runtimeName($objDesign); > print "sub $name { \n"; > print 'my $w='.$pkgNew."->new('".join("','",@aOptionRaw)."'".',@_);'." > \n"; > for my $objControl (@{$objDesign->raControl()}) { > my @aOptionRaw = ($objControl->buildOptions($objDesign), > $objControl->buildOptionsSpecial($objDesign)); > my $tip=$objControl->{rhControlProperty}{'Tip'}; > if ($tip) { > #print $tip.'WE HAVE TIP'; > my $tipvalue=$objControl->{rhControlProperty}{'Tip'}->value; > push @aOptionRaw,('-tip' => "$tipvalue" ) if $tipvalue; > } > my $method=$objControl->addMethod(); > if ($method eq 'Win32::GUI::Graphic') { > $method='AddGraphic'; > } > print '$w->'.$method."('".join("','",@aOptionRaw)."'); \n"; > } > #do clusters > > print 'my $cl;'."\n"; > for my $objCluster (@{$objDesign->raCluster()}) { > #print 'cluster name'.$objCluster->name().'<'; > my @controls; > for my $objControl (values %{$objCluster->rhControl()}) { > push @controls,'$w->'.$objControl->runtimeName($objDesign); > } > print > '$cl->{'."'".$objCluster->name()."'".'}=['.join(',',@controls)."]; > \n"; > } > print 'return ($w,$cl) if $cl; return $w;}'."\n"; > } > > >