NAME

The GUI Loft Developer's Reference -- how to extend The GUI Loft


COMMON PROCEDURES


ADDING A NEW CONTROL

Do a spike solution

Read up on the control. Look in the samples, docs, GUI.pm and GUI.xs. Test it in a simple program.

The Designer

Add the control to the resource/tools.gld. Copy an existing bmp file from the icon directory as a placeholder until you have time to redraw it.

Make sure the tab-order and name is ok. Use the name of the control you add.

The small width of the pallette is a problem since you can't resize it to the proper width. Workaround. Place the window at the correct spot, then set the Width property manually to 47 pixels. Save.

Add a new event handler to TGL/WindowTool.pm. Be careful to get names (including case) correct.

Start TGL and try to add the control to the desigh. The error message should be that the class Win32::GUI::Control::YOURCONTROL isn't found.

The Runtime

Add ``use'' etc. to PPM\Loft\lib\Win32\GUI\Loft\Design.pm

Copy an appropriate (similar) control from PPM\Loft\lib\Win32\GUI\Loft\Control and modify it.

Add the file name to PPM\Loft\MANIFEST, run ``perl Makefile.PL'' again.

Modifying an existing control

You may want to subclass an existing control, or simply use an existing control as rudimentary copy-paste. Start with a global search-n-replace of OldControl -> NewControl and oldcontrol -> newcontrol, but make sure you actually study all of the source code after doing this.

First decide which properties to use, then modify enough (not the paint routine) to get the code running. Add a control and preview the window to see it in place.

Now you're ready to modify the paint method.

Add a section in the User Manual file resource/manual.pod


COMMON BUGS

The design window flickers when I add a certain type of contol

You have made a syntax error or is calling a nonexistant method or somesuch. The error is trapped in an eval, causing the update to take too long time. Spellcheck your last edit.


COPYRIGHT

Win32::GUI::Loft is Copyright (c) Johan Lindström, johanl@bahnhof.se

The Perl Artistic license applies.