WINDOW REFERENCE MANUAL 6.3.2 "Selection with TERM and SYSTEM Keys" ==> "Selection with TERM and SYSTEM Keys and System Menu" w:alias-for-inferiors-mixin ==> insert "and System Menu" after "SYSTEM keys" w:previously-selected-windows ==> insert "and System Menu" after "SYSTEM keys" 6.6 "through the SYSTEM key." ==> "through the SYSTEM key or System Menu." 6.6.3 "This code enables the Profile utility to be selected from a listing in the System Menu." ==> This statement is a little misleading: it does not put Profile on the System Menu. It may be necessary to make the mechanism work, however this code alone does not allow someone to select Profile from the System Menu (Profile wouldn't even be on the Menu). ==> In any case, it will need to say "the System Menu or System- keys". 8.7.3 w:*system-keys* ... ==> w:*system-keys* Variable The variable ~~~ SYSTEM key. The items in this list are systems and the action to be performed is found in the system's defsystem. This variable should never be altered directly. It can be changed interactively through the tv:*system-access-specs* Important Variable in Profile (see Tools and Utilites Manual, 2.8) or via the function W:MODIFY- SYSTEM-ACCESS-SPEC (see 18.6). 15.1 ¶4 and ¶6 "SYSTEM keys" ==> "SYSTEM keys and System Menu" 15.3.1 ?Should we add a bullet giving the possibility of going into Profile, bringing up the System Access Menu, Updating list of systems, and then loading software if available? 17 ?SAM will make a good example for General Scroll Windows. 18.4.1 w:lisp-listener ==> insert "or System-key" after "System menu" w:lisp-interactor ".. SYSTEM L keystroke sequence .." ==> ".. System Menu and System-keys .." w:listener-mixin ".. SYSTEM L keystroke sequence .." ==> ".. System Menu and System-keys .." 18.6 "The System Menu" ==> "The System Menu and SYSTEM keys" ". . . ." ==> "The System Menu and SYSTEM keys are your interface to the software systems on the Explorer. You can find an old instance of the system or create a new instance. In this way, you can jump back and forth between different running systems or create a new version of a system you're already running. You can define which systems are accessible from the System Menu, which from the SYSTEM keys, and which from both. The following functions control this interface. If you simply want to set the System Menu or SYSTEM keys up for your personal use, use the System Access Menu available through Profile (Tools and Utilites, 2.8). If you want to write a function that manipulates this facility, read on. w:*system-access-specs* Variable A list of systems, their print-names, their System Menu column assignments, and their System Key assignments. Each item is a list with the following format: (system-name print-name column key) system-name is the formal name of the system print-name is the string printed on the System Menu column is the column of the System Menu in which this system will appear key is the System-Key to access this system (NIL = none) DO NOT set this on your own. Use TV::SET-SYSTEM-ACCESS-SPECS. w:*system-menu-user-aids-column* Variable w:*system-menu-programs-column* Variable w:*system-menu-debug-tools-column* Variable These variables hold the menu lists for each column of the System Menu that contains systems. They should never be edited directly. They are maintained by the same functions that maintain w:*system-access-specs*. w:*system-menu-edit-windows-column* Variable This column of the System Menu is special in that it is not setup to hold various systems. It contains a set of window commands. w:*system-keys* Variable [use same definition as that used in 8.7.3] w:set-system-access-specs (NEW-VAL) Function This function sets TV:*SYSTEM-ACCESS-SPECS* to NEW-VAL and does the related chores of maintaining the System Menu and System-keys lists. BEWARE: this function assumes that every item in NEW-VAL is a legal access specification! w:add-system-access-spec (SYSTEM-NAME PRINT-NAME COLUMN KEY) Function Use W:MODIFY-SYSTEM-ACCESS-SPEC unless you are sure of what you're doing! Adds the system access spec (system-name print-name column key) to the variable W::*SYSTEM-ACCESS-SPECS*. This will make the system named SYSTEM-NAME accessible from COLUMN of the System Menu and from KEY. w:remove-system-access-spec (SYSTEM-NAME) Function Use W:MODIFY-SYSTEM-ACCESS-SPEC unless you are sure of what you're doing! If there, remove the spec for SYSTEM-NAME from W::*SYSTEM-ACCESS-SPECS* and remove it from the System Menu and System keys. Then return the spec removed. w:modify-system-access-spec (SYSTEM-NAME &REST OPTIONS) Function This is the programatic interface to the system access facility. If you want to add, change, or remove a system's access specification, use this function. If you want to totally reset W::*SYSTEM-ACCESS-SPECS* use W:SET-SYSTEM-ACCESS-SPECS. SYSTEM-NAME specifies the system whose access spec is being modified. What is done to it is specified by the options: :REMOVE -- take the system off the System Menu, off the system keys, and out of *SYSTEM-ACCESS-SPECS*. This option will override all others. (:ASSIGN-NAME name) -- change the system's print-name to name. (:ASSIGN-COLUMN column) -- change the System Menu column in which the system appears to column, one of :USER-AIDS, :PROGRAMS, :DEBUG-TOOLS, or :NONE. (:ASSIGN-KEY key) -- change the system's System-key to key. :ASSIGN-DEFAULTS -- Assign the system's default print-name, the system's default system menu column, and its default system key, if the key is not already taken. :DO-NOT-LOAD -- Do not load the system's DEFSYSTEM. If this option is used with the :ASSIGN-DEFAULTS option, then the defaults will only be assigned if the system's DEFSYSTEM has already been loaded. If no options are specified, this function simply makes sure that an access spec exists for SYSTEM-NAME. w:update-system-access-specs Function Update W::*SYSTEM-ACCESS-SPECS*. It finds all potentially accessible systems in the environment and in SYS:SITE (by looking in the contents file) and adds them to W::*SYSTEM-ACCESS-SPECS*. w:purge-system-access-specs (&OPTIONAL PURGE-WHEN) Function Used to clean-up the W::*SYSTEM-ACCESS-SPECS* variable. This function will remove all access specifications that satisfy PURGE-WHEN: :NOT-ACCESSIBLE the system is not assigned to the System Menu or a SYSTEM key. This is the default. :NOT-MADE the system has not been made. :NOT-LOADED the system's definition has not been loaded. :T all systems. w:*site-contents-pathname* Variable The pathname of the file containing the systems available on SYS:SITE;. w:read-site-contents Function Read contents file on SYS:SITE;. w:add-to-site-contents (SYSTEM-NAME) Function Add a system to contents file on SYS:SITE;. w:remove-from-site-contents (SYSTEM-NAME) Function Remove a system from contents file on SYS:SITE;. w:make-new-site-contents Function Clear contents file on SYS:SITE;. w:make-site-contents Function If no contents file on SYS:SITE; exists, create one. Appendix Obsolete Functions ADD-TO-SYSTEM-MENU-COLUMN DELETE-FROM-SYSTEM-MENU-COLUMN ADD-SYSTEM-KEY REMOVE-SYSTEM-KEY OTHER: Add descriptions of POP-UP-EDIT-STRING, READ-ANY-WHILE, READ-CHAR-WHILE? LISP REFERENCE MANUAL 23.2 * (:name name-string) -- The arg ... for use in the herald, the System Menu, and Help for the System-keys. * (:documentation doc-string) -- The argument to this option is a string explaining the use of this system. It is used as mouse-documentation for the System Menu and for Help for the System-keys. * (:default-menu-column column-name) -- The argument to this option is one of the following keywords: :USER-AIDS, :PROGRAMS, :DEBUG-TOOLS, or :NONE. It indicates the column of the System Menu in which this system should appear by default. * (:default-system-key char) -- The argument to this option is a character that indicates the System-key which will access this system by default. * (:type launch-type) -- The argument to this option is one of the following keywords: :FLAVOR, :WINDOW, or :EVAL. This argument tells the functions FIND-SYSTEM-INSTANCE and CREATE-SYSTEM-INSTANCE how to find or create an instance of this system, using the :FINDER and :CREATOR options. * (:finder arg) -- The argument to this option can vary depending upon the argument to the :type option. If :type is :FLAVOR, ... * (:creator arg) -- The argument to this option can vary depending upon the argument to the :type option. If :type is :FLAVOR, ... :made-p ...??? sys:find-system-instance Function Find an instance of the system named SYSTEM-NAME. If this system is not made, then it will be made first. An instance of it will then be found, or created if none exists yet, and selected as specified by the system's DEFSYSTEM. sys:create-system-instance Function Create a new instance of the system named SYSTEM-NAME. If this system is not made, then it will be made first. An instance of it will then be created and selected as specified by the system's DEFSYSTEM. TOOLS AND UTILITIES MANUAL Figure 2-1 ==> new screen-dump 2.8 System Access Menu This menu provides a list of systems currently available on your computer. This menu will allow you to make these systems accessbile from the System Menu and/or the SYSTEM keys. 2.8.1 Invoking the System Access Menu * Enter Profile * Select "Important Variables" * Select "System Access Menu" listed with W:*SYSTEM-ACCESS-SPECS*. 2.8.2 The Margin Choices Abort -- Exit SAM, cancelling any changes made on the menu. Do It -- Exit SAM, activating any changes made on the menu. Update -- Looks for all systems and updates the current list. It must first exit SAM, so it will ask if you want to cancel any previous changes or if you want to activate them. It will then exit temporarily while it updates its list of systems, and then it will return to the menu with the updated list. It will find all systems that are either: 1) In the environment and are of INSTANCE-TYPE :FLAVOR, :WINDOW, or :EVAL. 2) Listed in the SYS:SITE;CONTENTS file (see ????????) The ” key is equivalent to clicking "Do It", and the ‘ key is equivalent to clicking "Abort". If the System Access Menu is ever deselected (e.g. you press SYSTEM L and go to the Listener), the menu automatically does "Abort". 2.8.3 Modifying a System's Access Specification The user can modify the name that is used for the system in the System Menu and SYSTEM HELP, the column of the System Menu in which the system appears, or the SYSTEM key that is assigned to the system by simply clicking on that item for that system. If the user clicks left, he is asked to input a new value; if he clicks right, the system's default-value is used. If the system's definition (DEFSYSTEM) has not been loaded when the user clicks on one of its specs, the user will be prompted to load the DEFSYSTEM. The DEFSYSTEM must be loaded before any of the specs can be changed. 2.8.4 Print Name The system's print name is used on the System Menu and by SYSTEM HELP. If you click left on a system's print name, a window will pop-up in which you can edit the name. Note that the name can be no more than 16 characters. Pressing will quit, leaving the value unchanged. Pressing will undo all changes to the original value. Pressing will erase any characters in the window. 2.8.5 Menu Column This specifies in which column of the System Menu the system will appear. Clicking left on this brings up a menu of the possible choices: USER-AIDS, PROGRAMS, DEBUG-TOOLS, or NONE (you cannot add something to the Windows column). 2.8.6 System-key This is the key that, when pressed following the SYSTEM key, will access this system. Clicking left on a system's key brings up a prompt for a new key. If the key you press is already used or is illegal, it will probably not even be accepted, but if it is, a message will be displayed warning you of the problem. Pressing or will revert back to the old-value. ?????????????????????????????????????????????????????????????????????????????????? Converting Code that uses the old functions to use the new. If you have the source code, you will need to remove calls to either w:add-system-key or w:add-to-system-menu-column, replacing them with a call to w:modify-system-access-spec and some additional keywords in the system's DEFSYSTEM. The needed DEFSYSTEM keywords: :name -- The name printed in System Menu. See the NAME argument of ADD-TO-SYSTEM-MENU-COLUMN. :documentation -- The documentation used in the mouse line with the system menu and in SYSTEM HELP. Look at the DOCUMENTATION arguments of both ADD-TO-SYSTEM-MENU-COLUMN and ADD-SYSTEM-KEY. :default-menu-column -- The column the system appears in by default. Look at the COLUMN argument of ADD-TO-SYSTEM-MENU-COLUMN. :default-system-key -- The default system key for this system. Look at the CHAR argument to ADD-SYSTEM-KEYS. :instance-type -- :instance-finder -- :instance-creator -- These three take some thought to figure out. If the code makes a call to ADD-SYSTEM-KEY, then :instance-type will be either :FLAVOR or :WINDOW. Look at the WINDOW-OR-FLAVOR argument to this function. If it is a flavor, then :instance- type is :FLAVOR, :instance-finder is the argument WINDOW-OR-FLAVOR, and :instance-creator is the argument CREATE. If it is a window, the same is true except that :instance-type is :WINDOW. If you are not sure what it is, keep reading. If the code makes a call to ADD-TO-SYSTEM-MENU-COLUMN, you will probably need to use :FLAVOR or :EVAL for :instance-type, unless it also made a call to ADD-SYSTEM-KEY, in which case you may use :WINDOW. If the FORM argument is (TV:FIND-OR-CREATE-WINDOW-OF- FLAVOR ---- -----) then :instance-type is :FLAVOR, :instance-finder is the first argument to TV:FIND-O-C-W-O-FLAVOR, and :instance-creator is the second argument (if there isn't a second argument use T). If the argument FORM is something else and there is no call to ADD- SYSTEM-KEY, then :instance-type is :EVAL, :instance-finder is the argument FORM, and :instance-creator is NIL. Finally, if the argument FORM is something else and there is a call to ADD-SYSTEM-KEY, you have one of the odd cases which requires a little research. You will need to investigate what the form FORM does, and how it is related to the argument WINDOW-OR-FLAVOR. If there is no DEFSYSTEM for your system, make one using a unique system-name for the system and the above keywords only. Once the DEFSYSTEM is written, you need simply to replace the call or calls to ADD-TO-SYSTEM-MENU-COLUMN and ADD-SYSTEM-KEY with one call (W:MODIFY-SYSTEM-ACCESS-SPEC system-name :ASSIGN-DEFAULTS). If you do not have the source code (or cannot change it for whatever reason), you can still get the system to use the new functions. When the functions ADD-SYSTEM-KEY and ADD-TO-SYSTEM-MENU-COLUMN are called they basically just add their arguments to *OBSOLETE-SYSTEM-KEYS* or *SYSTEM-MENU-~~~~-COLUMN*, respectively. Thus, you can look at these variables to find the correct values for the DEFSYSTEM keywords, as explained above. Then, to add these keywords to the system's DEFSYSTEM (whether it already has one or not), you can use the function (SYS:SET-SYSTEM-ACCESS-LIST system-name &KEY ~~~~~~~~). If the code is not a system (does not have a DEFSYSTEM already), the only thing you must do different is choose a unique system-name for the "system". Once you have done this the system is capable of using the new functions. Following the SET-S-A-LIST function you will need the following functions: (W:REMOVE-SYSTEM-KEY key) (W:DELETE-FROM-SYSTEM-MENU-COLUMN column name) (W:MODIFY-SYSTEM-ACCESS-SPEC :ASSIGN-DEFAULTS). You will then have the ability to edit the system menu and system key assignments of this system through the System Access Menu in Profile.