AG_Numerical
—
agar numerical editor widget
#include <agar/core.h>
#include <agar/gui.h>
The AG_Numerical
widget allows the value
of an integer or floating-point variable to be edited by the user.
AG_Numerical
provides a value
binding, and optional limits may be specified as the
min and max bindings.
If min or max are
undefined when the widget is first shown, default limits are set according
to the widest numerical range that can be represented by the type of
value.
AG_Numerical
is composed of an
AG_Textbox(3)
with two vertically-stacked
AG_Button(3)
to increment and decrement the value and an
AG_UCombo(3)
based unit selector (optional).
AG_Numerical *
AG_NumericalNew
(AG_Widget
*parent, Uint
flags, const char
*unit, const char
*format, ...);
AG_Numerical *
AG_NumericalNewS
(AG_Widget
*parent, Uint
flags, const char
*unit, const char
*label);
AG_Numerical *
AG_NumericalNew{Flt,Dbl,Ldbl,Int,Uint}
(AG_Widget
*parent, Uint
flags, const char
*unit, const char
*label, <Type>
*value);
AG_Numerical *
AG_NumericalNew{Flt,Dbl,Ldbl,Int,Uint}R
(AG_Widget
*parent, Uint
flags, const char
*unit, const char
*label, <Type>
*value, <Type>
min, <Type>
max);
void
AG_NumericalSizeHint
(AG_Numerical
*num, const char
*sizeHint);
int
AG_NumericalSetUnitSystem
(AG_Numerical
*num, const char
*unit);
void
AG_NumericalSelectUnit
(AG_Numerical
*num, const char
*unit);
void
AG_NumericalSetPrecision
(AG_Numerical
*num, const char
*fmt, int
precision);
void
AG_NumericalSetWriteable
(AG_Numerical
*num, int
writeable);
The
AG_NumericalNew
()
function allocates, initializes, and attaches a new
AG_Numerical
widget. Acceptable
flags include:
- AG_NUMERICAL_INT
- If no "value" binding has been set when the widget is first
shown, use a built-in variable of type int (by
default, double is used).
- AG_NUMERICAL_EXCL
- No external changes to the value binding are to be
expected. This allows
AG_Numerical
to optimize
based on exclusive access (by default, the value is checked periodically
and the widget is redrawn if a change is detected).
- AG_NUMERICAL_SLOW
- In non-EXCL case, check value every 2 seconds instead of the default of
250ms.
- AG_NUMERICAL_NO_POS_INF
- Don't allow "inf" (or U+221E) float input.
- AG_NUMERICAL_NO_POS_INF
- Don't allow "-inf" (or "-" U+221E) float input
- AG_NUMERICAL_NO_INF
- Shorthand for
AG_NUMERICAL_NO_POS_INF
|
AG_NUMERICAL_NO_NEG_INF
.
- AG_NUMERICAL_HFILL
- Expand horizontally in parent container.
- AG_NUMERICAL_VFILL
- Expand vertically in parent container.
- AG_NUMERICAL_EXPAND
- Shorthand for
AG_NUMERICAL_HFILL
|
AG_NUMERICAL_VFILL
.
The unit argument is the name of the
conversion unit that will be used by default (other conversion units in the
same unit group will also be displayed in the unit selector). If
unit is NULL, no conversion is done and the unit
selector is not shown. See
AG_Units(3)
for more information.
The alternate constructor routines
AG_NumericalNew<Type>
()
create a new widget bound to a variable of the specified type.
AG_NumericalNew<Type>R
()
also accept explicit min and max
arguments.
AG_NumericalSizeHint
()
requests that the initial geometry of the
AG_Numerical
widget be sufficient to display
sizeHint in its entirety (see
AG_SizeSpec(3)).
AG_NumericalSetUnitSystem
()
searches all unit groups for a unit of the given name and selects it as the
active unit. Other units in the group will be displayed in the unit
selector. If no such unit exists, the function returns -1.
AG_NumericalSelectUnit
()
searches only the current unit group and selects the unit of the given name
as the active conversion unit.
The
AG_NumericalSetPrecision
()
function selects the preferred style and precision for printing
floating-point numbers. The default is ‘%.2f’.
AG_NumericalSetWriteable
()
enables of disables user modification sets the writeability flag, also
accessible as the writeable member of the
structure.
For the AG_Numerical object:
- char *format
- Format string for printing floating-point numbers.
- const AG_Unit *unit
- Current unit system in use.
- AG_Textbox *input
- Textbox for keyboard input.
The AG_Numerical
widget generates the
following events:
numerical-changed
(void)
- The value has been modified by the textbox or the +/- buttons.
numerical-return
(void)
- The value has been modified by the textbox and return was pressed.
The AG_Numerical
widget provides the
following bindings:
- float *value, *min, *max, *inc
- Real number (single-precision).
- double *value, *min, *max, *inc
- Real number (double-precision).
- int *value, *min, *max, *inc
- Signed integer value.
- Uint *value, *min, *max, *inc
- Unsigned integer value.
- Uint8 *value, *min, *max, *inc
- Unsigned 8-bit value.
- Uint16 *value, *min, *max, *inc
- Unsigned 16-bit value.
- Uint32 *value, *min, *max, *inc
- Unsigned 32-bit value.
- Uint64 *value, *min, *max, *inc
- Unsigned 64-bit value.
- Sint8 *value, *min, *max, *inc
- Signed 8-bit value.
- Sint16 *value, *min, *max, *inc
- Signed 16-bit value.
- Sint32 *value, *min, *max, *inc
- Signed 32-bit value.
- Sint64 *value, *min, *max, *inc
- Signed 64-bit value.
The value binding indicates the number to
display. The min and max
bindings allow a range to be specified. The inc
binding specifies the increment effected by the widget's "+" and
"-" buttons (if unit conversion is in use,
inc should be of the same unit system as
value).
The 64-bit types are only available if
AG_HAVE_64BIT
is defined.
The AG_Numerical
widget first appeared in
Agar 1.2 as a replacement for ‘AG_Spinbutton’ and
‘AG_FSpinbutton’ that can handle both floating-point and
integer values. Agar 1.5 added support for 64-bit types.