Hi Jeremy,
Nice!  I've been hoping for something like this.  I'll give it a shot.

On 4/27/06, Jeremy White <jez_white@hotmail.com> 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.




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)");
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),
   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') {
   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)."];
print 'return ($w,$cl) if $cl; return $w;}'."\n";