GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
AG_BUTTON(3) FreeBSD Library Functions Manual AG_BUTTON(3)

AG_Button
agar button widget

#include <agar/core.h>
#include <agar/gui.h>

The AG_Button widget implements a simple push-button displaying an image or a text label. AG_Button can be used to trigger events, or control a boolean value.

AG_Object(3) -> AG_Widget(3) -> AG_Button.

AG_Button *
AG_ButtonNew(AG_Widget *parent, Uint flags, const char *format, ...);


AG_Button *
AG_ButtonNewS(AG_Widget *parent, Uint flags, const char *label);


AG_Button *
AG_ButtonNewFn(AG_Widget *parent, Uint flags, const char *label, void (*fn)(AG_Event *), const char *fnArgs, ...);


AG_Button *
AG_ButtonNew{Int,Uint8,Uint16,Uint32}(AG_Widget *parent, Uint flags, const char *label, <Type> *p);


AG_Button *
AG_ButtonNew{Flag,Flag8,Flag16,Flag32}(AG_Widget *parent, Uint flags, const char *label, Uint *p, <Type> bitmask);


void
AG_ButtonSetPadding(AG_Button *button, int lPad, int rPad, int tPad, int bPad);


void
AG_ButtonSetFocusable(AG_Button *button, int flag);


void
AG_ButtonSetSticky(AG_Button *button, int flag);


void
AG_ButtonInvertState(AG_Button *button, int flag);


void
AG_ButtonJustify(AG_Button *button, enum ag_text_justify justify);


void
AG_ButtonValign(AG_Button *button, enum ag_text_valign valign);


void
AG_ButtonSetRepeatMode(AG_Button *button, int repeat_flag);


void
AG_ButtonSurface(AG_Button *button, const AG_Surface *su);


void
AG_ButtonSurfaceNODUP(AG_Button *button, AG_Surface *su);


void
AG_ButtonText(AG_Button *button, const char *format, ...);


void
AG_ButtonTextS(AG_Button *button, const char *label);

The AG_ButtonNew() function allocates, initializes, and attaches a AG_Button widget. If the label argument is given, it sets a default text caption. For the list of acceptable flags, see BUTTON FLAGS section.

The AG_ButtonNewFn() variant creates a button and implicitely sets a callback (event handler) function to be executed whenever the button is pressed. See AG_Event(3) for details on Agar event handlers. Since function-triggering buttons rarely make use of the "state" binding, AG_ButtonNewFn() implies AG_BUTTON_EXCL (unless AG_BUTTON_NOEXCL is passed).

The AG_ButtonNew{Int,Uint8,Uint16,Uint32}() functions tie the state of the button (the ‘state’ binding) with the given integer variable, where 1 = True and 0 = False.

The AG_ButtonNew{Flag,Flag8,Flag16,Flag32}(), functions tie the state of the button with the state of the bits described by bitmask in the specified integer variable. AG_ButtonNewFlag() binds to an int, AG_ButtonNewFlag8() binds to an Uint8, etc.

The AG_ButtonSetPadding() function sets the padding around the label in pixels. If a parameter is -1, its current value is preserved. Note that when using a text label, this setting is independent from that of the label (use AG_LabelSetPadding(3) on the lbl member of the AG_Button to configure the text label padding as well).

The AG_ButtonSetFocusable() function with an argument of 0 prevents the button from gaining focus. The default is to allow buttons to gain focus.

The AG_ButtonSetSticky() function enables or disable sticky mode. Under sticky mode, the button will not spring back to its previous state following a click event. This mode is mostly useful when the button's state is bound to a boolean variable.

The AG_ButtonInvertState() function defines whether to invert the meaning of the boolean variable bound to the button.

AG_ButtonJustify() sets the justification for the button text label (or icon):

enum ag_text_justify {
	AG_TEXT_LEFT,
	AG_TEXT_CENTER,
	AG_TEXT_RIGHT
};

AG_ButtonValign() sets the vertical alignment for the button text label (or icon):

enum ag_text_valign {
	AG_TEXT_TOP,
	AG_TEXT_MIDDLE,
	AG_TEXT_BOTTOM
};

The AG_ButtonSetRepeatMode() flag enables or disables repeat mode. Repeat mode causes multiple ‘button-pushed’ events to be posted periodically for as long as the button is triggered. Repeat mode is used notably by AG_Numerical(3).

AG_ButtonSurface() sets the button label to a copy of the given surface. The AG_ButtonSurfaceNODUP() variant uses the given surface as source without copying. If a text label currently exists, it is removed.

AG_ButtonText() sets the label of the button from the specified text string. If a surface is currently set, it is removed.

The following flags are provided:
AG_BUTTON_STICKY
Prevent the button from springing back to its previous state following a click. Set on initialization or by AG_ButtonSetSticky().
AG_BUTTON_MOUSEOVER
The cursor is over the button area (read-only).
AG_BUTTON_REPEAT
Repeat mode is enabled (read-only, see AG_ButtonSetRepeatMode()).
AG_BUTTON_INVSTATE
Invert the interpretation of the "state" binding. By default, a value of 1 causes the button to be pressed.
AG_BUTTON_EXCL
Disable the test for redrawing the button upon external changes to the "state" binding.
AG_BUTTON_HFILL
Expand horizontally in parent (equivalent to invoking AG_ExpandHoriz(3)).
AG_BUTTON_VFILL
Expand vertically in parent (equivalent to invoking AG_ExpandVert(3)).
AG_BUTTON_EXPAND
Shorthand for AG_BUTTON_HFILL|AG_BUTTON_VFILL.

The AG_Button widget generates the following events:

button-pushed(int new_state)
The button was pressed. If using AG_BUTTON_STICKY, the new_state argument indicates the new state of the button.

The AG_Button widget provides the following bindings. In all cases, a value of 1 is considered boolean TRUE, and a value of 0 is considered boolean FALSE.

BOOL *state
Value (1/0) of natural integer
INT *state
Value (1/0) of natural integer
UINT8 *state
Value (1/0) of 8-bit integer
UINT16 *state
Value (1/0) of 16-bit integer
UINT32 *state
Value (1/0) of 32-bit integer
FLAGS *state
Bits in an int
FLAGS8 *state
Bits in 8-bit word
FLAGS16 *state
Bits in 16-bit word
FLAGS32 *state
Bits in 32-bit word

The following code fragment creates a button and sets a handler function for the ‘button-pushed’ event:
void
MyHandlerFn(AG_Event *event)
{
	AG_TextMsg(AG_MSG_INFO, "Hello, %s!", AG_STRING(1));
}

...


AG_ButtonNewFn(parent, 0, "Hello", MyHandlerFn, "%s", "world");

The following code fragment uses buttons to control specific bits in a 32-bit word:

Uint32 MyFlags = 0;

AG_ButtonNewFlag32(parent, 0, "Bit 1", &MyFlags, 0x01);
AG_ButtonNewFlag32(parent, 0, "Bit 2", &MyFlags, 0x02);

The following code fragment uses a button to control an int protected by a mutex device:

int MyInt = 0;
AG_Mutex MyMutex;
AG_Button *btn;

AG_MutexInit(&MyMutex);
btn = AG_ButtonNew(parent, 0, "Mutex-protected flag");
AG_BindIntMp(btn, "state", &MyInt, &MyMutex);

AG_Event(3), AG_Intro(3), AG_Surface(3), AG_Toolbar(3), AG_Widget(3), AG_Window(3)

The AG_Button widget first appeared in Agar 1.0.
August 20, 2002 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.