CDCallSpecific.mesa a Chipndale module
by Ch. Jacobi September 20, 1983 12:35 pm
last edited Christian Jacobi May 8, 1984 9:31:22 am PDT
DIRECTORY
CD;
CDCallSpecific: CEDAR DEFINITIONS =
BEGIN
CallProc: TYPE = PROC [design: CD.Design, aptr: CD.ApplicationPtr, x: REF]
RETURNS [done: BOOLTRUE, removeMe: BOOLFALSE, include: CD.ApplicationList←NIL,
repaintMe: BOOLFALSE, repaintInclude: BOOLFALSE];
--x: passed through
--done: if not done, this call will not be counted
--removeMe: aptr is removed from the design
--include: this list is included into the design
CallForThis: PROC [design: CD.Design, aptr: CD.ApplicationPtr,
objectSpecific: REFNIL, whatElse: CallProc←NIL, x: REFNIL]
RETURNS [NAT];
--aptr MUST be part of design
CallForAll: PROC [design: CD.Design,
objectSpecific: REFNIL, whatElse: CallProc←NIL, x: REFNIL]
RETURNS [NAT];
CallForSelected: PROC [design: CD.Design,
objectSpecific: REFNIL, whatElse: CallProc←NIL, x: REFNIL]
RETURNS [NAT];
CallForOneSelected: PROC [design: CD.Design,
objectSpecific: REFNIL, whatElse: CallProc←NIL, x: REFNIL]
RETURNS [NAT];
CallIfOneSelected: PROC [design: CD.Design,
objectSpecific: REFNIL, whatElse: CallProc←NIL, x: REFNIL]
RETURNS [NAT];
CallForPointed: PROC [design: CD.Design, point: CD.DesignPosition,
objectSpecific: REFNIL, whatElse: CallProc←NIL, x: REFNIL]
RETURNS [NAT];
--the Call.. procedures loop over all applications of the most pushed in cell, or what
--ever their name suggests and:
--first check if the object has a objectSpecific furtherProc and calls it,
--if there is no objectSpecific furtherProc, or it returns NOT done, it calls whatElse.
--objectSpecific=NIL means no search
--whatElse=NIL means nothing else to call.
--using removeMe is a slow method for deleting
--usually setting removeMe demands setting repaintMe to remove it from screen
Register: PROC [key: REF, objectType: REF CD.ObjectProcs, proc: CallProc];
--registers proc to be called for an objectType, if key=objectSpecific
--key must have been registered with CDObjectProcs.RegisterFurther
--[internally uses CDObjectProcs.StoreFurther; this procedure is for conveniance only]
END.