AG_Checkbox
— agar
checkbox widget
#include <agar/core.h>
#include <agar/gui.h>
The AG_Checkbox
widget controls a boolean
variable (i.e., an int or a set of bits in an
integer). If a text label is specified, it is displayed next to the
control.
AG_Checkbox *
AG_CheckboxNew
(AG_Widget
*parent, Uint
flags, const char
*format, ...);
AG_Checkbox *
AG_CheckboxNewS
(AG_Widget
*parent, Uint
flags, const char
*label);
AG_Checkbox *
AG_CheckboxNewFn
(AG_Widget
*parent, Uint
flags, const char
*label, AG_EventFn
fn, const char
*fmt, ...);
AG_Checkbox *
AG_CheckboxNewInt
(AG_Widget
*parent, Uint
flags, const char
*label, int
*pBool);
AG_Checkbox *
AG_CheckboxNewUint
(AG_Widget
*parent, Uint
flags, const char
*label, Uint
*pBool);
AG_Checkbox *
AG_CheckboxNewFlag
(AG_Widget
*parent, Uint
flags, const char
*label, Uint
*pFlags, Uint
bitmask);
void
AG_CheckboxSetFromFlags
(AG_Widget
*parent, Uint
flags, Uint
*pFlags, const
AG_FlagDescr *flagsDescr);
void
AG_CheckboxSetFromFlagsFn
(AG_Widget
*parent, Uint
flags, Uint
*pFlags, const
AG_FlagDescr *flagsDescr,
AG_EventFn fn,
const char *fmt,
...);
int
AG_CheckboxGetState
(AG_Checkbox
*checkbox);
void
AG_CheckboxSetState
(AG_Checkbox
*checkbox, int
enable);
void
AG_CheckboxToggle
(AG_Checkbox
*checkbox);
The
AG_CheckboxNew
()
function allocates, initializes, and attaches a
AG_Checkbox
widget.
AG_CheckboxNew
() accepts an optional text label
argument. The AG_CheckboxNewFn
() variant also
assigns the specified callback function to the
‘checkbox-changed’ event.
Acceptable values for the flags argument
include:
- AG_CHECKBOX_INVERT
- Invert the logical interpretation of "state".
- AG_CHECKBOX_SET
- Set default "state" to 1 (default = 0).
- AG_CHECKBOX_EXCL
- Advise that this checkbox is the only widget accessing "state"
(so periodic updates are not needed).
- AG_CHECKBOX_HFILL
- Expand horizontally in parent container.
- AG_CHECKBOX_VFILL
- Expand vertically in parent container.
- AG_CHECKBOX_EXPAND
- Shorthand for
AG_CHECKBOX_HFILL
|
AG_CHECKBOX_VFILL
.
The
AG_CheckboxNewInt
()
constructor binds "state" to a natural integer.
AG_CheckboxNewFlag
() binds "state" to one
or more bits in the natural integer at pFlags,
according to bitmask a.
AG_CheckboxSetFromFlags
()
creates a set of checkboxes for the given set of flags, described by an
array of AG_FlagDescr structures:
typedef struct ag_flag_descr {
Uint bitmask; /* Bitmask */
const char *descr; /* Bit(s) description */
int writeable; /* User-editable */
} AG_FlagDescr;
The
AG_CheckboxSetFromFlagsFn
()
variant sets the event handler for ‘checkbox-changed’ to the
given function fn and optional arguments
fmt.
AG_CheckboxGetState
()
returns the current state of the checkbox.
AG_CheckboxSetState
() sets the of the checkbox,
where 0=inactive and 0=active. AG_CheckboxToggle
()
inverts the state atomically.
The AG_Checkbox
widget provides the
following bindings:
- 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 AG_Checkbox
widget generates the
following events:
checkbox-changed
(int
state)
- Checkbox state changed (1=enabled, 0=disabled). The ‘state’
binding remains locked during the event handler's execution.
For the AG_Checkbox object:
- int invert
- Invert the logical interpretation of the ‘state’
binding.
- AG_Label *lbl
- Pointer to the
AG_Label(3)
displaying the caption text.
The following code fragment ties an
AG_Checkbox
to a boolean variable represented by an
int:
int someOption = 0;
AG_Window *win = AG_WindowNew(0);
AG_CheckboxNewInt(win, 0, "Some option", &someOption);
AG_WindowShow(win);
The following code fragment uses an
AG_Checkbox
to trigger a callback function:
static void
MyCallback(AG_Event *event)
{
AG_TextInfo(NULL, "Callback invoked");
}
AG_Window *win = AG_WindowNew(0);
AG_CheckboxNewFn(win, 0, "Execute callback", MyCallback, NULL);
AG_WindowShow(win);
The following code fragment creates an array of checkboxes, each
tied to a specific bit in a word:
#define FLAG_FOO 0x01
#define FLAG_BAR 0x02
#define FLAG_BAZ 0x04
int myWord = 0;
AG_FlagDescr myFlagDescr[] = {
{ FLAG_FOO, "foo flag", 1 },
{ FLAG_BAR, "bar flag", 1 },
{ FLAG_BAZ, "baz flag (readonly)", 0 },
{ 0, NULL, 0 }
};
AG_Window *win = AG_WindowNew(0);
AG_CheckboxSetFromFlags(win, 0, &myWord, myFlagDescr);
AG_WindowShow(win);
The AG_Checkbox
widget first appeared in
Agar 1.0. AG_CheckboxToggle
(),
AG_CheckboxGetState
() and
AG_CheckboxSetState
() appeared in Agar 1.6.0.