ZooZ is an on-going effort, and will probably stay so for a long time. At this stage, though, I consider it to be very usable. There are some major limitations though. For a comprehensive list of missing features, you can look at the Progress.txt file that comes in the root directory of the distribution. If you think there is something else that should be included in that file, then drop me a note.

You can create a project, then save the code as a Perl Module with a .pm extension. This will create a composite mega widget, with the same name as your project, but with any non-alphanumeric characters switched to underscores. For example, Project 1.5 will be changed to Project_1_5. You can then use this in a larger program as a regular widget.

For example, if you dumped your module into myMod.pm, and your project was called Project 1.5, then you would do this in your main code:

use myMod;
my $project = $parent->Project_1_5->pack;

Note also that the mega widget will Advertise() every widget in your project. So, if your project had a canvas called Canvas1, you can access it like this:

my $cv = $project->Subwidget('Canvas1');

ZooZ automatically defines a hash called %ZWIDGETS that holds the project's widgets. This allows the user to access any widget inside of a callback via $ZWIDGETS{WidgetName} where WidgetName is the name of the widget.

You can click on the row and column numbers to configure their properties.

If you want a row or column to take up more space than it currently does, then increase its greediness. Remember that widgets are confined to the space of the grids they occupy.