(FILECREATED "26-Jan-84 14:53:41" {PHYLUM}<LISPCORE>LIBRARY>FILEBROWSER.;2 38053  

      changes to:  (VARS FILEBROWSERCOMS)
		   (RECORDS BrowserRec)
		   (FNS FBROWSEREPAINTFN FBROWSESELECT FILEBROWSER FUPDATEBROWSERITEMS)

      previous date: "24-Jan-84 16:37:07" {PHYLUM}<LISPCORE>LIBRARY>FILEBROWSER.;1)


(* Copyright (c) 1983, 1984 by Xerox Corporation)

(PRETTYCOMPRINT FILEBROWSERCOMS)

(RPAQQ FILEBROWSERCOMS ((VARS (FCOMPILEOPS NIL)
			      (FEDITOPS NIL)
			      (FUPDATEOPS NIL)
			      (FLOADOPS NIL)
			      (FBMENU NIL)
			      (DEFAULTBROWSERFONT (FONTCREATE (QUOTE GACHA)
							      10
							      (QUOTE BOLD)))
			      (DELETEDFILEFONT (FONTCREATE (QUOTE HELVETICA)
							   10
							   (QUOTE ITALIC)))
			      (FILEBROWSERBUSY NIL)
			      FBMENUITEMS FBITEMUNSELECTEDSHADE FBITEMSELECTEDSHADE)
	(FNS FBROWSEBUTTON FBROWSEMOVEDFN FBROWSEOUTFN FBROWSEREPAINTFN FBROWSERPRINTANDBOX 
	     FDELCOMMAND FDIRECTORY FEDITLISPFILE FEXPNGFILECOMMAND FGETFILENAME FHARDCPYCOMMAND 
	     FLOADFILECOMMAND FNEWPTRNCOMMAND FOPENINFOW FRENAMEFILECOMMAND FBROWSERIGHT 
	     FBROWSESELECT FDOEDITCOMMAND FDOFILEBROWSERCOMMAND FDOSEECOMMAND FILEBROWSER FINDFOLDER 
	     FMAKEFOLDERSELECTED FMAKEFOLDERUNSELECTED FMAKESEEWINDOW FCHANGEFOLDERMARK 
	     FCHANGESELMARK FCOMPLFILECOMMAND FCOPYFILECOMMAND FMARKFOLDERSELECTED 
	     FMARKFOLDERUNSELECTED FPRINTFILEINFO FPROMPTEDIT FSEEREPAINTFN FSEERESHAPEFN 
	     FSHORTFILENAME FPRINTHEADER FUNDELCOMMAND FUPDATEBROWSERITEMS FUPDATECOMMAND)
	(DECLARE: EVAL@COMPILE DONTCOPY (RECORDS BrowserRec)
		  (CONSTANTS (MarkXPos 10)))
	(CURSORS RIGHTARROWCURSOR)
	(LISPXMACROS FB)))

(RPAQQ FCOMPILEOPS NIL)

(RPAQQ FEDITOPS NIL)

(RPAQQ FUPDATEOPS NIL)

(RPAQQ FLOADOPS NIL)

(RPAQQ FBMENU NIL)

(RPAQ DEFAULTBROWSERFONT (FONTCREATE (QUOTE GACHA)
				     10
				     (QUOTE BOLD)))

(RPAQ DELETEDFILEFONT (FONTCREATE (QUOTE HELVETICA)
				  10
				  (QUOTE ITALIC)))

(RPAQQ FILEBROWSERBUSY NIL)

(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 selected files in typescript window")
		    (Update Update 
"Updates list of files satisfying selection pattern:
  (Use MIDDLE mouse button to select options)")
		    (Hardcopy Hardcopy "Produces hardcopy of selected files")
		    (Info Info "Displays information about selected files")))

(RPAQQ FBITEMUNSELECTEDSHADE 0)

(RPAQQ FBITEMSELECTEDSHADE 43605)
(DEFINEQ

(FBROWSEBUTTON
  [LAMBDA (WINDOW)                                           (* SDG "22-JUL-83 13:24")
    (COND
      [(OR (KEYDOWNP (QUOTE LSHIFT))
	   (KEYDOWNP (QUOTE RSHIFT)))
	(while (OR (KEYDOWNP (QUOTE LSHIFT))
		   (KEYDOWNP (QUOTE RSHIFT)))
	   bind FOLDER
	   do (GETMOUSESTATE)
	      (if FOLDER
		  then (FCHANGESELMARK FOLDER WINDOW))
	      (FCHANGESELMARK (SETQ FOLDER (FINDFOLDER WINDOW))
			      WINDOW)
	   finally (FCHANGESELMARK FOLDER WINDOW)
		   (BKSYSBUF (fetch (BrowserRec USERDATA) of FOLDER]
      ((FBROWSESELECT WINDOW])

(FBROWSEMOVEDFN
  [LAMBDA (WINDOW)                                           (* mdy: "20-OCT-82 16:29")
    (SETCURSOR (COND
		 ((IGEQ 30 (fetch XCOORD of (CURSORPOSITION NIL WINDOW)))
		   RIGHTARROWCURSOR)
		 (T DEFAULTCURSOR])

(FBROWSEOUTFN
  [LAMBDA (WINDOW)                                           (* rao: "30-JUN-82 15:49")
    (SETCURSOR DEFAULTCURSOR])

(FBROWSEREPAINTFN
  [LAMBDA (WINDOW R)                                         (* lmm "26-Jan-84 14:43")
    (DECLARE (SPECVARS MAXWIDTH))
    (PROG ((BROWSERITEMMAP (WINDOWPROP WINDOW (QUOTE BROWSERITEMMAP)))
	   (DIRSTART (WINDOWPROP WINDOW (QUOTE DIRSTART)))
	   YPOS
	   [TOP (IPLUS (fetch TOP of R)
		       (FONTPROP WINDOW (QUOTE DESCENT]
	   [BOTTOM (IDIFFERENCE (fetch BOTTOM of R)
				(FONTPROP WINDOW (QUOTE ASCENT]
	   (MAXWIDTH 0))
          (for BROWSERMAPITEM in BROWSERITEMMAP as ITEMCOUNT from 1
	     when (AND [IGREATERP TOP (SETQ YPOS (fetch BOTTOM of (fetch (BrowserRec ITEMREGION)
								     of BROWSERMAPITEM]
		       (ILESSP BOTTOM YPOS))
	     do (MOVETO 0 (IPLUS YPOS (FONTPROP WINDOW (QUOTE DESCENT)))
			WINDOW)
		(replace (BrowserRec ITEMREGION) of BROWSERMAPITEM with (FBROWSERPRINTANDBOX
									  (fetch (BrowserRec PRINTED)
									     of BROWSERMAPITEM)
									  WINDOW 30 10))
		(COND
		  ((fetch (BrowserRec SELECTED?) of BROWSERMAPITEM)
		    (FMARKFOLDERSELECTED BROWSERMAPITEM WINDOW)))
		(COND
		  ((fetch (BrowserRec DELETED?) of BROWSERMAPITEM)
		    (FCHANGEFOLDERMARK BROWSERMAPITEM WINDOW)))
	     repeatwhile (ILESSP BOTTOM YPOS])

(FBROWSERPRINTANDBOX
  [LAMBDA (EXP STREAM LFTMARGIN MINSPACE)                    (* rmk: "26-AUG-83 17:56")
    (DECLARE (GLOBALVARS PLVLFILEFLG))                       (* prints EXP on WINDOW starting at LFTMARGIN and 
							     returns the box taken by the characters.
							     Leaves at least MINSPACE points.)
                                                             (* set the left margin so that at least nothing will CR 
							     past it. This does not handle multiple line values.)
    (PROG ((STRM (\OUTSTREAMARG STREAM))
	   PREVRM PREVLM YSTART YEND HGHT)
          (DSPFONT DEFAULTBROWSERFONT STRM)
          (SETQ PREVRM (DSPRIGHTMARGIN 50000 STRM))          (* so that it won't auto carrage return.)
          (SETQ PREVLM (DSPLEFTMARGIN LFTMARGIN STRM))
          (AND (FIXP MINSPACE)
	       (RELMOVETO MINSPACE 0 STRM))
          (COND
	    ((IGREATERP (DSPXPOSITION NIL STRM)
			LFTMARGIN)
	      (TERPRI STRM)))
          (DSPXPOSITION LFTMARGIN STRM)
          (SETQ YSTART (DSPYPOSITION NIL STRM))
          (RETURN (PROG1 [create REGION
				 LEFT ← LFTMARGIN
				 BOTTOM ←[PROGN (RESETLST (RESETSAVE (PRINTLEVEL INSPECTPRINTLEVEL))
							  (RESETSAVE PLVLFILEFLG T)
							  (PRIN1 EXP STRM))
						(IDIFFERENCE (SETQ YEND (DSPYPOSITION NIL STRM))
							     (FONTPROP STRM (QUOTE DESCENT]
				 HEIGHT ←(IPLUS (SETQ HGHT (IDIFFERENCE YSTART YEND))
						(FONTPROP STRM (QUOTE HEIGHT)))
				 WIDTH ←(COND
				   ((IGREATERP HGHT 0)       (* printing the thing did an overflow;
							     use at least the width of the window.)
				     (IMAX (IDIFFERENCE (DSPXPOSITION NIL STRM)
							LFTMARGIN)
					   (IDIFFERENCE (fetch (REGION WIDTH)
							   of (DSPCLIPPINGREGION NIL STRM))
							LFTMARGIN)))
				   (T (IDIFFERENCE (DSPXPOSITION NIL STRM)
						   LFTMARGIN]
			 (DSPRIGHTMARGIN PREVRM STRM)
			 (DSPLEFTMARGIN PREVLM STRM])

(FDELCOMMAND
  [LAMBDA (FILEENTRY WINDOW)                                 (* SDG "23-JUL-83 08:18")
    (COND
      ((NOT (fetch (BrowserRec DELETED?) of FILEENTRY))
	(FCHANGEFOLDERMARK FILEENTRY WINDOW)
	(replace (BrowserRec DELETED?) of FILEENTRY with T])

(FDIRECTORY
  [LAMBDA (SPEC)                                             (* SDG " 5-AUG-83 11:32")
    (RESETLST (RESETSAVE NIL (LIST (QUOTE CURSOR)
				   T))
	      (CURSOR WAITINGCURSOR)
	      (COND
		((if (OR (STRPOS "{DSK" SPEC 1 NIL T))
		     then (SORT (FILDIR SPEC))
		   else (FILDIR SPEC)))
		(T (PROMPTPRINT (CONCAT "No files in group " SPEC))
		   NIL])

(FEDITLISPFILE
  [LAMBDA (FILE WINDOW)                                      (* sg: " 3-AUG-83 16:08")
    (SETQ WINDOW (OR (WINDOWPROP WINDOW (QUOTE BROWSERINFOW))
		     (FOPENINFOW WINDOW)))
    (RESETLST (RESETSAVE NIL (LIST (QUOTE CLOSEW)
				   WINDOW))
	      (TTYDISPLAYSTREAM WINDOW)
	      (WINDOWPROP WINDOW (QUOTE TITLE)
			  (CONCAT "Edit COMS for file " FILE))
	      (CLEARW WINDOW)
	      (GIVE.TTY.PROCESS WINDOW)
	      [COND
		((NEQ (CDAR (GETPROP (ROOTFILENAME FILE)
				     (QUOTE FILEDATES)))
		      (U-CASE FILE))
		  (printout T "The file " .FONT BOLDFONT FILE .FONT DEFAULTFONT 
			    "is either not loaded or is not the currently loaded version:"
			    T T)
		  (printout T "LOADFROM[" FILE "]" T)
		  (LISPX (LIST (QUOTE LOADFROM)
			       (KWOTE FILE]
	      (APPLY* (QUOTE DV)
		      (PACK (LIST (FILENAMEFIELD FILE (QUOTE NAME))
				  (QUOTE COMS])

(FEXPNGFILECOMMAND
  [LAMBDA (WINDOW)                                           (* SDG "23-JUL-83 08:53")
    [for FILEENTRY in (WINDOWPROP WINDOW (QUOTE BROWSERITEMMAP)) do (if (fetch (BrowserRec DELETED?)
									   of FILEENTRY)
									then (DELFILE (FGETFILENAME
											FILEENTRY]
    (CLEARW WINDOW)
    (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS)
		NIL)
    (FUPDATEBROWSERITEMS (FDIRECTORY (WINDOWPROP WINDOW (QUOTE ITEMSPEC)))
			 (QUOTE FSHORTFILENAME)
			 WINDOW])

(FGETFILENAME
  [LAMBDA (ENTRY)                                            (* SDG " 8-APR-83 14:05")
    (fetch (BrowserRec USERDATA)
	   ENTRY])

(FHARDCPYCOMMAND
  [LAMBDA (FILEENTRY KEY WINDOW)                             (* SDG " 3-AUG-83 10:26")
    (PROG ((FILE (FGETFILENAME FILEENTRY)))
          (SETQ WINDOW (OR (WINDOWPROP WINDOW (QUOTE BROWSERINFOW))
			   (FOPENINFOW WINDOW)))
          (WINDOWPROP WINDOW (QUOTE TITLE)
		      (CONCAT "Hardcopy of file " FILE))
          (RESETLST (RESETSAVE NIL (LIST (QUOTE CLOSEW)
					 WINDOW))
		    (CLEARW WINDOW)
		    (TTYDISPLAYSTREAM WINDOW)
		    (GIVE.TTY.PROCESS WINDOW)
		    (printout T "Printing file " FILE T T)
		    [if (FILEDATE FILE)
			then (APPLY* (QUOTE LISTFILES)
				     FILE)
		      else (LISPX (LIST (QUOTE EMPRESS)
					(KWOTE FILE]
		    (DISMISS 5000])

(FLOADFILECOMMAND
  [LAMBDA (FILEENTRY KEY WINDOW)                             (* SDG " 3-AUG-83 08:35")
    (PROG [(FILE (FGETFILENAME FILEENTRY))
	   (LOADOP (if (EQ KEY (QUOTE MIDDLE))
		       then [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"]
		     else (QUOTE LOAD]
          (if (NULL LOADOP)
	      then (RETURN))
          (if (FILEDATE FILE)
	      then (SETQ WINDOW (OR (WINDOWPROP WINDOW (QUOTE BROWSERINFOW))
				    (FOPENINFOW WINDOW)))
		   (RESETLST (RESETSAVE NIL (LIST (QUOTE CLOSEW)
						  WINDOW))
			     (WINDOWPROP WINDOW (QUOTE TITLE)
					 (CONCAT LOADOP " on file " FILE))
			     (CLEARW WINDOW)
			     (TTYDISPLAYSTREAM WINDOW)
			     (GIVE.TTY.PROCESS WINDOW)
			     (LISPX (LIST LOADOP (KWOTE FILE)))
			     (DISMISS 5000))
	    else (PROMPTPRINT (CONCAT "Can't load " FILE])

(FNEWPTRNCOMMAND
  [LAMBDA (WINDOW)                         (* SDG "28-JUL-83 20:04")
    (PROG (ITEMLIST DIRSTART)
          (CLRPROMPT)
          (PROMPTPRINT 
              "New File Group Description?
  (Enter NIL to ABORT) ")
          [SETQ ITEMLIST
            (CAR (FPROMPTEDIT (if [ATOM (SETQ ITEMLIST
                                          (WINDOWPROP WINDOW
                                                      (QUOTE ITEMSPEC]
                                  then ITEMLIST
                                else "")
                              PROMPTWINDOW
                              (QUOTE PRIN2]
          (if (NULL ITEMLIST)
              then (RETURN))
          (WINDOWPROP WINDOW (QUOTE TITLE)
                      (CONCAT "Files in group: " ITEMLIST))
          (SETQ ITEMLIST (\ADD.CONNECTED.DIR ITEMLIST))
          (SETQ DIRSTART (LISTGET (UNPACKFILENAME ITEMLIST)
                                  (QUOTE DIRECTORY)))
          (WINDOWPROP WINDOW (QUOTE DIRSTART)
                      (if DIRSTART
                          then (PLUS (NCHARS DIRSTART)
                                     2)
                        else 1))
          (WINDOWPROP WINDOW (QUOTE ITEMSPEC)
                      ITEMLIST)
          (WINDOWPROP WINDOW (QUOTE TITLE)
                      (if (ATOM ITEMLIST)
                          then (CONCAT "Files in group: " ITEMLIST)
                        else "File Browser"))
          (RETURN T])

(FOPENINFOW
  [LAMBDA (WINDOW)                                           (* SDG "29-JUL-83 09:37")
    (PROG (FILEBROWSERINFOW)
          (SETQ FILEBROWSERINFOW
	    (CREATEW (create REGION
			     BOTTOM ← 0
			     LEFT ← 0
			     WIDTH ← 500
			     HEIGHT ← 200)
		     "File Properties")
	    (WINDOWPROP WINDOW (QUOTE BROWSERINFOW)
			FILEBROWSERINFOW))
          (WINDOWPROP FILEBROWSERINFOW (QUOTE SCROLLFN)
		      (QUOTE SCROLLBYREPAINTFN))
          [WINDOWPROP FILEBROWSERINFOW (QUOTE EXTENT)
		      (create REGION
			      LEFT ← 0
			      BOTTOM ←(IDIFFERENCE (DSPYPOSITION NIL FILEBROWSERINFOW)
						   (FONTPROP FILEBROWSERINFOW (QUOTE DESCENT)))
			      HEIGHT ←(IPLUS (FONTPROP FILEBROWSERINFOW (QUOTE HEIGHT))
					     (FONTPROP FILEBROWSERINFOW (QUOTE DESCENT]
          (RETURN FILEBROWSERINFOW])

(FRENAMEFILECOMMAND
  [LAMBDA (FILEENTRY)                                        (* SDG "23-JUL-83 10:53")
    (PROG (TOFILE)
          (CLRPROMPT)
          (SETQ FILEENTRY (FGETFILENAME FILEENTRY))
          (PROMPTPRINT (CONCAT "New name for " FILEENTRY "?
  (Enter NIL to ABORT  "))
          (SETQ TOFILE (CAR (PROCESS.READ PROMPTWINDOW)))
          (if (NULL TOFILE)
	      then (CLRPROMPT)
		   (RETURN))
          (SETQ TOFILE (\ADD.CONNECTED.DIR TOFILE))
          (RENAMEFILE FILEENTRY TOFILE)
          (CLRPROMPT)
          (PROMPTPRINT (CONCAT "file renamed " TOFILE))
          (RETURN TOFILE])

(FBROWSERIGHT
  [LAMBDA (WINDOW)                                           (* SDG " 7-APR-83 08:25")
    (COND
      ((IGREATERP (LASTMOUSEX WINDOW)
		  30)
	(DOWINDOWCOM WINDOW))
      (T (FBROWSESELECT WINDOW])

(FBROWSESELECT
  [LAMBDA (WINDOW)                                           (* lmm "26-Jan-84 14:33")
    (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 (FINDFOLDER WINDOW))
          (COND
	    ((NULL FOLDER)
	      (RETURN)))
          (COND
	    (SETSEL (for FOLDER# in (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS))
		       do (FMAKEFOLDERUNSELECTED (CAR (FNTH BROWSERITEMMAP FOLDER#))
						 WINDOW))
		    (FMAKEFOLDERSELECTED FOLDER WINDOW))
	    [ADDSEL (COND
		      ((fetch (BrowserRec SELECTED?) of FOLDER)
			(FMAKEFOLDERUNSELECTED FOLDER WINDOW))
		      (T (FMAKEFOLDERSELECTED 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 (BrowserRec #) 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 (FMAKEFOLDERSELECTED (CAR (NTH BROWSERITEMMAP 
										      I))
									    WINDOW])

(FDOEDITCOMMAND
  [LAMBDA (FILEENTRY KEY WINDOW)                             (* SDG " 2-AUG-83 09:14")
    (PROG ((FILE (FGETFILENAME FILEENTRY)))
          (if (EQ KEY (QUOTE MIDDLE))
	      then (SELECTQ [MENU (OR FEDITOPS (SETQ FEDITOPS (create MENU
								      MENUFONT ← DEFAULTBROWSERFONT
								      ITEMS ←(QUOTE
									((TEDIT (QUOTE TEDIT)
										
								  "Calls TEDIT on selected files")
									  (DEDIT (QUOTE DEDIT)
										 
								  "Calls DEDIT on selected files"]
			    (TEDIT (TEDIT FILE))
			    [DEDIT (if (FILEDATE FILE)
				       then (FEDITLISPFILE WINDOW FILE)
				     else (PROMPTPRINT (CONCAT FILE "is not a LISP file..Can't DEDIT"]
			    (RETURN))
	    else (if (FILEDATE FILE)
		     then (FEDITLISPFILE FILE WINDOW)
		   else (TEDIT FILE])

(FDOFILEBROWSERCOMMAND
  [LAMBDA (ITEM MENU KEY)                                    (* edited: "12-Jan-84 16:44")
    (PROG (WINDOW FBUPDATE? FILELIST PREFIX)
          (COND
	    (FILEBROWSERBUSY (PROMPTPRINT "Only one command at a time may be executed")
			     (RETURN)))
          (SETQ WINDOW (WINDOWPROP (WFROMMENU MENU)
				   (QUOTE MAINWINDOW)))
          (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 (PROMPTPRINT "No Files are selected")
		     (RETURN)))
          (RESETLST (RESETSAVE NIL (LIST (QUOTE SHADEITEM)
					 ITEM MENU FBITEMUNSELECTEDSHADE))
		    (RESETSAVE FILEBROWSERBUSY T)
		    (SHADEITEM ITEM MENU FBITEMSELECTEDSHADE)
		    (SELECTQ (CADR ITEM)
			     (Edit (for FILEENTRY in FILELIST do (FDOEDITCOMMAND FILEENTRY KEY WINDOW)
					))
			     (See (for FILEENTRY in FILELIST do (FDOSEECOMMAND FILEENTRY KEY)))
			     (Update (SETQ FBUPDATE? (FUPDATECOMMAND KEY WINDOW)))
			     (Delete (for FILEENTRY in FILELIST do (FDELCOMMAND FILEENTRY WINDOW)))
			     (Info (FPRINTFILEINFO WINDOW FILELIST))
			     (Undelete (for FILEENTRY in FILELIST do (FUNDELCOMMAND FILEENTRY WINDOW))
				       )
			     (Expunge (SETQ FBUPDATE? (FEXPNGFILECOMMAND WINDOW)))
			     (Copy [COND
				     ((IGREATERP (LENGTH FILELIST)
						 1)
				       (PROMPTPRINT 
				  "Enter a default destination directory: (NIL for no default)
 ")
				       (SETQ PREFIX (CAR (FPROMPTEDIT (DIRECTORYNAME T T)
								      PROMPTWINDOW
								      (QUOTE PRIN2]
				   (for FILEENTRY in FILELIST do (FCOPYFILECOMMAND PREFIX FILEENTRY)))
			     (Load (for FILEENTRY in FILELIST do (FLOADFILECOMMAND FILEENTRY KEY 
										   WINDOW)))
			     (Compile (for FILEENTRY in FILELIST do (FCOMPLFILECOMMAND FILEENTRY KEY 
										       WINDOW)))
			     (Hardcopy (for FILEENTRY in FILELIST do (FHARDCPYCOMMAND FILEENTRY KEY 
										      WINDOW)))
			     (Rename (for FILEENTRY in FILELIST do (SETQ FBUPDATE? T)
					when (FRENAMEFILECOMMAND FILEENTRY)))
			     (SHOULDNT))
		    (COND
		      (FBUPDATE? (FUPDATEBROWSERITEMS (FDIRECTORY (WINDOWPROP WINDOW (QUOTE ITEMSPEC))
								  )
						      (QUOTE FSHORTFILENAME)
						      WINDOW])

(FDOSEECOMMAND
  [LAMBDA (FILEENTRY KEY)                                    (* SDG "29-JUL-83 10:37")
    (PROG ((FILE (FGETFILENAME FILEENTRY))
	   WINDOW)
          (if (AND (NULL (FILENAMEFIELD FILE (QUOTE NAME)))
		   (DIRECTORYNAMEP FILE))
	      then (FILEBROWSER (PACKFILENAME (QUOTE NAME)
					      (QUOTE *)
					      (QUOTE VERSION)
					      NIL
					      (QUOTE BODY)
					      FILE))
	    else (SETQ WINDOW (CREATEW NIL (CONCAT "Listing of file " FILE)))
		 (TTYDISPLAYSTREAM WINDOW)
		 (GIVE.TTY.PROCESS WINDOW)
		 (LISPX (LIST (QUOTE SEE)
			      FILE])

(FILEBROWSER
  [LAMBDA (ITEMLIST BROWSERWINDOW)                           (* lmm "26-Jan-84 14:37")
    (PROG (MENU DIRSTART FILEBROWSERINFOW REGION)
          (COND
	    ((NULL ITEMLIST)
	      (RETURN)))
          [SETQ ITEMLIST (COND
	      [(LISTP ITEMLIST)
		(REMOVE NIL (for FILE in ITEMLIST collect (CDAR (GETP (ROOTFILENAME FILE)
								      (QUOTE FILEDATES]
	      (T (\ADD.CONNECTED.DIR ITEMLIST]
          [SETQ MENU
	    (OR FBMENU
		(SETQ FBMENU
		  (create MENU
			  MENUFONT ← DEFAULTBROWSERFONT
			  ITEMS ← FBMENUITEMS
			  CENTERFLG ← T
			  MENUROWS ← 4
			  WHENSELECTEDFN ←(FUNCTION (LAMBDA (Item Menu Key)
			      (ADD.PROCESS (LIST (FUNCTION FDOFILEBROWSERCOMMAND)
						 (KWOTE Item)
						 (KWOTE Menu)
						 (KWOTE Key))
					   (QUOTE NAME)
					   (PACK (LIST (QUOTE FB-)
						       (CAR Item]
          (SETQ BROWSERWINDOW (CREATEMENUEDWINDOW MENU (COND
						    ((ATOM ITEMLIST)
						      (CONCAT "Files in group: " ITEMLIST))
						    (T "File Browser"))
						  (QUOTE TOP)
						  BROWSERWINDOW NIL DEFAULTBROWSERFONT))
          (WINDOWPROP BROWSERWINDOW (QUOTE SELECTBM)
		      (BITMAPCREATE (WINDOWPROP BROWSERWINDOW (QUOTE WIDTH))
				    (FONTHEIGHT BROWSERWINDOW)))
          (WINDOWPROP BROWSERWINDOW (QUOTE BROWSERFONT)
		      DEFAULTBROWSERFONT)
          (WINDOWPROP BROWSERWINDOW (QUOTE BUTTONEVENTFN)
		      (FUNCTION FBROWSEBUTTON))
          (WINDOWPROP BROWSERWINDOW (QUOTE RIGHTBUTTONFN)
		      (FUNCTION FBROWSERIGHT))
          (WINDOWPROP BROWSERWINDOW (QUOTE SCROLLFN)
		      (FUNCTION SCROLLBYREPAINTFN))
          (WINDOWPROP BROWSERWINDOW (QUOTE REPAINTFN)
		      (FUNCTION FBROWSEREPAINTFN))
          (WINDOWPROP BROWSERWINDOW (QUOTE CURSORMOVEDFN)
		      (FUNCTION FBROWSEMOVEDFN))
          (WINDOWPROP BROWSERWINDOW (QUOTE CURSOROUTFN)
		      (FUNCTION FBROWSEOUTFN))
          [WINDOWADDPROP BROWSERWINDOW (QUOTE RESHAPEFN)
			 (FUNCTION (LAMBDA (W)
			     (REDISPLAYW W]
          (WINDOWPROP BROWSERWINDOW (QUOTE BROWSERINFOW)
		      (SETQ FILEBROWSERINFOW
			(CREATEW (PROGN (SETQ REGION (WINDOWPROP BROWSERWINDOW (QUOTE REGION)))
					(SETQ REGION (create REGION
							     BOTTOM ←(IABS (IDIFFERENCE (fetch BOTTOM
											   of REGION)
											250))
							     LEFT ←(IABS (IDIFFERENCE (fetch LEFT
											 of REGION)
										      150))
							     WIDTH ← 500
							     HEIGHT ← 200)))
				 "File Properties" NIL T)))
          (COND
	    ((OR (ILESSP (fetch BOTTOM of REGION)
			 0)
		 (ILESSP (fetch LEFT of REGION)
			 0))                                 (* Info window is off the edge of the screen;
							     let the user move it someplace else.)
	      (MOVEW FILEBROWSERINFOW)))
          [WINDOWADDPROP BROWSERWINDOW (QUOTE CLOSEFN)
			 (FUNCTION (LAMBDA (W)
			     (CLOSEW (WINDOWPROP W (QUOTE BROWSERINFOW]
          [WINDOWADDPROP BROWSERWINDOW (QUOTE OPENFN)
			 (FUNCTION (LAMBDA (W)
			     (OPENW (WINDOWPROP W (QUOTE BROWSERINFOW]
          (WINDOWPROP BROWSERWINDOW (QUOTE ITEMSPEC)
		      ITEMLIST)
          (COND
	    ((NLISTP ITEMLIST)
	      (SETQ DIRSTART (LISTGET (UNPACKFILENAME ITEMLIST)
				      (QUOTE DIRECTORY)))
	      (WINDOWPROP BROWSERWINDOW (QUOTE DIRSTART)
			  (COND
			    (DIRSTART (PLUS (NCHARS DIRSTART)
					    2))
			    (T 1)))
	      (FUPDATEBROWSERITEMS (FDIRECTORY ITEMLIST)
				   (FUNCTION FSHORTFILENAME)
				   BROWSERWINDOW))
	    (T (WINDOWPROP BROWSERWINDOW (QUOTE DIRSTART)
			   1)
	       (FUPDATEBROWSERITEMS (SORT ITEMLIST)
				    (FUNCTION EVQ)
				    BROWSERWINDOW)))
          (RETURN BROWSERWINDOW])

(FINDFOLDER
  [LAMBDA (WINDOW)                                           (* SDG "22-JUL-83 12:36")
    (for FOLDER in (WINDOWPROP WINDOW (QUOTE BROWSERITEMMAP))
       bind [YPOS ←(IPLUS (LASTMOUSEY WINDOW)
			  (FONTPROP WINDOW (QUOTE DESCENT]
       thereis (IGREATERP YPOS (fetch BOTTOM of (fetch (BrowserRec ITEMREGION) of FOLDER])

(FMAKEFOLDERSELECTED
  [LAMBDA (FOLDER WINDOW)                                    (* SDG " 7-APR-83 08:48")
    (COND
      (FOLDER (replace (BrowserRec SELECTED?) of FOLDER with T)
	      (WINDOWADDPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS)
			     (fetch (BrowserRec #) of FOLDER))
	      [WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS)
			  (SORT (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS]
	      (FMARKFOLDERSELECTED FOLDER WINDOW])

(FMAKEFOLDERUNSELECTED
  [LAMBDA (MSG WINDOW)                                       (* SDG " 7-APR-83 08:48")
    (COND
      (MSG (replace (BrowserRec SELECTED?) of MSG with NIL)
	   [WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS)
		       (REMOVE (fetch (BrowserRec #) of MSG)
			       (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS]
	   (FMARKFOLDERUNSELECTED MSG WINDOW])

(FMAKESEEWINDOW
  [LAMBDA (FILE)                                             (* SDG "29-JUL-83 10:04")
    (PROG (WINDOW (COREFILE (QUOTE {CORE}SEEFILE)))
          (SETQ WINDOW (CREATEW NIL (CONCAT "Listing of file " FILE)))
          (WINDOWPROP WINDOW (QUOTE REPAINTFN)
		      (FUNCTION FSEEREPAINTFN))
          (WINDOWPROP WINDOW (QUOTE RESHAPEFN)
		      (FUNCTION FSEERESHAPEFN))
          (WINDOWPROP WINDOW (QUOTE SCROLLFN)
		      (FUNCTION SCROLLBYREPAINTFN))
          (COPYALLBYTES FILE COREFILE)
          (WINDOWPROP WINDOW (QUOTE FILE)
		      COREFILE)
          (RETURN WINDOW])

(FCHANGEFOLDERMARK
  [LAMBDA (FOLDER WINDOW)                                    (* SDG "22-JUL-83 14:29")
    (PROG ((FOLDERREGION (fetch ITEMREGION of FOLDER)))
          (BITBLT NIL 0 0 WINDOW (fetch LEFT of FOLDERREGION)
		  (IPLUS (fetch BOTTOM of FOLDERREGION)
			 (IQUOTIENT (FONTPROP WINDOW (QUOTE ASCENT))
				    2)
			 2)
		  (fetch WIDTH of FOLDERREGION)
		  2
		  (QUOTE TEXTURE)
		  (QUOTE INVERT)
		  BLACKSHADE])

(FCHANGESELMARK
  [LAMBDA (FOLDER WINDOW)                                    (* SDG "22-JUL-83 13:25")
    (PROG ((FOLDERREGION (fetch ITEMREGION of FOLDER)))
          (BITBLT NIL 0 0 WINDOW (fetch LEFT of FOLDERREGION)
		  (fetch BOTTOM of FOLDERREGION)
		  (fetch WIDTH of FOLDERREGION)
		  2
		  (QUOTE TEXTURE)
		  (QUOTE INVERT)
		  GRAYSHADE])

(FCOMPLFILECOMMAND
  [LAMBDA (FILEENTRY KEY WINDOW)                             (* SDG "29-JUL-83 09:29")
    (PROG [(FILE (FGETFILENAME FILEENTRY))
	   (COMPILEOP (if (EQ KEY (QUOTE MIDDLE))
			  then [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"]
			else (QUOTE TCOMPL]
          (if (NULL COMPILEOP)
	      then (RETURN))
          (if (FILEDATE FILE)
	      then (SETQ WINDOW (OR (WINDOWPROP WINDOW (QUOTE BROWSERINFOW))
				    (FOPENINFOW WINDOW)))
		   (RESETLST (RESETSAVE NIL (LIST (QUOTE CLOSEW)
						  WINDOW))
			     (WINDOWPROP WINDOW (QUOTE TITLE)
					 (CONCAT COMPILEOP " on file " FILE))
			     (CLEARW WINDOW)
			     (TTYDISPLAYSTREAM WINDOW)
			     (GIVE.TTY.PROCESS WINDOW)
			     (LISPX (LIST COMPILEOP (KWOTE FILE)))
			     (DISMISS 5000))
	    else (PROMPTPRINT (CONCAT "Can't Compile" FILE])

(FCOPYFILECOMMAND
  [LAMBDA (PREFIX FILEENTRY)                                 (* edited: "12-Jan-84 16:34")
    (PROG (TOFILE)
          (SETQ FILEENTRY (FGETFILENAME FILEENTRY))
          [SETQ TOFILE (COND
	      ((NULL PREFIX)
		(CLRPROMPT)
		(PROMPTPRINT (CONCAT "Copy file " FILEENTRY " where?
  (ENTER NIL to ABORT)  "))
		(CAR (PROCESS.READ PROMPTWINDOW))
		(CLRPROMPT))
	      (T (PACKFILENAME (QUOTE DIRECTORY)
			       PREFIX
			       (QUOTE VERSION)
			       NIL
			       (QUOTE BODY)
			       FILEENTRY]
          (COND
	    ((NULL TOFILE)
	      (CLRPROMPT)
	      (RETURN)))
          (SETQ TOFILE (\ADD.CONNECTED.DIR TOFILE))
          (COPYFILE FILEENTRY TOFILE)
          (PROMPTPRINT (CONCAT FILEENTRY " copied to " TOFILE))
          (RETURN TOFILE])

(FMARKFOLDERSELECTED
  [LAMBDA (FOLDER WINDOW)                                    (* SDG " 9-MAR-83 15:26")
    (\ITEMW.SELECTITEM (LIST (fetch ITEMREGION of FOLDER))
		       WINDOW])

(FMARKFOLDERUNSELECTED
  [LAMBDA (FOLDER WINDOW)                                    (* SDG " 9-MAR-83 15:26")
    (\ITEMW.DESELECTITEM (LIST (fetch ITEMREGION of FOLDER))
			 WINDOW])

(FPRINTFILEINFO
  [LAMBDA (WINDOW FILELST)                                   (* SDG " 3-AUG-83 10:36")
    (PROG ((FILEBROWSERINFOW (WINDOWPROP WINDOW (QUOTE BROWSERINFOW)))
	   (DIRSTART (WINDOWPROP WINDOW (QUOTE DIRSTART)))
	   ITEMSPEC ATTRS)
          (COND
	    ((NULL FILELST)
	      (RETURN NIL))
	    ((NULL FILEBROWSERINFOW)
	      (FOPENINFOW WINDOW))
	    (T (WINDOWPROP FILEBROWSERINFOW (QUOTE TITLE)
			   "File Properties")
	       (CLEARW FILEBROWSERINFOW)))
          (SETQ ITEMSPEC (WINDOWPROP WINDOW (QUOTE ITEMSPEC)))
          (SETQ DIRSTART (if (ATOM ITEMSPEC)
			     then (SETQ DIRSTART (LISTGET (UNPACKFILENAME ITEMSPEC)
							  (QUOTE DIRECTORY)))
				  (if DIRSTART
				      then (PLUS (NCHARS DIRSTART)
						 2)
				    else 1)
			   else 1))
          (printout FILEBROWSERINFOW # (DSPFONT DEFAULTBROWSERFONT (OUTPUT))
		    "Name" # (DSPXPOSITION 148 FILEBROWSERINFOW)
		    "Size" # (DSPXPOSITION 235 FILEBROWSERINFOW)
		    "Created" # (DSPXPOSITION 375 FILEBROWSERINFOW)
		    "Last Written" T T)
          (for FILE in FILELST
	     do [SETQ ATTRS (OR (fetch (BrowserRec FILEINFO) of FILE)
				(replace (BrowserRec FILEINFO) of FILE
				   with (for ATTR in (QUOTE (LENGTH CREATIONDATE WRITEDATE))
					   collect (if (INFILEP (FGETFILENAME FILE))
						       then (GETFILEINFO (FGETFILENAME FILE)
									 ATTR)
						     else (GETFILEINFO (ROOTFILENAME (FGETFILENAME
										       FILE))
								       ATTR]
		(printout FILEBROWSERINFOW (FILENAMEFIELD (FGETFILENAME FILE)
							  (QUOTE NAME))
			  "."
			  (OR (FILENAMEFIELD (FGETFILENAME FILE)
					     (QUOTE EXTENSION))
			      "")
			  ";"
			  (OR (FILENAMEFIELD (FGETFILENAME FILE)
					     (QUOTE VERSION))
			      "")
			  #
			  (DSPXPOSITION 140 FILEBROWSERINFOW)
			  " "
			  (CAR ATTRS)
			  #
			  (DSPXPOSITION 208 FILEBROWSERINFOW)
			  (CADR ATTRS)
			  #
			  (DSPXPOSITION 358 FILEBROWSERINFOW)
			  (CADDR ATTRS)
			  T])

(FPROMPTEDIT
  [LAMBDA (EXPRS WINDOW PRINTFN)           (* SDG "28-JUL-83 20:19")
    (OR PRINTFN (SETQ PRINTFN TTYINPRINTFN))
    (RESETLST (RESETSAVE (CURSOR DEFAULTCURSOR))
              (TTYDISPLAYSTREAM WINDOW)
              (GIVE.TTY.PROCESS WINDOW)    (* Make sure we have something to point
                                           with)
              (TTYIN TTYINEDITPROMPT NIL NIL (QUOTE LISPXREAD)
                     NIL NIL EXPRS EDITRDTBL])

(FSEEREPAINTFN
  [LAMBDA (WINDOW REGION)                                    (* SDG "29-JUL-83 10:26")
    (PROG [(FILE (OPENFILE (WINDOWPROP WINDOW (QUOTE FILE))
			   (QUOTE INPUT]
          (MOVETO (WINDOWPROP WINDOW (QUOTE XORIG))
		  (WINDOWPROP WINDOW (QUOTE YORIG))
		  WINDOW)
          (COPYBYTES FILE WINDOW)
          (CLOSEF FILE])

(FSEERESHAPEFN
  [LAMBDA (WINDOW)                                           (* SDG "29-JUL-83 10:06")
    (PROG (BTM)
          (DSPRESET WINDOW)
          (WINDOWPROP WINDOW (QUOTE XORIG)
		      (DSPXPOSITION NIL WINDOW))
          (WINDOWPROP WINDOW (QUOTE YORIG)
		      (DSPYPOSITION NIL WINDOW))
          (FSEEREPAINTFN WINDOW)
          (WINDOWPROP WINDOW (QUOTE EXTENT)
		      (create REGION
			      LEFT ← 0
			      BOTTOM ←[SETQ BTM (IPLUS (DSPYPOSITION NIL WINDOW)
						       (FONTPROP WINDOW (QUOTE ASCENT]
			      WIDTH ←(WINDOWPROP WINDOW (QUOTE WIDTH))
			      HEIGHT ←(IDIFFERENCE (WINDOWPROP WINDOW (QUOTE HEIGHT))
						   BTM])

(FSHORTFILENAME
  [LAMBDA (FILE DIRSTART)                                    (* SDG " 3-AUG-83 10:39")
    (PROG (DIRPART)
          (SETQ FILE (UNPACKFILENAME FILE))
          (SETQ DIRPART (LISTGET FILE (QUOTE DIRECTORY)))
          [if DIRPART
	      then (SETQ DIRPART (SUBSTRING DIRPART DIRSTART (NCHARS DIRPART]
          (RETURN (if DIRPART
		      then (PACKFILENAME (QUOTE DIRECTORY)
					 DIRPART
					 (QUOTE NAME)
					 (LISTGET FILE (QUOTE NAME))
					 (QUOTE EXTENSION)
					 (LISTGET FILE (QUOTE EXTENSION))
					 (QUOTE VERSION)
					 (LISTGET FILE (QUOTE VERSION)))
		    else (PACKFILENAME (QUOTE NAME)
				       (LISTGET FILE (QUOTE NAME))
				       (QUOTE EXTENSION)
				       (LISTGET FILE (QUOTE EXTENSION))
				       (QUOTE VERSION)
				       (LISTGET FILE (QUOTE VERSION])

(FPRINTHEADER
  [LAMBDA (ITEM ITEMMAP ITEMCOUNT WINDOW BROWSERFONT)        (* SDG " 7-APR-83 08:15")
    (DECLARE (SPECVARS MAXWIDTH))
    (printout WINDOW # (DSPFONT DEFAULTBROWSERFONT (OUTPUT))
	      3 .I4 ITEMCOUNT 8 # (DSPFONT BROWSERFONT (OUTPUT))
	      ITEM T)

          (* keep track of maximum width printed to. If header is allowed to print on two lines, MAXWIDTH was set to right 
	  margin by MAKEBROWSERWINDOW so this should not reset it.)


    (COND
      ((fetch (BrowserRec SELECTED?) of ITEMMAP)
	(FMARKFOLDERSELECTED ITEMMAP WINDOW)))
    (COND
      ((fetch (BrowserRec DELETED?) of ITEMMAP)
	(FCHANGEFOLDERMARK ITEMMAP WINDOW)))
    (COND
      ((ILESSP MAXWIDTH (DSPXPOSITION NIL WINDOW))
	(SETQ MAXWIDTH (DSPXPOSITION NIL WINDOW])

(FUNDELCOMMAND
  [LAMBDA (FILEENTRY WINDOW)                                 (* SDG "23-JUL-83 08:21")
    (if (fetch (BrowserRec DELETED?) of FILEENTRY)
	then (FCHANGEFOLDERMARK FILEENTRY WINDOW)
	     (replace (BrowserRec DELETED?) of FILEENTRY with NIL])

(FUPDATEBROWSERITEMS
  [LAMBDA (ITEMLIST ITEMPRINTFN WINDOW)                      (* lmm "26-Jan-84 14:37")
    (PROG [MAXWIDTH DIRSTART NEWBROWSERITEM BROWSERITEMMAP (BROWSERFONT (WINDOWPROP WINDOW
										    (QUOTE 
										      BROWSERFONT]
          (DECLARE (SPECVARS MAXWIDTH))
          (DSPRIGHTMARGIN 10000 WINDOW)
          (LINELENGTH 1000 WINDOW)                           (* printing headers to arbitrary width, MAXWIDTH is set 
							     by PRINTHEADER.)
          (SETQ MAXWIDTH (COND
	      [(WINDOWPROP WINDOW (QUOTE EXTENT))
		(fetch WIDTH of (WINDOWPROP WINDOW (QUOTE EXTENT]
	      (T 0)))
          (CLEARW WINDOW)
          (SETQ DIRSTART (WINDOWPROP WINDOW (QUOTE DIRSTART)))
          (SETQ BROWSERITEMMAP (for ITEM in ITEMLIST as ITEMCOUNT from 1 bind PRINTED
				  collect (PROGN (SETQ NEWBROWSERITEM
						   (create BrowserRec
							   USERDATA ← ITEM
							   # ← ITEMCOUNT
							   ITEMREGION ←(FBROWSERPRINTANDBOX
							     (SETQ PRINTED (APPLY* ITEMPRINTFN ITEM 
										   DIRSTART))
							     WINDOW 30 10)
							   SELECTED? ← NIL
							   DELETED? ← NIL
							   FILEINFO ← NIL
							   PRINTED ← PRINTED))
						 NEWBROWSERITEM)))
          (WINDOWPROP WINDOW (QUOTE BROWSERSTATE)
		      (QUOTE SELECT))
          (WINDOWPROP WINDOW (QUOTE BROWSERITEMMAP)
		      BROWSERITEMMAP)
          [WINDOWPROP WINDOW (QUOTE EXTENT)
		      (create REGION
			      LEFT ← 0
			      BOTTOM ←(IDIFFERENCE (DSPYPOSITION NIL WINDOW)
						   (FONTPROP WINDOW (QUOTE DESCENT)))
			      WIDTH ← MAXWIDTH
			      HEIGHT ←(IPLUS (IDIFFERENCE (OR (fetch BOTTOM
								 of (fetch (BrowserRec ITEMREGION)
								       of (CAR BROWSERITEMMAP)))
							      (DSPYPOSITION NIL WINDOW))
							  (DSPYPOSITION NIL WINDOW))
					     (FONTPROP WINDOW (QUOTE HEIGHT))
					     (FONTPROP WINDOW (QUOTE DESCENT]
          (WINDOWPROP WINDOW (QUOTE CURRENTFOLDERNUMBERS)
		      NIL)
          (WINDOWPROP WINDOW (QUOTE CURRENTITEM)
		      NIL])

(FUPDATECOMMAND
  [LAMBDA (KEY WINDOW)                                       (* SDG "25-JUL-83 16:31")
    (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 (FNEWPTRNCOMMAND WINDOW))
	     NIL])
)
(DECLARE: EVAL@COMPILE DONTCOPY 
[DECLARE: EVAL@COMPILE 

(RECORD BrowserRec (USERDATA ITEMREGION # SELECTED? DELETED? FILEINFO PRINTED))
]

(DECLARE: EVAL@COMPILE 

(RPAQQ MarkXPos 10)

(CONSTANTS (MarkXPos 10))
)
)
(RPAQ RIGHTARROWCURSOR (CURSORCREATE (READBITMAP) 7 9))
(16 16
"@@@@"
"@@@@"
"@F@@"
"@GH@"
"@GN@"
"@GOH"
"OOON"
"OOOO"
"OOON"
"@GOH"
"@GN@"
"@GH@"
"@F@@"
"@@@@"
"@@@@"
"@@@@")
(ADDTOVAR LISPXMACROS [FB (FILEBROWSER (OR (CAAR LISPXLINE NIL)
					   (CAR LISPXLINE)
					   (PROGN (PROMPTPRINT 
						"Enter Specification Pattern 
  (NIL to ABORT)  ")
						  (CAR (PROCESS.READ PROMPTWINDOW])
(PUTPROPS FILEBROWSER COPYRIGHT ("Xerox Corporation" 1983 1984))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (3177 37345 (FBROWSEBUTTON 3187 . 3797) (FBROWSEMOVEDFN 3799 . 4044) (FBROWSEOUTFN 4046
 . 4186) (FBROWSEREPAINTFN 4188 . 5492) (FBROWSERPRINTANDBOX 5494 . 7422) (FDELCOMMAND 7424 . 7713) (
FDIRECTORY 7715 . 8102) (FEDITLISPFILE 8104 . 9007) (FEXPNGFILECOMMAND 9009 . 9542) (FGETFILENAME 9544
 . 9701) (FHARDCPYCOMMAND 9703 . 10423) (FLOADFILECOMMAND 10425 . 11554) (FNEWPTRNCOMMAND 11556 . 
13070) (FOPENINFOW 13072 . 13911) (FRENAMEFILECOMMAND 13913 . 14541) (FBROWSERIGHT 14543 . 14767) (
FBROWSESELECT 14769 . 16452) (FDOEDITCOMMAND 16454 . 17302) (FDOFILEBROWSERCOMMAND 17304 . 19840) (
FDOSEECOMMAND 19842 . 20444) (FILEBROWSER 20446 . 24101) (FINDFOLDER 24103 . 24478) (
FMAKEFOLDERSELECTED 24480 . 24951) (FMAKEFOLDERUNSELECTED 24953 . 25361) (FMAKESEEWINDOW 25363 . 25968
) (FCHANGEFOLDERMARK 25970 . 26437) (FCHANGESELMARK 26439 . 26829) (FCOMPLFILECOMMAND 26831 . 27950) (
FCOPYFILECOMMAND 27952 . 28739) (FMARKFOLDERSELECTED 28741 . 28941) (FMARKFOLDERUNSELECTED 28943 . 
29142) (FPRINTFILEINFO 29144 . 31211) (FPROMPTEDIT 31213 . 31686) (FSEEREPAINTFN 31688 . 32038) (
FSEERESHAPEFN 32040 . 32710) (FSHORTFILENAME 32712 . 33541) (FPRINTHEADER 33543 . 34346) (
FUNDELCOMMAND 34348 . 34644) (FUPDATEBROWSERITEMS 34646 . 36710) (FUPDATECOMMAND 36712 . 37343)))))
STOP