TABLE OF CONTENTS

Notify.mui/Notify.mui
Notify.mui/MUIM_CallHook
Notify.mui/MUIM_Notify
Notify.mui/MUIM_Set
Notify.mui/MUIM_SetAsString
Notify.mui/MUIM_WriteLong
Notify.mui/MUIM_WriteString
Notify.mui/MUIA_AppMessage
Notify.mui/MUIA_HelpFile
Notify.mui/MUIA_HelpLine
Notify.mui/MUIA_HelpNode
Notify.mui/MUIA_Revision
Notify.mui/MUIA_UserData
Notify.mui/MUIA_Version
Notify.mui/Notify.mui

	Notify class is superclass of all other MUI classes.
	It's main purpose is to handle MUI's notification
	mechanism, but it also contains some other methods
	and attributes useful for every object.
Notify.mui/MUIM_CallHook

    NAME
	MUIM_CallHook

    SYNOPSIS
	DoMethod(obj,MUIM_CallHook,struct Hook *Hook, ULONG param1, /* ... */);

    FUNCTION
	Call a standard amiga callback hook, defined by a Hook
	structure. Together with MUIM_Notify, you can easily
	bind hooks to buttons, your hook will be called when
	the button is pressed.

	The hook will be called with a pointer to the hook
	structure in a0, a pointer to the calling object in a2
	and a pointer to the first parameter in a1.

    INPUTS
	Hook       pointer to a struct Hook.
	param1,... zero or more parameters. The hook function will
	           receive a pointer to the first parameter in
	           register a1.

    EXAMPLE

	standalone:

	DoMethod(obj,MUIM_CallHook,&hookstruct,13,42,"foobar","barfoo");

	within a notification statement:

	DoMethod(propobj,MUIM_Notify,MUIA_Prop_First,MUIV_EveryTime,
	         propobj,3,MUIM_CallHook,&prophook,MUIV_TriggerValue);

	prophook will be called every time the knob is moving and gets
	a pointer to the knobs current level in a1.
Notify.mui/MUIM_Notify

    NAME
	MUIM_Notify

    SYNOPSIS
	DoMethod(obj,MUIM_Notify,ULONG TrigAttr, ULONG TrigVal, APTR DestObj, ULONG FollowParams, /* ... */);

    FUNCTION
	Add a notification event handler to an object. Notification
	is essential for every MUI application.

	A notification statement consists of a source object,
	an attribute/value pair, a destination object and a
	notification method. The attribute/value pair belongs
	to the source object and determines when the notification
	method will be executed on the destination object.

	Whenever the source object gets the given attribute set to
	the given value (this can happen because of the user
	pressing some gadgets or because of your program explicitly
	setting the attribute with SetAttrs()), the destination
	object will execute the notification method.

	With some special values, you can trigger the notification
	every time the attribute is changing. In this case, you
	can include the triggering attributes value within the
	notification method. See below.

	One big problem with notification are endless loops.
	Imagine you have a prop gadget and want to show its
	state with a gauge object. You connect MUIA_Prop_First
	with MUIA_Gauge_Max and everything is fine, the gauge
	gets updated when the user drags around the gadget. On
	the other hand, if your program sets the gauge to a new
	value, you might want your prop gadget to immediately
	show this change and connect MUIA_Gauge_Max width
	MUIA_Prop_First. Voila, a perfect endless loop.

	To avoid these conditions, MUI always checks new
	attribute values against the current state and
	cancels notification when both values are equal.
	Thus, setting MUIA_Prop_First to 42 if the prop
	gadgets first position is already 42 won't trigger
	any notification event.

    INPUTS
	TrigAttr     attribute that triggers the notification.

	TrigValue    value that triggers the notification. The
	             special value MUIV_EveryTime makes MUI execute
	             the notification method every time when
	             TrigAttr changes. In this case, the special
	             value MUIV_TriggerValue in the notification
	             method will be replaced with the value
	             that TrigAttr has been set to. You can use
	             MUIV_TriggerValue up to four times in one
	             notification method.

	DestObj      object on which to perform the notification
	             method.

	FollowParams number of following parameters. If you e.g.
	             have a notification method with three parts
	             (maybe MUIM_Set,attr,val), you have to set
	             FollowParams to 3. This allows MUI to copy
	             the complete notification method into a
	             private buffer for later use.

	...          following is the notification method.

    EXAMPLE

	/*
	** Every time when the user releases a button
	** (and the mouse is still over it), the button object
	** gets its MUIA_Pressed attribute set to FALSE.
	** Thats what a program can react on with notification,
	** e.g. by openening a window.
	*/

	DoMethod(buttonobj,MUIM_Notify,
	   MUIA_Pressed, FALSE,                /* attribute/value pair */
	   windowobj,                          /* destination object   */
	   3,                                  /* 3 following words    */
	   MUIM_Set, MUIA_Window_Open, TRUE);  /* notification method  */

	/*
	** Lets say we want to show the current value of a
	** prop gadget somewhere in a text field:
	*/

	DoMethod(propobj,MUIM_Notify,      /* notification is triggered   */
	   MUIA_Prop_First, MUIV_EveryTime /* every time the attr changes */
	   textobj                         /* destination object */
	   4,                              /* 4 following words  */
	   MUIM_SetAsString, MUIA_Text_Contents,
	   "value is %ld !", MUIV_TriggerValue);
	   /* MUIV_TriggerValue will be replaced with the
	      current value of MUIA_Prop_First */

	/*
	** Inform our application when the user hits return
	** in a string gadget:
	*/

	DoMethod(stringobj,MUIM_Notify,
	   MUIA_String_Acknowledge, MUIV_EveryTime,
	   appobj, 2, MUIM_Application_ReturnID, ID_FOOBAR);
Notify.mui/MUIM_Set

    NAME
	MUIM_Set

    SYNOPSIS
	DoMethod(obj,MUIM_Set,ULONG attr, ULONG val);

    FUNCTION
	Set an attribute to a value. Normally, you would set
	attributes with intuition.library SetAttrs() or with
	the OM_SET method as with any other boopsi objects.
	But since these calls need a complete tag list, not
	just a single attribute/value pair, they are not
	useful within a MUIM_Notify method.

    INPUTS
	attr  attribute you want to set.
	val   value to set the attribute to.

    EXMAPLE
	DoMethod(strobj,MUIM_Set,MUIA_String_Contents,"foobar");
	and
	SetAttrs(strobj,MUIA_String_Contents,"foobar",TAG_DONE);
	are equal.

    SEE ALSO
	MUIM_SetAsString, MUIM_Notify
Notify.mui/MUIM_SetAsString

    NAME
	MUIM_SetAsString

    SYNOPSIS
	DoMethod(obj,MUIM_SetAsString,ULONG attr, char *format, ULONG val, /* ... */);

    FUNCTION
	Set a (text kind) attribute to a string. This can be useful
	if you want to connect a numeric attribute of an object with
	a text attribute of another object.

    INPUTS
	attr    attribute to set.
	format  C like formatting string, remember to use "%ld" !
	val,... one or more paremeters for the format string.

    EXAMPLE

	stand alone:

	DoMethod(txobj,MUIM_SetAsString,MUIA_Text_Contents,
	         "My name is %s and I am %ld years old.",name,age);

	within a notification statement:

	DoMethod(propobj,MUIM_Notify,MUIA_Prop_First,MUIV_EveryTime,
	         txobj,4,MUIM_SetAsString,MUIA_Text_Contents,
	         "prop gadget shows %ld.",MUIV_TriggerValue);

    SEE ALSO
	MUIM_Set, MUIM_Notify
Notify.mui/MUIM_WriteLong

    NAME
	MUIM_WriteLong

    SYNOPSIS
	DoMethod(obj,MUIM_WriteLong,ULONG val, ULONG *memory);

    FUNCTION
	This method simply writes a longword somewhere to memory.
	Although this seems quite useless, it might become handy
	if used within a notify statement. For instance, you could
	easily connect the current level of a slider with some
	member of your programs data structures.

    INPUTS
	val    - value to write
	memory - location to write the value to

    EXAMPLE

	/* Let the slider automagically write its level to a variable */

	static LONG level;

	DoMethod(slider,MUIM_Notify,MUIA_Slider_Level,MUIV_EveryTime,
	   slider,3,MUIM_WriteLong,MUIV_TriggerValue,&level);

    SEE ALSO
	MUIM_WriteString, MUIM_Notify
Notify.mui/MUIM_WriteString

    NAME
	MUIM_WriteString

    SYNOPSIS
	DoMethod(obj,MUIM_WriteString,char *str, char *memory);

    FUNCTION
	This method simply copies a string somewhere to memory.
	Although this seems quite useless, it might become handy
	if used within a notify statement. For instance, you could
	easily connect the current contents of a string gadget
	with some member of your programs data structures.

	Note: The string is copied with strcpy(), you must assure
              that the destination points to enough memory.

    INPUTS
	str    - string to copy
	memory - location to write the value to

    EXAMPLE

	static char buffer[256];

	DoMethod(string,MUIM_Notify,MUIA_String_Contents,MUIV_EveryTime,
	   string,3,MUIM_WriteString,MUIV_TriggerValue,buffer);

    SEE ALSO
	MUIM_WriteLong, MUIM_Notify
Notify.mui/MUIA_AppMessage

    NAME
	MUIA_AppMessage -- [..G], struct AppMessage *

    FUNCTION
	When your window is an AppWindow, i.e. you have set the
	MUIA_Window_AppWindow attribute to TRUE, you will be able
	to get AppMessages by listening to MUIA_AppMessage.
	Whenever an AppMessage arrives, this attribute will
	be set to a pointer to that message.

	MUIA_AppMessage is object specific. You can e.g. set up
	different notifications for different objects in your window,
	they will only get exectued when icons are dropped over the
	specific object.

	If you wait on MUIA_AppMessage with a window object, your
	notify will always get executed when icons are dropped on
	the window.

	Notes:

	- You should use the MUIM_CallHook method to call a
	  hook function when an AppMessage arrives (see below).
	  The pointer to the AppMessage is only as long as the
	  notification method is executed.

	- AppWindows are only possible on the workench screen.


    EXAMPLE

	/* Call the AppMsgHook when an icon is dropped on a listview */

	DoMethod(lvobj,MUIM_Notify,MUIA_AppMessage,MUIV_EveryTime,
	         lvobj,3,MUIM_CallHook,&AppMsgHook,MUIV_TriggerValue);

	/* Call the AppMsgHook when an icon is dropped on the window */

	DoMethod(winobj,MUIM_Notify,MUIA_AppMessage,MUIV_EveryTime,
	         winobj,3,MUIM_CallHook,&AppMsgHook,MUIV_TriggerValue);

    SEE ALSO
	MUIA_Window_AppWindow, MUIA_Application_DropObject, MUIM_CallHook
Notify.mui/MUIA_HelpFile

    NAME
	MUIA_HelpFile -- [ISG], STRPTR

    FUNCTION
	This attribute allows defining an AmigaGuide style file
	to be displayed when the user requests online help.

	When the HELP button is pressed, MUI tries to obtain
	MUIA_HelpFile from the current object (the one under
	the mouse pointer). If MUIA_HelpFile is not defined,
	MUI continues asking the parent object for this
	attribute (usually a group, but remember: the parent
	of a windows root object is the window itself, the
	parent of a window is the application).

	When a non NULL MUIA_HelpFile is found, the same procedure
	is applied to MUIA_HelpNode and MUIA_HelpLine. Then MUI
	puts the application to sleep and displays the file at
	the position specified width MUIA_HelpNode and/or MUIA_HelpLine.

	This behaviour allows you e.g. to define one MUIA_HelpFile
	for your application object and different help nodes
	and lines for your applications windows and/or gadgets.

    EXAMPLE

	ApplicationObject,
	   ...
	   MUIA_HelpFile, "progdir:myapp.guide",
	   ...,
	   SubWindow, WindowObject,
	      MUIA_Window_Title, "Prefs Window",
	      ...,
	      MUIA_HelpNode, "prefs-section",
	      ...,
	      End,

	   SubWindow, WindowObject,
	      MUIA_Window_Title, "Play Window",
	      ...
	      MUIA_HelpNode, "play-section",
	      ...
	      WindowContents, VGroup,
	         ...,
	         Child, StringObject,
	            MUIA_HelpNode, "play-string",
	            ...,
	            End,
	         End,
	      End,
	   End;

	In this case, the user will get the prefs-section chapter
	of "myapp.guide" when he requests help in the Prefs window,
	the play-string chapter when he requests help over the
	string gadget in the Play window or the play-section
	chapter somewhere else in the Play window.

    SEE ALSO
	MUIA_HelpNode, MUIA_HelpLine
Notify.mui/MUIA_HelpLine

    NAME
	MUIA_HelpLine -- [ISG], LONG

    FUNCTION
	Define a line in a help file specified with MUIA_HelpFile.

    SEE ALSO
	MUIA_HelpFile, MUIA_HelpNode
Notify.mui/MUIA_HelpNode

    NAME
	MUIA_HelpNode -- [ISG], STRPTR

    FUNCTION
	Define a node in a help file specified with MUIA_HelpFile.

    SEE ALSO
	MUIA_HelpFile, MUIA_HelpLine
Notify.mui/MUIA_Revision

    NAME
	MUIA_Revision -- [..G], LONG

    FUNCTION
	Get the revision number of an objects class. Although
	MUIA_Revision is documented at notify class, you will
	of course receive the revision number of the objects true
	class.

    EXAMPLE
	strobj = MUI_NewObject(MUIC_String,...,TAG_DONE);
        ...
	get(strobj,MUIA_Version ,&v);
	get(strobj,MUIA_Revision,&r);
	printf("String class version %ld.%ld\n",v,r);

    SEE ALSO
	MUIA_Version
Notify.mui/MUIA_UserData

    NAME
	MUIA_UserData -- [ISG], ULONG

    FUNCTION
	A general purpose value to fill in any kind of information.
Notify.mui/MUIA_Version

    NAME
	MUIA_Version -- [..G], LONG

    FUNCTION
	Get the version number of an objects class. Although
	MUIA_Version is documented at notify class, you will
	of course receive the version number of the objects true
	class.

    EXAMPLE
	strobj = MUI_NewObject(MUIC_String,...,TAG_DONE);
        ...
	get(strobj,MUIA_Version ,&v);
	get(strobj,MUIA_Revision,&r);
	printf("String class version %ld.%ld\n",v,r);

    SEE ALSO
	MUIA_Revision
