(FILECREATED " 6-Feb-85 10:00:11" {ERIS}<LISPCORE>LIBRARY>FILEBROWSER.;37 55318 changes to: (VARS FILEBROWSERCOMS FBPROFILE) (FNS FB.COMMANDDISPATCH) previous date: "17-Jan-85 22:11:09" {ERIS}<LISPCORE>LIBRARY>FILEBROWSER.;35) (* Copyright (c) 1983, 1984, 1985 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT FILEBROWSERCOMS) (RPAQQ FILEBROWSERCOMS [(FILES ATTACHEDWINDOW ICONW) (VARS (FCOMPILEOPS NIL) (FB.EDITMENU NIL) (FUPDATEOPS NIL) (FLOADOPS NIL) (FBCLOSEMENU NIL) (FBICONFONT (FONTCREATE (QUOTE HELVETICA) 8 (QUOTE MRR))) (DEFAULTBROWSERFONT (FONTCREATE (QUOTE GACHA) 10 (QUOTE MRR))) (FBPROMPTFONT (FONTCREATE (QUOTE GACHA) 8 (QUOTE MRR))) (BROWSERMENUFONT (FONTCREATE (QUOTE HELVETICA) 10 (QUOTE MRR))) (FBBORDERWIDTH 2) FB.EDITMENU.ITEMS FBCLOSEMENUITEMS FBMENUITEMS FBPROFILE INFOLISTINGWIDTHS INFOSHADE FBINFOMENUITEMS FBITEMUNSELECTEDSHADE FBITEMSELECTEDSHADE) (BITMAPS FILEDRAWER FILEDRAWERMASK) (CURSORS RIGHTARROWCURSOR) (* * Main filebrowser fns) (FNS FB FILEBROWSER) (COMS (* * commands and major subfunctions) (FNS FB.EXPUNGECOMMAND FB.HARDCOPYCOMMAND FB.LOADCOMMAND FB.NEWPATTERNCOMMAND FB.RENAMECOMMAND FB.EDITCOMMAND FB.DELETECOMMAND FB.SEECOMMAND FB.COMPILECOMMAND FB.COPYCOMMAND FB.UNDELETECOMMAND FB.UPDATECOMMAND) (FNS FB.MAKECOUNTERWINDOW FB.MAKESEEWINDOW FB.COMMANDDISPATCH FB.EDITLISPFILE FB.SELECT FB.UPDATEBROWSERITEMS)) (* * lower-level window mungers) (FNS FB.MAKERIGIDWINDOW FB.CLRPROMPTW FB.PRINTHEADINGSON FB.PRINTANDGETREGION FB.MAKEHEADINGWINDOW FB.PROMPTWPRINT FB.PROMPTWTERPRI FB.SELECTFILE FB.UNSELECTFILE FB.CHANGEDELETEMARK FB.CHANGECOPYSELECTMARK FB.INFOMENU.SHADEINITIALSELECTIONS FB.SHOW.NUMDELETED FB.SHOW.NUMFILES FB.SHOW.NUMSELECTED) (* * window functions) (FNS FB.HEADINGWREDISPLAYFN FB.REPAINT.COUNTERW FB.ICONFN FB.BUTTONEVENTFN FB.CURSORMOVEDFN FB.CURSOROUTFN FB.REPAINTFN FB.SCROLLFN FB.RIGHTBUTTONFN FB.MENU.WHENSELECTEDFN FB.INFOMENU.WHENSELECTEDFN FB.CLOSEFN FB.SEEW.REPAINTFN FB.SEEW.RESHAPEFN) (* * odds and ends) (FNS FB.COPYBUTTONDOWN? FB.FETCHFILENAME FB.STARTOFNAME FB.STARTUP FB.CREATEPRINTSPEC FB.FINDFILEBUCKET FB.PROMPTFORINPUT FB.GETALLFILEINFO FB.\ItemWithTag) (DECLARE: EVAL@COMPILE DONTCOPY (CONSTANTS (MarkXPos 16)) (RECORDS INFOWPRINTSPEC FILEBUCKET)) (MACROS ISLISPFILE?) (ADDVARS (BackgroundMenuCommands ("FileBrowser" (FB) "Opens a filebrowser window; prompts for pattern"))) (VARS (BackgroundMenu)) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA FB) (NLAML) (LAMA FB.PROMPTWPRINT]) (FILESLOAD ATTACHEDWINDOW ICONW) (RPAQQ FCOMPILEOPS NIL) (RPAQQ FB.EDITMENU NIL) (RPAQQ FUPDATEOPS NIL) (RPAQQ FLOADOPS NIL) (RPAQQ FBCLOSEMENU NIL) (RPAQ FBICONFONT (FONTCREATE (QUOTE HELVETICA) 8 (QUOTE MRR))) (RPAQ DEFAULTBROWSERFONT (FONTCREATE (QUOTE GACHA) 10 (QUOTE MRR))) (RPAQ FBPROMPTFONT (FONTCREATE (QUOTE GACHA) 8 (QUOTE MRR))) (RPAQ BROWSERMENUFONT (FONTCREATE (QUOTE HELVETICA) 10 (QUOTE MRR))) (RPAQQ FBBORDERWIDTH 2) (RPAQQ FB.EDITMENU.ITEMS ((TEdit (QUOTE TEDIT) "Calls TEdit (text editor) on selected files") (DEdit (QUOTE DEDIT) "Calls DEdit (Lisp editor) on selected files"))) (RPAQQ FBCLOSEMENUITEMS (("Expunge deleted files" (QUOTE EXPUNGE) "Erases all files still marked 'deleted'") ("Don't expunge" (QUOTE NOEXPUNGE) "Closes browser without expunging files marked deleted"))) (RPAQQ FBMENUITEMS ((Edit Edit "Calls an editor on the selected files: DEDIT for LISP source & TEDIT for other files (Use MIDDLE mouse button to select options)") (Delete Delete "Marks selected files for deletion: (Use EXPUNGE to remove files from system)") (Undelete Undelete "Removes deletion mark for selected files") (Expunge Expunge "Removes files marked for deletion from the system") (Load Load "LOADs selected files (Use MIDDLE mouse button to select options)") (Compile Compile "Compiles selected LISP source files: (Use MIDDLE mouse button to select options)") (Copy Copy "Copies selected files: (Prompts for new file name)") (Rename Rename "Renames selected files: (Prompts for new names)") (See See "Displays each selected file its own window") (Update Update "Updates list of files satisfying selection pattern: (Use MIDDLE mouse button to select options)") (Hardcopy Hardcopy "Produces hardcopy of selected files") ("" "" ""))) (RPAQQ FBPROFILE (NAME AUTHOR CREATIONDATE)) (RPAQQ INFOLISTINGWIDTHS (NAME (Name . 140) LENGTH (Length . 60) SIZE (Pages . 45) BYTESIZE (Bits . 40) AUTHOR (Author . 120) TYPE (Type . 55) CREATIONDATE (Created . 170) READDATE (Read . 170) WRITEDATE (Written . 180))) (RPAQQ INFOSHADE 16920) (RPAQQ FBINFOMENUITEMS ((Length LENGTH "Toggles Length display") (ByteSize BYTESIZE "Toggles ByteSize display") (Pages SIZE "Toggles Pages display") (Type TYPE "Toggles Type display") (Created CREATIONDATE "Toggles Created display") (Written WRITEDATE "Toggles Written display") (Read READDATE "Toggles Read display") (Author AUTHOR "Toggles Author display"))) (RPAQQ FBITEMUNSELECTEDSHADE 0) (RPAQQ FBITEMSELECTEDSHADE 43605) (RPAQ FILEDRAWER (READBITMAP)) (75 75 "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "N@@@@@@@@@@@@@@@@@N@" "N@@@@@@@@@@@@@@@@@N@" "NGOOOOOOOOOOOOOOOLN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@AOOOOOOH@@@@DN@" "ND@@@A@@@@@@H@@@@DN@" "ND@@@A@@@@@@H@@@@DN@" "ND@@@A@OOOOHH@@@@DN@" "ND@@@A@@@@@@H@@@@DN@" "ND@@@AAOOOOLH@@@@DN@" "ND@@@A@@@@@@H@@@@DN@" "ND@@@A@@@@@@H@@@@DN@" "ND@@@AOOOOOOH@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@OOOOOO@@@@@DN@" "ND@@@@L@@@@C@@@@@DN@" "ND@@@@OOOOOO@@@@@DN@" "ND@@@@GOOOON@@@@@DN@" "ND@@@@GOOOON@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "ND@@@@@@@@@@@@@@@DN@" "NGOOOOOOOOOOOOOOOLN@" "N@@@@@@@@@@@@@@@@@N@" "N@@@@@@@@@@@@@@@@@N@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@") (RPAQ FILEDRAWERMASK (READBITMAP)) (75 75 "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@" "OOOOOOOOOOOOOOOOOON@") (RPAQ RIGHTARROWCURSOR (CURSORCREATE (READBITMAP) 7 9)) (16 16 "@@@@" "@@@@" "@F@@" "@GH@" "@GN@" "@GOH" "OOON" "OOOO" "OOON" "@GOH" "@GN@" "@GH@" "@F@@" "@@@@" "@@@@" "@@@@")(* * Main filebrowser fns) (DEFINEQ (FB [NLAMBDA PATTERN (* lmm "17-Aug-84 15:39") (FILEBROWSER (OR (CAR (NLAMBDA.ARGS PATTERN)) (PROMPTFORWORD "File browser pattern?" NIL NIL PROMPTWINDOW]) (FILEBROWSER [LAMBDA (FILESPEC) (* hdj "26-Oct-84 18:24") (PROG ((PROMPTWHEIGHT 3) COMMANDMENUWINDOW COMMANDMENU DIRSTART HEADINGW COUNTERW INFOMENUW) (COND ((NULL FILESPEC) (RETURN))) (SETQ FILESPEC (DIRECTORY.FILL.PATTERN FILESPEC)) (SETQ COMMANDMENU (create MENU MENUFONT ← BROWSERMENUFONT ITEMS ← FBMENUITEMS CENTERFLG ← T MENUROWS ← 4 WHENSELECTEDFN ←(FUNCTION FB.MENU.WHENSELECTEDFN))) (SETQ BROWSERWINDOW (CREATEW [GETREGION 230 (ITIMES 6 (FONTPROP DEFAULTBROWSERFONT (QUOTE HEIGHT] NIL FBBORDERWIDTH)) (SETQ HEADINGW (FB.MAKEHEADINGWINDOW (GETWINDOWPROP BROWSERWINDOW (QUOTE WIDTH)) DEFAULTBROWSERFONT FBBORDERWIDTH "File Browser Window") ) (SETQ COUNTERW (FB.MAKECOUNTERWINDOW (HEIGHTIFWINDOW (FONTPROP DEFAULTBROWSERFONT (QUOTE HEIGHT))) (WINDOWPROP HEADINGW (QUOTE WIDTH)) BROWSERWINDOW)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE HEADINGWINDOW) HEADINGW) (ATTACHWINDOW HEADINGW BROWSERWINDOW (QUOTE TOP)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE COUNTERWINDOW) COUNTERW) (ATTACHWINDOW COUNTERW HEADINGW (QUOTE TOP)) (SETQ COMMANDMENUWINDOW (ATTACHMENU COMMANDMENU BROWSERWINDOW (QUOTE TOP))) (PUTWINDOWPROP BROWSERWINDOW (QUOTE SCROLLFN) (FUNCTION FB.SCROLLFN)) (SETQ INFOMENUW (ATTACHMENU (create MENU ITEMS ← FBINFOMENUITEMS MENUROWS ← 2 TITLE ← "Info Options" CENTERFLG ← T MENUFONT ← BROWSERMENUFONT WHENSELECTEDFN ←(FUNCTION FB.INFOMENU.WHENSELECTEDFN)) BROWSERWINDOW (QUOTE BOTTOM))) (PUTWINDOWPROP BROWSERWINDOW (QUOTE INFOCHOICES) FBPROFILE) (FB.INFOMENU.SHADEINITIALSELECTIONS INFOMENUW FBPROFILE) (FB.MAKERIGIDWINDOW (GETPROMPTWINDOW BROWSERWINDOW PROMPTWHEIGHT FBPROMPTFONT)) (DSPFONT DEFAULTBROWSERFONT BROWSERWINDOW) (PUTWINDOWPROP BROWSERWINDOW (QUOTE ICONFN) (FUNCTION FB.ICONFN)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE ICONTITLE) FILESPEC) (PUTWINDOWPROP BROWSERWINDOW (QUOTE NUMDELETED) 0) (PUTWINDOWPROP BROWSERWINDOW (QUOTE ORIGX) (DSPXPOSITION NIL BROWSERWINDOW)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE ORIGY) (DSPYPOSITION NIL BROWSERWINDOW)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE DIRWIDTH) (GETWINDOWPROP BROWSERWINDOW (QUOTE WIDTH))) (PUTWINDOWPROP BROWSERWINDOW (QUOTE BUTTONEVENTFN) (FUNCTION FB.BUTTONEVENTFN)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE RIGHTBUTTONFN) (FUNCTION FB.RIGHTBUTTONFN)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE REPAINTFN) (FUNCTION FB.REPAINTFN)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE CURSORMOVEDFN) (FUNCTION FB.CURSORMOVEDFN)) (PUTWINDOWPROP BROWSERWINDOW (QUOTE CURSOROUTFN) (FUNCTION FB.CURSOROUTFN)) (WINDOWADDPROP BROWSERWINDOW (QUOTE RESHAPEFN) (FUNCTION RESHAPEBYREPAINTFN)) (WINDOWADDPROP BROWSERWINDOW (QUOTE SHRINKFN) (FUNCTION FB.CLOSEFN) T) (WINDOWADDPROP BROWSERWINDOW (QUOTE CLOSEFN) (FUNCTION FB.CLOSEFN) T) (PUTWINDOWPROP BROWSERWINDOW (QUOTE ITEMSPEC) FILESPEC) (ADD.PROCESS (LIST (FUNCTION FB.STARTUP) BROWSERWINDOW COMMANDMENU COMMANDMENUWINDOW) (QUOTE NAME) (QUOTE FB-Update)) (RETURN BROWSERWINDOW]) ) (* * commands and major subfunctions) (DEFINEQ (FB.EXPUNGECOMMAND [LAMBDA (WINDOW) (* hdj "17-Sep-84 17:53") [PROG (FILENAME) (for FILEENTRY in (GETWINDOWPROP WINDOW (QUOTE BROWSERITEMMAP)) do (if (fetch (FILEBUCKET DELETED?) of FILEENTRY) then (if [NOT (DELFILE (SETQ FILENAME (FB.FETCHFILENAME FILEENTRY] then (FB.PROMPTWPRINT WINDOW "Couldn't expunge " FILENAME) (FB.PROMPTWTERPRI WINDOW] (PUTWINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS) NIL) (PUTWINDOWPROP WINDOW (QUOTE NUMDELETED) 0) (FB.UPDATEBROWSERITEMS (GETWINDOWPROP WINDOW (QUOTE ITEMSPEC)) WINDOW]) (FB.HARDCOPYCOMMAND [LAMBDA (FILEENTRY KEY WINDOW) (* hdj "17-Sep-84 17:37") (PROG ((FILE (FB.FETCHFILENAME FILEENTRY))) (APPLY* (QUOTE LISTFILES) FILE]) (FB.LOADCOMMAND [LAMBDA (FILEENTRY KEY WINDOW) (* hdj "25-Sep-84 17:13") (PROG [(FILE (MKATOM (FB.FETCHFILENAME FILEENTRY))) (LOADOP (COND [(EQ KEY (QUOTE MIDDLE)) (MENU (OR FLOADOPS (SETQ FLOADOPS (create MENU MENUFONT ← DEFAULTBROWSERFONT ITEMS ←(QUOTE ((LOAD (QUOTE LOAD) "Performs LOAD on selected files") (LOADFROM (QUOTE LOADFROM) "Performs LOADFROM on selected files"] (T (QUOTE LOAD] (if (NULL LOADOP) then (RETURN)) (EVAL.AS.PROCESS (LIST LOADOP (KWOTE FILE]) (FB.NEWPATTERNCOMMAND [LAMBDA (WINDOW) (* hdj "17-Sep-84 17:03") (PROG (ITEMSPEC TITLE PROMPTW) [SETQ PROMPTW (CAR (GETWINDOWPROP WINDOW (QUOTE PROMPTWINDOW] (FB.CLRPROMPTW WINDOW) (if (NULL (SETQ ITEMSPEC (FB.PROMPTFORINPUT "New file group description? " (GETWINDOWPROP WINDOW (QUOTE ITEMSPEC)) WINDOW))) then (RETURN)) (PUTWINDOWPROP WINDOW (QUOTE ITEMSPEC) (DIRECTORY.FILL.PATTERN ITEMSPEC)) (RETURN T]) (FB.RENAMECOMMAND [LAMBDA (PREFIX FILEENTRY WINDOW) (* hdj "17-Sep-84 17:04") (PROG (TOFILE) (SETQ FILEENTRY (FB.FETCHFILENAME FILEENTRY)) (SETQ TOFILE (if (NULL PREFIX) then (FB.PROMPTFORINPUT (CONCAT "Rename file " FILEENTRY " what? ") NIL WINDOW) else (PACKFILENAME (QUOTE DIRECTORY) PREFIX (QUOTE VERSION) NIL (QUOTE BODY) FILEENTRY))) (if (NULL TOFILE) then (FB.PROMPTWPRINT WINDOW " ... nothing") (FB.PROMPTWTERPRI WINDOW) (RETURN) else (FB.PROMPTWTERPRI WINDOW)) (SETQ TOFILE (\ADD.CONNECTED.DIR TOFILE)) (RENAMEFILE FILEENTRY TOFILE) (SETQ FBUPDATE? T) (FB.PROMPTWPRINT WINDOW FILEENTRY " renamed " TOFILE) (RETURN TOFILE]) (FB.EDITCOMMAND [LAMBDA (FILEENTRY KEY WINDOW READONLY) (* lmm "17-Jan-85 21:19") (PROG ((FILE (FB.FETCHFILENAME FILEENTRY))) (if (AND (NOT (FILENAMEFIELD FILE (QUOTE NAME))) (DIRECTORYNAMEP FILE)) then (FILEBROWSER (PACKFILENAME.STRING (QUOTE VERSION) NIL (QUOTE NAME) (QUOTE *) (QUOTE EXTENSION) (QUOTE *) (QUOTE BODY) FILE)) elseif READONLY then (LET* ((STR (OPENSTREAM FILE (QUOTE INPUT))) SRC) [COND ((LISPSOURCEFILEP STR) (SETQ STR (LET ((NSTR (OPENTEXTSTREAM))) (COPY.TEXT.TO.IMAGE STR NSTR) NSTR))) ((NOT (RANDACCESSP STR)) (SETQ STR (LET [(NSTR (OPENSTREAM (QUOTE {NODIRCORE}) (QUOTE BOTH) (QUOTE NEW) NIL (LIST (LIST (QUOTE TYPE) (GETFILEINFO STR (QUOTE TYPE] (COPYBYTES STR NSTR) NSTR] (OPENTEXTSTREAM STR (CREATEW NIL FILE))) elseif (EQ KEY (QUOTE MIDDLE)) then (FB.PROMPTWTERPRI WINDOW) (FB.PROMPTWPRINT WINDOW "Edit " FILE " with which editor?") (SELECTQ [MENU (OR FB.EDITMENU (SETQ FB.EDITMENU (create MENU MENUFONT ← DEFAULTBROWSERFONT ITEMS ← FB.EDITMENU.ITEMS] (TEDIT (TEDIT (MKATOM FILE))) (DEDIT (FB.EDITLISPFILE FILE WINDOW)) (RETURN)) else (if (LISPSOURCEFILEP FILE) then (FB.EDITLISPFILE FILE WINDOW) else (TEDIT (MKATOM FILE]) (FB.DELETECOMMAND [LAMBDA (FILEENTRY WINDOW) (* hdj "26-Oct-84 15:49") (COND ((NOT (fetch (FILEBUCKET DELETED?) of FILEENTRY)) (FB.CHANGEDELETEMARK FILEENTRY WINDOW) (replace (FILEBUCKET DELETED?) of FILEENTRY with T) [PUTWINDOWPROP WINDOW (QUOTE NUMDELETED) (ADD1 (GETWINDOWPROP WINDOW (QUOTE NUMDELETED] (FB.SHOW.NUMDELETED WINDOW]) (FB.SEECOMMAND [LAMBDA (FILEENTRY KEY BROWSER) (* lmm "17-Jan-85 19:29") (FB.EDITCOMMAND FILEENTRY KEY BROWSER T]) (FB.COMPILECOMMAND [LAMBDA (FILEENTRY KEY WINDOW) (* hdj "25-Sep-84 17:15") (PROG [(FILE (FB.FETCHFILENAME FILEENTRY)) (COMPILEOP (COND [(EQ KEY (QUOTE MIDDLE)) (MENU (OR FCOMPILEOPS (SETQ FCOMPILEOPS (create MENU MENUFONT ← DEFAULTBROWSERFONT ITEMS ←(QUOTE ((TCOMPL (QUOTE TCOMPL) "Does TCOMPL on selected files") (BCOMPL (QUOTE BCOMPL) "Does BCOMPL on selected files"] (T (QUOTE TCOMPL] (COND ((NULL COMPILEOP) (RETURN))) (EVAL.AS.PROCESS (LIST COMPILEOP (KWOTE FILE]) (FB.COPYCOMMAND [LAMBDA (PREFIX FILEENTRY WINDOW) (* hdj "17-Sep-84 17:04") (PROG (TOFILE) (SETQ FILEENTRY (FB.FETCHFILENAME FILEENTRY)) (SETQ TOFILE (if (NULL PREFIX) then (FB.PROMPTFORINPUT (CONCAT "Copy file " FILEENTRY " where? ") NIL WINDOW) else (PACKFILENAME (QUOTE DIRECTORY) PREFIX (QUOTE VERSION) NIL (QUOTE BODY) FILEENTRY))) (if (NULL TOFILE) then (FB.PROMPTWPRINT WINDOW " ... nowhere") (FB.PROMPTWTERPRI WINDOW) (RETURN)) (SETQ TOFILE (\ADD.CONNECTED.DIR TOFILE)) (COPYFILE FILEENTRY TOFILE) (SETQ FBUPDATE? T) (FB.PROMPTWPRINT WINDOW FILEENTRY " copied to " TOFILE) (FB.PROMPTWTERPRI WINDOW) (RETURN TOFILE]) (FB.UNDELETECOMMAND [LAMBDA (FILEENTRY WINDOW) (* hdj "26-Oct-84 15:55") (COND ((fetch (FILEBUCKET DELETED?) of FILEENTRY) (FB.CHANGEDELETEMARK FILEENTRY WINDOW) (replace (FILEBUCKET DELETED?) of FILEENTRY with NIL) [PUTWINDOWPROP WINDOW (QUOTE NUMDELETED) (SUB1 (GETWINDOWPROP WINDOW (QUOTE NUMDELETED] (FB.SHOW.NUMDELETED WINDOW]) (FB.UPDATECOMMAND [LAMBDA (KEY WINDOW) (* hdj "16-Sep-84 15:52") (SELECTQ (if (EQ KEY (QUOTE MIDDLE)) then [MENU (OR FUPDATEOPS (SETQ FUPDATEOPS (create MENU MENUFONT ← DEFAULTBROWSERFONT ITEMS ←(QUOTE ((Update (QUOTE UPDATE) "Updates browser using current selection pattern") (NewPattern (QUOTE NEWPATTERN) "Prompts for a new selection pattern and updates browser"] else (QUOTE UPDATE)) (UPDATE T) (NEWPATTERN (FB.NEWPATTERNCOMMAND WINDOW)) NIL]) ) (DEFINEQ (FB.MAKECOUNTERWINDOW [LAMBDA (HEIGHT WIDTH BROWSERW) (* hdj "26-Oct-84 18:23") (LET ((COUNTERW (CREATEW (create REGION LEFT ← 0 BOTTOM ← 0 HEIGHT ←(HEIGHTIFWINDOW (FONTPROP DEFAULTBROWSERFONT (QUOTE HEIGHT))) WIDTH ←(WINDOWPROP BROWSERW (QUOTE WIDTH))) NIL NIL T))) (FB.MAKERIGIDWINDOW COUNTERW) (WINDOWPROP COUNTERW (QUOTE BROWSERWINDOW) BROWSERW) (WINDOWPROP COUNTERW (QUOTE REPAINTFN) (FUNCTION FB.REPAINT.COUNTERW)) COUNTERW]) (FB.MAKESEEWINDOW [LAMBDA (FILE BROWSER) (* hdj "16-Sep-84 16:12") (PROG ((SEEWINDOW (GETWINDOWPROP BROWSER (QUOTE SEEWINDOW))) TEMPFILE) (* * if the last created see window is in use, or there isn't one, create a new one) [if [AND (WINDOWP SEEWINDOW) (NOT (GETWINDOWPROP SEEWINDOW (QUOTE INUSE] then (PUTWINDOWPROP SEEWINDOW (QUOTE TITLE) (CONCAT "Contents of " FILE)) else (SETQ SEEWINDOW (CREATEW NIL (CONCAT "Contents of " FILE] (PUTWINDOWPROP BROWSER (QUOTE SEEWINDOW) SEEWINDOW) (PUTWINDOWPROP SEEWINDOW (QUOTE INUSE) T) (SETQ TEMPFILE (OPENSTREAM (QUOTE {NODIRCORE}) (QUOTE BOTH))) (COPYFILE FILE TEMPFILE) (PUTWINDOWPROP SEEWINDOW (QUOTE TEMPFILE) TEMPFILE) (PUTWINDOWPROP SEEWINDOW (QUOTE REPAINTFN) (FUNCTION FB.SEEW.REPAINTFN)) (PUTWINDOWPROP SEEWINDOW (QUOTE RESHAPEFN) (FUNCTION FB.SEEW.RESHAPEFN)) (PUTWINDOWPROP SEEWINDOW (QUOTE SCROLLFN) (FUNCTION SCROLLBYREPAINTFN)) [PUTWINDOWPROP SEEWINDOW (QUOTE CLOSEFN) (FUNCTION (LAMBDA (W) (PUTWINDOWPROP W (QUOTE INUSE) NIL) (PUTWINDOWPROP W (QUOTE TEMPFILE) NIL] (FB.SEEW.RESHAPEFN SEEWINDOW) (RETURN SEEWINDOW]) (FB.COMMANDDISPATCH [LAMBDA (ITEM MENU KEY) (* hdj " 5-Feb-85 15:21") (PROG (WINDOW FBUPDATE? FILELIST PREFIX) (SETQ WINDOW (WINDOWPROP (WFROMMENU MENU) (QUOTE MAINWINDOW))) (COND ((GETWINDOWPROP WINDOW (QUOTE FILEBROWSERBUSY)) (FB.PROMPTWPRINT WINDOW "This filebrowser is busy") (RETURN))) (COND ((EQUAL (CADR ITEM) (QUOTE "")) (RETURN))) (OR (FMEMB (CADR ITEM) (QUOTE (Update Expunge))) [SETQ FILELIST (for INDEX in (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS)) collect (CAR (NTH (WINDOWPROP WINDOW (QUOTE BROWSERITEMMAP)) INDEX] (PROGN (FB.PROMPTWPRINT WINDOW "No files are selected") (RETURN))) (RESETLST (RESETSAVE NIL (LIST (QUOTE SHADEITEM) ITEM MENU FBITEMUNSELECTEDSHADE)) (RESETSAVE NIL (LIST (FUNCTION [LAMBDA (W P) (PUTWINDOWPROP W (QUOTE FILEBROWSERBUSY) P]) WINDOW NIL)) (PUTWINDOWPROP WINDOW (QUOTE FILEBROWSERBUSY) T) (SHADEITEM ITEM MENU FBITEMSELECTEDSHADE) [SELECTQ (CADR ITEM) (Edit (for FILEENTRY in FILELIST do (FB.EDITCOMMAND FILEENTRY KEY WINDOW) )) (See (for FILEENTRY in FILELIST do (FB.SEECOMMAND FILEENTRY KEY WINDOW))) (Update (SETQ FBUPDATE? (FB.UPDATECOMMAND KEY WINDOW))) (Delete (for FILEENTRY in FILELIST do (FB.DELETECOMMAND FILEENTRY WINDOW) )) (Undelete (for FILEENTRY in FILELIST do (FB.UNDELETECOMMAND FILEENTRY WINDOW))) (Expunge (SETQ FBUPDATE? (FB.EXPUNGECOMMAND WINDOW))) (Copy (if (IGREATERP (LENGTH FILELIST) 1) then (SETQ PREFIX (FB.PROMPTFORINPUT "Copy to which directory? " (DIRECTORYNAME T T) WINDOW)) (FB.PROMPTWTERPRI WINDOW)) (for FILEENTRY in FILELIST do (FB.COPYCOMMAND PREFIX FILEENTRY WINDOW))) (Load (for FILEENTRY in FILELIST do (FB.LOADCOMMAND FILEENTRY KEY WINDOW) )) (Compile (for FILEENTRY in FILELIST do (FB.COMPILECOMMAND FILEENTRY KEY WINDOW))) (Hardcopy (for FILEENTRY in FILELIST do (FB.HARDCOPYCOMMAND FILEENTRY KEY WINDOW))) (Rename (if (IGREATERP (LENGTH FILELIST) 1) then (SETQ PREFIX (FB.PROMPTFORINPUT "Move to which directory? " (DIRECTORYNAME T T) WINDOW)) (FB.PROMPTWTERPRI WINDOW)) (for FILEENTRY in FILELIST do (FB.RENAMECOMMAND PREFIX FILEENTRY WINDOW))) (LET ((FN (CADR ITEM))) (if (EQ (CAR FN) (QUOTE FUNCTION)) then (APPLY* (CADR FN) FILELIST KEY WINDOW) else (SHOULDNT] (COND (FBUPDATE? (FB.UPDATEBROWSERITEMS (WINDOWPROP WINDOW (QUOTE ITEMSPEC)) WINDOW]) (FB.EDITLISPFILE [LAMBDA (FILE WINDOW) (* hdj "25-Sep-84 17:21") (PROG (ROOT) (if (NOT (STREQUAL (CDAR (GETPROP (SETQ ROOT (U-CASE (ROOTFILENAME FILE))) (QUOTE FILEDATES))) FILE)) then (CLEARW PROMPTWINDOW) (if (MOUSECONFIRM (CONCAT "The file " FILE " is not loaded or is not current. (LOADFROM '" FILE ")?") NIL PROMPTWINDOW) then (LOADFROM FILE) else (RETURN))) (EDITDEF ROOT (QUOTE FILES]) (FB.SELECT [LAMBDA (WINDOW) (* hdj "26-Oct-84 15:52") (PROG (BROWSERITEMMAP FOLDER SETSEL ADDSEL EXTEND CURRENT#S FOLDER# FIRST# LAST#) (OR (SETQ SETSEL (MOUSESTATE LEFT)) (SETQ ADDSEL (LASTMOUSESTATE MIDDLE)) (SETQ EXTEND (LASTMOUSESTATE RIGHT)) (RETURN)) (SETQ BROWSERITEMMAP (WINDOWPROP WINDOW (QUOTE BROWSERITEMMAP))) (SETQ FOLDER (FB.FINDFILEBUCKET WINDOW)) (COND ((NULL FOLDER) (RETURN))) [COND (SETSEL (for FOLDER# in (GETWINDOWUSERPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS)) do (FB.UNSELECTFILE (CAR (FNTH BROWSERITEMMAP FOLDER#)) WINDOW)) (FB.SELECTFILE FOLDER WINDOW)) (ADDSEL (if (fetch (FILEBUCKET SELECTED?) of FOLDER) then (FB.UNSELECTFILE FOLDER WINDOW) else (FB.SELECTFILE FOLDER WINDOW))) (EXTEND (* have to find all the messages between FOLDER and the one selected *) (COND ([SETQ CURRENT#S (SORT (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS] (SETQ FOLDER# (fetch (FILEBUCKET #) of FOLDER)) [COND [(ILESSP FOLDER# (CAR CURRENT#S)) (* before *) (SETQ FIRST# FOLDER#) (SETQ LAST# (SUB1 (CAR CURRENT#S] (T (SETQ LAST# FOLDER#) (* after *) (SETQ FIRST# (ADD1 (CAR (LAST CURRENT#S] (for I from FIRST# to LAST# do (FB.SELECTFILE (CAR (NTH BROWSERITEMMAP I)) WINDOW] (FB.SHOW.NUMSELECTED WINDOW]) (FB.UPDATEBROWSERITEMS [LAMBDA (ITEMSPEC WINDOW) (* hdj "26-Oct-84 15:53") (PROG ((INFOWANTED (GETWINDOWPROP WINDOW (QUOTE INFOCHOICES))) HEADINGWINDOW FILEGENERATOR INFONEEDED FILENAME FILEINFO MAXWIDTH NEWBROWSERITEM BROWSERITEMMAP TOP BOTTOM) [SETQ FILEGENERATOR (\GENERATEFILES ITEMSPEC INFOWANTED (QUOTE (SORT RESETLST] (SETQ HEADINGWINDOW (GETWINDOWPROP WINDOW (QUOTE HEADINGWINDOW))) (WINDOWPROP HEADINGWINDOW (QUOTE TITLE) "File Browser") (CLEARW (WINDOWPROP WINDOW (QUOTE COUNTERWINDOW))) (PUTWINDOWPROP WINDOW (QUOTE EXTENT) NIL) (* set EXTENT to NIL while updating) (PUTWINDOWPROP WINDOW (QUOTE INFOGOTTEN) INFOWANTED) (PUTWINDOWPROP WINDOW (QUOTE DIRWIDTH) (SETQ MAXWIDTH (FB.PRINTHEADINGSON HEADINGWINDOW INFOWANTED))) (DSPRIGHTMARGIN 32767 WINDOW) (CLEARW WINDOW) (SETQ BROWSERITEMMAP (while (SETQ FILENAME (\GENERATENEXTFILE FILEGENERATOR)) as ITEMCOUNT from 1 bind ITEM bind STARTOFNAME collect (if (LISTP FILENAME) then (SETQ FILENAME (CONCATCODES FILENAME))) (SETQ FILEINFO (FB.GETALLFILEINFO FILENAME FILEGENERATOR INFOWANTED)) (create FILEBUCKET FILENAME ← FILENAME # ← ITEMCOUNT ITEM ←[SETQ ITEM (FB.CREATEPRINTSPEC FILEINFO INFOWANTED (OR STARTOFNAME (SETQ STARTOFNAME (FB.STARTOFNAME FILENAME ITEMSPEC] ITEMREGION ←(FB.PRINTANDGETREGION ITEM WINDOW MarkXPos 10) SELECTED? ← NIL DELETED? ← NIL FILEINFO ← FILEINFO))) (PUTWINDOWPROP WINDOW (QUOTE BROWSERITEMMAP) BROWSERITEMMAP) (PUTWINDOWPROP WINDOW (QUOTE EXTENT) (if BROWSERITEMMAP then [create REGION LEFT ← 0 BOTTOM ←[fetch (REGION BOTTOM) of (fetch (FILEBUCKET ITEMREGION) of (CAR (LAST BROWSERITEMMAP] WIDTH ← MAXWIDTH HEIGHT ←(IDIFFERENCE (fetch (REGION PTOP) of (fetch (FILEBUCKET ITEMREGION) of (CAR BROWSERITEMMAP))) (fetch (REGION BOTTOM) of (fetch (FILEBUCKET ITEMREGION) of (CAR (LAST BROWSERITEMMAP] else (FB.CLRPROMPTW WINDOW) (FB.PROMPTWPRINT WINDOW "No files in group " ITEMSPEC) NIL)) (PUTWINDOWPROP HEADINGWINDOW (QUOTE TITLE) (CONCAT (WINDOWPROP WINDOW (QUOTE ITEMSPEC)) " browser")) (PUTWINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS) NIL) (PUTWINDOWPROP WINDOW (QUOTE CURRENTITEM) NIL) (FB.SHOW.NUMFILES WINDOW) (FB.SHOW.NUMSELECTED WINDOW) (FB.SHOW.NUMDELETED WINDOW]) ) (* * lower-level window mungers) (DEFINEQ (FB.MAKERIGIDWINDOW [LAMBDA (WINDOW) (* lmm "14-Sep-84 16:22") (* * make the argument window immutable w/r/to attachedwindow package) (PROG [(HEIGHT (fetch (REGION HEIGHT) of (GETWINDOWPROP WINDOW (QUOTE REGION] (PUTWINDOWPROP WINDOW (QUOTE MINSIZE) (CONS 0 HEIGHT)) (PUTWINDOWPROP WINDOW (QUOTE MAXSIZE) (CONS SCREENWIDTH HEIGHT]) (FB.CLRPROMPTW [LAMBDA (MAINWINDOW) (* Jellinek " 6-May-84 16:48") (CLEARW (CAR (GETWINDOWPROP MAINWINDOW (QUOTE PROMPTWINDOW]) (FB.PRINTHEADINGSON [LAMBDA (WINDOW HEADINGS) (* lmm "14-Sep-84 15:49") (PROG ((totalwidth 0) BOTTOM) (DSPRIGHTMARGIN 32000 WINDOW) (DSPTEXTURE BLACKSHADE WINDOW) (DSPOPERATION (QUOTE INVERT) WINDOW) (DSPFILL NIL BLACKSHADE (QUOTE REPLACE) WINDOW) (for HEADING in INFOLISTINGWIDTHS by (CDDR HEADING) bind word width (pos ← MarkXPos) when (FMEMB HEADING HEADINGS) do (SETQ word (fetch (INFOWPRINTSPEC LABEL) of (LISTGET INFOLISTINGWIDTHS HEADING))) (SETQ width (fetch (INFOWPRINTSPEC WIDTH) of (LISTGET INFOLISTINGWIDTHS HEADING))) (SETQ totalwidth (IPLUS totalwidth width)) (DSPXPOSITION pos WINDOW) (PRIN3 word WINDOW) (add pos width)) (PUTWINDOWPROP WINDOW (QUOTE EXTENT) (create REGION LEFT ← 0 BOTTOM ←[SETQ BOTTOM (IPLUS (DSPYPOSITION NIL WINDOW) (FONTPROP WINDOW (QUOTE ASCENT] WIDTH ← totalwidth HEIGHT ←(IDIFFERENCE (GETWINDOWPROP WINDOW (QUOTE HEIGHT)) BOTTOM))) (RETURN totalwidth]) (FB.PRINTANDGETREGION [LAMBDA (PRINTSPEC STREAM LFTMARGIN MINSPACE) (* lmm " 5-Oct-84 17:49") (* prints PRINTSPEC on WINDOW and returns the box taken by the characters.) (PROG (YSTART YEND HEIGHT) (DSPXPOSITION LFTMARGIN STREAM) (SETQ YSTART (DSPYPOSITION NIL STREAM)) (for SPEC in PRINTSPEC bind OLDX PRETTYWIDTH do (SETQ OLDX (DSPXPOSITION NIL STREAM)) (SETQ PRETTYWIDTH (fetch (INFOWPRINTSPEC WIDTH) of SPEC)) (COND ((fetch (INFOWPRINTSPEC LABEL) of SPEC) (PRIN3 (fetch (INFOWPRINTSPEC LABEL) of SPEC) STREAM) (PRIN3 " " STREAM))) (* If any single item won't fit, skip a line and continue) (if (IGEQ (IDIFFERENCE (DSPXPOSITION NIL STREAM) OLDX) PRETTYWIDTH) then (TERPRI STREAM)) (DSPXPOSITION (IPLUS OLDX PRETTYWIDTH) STREAM)) (SETQ YEND (DSPYPOSITION NIL STREAM)) (RETURN (PROG1 (create REGION LEFT ← LFTMARGIN BOTTOM ←(IDIFFERENCE YEND (FONTPROP STREAM (QUOTE DESCENT))) HEIGHT ←(IPLUS (IDIFFERENCE YSTART YEND) (FONTPROP STREAM (QUOTE HEIGHT))) WIDTH ←(IDIFFERENCE (DSPXPOSITION NIL STREAM) LFTMARGIN)) (TERPRI STREAM]) (FB.MAKEHEADINGWINDOW [LAMBDA (WIDTH FONT BORDER TITLE) (* hdj "26-Oct-84 17:42") (PROG (PWINDOW) (SETQ PWINDOW (CREATEW (create REGION LEFT ← 0 BOTTOM ← 0 WIDTH ← WIDTH HEIGHT ←(HEIGHTIFWINDOW (FONTPROP FONT (QUOTE HEIGHT)) TITLE BORDER)) TITLE BORDER T)) (DSPFONT FONT PWINDOW) (PUTWINDOWPROP PWINDOW (QUOTE PAGEFULLFN) (FUNCTION NILL)) (PUTWINDOWPROP PWINDOW (QUOTE NOSCROLLBARS) T) (PUTWINDOWPROP PWINDOW (QUOTE SCROLLFN) (FUNCTION SCROLLBYREPAINTFN)) (PUTWINDOWPROP PWINDOW (QUOTE REPAINTFN) (FUNCTION FB.HEADINGWREDISPLAYFN)) (FB.MAKERIGIDWINDOW PWINDOW) (RETURN PWINDOW]) (FB.PROMPTWPRINT [LAMBDA U (* Jellinek " 6-May-84 16:37") (PROG (WINDOW) (COND ((ILESSP U 2) (ERROR "not enough args to PROMPTWPRINT"))) (* CAR is window, CDR is height in lines) [SETQ WINDOW (CAR (GETWINDOWPROP (ARG U 1) (QUOTE PROMPTWINDOW] (for ITEM from 2 to U do (PRIN1 (ARG U ITEM) WINDOW]) (FB.PROMPTWTERPRI [LAMBDA (MAINWINDOW) (* Jellinek " 6-May-84 16:37") (* CAR is prompt window, CDR is height in lines) (TERPRI (CAR (GETWINDOWPROP MAINWINDOW (QUOTE PROMPTWINDOW]) (FB.SELECTFILE [LAMBDA (FOLDER WINDOW) (* hdj "16-Sep-84 16:01") (COND (FOLDER (replace (FILEBUCKET SELECTED?) of FOLDER with T) (WINDOWADDPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS) (fetch (FILEBUCKET #) of FOLDER)) [WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS) (SORT (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS] (\ITEMW.SELECTITEM (LIST (fetch (FILEBUCKET ITEMREGION) of FOLDER)) WINDOW]) (FB.UNSELECTFILE [LAMBDA (MSG WINDOW) (* hdj "16-Sep-84 16:10") (COND (MSG (replace (FILEBUCKET SELECTED?) of MSG with NIL) [WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS) (REMOVE (fetch (FILEBUCKET #) of MSG) (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS] (\ITEMW.DESELECTITEM (LIST (fetch ITEMREGION of MSG)) WINDOW]) (FB.CHANGEDELETEMARK [LAMBDA (FOLDER WINDOW) (* lmm "14-Sep-84 15:55") (PROG ((FOLDERREGION (fetch ITEMREGION of FOLDER))) (BITBLT NIL 0 0 WINDOW (fetch (REGION LEFT) of FOLDERREGION) (IDIFFERENCE (fetch (REGION PTOP) of FOLDERREGION) (IQUOTIENT (FONTPROP WINDOW (QUOTE HEIGHT)) 2)) (fetch (REGION WIDTH) of FOLDERREGION) 1 (QUOTE TEXTURE) (QUOTE INVERT) BLACKSHADE]) (FB.CHANGECOPYSELECTMARK [LAMBDA (FOLDER WINDOW) (* lmm "14-Sep-84 15:59") (PROG ((FOLDERREGION (fetch ITEMREGION of FOLDER))) (* underline first line of the folder (which generally gets the file name)) (BITBLT NIL 0 0 WINDOW (fetch (REGION LEFT) of FOLDERREGION) (IDIFFERENCE (fetch (REGION TOP) of FOLDERREGION) (IPLUS (FONTPROP WINDOW (QUOTE ASCENT)) 2)) (fetch (REGION WIDTH) of FOLDERREGION) 2 (QUOTE TEXTURE) (QUOTE INVERT) GRAYSHADE]) (FB.INFOMENU.SHADEINITIALSELECTIONS [LAMBDA (MENUWINDOW INITIALSELECTIONS) (* hdj "16-Sep-84 16:17") (PROG (MENUITEMS MENU) [SETQ MENU (CAR (GETWINDOWPROP MENUWINDOW (QUOTE MENU] (SETQ MENUITEMS (fetch (MENU ITEMS) of MENU)) (for SELECTION in INITIALSELECTIONS do (SHADEITEM (FB.\ItemWithTag SELECTION MENUITEMS) MENU INFOSHADE MENUWINDOW]) (FB.SHOW.NUMDELETED [LAMBDA (BROWSERW) (* hdj "26-Oct-84 15:44") (LET [(COUNTERW (WINDOWPROP BROWSERW (QUOTE COUNTERWINDOW))) (STARTPOSITION (ITIMES (IQUOTIENT (WINDOWPROP BROWSERW (QUOTE WIDTH)) 3) 2)) (ENDPOSITION (WINDOWPROP BROWSERW (QUOTE WIDTH] (LET [(PRINTINGREGION (create REGION LEFT ← STARTPOSITION WIDTH ←(IDIFFERENCE ENDPOSITION STARTPOSITION) BOTTOM ← 0 HEIGHT ←(WINDOWPROP COUNTERW (QUOTE HEIGHT] (DSPFILL PRINTINGREGION WHITESHADE (QUOTE REPLACE) COUNTERW) (DSPXPOSITION STARTPOSITION COUNTERW) (PRIN3 "D:" COUNTERW) (CENTERPRINTINREGION (WINDOWPROP BROWSERW (QUOTE NUMDELETED)) PRINTINGREGION COUNTERW]) (FB.SHOW.NUMFILES [LAMBDA (BROWSERW) (* hdj "26-Oct-84 15:42") (LET ((COUNTERW (WINDOWPROP BROWSERW (QUOTE COUNTERWINDOW))) (STARTPOSITION 0) (ENDPOSITION (IQUOTIENT (WINDOWPROP BROWSERW (QUOTE WIDTH)) 3))) (LET [(PRINTINGREGION (create REGION LEFT ← STARTPOSITION WIDTH ←(IDIFFERENCE ENDPOSITION STARTPOSITION) BOTTOM ← 0 HEIGHT ←(WINDOWPROP COUNTERW (QUOTE HEIGHT] (DSPFILL PRINTINGREGION WHITESHADE (QUOTE REPLACE) COUNTERW) (DSPXPOSITION STARTPOSITION COUNTERW) (PRIN3 "F:" COUNTERW) (CENTERPRINTINREGION (LENGTH (WINDOWPROP BROWSERW (QUOTE BROWSERITEMMAP))) PRINTINGREGION COUNTERW]) (FB.SHOW.NUMSELECTED [LAMBDA (BROWSERW) (* hdj "26-Oct-84 15:42") (LET ((COUNTERW (WINDOWPROP BROWSERW (QUOTE COUNTERWINDOW))) (STARTPOSITION (IQUOTIENT (WINDOWPROP BROWSERW (QUOTE WIDTH)) 3)) (ENDPOSITION (ITIMES (IQUOTIENT (WINDOWPROP BROWSERW (QUOTE WIDTH)) 3) 2))) (LET [(PRINTINGREGION (create REGION LEFT ← STARTPOSITION WIDTH ←(IDIFFERENCE ENDPOSITION STARTPOSITION) BOTTOM ← 0 HEIGHT ←(WINDOWPROP COUNTERW (QUOTE HEIGHT] (DSPFILL PRINTINGREGION WHITESHADE (QUOTE REPLACE) COUNTERW) (DSPXPOSITION STARTPOSITION COUNTERW) (PRIN3 "S:" COUNTERW) (CENTERPRINTINREGION (LENGTH (WINDOWPROP BROWSERW (QUOTE CURRENTFOLDERNUMBERS))) PRINTINGREGION COUNTERW]) ) (* * window functions) (DEFINEQ (FB.HEADINGWREDISPLAYFN [LAMBDA (WINDOW) (* hdj "16-Sep-84 15:38") (FB.PRINTHEADINGSON WINDOW (GETWINDOWPROP (GETWINDOWPROP WINDOW (QUOTE MAINWINDOW)) (QUOTE INFOGOTTEN]) (FB.REPAINT.COUNTERW [LAMBDA (COUNTERWINDOW) (* hdj "26-Oct-84 18:26") (LET [(BROWSERW (WINDOWPROP COUNTERWINDOW (QUOTE BROWSERWINDOW] (DSPFILL NIL WHITESHADE (QUOTE REPLACE) COUNTERWINDOW) (FB.SHOW.NUMFILES BROWSERW) (FB.SHOW.NUMSELECTED BROWSERW) (FB.SHOW.NUMDELETED BROWSERW]) (FB.ICONFN [LAMBDA (W I) (* lmm "14-Sep-84 16:42") (PROG (OLDICONREGION) [SETQ OLDICONREGION (AND I (GETWINDOWPROP I (QUOTE REGION] (RETURN (TITLEDICONW (create TITLEDICON ICON ← FILEDRAWER MASK ← FILEDRAWERMASK TITLEREG ←(create REGION LEFT ← 5 WIDTH ← 60 BOTTOM ← 10 HEIGHT ← 45)) (GETWINDOWPROP W (QUOTE ITEMSPEC)) FBICONFONT (AND I (create POSITION XCOORD ←(fetch (REGION LEFT) of OLDICONREGION) YCOORD ←(fetch (REGION BOTTOM) of OLDICONREGION))) NIL (QUOTE TOP]) (FB.BUTTONEVENTFN [LAMBDA (WINDOW) (* hdj "16-Sep-84 16:46") (PROG (FOLDER) (if (FB.COPYBUTTONDOWN?) then (GETMOUSESTATE) (if (SETQ FOLDER (FB.FINDFILEBUCKET WINDOW)) then (FB.CHANGECOPYSELECTMARK FOLDER WINDOW) (while (FB.COPYBUTTONDOWN?) do (BLOCK)) (BKSYSBUF (fetch (FILEBUCKET FILENAME) of FOLDER)) (FB.CHANGECOPYSELECTMARK FOLDER WINDOW)) else (FB.SELECT WINDOW]) (FB.CURSORMOVEDFN [LAMBDA (WINDOW) (* hdj "12-Sep-84 18:21") (if (IGEQ MarkXPos (fetch XCOORD of (CURSORPOSITION NIL WINDOW))) then (SETCURSOR RIGHTARROWCURSOR) else (if (NEQ (CURSOR) DEFAULTCURSOR) then (SETCURSOR DEFAULTCURSOR]) (FB.CURSOROUTFN [LAMBDA (WINDOW) (* rao: "30-JUN-82 15:49") (SETCURSOR DEFAULTCURSOR]) (FB.REPAINTFN [LAMBDA (WINDOW R) (* hdj "26-Oct-84 17:46") (PROG ((BROWSERITEMMAP (GETWINDOWPROP WINDOW (QUOTE BROWSERITEMMAP))) (HEADINGWINDOW (GETWINDOWPROP WINDOW (QUOTE HEADINGWINDOW))) (TOP (fetch (REGION TOP) of R)) [BOTTOM (IDIFFERENCE (fetch (REGION BOTTOM) of R) (FONTPROP WINDOW (QUOTE ASCENT] YPOS ITEMSPEC DIRWIDTH STARTOFNAME ATTRS) (COND ((NULL BROWSERITEMMAP) (RETURN))) (for FILE in BROWSERITEMMAP bind REGION do (if (AND [IGREATERP TOP (SETQ YPOS (fetch (REGION BOTTOM) of (SETQ REGION (fetch (FILEBUCKET ITEMREGION) of FILE] (ILESSP BOTTOM (fetch (REGION TOP) of REGION))) then (DSPYPOSITION (IDIFFERENCE (IPLUS (fetch (REGION BOTTOM) of REGION) (fetch (REGION HEIGHT) of REGION)) (FONTPROP WINDOW (QUOTE ASCENT))) WINDOW) (OR (EQUAL (FB.PRINTANDGETREGION (fetch (FILEBUCKET ITEM) of FILE) WINDOW MarkXPos 10) REGION) T (HELP)) (if (fetch (FILEBUCKET SELECTED?) of FILE) then (\ITEMW.SELECTITEM (LIST (fetch ITEMREGION of FILE)) WINDOW)) (if (fetch (FILEBUCKET DELETED?) of FILE) then (FB.CHANGEDELETEMARK FILE WINDOW))) repeatwhile (ILESSP BOTTOM YPOS]) (FB.SCROLLFN [LAMBDA (WINDOW HORIZ VERT CONTINUOUS?) (* hdj "16-Sep-84 15:49") (* * Scroll FB window up/down and right/left. In right/left case, tell heading window to scroll also) (* * only scroll an integral number of text lines) (if (GETWINDOWPROP WINDOW (QUOTE FILEBROWSERBUSY)) then (FB.CLRPROMPTW WINDOW) (FB.PROMPTWPRINT WINDOW "This filebrowser is busy") else (COND ((NOT (ZEROP HORIZ)) (SCROLLW (GETWINDOWPROP WINDOW (QUOTE HEADINGWINDOW)) HORIZ VERT CONTINUOUS?))) (SCROLLBYREPAINTFN WINDOW HORIZ VERT CONTINUOUS?]) (FB.RIGHTBUTTONFN [LAMBDA (WINDOW) (* hdj "16-Sep-84 15:54") (COND ((IGREATERP (LASTMOUSEX WINDOW) MarkXPos) (DOWINDOWCOM WINDOW)) (T (FB.SELECT WINDOW]) (FB.MENU.WHENSELECTEDFN [LAMBDA (Item Menu Key) (* hdj "16-Sep-84 15:57") (ADD.PROCESS (LIST (FUNCTION FB.COMMANDDISPATCH) (KWOTE Item) (KWOTE Menu) (KWOTE Key)) (QUOTE NAME) (PACK (LIST (QUOTE FB-) (CAR Item]) (FB.INFOMENU.WHENSELECTEDFN [LAMBDA (ITEM MENU KEY) (* hdj "18-Sep-84 12:00") (PROG (CHOSEN (WINDOW (GETWINDOWPROP (WFROMMENU MENU) (QUOTE MAINWINDOW))) (INFO (CADR ITEM))) (SETQ CHOSEN (GETWINDOWPROP WINDOW (QUOTE INFOCHOICES))) (if (FMEMB INFO CHOSEN) then (SHADEITEM ITEM MENU WHITESHADE) (SETQ CHOSEN (REMOVE INFO CHOSEN)) else (SHADEITEM ITEM MENU INFOSHADE) (SETQ CHOSEN (CONS INFO CHOSEN))) (PUTWINDOWPROP WINDOW (QUOTE INFOCHOICES) CHOSEN]) (FB.CLOSEFN [LAMBDA (WINDOW) (* hdj "26-Oct-84 18:24") (* did you really want to close up shop?) (COND ((IGREATERP (GETWINDOWPROP WINDOW (QUOTE NUMDELETED)) 0) (* * do the right thing; if we are really closing, smash the backpointer from the COUNTERWINDOW so everything gets collected) (SELECTQ [MENU (OR FBCLOSEMENU (SETQ FBCLOSEMENU (create MENU ITEMS ← FBCLOSEMENUITEMS MENUROWS ← 2 CENTERFLG ← T TITLE ← "FB close options" MENUFONT ← DEFAULTBROWSERFONT] (EXPUNGE (FB.EXPUNGECOMMAND WINDOW) (WINDOWPROP (WINDOWPROP WINDOW (QUOTE COUNTERWINDOW)) (QUOTE BROWSERWINDOW) NIL)) (NOEXPUNGE (WINDOWPROP (WINDOWPROP WINDOW (QUOTE COUNTERWINDOW)) (QUOTE BROWSERWINDOW) NIL)) (QUOTE DON'T]) (FB.SEEW.REPAINTFN [LAMBDA (WINDOW REGION) (* hdj "16-Sep-84 15:20") (PROG [(TEMPFILE (OPENSTREAM (GETWINDOWPROP WINDOW (QUOTE TEMPFILE)) (QUOTE BOTH] (MOVETO (WINDOWPROP WINDOW (QUOTE XORIG)) (WINDOWPROP WINDOW (QUOTE YORIG)) WINDOW) (SETFILEPTR TEMPFILE 0) (PFCOPYBYTES TEMPFILE WINDOW]) (FB.SEEW.RESHAPEFN [LAMBDA (WINDOW) (* hdj "16-Sep-84 16:11") (PROG (BTM) (DSPRESET WINDOW) (DSPRIGHTMARGIN 32000 WINDOW) (PUTWINDOWPROP WINDOW (QUOTE XORIG) (DSPXPOSITION NIL WINDOW)) (PUTWINDOWPROP WINDOW (QUOTE YORIG) (DSPYPOSITION NIL WINDOW)) (PUTWINDOWPROP WINDOW (QUOTE YORIG) (DSPYPOSITION NIL WINDOW)) (FB.SEEW.REPAINTFN WINDOW) [SETQ BTM (IPLUS (DSPYPOSITION NIL WINDOW) (FONTPROP WINDOW (QUOTE ASCENT] (PUTWINDOWPROP WINDOW (QUOTE EXTENT) (create REGION LEFT ← 0 BOTTOM ← BTM WIDTH ← 32000 HEIGHT ←(IDIFFERENCE (GETWINDOWPROP WINDOW (QUOTE HEIGHT)) BTM]) ) (* * odds and ends) (DEFINEQ (FB.COPYBUTTONDOWN? [LAMBDA NIL (* hdj "13-Sep-84 14:59") (OR (KEYDOWNP (QUOTE LSHIFT)) (KEYDOWNP (QUOTE RSHIFT)) (KEYDOWNP (QUOTE COPY]) (FB.FETCHFILENAME [LAMBDA (ENTRY) (* hdj "16-Sep-84 15:28") (fetch (FILEBUCKET FILENAME) of ENTRY]) (FB.STARTOFNAME [LAMBDA (FILENAME SPEC) (* lmm "14-Sep-84 17:59") (* assume that hosts match) [SETQ SPEC (SUBSTRING SPEC (ADD1 (OR (LASTCHPOS (CHARCODE }) SPEC) 0] (bind (DIRSTART ←(ADD1 (OR (LASTCHPOS (CHARCODE }) FILENAME) 0))) DIREND first (SETQ FILENAME (SUBSTRING FILENAME DIRSTART)) while (SETQ DIREND (LASTCHPOS (CHARCODE >) SPEC)) do (SETQ SPEC (SUBSTRING SPEC 1 DIREND SPEC)) [if (STRPOS SPEC FILENAME 1 NIL T NIL (UPPERCASEARRAY)) then (RETURN (IPLUS DIRSTART (NCHARS SPEC] (SETQ SPEC (SUBSTRING SPEC 1 -2 SPEC)) finally (RETURN DIRSTART]) (FB.STARTUP [LAMBDA (WINDOW COMMANDMENU COMMANDMENUWINDOW) (* hdj "16-Sep-84 16:13") (PROG ((UPDATE (FASSOC (QUOTE Update) FBMENUITEMS))) (RESETLST (RESETSAVE NIL (LIST (QUOTE SHADEITEM) UPDATE COMMANDMENU WHITESHADE)) (RESETSAVE NIL (LIST (FUNCTION [LAMBDA (W P) (PUTWINDOWPROP W (QUOTE FILEBROWSERBUSY) P]) WINDOW NIL)) (SHADEITEM UPDATE COMMANDMENU FBITEMSELECTEDSHADE COMMANDMENUWINDOW) (PUTWINDOWPROP WINDOW (QUOTE FILEBROWSERBUSY) T) (FB.UPDATEBROWSERITEMS (GETWINDOWPROP WINDOW (QUOTE ITEMSPEC)) WINDOW]) (FB.CREATEPRINTSPEC [LAMBDA (FILEINFO WANTTOSEE NAMESTART) (* lmm "14-Sep-84 16:52") (for HEADING in INFOLISTINGWIDTHS by (CDDR HEADING) when (FMEMB HEADING WANTTOSEE) collect (create INFOWPRINTSPEC LABEL ←[COND ((EQ HEADING (QUOTE NAME)) (SUBSTRING (CDR (FASSOC HEADING FILEINFO)) NAMESTART)) (T (CDR (FASSOC HEADING FILEINFO] WIDTH ←(fetch (INFOWPRINTSPEC WIDTH) of (LISTGET INFOLISTINGWIDTHS HEADING]) (FB.FINDFILEBUCKET [LAMBDA (WINDOW) (* hdj "16-Sep-84 14:23") (for FOLDER in (WINDOWPROP WINDOW (QUOTE BROWSERITEMMAP)) bind [YPOS ←(IPLUS (LASTMOUSEY WINDOW) (FONTPROP WINDOW (QUOTE DESCENT] thereis (IGREATERP YPOS (fetch BOTTOM of (fetch (FILEBUCKET ITEMREGION) of FOLDER]) (FB.PROMPTFORINPUT [LAMBDA (PROMPT EXPRS WINDOW) (* hdj " 1-Sep-84 15:58") (PROMPTFORWORD PROMPT EXPRS NIL (CAR (GETWINDOWPROP WINDOW (QUOTE PROMPTWINDOW))) NIL (QUOTE TTY) (CHARCODE (CR ESC]) (FB.GETALLFILEINFO [LAMBDA (FILE GENERATOR ATTRIBUTES) (* hdj "23-Aug-84 16:34") (* *) (for ATTR in ATTRIBUTES collect (if (EQ ATTR (QUOTE NAME)) then (CONS ATTR FILE) else (CONS ATTR (\GENERATEFILEINFO GENERATOR ATTR]) (FB.\ItemWithTag [LAMBDA (TAG ITEMS) (* hdj "16-Sep-84 16:16") (* * search a menu's items for one with tag TAG) (for ITEM in ITEMS do (if (EQ (CADR ITEM) TAG) then (RETURN ITEM]) ) (DECLARE: EVAL@COMPILE DONTCOPY (DECLARE: EVAL@COMPILE (RPAQQ MarkXPos 16) (CONSTANTS (MarkXPos 16)) ) [DECLARE: EVAL@COMPILE (RECORD INFOWPRINTSPEC (LABEL . WIDTH)) (RECORD FILEBUCKET (FILENAME ITEMREGION # SELECTED? DELETED? FILEINFO ITEM)) ] ) (DECLARE: EVAL@COMPILE (PUTPROPS ISLISPFILE? MACRO ((A) (FILEDATE A))) ) (ADDTOVAR BackgroundMenuCommands ("FileBrowser" (FB) "Opens a filebrowser window; prompts for pattern")) (RPAQQ BackgroundMenu NIL) (DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDTOVAR NLAMA FB) (ADDTOVAR NLAML ) (ADDTOVAR LAMA FB.PROMPTWPRINT) ) (PUTPROPS FILEBROWSER COPYRIGHT ("Xerox Corporation" 1983 1984 1985)) (DECLARE: DONTCOPY (FILEMAP (NIL (9505 13657 (FB 9515 . 9736) (FILEBROWSER 9738 . 13655)) (13702 22135 (FB.EXPUNGECOMMAND 13712 . 14448) (FB.HARDCOPYCOMMAND 14450 . 14675) (FB.LOADCOMMAND 14677 . 15425) ( FB.NEWPATTERNCOMMAND 15427 . 16046) (FB.RENAMECOMMAND 16048 . 16996) (FB.EDITCOMMAND 16998 . 18764) ( FB.DELETECOMMAND 18766 . 19221) (FB.SEECOMMAND 19223 . 19382) (FB.COMPILECOMMAND 19384 . 20099) ( FB.COPYCOMMAND 20101 . 21042) (FB.UNDELETECOMMAND 21044 . 21493) (FB.UPDATECOMMAND 21495 . 22133)) ( 22136 33096 (FB.MAKECOUNTERWINDOW 22146 . 22761) (FB.MAKESEEWINDOW 22763 . 24135) (FB.COMMANDDISPATCH 24137 . 27491) (FB.EDITLISPFILE 27493 . 28115) (FB.SELECT 28117 . 29968) (FB.UPDATEBROWSERITEMS 29970 . 33094)) (33136 43002 (FB.MAKERIGIDWINDOW 33146 . 33586) (FB.CLRPROMPTW 33588 . 33767) ( FB.PRINTHEADINGSON 33769 . 34908) (FB.PRINTANDGETREGION 34910 . 36415) (FB.MAKEHEADINGWINDOW 36417 . 37252) (FB.PROMPTWPRINT 37254 . 37693) (FB.PROMPTWTERPRI 37695 . 37991) (FB.SELECTFILE 37993 . 38507) (FB.UNSELECTFILE 38509 . 38946) (FB.CHANGEDELETEMARK 38948 . 39447) (FB.CHANGECOPYSELECTMARK 39449 . 40051) (FB.INFOMENU.SHADEINITIALSELECTIONS 40053 . 40492) (FB.SHOW.NUMDELETED 40494 . 41325) ( FB.SHOW.NUMFILES 41327 . 42114) (FB.SHOW.NUMSELECTED 42116 . 43000)) (43032 50981 ( FB.HEADINGWREDISPLAYFN 43042 . 43283) (FB.REPAINT.COUNTERW 43285 . 43673) (FB.ICONFN 43675 . 44386) ( FB.BUTTONEVENTFN 44388 . 44929) (FB.CURSORMOVEDFN 44931 . 45266) (FB.CURSOROUTFN 45268 . 45410) ( FB.REPAINTFN 45412 . 46985) (FB.SCROLLFN 46987 . 47633) (FB.RIGHTBUTTONFN 47635 . 47865) ( FB.MENU.WHENSELECTEDFN 47867 . 48167) (FB.INFOMENU.WHENSELECTEDFN 48169 . 48810) (FB.CLOSEFN 48812 . 49831) (FB.SEEW.REPAINTFN 49833 . 50214) (FB.SEEW.RESHAPEFN 50216 . 50979)) (51008 54571 ( FB.COPYBUTTONDOWN? 51018 . 51218) (FB.FETCHFILENAME 51220 . 51384) (FB.STARTOFNAME 51386 . 52182) ( FB.STARTUP 52184 . 52813) (FB.CREATEPRINTSPEC 52815 . 53334) (FB.FINDFILEBUCKET 53336 . 53718) ( FB.PROMPTFORINPUT 53720 . 53970) (FB.GETALLFILEINFO 53972 . 54284) (FB.\ItemWithTag 54286 . 54569)))) ) STOP