[GUI] Dynamic ... something

Wolfgang Thaller wolfgang.thaller@gmx.net
Sat, 12 Apr 2003 16:37:33 +0200


Hello everyone!

The Easter Holidays are beginning, and finally I have some time to 
spare again....

So allow me to try to summarize the discussion about dynamic layout:

We'll have one or more of the following (correct me if I left something 
out, or if I'm misrepresenting something):

1) programmatic creation of widgets with fixed positions

2) programmatic creation of widgets using dynamic layout
(where the layout manager provides the same features across all 
platforms; implemented in Haskell at least for those platforms that 
don't have a native layout manager)

3) creation of widgets from platform-specifc resource files
.. using platform-specific extensions

Something like:
nib <- loadAppleNibFile_MAC "foo.nib" -- a nib file is a document 
created by Apple's Interface Builder and contains one or more dialogs
dialog <- createDialogFromNib_MAC nib "MyDialog"
If "MyDialog" doesn't refer to a dialog in the file, a runtime error 
occurs...

(_MAC indicates a Mac-specific extension, in analogy to the naming 
convention for OpenGL extensions).

4.) automatic layout using a self-made resource file format

... and perhaps, in the far future, a GUI layout editor to go along 
with it

5.) some conversion of platform-specific formats to Haskell code
(frankly, I fail to see the point)

=====

What about making layout management a feature of a containter widget?
When adding widgets to a FixedLayoutContainer, you'd have to specify 
the coordinates, when adding widgets to a GridLayoutContainer, you'd 
specify row & column, etc.
We could start with just a FixedLayoutContainer (that's easy), and then 
we can go on and add "more intelligent" layout mechanisms.

Another, similar approach would be to make the "layout manager" an 
_attribute_ of a container widget (as is done in Java's AWT, if I 
remember correctly). Don't know if that has any advantages for our 
situation.

Cheers,

Wolfgang