Hi All,
I'm cross-posting this to the wxPython and Kiwi mailing lists, because it's relevant to both groups. Apologies to the Kiwi-people if it's more to do with wxPython.
Here's my question in short and long form:
Short version:
Does anyone know of a visual proxy implementation for wxPython?
Long version:
I've been working for some time on a wxPython application which uses the MVP pattern described here:
http://wiki.wxpython.org/wxPython_Patterns
I often needed to develop create/update/edit/delete GUIs for objects (or lists/dicts of them), and ended up with a little framework for making these forms. You basically provide it with a list of objects of the same type, and provide it with a list of attribute name and types, and it will generate a GUI so users can add/edit/delete entries on a list.
It's worked reasonably well so far, but the code's a bit messy now.. and in general, my MVP application isn't as clean/understandable as I'd hoped. Just having all these views, presenters, models and interactors for every single form seems a bit more complex than it needs to be.
A little while ago I came across this article on the Visual Proxy pattern, and how you can use it to make model classes that know how to generate their own GUI. It's a bit of a lengthy article, and it's geared towards Java Swing programs, but I think the idea itself is rather cool:
http://www.javaworld.com/javaworld/jw-09-1999/jw-09-toolbox.html
I did a bit of Googling, and found Kiwi. It's a PyGTK implementation of that idea, and it looks wonderful. Have a look at how in this example, there's no GUI widget related code at all. Fantastic!
http://www.async.com.br/projects/kiwi/example-personalinformation.html
I need to stick with wxPython because my application is well and truly underway (and I like wxPython's true native GUI underneath, no QT licensing issues for commercial apps etc.)
To the Kiwi developers:
- Do you think it's feasible to create a "wxPython backend" for Kiwi? Or is it too intertwined with PyGTK?
To the wxPython developers:
- Are there any wxPython implementations of this Visual Proxy idea out there? Would anyone be interested in seeing an open source one created? I could clean up my MVP-based framework and use that as a starting point.
Thanks to both camps for fantastic frameworks!
Robert