skaller wrote : > IMHO the *key* problem with GUI's -- and why real (TM) developers > hate using them -- is the lack of automation: unix script > sucks, but it does provide automation. If we're going to make > a new GUI it has to have full automation capability. I totally agree : in software development, GUI programming is one of the most boring phases. According to my experience, the main issue is GUI to core program communication, you have to : - programmatically get pointers to hundreds of GUI elements - programmatically install event callbacks for the same widgets - programmatically keep GUI element contents in synchronization with internal variables All this stuff is very easy to do, but often long, boring. Fortunately, you don't any more need to programmatically define your widgets (and their attributes, position), thanks to WYSIWYG GUI creation tools (Qtdesigner for Qt, Apple's Interface Builder, Visual Studio...). I think, the good idea is the automation of all this work. I'll give the solutions retained by Apple for Interface Builder : - the global variables/class member containing reference to widgets are automatically set-up. You just have to define them in your code and tell the GUI creation tool to which widgets each variables is bind to. - the user directly define the callbacks function in the GUI editor tool : you just have to give the name of the callback function. - any class member may be bind to the content of a widget : if the user types characters in a text field, the matching class member (a variable of type string) is automatically updated to contain the newly typed characters. If the programmer modify the value of this variable, the text field is automatically updated to the new value of the variable. Several widgets may be bond to one variable, several variable to one widget, and even a variable/widget may be bond to a file entry to enable persistent storage of the value (it's used for user preference storage). It's also possible to create transformers in order to do some type convertion when you use, for instance, a text field bond to a integer variable. I don't know if it is implementable in ocaml as is, or if it is really the good solution (it has been designed for the Objective-C language, using some of its very particular features). However, I think it gives a good idea of what is missing in current GUI APIs and GUI creation tools. Apple explanation of bindings : http://developer.apple.com/cocoa/cocoabindings.html -- Damien alias Schmurtz aim:goim?screenname=schmuuurtz