Free Menu Changes: This document describes the incompatible changes from the old version to the new version of Free Menu. This document does not describe any of the new features of Free Menu. Some of the terminology used in these notes is introduced in the Free Menu documentation. You should read the Free Menu documentation first. The function FREEMENU is used to create a Free Menu, replacing and combining the functions FM.MAKEMENU and FM.FORMATMENU. In the Description of the Free Menu: There is no longer a WINDOWPROPS list in the Free Menu Description. Instead, the window properties TITLE and BORDER that used to be set in the WINDOWPROPS list can now be passed to the function FREEMENU. Other window properties (like FM.PROMPTWINDOW) can be set directly after FREEMENU returns the window using the system function WINDOWPROP. See the section in the documentation entitled Free Menu Window Properties. Setting the initial state of an item is now done with the item property INITSTATE in the item description, rather than the STATE property. Free Menu Items: 3STATE items now have states OFF, NIL, and T (instead of a NEUTRAL state). They appear by default in the NIL state. STATE items are general purpose items which maintain state, and replace the functionality of NCHOOSE items. To get the functionality of NCHOOSE items, specify the property MENUITEMS (a list of items to go in a popup menu), which instructs the STATE item to popup the menu when it is selected. STATE items do not display their current state by default, like NCHOOSE items used to. Instead, if you want the state displayed in the Free Menu, you have to link the STATE item to a DISPLAY item using a Free Menu Item Link. The current state of the STATE item will then automatically be displayed in the specified DISPLAY item. The item properties MENUFONT and MENUTITLE also apply to the popup menu. NWAY items are declared slightly differently. There is now the notion of an NWay Collection, which is a collection of items acting an a single nway item. The Collection is now declared by specifying any number of NWay items, with the same COLLECTION property id. NWay Collections have properties, just like items and groups, accessible by the macro FM.NWAYPROPS. These properties can be specified in property list format as the value of the NWAYPROPS property of the first nway item declared in each collection. NWay collections by default cannot be deselected (no item selected). Setting the collection property DESELECT changes this. The state of the nway collection is maintained as the STATE property of the collection. EDIT items no longer will stop at the edge of the window. Editing is either restricted by the MAXWIDTH property, or else it is not restricted at all. The EDITSTOP property is obsolete. Starting editing with the Right mouse button causes the item to be cleared first. EDITSTART items now specify their associated edit item (there can only be one) by a link to the actual item, declared with LINKS (EDIT ) on the item description. TITLE items are replaced by DISPLAY items, which work the same way. Free Menu Interface functions: FM.MAKEMENU and FM.FORMATMENU replaced by (FREEMENU DESCRIPTION TITLE BACKGROUND BORDER) The desired format is not specified as in the PROPS list. FM.ITEMFROMID replaced by (FM.GETITEM ID GROUP WINDOW) GROUP is the ID of the group to search for the item. AS before ID is matched against the item ID and then the item LABEL. If NIL, the entire menu is searched. FM.READSTATE replaced by (FM.GETSTATE WINDOW) Returns a property list of the selected item in the menu. This list now also includes the nway Collections and their selected item. (FM.CHANGELABEL ITEM NEWLABEL WINDOW UPDATEFLG) new argument order Now works by rebuilding the item label from scratch, taking the original specification of MAXWIDTH and MAXHEIGHT into account. NEWLABEL can be an atom, string, or bitmap. If UPDATEFLG is set, then the free menu groups regions are recalculated, so that boxed groups will be redisplayed properly. (FM.CHANGESTATE X NEWSTATE WINDOW) new argument order X is either an item or an NWay Collection ID. NEWSTATE is an appropriate state to the type of item. If an NWay collection, NEWSTATE is the actual item to be selected, or NIL to deselect. Toggle items take either T or NIL as NEWSTATE, and 3STATE items take OFF, NIL, or T, and STATE items take any atom, string, or bitmap as their new state. Edit items take a new label as NEWSTATE, and CHANGELABEL is called. FM.FIXSHAPE replaced by (FM.RESETSHAPE WINDOW ALWAYSFLG) FM.SHADEITEM and FM.SHADEITEMBM replaced by (FM.HIGHLIGHTITEM ITEM WINDOW) AND (FM.SHADE X SHADE WINDOW) FM.HIGHLIGHTITEM will programmatically highlight an item, as specified by its HIGHLGIHT property. FM.SHADE will paint SHADE on an item or a group of item, where X is either the item or the ID or the group. Both of these are tempory, and will be undone by a redisplay or scroll. GACHA GACHA GACHA ?|%‰‘SO[—zē