(FILECREATED "16-Sep-86 18:44:45" {PHYLUM}<LANNING>LISP>USERS>LOADMENUITEMS.;2 5816
changes to: (FNS LOADMENUITEMSCOMS)
(FILEPKGCOMS LOADMENUITEMS)
(VARS LOADMENUITEMSCOMS)
previous date: "16-Sep-86 18:16:44" {PHYLUM}<LANNING>LISP>USERS>LOADMENUITEMS.;1)
(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT LOADMENUITEMSCOMS)
(RPAQQ LOADMENUITEMSCOMS ((* * Defines a new FILEPKGCOM called LOADMENUITEMS that can be used to
add entries onto the background menu for easy loading of utility files)
(FNS AddLoadMenuItem LoadUtilityPackage LOADMENUITEMSCOMS)
(FILEPKGCOMS LOADMENUITEMS)))
(* * Defines a new FILEPKGCOM called LOADMENUITEMS that can be used to add entries onto the
background menu for easy loading of utility files)
(DEFINEQ
(AddLoadMenuItem
[LAMBDA (group fileDescr startUpForm) (* smL "15-Sep-86 10:22")
(* * Add a menu item to the background menu that will load the file{s} -
group is the submenu name for this file, default is Misc -
fileDescr is a list that can be passed to DOFILESLOAD to load the file{s} -
startUpForm is an optional form that will be evaluated after the LOAD, default will print a nice msg in the prompt
window)
(DECLARE (GLOBALVARS BackgroundMenu BackgroundMenuCommands))
(LET* [(group (OR group (QUOTE Misc)))
(fileDescr (MKLIST fileDescr))
[fileName (for x in fileDescr thereis (NOT (LISTP x]
[startUpForm (OR startUpForm (BQUOTE (PROMPTPRINT (QUOTE (\, fileName))
" loaded"]
[loadForm (BQUOTE (QUOTE (LISPXEVAL [QUOTE (LoadUtilityPackage
(QUOTE (\, fileDescr))
(QUOTE (\, startUpForm]
"<mouse event>←"]
(topLevelItem (OR (for item in BackgroundMenuCommands thereis (STREQUAL
(CAR item)
"Load utility"))
(LET [(topLevelItem (LIST "Load utility" NIL "Load a utility file"
(LIST (QUOTE SUBITEMS]
(/push BackgroundMenuCommands topLevelItem)
topLevelItem)))
(groupItem (OR (ASSOC group (CDAR (LAST topLevelItem)))
(LET [(groupList (LIST group NIL "Load a utility file"
(LIST (QUOTE SUBITEMS]
(/push (CDAR (LAST topLevelItem))
groupList)
[SORT (CDAR (LAST topLevelItem))
(FUNCTION (LAMBDA (x y)
(ALPHORDER (CAR x)
(CAR y]
groupList]
(/NCONC1 (CAR (LAST groupItem))
(LIST fileName loadForm (CONCAT "Load " fileName)))
[SORT (CDAR (LAST groupItem))
(FUNCTION (LAMBDA (x y)
(ALPHORDER (CAR x)
(CAR y]
(SETQ BackgroundMenu NIL)
(UNDOSAVE (BQUOTE (SETQ , BackgroundMenu NIL])
(LoadUtilityPackage
[LAMBDA (fileDescr startUpForm) (* smL "15-Sep-86 10:52")
(* * Load the package. See the function AddLoadMenuItem.)
(ALLOW.BUTTON.EVENTS)
(LET* ((myWindow (WFROMDS (TTYDISPLAYSTREAM)))
(windowOpen? (OPENWP myWindow))) (* Let the use know what is going on)
(printout NIL T "Loading " (for x in fileDescr thereis (NOT (LISTP x)))
T) (* Do the load)
(DOFILESLOAD fileDescr)
(EVAL startUpForm) (* Now remove the load menu item, if you can find it)
(LET [(topLevelItem (for item in BackgroundMenuCommands thereis (STREQUAL
(CAR item)
"Load utility"]
(for groupItem in (CDAR (LAST topLevelItem)) bind thisItem
eachtime [SETQ thisItem
(for item in (CDAR (LAST groupItem))
thereis (EQ fileDescr
(CADR (CADR (CADR (CADR
(CADR (CADR item]
when thisItem
do (DREMOVE thisItem (CAR (LAST groupItem)))
[if (NULL (CDAR (LAST groupItem)))
then (DREMOVE groupItem (CDAR (LAST topLevelItem]
(change BackgroundMenu NIL))) (* Close any TTY window that we may have opened)
(if (NOT windowOpen?)
then (CLOSEW myWindow])
(LOADMENUITEMSCOMS
[LAMBDA (GROUP X) (* smL "16-Sep-86 18:37")
(* * Expand the LOADMENUITEMS filepackage command)
(LIST (CONS (QUOTE P)
(for packageDescr in X
collect (if (LITATOM packageDescr)
then [BQUOTE (AddLoadMenuItem (QUOTE (\, GROUP))
(QUOTE (\, packageDescr]
elseif (EQLENGTH packageDescr 1)
then [BQUOTE (AddLoadMenuItem (QUOTE (\, GROUP))
(QUOTE
(\, (CAR packageDescr]
elseif (EQLENGTH packageDescr 2)
then [BQUOTE (AddLoadMenuItem (QUOTE (\, GROUP))
(QUOTE
(\, (CAR packageDescr)))
(QUOTE
(\, (CADR packageDescr]
else (ERROR "Utility description has too many arguments"
packageDescr])
)
(PUTDEF (QUOTE LOADMENUITEMS) (QUOTE FILEPKGCOMS) (QUOTE ((COM MACRO [(GROUP . X)
(COMS * (LOADMENUITEMSCOMS
(QUOTE GROUP)
(QUOTE X]
CONTENTS NILL))))
(PUTPROPS LOADMENUITEMS COPYRIGHT ("Xerox Corporation" 1986))
(DECLARE: DONTCOPY
(FILEMAP (NIL (831 5541 (AddLoadMenuItem 841 . 3018) (LoadUtilityPackage 3020 . 4588) (
LOADMENUITEMSCOMS 4590 . 5539)))))
STOP