(FILECREATED "13-Oct-86 12:34:03" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH116.;3 7285 changes to: (FNS NC.CachedMakeFilingLink NC.MakeFilingLink NC.MarkerMatchesCardP) (VARS RHTPATCH116COMS) previous date: "11-Oct-86 15:50:21" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH116.;1) (* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT RHTPATCH116COMS) (RPAQQ RHTPATCH116COMS ((* * This patch file revamps the filebox mechanism for inserting new links. Supersedes all the insert-before-marker and insert-in-ordering cruft.) (* * New stuff for NCLINKS) (GLOBALVARS NC.FileBoxLinkSpacer) (INITVARS (NC.FileBoxLinkSpacer (CHARACTER 13))) (FNS NC.CachedMakeFilingLink) (* * Changes for NCLINKS) (FNS NC.MakeFilingLink) (* * Delete the following functions from NCLINKS: NC.InsertLinkInOrdering NC.CachedInsertLinkInOrdering NC.InsertLinkBeforeMarker) (* * New function for NCUTILITIES) (FNS NC.MarkerMatchesCardP))) (* * This patch file revamps the filebox mechanism for inserting new links. Supersedes all the insert-before-marker and insert-in-ordering cruft.) (* * New stuff for NCLINKS) (DECLARE: DOEVAL@COMPILE DONTCOPY (GLOBALVARS NC.FileBoxLinkSpacer) ) (RPAQ? NC.FileBoxLinkSpacer (CHARACTER 13)) (DEFINEQ (NC.CachedMakeFilingLink (LAMBDA (SourceCard DestinationCard LinkType DisplayMode IgnoreMarkersFlg) (* rht: "13-Oct-86 12:31") (* * Assumes SourceCard is cached. Inserts a link to DestinationCard into SourceCard. Unless IgnoreMarkersFlg is non-nil or there's no marker for type of DestinationCard, then will insert somewhere between appropriate marker and either the next marker or the end of SourceCard substance using SourceCard's OrderingFn to determine where to insert. If there's no OrderingFn, but there is an appropriate marker, then stick at end of group. If no marker and no OrderingFn, then stick wherever cursor is.) (LET ((OrderingFn (NC.GetProp SourceCard (QUOTE OrderingFn))) (TextStream (NC.FetchSubstance SourceCard)) StartLoc EndLoc TextObject FoundMarkerFlg Link) (SETQ TextObject (TEXTOBJ TextStream)) (OR IgnoreMarkersFlg (SETQ FoundMarkerFlg (for MarkerPairs on (TEDIT.LIST.OF.OBJECTS TextObject (FUNCTION NC.PlaceMarkerP)) eachtime (BLOCK) do (if (NC.MarkerMatchesCardP (CAAR MarkerPairs) DestinationCard) then (SETQ StartLoc (CADAR MarkerPairs)) (SETQ EndLoc (OR (CADADR MarkerPairs) (ADD1 (GETEOFPTR TextStream)))) (RETURN T)) finally (SETQ StartLoc 1) (SETQ EndLoc (ADD1 (GETEOFPTR TextStream) ))))) (COND (OrderingFn (for ObjectPair in (TEDIT.LIST.OF.OBJECTS TextObject (FUNCTION NC.LinkIconImageObjP)) eachtime (BLOCK) until (GREATERP (CADR ObjectPair) EndLoc) when (AND (LEQ StartLoc (CADR ObjectPair)) (APPLY* OrderingFn DestinationCard (fetch (Link DestinationCard) of (NC.FetchLinkFromLinkIcon (CAR ObjectPair))))) do (TEDIT.SETSEL TextStream (CADR ObjectPair) 0 (QUOTE LEFT)) (RETURN) finally (TEDIT.SETSEL TextStream EndLoc 0 (QUOTE RIGHT)))) (FoundMarkerFlg (TEDIT.SETSEL TextStream EndLoc 0 (QUOTE RIGHT)))) (PROG1 (NC.InsertLinkInText TextStream LinkType DestinationCard SourceCard DisplayMode) (TEDIT.INSERT TextStream NC.FileBoxLinkSpacer))))) ) (* * Changes for NCLINKS) (DEFINEQ (NC.MakeFilingLink (LAMBDA (SourceCard DestinationCard LinkType) (* rht: "13-Oct-86 12:09") (* Make a link from FileBox to DestinationCard If card is a regular card, insert link at end of contents card. If card is a supercontents of contents card then insert just before the subcontents marker (i.e., at end of super contents list). If card is a subcontents card then insert just before note cards marker (i.e., at end of subcontents list)) (* * rht 10/25/85: Now checks if card's window is shrunken. If so, shrink it back at the end.) (* * kirk: 14Nov85: deleted use of of DatabaseStream) (* * fgh 11/15/85 Adapted from and intended to replace NC.MakeAContentsHook) (* * kirk 11Apr86 took out hard coded link display mode) (* * rht 10/13/86: Totally overhauled. Now calls NC.CachedMakeFilingLink which does both inserting before markers and inserting in ordering.) (if (NC.ActiveCardP SourceCard) then (NC.IfMultipleCardPartsNotBusy SourceCard (SUBSTANCE TOLINKS FROMLINKS GLOBALTOLINKS) (LET ((ShrunkenFlg (NC.GetShrunkenWin SourceCard))) (PROG1 (NC.CachedMakeFilingLink SourceCard DestinationCard LinkType) (AND ShrunkenFlg (SHRINKW (NC.FetchWindow SourceCard))))) ) else (WITH.MONITOR (NC.FetchMonitor (fetch (Card NoteFile) of SourceCard)) (NC.IfMultipleCardPartsNotBusy SourceCard (SUBSTANCE TOLINKS FROMLINKS GLOBALTOLINKS) (if (NC.CardP (NC.GetNoteCard SourceCard)) then (* * This next set of obtain write locks is only to make sure that we come out even when NC.DeactivateCard releases the write locks. Note that the SourceCard will be deactivated upon exit of the RESETLST, as set up by the RESETSAVE.) (RESETSAVE (for CardPart in (QUOTE (SUBSTANCE TOLINKS GLOBALTOLINKS PROPLIST)) do (APPLY* (fetch (Card ObtainWritePermissionFn) of SourceCard) SourceCard CardPart)) (BQUOTE (NC.DeactivateCard , SourceCard))) (PROG1 (NC.CachedMakeFilingLink SourceCard DestinationCard LinkType) (NC.PutMainCardData SourceCard) (NC.PutLinks SourceCard)))))))) ) (* * Delete the following functions from NCLINKS: NC.InsertLinkInOrdering NC.CachedInsertLinkInOrdering NC.InsertLinkBeforeMarker) (* * New function for NCUTILITIES) (DEFINEQ (NC.MarkerMatchesCardP (LAMBDA (MarkerImageObject Card) (* rht: "13-Oct-86 12:08") (* * Return non-nil if Marker is appropriate for Card.) (AND (NC.PlaceMarkerP MarkerImageObject) (STREQUAL (IMAGEOBJPROP MarkerImageObject (QUOTE OBJECTDATUM)) (if (NC.FileBoxP Card T) then "File Boxes" else "Note Cards"))))) ) (PUTPROPS RHTPATCH116 COPYRIGHT ("Xerox Corporation" 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (1326 4012 (NC.CachedMakeFilingLink 1336 . 4010)) (4045 6587 (NC.MakeFilingLink 4055 . 6585)) (6767 7203 (NC.MarkerMatchesCardP 6777 . 7201))))) STOP