Gregory Petrosyan a écrit : (snip) > Your dicts example is nice, but this approach (and some others) lacks > one important feature: ordering of GUI elements. In XML, the order of > all elements is specified, and with dicts (or with very clean Georg's > model) it is not. (BTW remember topics about ordered dicts...)
(rereading this thread...) Err... Wait a minute. Are you actually *sure* that there's a problem with ordering here ? I mean (please stop me if I missed the point): a Window is an object, right ? It has attributes (which are named, and definitively *not* ordered - remember, object attributes are actually stored in a dict). Now *some* of these attributes may well be collections of other objects (ie: widgets...). And these collections *can* be ordered. window = { '__class__' : 'Window', 'id' : 'dummy', 'title' : 'My Dummy Window', 'w' : 640, 'h' : 480 'widgets': [ {'__class__' : 'Widget', 'id : 'dummy1', 'handlers' : { 'on_click' : # damn..., }, }, {'__class__' : 'Widget', 'id : 'dummy2', 'handlers' : { 'on_clock' : # dring..., }, }, ], } Braindead Stupid Simple, Isn't it ? (DH was *somehow* right: this is not JSON, but this is exactly what JSON is to javascript). As you see, what needs to be ordered is ordered. Now what we'd need would be a way to represent callback (handlers) functions. The simplest would probably be to forbid anonymous functions for callbacks, so we could just store the fully.qualified.name.to.callback as string... My 2 cents -- http://mail.python.org/mailman/listinfo/python-list