Index of /archives/X/opengroup/contrib/widgets/motif/MegaB

Icon  Name                                         Last modified      Size  Description
[PARENTDIR] Parent Directory - [TXT] CHANGES 1994-12-30 09:00 695 [TXT] README 1994-12-24 09:00 2.4K [CMP] megab.tz 1995-05-14 08:00 36K [TXT] readme.txt 1995-01-28 09:00 2.4K
/* $Id: README,v 1.1 1994/12/26 02:17:18 cwikla Exp $ */


	This is the xmMegaButtonWidget.  It basically allows you
to have a menu with a SCROLLING array of menu buttons like
on other windowing systems.  It is not an xmList, but rather,
is subclassed from the xmPushButtonWidgetClass -- despite which,
the xmMegaButtonWidget can operate in 1 of two modes: As a menu
of pushbuttons, or a menu of toggle buttons.  When the number
of items in the xmMegaButtonWidget becomes greater than the
XmNvisibleItemCount, up and down arrows become visible on the
top and bottom of the widget respectively. If not, then the
menu looks just like an ordinary menu, except that it is one
widget.  The advantage of this approach is that you can have
thousands of choices and only the overhead of one widget.


	It has the following resources:

	XmNitems : A list of XmStrings to be displayed in the menu
	XmNitemCount : the number of items
	XmNvisibleItemCount: maximum number of items that can be
		shown at once
	XmNsetPosition: If in toggle button mode, the position 
		from 0-XmNitemCount-1 of the set button
	XmNinitialDelay: initial scroll delay
	XmNrepeatDelay : subsequent scroll delay
	XmNbuttonMode: XmMODE_TOGGLE_BUTTON or XmMODE_PUSH_BUTTON
	XmNfillOnSelect: Fill toggle button when it is selected
	XmNchunkSize: allows control over internal memory chunk size
	XmNcallbackData: an array of XmNitemCount of data to
		be sent with callbacks

	It has the following public functions (pretty self explanatory...)

extern void XmMegaButtonAddItem(Widget _w, XmString _item, int _pos, XtPointer _cbData);
extern XtPointer XmMegaButtonRemoveItem(Widget _w, int _pos);
extern int XmMegaButtonGetPos(Widget _w);
extern void XmMegaButtonSetPos(Widget _w, int _pos);


	Other things: 

	1) The toggle button spacing/draw code is a class method, so
	if you wanted some special looking toggle button it should be
	easy to implement.

	2) Memory is allocated in chunks as it grows, instead of one at a
	time.  This way you can get some decent performance from the
	XmMegaButtonAddItem function if you have menus that the size
	will be unknown.

	3)  Both click & drag, and click and select menus work

	Bad things:

	1) Requires Motif 1.2

	2) I haven't implemented the SetValues or GetValues method. Personally, 
I haven't had need for them so unless people ask, I probably won't get
around to it.

	3) All the menu items are the same type -- no separators.