On Mon, Sep 7, 2009 at 11:48 PM, Eric Marsdeneric.marsden@free.fr wrote:
"as" == Alessio Stalla alessiostalla@gmail.com writes:
as> It is a declarative DSL for creating GUIs (Swing-only for now) built as> on ABCL 0.16. It supports Cells by Ken Tilton and MiG Layout (a as> declarative, CSS-like layout manager for Swing and SWT).
Hi Alessio,
This looks very interesting, thanks! I have written a Swing interface with ABCL for some data visualization at work (also using MigLayout, which is great), and it looks like Snow would result in less verbiage. In particular, the ugliest parts of my code are for event handling and triggering changes elsewhere in the application, it it looks like your use of JGoodies & Cells might make that much cleaner.
That's what I hope, too ;) however, I'm still unsure about the API for that part (in fact it is not exported). In particular, I used the word "binding" (from "data binding") to indicate the relation between a GUI property and an application property, but "binding" already has another meaning in Lisp and it can be confusing. I thought about "connection" (and a :connect-to property), but I'm not sure.
There are some very useful-looking functions for Java interfacing in sexy-java.lisp.
Well, that's my NIH-syndrome answer to invoke.lisp. It is handy indeed, but you pay a runtime performance penalty (since the correct method/constructor is determined at runtime via reflection). It could be optimized more if the ABCL compiler did type inference for Java objects, and exposed the API for querying the compiler about the inferred type of a variable; but that is hardly worth the effort imho.
I have had trouble overriding the repaint() method, to draw in a Panel (runtime-class.lisp is a little fragile, it seems). Have you worked on that?
My initial idea about that is to do it in Java and use the widget via the with-widget macro. This is sub-optimal for Lisp applications, but it's something Snow alone cannot do - it needs support from ABCL. Which problems have you found with runtime-class? I never used it.
On second thought, what I could do in Snow is to implement a sort of "dynamic widget" that delegates the most important methods (paint() included) to Lisp functions. Not optimal either, but better than nothing.
So, thank you for taking the time to look at Snow. I hope it is a nice addition to ABCL. Unfortunately the widgets it supports are embarassingly few. If you are interested in some widgets in particular, I'll give priority to those.
Btw, I plan to set up a c-l.net project for it soon, so it will get its own mailing list - I posted here because it's where people working on/with abcl are most likely to look for news, but having a dedicated forum is the right thing.
Bye, Alessio