On Feb 1, 2004, at 6:58 AM, Duncan Rose wrote:
[snip]
The above may be generally true (or maybe not), but I've now taken this code out of my back end and its behaviour is unchanged. So I now *do not* think that run loops or threading is an issue for Cocoa GUIs.
The general structure of the back end I'm working on as it stands is as follows:
- Click on the natty bundle icon (making use of the Bosco bundle
from Mikel) 2. the application delegate does a (clim-listener:run-listener-process) in the application-did-finish-launching, running CLIM as a separate process 3. All the CLIM infrastructure gubbins gets started, including running the CLIM event loop in yet another thread
When the NSApplication receives events, it distributes them to the NSWindow and NSView subclasses I defined in my McCLIM back end. I think that these calls are made in a different thread again, but I could be wrong. However, I can only assume that even though the window instances are created in a different thread to the main thread, they are still added to the main thread's responder chain.
So at the moment, all I can say is: I don't understand quite what's going on or why, but things seem to be working.
This seems like a pretty good start.
I have a Cocoa system definition that snaps into the McCLIM build system. You can load and build the McCLIM system in the normal way, and also build and load the Cocoa back end. If you do that, a McCLIM.app gets built in the same way that Bosco.app gets built. You can launch McCLIM.app and it starts up with a proper name and Dock icon. The app's runtime loads no nibs; it just sets up the bare minimum Cocoa event-processing environment (because it seems to me that nibfiles are not really congruent with the CLIM way of building interfaces). You can also load and run the CLIM listener--but then things break because the concrete classes that realize CLIM sheets and frames are not working.
It seems like we have sort of two ends of the thing pretty well started; now might be a good time to combine them and check in to the McCLIM project so other people can contribute.
It also seems like we're not that far from having a good start on a CLIM-based IDE if we can get the Listener and Goatee up and limping.
I posted separately that I've packaged a 0.1 release of Clotho. Seems like that's two places to start. I don't see any reason we can't pursue both (and others as well) until it becomes clear that either one is a better idea than the other, or that each has its own use.