(FILECREATED " 7-Aug-87 10:39:24" {QV}<NOTECARDS>1.3KNEXT>PMIPATCH054.;1 7807
changes to: (VARS PMIPATCH054COMS)
(FNS NC.GetCrossFileLinkDestCard))
(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT PMIPATCH054COMS)
(RPAQQ PMIPATCH054COMS ((* * pmi 8/7/87: Fixes bug %#630: prompt for filename doesn't append
".notefile.")
(* * Changed in NCCROSSFILELINKS)
(FNS NC.GetCrossFileLinkDestCard NC.OpenCrossFileLinkDestNoteFile)))
(* * pmi 8/7/87: Fixes bug %#630: prompt for filename doesn't append ".notefile.")
(* * Changed in NCCROSSFILELINKS)
(DEFINEQ
(NC.GetCrossFileLinkDestCard
(LAMBDA (CrossFileLinkCard InterestedWindow Don'tOpenDestNoteFileFlg)
(* pmi: " 7-Aug-87 10:18")
(* * Find the notefile corresponding to this crossfilelink and try to open it if not already open.
Then look for the card in there having the given UID. Return NIL if failed for any reason.)
(* * rht 11/10/86: Make sure CrossFileLinkCard is cached before fetching substance.)
(* * rht 11/19/86: Now rips off version number from destination notefile hint.)
(* * rht 12/11/86: Now checks that destination card is not deleted.)
(* * rht 12/16/86: Now takes InterestedWindow argument.)
(* * rht 3/25/87: Now calls NC.CoerceToInterestedWindow.)
(* * rht 3/27/87: Now calls NC.OpenCrossFileLinkDestNoteFile.)
(* * rht 5/27/87: New arg Don'tOpenDestNoteFileFlg. If non-nil, then destination notefile has to be already open.)
(* * rht 6/4/87: Now passes CrossFileLinkCard to NC.OpenCrossFileLinkDestNoteFile.)
(* * rht 6/8/87: Now computes WasOpenPromptWindowFlg)
(* * pmi 8/7/87: Now gets a filename if it has to loop and ask for another notefile to try.)
(LET ((Title (NC.FetchTitle CrossFileLinkCard))
(SourceNoteFile (fetch (Card NoteFile) of CrossFileLinkCard))
Substance DestNoteFileUID DestFileHint DestCardUID DestNoteFile DestFileName Card
WasOpenPromptWindowFlg)
(OR InterestedWindow (SETQ InterestedWindow (NC.CoerceToInterestedWindow
SourceNoteFile)))
(SETQ WasOpenPromptWindowFlg (NC.PromptWindowOpenP InterestedWindow))
(if (NOT (NC.ActiveCardP CrossFileLinkCard))
then (NC.GetNoteCard CrossFileLinkCard))
(SETQ Substance (NC.FetchSubstance CrossFileLinkCard))
(SETQ DestCardUID (fetch (CrossFileLinkSubstance CrossFileLinkDestCardUID) of
Substance))
(SETQ DestNoteFileUID (fetch (CrossFileLinkSubstance CrossFileLinkDestNoteFileUID)
of Substance))
(SETQ DestFileHint (fetch (CrossFileLinkSubstance CrossFileLinkDestFileHint)
of Substance))
(SETQ DestNoteFile (NC.NoteFileFromNoteFileUID DestNoteFileUID))
(SETQ DestFileName (OR (AND (type? NoteFile DestNoteFile)
(fetch (NoteFile FullFileName) of DestNoteFile))
DestFileHint))
(for while (if Don'tOpenDestNoteFileFlg
then (NCP.OpenNoteFileP DestNoteFile)
else (SETQ DestNoteFile (NC.OpenCrossFileLinkDestNoteFile
DestNoteFile
DestFileName
InterestedWindow
CrossFileLinkCard))
(SETQ DestFileName (OR DestFileName (AND (type? NoteFile
DestNoteFile)
(fetch
(NoteFile
FullFileName)
of DestNoteFile))
)))
bind NewFileName
do (if (NC.ValidCardP (SETQ Card (NC.CardFromUID DestCardUID DestNoteFile)))
then (if (NOT (EQUAL (SETQ NewFileName (fetch (NoteFile FullFileName)
of DestNoteFile))
(FULLNAME (fetch (CrossFileLinkSubstance
CrossFileLinkDestFileHint)
of Substance))))
then (replace (CrossFileLinkSubstance CrossFileLinkDestFileHint)
of Substance with (PACKFILENAME (QUOTE VERSION)
NIL
(QUOTE BODY)
NewFileName))
(NC.MarkCardDirty CrossFileLinkCard))
(RETURN Card)
else (if Don'tOpenDestNoteFileFlg
then (RETURN NIL)
else (NC.PrintMsg InterestedWindow T
"Couldn't find destination card in "
DestFileName "." (CHARACTER 13))
(if (NOT (NC.AskYesOrNo
"Want to try opening a different notefile? "
" -- " "Yes" NIL InterestedWindow
WasOpenPromptWindowFlg))
then (RETURN NIL)
else (SETQ DestNoteFile (SETQ DestFileName NIL)))))))))
(NC.OpenCrossFileLinkDestNoteFile
(LAMBDA (DestNoteFile DestFileName InterestedWindow CrossFileLinkCard)
(* pmi: " 6-Aug-87 15:14")
(* * If DestNoteFile is an open notefile, then fine. Otherwise get file names from user and keep trying to open
until she gives up.)
(* * rht 5/25/87: Minor change: no longer passes InterestedWindow to NC.OpenNoteFile.)
(* * rht 6/3/87: Now calls new function NC.AskUserWithMenu. Added CrossFileLinkCard argument whose title is used to
construct Message.)
(* * rht 6/8/87: Now computes WasOpenPromptWindowFlg)
(* * pmi 8/6/87: Replaced NC.AskUser with NC.DatabaseFileName when asking the user for a filename to try.
This insures that the filename ends in ".notefile")
(OR InterestedWindow (NC.CoerceToInterestedWindow CrossFileLinkCard))
(LET ((WasOpenPromptWindowFlg (NC.PromptWindowOpenP InterestedWindow)))
(if (NCP.OpenNoteFileP DestNoteFile)
then DestNoteFile
else (LET ((MenuItems (QUOTE (Read/Write Read-Only Don't% Open))))
(for while (OR DestFileName (SETQ DestFileName
(NC.DatabaseFileName "File name to try opening: " NIL
T T NIL InterestedWindow)))
do (LET ((Message (if (NC.ValidCardP CrossFileLinkCard)
then (CONCAT "Open " DestFileName
" to look for '"
(NC.RetrieveTitle
CrossFileLinkCard)
"'?")
else (CONCAT "OPEN " DestFileName "?")))
ReadOnlyOpenFlg)
(if (AND (SELECTQ (NC.AskUserWithMenu MenuItems Message
InterestedWindow
WasOpenPromptWindowFlg T)
(Read/Write (SETQ ReadOnlyOpenFlg NIL)
T)
(Read-Only (SETQ ReadOnlyOpenFlg T))
(Don't% Open (RETURN NIL))
(RETURN NIL))
(NCP.OpenNoteFileP (SETQ DestNoteFile
(NC.OpenNoteFile
(OR DestNoteFile
DestFileName)
NIL NIL NIL NIL NIL NIL NIL
NIL NIL NIL NIL
ReadOnlyOpenFlg))))
then (RETURN DestNoteFile)
else (NC.PrintMsg InterestedWindow T "Couldn't open "
DestFileName "." (CHARACTER 13))
(SETQ DestFileName (SETQ DestNoteFile NIL))
(if (NOT (NC.AskYesOrNo
"Want to try opening a different notefile? "
" -- " "Yes" NIL
InterestedWindow
WasOpenPromptWindowFlg))
then (RETURN NIL))))))))))
)
(PUTPROPS PMIPATCH054 COPYRIGHT ("Xerox Corporation" 1987))
(DECLARE: DONTCOPY
(FILEMAP (NIL (635 7725 (NC.GetCrossFileLinkDestCard 645 . 4984) (NC.OpenCrossFileLinkDestNoteFile
4986 . 7723)))))
STOP