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. 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. The window properties TITLE, BORDER that used to be set here can be passed to the function FREEMENU. Other window properties (like FM.PROMPTWINDOW) can be set directly after FREEMENU returns the window. There is a section in the documentation entitled Free Menu Window Properties. The MENUPROPS list is now called PROPS. Each group of items in the Free Menu description can specify its own PROPS. The PROPS list is optional, but if provided must be the first thing in the group description. Setting the initial state of an item is now done with the item property INITSTATE in the item description, not 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. NCHOOSE items are replaced by general STATE items. To get the functionality of nchoose items, specify the property MENUITEMS (a list of items to go in a popup menu for the item), which instructs the STATE items to popup the menu when selected. STATE items do not display their current state by default. Instead you have to link this item to a DISPLAY item, which will show the state. To do this specify on the item description LINKS (DISPLAY ), and declare an item of type DISPLAY with the appropriate ID somewhere in the menu. 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 GACHA °~%'^ÑSO])zº