(FILECREATED "15-Dec-85 13:04:43" {FLOPPY}FLAGBROWSER.;1 3974 previous date: "11-Oct-85 13:23:09" {DSK}<USERFILES>LISPUSERS>FLAGBROWSER.;6) (* Copyright (c) 1984, 1985 by Applied Expert Systems, Inc.. All rights reserved.) (PRETTYCOMPRINT FLAGBROWSERCOMS) (RPAQQ FLAGBROWSERCOMS ((* Browser for setting and unsetting flags.) (FNS MAKEFLAGBROWSER) (* * Internal functions.) (FNS FLAGBROWSERFN FLAGBROWSERMSG FLAGBROWSERSHADE) (INITVARS (FLAGBROWSERGRAYSHADE 32767)) (* Compiler) (LOCALVARS . T) (GLOBALVARS FLAGBROWSERGRAYSHADE))) (* Browser for setting and unsetting flags.) (DEFINEQ (MAKEFLAGBROWSER [LAMBDA (FLAGLST MENUPROPS POSITION) (* M.Model "22-Aug-84 16:24") (* Create a Flag Browser using flags on FLAGLST. - MENUPROPS is a proplist of menu properties. - For elements of FLAGLST that are themselves lists, the CAR is the FLAG and the CDR is a list of allowable values other than NIL and T, or, if the CDR is an atom, a function to call with CAR as its argument. - Flags that are unbound will be initialized to NIL.) (LET [(FLAGMENU (create MENU ITEMS ← FLAGLST WHENSELECTEDFN ←(QUOTE FLAGBROWSERFN) WHENHELDFN ←(QUOTE FLAGBROWSERMSG] (for PROP on MENUPROPS by (CDDR PROP) bind (MENUDECL ←(RECLOOK (QUOTE MENU))) do (RECORDACCESS (CAR PROP) FLAGMENU MENUDECL (QUOTE REPLACE) (CADR PROP))) [COND ((EQ T POSITION) (PROMPTPRINT "Indicate where the menu should go.") (SETQ POSITION (GETBOXPOSITION FLAGMENU:IMAGEWIDTH FLAGMENU:IMAGEHEIGHT] (ADDMENU FLAGMENU NIL POSITION) (for ITEM in FLAGLST bind FLAG eachtime (SETQ FLAG (COND ((LISTP ITEM) (CAR ITEM)) (ITEM))) do (OR (BOUNDP FLAG) (SET FLAG)) (FLAGBROWSERSHADE ITEM FLAGMENU)) FLAGMENU]) ) (* * Internal functions.) (DEFINEQ (FLAGBROWSERFN [LAMBDA (ITEM MENU KEY) (* M.Model "22-Aug-84 16:51") (LET [(FLAG (COND ((LISTP ITEM) (CAR ITEM)) (ITEM] [SELECTQ KEY [MIDDLE (COND [(LISTP ITEM) (SET FLAG (COND [(LISTP (CDR ITEM)) (MENU (create MENU ITEMS ←(APPEND (QUOTE (NIL T)) (CDR ITEM] (T (APPLY* (CDR ITEM) (CAR ITEM] (T (SET FLAG (MKATOM (PROMPTFORWORD "New value for flag: " NIL NIL PROMPTWINDOW] (SET FLAG (NOT (EVALV FLAG] (FLAGBROWSERSHADE ITEM MENU]) (FLAGBROWSERMSG [LAMBDA (ITEM MENU KEY) (* M.Model "17-MAY-84 18:34") (PROMPTPRINT (COND ((AND (EQ KEY (QUOTE MIDDLE)) (LISTP ITEM)) "Puts up a menu of allowable values and sets the flag to the selected one.") ((EQ KEY (QUOTE MIDDLE)) "Prompts for a new value for the flag.") (T "Inverts the selected flag."]) (FLAGBROWSERSHADE [LAMBDA (ITEM MENU) (* M.Model "17-MAY-84 11:55") (* Shade a flag in a flagbrowser according to its value: WHITE = NIL, BLACK = T, and the value of FLAGBROWSERGRAYSHADE is used for anything else.) (SHADEITEM ITEM MENU (SELECTQ (EVALV (COND ((LISTP ITEM) (CAR ITEM)) (ITEM))) (T BLACKSHADE) (NIL WHITESHADE) FLAGBROWSERGRAYSHADE]) ) (RPAQ? FLAGBROWSERGRAYSHADE 32767) (* Compiler) (DECLARE: DOEVAL@COMPILE DONTCOPY (LOCALVARS . T) ) (DECLARE: DOEVAL@COMPILE DONTCOPY (GLOBALVARS FLAGBROWSERGRAYSHADE) ) (PUTPROPS FLAGBROWSER COPYRIGHT ("Applied Expert Systems, Inc." 1984 1985)) (DECLARE: DONTCOPY (FILEMAP (NIL (628 2032 (MAKEFLAGBROWSER 638 . 2030)) (2065 3691 (FLAGBROWSERFN 2075 . 2769) ( FLAGBROWSERMSG 2771 . 3194) (FLAGBROWSERSHADE 3196 . 3689))))) STOP