CLIM mail archive
Re: proposals for meta-applications, frameworks, windows
This is off the top of my head, so don't hold me to it being a complete,
formal proposal - it ain't.
There are two different situations: one is that you want to have most of a
CLIM applications real-estate power in more than one frame; the other is where
you want to have semi-independent applications using all of CLIM's power but
able to be controllable at the window manager level.
Let me give examples of each:
Real-estate in more than one frame - I have an application that needs lots of
different layouts, sometimes I'd like to have more than one of those layouts
on the screen at the same time, and every possible set of up to (say) three is
Semi-independent applications - I have an application that allows someone to
browse a database and to modify it. Examining, adding, or changing particular
pieces of information in that database, I'd spawn seperate examiner/editor
applications - when they're done they return.
I guess the big difference to me is whether or not the family of applications
shares a command table and a process. In my first example, they would. In my
second, they wouldn't.
However, there's also the matter of controlling a family of applications as a
unit. Within the context of the window system, these windows are a loosely
coupled unit. If I kill one I should probably find myself looking at a sib or
parent. If I kill a parent, its children should die (or I shouldn't be allowed
to kill it without being notified of its children's imminent death). If a
frame is temporary it should get killed off when clicked off of (same as a
(make-annotation-frame ... (:parent *application-frame*) (:temporary nil) ...)
(make-annotation-frame ... (:sibling *application-frame*) ...)
;; Functions for getting at other members of the application-frame's family.
(frame-children (frame application-frame)) <= method
(frame-descendents (frame applcation-frame)) <= method
(parent (frame application-frame)) <= method
(frame-siblings (frame application-frame)) <= method
Modify frame-exit to take a (:switch-to frame) argument.
Main Index |