The GUI to end all GUI libraries (Let's Dream!)

Christopher Wright dhasenan at gmail.com
Mon Nov 26 19:15:08 PST 2007


Bill Baxter wrote:
> The basic idea is that you define rules rather than explicit event 
> handlers, and execution of those rules is triggered by built-in 
> dependency analysis.  The analogy made on the web page is to a 
> spreadsheet.  When you use a spreadsheet you just say how the values in 
> this cell depend on all the others and then it all gets automagically 
> updated for you recursively whenever any dependency changes.

So a largely functional GUI framework. I think that could work decently, 
though you'd need to define multiple input sources, one of them being 
the non-GUI portion of your application.

> So I wonder if something like this could be done in D.  Or is there 
> something about the dynamic nature of Python which allows this sort of 
> idea, but makes it unworkable in a static language like D?

You could do this in D or Java or C# or C or assembly, I'm sure.

> Anyway it's a neat idea that seems to me to have potential to take us 
> beyond the same old event-driven paradigm that's been rehashed for years 
> and starts to get quite cumbersome beyond a certain point.

One complex part is ordering event handlers. I have an event that five 
things listen to, but one handler has to fire before another, which has 
to fire before a third.

I haven't seen much else cumbersome with it yet, but I'm still young :) 
What problems have you encountered?

> Another interesting GUI-related lib from Python-land that I have my eye 
> on is Traits from Enthought [2].

I don't see how this would work. Do you register an event handler, 
essentially, and that is used to determine which GUI components to show?

For me, I want codegen for my GUI stuff, and as little code as possible 
interacting directly with that generated code as possible. I also want 
something that makes model/view/presenter easy to use, or at least that 
lets me use mock objects with minimal fuss.

And I want a dependency injection framework.

> --bb
> 
> Links:
> [1] http://cheeseshop.python.org/pypi/Trellis/0.5b1
> [2] http://code.enthought.com/traits/



More information about the Digitalmars-d mailing list