ButtonBox This is a simple Button Panel widget. Notable features are: A) The buttons have four visible states (occupied-by-pointer/not-occupied combined with on/off). B) Buttons can be given different functions (one-shot, radio-buttons, toggle buttons, help-about-this-button, etc). One button may have several different response functions (within logic) depending on the pointer button and event state. The conditions under which a button selection occurs are application selectable with button and state masks for each response. C) Buttons can interact with each other in different ways (radio button being an obvius example). D) Buttons can have submenus of buttons which appear when the parent button is selected (similar to 'pull-down-menus' in function but different in that they appear in an existing window, and remain until replaced). Submenus can be cascaded (submenus of submenu buttons, ...). E) All calls are Xlib calls. The design minimizes server interactions for efficient operation, even over a network. F) Buttons are pre-processed with data structures largely filled at compile time to reduce start-up time and eliminate any reliance on server font resources at run-time. (The pre-processor is in the tool sub-directory). (My preferred font is X10's helv12 which is different from that provided with X11 - both X10 and X11 pre-processing is available). G) The button appearance is specifiable (copied from a sample bit-map of its border pattern). It can be made runtime selectable to match the user's preferred "look-and-feel". H) Buttons are run-time sized (and resized) to fit their windows. When the text label must be clipped to fit a small button, characters are dropped and the remaining text is centered. I) Text labels can be rotated in the pre-processor, allowing vertical text labels. J) The interface can accept UNIX socket masks to return on non-X11 UNIX select signals. The organization of the code is outlined in ROADMAP.