(FILECREATED "21-Jan-87 18:13:39" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH183.;3 9055         changes to:  (FNS NC.LinkIconWhenCopiedFn)		   (VARS RHTPATCH183COMS)      previous date: "21-Jan-87 17:50:56" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH183.;1)(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.)(PRETTYCOMPRINT RHTPATCH183COMS)(RPAQQ RHTPATCH183COMS ((* * Fix to bug #394: I&R no longer making DELETE ME link substitutes.)			  (* * Change to NCLINKS)			  (FNS NC.LinkIconWhenCopiedFn)))(* * Fix to bug #394: I&R no longer making DELETE ME link substitutes.)(* * Change to NCLINKS)(DEFINEQ(NC.LinkIconWhenCopiedFn  (LAMBDA (ImageObject ToWindowStream FromTextStream ToTextStream)                                                             (* rht: "21-Jan-87 18:13")          (* * Called when copying a link icon from FromTextStream to ToWindowStream. Sets the necessary link information up 	  for card corresponding to ToWindowStream.)          (* * rht 11/18/84: Major hacking. Now checks for all sorts of illegal cases. Either goes ahead with copy, converts 	  link type to "Unspecified", or deletes the new "invisible" link. The latter will change when imageobj fns can 	  return DON'T.)          (* * rht 12/12/84: now does RETFROM instead of adding processes to delete imageobj's. This is cleaner, but still 	  ugly.)          (* * rht 3/25/85: Fixed to handle copies within a sketch card. That is indicated by nullity of the two textstream 	  args.)          (* * rht 3/24/86: Changed call to NC.CoerceToID to NC.CoerceToCard)          (* * fgh 6/30/86 Now ERROR! out of attempt to copy between NoteFiles)          (* * rht 7/14/86: Reversed order of tests for WINDOWP and TEXTSTREAMP in computation of NewSourceCard.)          (* * rht 8/11/86: Now only resets NewSourceCard if it was NIL so that copies to a sketch will work.)          (* * rht 10/5/86: Undid change fgh 6/30/86: now allows copies of links across notefiles. Also handles illegal 	  copies differently. Rather than RETFROM'ing or ERROR!'ing, it puts in a DELETE ME imageobj.)          (* * rht 12/16/86: Now passes Window to NC.GetCrossFileLinkDestCard.)          (* * rht 1/21/87: Now handles attempt to copy to non-NoteCards stream differently than other illegalities.)    (DECLARE (GLOBALVARS NC.CopyCrossFileLinksMode NC.DELETEMEImageObjDatum NC.SystemLinkLabels 			     NC.UnspecifiedLinkLabel NC.NewCrossFileLinksTwoWayFlg))    (LET ((Link (NC.FetchLinkFromLinkIcon ImageObject))	  (ImageObjectCopy (IMAGEOBJPROP ImageObject (QUOTE ImageObjectCopy)))	  (InTEditCopyFlg (COND			    ((STKPOS (QUOTE TEDIT.COPY))			      T)))	  (Window (AND ToWindowStream (WFROMDS ToWindowStream T)))	  SourceCard DestinationCard NewSourceCard NewLabel NewDisplayMode OldDisplayMode Label 	  InsertPos IllegalCopyFlg ExternalCopyFlg)         (SETQ Label (fetch (Link Label) of Link))         (SETQ SourceCard (fetch (Link SourceCard) of Link))         (SETQ DestinationCard (fetch (Link DestinationCard) of Link))         (SETQ OldDisplayMode (fetch (Link DisplayMode) of Link))         (SETQ NewSourceCard (COND	     ((TEXTSTREAMP ToTextStream)	       (NC.CoerceToCard ToTextStream))	     ((WINDOWP Window)	       (NC.CoerceToCard Window))))         (COND	   ((AND (NULL NewSourceCard)		   (NULL FromTextStream)		   (NULL ToTextStream))                    (* We must be moving within a sketch.)	     (SETQ NewSourceCard SourceCard))	   ((TEXTSTREAMP ToTextStream)                     (* If it's a text copy, then compute position to 							     insert link at.)	     (SETQ InsertPos (NC.CharPosFromTextObject (TEXTOBJ ToTextStream)))))         (COND	   ((NULL NewSourceCard)                           (* Trying to copy to a non NoteCard stream)	     (NC.PrintMsg Window NIL (CONCAT "Tried to copy a NoteCards link icon" 						 " to a non-NoteCards stream."						 (CHARACTER 13)))	     (SETQ ExternalCopyFlg T))	   ((NULL (NC.LinksSupportedP NewSourceCard (QUOTE (Local))))	     (NC.PrintMsg Window NIL (CONCAT "Tried to copy a NoteCards link icon" 						 " to a NoteCard that"						 " does not support links!!."						 (CHARACTER 13)))	     (SETQ IllegalCopyFlg T))	   ((AND (FMEMB Label (QUOTE (FiledCard SubBox)))		   (NEQ (NC.RetrieveType NewSourceCard)			  (QUOTE FileBox)))                (* Copy from filebox to non-filebox.)	     (NC.PrintMsg Window NIL (CONCAT 				       "Tried to copy filedcard or subbox link to a non-filebox."						 (CHARACTER 13)						 "Link type of copy set to 'Unspecified'."						 (CHARACTER 13)))	     (SETQ NewLabel NC.UnspecifiedLinkLabel)	     (SETQ NewDisplayMode (create LINKDISPLAYMODE				       copying OldDisplayMode SHOWTITLEFLG _ T SHOWLINKTYPEFLG _ T))	     )	   ((AND (NEQ (NC.RetrieveType SourceCard)			  (QUOTE FileBox))		   (EQ (NC.RetrieveType NewSourceCard)			 (QUOTE FileBox)))                 (* Copy from non-filebox to filebox.)	     (NC.PrintMsg Window NIL (CONCAT "Can't copy links from non-filebox to filebox."						 (CHARACTER 13)						 "Try using 'PutCardsHere'."						 (CHARACTER 13)))	     (SETQ IllegalCopyFlg T))	   ((AND (FMEMB Label (QUOTE (FiledCard SubBox)))		   (EQ NewSourceCard SourceCard))          (* Copy within same filebox.)	     (NC.PrintMsg Window NIL (CONCAT 					  "Can't copy links within a FileBox.  Try move instead."						 (CHARACTER 13)))	     (SETQ IllegalCopyFlg T))	   ((AND (EQ (NC.RetrieveType NewSourceCard)			 (QUOTE FileBox))		   (for Link1 in (NC.FetchToLinks NewSourceCard)		      thereis (AND (NC.ChildLinkP Link1)				       (EQ DestinationCard (fetch (Link DestinationCard)								of Link1)))))                                                             (* Copy to a filebox already containing this child.)	     (NC.PrintMsg Window NIL (CONCAT (NC.RetrieveTitle DestinationCard)						 " not copied: already appears as a child of "						 (NC.RetrieveTitle NewSourceCard)						 (CHARACTER 13)))	     (SETQ IllegalCopyFlg T))	   ((AND (EQ Label (QUOTE SubBox))		   (OR (EQ NewSourceCard DestinationCard)			 (NOT (NC.NotDaughterP DestinationCard NewSourceCard						   (FUNCTION NC.ChildLinkP)))))                                                             (* Copy to a filebox causes a cycle.)	     (NC.PrintMsg Window NIL (CONCAT "Couldn't copy " Link " because of subbox cycle."						 (CHARACTER 13)))	     (SETQ IllegalCopyFlg T))	   ((AND (FMEMB Label NC.SystemLinkLabels)		   (NOT (FMEMB Label (QUOTE (FiledCard SubBox))))		   (NEQ NewSourceCard SourceCard))         (* Copy of system link outside of own card.)	     (NC.PrintMsg Window NIL (CONCAT "Tried to copy system link." (CHARACTER 13)						 "Link type of copy set to 'Unspecified'."						 (CHARACTER 13)))	     (SETQ NewLabel NC.UnspecifiedLinkLabel)	     (SETQ NewDisplayMode (create LINKDISPLAYMODE				       copying OldDisplayMode SHOWTITLEFLG _ T SHOWLINKTYPEFLG _ T))	     )	   ((NC.CrossFileLinkCardP DestinationCard)        (* Copy of a cross-file link.)	     (if (NOT (NC.ActiveCardP DestinationCard))		 then (NC.GetNoteCard DestinationCard))                                                             (* If it's to be two-way, then make a fresh 							     CrossFileLinkCard.)	     (if (OR (EQ NC.CopyCrossFileLinksMode (QUOTE TWOWAY))			 (AND (NULL NC.CopyCrossFileLinksMode)				NC.NewCrossFileLinksTwoWayFlg))		 then (SETQ DestinationCard (NC.GetCrossFileLinkDestCard DestinationCard Window)			  ))	     (OR DestinationCard (SETQ IllegalCopyFlg T))))         (COND	   (IllegalCopyFlg (IMAGEOBJPROP ImageObjectCopy (QUOTE OBJECTDATUM)					   NC.DELETEMEImageObjDatum)			   (NC.SetUserDataProp SourceCard (QUOTE NeedsCleaningFlg)						 T))	   (ExternalCopyFlg (NC.CoerceToExternalPutLinkIcon ImageObjectCopy SourceCard 							      DestinationCard (OR NewLabel Label)))	   (T (NC.FillInLinkIcon ImageObjectCopy (OR NewLabel Label)				   DestinationCard NewSourceCard (OR NewDisplayMode OldDisplayMode)				   (NC.LinkAtCharPos InsertPos ToTextStream)				   NC.CopyCrossFileLinksMode)))         (IMAGEOBJPROP ImageObject (QUOTE ImageObjectCopy)			 NIL)))))(PUTPROPS RHTPATCH183 COPYRIGHT ("Xerox Corporation" 1987))(DECLARE: DONTCOPY  (FILEMAP (NIL (627 8973 (NC.LinkIconWhenCopiedFn 637 . 8971)))))STOP