Area.mui

DESCRIPTION

Area.mui/Area.mui

	Area class is a super class for every other MUI class
	except windows and applications. It holds information
	about an objects current position, size and weight
	and manages frames, fonts and backgrounds.

	Additionally, area class handles the user input. By
	setting an objects MUIA_InputMode, you can make it
	behave like a button or like a toggle gadget. That's
	why MUI doesn't offer an extra button class. A button
	is simply a text object with a raised frame and a relverify
	input mode. Since especially group class is a subclass
	of area, you can create rather complex buttons consisting
	of many other display elements

MUIA_Background

(V4 ) [IS.], LONG, 0x8042545b

DESCRIPTION

	Adjust the background for an object.

	Every MUI object has its own background setting.
	The background is displayed "behind" the actual
	object contents, e.g. behind a the text of a
	text object or behind the image of an image object.

	This attribute takes the same values as MUIA_Image_Spec,
	please refer to autodocs of image class for a complete
	description.

	An object without a specific background setting will
	inherit the pattern from its parent group ยน. The default
	background for a window and many other background
	patterns are adjustable with the preferences program.

	Only a few MUII_xxxxxxx tags make sense as background.
	Important are:

	MUII_ButtonBack:
	   You have to set this when you create a button gadget.
	   Thus, your button will be displayed in the users
	   preferred style.

	MUII_TextBack:
	   Set this when you create a text object with a TextFrame,
	   e.g. some kind of status line. Do *not* use MUII_TextBack
	   for simple text without frame (e.g. gadget labels).

	MUII_BACKGROUND
	MUII_SHADOW
	MUII_SHINE
	MUII_FILL
	MUII_SHADOWBACK
	MUII_SHADOWFILL
	MUII_SHADOWSHINE
	MUII_FILLBACK
	MUII_FILLSHINE
	MUII_SHINEBACK
	MUII_SHINEBACK2:
	   One of MUI's predefined pattern. These are not
	   configurable by the user and will always look the
	   same

NOTE

	   Don't expect everyone's settings to look like yours. Test
	   with different presets to make sure things always look right.

MUIA_BottomEdge

(V4 ) [..G], LONG, 0x8042e552

DESCRIPTION

	You can use this to read the current position and
	dimension of an object, if you e.g. need it to pop
	up some requester below.

	Of course, this attribute is only valid when the
	parent window of the object is currently open

SEE ALSO

MUIA_BuiltinFont

(V22) [ISG], ULONG, 0x8042256f

DESCRIPTION

	yet undocumented, please complain in mailinglist

SPECIAL INPUTS

	MUIV_BuiltinFont_Inherit
	MUIV_BuiltinFont_Normal
	MUIV_BuiltinFont_List
	MUIV_BuiltinFont_Tiny
	MUIV_BuiltinFont_Fixed
	MUIV_BuiltinFont_Title
	MUIV_BuiltinFont_Big
	MUIV_BuiltinFont_Button
	MUIV_BuiltinFont_Slider
	MUIV_BuiltinFont_Gauge
	MUIV_BuiltinFont_Menu
	MUIV_BuiltinFont_Tab
	MUIV_BuiltinFont_Bubble
	MUIV_BuiltinFont_Huge
	MUIV_BuiltinFont_Last
	MUIV_BuiltinFont_Count

MUIA_ContextMenu

(V11) [ISG], MUIMenustrip *, 0x8042b704

DESCRIPTION

	Specifies a context sensitive popup menu for the current
	object. For MUI, popup menus are nothing else but standard
	menus, so you must specify a pointer to a
	MUI menustrip object (e.g. something returned from
	MUI_MakeObject(MUIO_MenustripNM,...)) here.

	Whenever the user hits the RMB and the mouse is above the parent
	object, MUI will present the popup menu instead of the windows
	menu.

	Note: MUI will *not* dispose the MUIA_ContextMenu object when
	the object is disposed. You must take care of the menustrip
	object yourself. This is because menustrip objects in
	MUIA_ContextMenu do not actually "belong" to their parent
	objects, they're just a "reference". You are allowed to use
	a single menustrip object as MUIA_ContextMenu for different
	objects of the same window. Do *not* share with objects in
	other windows or with the default menu of a window or
	an application!

	If the user selects an item, the object will receive
	a MUIM_ContextMenuChoice method containing the selected
	menuitem object. If you build your menustrip tree with
	MUI_MakeObject(MUIO_MenustripNM,...), you will find the
	nm_UserData of your menu entry in muiUserData(msg->item).
	If you have control over methods because you are a
	subclass, you can immediately take approriate actions
	when receiving MUIM_ContextMenuChoice.

	If you dont have a subclass or dont override
	MUIM_ContextMenuChoice, the method will finally reach
	area class and will set the attribute MUIA_ContextMenuTrigger
	to the appropriate menuitem object. This allows you to react on
	context menu selections by simple notification and eliminates
	the need of writing a subclass just for this purpose.
	Subclasses are always the better solution though!

	There is also a possibility to dynamically create popup menus
	on the fly. See MUIM_ContextMenuBuild for details

NOTES

	MUI uses the same tree-like technique as always (e.g. with
	drag&drop) to find out which context menu to use on a
	certain mouse position. This allows you to have a context
	menu for a group and different context menus for its
	children. The MUI preferences program makes use of that
	feature by allowing to control a single gadget or a whole
	page of gadgets with popup menus.

SEE ALSO

MUIA_ContextMenuTrigger

(V11) [..G], MUIMenuitem *, 0x8042a2c1

DESCRIPTION

	Allows reacting on context menus with notificaton.
	When the MUIM_ContextMenuChoice method reaches area class
	because you did not override it in a subclass, it sets
	MUIA_ContextMenuTrigger to the received paremeter which
	is a pointer to the user-selected menuitem object.

	See MUIA_ContextMenu for details

SEE ALSO

MUIA_ControlChar

(V4 ) [ISG], char, 0x8042120b

DESCRIPTION

	Pressing the control char will have the same effect
	as pressing return if the object was active.
	
	This can be used to create old style key shortcuts.

	Note: Using an uppercase control char will force
	      the user to press shift

SEE ALSO

MUIA_CustomBackfill

(V11) [ISG], BOOL, 0x80420a63

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIA_CustomFont

(V20) [ISG], STRPTR, 0x80423fc5

DESCRIPTION

	Allows overriding the user-configured MUI fonts. Takes a MUI font spec
	string as input. The string may contain just the styling information,
	for example
	
	Noto Sans UI/20 - use Noto Sans UI font, size 20
	Noto Sans UI/+10 - use Noto Sans UI font, with size + 10 points from the
		height of the Normal font
	/+10 - will use the user-defined Normal font, but with a size + 10 points
		larger
	//s - use Normal font, enable shadow
	//o - enable outline
	//g - enable glow (caution: slow!)
	//n - reset styles
	//u - underline
	//b - bold
	//i - italic
	//crrggbb - set text color to a RGB value
	//Crrggbb - set text outline color
	Noto Sans UI/+10/o/Cff0000 - use Noto Sans UI font, with size + 10 points
		from the height of the Normal font, with a red colored outline

	Setting MUIA_Font after MUIA_CustomFont overrides MUIA_CustomFont and vice
	versa

CAUTION

	It is not advised to use MUIA_CustomFont, unless the font may be configured
	by the user or this is used in a fully custom-drawn Area subclass where the
	background is also controlled by the programmer and won't collide with user
	settings (think dark background and black text).

SEE ALSO

MUIA_CycleChain

(V11) [ISG], LONG, 0x80421ce7

DESCRIPTION

	MUI 3 introduces a new keyboard cycle chain system. All you 
	have to do is to set  MUIA_CycleChain to 1 for every object 
	that you want to have in your chain, MUI does the rest 
	automatically. The old MUIM_Window_SetCycleChain will continue 
	to work but is considered obsolete

SEE ALSO

MUIA_Disabled

(V4 ) [ISG], BOOL, 0x80423661

DESCRIPTION

	Disable or enable a gadget. Setting this attribute
	causes a gadget to become disabled, it gets a ghost
	pattern and doesn't respond to user input any longer.

	Disabled gadgets cannot be activated with the TAB key.

	Using MUIA_Disable on a group of objects will disable
	all objects within that group

EXAMPLE

	/* we have a radio button gadget with three         */
	/* entries, the third should enable a string gadget */
	/* with additional parameters                       */

	DoMethod(radio, MUIM_Notify, MUIA_Radio_Active, 0,
	   string, 3, MUIM_Set, MUIA_Disabled, TRUE);

	DoMethod(radio, MUIM_Notify, MUIA_Radio_Active, 1,
	   string, 3, MUIM_Set, MUIA_Disabled, TRUE);

	DoMethod(radio, MUIM_Notify, MUIA_Radio_Active, 2,
	   string, 3, MUIM_Set, MUIA_Disabled, FALSE

MUIA_DoubleBuffer

(V20) [ISG], BOOL, 0x8042a9c7

DESCRIPTION

	Setting this to TRUE will enable a doublebuffer for
	this objects MUIM_Draw method.

	When MUI is about draw an object with this attribute, it
	will maintain an extra struct MUI_RenderInfo which points
	to an offscreen bitmap. Just before calling MUIM_Draw,
	your objects normal muiRenderInfo(obj) pointer (which stores
	drawing attributes such as _rp(obj) for example) will be
	replaced by this buffered MUI_RenderInfo. Also, your object's
	coordinates (in _mleft(obj), _mtop(obj), etc) will be changed
	to point into the offscreen buffer.

	Your MUIM_Draw method can then render as it would normally, no
	need to change anything for the doublebuffer. When it is
	completed, MUI will blit the contents of the offscreen-bitmap
	into view and then restore your objects coordinates and
	MUI_RenderInfo pointers to their standard values

NOTES

	This attribute is *ONLY* meant for your own subclasses
	of area class. Don't use on subclasses of Group.mui
	or on other classes not written by you.

	You must absolutely make sure to not render outside your
	objects bounding box, always stay between
	_mleft/_mtop/_mright/_bottom. Otherwise you will trash
	innocent memory since the offscreen bitmap may just be
	big enough and has no clipping enabled.

	Special care must be taken when your classes draw method
	interfaces other coordinates, like for example the
	mouse-position. You would have to substract _left/_top
	in MUIM_HandleEvent from imsg->MouseX/Y before storing the
	coordinates (ie make them relative to your objects origin)
	and then, when using them in your MUIM_Draw, add _left/_top(obj)
	again. This will ensure everything ends up at its place
	regardless if you use MUIA_DoubleBuffer or don't.

	IMPORTANT: MUI may also use different methods of double
	buffering, besides allocating new bitmap structures.
	It may for example decide to do nothing at all when it
	finds out, that the underlying intuition/layer libraries
	already implement buffering.

	You CANNOT make any assumptions about the double buffer, its
	bitmap, its coordinates, its lifetime or anything else. Your
	rendering code must work just as flawlessly with
	MUIA_DoubleBuffer, TRUE as with MUIA_DoubleBuffer, FALSE.

MUIA_DoubleClick

(V20) [..G], LONG, 0x8042f057

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIA_Draggable

(V11) [ISG], BOOL, 0x80420b6e

DESCRIPTION

	Set this if you want the complete object to be
	dragable for D&D operations

MUIA_Dropable

(V11) [ISG], BOOL, 0x8042fbce

DESCRIPTION

	Only objects with this attribute set to TRUE will be asked
	if they want to become an active Drag & Drop destination
	at all. Though this attribute defaults to TRUE, this doesnt
	mean that every object automatically aceppts D&D actions,
	because the MUIM_DragQuery method is answered FALSE when
	it arrives at area class

SEE ALSO

MUIA_ExportID

(V4 ) [ISG], ULONG, 0x8042d76e (OBSOLETE)

DESCRIPTION

	obsolete. see Notify.mui/MUIA_ObjectID

NOTE

	This attribute was renamed to MUIA_ObjectID and
	moved to Notify.mui in muimaster.library V12.

SEE ALSO

MUIA_FillArea

(V4 ) [IS.], BOOL, 0x804294a3

DESCRIPTION

	Set this to FALSE if you are a custom class and dont want
	area class to clear your background during the DoSuperMethod()
	in your draw method. Note that if you set this, your draw method
	is responsible for filling every pixel of your objects
	rectangle, otherwise some display trash will remain there

MUIA_FixHeight

(V4 ) [I..], LONG, 0x8042a92b

DESCRIPTION

	Give your object a fixed pixel height. This tag is
	absolutely not needed in a general MUI application
	and only present for emergency situations. Please
	think twice before using it

EXAMPLE

	/* create an 8x8 pixel rectangle with FILLPEN */

	RectangleObject,
	   MUIA_FixWidth  , 8,
	   MUIA_FixHeight , 8,
	   MUIA_Background, MUII_FILL,
	   End

SEE ALSO

MUIA_FixHeightTxt

(V4 ) [I..], STRPTR, 0x804276f2

DESCRIPTION

	Give your object a fixed pixel height. The height
	will match the height of the given string. This tag is
	absolutely not needed in a general MUI application
	and only present for emergency situations. Please
	think twice before using it

EXAMPLE

	/* create a fixed size rectangle with FILLPEN */

	RectangleObject,
	   MUIA_FixWidthTxt , "00:00:00",
	   MUIA_FixHeightTxt, "\n\n",
	   MUIA_Background  , MUII_FILL,
	   End

SEE ALSO

MUIA_FixWidth

(V4 ) [I..], LONG, 0x8042a3f1

DESCRIPTION

	Give your object a fixed pixel width. This tag is
	absolutely not needed in a general MUI application
	and only present for emergency situations. Please
	think twice before using it

EXAMPLE

	/* create an 8x8 pixel rectangle with FILLPEN */

	RectangleObject,
	   MUIA_FixWidth  , 8,
	   MUIA_FixHeight , 8,
	   MUIA_Background, MUII_FILL,
	   End

SEE ALSO

MUIA_FixWidthTxt

(V4 ) [I..], STRPTR, 0x8042d044

DESCRIPTION

	Give your object a fixed pixel width. The width
	will match the width of the given string. This tag is
	absolutely not needed in a general MUI application
	and only present for emergency situations. Please
	think twice before using it

EXAMPLE

	/* create a fixed size rectangle with FILLPEN */

	RectangleObject,
	   MUIA_FixWidthTxt , "00:00:00",
	   MUIA_FixHeightTxt, "\n\n",
	   MUIA_Background  , MUII_FILL,
	   End

SEE ALSO

MUIA_Floating

(V20) [ISG], BOOL, 0x80429753

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIA_Font

(V4 ) [ISG], struct TextFont *, 0x8042be50

DESCRIPTION

	Every MUI object can have its own font, just set it with
	this tag. Objects without an explicit font setting will
	inherit it from their parent group.

	You normally won't need to open a font yourself, just
	use one of the predefined values to get a font from
	the users preferences.

	You can also pass a struct TextFont * obtained by
	OpenFont(). You are responsible for freeing this
	font yourself after the object is disposed

EXAMPLE

	/* since the text contains tabs,           */
	/* use the fixed width font for displaying */

	msgread = FloattextObject,
	   MUIA_Font, MUIV_Font_Fixed,
	   ...,
	   End

SPECIAL INPUTS

	MUIV_Font_Inherit
	MUIV_Font_Normal
	MUIV_Font_List
	MUIV_Font_Tiny
	MUIV_Font_Fixed
	MUIV_Font_Title
	MUIV_Font_Big
	MUIV_Font_Button
	MUIV_Font_Slider
	MUIV_Font_Gauge
	MUIV_Font_Menu
	MUIV_Font_Tab
	MUIV_Font_Bubble
	MUIV_Font_Huge
	MUIV_Font_Last
	MUIV_Font_Count

MUIA_Frame

(V4 ) [I..], LONG, 0x8042ac64

DESCRIPTION

	Define a frame for the current object. Since area class
	is a superclass for all elements in a window, you can
	assign frames to every object you wish.

	You don't adjust the style of your frame directly,
	instead you only specify a type:

	MUIV_Frame_Button
	   for standard buttons with text in it.

	MUIV_Frame_ImageButton
	   for small buttons with images, e.g. the arrows
	   of a scrollbar.

	MUIV_Frame_Text
	   for a text field, e.g. a status line display.

	MUIV_Frame_String
	   for a string gadget.

	MUIV_Frame_ReadList
	   for a read only list.

	MUIV_Frame_InputList
	   for a list that handles input (has a cursor).

	MUIV_Frame_Prop
	   for proportional gadgets.

	MUIV_Frame_Group
	   for groups.

	How the frame is going to look is adjustable via the
	preferences program.

	Four spacing values belong to each frame that tell
	MUI how many pixels should be left free between the
	frame and its contents. These spacing values are also
	user adjustable as long as you don't override them
	with one of MUIA_InnerLeft, MUIA_InnerRight, MUIA_InnerTop,
	or MUIA_InnerBottom.

	Starting with version 20 of muimaster.library, you can also
	pass a pointer to a struct MUI_FrameSpec as MUIA_Frame. This
	allows the use of customized frames adjustable with the
	Frameadjust.mui custom class. Note that the pointer to
	the passed MUI_FrameSpec must remain valid until you
	overwrite MUIA_Frame with something different or dispose
	the object. A good place to keep the MUI_FrameSpec is the
	instance data of your custom class.

	Do not pass such pointers if your muimaster.library is
	version 19 or below

EXAMPLE

	strobj = StringObject,
	   MUIA_Frame, MUIV_Frame_String,
	   End

NOTE

	The first object in a window (MUIA_Window_RootObject)
	can *not* have a frame. If you need this you will have
	to create a dummy group with just one child.

SPECIAL INPUTS

	MUIV_Frame_None
	MUIV_Frame_Button
	MUIV_Frame_ImageButton
	MUIV_Frame_Text
	MUIV_Frame_String
	MUIV_Frame_ReadList
	MUIV_Frame_InputList
	MUIV_Frame_Prop
	MUIV_Frame_Gauge
	MUIV_Frame_Group
	MUIV_Frame_PopUp
	MUIV_Frame_Virtual
	MUIV_Frame_Slider
	MUIV_Frame_SliderKnob
	MUIV_Frame_GaugeInner
	MUIV_Frame_Menudisplay
	MUIV_Frame_MenudisplayMenu
	MUIV_Frame_PropKnob
	MUIV_Frame_Window
	MUIV_Frame_Requester
	MUIV_Frame_Page
	MUIV_Frame_Register
	MUIV_Frame_GroupTitle
	MUIV_Frame_RegisterTitle
	MUIV_Frame_Count

SEE ALSO

MUIA_FrameDynamic

(V20) [ISG], BOOL, 0x804223c9

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIA_FramePhantomHoriz

(V4 ) [I..], BOOL, 0x8042ed76

DESCRIPTION

	Setting this to TRUE causes the specified frame to be
	a horizontal phantom frame. The frame will not appear
	but its vertical components (frame height, inner
	top and inner bottom spacing) will be used to calculate
	positions and dimensions (horizontal components are
	treated as 0).

	This is extremely useful for a correct labeling of objects.
	You would e.g. label a string gadget by using a text object
	with a phantom string frame. Thus, the label text will
	be always on the same vertical position as the string
	gadget text, no matter what spacing values the user
	configured

SEE ALSO

MUIA_FrameTitle

(V4 ) [I..], STRPTR, 0x8042d1c7

DESCRIPTION

	This tag identifies a text string that will be displayed
	in the top line of a frame. This can come in
	handy if you want to name groups of objects.

	You may not use MUIA_FrameTitle without defining
	a MUIA_Frame

EXAMPLE

	VGroup,
	   MUIA_Frame     , MUIV_Frame_Group,
	   MUIA_FrameTitle, "Spacing

SEE ALSO

MUIA_FrameVisible

(V20) [ISG], BOOL, 0x80426498

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIA_Height

(V4 ) [..G], LONG, 0x80423237

DESCRIPTION

	You can use this to read the current position and
	dimension of an object, if you e.g. need it to pop
	up some requester below.

	Of course, this attribute is only valid when the
	parent window of the object is currently open

SEE ALSO

MUIA_HorizDisappear

(V11) [ISG], LONG, 0x80429615

DESCRIPTION

	Objects with a disappear level disappear automatically
	when their parent window gets too small to display them.
	Use this for things that make your GUI look nicer
	(e.g. Imagery) but are not absolutely necessary.

	By using disappearing objects, you can make nice GUIs
	which still work on crappy 640x200 screens.

	You can give horizontal or vertical disappear levels
	to objects which are used for horizontal or vertical
	layout calculations respectively.

	Objects with a small disappear level disappear before
	objects with a big disappear level

EXAMPLE

	// group with objects disappearing from right to left,
	// like a row of hotlink buttons in a browser:

	// creation:
	quickies = HGroup, End;

	// add a few buttons:
	for (i=0;i<20;i++)
	{
		char buf[256];
		sprintf(buf,"Quicklink %ld",i);
		DoMethod(quickies,OM_ADDMEMBER,SimpleButton(buf));
	}

	// set up the disappear levels, right one goes first
	int dis; Object *but;
	get(quickies,MUIA_Group_ChildCount,&dis);
	for (but=NULL;but=(Object *)DoMethod(quickies,MUIM_Group_GetChild,MUIV_Group_GetChild_Next,but);)
	{
		SetAttrs(but,MUIA_HorizDisappear,dis--,TAG_DONE

SEE ALSO

MUIA_HorizWeight

(V4 ) [ISG], WORD, 0x80426db9

DESCRIPTION

	Adjust the horizontal weight of an object. Usually
	you can simply use MUIA_Weight instead of this tag
	but in some two-dimensional groups it may become
	handy to have different horizontal and vertical 
	weights

SEE ALSO

MUIA_InnerBottom

(V4 ) [I.G], LONG, 0x8042f2c0

DESCRIPTION

	Adjust the space between an object and its frame.
	Usually you shouldn't use this tag since you will
	override the users preferred default setting

SEE ALSO

MUIA_InnerLeft

(V4 ) [I.G], LONG, 0x804228f8

DESCRIPTION

	Adjust the space between an object and its frame.
	Usually you shouldn't use this tag since you will
	override the users preferred default setting

SEE ALSO

MUIA_InnerRight

(V4 ) [I.G], LONG, 0x804297ff

DESCRIPTION

	Adjust the space between an object and its frame.
	Usually you shouldn't use this tag since you will
	override the users preferred default setting

SEE ALSO

MUIA_InnerTop

(V4 ) [I.G], LONG, 0x80421eb6

DESCRIPTION

	Adjust the space between an object and its frame.
	Usually you shouldn't use this tag since you will
	override the users preferred default setting

SEE ALSO

MUIA_InputMode

(V4 ) [I..], LONG, 0x8042fb04

DESCRIPTION

	Adjust the input mode for an object.

	MUI has no distinct button class. Instead you can make
	every object (even groups) behave like a button by
	setting an input mode for them. Several input modes
	area available:

	MUIV_InputMode_None:
	   No input, this is not a gadget.

	MUIV_InputMode_RelVerify:
	   For buttons and similar stuff.

	MUIV_InputMode_Immediate:
	   Used e.g. in a radio button object.

	MUIV_InputMode_Toggle:
	   For things like checkmark gadgets.

	The input mode setting determines how a user action
	will trigger the attributes MUIA_Selected, MUIA_Pressed
	and MUIA_Timer. See their documentation for details

EXAMPLE

	/* A traditional button, just a text object with */
	/* a button frame and a relverify input mode:    */

	okbutton = TextObject,
	   MUIA_Frame        , MUIV_Frame_Button,
	   MUIA_InputMode    , MUIV_InputMode_RelVerify,
	   MUIA_Text_Contents, "OK

SPECIAL INPUTS

	MUIV_InputMode_None
	MUIV_InputMode_RelVerify
	MUIV_InputMode_Immediate
	MUIV_InputMode_Toggle

SEE ALSO

MUIA_LeftEdge

(V4 ) [..G], LONG, 0x8042bec6

DESCRIPTION

	You can use this to read the current position and
	dimension of an object, if you e.g. need it to pop
	up some requester below.

	Of course, this attribute is only valid when the
	parent window of the object is currently open

SEE ALSO

MUIA_MaxHeight

(V11) [I..], LONG, 0x804293e4

DESCRIPTION

	Specify a maximum height for an object (in pixels

SEE ALSO

MUIA_MaxWidth

(V11) [I..], LONG, 0x8042f112

DESCRIPTION

	Specify a maximum width for an object (in pixels

SEE ALSO

MUIA_Pressed

(V4 ) [..G], BOOL, 0x80423535

DESCRIPTION

	Learn if a button is pressed (or released).
	The MUIA_Pressed attribute of a gadget is triggered
	by some user action, depending on the input mode:

	MUIV_InputMode_RelVerify:
	   - set when lmb is pressed.
	   - cleared when lmb is released and the mouse
	     is still over the gadget (otherwise it will
	     be cleared too, but without triggering a
	     notification event).

	MUIV_InputMode_Immediate:
	   - undefined, use MUIA_Selected for this.

	MUIV_InputMode_Toggle:
	   - undefined, use MUIA_Selected for this.

	Waiting for MUIA_Pressed getting FALSE is the usual
	way to react on button gadgets

EXAMPLE

	DoMethod(btcancel,MUIM_Notify,MUIA_Pressed,FALSE,
	   app,2,MUIM_Application_ReturnID,ID_CANCEL

SEE ALSO

MUIA_RightEdge

(V4 ) [..G], LONG, 0x8042ba82

DESCRIPTION

	You can use this to read the current position and
	dimension of an object, if you e.g. need it to pop
	up some requester below.

	Of course, this attribute is only valid when the
	parent window of the object is currently open

SEE ALSO

MUIA_Selected

(V4 ) [ISG], BOOL, 0x8042654b

DESCRIPTION

	Get and set the selected state of a gadget.
	This attribute can be triggered by the user
	clicking on the gadget (or using the keyboard),
	depending on the input mode:

	MUIV_InputMode_RelVerify:
	   - set when lmb is pressed.
	   - cleared when lmb is released.
	   - cleared when the gadget is selected and the
	     mouse leaves the gadget box.
	   - set when the mouse reenters the gadget box.

	MUIV_InputMode_Immediate:
	   - set when lmb is pressed.

	MUIV_InputMode_Toggle:
	   - toggled when lmb is pressed.

	Of course you may set this attribute yourself, e.g.
	to adjust the state of a checkmark gadget.

	A selected gadget will display its border reverse
	and get the configured MUII_SelectedBack background.
	This can be avoided using the MUIA_ShowSelState tag

SEE ALSO

MUIA_ShortHelp

(V11) [ISG], STRPTR, 0x80428fe3

DESCRIPTION

	Specify a string that is to be used as bubble help for this
	object

SEE ALSO

MUIA_ShowMe

(V4 ) [ISG], BOOL, 0x80429ba8

DESCRIPTION

	Objects with this attribute set are not displayed. You can
	set MUIA_ShowMe at any time, causing objects to appear and
	to disappear immediately. A new layout is calculated whenever
	some objects are shown or hidden. When necessary, MUI will
	resize the parent window to make room for the new objects

NOTE

	Currently, MUI does a complete window refresh after
	showing/hiding objects. This behaviour might get improved
	in the future.

MUIA_ShowSelState

(V4 ) [I..], BOOL, 0x8042caac

DESCRIPTION

	Normally a gadget will reverse its frame and
	display the configured MUII_SelectetBack background
	pattern in its selected state. For some objects
	(e.g. checkmarks) this is not recommended and
	can be supressed by setting MUIA_ShowSelState
	to FALSE

SEE ALSO

MUIA_TextColor

(V22) [..G], ULONG, 0x8042dba6

DESCRIPTION

	Returns the 00RRGBB color of the text associated with the object.
	Valid between MUIM_Setup and MUIM_Cleanup, otherwise returns 0.

	To account for prefs changes, it's best not to cache this value
	and to read it once per MUIM_Draw call

MUIA_Timer

(V4 ) [..G], LONG, 0x80426435

DESCRIPTION

	MUIA_Timer gets triggered when a relverify button is 
	pressed and (after a little delay) increases every 
	INTUITICK as long as the mouse remains over the gadget.

	This makes it possible to have buttons repeatedly
	cause some actions, just like the arrow gadgets of
	a scrollbar

EXAMPLE

	DoMethod(btmore,MUIM_Notify,MUIA_Timer,MUIV_EveryTime,
	   app,2,MUIM_Application_ReturnID,ID_MORE);

	DoMethod(btless,MUIM_Notify,MUIA_Timer,MUIV_EveryTime,
	   app,2,MUIM_Application_ReturnID,ID_LESS

SEE ALSO

MUIA_TopEdge

(V4 ) [..G], LONG, 0x8042509b

DESCRIPTION

	You can use this to read the current position and
	dimension of an object, if you e.g. need it to pop
	up some requester below.

	Of course, this attribute is only valid when the
	parent window of the object is currently open

SEE ALSO

MUIA_Unicode

(V22) [I.G], BOOL, 0x8042e7d0

DESCRIPTION

	Setting this to TRUE will treat strings displayed and/or edited by the
	class as UTF-8.

	Depending on user settings, the text will be rendered either using
	ttengine.library or by converting it back to system codepage at runtime.

	The strings returned by MUIA_String_Contents, etc will remain UTF-8 no
	matter which text rendering is used.

	This attribute can only be set at object's creation

MUIA_VertDisappear

(V11) [ISG], LONG, 0x8042d12f

DESCRIPTION

	Objects with a disappear level disappear automatically
	when their parent window gets too small to display them.
	Use this for things that make your GUI look nicer
	(e.g. Imagery) but are not absolutely necessary.

	By using disappearing objects, you can make nice GUIs
	which still work on crappy 640x200 screens.

	You can give horizontal or vertical disappear levels
	to objects which are used for horizontal or vertical
	layout calculations respectively.

	Objects with a small disappear level disappear before
	objects with a big disappear level

SEE ALSO

MUIA_VertWeight

(V4 ) [ISG], WORD, 0x804298d0

DESCRIPTION

	Adjust the vertical weight of an object. Usually
	you can simply use MUIA_Weight instead of this tag
	but in some two-dimensional groups it may become
	handy to have different horizontal and vertical
	weights

SEE ALSO

MUIA_Weight

(V4 ) [I..], WORD, 0x80421d1f

DESCRIPTION

	This tag is a shorthand for MUIA_HorizWeight and
	MUIA_VertWeight, it sets both weights at once.

	The weight of an object determines how much room it
	will get during the layout process. Imagine you have
	a 100 pixel wide horizontal group with two string
	gadgets. Usually, each gadget will get half of the
	room and be 50 pixels wide. If you feel the left
	gadget is more important and should be bigger,
	you can give it a weight of 200 (and 100 for
	the right gadget). Because the left gadget is
	twice as "heavy" as the right gadget, it will
	become twice as big (about 66 pixel) as the
	right one (34 pixel).

	Of course giving weights only makes sense if the
	object is resizable. A MUIA_VertWeight for a
	(always fixed height) string gadget is useless.

	An object with a weight of 0 will always stay
	at its minimum size.

	By default, all objects have a weight of 100

EXAMPLE

	HGroup,
	   StringGadget, MUIA_Weight,  50, End,
	   StringGadget, MUIA_Weight, 100, End,
	   StringGadget, MUIA_Weight, 200, End,
	   End

SEE ALSO

MUIA_Width

(V4 ) [..G], LONG, 0x8042b59c

DESCRIPTION

	You can use this to read the current position and
	dimension of an object, if you e.g. need it to pop
	up some requester below.

	Of course, this attribute is only valid when the
	parent window of the object is currently open

SEE ALSO

MUIA_Window

(V4 ) [..G], struct Window *, 0x80421591

DESCRIPTION

	This attribute can be used to get a pointer to the
	intuition window structure of the parent window 
	ot the object. This pointer could e.g. be used
	in calls to asl.library.

	The result is only valid when the window is opened

SEE ALSO

MUIA_WindowObject

(V4 ) [..G], MUIWindow *, 0x8042669e

DESCRIPTION

	You can obtain a pointer to the window object
	that some gadget belongs to by using this attribute.
	Useful mainly within callback hooks if you do not want
	to deal with global variables

SEE ALSO

MUIM_AskMinMax

MUIM_AskMinMax (V4 ) 0x80423874 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_AskMinMax,struct MUI_MinMax *MinMaxInfo);

DESCRIPTION

	see developer documentation

MUIM_Backfill

MUIM_Backfill (V11) 0x80428d73

SYNOPSIS

	DoMethod(obj,MUIM_Backfill,LONG left, LONG top, LONG right, LONG bottom, LONG xoffset, LONG yoffset, LONG brightness);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_CheckShortHelp

MUIM_CheckShortHelp (V20) 0x80423c79

SYNOPSIS

	DoMethod(obj,MUIM_CheckShortHelp,STRPTR help, LONG mx, LONG my);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_Cleanup

MUIM_Cleanup (V4 ) 0x8042d985 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_Cleanup);

DESCRIPTION

	see developer documentation

MUIM_CloseCustomFont

MUIM_CloseCustomFont (V22) 0x8042b27c [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_CloseCustomFont,Boopsiobject *font);

DESCRIPTION

	Closes a font object opened with MUIM_OpenCustomFont

SEE ALSO

MUIM_ContextMenuAdd

MUIM_ContextMenuAdd (V20) 0x8042df9e

SYNOPSIS

	DoMethod(obj,MUIM_ContextMenuAdd,MUIMenustrip *menustrip, LONG mx, LONG my, LONG *mxp, LONG *myp);

DESCRIPTION

	Add context menu items. In the subclass you override this method
	to add your own context menu item while your superclass can still
	insert its own items. 

	This method replaces old MUIM_ContextMenuBuild method

INPUTS

	menustrip - current context menu
	mx        - current x position of mouse
	my        - current y position of mouse
	mxp       - pointer to current x position of mouse
	myp       - pointer to current y position of mouse

	Since MUI does (unfortunately) not use relative coordinates
	at all, these two aren't relative either

RESULT

	You add your menuitem objects to menutstrip

NOTES

	This method is called only if MUIA_ContextMenu is set TRUE.

EXAMPLE

	static size_t mContextMenuAdd(struct IClass *cl, Boopsiobject *obj, struct MUIP_ContextMenuAdd *msg)
	{
		APTR cm = MenuObject,
			MUIA_Menu_Title, "File operations",
			Child, MenuitemObject, MUIA_Menuitem_Title, "Copy file", End,
			Child, MenuitemObject, MUIA_Menuitem_Title, "Move file", End,
		End;

		if (cm)
		{
			DoMethod(msg->menustrip, OM_ADDMEMBER, cm);
		}

		return DoSuperMethodA(cl, obj, msg

SEE ALSO

MUIM_ContextMenuBuild

MUIM_ContextMenuBuild (V11) 0x80429d2e

SYNOPSIS

	DoMethod(obj,MUIM_ContextMenuBuild,LONG mx, LONG my);

DESCRIPTION

	OBSOLETE - USE MUIM_ContextMenuAdd in new code.

	old documentation:
	Allows dynamic creation of context menus.
	When MUI is about to show a new context menu, it does not
	simply use the MUIA_ContextMenu field of area class. Instead,
	it sends a MUIM_ContextMenuBuild to the object in question and
	uses the return value as the new menustrip object.

	When MUIM_ContextMenuBuild reaches area class, it just returns
	the contents of MUIA_ContextMenu so you needn't care about this
	method if you only have static, non-changing context menus.

	However, if your context menus depend on some internal states
	of your object or on the mouse position within your object,
	you have to build a subclass which overrides
	MUIM_ContextMenuBuild, creates a nice menustrip object and
	returns it

INPUTS

	mx - current x position of mouse
	my - current y position of mouse

	Since MUI does (unfortunately) not use relative coordinates
	at all, these two aren't relative either

RESULT

	If you return a pointer to a menustrip object, MUI will show
	it as popup menu.

	If you return the special value MUIV_ContextMenuBuild_Default,
	MUI will show the window's default menu instead. This is eg
	recommended for classes that only want popup menus on certain
	mouse positions.

	If you return NULL, nothing will happen. This is for
	compatibility for pre-MUI4 applications which used
	MUIM_ContextMenuBuild to detect the right mouse button.
	This is no longer recommended. With MUI4 and its event
	handlers, you can simply handle RMB just like LMB

NOTES

	MUI will never dispose the object you return. You must take
	care of this yourself, e.g. by storing a pointer somewhere
	in your instance data and killing it on the next invocation
	of MUIM_ContextMenuBuild and on OM_DISPOSE.

	Even when implementing MUIM_ContextMenuBuild, you *must* set
	MUIA_ContextMenu of your object to something different from NULL.
	MUI will find out that your object actually has a popup menu
	by directly checking the contents of MUIA_ContextMenu in the
	instance data of area class due to speed reasons.

SEE ALSO

MUIM_ContextMenuChoice

MUIM_ContextMenuChoice (V11) 0x80420f0e

SYNOPSIS

	DoMethod(obj,MUIM_ContextMenuChoice,MUIMenuitem *item);

DESCRIPTION

	Allows reacting on context menus in subclasses.

	See MUIA_ContextMenu for details

SEE ALSO

MUIM_CreateBubble

MUIM_CreateBubble (V18) 0x80421c41

SYNOPSIS

	DoMethod(obj,MUIM_CreateBubble,LONG x, LONG y, STRPTR txt, ULONG flags);

DESCRIPTION

	Together with MUIM_DeleteBubble, this method provides an
	interface for MUIs bubble mechanism. Applications can use
	bubbles for their own purpose, e.g. for indicating error
	conditions on certain gadgets.

	MUIM_CreateBubble creates a bubble at the specified
	coordinates with the specified (textual) contents. It
	returns a bubble "handle" that has to be passed to
	MUIM_DeleteBubble when the bubble shall disappear.

	There's no limitation on the number of bubbles, you can create
	lots of them at a time if you wish. Also, these custom bubbles
	are completely independant of MUI's bubble help system and won't
	disappear automatically when the mouse is moved.

	Note that bubbles will only show up when the object in question
	is visible. Otherwise MUIM_CreateBubble returns NULL. You are
	responsible for deleting the bubble *before* the object get's
	invisible. Good place to remove a custom bubble is e.g. the
	MUIM_Hide method of your object

INPUTS

	- x,y: window-relative coordinates of the bubble.

	- txt: custom text for the bubble. If you pass NULL here, MUI
	       will query the object with MUIM_CreateShortHelp method
	       for a text (like the automatic help system does).

	- flags:
	  - MUIV_CreateBubble_DontHidePointer:
	    prevents MUI from hiding the mouse pointer when displaying
	    the help bubble. It is recommended that you always set this,
	    unless your bubble is meant to disappear as soon as there
	    is some user input

RESULT

	This method returns a pointer to a (black box) bubble handle or
	NULL on failure. You have to pass the bubble handle to 
	MUIM_DeleteBubble if you want to delete the bubble later

SEE ALSO

MUIM_CreateDragImage

MUIM_CreateDragImage (V18) 0x8042eb6f [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_CreateDragImage,LONG touchx, LONG touchy, ULONG flags);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_CreateShortHelp

MUIM_CreateShortHelp (V11) 0x80428e93

SYNOPSIS

	DoMethod(obj,MUIM_CreateShortHelp,LONG mx, LONG my);

DESCRIPTION

	Allows dynamic creation of help bubble texts.

	When MUI is about to show a help bubble, it does not
	simply use the MUIA_ShortHelp field of area class. Instead,
	it sends a MUIM_CreateShortHelp to the object in question and
	uses the return value as text for the bubble.

	When MUIM_CreateShortHelp reaches area class, it just returns
	the contents of MUIA_ShortHelp, so you needn't care about this
	method if you only have static, non-changing help bubbles.

	However, if your help bubble texts depend on some internal states
	of your objects or on the mouse position within your objects,
	you have to create a subclass which overrides MUIM_CreateShortHelp,
	creates a custom text string and returns it.

	You can dynamically allocate memory here. MUI will call the
	method MUIM_DeleteShortHelp after the bubble has disappeared
	to give you a chance to free this memory again

INPUTS

	mx - current x position of mouse
	my - current y position of mouse

	Since MUI does (unfortunately) not use relative coordinates
	at all, these two aren't relative either

RESULT

	You must return a pointer to a string or NULL if you failed
	to create one. MUI will not show any bubble at all if you
	return NULL, so you can use this to selectively supply
	bubble help only on certain areas of your object

NOTES

	This method is sent by MUI. Never send it yourself.

	MUI will not free the string you return. You must take care of
	this yourself, e.g. by using static text or by freeing anything
	you allocated in the following MUIM_DeleteShortHelp method.

	Even when overriding MUIM_CreateShortHelp, you *must* set
	MUIA_ShortHelp of your object to something different from NULL.
	MUI will find out that your object actually has a bubble help
	by directly checking the contents of MUIA_ShortHelp in the
	instance data of area class due to speed reasons.

EXAMPLE

	Suggested use is something like

	obj = NewObject(..., MUIA_ShortHelp, TRUE, ...);

	and then override these methods in obj's class.

	ULONG MUIM_CreateShortHelp(...)
	{
	   STRPTR help;
	   int mx = msg->mx;
	   int my = msg->my;

	   mx -= _mleft(obj); // make coordinates relative
	   my -= _mtop(obj);

	   // no bubble at all if mouse is in a 10 pixel
	   // wide x-region at the edge of the object.
	   if (mx < 10 || mx > _mwidth(obj)-10)
	      return(NULL);

	   // allocate space for bubble text
	   if (!(help=AllocVec(300,MEMF_ANY)))
	      return(NULL);

	   // fill help string with some dynamic text
	   sprintf(help,"Yahoo... very dynamic... %ld %ld",mx,my);

	   return(help);
	}

	ULONG MUIM_DeleteShortHelp(...)
	{
	   FreeVec(msg->help);
	   return(0

SEE ALSO

MUIM_DeleteBubble

MUIM_DeleteBubble (V18) 0x804211af

SYNOPSIS

	DoMethod(obj,MUIM_DeleteBubble,APTR bubble);

DESCRIPTION

	Together with MUIM_CreateBubble, this method provides an
	interface for MUIs bubble mechanism. Applications can use
	bubbles for their own purpose, e.g. for indicating error
	conditions on certain gadgets.

	MUIM_DeleteBubble deletes a bubble that was previously
	created with MUIM_CreateBubble. Not that bubbles have to
	be deleted before an object get's invisible

INPUTS

	- bubble: pointer to black box bubble handle as returned by
	  MUIM_CreateBubble

RESULT

	The bubble will be removed. The return value is undefined

SEE ALSO

MUIM_DeleteDragImage

MUIM_DeleteDragImage (V18) 0x80423037 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_DeleteDragImage,struct MUI_DragImage *di);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_DeleteShortHelp

MUIM_DeleteShortHelp (V11) 0x8042d35a

SYNOPSIS

	DoMethod(obj,MUIM_DeleteShortHelp,STRPTR help);

DESCRIPTION

	Delete the string that MUIM_CreateShortHelp might have
	allocated.

	MUI will call this method if you returned a custom text
	in MUIM_CreateShortHelp when the bubble has disappeared.

	You can free memory that you allocated for the dynamic
	bubble text here

INPUTS

	help - the STRPTR you previously returned in
	       MUIM_CreateShortHelp

RESULT

	return NULL in every case

SEE ALSO

MUIM_DoDrag

MUIM_DoDrag (V20) 0x804216bb

SYNOPSIS

	DoMethod(obj,MUIM_DoDrag,LONG touchx, LONG touchy, ULONG flags);

DESCRIPTION

	This method invokes MUI's drag & drop handling. Normally,
	MUI takes care about this itself when objects are specified
	as draggable. However, if you e.g. have a whole group of
	objects that should be dragged (like a toolbar) and just a
	small "handle" button to start this operation, you must use
	this method

INPUTS

	touchx - x-distance between "click point" and object coordinates.
	         using the special value 0x80000000 will make MUI use
	         window->MouseX - _left(obj)

	touchy - y-distance between "click point" and object coordinates.
	         using the special value 0x80000000 will make MUI use
	         window->MouseY - _top(obj)

	flags  - MUIV_DoDrag_Async to enable asynchronous dragging,
            default is synchronic dragging (input is disabled

EXAMPLE

	Child, toolbar = HGroup,
		Child, draghandle = SimpleButton("dragme"),
		Child, SimpleButton("toolbutton1"),
		Child, SimpleButton("toolbutton2"),
		Child, SimpleButton("toolbutton3"),
		Child, SimpleButton("toolbutton4"),
		End,

	DoMethod(draghandle,MUIM_Notify,MUIA_Pressed,TRUE,
	 toolbar,4,MUIM_DoDrag,0x80000000,0x80000000,MUIV_DoDrag_Async

SEE ALSO

MUIM_DragBegin

MUIM_DragBegin (V11) 0x8042c03a

SYNOPSIS

	DoMethod(obj,MUIM_DragBegin,MUIArea *obj);

DESCRIPTION

	Inform an object that it has become the active destination
	of a drag&drop action. An object will only receive this if
	it has responded positively to a previous MUIM_DragQuery

SEE ALSO

MUIM_DragDrop

MUIM_DragDrop (V11) 0x8042c555

SYNOPSIS

	DoMethod(obj,MUIM_DragDrop,MUIArea *obj, LONG x, LONG y, ULONG qualifier);

DESCRIPTION

        Indicate that the user dropped something on the current
	object

SEE ALSO

MUIM_DragEvent

MUIM_DragEvent (V20) 0x8042b774 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_DragEvent,struct Window *objwindow, Boopsiobject *obj, struct MUI_DragImage *di, struct IntuiMessage *imsg, LONG muikey, ULONG mouseptrtype, ULONG flags);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_DragFinish

MUIM_DragFinish (V11) 0x804251f0

SYNOPSIS

	DoMethod(obj,MUIM_DragFinish,MUIArea *obj, LONG dropfollows);

DESCRIPTION

	Indicate that an object is no longer the active destination
	object of a drag&drop action

SEE ALSO

MUIM_DragQuery

MUIM_DragQuery (V11) 0x80420261

SYNOPSIS

	DoMethod(obj,MUIM_DragQuery,MUIArea *obj);

DESCRIPTION

	MUI offers complete drag & drop capabilities for every object.
	If enabled, the user is able to grab an object, drag it around
	and drop it on another object. Currently, D&D is limited to
	single applications, i.e. you cannot take an object from one
	program and drop it into another one. D&D between different
	windows of the same application, however, is fine.

	MUI controls the D&D actions with a set of five methods:
	MUIM_DragQuery, MUIM_DragBegin, MUIM_DragReport, MUIM_DragDrop
	and MUIM_DragFinish. Basically things work this way:

	Lets assume the user has taken an object (called the source
	object) and is now starting to drag it around. During
	dragging, MUI will find out which object is currently under
	the mouse pointer and if it found one, send it the
	MUIM_DragQuery method. An object that receives MUIM_DragQuery
	can now determine it it wishes to accept drops from the source
	object or not. If it responds positively, the object will
	become the current destination object.

	Due to the nature of MUIs layout system, a specific x,y pair
	of coordinates cannot be bound to a specific object
	immediately. Instead, the coordinates belong to a whole tree
	of objects, for example some cycle gadget, its parent group,
	the parent group of the parent group and so on until the tree
	reaches the windows root object. To allow complete groups of
	objects to participate in D&D business, the MUIM_DragQuery is
	first sent to the deepest nested object (the cycle gadget in
	the example above). If this one doesn't respond, MUI sends a
	MUIM_DragQuery to its parent group and so on until it either
	finds some object which accepts the drop or reaches the end of
	the tree. If there is an accepting object, it will become the
	current destination. if there isn't, no destination will be
	set.

	Objects becoming active destinations of a drag process learn
	about their current state by receiving a MUIM_DragBegin
	method. This method, when reaching area class, e.g. draws a
	special frame around the object to indicate the current state
	to the user.

	The opposite of MUIM_DragBegin is MUIM_DragFinish and will be
	sent as soon as the object stops being destination of the drag
	process, i.e. because the user aborted the drag or moved out
	of the bounding box. MUIM_DragFinish will also be sent after a
	successful drop, you can rely on receiving a MUIM_DragFinish
	if you received a MUIM_DragBegin before. Furthermore, only one
	object will be between MUIM_DragBegin and MUIM_DragFinish at
	any time.

	Active destination objects (between MUIM_DragBegin and
	MUIM_DragFinish) receive MUIM_DragReport methods as long as
	the user moves the mouse within the object. MUIM_DragReport
	contains the mouse coordinates, so the object can update its
	display according to the position of the source object. A
	listview would e.g. indicate the insert position to give the
	user an idea where the source would be inserted in case of a
	drop.

	All the methods mentioned above are just interim messages that
	help visualizing the drag process. When the user actually
	decides to drop its source object, the current destination
	object (if any) receives a MUIM_DragDrop method and can
	perform whatever operation it thinks is suited to handle a D&D
	action from the source object.

	You probably have noticed that D&D is controlled by methods.
	This means that you need to write subclasses if you intend to
	use it. However, you needn't implement all the above mentioned
	things to reach your goal. In fact, MUIM_DragQuery and
	MUIM_DragDrop are enough for almost all D&D invocations.
	Here's a little example of how MUI implements D&D between
	objects of Pendisplay class. These few lines allow the user to
	take any Pendisplay (or subclasses from Pendisplay like e.g.
	Poppen class) and drop it onto another one:

	ULONG mDragQuery(cl,obj,struct MUIP_DragQuery *msg)
	{
		char *spec;

		/* refuse to be dropped on ourself */
		if (msg->obj==obj)
			return(MUIV_DragQuery_Refuse);

		/* if the source object offers the attribute */
		/* we want, show that we would accept it. */
		if (get(msg->obj,MUIA_Pendisplay_Spec,&spec))
			return(MUIV_DragQuery_Accept);

		/* refuse otherwise */
		return(MUIV_DragQuery_Refuse);
	}


	ULONG mDragDrop(cl,obj,struct MUIP_DragDrop *msg)
	{
		char *spec;

		/* copy the attribute from the source object */
		get(msg->obj,MUIA_Pendisplay_Spec,&spec);
		set(obj,MUIA_Pendisplay_Spec,spec);

		return(0

SEE ALSO

MUIM_DragReport

MUIM_DragReport (V11) 0x8042edad

SYNOPSIS

	DoMethod(obj,MUIM_DragReport,MUIArea *obj, LONG x, LONG y, LONG update, ULONG qualifier);

DESCRIPTION

	Interim messages from MOUSEMOVEs and INTUITICKs sent as long
	as an object is active destination of a drag&drop action

RESULT

	Behaviour of the current drag and drop operation can be altered
	by returning one of the following values:

	- MUIV_DragReport_Abort
	Abort drag and drop operation.

	- MUIV_DragReport_Continue
	Continue drag and drop operation. This is the default return 
	value.

	- MUIV_DragReport_Lock
	Lock the drag and drop operation over the actual target.

	- MUIV_DragReport_Refresh
	Ask MUI to redraw the drag image. This can be usefull if the 
	target object does a visual feedback of the drag and drop
	operation (ie: MUI_Redraw() is called in MUIM_DragReport

SEE ALSO

MUIM_Draw

MUIM_Draw (V4 ) 0x80426f3f [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_Draw,ULONG flags);

DESCRIPTION

	see developer documentation

MUIM_DrawBackground

MUIM_DrawBackground (V11) 0x804238ca

SYNOPSIS

	DoMethod(obj,MUIM_DrawBackground,LONG left, LONG top, LONG width, LONG height, LONG xoffset, LONG yoffset, LONG flags);

DESCRIPTION

	If you decided to use MUIA_FillArea, FALSE for your custom
	class, i.e. if you care about background rendering yourself,
	you can use this method to draw a specific part of your
	objects background with the defined MUIA_Background

INPUTS

	- left, top, right, bottom: rectangle to draw, be sure to
	  add your objects _mleft and _mtop coordinates.

	- xoffset, yoffset: offset to use when background is a pattern.

	- flags: always set to 0 for now

RESULT

	The result value of this method is currently undefined

SEE ALSO

MUIM_ExitResize

MUIM_ExitResize (V22) 0x80428431 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_ExitResize,);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_GoActive

MUIM_GoActive (V8 ) 0x8042491a [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_GoActive,ULONG flags);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_GoInactive

MUIM_GoInactive (V8 ) 0x80422c0c [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_GoInactive,ULONG flags);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_HandleEvent

MUIM_HandleEvent (V16) 0x80426d66 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_HandleEvent,struct IntuiMessage *imsg, LONG muikey, struct MUI_EventHandlerNode *ehn);

DESCRIPTION

	This method is invoked whenever one of an event handlers
	trigger signals arrives. It's described in area class
	context but does not really belong here

INPUTS

	imsg - pointer to a struct IntuiMessage that caused the event.
	       note well that this may be NULL in which case you
	       simply not parse imsg.

	muikey - if the imsg translates to a predefined keystroke,
	         this parameter holds the corresponding MUIKEY_XXXX
	         value. Otherwise it will be MUIKEY_NONE

RESULT

	The result is a bitfield. Currently, only one bit is defined:

	- MUI_EventHandlerRC_Eat
	  Set this if this event was for you and you want MUI to stop
	  calling other event handlers in the chain.

	All other bits are reserved for future use and must be zero

NOTES

	You must not rely on imsg being non-NULL, regardless whether
	muikey is set or unset.

SEE ALSO

MUIM_HandleInput

MUIM_HandleInput (V4 ) 0x80422a1a [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_HandleInput,struct IntuiMessage *imsg, LONG muikey);

DESCRIPTION

	see developer documentation

MUIM_Hide

MUIM_Hide (V4 ) 0x8042f20f [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_Hide);

DESCRIPTION

	see developer documentation

MUIM_InitResize

MUIM_InitResize (V22) 0x804292bd [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_InitResize,ULONG flags);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_Layout

MUIM_Layout (V4 ) 0x8042845b

SYNOPSIS

	DoMethod(obj,MUIM_Layout,LONG left, LONG top, LONG width, LONG height, ULONG flags);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_OpenCustomFont

MUIM_OpenCustomFont (V22) 0x8042f3dc [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_OpenCustomFont,STRPTR spec);

DESCRIPTION

	Makes it possible for a Custom Class to render text using other fonts

	The font may be opened any time during object's life cycle, but may only
	be used after MUIM_Setup. Draw with MUIM_Text.

	The returned font object is owned by the object and will be automatically
	released in DISPOSE, unless explicitly closed by MUIM_CloseCustomFont

INPUTS

	spec - font spec, see MUIA_CustomFont

EXAMPLE

	in MUIM_Setup:
	// open a font 2 pixels higher than object's font
	Object *font = DoMethod(obj, MUIM_OpenCustomFont, "/+2");

	in MUIM_Draw:
	// measure text bounds
	ULONG dim = DoMethod(font, MUIM_TextDim, "test", 4, NULL, 0);
	// draw the text
	DoMethod(font, MUIM_Text, _mleft(obj), _mtop(obj), dim >> 16, dim & 0xffff,
		"test", 4, NULL, 0);

	optionally:
	// dispose of the font
	DoMethod(obj, MUIM_CloseCustomFont, font

SEE ALSO

MUIM_Relayout

MUIM_Relayout (V22) 0x8042b381

SYNOPSIS

	DoMethod(obj,MUIM_Relayout,ULONG flags);

DESCRIPTION

	yet undocumented, please complain in mailinglist

MUIM_Setup

MUIM_Setup (V4 ) 0x80428354 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_Setup,struct MUI_RenderInfo *RenderInfo);

DESCRIPTION

	see developer documentation

MUIM_Show

MUIM_Show (V4 ) 0x8042cc84 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_Show,struct LongRect *clip);

DESCRIPTION

	see developer documentation

MUIM_Text

MUIM_Text (V20) 0x8042ee70 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_Text,LONG left,LONG top,LONG width,LONG height,STRPTR text,LONG len,STRPTR preparse,ULONG flags);

DESCRIPTION

	This function is a preffered way to render text
	inside the object. It uses object's font and it's
	color (if not specified in the string itself).

	Expects the string to be UTF-8 if MUIA_Unicode is set

INPUTS

	left - draw position in the RastPort
	top
	width - together with height sets the clipping bounds to render in
	height
	text - pointer to the text to draw, either in system codepage or
	       UTF-8 if the object has MUIA_Unicode set
	len - length of the text to draw in bytes or -1 to render the whole text
	preparse - preparse string
	flags - MUST be 0 for time being

SEE ALSO

MUIM_TextDim

MUIM_TextDim (V20) 0x80422ad7 [For use within custom classes only]

SYNOPSIS

	DoMethod(obj,MUIM_TextDim,STRPTR text,LONG len,STRPTR preparse,ULONG flags);

DESCRIPTION

	Use this function to messure area which will be affected by text
	rendered with MUIM_Text method. It's return value contains two
	16bit values: width and height:

	width = returnvalue & 0xffff;
	height = returnvalue >> 16;

	Expects the string to be UTF-8 if MUIA_Unicode is set

INPUTS

	text - pointer to the text to draw, either in system codepage or
	       UTF-8 if the object has MUIA_Unicode set
	len - length of the text to draw in bytes or -1 to render the whole text
	preparse - preparse string
	flags - MUST be 0 for time being

SEE ALSO

MUIM_UpdateConfig

MUIM_UpdateConfig (V20) 0x8042b0a9

SYNOPSIS

	DoMethod(obj,MUIM_UpdateConfig,ULONG cfgid, LONG redrawcount, Boopsiobject *redrawobj[64], UBYTE redrawflags[64]);

DESCRIPTION

	yet undocumented, please complain in mailinglist