Peter Hildebrandt wrote:
Well, there's something wrong with the cells cvs again, so it would not let me commit my latest changes. You can grab the latest version here:
Hmmm, a little trouble there. PicoZip on WinXP cannot read it, WinZip on Vista (my new laptop for the eclm talk) complains but then seems to open it. The complaint looks like winzip just is not handling Vista.
Maybe just tar.gz it? I appreciate the trouble you took making a zip, btw.
Question 2: the above does not include a Cells directory (unless the expansion broke). I will be trying to build it (looks like I have to hack the ACL .lpr files for a while) in the meantime.
My suggestions:
(1) Cairo Drawing Area
I have the cairo drawing area thing working by now and put in a simple example (creates boxes and circles and random positions, then they react on mouse over, can be selected, dragged around, and you can use a select box (like in windows explorer) to select and move many shapes at once). I finally took the time and get the kids slot to work properly, so you can have ruled kids slots on your drawing primitives and have cells create other shapes for you (say, you want to draw a sun -- then you start with a yellow filled circle and have a kids rule creating some lines for the rays. The number of rays may depend on a widget (and so can the length), and you have a "declarative drawing").
Isn't that fun? I remember when we made kids a Cell (almost immediately). I was sure the wheels would fall off. It Just Worked(tm) and I started to suspect Cells would scale pretty well.
(2) Tree View
From the stuff present in the demo I personally like the tree view
example, since it lets you explore the actual object hierarchy of the demo. I don't even know whethe something like this could be done in C at all.
Omigod! I did an inspector at one point and used it to inspect the inspector window itself. Then I navigated down to the actual widgets in view and watched as the inspector showed things like the mouse-over state dynamically (without asking the inspector to refresh). I seem to recall adding some Cells internals to make it work, tho. In this screenshot:
http://www.tilton-technology.com/cloucell.jpg
...the widget being inspected is the four-widget row just above "Class: Ixrow".
(3) Cells Tree View
Works like a charm -- as long as you don't delete stuff from the observed structure (I ran into a conceptual problem with cells3 here, gonna ask you on the cells list when I have the time to deal with that). Anyway, I deactivated the delete button, and the rest is still pretty nice.
I look forward to the IR, maybe you have run into something I want to add to Cells to better handle things going away (a frequent problem). In my latest app I am running into a lot of problems with what is generally called referential integrity, specifically external references to kids that have been not-to-be'd. eg, my window's keep a reference to the "focus", which might be in a math problem the student decides to delete. uh-oh. Sprinkling (setf (focus w) nil) all over the place broke down when it ended up erasing a new value that had been set by code that tried to handle the problem by, say, moving the focus to the next problem when deleting the current problem.
Man, imperative programming sucks. :)
(4) Threading
It is relly nice and lispy to use the repl to change properties of the windows currently displayed and to add and remove widgets interactively (especially if you have a background in C) -- but I don't know whether that works in MS Windows. Just checked, bordeaux-threads on windows does not support Allegro. Bummer.
I will be doing repl stuff during my talk -- ACL runs a separate process from the IDE to execute Lisp. We just need to have a breather in the event loop handling to give the IDE enough cycles to be responsive.
(5) MAYBE: cells-ode + open gl
That'd be really neat -- if I figure out the opengl drawing area and port my current physics simulator code to cells-ode as a backend plus gtk-gl as a front end. They say there's a weekend coming up, so stay tuned.
OK, don't make yourself crazy on my account. In fact, I already have Cells-gtk as I had it last running on my laptop, I might just leave it at that. I am going to try to get to Celtk, Cello, TripleCells (lite integration with an RDF triple-store), Cells-Gtk, and OpenAIR (the cells/ajax bit andy is doing). Whew!
cheers, ken