(FILECREATED "16-Jan-87 20:43:53" {QV}<NOTECARDS>1.3K>NEXT>RHTPATCH181.;1 6092
changes to: (VARS RHTPATCH181COMS))
(* Copyright (c) 1987 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT RHTPATCH181COMS)
(RPAQQ RHTPATCH181COMS ((* * Fix to half of bug #6: call to MarkCardDeletedFn is now after call to
NC.QuitCard in NC.DeleteNoteCard.)
(* * Change to NCCARDS)
(FNS NC.DeleteNoteCard)))
(* * Fix to half of bug #6: call to MarkCardDeletedFn is now after call to NC.QuitCard in
NC.DeleteNoteCard.)
(* * Change to NCCARDS)
(DEFINEQ
(NC.DeleteNoteCard
(LAMBDA (Card) (* rht: "16-Jan-87 20:39")
(* * Delete a single note card from a NoteFile)
(* * rht 8/11/86 Now calls NC.DeleteReferencesToCardFromShowLinks to smash any link icons in show links menus
pointing to this card.)
(* * kef 7/28/86: Added code to obtain all of the write locks deemed necessary.)
(* * kef 7/30/86: Modified to check for Client's concept of whether he owns the write lock or not, thus deciding
whether or not to setup the release of the write lock afterwards.)
(* * kef 7/31/86: Added the nesting of the obtaining writelocks with deactivating the card.)
(* * fgh 8/30/86 Translated APPLY* to NC.ApplyFn. Made cosmetic changes in FOR loop concewrning WriteLocks.)
(* * rht 1/16/87: Moved call to MarkCardDeletedFn after call to NC.QuitCard.)
(RESETLST (RESETSAVE (CURSOR WAITINGCURSOR))
(RESETSAVE NIL (BQUOTE (NC.SetBeingDeletedFlg , Card NIL)))
(WITH.MONITOR (NC.FetchMonitor (fetch (Card NoteFile) of Card))
(LET ((WriteLocks (for CardPart
in (QUOTE (SUBSTANCE TITLE TOLINKS FROMLINKS
GLOBALTOLINKS PROPLIST))
collect (CONS Card CardPart)))
ToLinks FromLinks Window BusyPart PromptWindow)
(NC.SetBeingDeletedFlg Card T)
(SETQ ToLinks (NC.RetrieveToLinks Card))
(SETQ FromLinks (NC.RetrieveFromLinks Card))
(for ToLink in ToLinks
do (NCONC WriteLocks (for CardPart
in (QUOTE (TOLINKS FROMLINKS
GLOBALTOLINKS))
collect
(CONS (fetch (Link
DestinationCard)
of ToLink)
CardPart))))
(for FromLink in FromLinks
do (NCONC WriteLocks (for CardPart
in (QUOTE (SUBSTANCE TOLINKS
FROMLINKS
GLOBALTOLINKS))
collect
(CONS (fetch (Link SourceCard)
of FromLink)
CardPart))))
(* * The for... loop that follows is the condition that we can obtain all of the write locks on all of the card
parts collected in WriteLocks. If we obtain a writelock, setup a RESETSAVE to release it upon exit.
Then finally, if we do obtain a write lock, return T so that the for loop's "always" condition is satisfied.
If we don't obtain a write lock for a given card part, save that one as a variable so we can report it to the user.
Then return NIL, so that the for loop's "always" condition is not satisfied, and we bump out of the for loop.)
(NC.PrintMsg (SETQ PromptWindow (NC.AttachPromptWindow
(NC.FetchWindow Card)))
T "Collecting write locks...")
(COND
((for WriteLock in WriteLocks bind WLCard WLCardPart
when (NC.ValidCardP (SETQ WLCard (CAR WriteLock)))
always (SETQ WLCardPart (CDR WriteLock))
(COND
((NC.ApplyFn ObtainWritePermissionFn WLCard
WLCardPart)
(RESETSAVE NIL
(BQUOTE
(APPLY* , (fetch
(Card
ReleaseWritePermissionFn)
of WLCard)
, WLCard , WLCardPart))
)
T)
(T (SETQ BusyPart WriteLock)
NIL)))
(* * Call off to the MarkCardDeletedFn specific to the NoteFile.)
(RESETSAVE (for CardPart
in (QUOTE (SUBSTANCE TOLINKS GLOBALTOLINKS
PROPLIST))
do (NC.ApplyFn ObtainWritePermissionFn Card
CardPart))
(BQUOTE (NC.DeactivateCard , Card T)))
(NC.ApplyFn MarkCardDeletedFn Card)
(NC.SetToLinks Card NIL)
(NC.SetFromLinks Card NIL)
(NC.PrintMsg PromptWindow NIL
"Removing links to and from other cards...")
(for ToLink in ToLinks when (NC.ValidLinkP ToLink)
do (NC.DelFromLink ToLink)
(NC.DelReferencesToCardFromShowLinks
(fetch (Link DestinationCard) of ToLink)
ToLink))
(for FromLink in FromLinks when (NC.ValidLinkP
FromLink)
do (NC.DelToLink FromLink)
(NC.DelReferencesToCard (fetch (Link SourceCard)
of FromLink)
Card)
(NC.DelReferencesToCardFromShowLinks
(fetch (Link SourceCard) of FromLink)
FromLink))
(NC.PrintMsg PromptWindow NIL "..done.")
(if (NC.ActiveCardP Card)
then (NC.TurnOffDirtyFlgs Card)
(SETQ Window (NC.FetchWindow Card))
(AND Window (NC.GreyCard Card))
(NC.CloseAllPropListEditors Card)
(NC.QuitCard Card T T NIL T))
(NC.ApplyFn MarkCardDeletedFn Card)
(NC.SetNewCardFlg Card NIL))
(T (NC.CardPartBusy (CAR BusyPart)
(CDR BusyPart)
PromptWindow))))))))
)
(PUTPROPS RHTPATCH181 COPYRIGHT ("Xerox Corporation" 1987))
(DECLARE: DONTCOPY
(FILEMAP (NIL (589 6010 (NC.DeleteNoteCard 599 . 6008)))))
STOP