IupDial

IUP - Portable User Interface

IupDial

Creates a dial for regulating a given angular variable.

This is an additional control that depends on the CD library. It is included in the Controls Library.

It inherits from IupCanvas.

Creation

Ihandle* IupDial(const char *type); [in C]
iup.dial{type: string} -> (elem: ihandle) [in Lua]
dial(type) [in LED] 

type: optional dial type, can be NULL. See TYPE attribute.

Returns: the identifier of the created element, or NULL if an error occurs.

Attributes

BGCOLOR: background color. If not defined will inherit the value from the parent tree, or from the dialog.

DENSITY: number of lines per pixel in the handle of the dial. Default is "0.2".

EXPAND: The default is "NO".

FGCOLOR: foreground color. The default value is "64 64 64". Not used for the circular dial.

SIZE: the default is "16x80", "80x16" or "40x35" according to the dial type.

TYPE (creation only) (non inheritable):  dial layout configuration "VERTICAL", "HORIZONTAL" or "CIRCULAR". Default: "HORIZONTAL".

UNIT: Contains the unit of the angle. Can be "DEGREES" or "RADIANS". Default is "RADIANS".

VALUE (non inheritable): The dial angular value. The value is reset to zero when the interaction is started, except for TYPE=CIRCULAR. When type is vertical or horizontal, the dial measures relative angles. When type is circular the dial measure absolute angles, where the origin is at 3 O'Clock.


ACTIVE, FONT, X, Y, POSITION, WID, TIP, RASTERSIZE, ZORDER, VISIBLE: also accepted. 

Callbacks

BUTTON_PRESS_CB: Called when the user presses the left mouse button over the dial. The angle here is always zero, except for the circular dial.

int function(Ihandle *ih, double angle)
elem:button_press_cb(angle: number) -> (ret: number) [in Lua]

ih: identifier of the element that activated the event.
angle: the dial value.

BUTTON_RELEASE_CB: Called when the user releases the left mouse button after pressing it over the dial.

int function(Ihandle *ih, double angle)
elem:button_release_cb(angle: number) -> (ret: number) [in Lua]

ih: identifier of the element that activated the event.
angle: the dial value.

MOUSEMOVE_CB: Called each time the user moves the dial with the mouse button pressed. The angle the dial rotated since it was initialized is passed as a parameter.

int function(Ihandle *ih, double angle); [in C]
elem:mousemove_cb(angle: number) -> (ret: number) [in Lua]

ih: identifier of the element that activated the event.
angle: the dial value.


MAP_CB, GETFOCUS_CB, KILLFOCUS_CB, ENTERWINDOW_CB, LEAVEWINDOW_CB, K_ANY, HELP_CB: All common callbacks are supported.

Notes

When the keyboard arrows are pressed and released the mouse press and the mouse release callbacks are called in this order. If you hold the key down the mouse move callback is also called for every repetition.

When the wheel is rotated only the mouse move callback is called, and it increments the last angle the dial was rotated.

In all cases the value is incremented or decremented by PI/10 (18 degrees).

If you press Shift while using the arrow keys the increment is reduced to PI/100 (1.8 degrees). Press the Home key in the circular dial to reset to 0. (since 3.0)

Examples

Browse Example Files

See Also

IupCanvas