(FILECREATED " 6-Mar-85 13:50:02" {PHYLUM}<TRILLIUM>BIRTHDAY84>ENHANCEMENTS>RECORDS-NHB>TRI-RECORD-SPLITMERGE.;10 36202 changes to: (FNS SPLIT.SUB.INTERFACE FIND.SAVED.FRAMES CREATE.NEW.INTERFACES CAUTERIZE.INTERFACE CAUTERIZE.SUPERFRAMES RESOLVE.BITMAP.NAME.CONFLICTS CHANGE.FRAME.NAME DELETE.OLD.ITEM.IN.INTERFACE GET.BITMAP.NAMES.IN.INTERFACE GET.BITMAP.FRAME.NAMES GET.NAMES.IN.GRAPH.ONLY GET.ROOT.NAMES GET.SUPERFRAMES CREATE.SPLIT.INTERFACE GET.FIRST.FRAME.IN.INTERFACE GET.FRAME.NAMES GRAPH.FRAMES.FOR.SPLIT MY.MERGE.INTERFACE RESOLVE.CELL.NAME.CONFLICTS CHANGE.CELL.NAME GET.CELL.NAMES.IN.FRAME) previous date: " 1-Mar-85 16:04:13" {PHYLUM}<TRILLIUM>BIRTHDAY84>ENHANCEMENTS>RECORDS-NHB>TRI-RECORD-SPLITMERGE.;9) (* Copyright (c) 1984, 1985 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT TRI-RECORD-SPLITMERGECOMS) (RPAQQ TRI-RECORD-SPLITMERGECOMS ((FNS SPLIT.SUB.INTERFACE FIND.SAVED.FRAMES CREATE.NEW.INTERFACES CAUTERIZE.INTERFACE CAUTERIZE.SUPERFRAMES RESOLVE.BITMAP.NAME.CONFLICTS CHANGE.FRAME.NAME DELETE.OLD.ITEM.IN.INTERFACE GET.BITMAP.NAMES.IN.INTERFACE GET.BITMAP.FRAME.NAMES GET.NAMES.IN.GRAPH.ONLY GET.ROOT.NAMES GET.SUPERFRAMES CREATE.SPLIT.INTERFACE GET.FIRST.FRAME.IN.INTERFACE GET.FRAME.NAMES GRAPH.FRAMES.FOR.SPLIT MY.MERGE.INTERFACE RESOLVE.CELL.NAME.CONFLICTS CHANGE.CELL.NAME GET.CELL.NAMES.IN.FRAME))) (DEFINEQ (SPLIT.SUB.INTERFACE [LAMBDA (NODE WINDOW) (* HaKo "16-Aug-84 16:35") (* EXECUTIVE FOR SPLITTING OFF A SUBINTERFACE AND MAKING IT INTO A NEW INTERFACE) (PROG (FRAME.SAVE.LIST OLD.INTERFACE.FRAMES) (COND ((CONFIRM (CONCAT "SPLIT INTERFACE " (WINDOWPROP WINDOW (QUOTE INTERFACE.NAME)) " AT NODE " (fetch.frame.fieldq (CAR (fetch (GRAPHNODE NODEID) of NODE)) NAME) " ?")) [SETQ FRAME.SAVE.LIST (FIND.SAVED.FRAMES WINDOW (GET.FIRST.FRAME.IN.INTERFACE (WINDOWPROP WINDOW (QUOTE INTERFACE.NAME))) NODE (WINDOWPROP WINDOW (QUOTE INTERFACE.NAME] (* FIND FRAMES TO REMAIN IN INTERFACE) (SETQ OLD.INTERFACE.FRAMES (CAR FRAME.SAVE.LIST)) (SETQ OLD.INTERFACE.FRAMES (INTERSECTION OLD.INTERFACE.FRAMES OLD.INTERFACE.FRAMES)) (CREATE.NEW.INTERFACES (WINDOWPROP WINDOW (QUOTE INTERFACE.NAME)) OLD.INTERFACE.FRAMES (CADR FRAME.SAVE.LIST) (fetch.frame.fieldq (CAR (fetch NODEID of NODE)) NAME) WINDOW) (TRILLIUM.PRINTOUT ON TRILLIUM.TRACE "Split command complete")) (T (TRILLIUM.PRINTOUT ON TRILLIUM.WARNINGS "Split command aborted"]) (FIND.SAVED.FRAMES [LAMBDA (WINDOW START.NODE NODE INTERFACE.NAME FRAME.GRAPH.LIST) (* HaKo "25-Jul-84 17:21") (* INTERFACE SEARCH PROCEDURE TO FIND FRAMES IN INTERFACE WHICH REMAIN AFTER SPLIT OR DELETE.BELOW) (* ARG NODE IS NIL ON RECURSIVE CALL) (PROG (OPEN (CLOSED (CONS)) [NODEID (COND ((LITATOM NODE) NODE) (T (fetch.frame.fieldq (CAR (fetch (GRAPHNODE NODEID) of NODE)) NAME] CURRENTFRAME SPLIT.OFF.FRAMES AMBIGUOUS.FRAMES ROOTS ROOT.SONS POSSIBLE.ROOTS) [COND ((NULL FRAME.GRAPH.LIST) [SETQ FRAME.GRAPH.LIST (GET.NAMES.IN.GRAPH.ONLY (CAR (WINDOWPROP WINDOW (QUOTE GRAPH] (SETQ FRAME.GRAPH.LIST (INTERSECTION FRAME.GRAPH.LIST FRAME.GRAPH.LIST)) (for FRAME in FRAME.GRAPH.LIST do (COND ((EQUAL (CADR FRAME) (QUOTE (NIL))) (RPLACD FRAME NIL] [COND [NODE [SETQ POSSIBLE.ROOTS (GET.ROOT.NAMES (WINDOWPROP WINDOW (QUOTE ROOTS] (SETQ ROOTS (LDIFFERENCE (for ITEM in POSSIBLE.ROOTS collect (CAR ITEM)) (INTERSECTION (SETQ ROOT.SONS (for ITEM in POSSIBLE.ROOTS join (CADR ITEM))) ROOT.SONS))) (SETQ ROOTS (for ROOT in ROOTS collect (CONS ROOT (LIST (GET.FRAME.SONS (FIND.FRAME (FIND.INTERFACE INTERFACE.NAME) ROOT] (T (SETQ ROOTS (LIST START.NODE] [for ROOT in ROOTS do (push OPEN ROOT) (while (NOT (NULL OPEN)) do ((SETQ CURRENTFRAME (pop OPEN)) (* DEPTH-FIRST SEARCH LOOP, IGNORING THE SELECTED NODE AND THUS ITS DESCENDENTS AS WELL. ASKS USER IF AMBIGUOUS FRAMES SHOULD BE INCLUDED) (COND [(NEQ (CAR CURRENTFRAME) NODEID) (COND ((NOT (MEMBER CURRENTFRAME (CAR CLOSED))) [for NODES in (COPY (CADR CURRENTFRAME)) do (COND ((FIND.FRAME (FIND.INTERFACE INTERFACE.NAME) NODES) (push OPEN (GET.NODE.REP NODES FRAME.GRAPH.LIST))) (T (DREMOVE NODES (CADR CURRENTFRAME)) (TRILLIUM.PRINTOUT ON TRILLIUM.WARNINGS "FRAME " NODES " SPECIFIED IN INTERFACE BUT NOT FOUND"] (TCONC CLOSED CURRENTFRAME] (T (SETQ SPLIT.OFF.FRAMES (APPEND SPLIT.OFF.FRAMES (FIND.SAVED.FRAMES WINDOW CURRENTFRAME NIL INTERFACE.NAME FRAME.GRAPH.LIST] (RPLACA CLOSED (INTERSECTION (CAR CLOSED) (CAR CLOSED))) (COND (NODE (SETQ AMBIGUOUS.FRAMES (INTERSECTION (CAR CLOSED) SPLIT.OFF.FRAMES)) (SETQ SPLIT.OFF.FRAMES (AMBIGUOUS.FRAMES.TO.INCLUDE SPLIT.OFF.FRAMES AMBIGUOUS.FRAMES)) (SETQ SPLIT.OFF.FRAMES (INTERSECTION SPLIT.OFF.FRAMES SPLIT.OFF.FRAMES)) (RETURN (LIST (CAR CLOSED) SPLIT.OFF.FRAMES))) (T (RETURN (CAR CLOSED]) (CREATE.NEW.INTERFACES [LAMBDA (OLD.INTERFACE.NAME OLD.INTERFACE.FRAMES NEW.INTERFACE.FRAMES FIRST.FRAME.IN.SPLIT.INTERFACE WINDOW) (* N.H.Briggs " 5-Mar-85 11:13") (* GIVEN THE FRAME STRUCTURE OF THE ORIGINAL INTERFACE AND THE NODES TO REMAIN IN THE OLD INTERFACE, CREATES A NEW INTERFACE CONSISTING OF THE SPLIT-OFF SUB-INTERFACE) (PROG (NEW.INTERFACE.NAME LEGAL.NAME.FLG DELETE.CHANGE.FRAME.ITEM.FLG FRAME.NAME.LIST NEW.INTERFACE FIRST.FRAME.NAME FRAME.LIST INTERFACE) (SETQ LEGAL.NAME.FLG) (* GET NAME FOR SPLIT OFF INTERFACE) [while (NOT LEGAL.NAME.FLG) do ((TRILLIUM.PRINTOUT ON PROMPTWINDOW "NAME OF NEW INTERFACE: ") (SETQ NEW.INTERFACE.NAME (PROMPT.READ)) (COND ((NOT (LITATOM NEW.INTERFACE.NAME)) (TRILLIUM.PRINTOUT ON TRILLIUM.WARNINGS "NAME MUST BE A LITERAL ATOM")) ((FIND.INTERFACE NEW.INTERFACE.NAME) (TRILLIUM.PRINTOUT ON TRILLIUM.WARNINGS "THE NAME " NEW.INTERFACE.NAME " IS ALREADY IN USE")) (T (SETQ LEGAL.NAME.FLG T] (SETQ DELETE.CHANGE.FRAME.ITEM.FLG (MENU (create MENU ITEMS ←(QUOTE (DELETE.ALL DELETE.SELECTIVELY DO.NOT.DELETE)) TITLE ←(CONCAT "CHOICES FOR DELETING FRAME CHANGE ITEMS IN " NEW.INTERFACE.NAME) CENTERFLG ← T))) (CREATE.SPLIT.INTERFACE NEW.INTERFACE.FRAMES OLD.INTERFACE.NAME NEW.INTERFACE.NAME FIRST.FRAME.IN.SPLIT.INTERFACE DELETE.CHANGE.FRAME.ITEM.FLG) (SETQ DELETE.CHANGE.FRAME.ITEM.FLG (MENU (create MENU ITEMS ←(QUOTE (DELETE.ALL DELETE.SELECTIVELY DO.NOT.DELETE)) TITLE ←(CONCAT "CHOICES FOR DELETING FRAME CHANGE ITEMS IN " OLD.INTERFACE.NAME) CENTERFLG ← T))) [replace.interface.fieldq (SETQ INTERFACE (FIND.INTERFACE OLD.INTERFACE.NAME)) FRAMES (DREMOVE NIL (for FRAME in [UNION [UNION (QUOTE (CELLS COLORS)) (OR (LISTGET (LISTGET ( fetch.interface.fieldq INTERFACE PROFILE) (QUOTE FRAME.CLASSES)) (QUOTE BITMAP.FRAMES)) (LIST (QUOTE BITMAPS] (UNION (GET.SUPERFRAMES INTERFACE) (for OLD.FRAME in OLD.INTERFACE.FRAMES collect (CAR OLD.FRAME] collect (FIND.FRAME (FIND.INTERFACE OLD.INTERFACE.NAME) FRAME] (COND ((NOT (EQ DELETE.CHANGE.FRAME.ITEM.FLG (QUOTE DO.NOT.DELETE))) (CAUTERIZE.INTERFACE OLD.INTERFACE.FRAMES (fetch.interface.fieldq OLD.INTERFACE FIRST.FRAME) INTERFACE DELETE.CHANGE.FRAME.ITEM.FLG))) (SETQ FRAME.NAME.LIST (for FRAME in OLD.INTERFACE.FRAMES collect (CAR FRAME))) (COND ((NOT (EQ DELETE.CHANGE.FRAME.ITEM.FLG (QUOTE DO.NOT.DELETE))) (for FRAME in (fetch.interface.fieldq INTERFACE FRAMES) do (CAUTERIZE.SUPERFRAMES OLD.INTERFACE.NAME OLD.INTERFACE.NAME INTERFACE (GET.FIELD FRAME (QUOTE NAME) (QUOTE FRAME)) FRAME.NAME.LIST (COND ((EQUAL (GET.FIELD FRAME (QUOTE NAME) (QUOTE FRAME)) (fetch.interface.fieldq INTERFACE FIRST.FRAME)) T) (T NIL)) DELETE.CHANGE.FRAME.ITEM.FLG]) (CAUTERIZE.INTERFACE [LAMBDA (FRAME.LIST FIRST.FRAME.NAME INTERFACE DELETE.CHANGE.FRAME.ITEM.FLG) (* N.H.Briggs " 1-Mar-85 14:31") (* SEARCHES THROUGH THE FRAME LIST CONSISTING OF PAIRS <FRAME NAME><DESCENDENTS>. WHEN A DESCENDENT IS FOUND WHICH IS NOT A FRAME IN THE FRAME LIST, THE CONNECTION BETWEEN THE FRAMES IS BROKEN) (PROG ((FRAME.NAMES (for PAIR in FRAME.LIST collect (CAR PAIR))) FRAME PARAMETERS) (* FOR ALL REGULAR FRAMES; NOT SUPERFRAMES) (for PAIR in FRAME.LIST do (for SONS in [COPY (REMOVE NIL (UNION (CADR PAIR) (DEFINING.PTYPES.OF.FRAME (QUOTE (FRAME)) (SETQ FRAME (FIND.FRAME INTERFACE (CAR PAIR] do (COND ((NOT (FMEMB SONS FRAME.NAMES)) (for ITEM in (fetch.frame.fieldq FRAME ITEMS) do ((SETQ PARAMETERS (GET.FIELDQ (ITEM.TYPE.DESCRIPTION (ITEM.TYPE ITEM)) PARAMETERS)) (for PARAMETER in PARAMETERS do (COND ([AND (EQUAL (GET.FIELDQ PARAMETER TYPE) (QUOTE (FRAME))) (EQUAL (LISTGET ITEM (QUOTE FRAME)) SONS) (OR (EQ DELETE.CHANGE.FRAME.ITEM.FLG (QUOTE DELETE.ALL) ) (CONFIRM (CONCAT "DELETE ITEM IN FRAME " (CAR PAIR) " CHANGING TO FRAME " SONS "?"] (DELETE.OLD.ITEM.IN.INTERFACE FRAME ITEM INTERFACE) (TRILLIUM.PRINTOUT ON TRILLIUM.TRACE (CONCAT "ITEM POINTING TO FRAME " SONS " DELETED FROM FRAME " (CAR PAIR]) (CAUTERIZE.SUPERFRAMES [LAMBDA (OLD.INTERFACE.NAME NEW.INTERFACE.NAME NEW.INTERFACE FRAME.NAME FRAME.LIST FIRST.FRAME.FLG DELETE.CHANGE.FRAME.ITEM.FLG) (* N.H.Briggs " 5-Mar-85 10:30") (* CHECKS SUPERFRAMES OF A FRAME TO DETERMINE IF THEY CONTAIN FRAME CHANGERS TO FRAMES NOT IN THE INTERFACE. IF SO, A NEW SUPERFRAME IS CREATED WITHOUT THOSE AND REPLACES THE OLD SUPERFRAME) (PROG ((FRAME (FIND.FRAME NEW.INTERFACE FRAME.NAME)) SUPERFRAME.LIST SUPERFRAME PARAMETERS OPFORM ITYPE PTYPE NEW.SUPERFRAME NEW.SUPERFRAME.NAME ITEM.LIST) (SETQ SUPERFRAME.LIST (fetch.frame.fieldq FRAME SUPERFRAMES)) (for SUPERFRAME.NAME in SUPERFRAME.LIST do ((SETQ SUPERFRAME (FIND.FRAME (FIND.INTERFACE OLD.INTERFACE.NAME) SUPERFRAME.NAME)) [for ITEM in (fetch.frame.fieldq SUPERFRAME ITEMS) do ((SETQ ITYPE (ITEM.TYPE ITEM)) (SETQ PARAMETERS (GET.FIELDQ (ITEM.TYPE.DESCRIPTION ITYPE) PARAMETERS)) (for PARAMETER in PARAMETERS do ((SETQ PTYPE (GET.FIELDQ PARAMETER TYPE)) (COND ([OR [AND (EQUAL PTYPE (QUOTE (FRAME))) (NOT (EQ (LISTGET ITEM (QUOTE FRAME)) NIL)) (NOT (FMEMB (LISTGET ITEM (QUOTE FRAME)) FRAME.LIST)) (OR (EQ DELETE.CHANGE.FRAME.ITEM.FLG (QUOTE DELETE.ALL)) (CONFIRM (CONCAT "DELETE ITEM IN FRAME " SUPERFRAME.NAME " POINTING TO FRAME " (LISTGET ITEM (QUOTE FRAME)) "?"] (AND FIRST.FRAME.FLG (EQUAL (GET.FIELDQ PARAMETER NAME) (QUOTE STACK.OPERATION)) (EQUAL (LISTGET ITEM (QUOTE STACK.OPERATION)) (QUOTE POP)) (OR (EQ DELETE.CHANGE.FRAME.ITEM.FLG (QUOTE DELETE.ALL)) (CONFIRM "DELETE POP FRAME ITEM FROM FIRST FRAME?"] (SETQ ITEM.LIST (CONS ITEM ITEM.LIST] (COND (ITEM.LIST (SETQ NEW.SUPERFRAME (create.frame (NAME (SETQ NEW.SUPERFRAME.NAME (NEW.OBJECT.NAME SUPERFRAME.NAME NEW.INTERFACE.NAME))) (ITEMS (for ITEM in (fetch.frame.fieldq SUPERFRAME ITEMS) when (NOT (MEMBER ITEM ITEM.LIST)) collect ITEM)) (ANALYZED NIL))) (ADD.NEW.FRAME NEW.INTERFACE NEW.SUPERFRAME) (MARK.INTERFACE NEW.INTERFACE) (replace.frame.fieldq FRAME SUPERFRAMES (CONS NEW.SUPERFRAME.NAME (REMOVE SUPERFRAME.NAME ( fetch.frame.fieldq FRAME SUPERFRAMES]) (RESOLVE.BITMAP.NAME.CONFLICTS [LAMBDA (INTERFACE1 INTERFACE2) (* SGK "29-AUG-83 13:25") (PROG (FRAME.CLASSES CONFLICTING.NAMES BITMAP.FRAME.NAMES) [for BITMAP.NAME bind (FRAME BITMAP.ITEM) in (GET.CONFLICTING.BITMAP.NAMES INTERFACE1 INTERFACE2) do (COND ((EQUAL.BITMAPS (LISTGET (for ITEM in (fetch.frame.fieldq (FIND.FRAME INTERFACE1 (CDR BITMAP.NAME)) ITEMS) thereis (EQUAL (LISTGET ITEM (QUOTE NAME)) (CAR BITMAP.NAME))) (QUOTE BITMAP)) (LISTGET [SETQ BITMAP.ITEM (for ITEM in (fetch.frame.fieldq (SETQ FRAME (FIND.FRAME INTERFACE2 (CDR BITMAP.NAME))) ITEMS) thereis (EQUAL (LISTGET ITEM (QUOTE NAME)) (CAR BITMAP.NAME] (QUOTE BITMAP)) (CAR BITMAP.NAME)) (DELETE.OLD.ITEM.IN.INTERFACE FRAME BITMAP.ITEM INTERFACE2] [COND ((NULL (LISTGET (SETQ FRAME.CLASSES (LISTGET (GET.FIELDQ INTERFACE2 PROFILE INTERFACE) (QUOTE FRAME.CLASSES))) (QUOTE BITMAP.FRAMES))) (COND [(NULL FRAME.CLASSES) (SET.FIELDQ (GET.FIELDQ INTERFACE2 PROFILE INTERFACE) FRAME.CLASSES (CONS (QUOTE BITMAP.FRAMES) (LIST (LIST (QUOTE BITMAPS] (T (SET.FIELDQ FRAME.CLASSES BITMAP.FRAMES (LIST (QUOTE BITMAPS] (SETQ CONFLICTING.NAMES (INTERSECTION (GET.BITMAP.FRAME.NAMES INTERFACE1) (GET.BITMAP.FRAME.NAMES INTERFACE2))) (* LOOP TO RENAME BITMAP FRAMES IN SECOND INTERFACE WHICH HAVE SAME NAMES AS BITMAP FRAMES IN FIRST INTERFACE) [for FRAME.NAMES on (LISTGET (SETQ FRAME.CLASSES (LISTGET (GET.FIELDQ INTERFACE2 PROFILE INTERFACE) (QUOTE FRAME.CLASSES))) (QUOTE BITMAP.FRAMES)) do (COND ((MEMBER (CAR FRAME.NAMES) CONFLICTING.NAMES) (RPLACA FRAME.NAMES (CHANGE.FRAME.NAME (CAR FRAME.NAMES) (NEW.OBJECT.NAME (CAR FRAME.NAMES) (GET.FIELDQ INTERFACE2 NAME INTERFACE)) INTERFACE2] (LISTPUT [COND ((LISTGET (SETQ BITMAP.FRAME.NAMES (LISTGET (GET.FIELDQ INTERFACE1 PROFILE INTERFACE) (QUOTE FRAME.CLASSES))) (QUOTE BITMAP.FRAMES)) BITMAP.FRAME.NAMES) (T [SET.FIELDQ (GET.FIELDQ INTERFACE1 PROFILE INTERFACE) FRAME.CLASSES (APPEND (QUOTE (BITMAP.FRAMES (BITMAPS))) (LISTGET (GET.FIELDQ INTERFACE1 PROFILE INTERFACE) (QUOTE FRAME.CLASSES] (LISTGET (GET.FIELDQ INTERFACE1 PROFILE INTERFACE) (QUOTE FRAME.CLASSES] (QUOTE BITMAP.FRAMES) (COND ((LISTGET BITMAP.FRAME.NAMES (QUOTE BITMAP.FRAMES)) (INTERSECTION [SETQ BITMAP.FRAME.NAMES (APPEND (GET.BITMAP.FRAME.NAMES INTERFACE2) (LISTGET BITMAP.FRAME.NAMES (QUOTE BITMAP.FRAMES] BITMAP.FRAME.NAMES)) (T (CONS (QUOTE BITMAPS) (GET.BITMAP.FRAME.NAMES INTERFACE2]) (CHANGE.FRAME.NAME [LAMBDA (OLD.FRAME.NAME NEW.FRAME.NAME INTERFACE NAME.ASSOC.LIST) (* SGK "19-AUG-83 16:07") (* CHANGES THE NAME OF THE FRAME IN THE GIVEN INTERFACE, AND ALL REFERENCES TO IT IN THE FRAME; FIRST GETS THE NEW NAME) (PROG (FRAME.NAMES SUPERFRAMES) (SETQ FRAME.NAMES (GET.FRAME.NAMES INTERFACE)) (SET.FIELD (FIND.FRAME INTERFACE OLD.FRAME.NAME) (QUOTE NAME) NEW.FRAME.NAME (QUOTE FRAME)) [for FRAME.NAME bind FRAME in FRAME.NAMES do ([SETQ FRAME (OR (FIND.FRAME INTERFACE FRAME.NAME) (FIND.FRAME INTERFACE (CDR (FASSOC FRAME.NAME NAME.ASSOC.LIST] (for ITEM in (fetch.frame.fieldq FRAME ITEMS) do (for FORM in (DEEP.MEMBER OLD.FRAME.NAME ITEM) do (RPLACA FORM NEW.FRAME.NAME))) (COND ((MEMBER OLD.FRAME.NAME (SETQ SUPERFRAMES (fetch.frame.fieldq FRAME SUPERFRAMES))) (for SUPERFRAME.NAMES on SUPERFRAMES do (COND ((EQUAL SUPERFRAME.NAMES OLD.FRAME.NAME) (RPLACA SUPERFRAME.NAMES NEW.FRAME.NAME] (RETURN NEW.FRAME.NAME]) (DELETE.OLD.ITEM.IN.INTERFACE [LAMBDA (FRAME ITEM INTERFACE) (* SGK " 4-AUG-83 09:17") (DECLARE (GLOBALVARS CURRENT.INTERFACE.WINDOW)) (PROG (ITEMS NEWLIST EDIT.WINDOWS CORRESPONDING.EDIT.WINDOW) (REMOVE.ITEM ITEM FRAME) (SETQ ITEMS (fetch.frame.fieldq FRAME ITEMS)) (SETQ NEWLIST (DREMOVE ITEM ITEMS)) (OR NEWLIST (replace.frame.fieldq FRAME ITEMS NIL)) (MARK.FRAME.CONTEXT.OBSOLETE FRAME) (MARK.INTERFACE INTERFACE) (COND ((ACTIVEWP CURRENT.INTERFACE.WINDOW) (for WINDOW in (DEPENDENT.WINDOWS CURRENT.INTERFACE.WINDOW) when (AND (EQ (WINDOWPROP WINDOW (QUOTE TRILLIUM.WINDOW.TYPE)) (QUOTE ITEM.EDITOR)) (EQ (WINDOWPROP WINDOW (QUOTE DATUM)) ITEM)) do (DELETE.DEPENDENT.WINDOW CURRENT.INTERFACE.WINDOW WINDOW) (CLOSEW WINDOW]) (GET.BITMAP.NAMES.IN.INTERFACE [LAMBDA (INTERFACE) (* SGK " 5-AUG-83 12:50") (* RETURNS A LIST OF ALL BIMAPS IN THE BITMAP FRAME OR THE FRAMES IN FRAME CLASS BITMAP.FRAME) (for FRAME.NAME in (GET.BITMAP.FRAME.NAMES INTERFACE) join (for ITEM in (fetch.frame.fieldq (FIND.FRAME INTERFACE FRAME.NAME) ITEMS) when (EQUAL (ITEM.TYPE ITEM) (QUOTE BITMAP)) collect (CONS (LISTGET ITEM (QUOTE NAME)) FRAME.NAME]) (GET.BITMAP.FRAME.NAMES [LAMBDA (INTERFACE) (* N.H.Briggs " 5-Mar-85 11:14") (OR (LISTGET (LISTGET (fetch.interface.fieldq INTERFACE PROFILE) (QUOTE FRAME.CLASSES)) (QUOTE BITMAP.FRAMES)) (QUOTE (BITMAPS]) (GET.NAMES.IN.GRAPH.ONLY [LAMBDA (GRAPH) (* SGK "22-AUG-83 11:05") (* GIVEN A GRAPH PRODUCED BY GRAPH.FRAMES, PRODUCE A LIST OF THE FORM (<FRAME><SONS>) *) (PROG ((RETURN.LIST (CONS)) (FRAMES.ALREADY.SEARCHED (CONS))) [for FRAME in GRAPH bind FRAME.NAME do (COND ((NOT (MEMBER (SETQ FRAME.NAME (fetch.frame.fieldq (CAR (fetch (GRAPHNODE NODEID) of FRAME)) NAME)) (CAR FRAMES.ALREADY.SEARCHED))) [TCONC RETURN.LIST (LIST FRAME.NAME (GET.FRAME.SONS (CAR (fetch (GRAPHNODE NODEID) of FRAME] (TCONC FRAMES.ALREADY.SEARCHED FRAME.NAME] (RETURN (CAR RETURN.LIST]) (GET.ROOT.NAMES [LAMBDA (ROOTS) (* SGK "19-AUG-83 13:02") (* GIVEN THE ROOTS SPECIFICATION FROM THE GRAPH WINDOW, RETURN THE ROOTS AND THEIR DESCENDENTS) (PROG [(FRAMES (for ITEM in ROOTS collect (CAR ITEM] (RETURN (for FRAME in FRAMES collect (CONS (fetch.frame.fieldq FRAME NAME) (LIST (GET.FRAME.SONS FRAME]) (GET.SUPERFRAMES [LAMBDA (INTERFACE) (* N.H.Briggs "22-Feb-85 11:20") (* GATHERS ALL SUPERFRAMES REFERENCED BY ANY FRAME IN INTERFACE) (PROG (SUPERFRAMES) [SETQ SUPERFRAMES (DREMOVE NIL (for FRAME in (fetch.interface.fieldq INTERFACE FRAMES) join (COPY (fetch.frame.fieldq FRAME SUPERFRAMES] (RETURN (INTERSECTION SUPERFRAMES SUPERFRAMES]) (CREATE.SPLIT.INTERFACE [LAMBDA (FRAME.LIST OLD.INTERFACE.NAME NEW.INTERFACE.NAME FIRST.FRAME.NAME DELETE.CHANGE.FRAME.ITEM.FLG) (* N.H.Briggs " 6-Mar-85 13:30") (* CREATES A NEW INTERFACE WITH THE FRAMES AND LINKS BETWEEN THEM SPECIFIED IN FRAME.LIST AND WITH NAME INTERFACE.NAME) (PROG (NEW.INTERFACE INTERFACE SUPERFRAMES.IN.OLD FRAME.NAMES FRAMES.TO.ADD BITMAP.CLASS FRAME.NAME.LIST FRAME) (SETQ INTERFACE (FIND.INTERFACE OLD.INTERFACE.NAME)) (SETQ SUPERFRAMES.IN.OLD (GET.SUPERFRAMES INTERFACE)) (SETQ FRAME.NAMES (for FRAME in FRAME.LIST collect (CAR FRAME))) [SETQ FRAMES.TO.ADD (DREMOVE NIL (NCONC [for FRAME in FRAME.LIST collect (COPYALL (FIND.FRAME INTERFACE (CAR FRAME] (COND ([AND (NOT (MEMBER (QUOTE BITMAPS) FRAME.NAMES)) (SETQ FRAME (FIND.FRAME INTERFACE (QUOTE BITMAPS] (LIST (COPYALL FRAME))) (T NIL)) (COND [(AND (SETQ BITMAP.CLASS (LISTGET (LISTGET (fetch.interface.fieldq INTERFACE PROFILE) (QUOTE FRAME.CLASSES)) (QUOTE BITMAP.FRAMES))) (SETQ BITMAP.CLASS (LDIFFERENCE BITMAP.CLASS FRAME.NAMES))) (for FRAME.NAME in (REMOVE (QUOTE BITMAPS) BITMAP.CLASS) collect (COPYALL (FIND.FRAME INTERFACE FRAME.NAME] (T NIL)) (COND [(NOT (MEMBER (QUOTE COLORS) FRAME.NAMES)) (LIST (COPYALL (FIND.FRAME INTERFACE (QUOTE COLORS] (T NIL)) (COND ((NOT (MEMBER (QUOTE CELLS) FRAME.NAMES)) (LIST (COPYALL (FIND.FRAME INTERFACE (QUOTE CELLS] [COND (SUPERFRAMES.IN.OLD (NCONC FRAMES.TO.ADD (for SUPERFRAME in (LDIFFERENCE SUPERFRAMES.IN.OLD FRAME.NAMES) collect (COPYALL (FIND.FRAME INTERFACE SUPERFRAME] [SETQ NEW.INTERFACE (FIND.INTERFACE (PUTDEF.INTERFACE NEW.INTERFACE.NAME (QUOTE INTERFACE) (LIST (QUOTE \TYPE) (QUOTE INTERFACE) (QUOTE NAME) NEW.INTERFACE.NAME (QUOTE FRAMES) FRAMES.TO.ADD (QUOTE REGION) (fetch.interface.fieldq INTERFACE REGION) (QUOTE FIRST.FRAME) FIRST.FRAME.NAME (QUOTE PROFILE) NEW.PROFILE] (for FRAME in (fetch.interface.fieldq NEW.INTERFACE FRAMES) do (replace.frame.fieldq FRAME ANALYZED? NIL) ) (COND ((NOT (EQ DELETE.CHANGE.FRAME.ITEM.FLG (QUOTE DO.NOT.DELETE))) (CAUTERIZE.INTERFACE FRAME.LIST FIRST.FRAME.NAME NEW.INTERFACE DELETE.CHANGE.FRAME.ITEM.FLG))) (MARK.INTERFACE NEW.INTERFACE T) (SETQ FRAME.NAME.LIST (for FRAMENODE in FRAME.LIST collect (CAR FRAMENODE))) (COND ((NOT (EQ DELETE.CHANGE.FRAME.ITEM.FLG (QUOTE DO.NOT.DELETE))) (for FRAME in (fetch.interface.fieldq NEW.INTERFACE FRAMES) do (CAUTERIZE.SUPERFRAMES OLD.INTERFACE.NAME NEW.INTERFACE.NAME NEW.INTERFACE (GET.FIELD FRAME (QUOTE NAME) (QUOTE FRAME)) FRAME.NAME.LIST (COND ((EQUAL (GET.FIELD FRAME (QUOTE NAME) (QUOTE FRAME)) FIRST.FRAME.NAME) T) (T NIL)) DELETE.CHANGE.FRAME.ITEM.FLG]) (GET.FIRST.FRAME.IN.INTERFACE [LAMBDA (INTERFACE.NAME) (* N.H.Briggs "22-Feb-85 11:22") (* RETURNS THE NODE AND LIST OF ITS SUCCESSORS FOR USE IN SPLIT.SUB.INTERFACE) (PROG ((INTERFACE (FIND.INTERFACE INTERFACE.NAME)) FIRST.FRAME.NAME) (SETQ FIRST.FRAME.NAME (fetch.interface.fieldq INTERFACE FIRST.FRAME)) (RETURN (LIST FIRST.FRAME.NAME (GET.FRAME.SONS (FIND.FRAME INTERFACE FIRST.FRAME.NAME]) (GET.FRAME.NAMES [LAMBDA (INTERFACE) (* N.H.Briggs "22-Feb-85 11:19") (* RETURNS A LIST OF THE NAMES OF FRAMES IN THE GIVEN INTERFACE) (for FRAME in (fetch.interface.fieldq INTERFACE FRAMES) collect (fetch.frame.fieldq FRAME NAME]) (GRAPH.FRAMES.FOR.SPLIT [LAMBDA (INTERFACE.NAME) (* N.H.Briggs "13-Feb-85 14:10") (DECLARE (GLOBALVARS CHANGE.FRAME.STRUCTURE.GRAPH.SPEC)) (PROG (INTERFACE NAME ITYPES GRAPH.SPEC FRAMES POSSIBLE.ROOTS REAL.ROOTS TITLE DEPTH GRAPH.FRAME.WINDOW) (THINKING (SETQ INTERFACE (FIND.INTERFACE INTERFACE.NAME)) (SETQ FRAMES (fetch.interface.fieldq INTERFACE FRAMES)) (SETQ GRAPH.SPEC CHANGE.FRAME.STRUCTURE.GRAPH.SPEC) [SETQ POSSIBLE.ROOTS (for FRAME in FRAMES collect (CONS FRAME (QUOTE FRAME] (SETQ REAL.ROOTS (MAKE.GRAPH.FIND.ROOTS GRAPH.SPEC POSSIBLE.ROOTS INTERFACE)) (SETQ TITLE (CONCAT "Change frame structure for splitting interface " INTERFACE.NAME)) (SETQ DEPTH 10) (SETQ GRAPH.FRAME.WINDOW (MAKE.GRAPH NIL TITLE GRAPH.SPEC REAL.ROOTS INTERFACE (FUNCTION SPLIT.SUB.INTERFACE) (QUOTE FRAME.GRAPH.WINDOW.MIDDLEBUTTONFN) NIL DEPTH)) (WINDOWPROP GRAPH.FRAME.WINDOW (QUOTE INTERFACE.NAME) INTERFACE.NAME) GRAPH.FRAME.WINDOW) (RETURN GRAPH.FRAME.WINDOW]) (MY.MERGE.INTERFACE [LAMBDA (INTERFACE1 INTERFACE2) (* N.H.Briggs "27-Feb-85 22:28") (RESOLVE.CELL.NAME.CONFLICTS INTERFACE1 INTERFACE2) (RESOLVE.BITMAP.NAME.CONFLICTS INTERFACE1 INTERFACE2) (RESOLVE.FRAME.NAME.CONFLICTS INTERFACE1 INTERFACE2) (MERGE.INTERFACE INTERFACE1 INTERFACE2) (DELETE.INTERFACE (fetch.interface.fieldq INTERFACE2 NAME]) (RESOLVE.CELL.NAME.CONFLICTS [LAMBDA (INTERFACE1 INTERFACE2) (* N.H.Briggs "27-Feb-85 22:30") (* FIRST FINDS THE CELLS REFERENCED FOR EACH FRAME. THEN CREATES AN ASSOCIATION LIST WITH CELL NAMES ASSOCIATED WITH THE LIST OF FRAMES THEY ARE REFERENCED IN. FINALLY ASKS THE USER WHAT TO DO FOR IDENTICALLY NAMED CELLS IN DIFFERENT INTERFACES) (PROG (CELL.AND.FRAME.ASSOC.LIST.1 CELL.AND.FRAME.ASSOC.LIST.2 CELL.NAMES ALIST CELL.NAME.CONFLICTS (CELLOPS (LIST (QUOTE SET.CELL) (QUOTE CHANGE.CELL) (QUOTE CHANGE.CELL.NEXT.DIGIT) (QUOTE EMPTY.CELL) (QUOTE PUSH.TO.CELL) (QUOTE POP.FROM.CELL) (QUOTE SET.NTH.OF.CELL) (QUOTE CELL.VALUE) (QUOTE NTH.OF.CELL))) CONFLICT.RESOLUTION.MENU) [for FRAME in (fetch.interface.fieldq INTERFACE1 FRAMES) do (COND ((SETQ CELL.NAMES (GET.CELL.NAMES.IN.FRAME FRAME)) (for NAME in CELL.NAMES do (COND [(SETQ ALIST (FASSOC NAME CELL.AND.FRAME.ASSOC.LIST.1)) (RPLACD ALIST (CONS (fetch.frame.fieldq FRAME NAME) (CDR ALIST] (T (SETQ CELL.AND.FRAME.ASSOC.LIST.1 (CONS (CONS NAME (LIST (fetch.frame.fieldq FRAME NAME))) CELL.AND.FRAME.ASSOC.LIST.1] [for FRAME in (fetch.interface.fieldq INTERFACE2 FRAMES) do (COND ((SETQ CELL.NAMES (GET.CELL.NAMES.IN.FRAME FRAME)) (for NAME in CELL.NAMES do (COND [(SETQ ALIST (FASSOC NAME CELL.AND.FRAME.ASSOC.LIST.2)) (RPLACD ALIST (CONS (fetch.frame.fieldq FRAME NAME) (CDR ALIST] (T (SETQ CELL.AND.FRAME.ASSOC.LIST.2 (CONS (CONS NAME (LIST (fetch.frame.fieldq FRAME NAME))) CELL.AND.FRAME.ASSOC.LIST.2] (TRILLIUM.PRINTOUT ON PROMPTWINDOW "SELECT THE CELLS YOU WISH TO RENAME: BUG *DONE* WHEN DONE") (SETQ CELL.NAME.CONFLICTS (ACQUIRE.LIST.ITEMS (INTERSECTION (for ITEM in CELL.AND.FRAME.ASSOC.LIST.1 collect (CAR ITEM)) (for ITEM in CELL.AND.FRAME.ASSOC.LIST.2 collect (CAR ITEM))) "CELL NAME CONFLICTS")) (* NOW ASK THE USER WHAT TO DO ABOUT CONFLICTING CELL NAMES) (for NAME in CELL.NAME.CONFLICTS do ((SETQ CONFLICT.RESOLUTION.MENU (create MENU ITEMS ←(QUOTE (CHANGE.CELL.NAME.IN.FIRST CHANGE.CELL.NAME.IN.SECOND LEAVE.AS.IS)) TITLE ←(CONCAT "Choices for resolving name conflict of cell" NAME) WHENSELECTEDFN ←(FUNCTION CELL.NAME.CONFLICT.MENU.WHENSELECTEDFN) CENTERFLG ← T CHANGEOFFSETFLG ← T)) (SELECTQ (MENU CONFLICT.RESOLUTION.MENU) (CHANGE.CELL.NAME.IN.FIRST (CHANGE.CELL.NAME (CAR (SETQ ALIST (FASSOC NAME CELL.AND.FRAME.ASSOC.LIST.1))) (CDR ALIST) INTERFACE1)) (CHANGE.CELL.NAME.IN.SECOND (CHANGE.CELL.NAME (CAR (SETQ ALIST (FASSOC NAME CELL.AND.FRAME.ASSOC.LIST.2))) (CDR ALIST) INTERFACE2)) (LEAVE.AS.IS NIL) NIL]) (CHANGE.CELL.NAME [LAMBDA (OLD.CELL.NAME FRAME.NAMES INTERFACE) (* HaKo "25-Jul-84 17:19") (DECLARE (SPECVARS CELLOPS)) (PROG (NEW.CELL.NAME ACTIONFORM FORMS) (TRILLIUM.PRINTOUT ON PROMPTWINDOW (CONCAT "NEW NAME FOR CELL " OLD.CELL.NAME " ? ")) (SETQ NEW.CELL.NAME (PROMPT.READ)) (for FRAME.NAME in FRAME.NAMES bind FRAME do ((SETQ FRAME (FIND.FRAME INTERFACE FRAME.NAME)) (for ITEM in (fetch.frame.fieldq FRAME ITEMS) do ((COND ((EQ (LISTGET ITEM (QUOTE CELL)) OLD.CELL.NAME) (LISTPUT ITEM (QUOTE CELL) NEW.CELL.NAME))) (COND ((SETQ ACTIONFORM (LISTGET ITEM (QUOTE ACTION.FORM))) (for OP in CELLOPS do (COND ((SETQ FORMS (DEEP.MEMBER OP ACTIONFORM)) (for FORM in FORMS do (COND ((EQ (CADR FORM) OLD.CELL.NAME) (RPLACD FORM (CONS NEW.CELL.NAME (CDDR FORM]) (GET.CELL.NAMES.IN.FRAME [LAMBDA (FRAME) (* SGK "18-AUG-83 15:41") (* RETURNS A LIST OF THE NAMES OF TRILLIUM MACHINE CELLS USED IN THE GIVEN FRAME) (PROG (NAME.LIST) [SETQ NAME.LIST (for ITEM in (COPY (fetch.frame.fieldq FRAME ITEMS)) join (COND ((EQUAL (ITEM.TYPE ITEM) (QUOTE GROUP)) (for SUBITEM in ITEM collect (GET.CELL.NAMES.IN.ITEM SUBITEM))) (T (GET.CELL.NAMES.IN.ITEM ITEM] (RETURN (REMOVE (QUOTE (NIL)) (INTERSECTION NAME.LIST NAME.LIST]) ) (PUTPROPS TRI-RECORD-SPLITMERGE COPYRIGHT ("Xerox Corporation" 1984 1985)) (DECLARE: DONTCOPY (FILEMAP (NIL (1508 36105 (SPLIT.SUB.INTERFACE 1518 . 3009) (FIND.SAVED.FRAMES 3011 . 6447) ( CREATE.NEW.INTERFACES 6449 . 10230) (CAUTERIZE.INTERFACE 10232 . 12062) (CAUTERIZE.SUPERFRAMES 12064 . 14874) (RESOLVE.BITMAP.NAME.CONFLICTS 14876 . 18415) (CHANGE.FRAME.NAME 18417 . 19945) ( DELETE.OLD.ITEM.IN.INTERFACE 19947 . 20948) (GET.BITMAP.NAMES.IN.INTERFACE 20950 . 21668) ( GET.BITMAP.FRAME.NAMES 21670 . 21961) (GET.NAMES.IN.GRAPH.ONLY 21963 . 22842) (GET.ROOT.NAMES 22844 . 23362) (GET.SUPERFRAMES 23364 . 23903) (CREATE.SPLIT.INTERFACE 23905 . 27962) ( GET.FIRST.FRAME.IN.INTERFACE 27964 . 28540) (GET.FRAME.NAMES 28542 . 28920) (GRAPH.FRAMES.FOR.SPLIT 28922 . 30140) (MY.MERGE.INTERFACE 30142 . 30562) (RESOLVE.CELL.NAME.CONFLICTS 30564 . 34258) ( CHANGE.CELL.NAME 34260 . 35373) (GET.CELL.NAMES.IN.FRAME 35375 . 36103))))) STOP