(FILECREATED " 5-Jun-87 12:25:16" {QV}<NOTECARDS>1.3K>NEXT>RGPATCH045.;1 6011 changes to: (VARS RGPATCH045COMS) (FNS NC.CheckForExpandIndex)) (* Copyright (c) 1987 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT RGPATCH045COMS) (RPAQQ RGPATCH045COMS ((* * rg 6/5/87 several bugs fixed: now only offers to expand if index is completely full; clears prompt window on cancel; menu allows other mouse events) (* * changes to NCDATABASE) (FNS NC.CheckForExpandIndex))) (* * rg 6/5/87 several bugs fixed: now only offers to expand if index is completely full; clears prompt window on cancel; menu allows other mouse events) (* * changes to NCDATABASE) (DEFINEQ (NC.CheckForExpandIndex [LAMBDA (NoteFile QuietFlg InterestedWindow) (* Randy.Gobbel " 5-Jun-87 12:21") (* * If index is full, then confirm with user whether it's okay to expand in place. Offer user ability to change the amount to expand by. Return nil if no expand, return new index size otherwise. We MUST expand otherwise error out.) (* * rht 5/24/87: Now passes QuietFlg to NC.ExpandIndexInPlace.) (* * rg 6/3/87 call to Checkpoint wasn't checking for DON'T) (* * rg 6/5/87 now only offers to expand if completely full, plus misc other small fixes) (DECLARE (GLOBALVARS NC.IndexFractionToExpandBy NC.MenuFont)) (OR InterestedWindow (SETQ InterestedWindow (NC.CoerceToInterestedWindow NoteFile))) (LET [(IndexSize (fetch (NoteFile HashArraySize) of NoteFile)) (NumUsed (SUB1 (DIFFERENCE (fetch (NoteFile NextIndexNum) of NoteFile) (LENGTH (fetch (NoteFile IndexNumsFreeList) of NoteFile] (if (EQ NumUsed IndexSize) then (LET ([Menu (create MENU TITLE ← " Expand notefile index? " CENTERFLG ← T MENUBORDERSIZE ← 1 MENUOUTLINESIZE ← 1 MENUROWS ← 1 MENUFONT ← NC.MenuFont ITEMHEIGHT ← (IPLUS 10 (FONTPROP NC.MenuFont (QUOTE HEIGHT))) MENUTITLEFONT ← (FONTCREATE (QUOTE HELVETICA) 10 (QUOTE BOLD)) ITEMS ← (QUOTE ((Yes (QUOTE Yes) "Go ahead and expand index to make room for new cards.") (Cancel (QUOTE Cancel) "Cancel creation of new card.") (Change% Num (QUOTE Change% Num) "Change the number of new cards to expand index by."] (PromptWindow (OR (NC.AttachPromptWindow InterestedWindow) PROMPTWINDOW)) NewIndexSize NumNewSlots NewNum ActualNumNewSlots) [SETQ NewIndexSize (PLUS IndexSize (SETQ NumNewSlots (FIX (FTIMES IndexSize NC.IndexFractionToExpandBy] (for do (NC.PrintMsg InterestedWindow T (CONCAT (fetch (NoteFile FullFileName) of NoteFile) " is full (" NumUsed " out of " IndexSize " cards used)." (CHARACTER 13))) (NC.PrintMsg InterestedWindow NIL (CONCAT "Okay to checkpoint notefile and make room for " NumNewSlots " new cards?" (CHARACTER 13))) (ALLOW.BUTTON.EVENTS) (SELECTQ (MENU Menu (CREATEPOSITION (fetch (REGION LEFT) of (WINDOWREGION PromptWindow)) (fetch (REGION TOP) of (WINDOWREGION PromptWindow))) T) (Yes (* Go ahead and expand index after checkpointing notefile.) (if (EQ (NC.CheckpointNoteFile NoteFile NIL NIL InterestedWindow (CONCAT "Expanding notefile index" (CHARACTER 13))) (QUOTE DON'T)) then (NC.ClearMsg InterestedWindow T) (ERROR!)) (SETQ ActualNumNewSlots (NC.ExpandIndexInPlace NoteFile NewIndexSize NIL InterestedWindow NIL QuietFlg)) (COND ((NULL ActualNumNewSlots) (* Looks like NC.ExpandIndexInPlace bombed for some reason.) (FLASHW PROMPTWINDOW) (* If index is full, we have to bail out of card creation.) (NC.PrintMsg NIL T "Couldn't expand index. Card creation operation canceled.") (ERROR!)) ((LESSP ActualNumNewSlots NumNewSlots) (* NC.ExpandIndexInPlace probably bombed but we at least got some of what we asked for.) (FLASHW PROMPTWINDOW) (NC.PrintMsg NIL T "Only able to make room for " ActualNumNewSlots " new cards out of " NumNewSlots " requested." NIL))) (NC.ClearMsg InterestedWindow T) (RETURN NewIndexSize)) (Cancel (* Bad news. We have to bail out because index is full.) (NC.ClearMsg InterestedWindow T) (ERROR!)) [Change% Num (* Let user change number of new slots to make room for.) (SETQ NewNum (RNUMBER "Number of new cards to add" NIL NIL NIL T)) (if (AND (NUMBERP NewNum) (GREATERP NewNum 0)) then (SETQ NewIndexSize (PLUS IndexSize (SETQ NumNewSlots NewNum] NIL]) ) (PUTPROPS RGPATCH045 COPYRIGHT ("Xerox Corporation" 1987)) (DECLARE: DONTCOPY (FILEMAP (NIL (725 5930 (NC.CheckForExpandIndex 735 . 5928))))) STOP