[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Framework classes, flavors, objects, etc..



Am I the only one confused by the lack of symmetry between DW and EW
objects and the naming of 'em?

For instance,

A DW:PROGRAM appears to be analagous to an EW:BASIC-FRAME-PROGRAM (at least
this is the type of object to which EW:*PROGRAM* is bound).  Although an
EW:PROGRAM-FRAME object appears to hold some of the corresponding that is
present in DW:PROGRAM.  More later on how to get the corresponding
EW:PROGRAM-FRAME object.

A DW:PROGRAM-FRAME appears to be roughly analagous to an
EW:PROGRAM-FRAMEWORK-INSTANCE (this is the type of object to which
EW::*PROGRAM-FRAME* is bound).

I'm not sure what the analagous object in DW is to EW:PROGRAM-FRAMEWORK.

In the ROOT-WINDOW slot of an EW:PROGRAM-FRAMEWORK-INSTANCE instance (e.g.,
EW:*PROGRAM-FRAME*) is an instance of EW:PROGRAM-FRAME (remember
EW:PROGRAM-FRAME from above).

In the PROGRAM-FRAMEWORK-INSTANCE slot of an EW:PROGRAM-FRAME is an
instance of not EW:PROGRAM-FRAMEWORK-INSTANCE, but EW:BASIC-FRAME-PROGRAM,
of course.  Can you believe that!?  Yech!!  This must be one of those "it
is intuitively obvious to the casual reader ..." things.

Confused yet?  Do these names drive you batty?  They do me!

We have also found while a call to DW:FIND-PROGRAM-WINDOW returns an object
of type DW:PROGRAM-FRAME, the analagous call to EW:FIND-PROGRAM-WINDOW
returns an EW:BASIC-FRAME-PROGRAM instance, when it should return, if it
wanted to be analagous to DW, an instance of EW:PROGRAM-FRAMEWORK-INSTANCE.

So, here's a proposed INCOMPATIBLE change to FIND-PROGRAM-WINDOW (found in
ew/code/frames.lisp) which has it return the appropriate
EW:PROGRAM-FRAMEWORK-INSTANCE instance (got that!).  No other part of EW
references FIND-PROGRAM-WINDOW, so user calls (the important ones!) should
be the only affected ones.

(defun find-program-window (program-name &REST make-window-options &KEY (create-p T)
			    (activate-p t) (selected-ok T) reuse-test console
			    superior program-state-variables &ALLOW-OTHER-KEYS)
  (declare (ignore program-state-variables superior console reuse-test
	           selected-ok activate-p make-window-options)) ;4/30/90 (SLN)
  (let ((framework-definition (find-program-framework program-name)))
    (unless framework-definition
      (error "Framework ~A Does not Exist." program-name))
    (let ((instances (program-framework-program-instances framework-definition)))
      (cond (instances  ; 7/10/90 [SLN] - return the EW:PROGRAM-FRAMEWORK-INSTANCE
	     (program-frame (first instances)))
	    (create-p  ; 7/10/90 [SLN] - return the EW:PROGRAM-FRAMEWORK-INSTANCE 
	     (program-frame (create-program-framework-instance framework-definition)))
	    (T NIL)))))

Okay, so my comments are a little sarcastic and all.  It's just that
sometimes it gets a little frustrating working with EW.  Comments?  Other
observations?

Steve
--
Stephen L. Nicoud  <snicoud@atc.boeing.com>  uw-beaver!bcsaic!snicoud
Boeing Advanced Technology Center for Computer Sciences