(FILECREATED "22-Dec-86 12:38:41" {QV}<NOTECARDS>1.3K>NEXT>PMIPATCH014.;3 52489 changes to: (FNS NC.DeleteDatabaseFile NC.CompactNoteFile NC.CheckpointNoteFile NC.CloseNoteFile NC.AbortSession NC.MakeMainMenu) (VARS PMIPATCH014COMS) previous date: "19-Dec-86 19:14:31" {QV}<NOTECARDS>1.3K>NEXT>PMIPATCH014.;1) (* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT PMIPATCH014COMS) (RPAQQ PMIPATCH014COMS ((* * pmi 12/19/86 Fixes bug #329: Inspect & Repair and Compact should not be accessible for open notefiles. Also cleaned up prompts when attempting to do functions that shouldn't be done on open (closed) notefiles.) (* * Changes to NCINTERFACE) (FNS NC.MakeMainMenu) (* * Changes to NCDATABASE) (FNS NC.CompactNoteFile NC.CopyNoteFile NC.InspectAndRepairNoteFile NC.RenameNoteFile NC.DeleteDatabaseFile NC.CheckpointNoteFile NC.CloseNoteFile NC.AbortSession))) (* * pmi 12/19/86 Fixes bug #329: Inspect & Repair and Compact should not be accessible for open notefiles. Also cleaned up prompts when attempting to do functions that shouldn't be done on open (closed) notefiles.) (* * Changes to NCINTERFACE) (DEFINEQ (NC.MakeMainMenu (LAMBDA (DatabaseTitle) (* pmi: "19-Dec-86 18:54") (* * Create the NoteCards menus) (* * rht 8/1/84: Added def'n for new menu: NC.SelectingFileBoxChildrenMenu) (* * rht 2/4/85: The browser source menu now accepts multiple selections.) (* * fkr 10/29/85: Now moves window onto screen.) (* * fgh 11/14/85 Eliminated NC Main Menu which was replaced by per NoteFile menus.) (* * pmi 12/4/86 Added menus for left button title bar of NoteFile Icons, one for open NoteFile and one for closed NoteFile) (* * pmi 12/19/86 Removed menu items "Compact" and "Inspect&Repair" from NC.OpenedNoteFileMenu.) (DECLARE (GLOBALVARS NC.MainMenuPosition NC.SelectingSourcesMenu NC.SelectingContentsMenu NC.SelectingSingleCardMenu NC.SelectingCardMenu NC.SelectingMultipleCardsMenu NC.DeleteSelectingMenu NC.SelectingParentsMenu NC.SelectingBrowserSourceMenu NC.SelectingFileBoxChildrenMenu NC.SelectingCardsMenu NC.OpenedNoteFileMenu NC.ClosedNoteFileMenu NC.MenuFont WHITESHADE GRAYSHADE)) (PROG (X (Font (FONTCREATE (QUOTE HELVETICA) 12 (QUOTE BOLD))) (TitleFont (FONTCREATE (QUOTE HELVETICA) 10 (QUOTE BOLD))) (Position (OR (POSITIONP NC.MainMenuPosition) (create POSITION XCOORD ← 350 YCOORD ← 650)))) (* Main Menu) (SETQ X (create MENU ITEMS ←(QUOTE ((NoSource NIL "Indicates that this note card has no source.") (Undo NIL "Backup over last selection.") (Done NIL "Indicates that selection is completed.")) ) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting Source(s)" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 3 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingSourcesMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Cancel NIL "Cancel card closing.") (Undo NIL "Backup over last selection.") (Done NIL "Indicates that selection is completed.")) ) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting File Box(es)" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 3 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingContentsMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((New% Card NIL "Make a new note card.") (Cancel NIL "Cancel this selection."))) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting Note Card" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 2 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingSingleCardMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Cancel NIL "Cancel this selection."))) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting Single Card" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 1 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingCardMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Cancel NIL "Cancel this selection.") (Undo NIL "Backup over last selection.") (Done NIL "Indicates that selection is completed.")) ) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting Note Cards" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 3 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingMultipleCardsMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Cancel NIL "Cancel this selection.") (Undo NIL "Backup over last selection.") (Done NIL "Indicates that selection is completed.")) ) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting cards to close or delete" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 3 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.DeleteSelectingMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Cancel NIL "Cancel this selection.") (Undo NIL "Backup over last selection.") (Done NIL "Indicates that selection is completed.")) ) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting FileBox(s)" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 3 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingParentsMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Cancel NIL "Cancel this selection.") (Undo NIL "Backup over last selection.") (Done NIL "Indicates that this operation is completed."))) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting Starting Card(s)/Box(s)" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 3 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingBrowserSourceMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Cancel NIL "Cancel this operation.") (Undo NIL "Backup over last selection.") (Done NIL "Indicates that this operation is completed."))) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting cards to file" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 3 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingFileBoxChildrenMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Cancel NIL "Cancel this operation.") (Undo NIL "Backup over last selection.") (Done NIL "Indicates that this operation is completed."))) WHENSELECTEDFN ←(FUNCTION NC.SelectionMenusWhenSelectedFn) TITLE ← "Selecting Cards" CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUCOLUMNS ← 3 MENUFONT ← Font ITEMHEIGHT ←(IPLUS 10 (FONTPROP Font (QUOTE HEIGHT))) MENUPOSITION ← Position MENUTITLEFONT ← TitleFont)) (SETQ NC.SelectingCardsMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Open NIL "Opens this NoteFile." (SUBITEMS (Read-only% Open NIL "Opens this NoteFile for read-only."))) (Checkpoint NIL "Checkpoint this NoteFile, saving changed cards.") (Close NIL "Closes this NoteFile.") (Abort NIL "Close NF, deleting changes since last checkpoint.") (Compact NIL "Compacts a NoteFile to a target file." (SUBITEMS (Compact% To% Target% File NIL "Compacts this NoteFile to a target file.") (Compact% In% Place NIL "Compacts this NoteFile in place."))) (Inspect&Repair NIL "Inspects and optionally repairs this NoteFile." (SUBITEMS (Read% Substances NIL "Inspects and optionally repairs a Notefile, but reads every substance. This slows it WAY down."))) (Copy NIL "Copies this notefile to a target file.") (Rename NIL "Rename this NoteFile") (Delete NIL "Deletes this NoteFile."))) CHANGEOFFSETFLG ←(QUOTE Y) MENUOFFSET ←(CONS -1 0) CENTERFLG ← NIL TITLE ← "NoteFile Ops" MENUTITLEFONT ← NC.MenuFont MENUFONT ← NC.MenuFont ITEMHEIGHT ←(IPLUS (FONTPROP NC.MenuFont (QUOTE HEIGHT)) 1) WHENSELECTEDFN ←(FUNCTION NC.NoteFileTitleLeftWhenSelectedFn))) (for Item in (fetch (MENU ITEMS) of X) do (SHADEITEM Item X (if (MEMB (CAR Item) (QUOTE (Open Checkpoint Close Abort Create))) then WHITESHADE else GRAYSHADE))) (replace (MENU IMAGE) of X with NIL) (SETQ NC.OpenedNoteFileMenu X) (SETQ X (create MENU ITEMS ←(QUOTE ((Open NIL "Opens this NoteFile." (SUBITEMS (Read-only% Open NIL "Opens this NoteFile for read-only."))) (Checkpoint NIL "Checkpoint this NoteFile, saving changed cards.") (Close NIL "Closes this NoteFile.") (Abort NIL "Close NF, deleting changes since last checkpoint.") (Compact NIL "Compacts a NoteFile to a target file." (SUBITEMS (Compact% To% Target% File NIL "Compacts this NoteFile to a target file.") (Compact% In% Place NIL "Compacts this NoteFile in place."))) (Inspect&Repair NIL "Inspects and optionally repairs this NoteFile." (SUBITEMS (Read% Substances NIL "Inspects and optionally repairs a Notefile, but reads every substance. This slows it WAY down."))) (Copy NIL "Copies this notefile to a target file.") (Rename NIL "Rename this NoteFile") (Delete NIL "Deletes this NoteFile."))) CHANGEOFFSETFLG ←(QUOTE Y) MENUOFFSET ←(CONS -1 0) CENTERFLG ← NIL TITLE ← "NoteFile Ops" MENUTITLEFONT ← NC.MenuFont MENUFONT ← NC.MenuFont ITEMHEIGHT ←(IPLUS (FONTPROP NC.MenuFont (QUOTE HEIGHT)) 1) WHENSELECTEDFN ←(FUNCTION NC.NoteFileTitleLeftWhenSelectedFn))) (for Item in (fetch (MENU ITEMS) of X) do (SHADEITEM Item X (if (MEMB (CAR Item) (QUOTE (Open Compact Inspect&Repair Copy Rename Delete Create))) then WHITESHADE else GRAYSHADE))) (replace (MENU IMAGE) of X with NIL) (SETQ NC.ClosedNoteFileMenu X)))) ) (* * Changes to NCDATABASE) (DEFINEQ (NC.CompactNoteFile (LAMBDA (FromNoteFileOrName ToFileName InPlaceFlg InterestedWindow) (* pmi: "22-Dec-86 11:38") (* * Compact a NoteFile. If InPlaceFlg is T calls NC.CompactNoteFileInPlace. Otherwise if ToFileName is NIL, asks for a new file name.) (* * fkr 11/8/85 Updated to handle new CardID scheme and NoteFile object.) (* * kirk 19Nov85: Created from NC.CompactDatabaseInPlace to handle new NoteFile format) (* * fgh 5/186 Totally rewritten to get rid of numerous bugs. Added new InterestedWindow parameter.) (* * rht 7/2/86: Fixed bug in call to NC.CompactToTarget and NC.CompactInPlace. They were being called with FromNoteFile instead of (OR FromNoteFile FromFileName).) (* * kirk 3Jul86 Added SETQ NC.DatabaseFileNameSuggestion) (* * fgh 9/1/86 Now just a wrapper that calls the device specific compact fn. Old CompactNoteFile is now NCLocalDevice.CompactNoteFile.) (* * pmi 12/19/86 Added test for open notefile so we can abort if it is open. Made consistent with other NoteFile operations in the way it checks for valid NoteFile, gets msg window, etc.) (DECLARE (GLOBALVARS NC.MsgDelay)) (PROG ((MsgWindow InterestedWindow) FromNoteFile FullFromFileName) (* * Get the name of the file to be compacted) (if (type? NoteFile FromNoteFileOrName) then (SETQ FromNoteFile FromNoteFileOrName) (SETQ FullFromFileName (fetch (NoteFile FullFileName) of FromNoteFileOrName)) (SETQ MsgWindow (OR InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of FromNoteFileOrName)))) else (OR FromNoteFileOrName (SETQ FromNoteFileOrName (NC.DatabaseFileName "Name of NoteFile to be compacted:" " -- " T NIL NIL MsgWindow)) (RETURN)) (SETQ FullFromFileName (FULLNAME FromNoteFileOrName)) (if (SETQ FromNoteFile (NC.NoteFileFromFileName FullFromFileName)) then (SETQ MsgWindow (OR InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of FromNoteFile)) )))) (* * Check to see if the notefile is open, abort if it is.) (if (NC.NoteFileOpenP FromNoteFile) then (NC.PrintMsg MsgWindow T "Can't compact an open notefile." (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg MsgWindow T) (RETURN NIL)) (* * Apply the device specific comnpact notefile fn for the file's host.) (RETURN (APPLY* (fetch (NoteFileDevice CompactNoteFileFn) of (NC.DeviceVectorForHost (FILENAMEFIELD FullFromFileName (QUOTE HOST)) (QUOTE PRIVATE))) FullFromFileName ToFileName InPlaceFlg MsgWindow))))) (NC.CopyNoteFile (LAMBDA (FromNoteFileOrName ToFileName InterestedWindow) (* pmi: "19-Dec-86 19:04") (* * Copy a notefile. Ask user for names of FromNoteFileOrName and ToFileName.) (* * fkr 11/8/85: Ripped out PSA.Database check. Now takes FromNoteFileOrName and ToFileName args.) (* * kirk 19May86 Fixed to work from NoteFile menu) (* * fgh 6/24/86 Fixed bug where would not work if NULL FromNoteFileOrName) (* * fgh 7/5/86 Closes prompt window when done.) (* * rht 11/1/86: Added missing var binding.) (* * pmi 12/19/86 Changed to call NC.NoteFileOpenP instead of OPENP to check whether the file is open.) (DECLARE (GLOBALVARS NC.MsgDelay NC.DatabaseFileNameSuggestion)) (PROG ((MsgWindow InterestedWindow) Result FullFromFileName NoteFile) (if (type? NoteFile FromNoteFileOrName) then (SETQ NoteFile FromNoteFileOrName) (SETQ FullFromFileName (fetch (NoteFile FullFileName) of FromNoteFileOrName)) (SETQ MsgWindow (OR InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of FromNoteFileOrName)))) else (OR FromNoteFileOrName (SETQ FromNoteFileOrName (NC.DatabaseFileName "Name of NoteFile to be copied:" " -- " T NIL NIL MsgWindow)) (RETURN)) (SETQ FullFromFileName (FULLNAME FromNoteFileOrName)) (if (SETQ NoteFile (NC.NoteFileFromFileName FullFromFileName)) then (SETQ MsgWindow (OR InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of NoteFile)))))) (if (NC.NoteFileOpenP NoteFile) then (NC.PrintMsg MsgWindow T "Can't copy an open notefile." (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg MsgWindow T) (RETURN NIL)) (OR ToFileName (SETQ ToFileName (NC.DatabaseFileName "Name of target of copy:" " -- " T NIL NIL MsgWindow)) (RETURN)) (COND ((AND FullFromFileName ToFileName) (NC.PrintMsg MsgWindow T "Copying " FullFromFileName " to " ToFileName " ...") (COND ((SETQ Result (COPYFILE FullFromFileName ToFileName)) (NC.PrintMsg MsgWindow T FullFromFileName " copied to " Result "." (CHARACTER 13)) (SETQ NC.DatabaseFileNameSuggestion (PACKFILENAME (QUOTE VERSION) NIL (QUOTE BODY) Result)) (DISMISS NC.MsgDelay) (NC.ClearMsg MsgWindow T)))) ((NULL FullFromFileName) (NC.PrintMsg MsgWindow T "Can't open file for copy: " FromNoteFileOrName (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg MsgWindow T)))))) (NC.InspectAndRepairNoteFile (LAMBDA (NoteFileOrFileName ReadSubstancesFlg InterestedWindow) (* pmi: "19-Dec-86 19:05") (* * Check to be sure file is closed before calling real inspect and repair.) (* * rht 7/16/86: Added InterestedWindow arg. Removed call to NC.OpenDatabaseFile.) (* * rht 7/17/86: Now works with file name args as well as notefile args. Took out reopen'ing of notefile, because you don't know how it was originally opened.) (* * fgh 9/1/86 Now just a wrapper for the device specific inspect & repair fn. Old functionality is in NCLocalDevice.InspectAndRepairNoteFile.) (* * pmi 12/19/86 Added test for open notefile so we can abort if it is open. Made consistent with other NoteFile operations in the way it checks for valid NoteFile, gets msg window, etc.) (DECLARE (GLOBALVARS NC.MsgDelay)) (PROG ((MsgWindow InterestedWindow) NoteFile NoteFileName) (* * Get the name of the file to be compacted) (if (type? NoteFile NoteFileOrFileName) then (SETQ NoteFile NoteFileOrFileName) (SETQ NoteFileName (fetch (NoteFile FullFileName) of NoteFileOrFileName)) (SETQ MsgWindow (OR InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of NoteFileOrFileName)))) else (OR NoteFileOrFileName (SETQ NoteFileOrFileName (NC.DatabaseFileName "Name of NoteFile to be copied:" " -- " T NIL NIL MsgWindow)) (RETURN)) (SETQ NoteFileName (FULLNAME NoteFileOrFileName)) (if (SETQ NoteFile (NC.NoteFileFromFileName NoteFileName)) then (SETQ MsgWindow (OR InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of NoteFile)))))) (* * Check to see if the notefile is open, abort if it is.) (if (NC.NoteFileOpenP NoteFile) then (NC.PrintMsg MsgWindow T "Can't inspect and repair an open notefile." (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg MsgWindow T) (RETURN NIL)) (* * Apply the device specific repair notefile fn for the file's host.) (RETURN (APPLY* (fetch (NoteFileDevice RepairNoteFileFn) of (NC.DeviceVectorForHost (FILENAMEFIELD NoteFileName (QUOTE HOST)) (QUOTE PRIVATE))) NoteFile ReadSubstancesFlg InterestedWindow))))) (NC.RenameNoteFile (LAMBDA (FromNoteFileOrName ToFileName InterestedWindow) (* pmi: "19-Dec-86 19:05") (* * Rename a notefile. Ask user for names of FromNoteFileOrName and ToFileName.) (* * fgh 7/5/86 First created on basis of CopyNoteFile.) (* * rht 11/1/86: Added missing var binding.) (* * pmi 12/19/86 Changed to call NC.NoteFileOpenP instead of OPENP to check whether the file is open. Made consistent with other NoteFile operations in the way it checks for valid NoteFile, gets msg window, etc.) (DECLARE (GLOBALVARS NC.MsgDelay NC.DatabaseFileNameSuggestion)) (PROG ((MsgWindow InterestedWindow) Result FullFromFileName NoteFile) (* * Get the name of the file to be compacted) (if (type? NoteFile FromNoteFileOrName) then (SETQ NoteFile FromNoteFileOrName) (SETQ FullFromFileName (fetch (NoteFile FullFileName) of FromNoteFileOrName)) (SETQ MsgWindow (OR InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of FromNoteFileOrName)))) else (OR FromNoteFileOrName (SETQ FromNoteFileOrName (NC.DatabaseFileName "Name of NoteFile to be renamed:" " -- " T NIL NIL MsgWindow)) (RETURN)) (SETQ FullFromFileName (FULLNAME FromNoteFileOrName)) (if (SETQ NoteFile (NC.NoteFileFromFileName FullFromFileName)) then (SETQ MsgWindow (OR InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of NoteFile)))))) (* * Check to see if the notefile is open, abort if it is.) (if (NC.NoteFileOpenP NoteFile) then (NC.PrintMsg MsgWindow T "Can't rename an open notefile." (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg MsgWindow T) (RETURN NIL)) (OR ToFileName (SETQ ToFileName (NC.DatabaseFileName "New name for the NoteFile:" " -- " T NIL NIL MsgWindow)) (RETURN)) (COND ((AND FullFromFileName ToFileName) (NC.PrintMsg MsgWindow T "Renaming " FullFromFileName " to " ToFileName " ...") (COND ((SETQ Result (RENAMEFILE FullFromFileName ToFileName)) (NC.PrintMsg MsgWindow T FullFromFileName " renamed to " Result "." (CHARACTER 13)) (* * Fix up the NoteFile with the new name.) (AND NoteFile (replace (NoteFile FullFileName) of NoteFile with Result) (AND (fetch (NoteFile Menu) of NoteFile) (WFROMMENU (fetch (NoteFile Menu) of NoteFile)) (NC.SetUpNoteFileInterface NoteFile))) (SETQ NC.DatabaseFileNameSuggestion (PACKFILENAME (QUOTE VERSION) NIL (QUOTE BODY) Result)) (DISMISS NC.MsgDelay) (NC.ClearMsg MsgWindow T)))) ((NULL FullFromFileName) (NC.PrintMsg MsgWindow T "Can't open file for rename: " FromNoteFileOrName (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg MsgWindow T)))))) (NC.DeleteDatabaseFile (LAMBDA (FileNameOrNoteFile InterestedWindow Don'tConfirmFlg QuietFlg) (* pmi: "22-Dec-86 12:38") (* Delete file FileName) (* * rht 8/7/84: If delete happens, clear NC.DatabaseFileNameSuggestion.) (* * rht 3/17/85: Fixed for case when user specifies version number of file to delete.) (* * fkr 11/8/85: Ripped out PSA.Database check. Added check for file open.) (* * kirk 23Jan86 Changed to use NC.AskYesOrNo) (* * fgh 6/24/86 Added ability to pass down NoteFile object as well as file name. Added code to remove NF from NFs hash array and remove the menu on the screen.) (* * rht 7/2/86: No longer prints completed message with DISMISS. Now returns non-nil if successful. Accepts Don'tConfirmFlg arg.) (* * fgh 7/5/86 Added call to RemoveAccessToNoteFile.) (* * rht 7/13/86: Added QuietFlg arg.) (* * kef 8/8/86: Factored out into device specific vectors.) (* * pmi 12/3/86 Added check for open file) (* * pmi 12/19/86 Changed to call NC.NoteFileOpenP instead of OPENP to check whether the file is open. Added NC.DeviceVectorsHashArray. to GLOBALVARS) (DECLARE (GLOBALVARS NC.MsgDelay NC.DeviceVectorsHashArray)) (PROG ((FileName (if (type? NoteFile FileNameOrNoteFile) then (fetch (NoteFile FullFileName) of FileNameOrNoteFile) else FileNameOrNoteFile)) FullFileName) (* Make sure no open databases) (* Get file name) (AND (NULL FileName) (NULL (SETQ FileName (NC.DatabaseFileName "Name of Notefile to be deleted:" " -- " T NIL NIL InterestedWindow))) (RETURN NIL)) (* make sure to be deleted file exists) (SETQ FullFileName (if (EQ (FILENAMEFIELD FileName (QUOTE HOST)) (QUOTE DSK)) then (if (FILENAMEFIELD FileName (QUOTE VERSION)) then (FULLNAME FileName) else (CAR (FILDIR-EARLIEST FileName))) else FileName)) (* * Don't try to delete if the NoteFile is open) (if (NC.NoteFileOpenP FullFileName) then (NC.PrintMsg InterestedWindow T "Can't delete an open notefile." (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg InterestedWindow T) (RETURN NIL)) (* * Can't delete a non-existent file.) (if (NULL FullFileName) then (NC.PrintMsg (NC.AttachPromptWindow InterestedWindow) T FileName " does not exist." (CHARACTER 13) "Delete cancelled." (CHARACTER 13)) (RETURN)) (* * Ask user to confirm twice.) (OR Don'tConfirmFlg (if (NOT (NC.AskYesOrNo (CONCAT "Are you sure you want to delete " (CHARACTER 13) FullFileName "?" (CHARACTER 13)) " -- " "No" T (NC.AttachPromptWindow InterestedWindow) (NOT InterestedWindow))) then (OR QuietFlg (NC.PrintMsg (NC.AttachPromptWindow InterestedWindow) T FullFileName " not deleted." (CHARACTER 13))) (RETURN))) (OR QuietFlg (NC.PrintMsg (NC.AttachPromptWindow InterestedWindow) T "Deleting" FullFileName (CHARACTER 13))) (DISMISS 1000) (OR Don'tConfirmFlg (if (NOT (NC.AskYesOrNo (CONCAT "Are you still sure you want to delete " (CHARACTER 13) FullFileName "?" (CHARACTER 13)) " -- " "No" T (NC.AttachPromptWindow InterestedWindow) (NOT InterestedWindow))) then (OR QuietFlg (NC.PrintMsg (NC.AttachPromptWindow InterestedWindow) T FullFileName " not deleted." (CHARACTER 13))) (RETURN))) (* * Delete the file) (SETQ FullFileName (APPLY* (fetch (NoteFileDevice DeleteNoteFileFn) of (GETHASH (COND ((NC.RemoteHostP FullFileName) (QUOTE REMOTEMULTIUSER)) (T (QUOTE LOCALSINGLEUSER))) NC.DeviceVectorsHashArray)) FullFileName)) (if (NULL FullFileName) then (RETURN)) (NC.RemoveAccessToNoteFile FullFileName) (SETQ NC.DatabaseFileNameSuggestion NIL) (NC.ClearMsg InterestedWindow T) (RETURN FullFileName)))) (NC.CheckpointNoteFile (LAMBDA (NoteFile QuietFlg Don'tSaveDirtyCardsFlg Don'tCheckOperationInProgressFlg Don'tCheckCardOperationsInProgressFlg InterestedWindow OperationMsg) (* pmi: "22-Dec-86 12:25") (* * Checkpoint a notefile by call the device specific checkpoint fn.) (* * fgh 5/26/86 First created.) (* * fgh 9/1/86 Updated with with changes made to checkpinting since 5/23/86. Reimplemented changes include: (* * fgh 6/4/86 Added Don'tSaveDirtyCardsFlg to prevent double passes through active cards at close time) (* * fgh 6/13/86 Changed printouts to NF menu. Added check for operations in progress.) (* * fgh 6/25/86 Put in contention lock and NC.ProtectedNoteFileOperation Added Don'tCheckOperationInProgressFlg Don'tCheckCardOperationsInProgressFlg & InterestedWindow args.) (* * rht 7/4/86: Added check for readonly notefile.) (* * rht 7/16/86: Now passes QuietFlg arg down to NC.SaveDirtyCards.)) (* * pmi 12/3/86 Added check for open NoteFile before attempting Checkpoint (Code stolen from NC.CloseNoteFile)) (* * pmi 12/22/86 Made test for open notefile consistent with other NoteFile operations (ie. Abort Close)) (DECLARE (GLOBALVARS NC.MsgDelay)) (PROG ((FullFileName (fetch (NoteFile FullFileName) of NoteFile)) ReturnValue) (OR InterestedWindow (SETQ InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of NoteFile)))) (* * Make sure NF is open) (if (NULL (ERSETQ (SETQ ReturnValue (NC.NoteFileOpenP NoteFile)))) then (SETQ ReturnValue (QUOTE OpenPFailed))) (if (NULL ReturnValue) then (* * NoteFile is not open.) (NC.PrintMsg InterestedWindow T "Can't checkpoint a closed notefile." (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg InterestedWindow T) (RETURN NIL) elseif (NOT (type? NoteFile ReturnValue)) then (* * Error return from NoteFileOpenPFn) (if (NULL (ERSETQ (NC.ReportError NIL (CONCAT "OpenP test on " FullFileName "failed because " ReturnValue (CHARACTER 13) "OK to continue Checkpoint. ↑ to abort Checkpoint.")))) then (RETURN ReturnValue))) (SETQ OperationMsg (CONCAT (OR OperationMsg "") "Checkpointing " FullFileName (CHARACTER 13))) (if (NC.CheckForNotReadOnly NoteFile InterestedWindow "Can't checkpoint ") then (if (AND (NULL Don'tCheckOperationInProgressFlg) (PROCESSP (NC.NoteFileProp NoteFile (QUOTE ProcessInProgress)))) then (* * Another operation is in progress on this NF.) (NC.PrintOperationInProgressMsg InterestedWindow (QUOTE Checkpoint% NoteFile) (NC.NoteFileProp NoteFile (QUOTE OperationInProgress))) else (* * Okay checkpoint under a contention lock.) (RETURN (NC.ProtectedNoteFileOperation NoteFile Checkpoint% NoteFile (OR QuietFlg (RESETSAVE NIL (BQUOTE (NC.ClearMsg , InterestedWindow T))) ) (if (OR Don'tCheckCardOperationsInProgressFlg (PROGN (OR QuietFlg (NC.PrintMsg InterestedWindow T OperationMsg "Checking for card operations in progress." (CHARACTER 13))) (NULL (SETQ OpsInProgress (NC.CardOperationsInProgress NoteFile)))) (NC.AskYesOrNo (CONCAT "There are card operations in progress." (CHARACTER 13) "Do you want to terminate them?" (CHARACTER 13)) "-->" (QUOTE Yes) T InterestedWindow)) then (* * If appropriate, msg the user.) (OR QuietFlg (NC.PrintMsg InterestedWindow T "Checkpointing notefile " FullFileName " ..." (CHARACTER 13))) (* * Save the dirty cards on the screen if necessary.) (if (NULL Don'tSaveDirtyCardsFlg) then (NC.SaveDirtyCards NoteFile T InterestedWindow OperationMsg QuietFlg)) (* Put out the new ChkptPtr to the file.) (* * Call the device specific checkpoint fn.) (if (NULL (ERSETQ (SETQ ReturnValue (APPLY* (fetch (NoteFile CheckpointNoteFileFn) of NoteFile) NoteFile InterestedWindow OperationMsg QuietFlg)))) then (SETQ ReturnValue (QUOTE CheckpointFailed))) (* * Process the error returns.) (if (type? NoteFile ReturnValue) then (* * Successful return.) (OR QuietFlg (NC.PrintMsg InterestedWindow T (OR OperationMsg "") " Checkpoint done." (CHARACTER 13))) NoteFile else (* * Error return.) (ERSETQ (NC.ReportError NIL (CONCAT "Checkpoint failed for " FullFileName " because " ReturnValue "."))) ReturnValue))))))))) (NC.CloseNoteFile (LAMBDA (NoteFile InterestedWindow Don'tCheckOperationInProgressFlg QuietFlg) (* pmi: "22-Dec-86 12:25") (* * Close a NoteFIle) (* * rht 10/23/84: Now gives user option of closing and saving all open cards on the screen.) (* * rht 11/8/84: Put RESETLST around NC.CacheTitles call.) (* * rht 1/9/85: Clear the NC.UncachingNotCompleted variable when close successfully completes.) (* * rht 1/31/85: Added call to checkpoint database. That in turn dumps the next nodeID and next linkID.) (* * rht 7/14/85: Replaced the call to reset the main menu with call to NC.ResetMainMenu. Also took out redundant reset of PSA.Database, since NC.ForceDatabaseClose is doing that.) (* * fgh 10/16/85 removed call to CacheTypesAndTitles because uncacheing now done automatically by cache mechanism.) (* * fkr 10/29/85: Now kills caching process from database streamprop.) (* * fkr 11/8/85 Updated to handle new NoteFile object and new CardID scheme.) (* * kirk 23Jan86 Changed to use NC.AskYesOrNo) (* * rht 3/26/86: Now searches for active cards over whole notefile not just among cards up on screen. Uses NC.MapCards.) (* * kirk 28Apr86 Now returns NoteFile if successful.) (* * fgh 5/2/86 Cleaned up. Ask user to confirm only if there are cards on the screen, not if there are active, but not displayed ones. Added calls to the NC.CloseNoteFileFns before and after the closeing.) (* * fgh 5/26/86 Revamp for device vector implementation.) (* * kef 7/24/86: Changed the last expression at the end that smashes the NoteFile device out of the NoteFile data structure. This is so that the Interface will not bomb trying to apply an OPENP function with a NIL Device.) (* * kef 8/4/86: Added something to obtain the write lock on the parts of the active NoteCards that deactivating will release. This is also so that any changes may be written to the server.) (* * fgh 8/31/86 Reimplemented changes in system made since 5/23/86 conversion. Reimplemented changes include: (* * fgh 6/4/86 Fixed so that shrunken cards are counted as open when asking for confirmation when there are open cards on screen.) (* * fgh 6/13/86 Now checks for card operations in progress and kills them if necessary.) (* * fgh 6/25/86 Added NC.ProtectedNoteFileOperation macro call. Added Don'tCheckOperationInProgressFlg args.) (* * rht 7/4/86: Added check for readonly notefile.) (* * rht 7/13/86: Added QuietFlg arg. Note that this will cause open cards on the screen to be closed and saved without asking user for confirmation.) (* * rpr 11/13/86: After closing active cards, checks to see if any special cards were made active and closes them.)) (* * pmi 12/22/86 Made test for open notefile consistent with other NoteFile operations (ie. Abort Checkpoint,)) (DECLARE (GLOBALVARS NC.MsgDelay NC.CloseNoteFileFns)) (if (NC.ReadOnlyNoteFileP NoteFile) then (NC.AbortSession NoteFile InterestedWindow) else (ALLOW.BUTTON.EVENTS) (PROG ((FullFileName (fetch (NoteFile FullFileName) of NoteFile)) CardTotal ActiveCards ReturnValue (OperationMsg "")) (OR InterestedWindow (if (type? MENU (fetch (NoteFile Menu) of NoteFile)) then (SETQ InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of NoteFile))))) (* * Make sure NF is open) (if (NULL (ERSETQ (SETQ ReturnValue (NC.NoteFileOpenP NoteFile)))) then (SETQ ReturnValue (QUOTE OpenPFailed))) (if (NULL ReturnValue) then (* * NoteFile is not open.) (NC.PrintMsg InterestedWindow T "Can't close a closed notefile." (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg InterestedWindow T) (RETURN NIL) elseif (NOT (type? NoteFile ReturnValue)) then (* * Error return from NoteFileOpenPFn) (if (NULL (ERSETQ (NC.ReportError NIL (CONCAT "OpenP test on " FullFileName "failed because " ReturnValue (CHARACTER 13) "OK to continue Close. ↑ to abort Close.")))) then (RETURN ReturnValue))) (* * Check to see if this NoteFile is busy doing something else) (if (AND (NULL Don'tCheckOperationInProgressFlg) (PROCESSP (NC.NoteFileProp NoteFile (QUOTE ProcessInProgress)))) then (NC.PrintOperationInProgressMsg InterestedWindow (QUOTE Close% NoteFile) (NC.NoteFileProp NoteFile (QUOTE OperationInProgress)) ) (RETURN NIL)) (* * Do the rest under an operation in progress lock.) (RETURN (NC.ProtectedNoteFileOperation NoteFile Close% NoteFile (PROG NIL (RESETSAVE NIL (BQUOTE (NC.ClearMsg , InterestedWindow T))) (* * Delete the types and titles caching process if still alive. Have to do it now in order to make checking operations that follow suitably efficient. Note its a bit too early since we can still cancel this close. But any harm done is loss of speed if NoteFile remains open when close iss cancelled.) (DEL.PROCESS (fetch (NoteFile CachingProcess) of NoteFile)) (* * See if any cards have operations in progress. If so, kill them after confirming with user.) (OR QuietFlg (NC.PrintMsg InterestedWindow T (OR OperationMsg "") "Checking for card operations in progress ..." (CHARACTER 13))) (if (EQ (QUOTE ABORT) (NC.CardOperationsInProgress NoteFile T)) then (RETURN NIL)) (NC.ClearMsg InterestedWindow NIL) (* * If NULL QuietFlg then look for cards on the screen. If there are active cards ask the user if they still want to close. When there's a non-NIL QuietFlg we just close the active cards.) (if (AND (NULL QuietFlg) (for Window in (OPENWINDOWS) thereis (LET (Card) (AND (SETQ Card (OR (NC.CardFromWindow Window) (AND (WINDOWP (WINDOWPROP Window (QUOTE ICONFOR))) (NC.CardFromWindow (WINDOWPROP Window (QUOTE ICONFOR))) ))) (NC.SameNoteFileP NoteFile (fetch (Card NoteFile) of Card))))) (NULL (NC.AskYesOrNo (CONCAT "There are still cards on the screen from this NoteFile " FullFileName "." (CHARACTER 13) "Want to close and save them? ") " -- " (QUOTE Yes) NIL InterestedWindow NIL NIL))) then (RETURN NIL)) (* * Run through CloseNoteFileFns with param of BEFORE. Exit if any returns DON'T) (if (for Function in NC.CloseNoteFileFns thereis (OR (EQ Function (QUOTE DON'T)) (EQ (QUOTE DON'T) (APPLY* Function NoteFile (QUOTE BEFORE) )))) then (RETURN NIL)) (* * Close all the active cards) (OR QuietFlg (NC.PrintMsg InterestedWindow T (OR OperationMsg "") "Checking for active cards ..." (CHARACTER 13))) (if (SETQ ActiveCards (NC.MapCards NoteFile (FUNCTION (LAMBDA (Card) Card)) (FUNCTION NC.ActiveCardP))) then (if (NULL QuietFlg) then (NC.PrintMsg InterestedWindow T "Closing and saving active cards ... ")) (RESETLST (RESETSAVE NC.ForceSourcesFlg NIL) (RESETSAVE NC.ForceFilingFlg NIL) (RESETSAVE NC.ForceTitlesFlg NIL) (NC.CloseListOfActiveCards ActiveCards InterestedWindow QuietFlg) (NC.CloseListOfActiveCards (for Card in ( NC.FetchSpecialCards NoteFile) when (NC.ActiveCardP Card) collect Card) InterestedWindow QuietFlg)) (OR QuietFlg (NC.PrintMsg InterestedWindow NIL "Done." (CHARACTER 13)))) (* * Checkpoint the NoteFile.) (OR QuietFlg (NC.PrintMsg InterestedWindow T "Closing Notefile ... " (CHARACTER 13))) (if (NULL (CAR (ERSETQ (SETQ ReturnValue (NC.CheckpointNoteFile NoteFile QuietFlg T T T InterestedWindow OperationMsg))))) then (SETQ ReturnValue (QUOTE CheckpointFailed))) (* * Process error returns from in NC.CheckpointNoteFile) (if (NOT (type? NoteFile ReturnValue)) then (if (NULL (ERSETQ (NC.ReportError NIL (CONCAT "Checkpoint of NoteFile " FullFileName " failed because " ReturnValue "." (CHARACTER 13) "OK to continue Close. ↑ to abort Close.")))) then (RETURN ReturnValue))) (* * Close the file.) (if (NULL (CAR (ERSETQ (SETQ ReturnValue (APPLY* (fetch (NoteFile CloseNoteFileFn) of NoteFile) NoteFile InterestedWindow))))) then (SETQ ReturnValue (QUOTE CloseFailed))) (* * Process error returns from the close.) (if (NOT (type? NoteFile ReturnValue)) then (SELECTQ ReturnValue (NoteFileNotOpen (if (NULL (ERSETQ (NC.ReportError NIL (CONCAT "NoteFile" FullFileName " is not open." (CHARACTER 13) "OK to continue Close. ↑ to abort Close.")))) then (RETURN ReturnValue))) (PROGN (ERSETQ (NC.ReportError NIL (CONCAT "Close of NoteFile " FullFileName " failed because " ReturnValue "." (CHARACTER 13)))) (RETURN ReturnValue)))) (* * Run through CloseNoteFileFns with param of AFTER. Stop if any returns DON'T) (for Function in NC.CloseNoteFileFns thereis (EQ (QUOTE DON'T) (APPLY* Function NoteFile (QUOTE AFTER)))) (* * Reset the interface and notify the user.) (NC.ResetNoteFileInterface NoteFile) (OR QuietFlg (NC.PrintMsg InterestedWindow T FullFileName " closed.")) (* * * Cleanup a bit.) (* Clean off the card cache's) (ADD.PROCESS (LIST (FUNCTION NC.CleanupCardObjects) (fetch (NoteFile HashArray) of NoteFile))) (* Clean off the NoteFile object to remove any circularities.) (create NoteFile smashing NoteFile UID ←(fetch (NoteFile UID) of NoteFile) FullFileName ← FullFileName Menu ←(fetch (NoteFile Menu) of NoteFile) NoteFileDevice ←(fetch (NoteFile NoteFileDevice) of NoteFile)) (* * Return the NF) (RETURN NoteFile)))))))) (NC.AbortSession (LAMBDA (NoteFile InterestedWindow Don'tConfirmFlg QuietFlg) (* pmi: "22-Dec-86 12:25") (* * Kill the current notecards session. Work lost since last checkpoint.) (* * rht 7/14/85: Replaced the call to reset the main menu with call to NC.ResetMainMenu. Also took out redundant reset of PSA.Database, since NC.ForceDatabaseClose is doing that.) (* * fgh & rht 10/16/85 Update with new cacheing mechanism.) (* * fkr 11/8/85 Updated to handle noteFile object and new CardID scheme.) (* * kirk 20Jan86 Added Don'tCloseFlg to leave NoteFile open after done deleting changes.) (* * kirk 23Jan86 Changed to use NC.AskYesOrNo) (* * rht 7/2/86: No longer bugs you if no changes were made since last checkpoint. Removed Don'tCloseFlg arg and added InterestedWindow arg.) (* * rht 7/6/86: Now clears InterestedWindow of final truncating message.) (* * rht 7/13/86: Added Don'tConfirmFlg and QuietFlg args. Note that Don'tConfirmFlg non-nil stops questioning of user as to losing all changes.) (* * kirk 11/17/86 Changed call on SETFILEINFO to pass stream instead of filename.) (* * pmi 12/22/86 Made test for open notefile consistent with other NoteFile operations (ie. Checkpoint, Close)) (DECLARE (GLOBALVARS NC.MsgDelay)) (PROG ((Stream (fetch (NoteFile Stream) of NoteFile)) (FullFileName (fetch (NoteFile FullFileName) of NoteFile)) (LastChkptPtr (fetch (NoteFile CheckptPtr) of NoteFile)) EndPtr CardTotal NewBytes ReturnValue) (OR InterestedWindow (SETQ InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of NoteFile)))) (if (NULL (ERSETQ (SETQ ReturnValue (NC.NoteFileOpenP NoteFile)))) then (SETQ ReturnValue (QUOTE OpenPFailed))) (if (NULL ReturnValue) then (* * NoteFile is not open.) (NC.PrintMsg InterestedWindow T "Can't abort a closed notefile." (CHARACTER 13)) (DISMISS NC.MsgDelay) (NC.ClearMsg InterestedWindow T) (RETURN NIL) elseif (NOT (type? NoteFile ReturnValue)) then (* * Error return from NoteFileOpenPFn) (if (NULL (ERSETQ (NC.ReportError NIL (CONCAT "OpenP test on " FullFileName "failed because " ReturnValue (CHARACTER 13) "OK to continue Abort. ↑ to abort Abort.")))) then (RETURN ReturnValue))) (SETQ EndPtr (GETEOFPTR Stream)) (SETQ NewBytes (IDIFFERENCE EndPtr LastChkptPtr)) (if (OR (ZEROP NewBytes) Don'tConfirmFlg (NC.AskYesOrNo (CONCAT "Do you wish to lose all changes since" (CHARACTER 13) "the last checkpoint (" NewBytes " bytes) of " FullFileName) "--" "Yes" T InterestedWindow NIL T)) then (LET ((CardNumber 0) (CardTotal (fetch (NoteFile HashArraySize) of NoteFile))) (NC.MapCards NoteFile (FUNCTION (LAMBDA (Card) (LET (Win) (SETQ CardNumber (ADD1 CardNumber)) (OR QuietFlg (COND ((ZEROP (IREMAINDER CardNumber 100)) (NC.PrintMsg InterestedWindow T "Quitting from active cards ... " (CHARACTER 13) "Processing item number " CardNumber " out of " CardTotal "." (CHARACTER 13))))) (COND ((NC.ActiveCardP Card) (SETQ Win (NC.FetchWindow Card)) (NC.AbortCard Card QuietFlg) (COND (Win (bind (Process ←(WINDOWPROP Win (QUOTE PROCESS))) until (OR (NULL Process) (PROCESS.FINISHEDP Process)) do (BLOCK)) (CLOSEW Win)))))))))) (COND ((LESSP LastChkptPtr EndPtr) (OR QuietFlg (NC.PrintMsg InterestedWindow T "Truncating file " FullFileName " ...")) (COND ((NOT (SETFILEINFO Stream (QUOTE LENGTH) LastChkptPtr)) (NC.PrintMsg InterestedWindow NIL "Couldn't truncate " FullFileName "." (CHARACTER 13)))))) (NC.ResetNoteFileInterface NoteFile) (NC.ForceDatabaseClose NoteFile)) (NC.ClearMsg InterestedWindow T)))) ) (PUTPROPS PMIPATCH014 COPYRIGHT ("Xerox Corporation" 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (1261 12208 (NC.MakeMainMenu 1271 . 12206)) (12243 52407 (NC.CompactNoteFile 12253 . 15326) (NC.CopyNoteFile 15328 . 18257) (NC.InspectAndRepairNoteFile 18259 . 20924) (NC.RenameNoteFile 20926 . 24193) (NC.DeleteDatabaseFile 24195 . 29202) (NC.CheckpointNoteFile 29204 . 35124) ( NC.CloseNoteFile 35126 . 47582) (NC.AbortSession 47584 . 52405))))) STOP