CheckBox

From uGFX Wiki
Revision as of 10:58, 7 November 2017 by Tectu (Talk | contribs) (Custom Draw Routines)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

A checkbox is a small stand-alone GUI element which only knows the two states checked and unchecked. The text attribute of a checkbox gets drawn by default on the left side of the checkbox. The width of the widget is supposed to be larger in order to contain the text.

API reference

The API reference of the checkbox widget can be found here.

Custom Draw Routines

The checkbox widget predefines a number of custom draw routines. They can be set using gwinSetCustomDraw() or by specifying the custom draw routine in the GWidgetInit structure during creation. The predefined custom draw routines are:

Custom Draw Routine Description
gwinCheckboxDraw_CheckOnLeft The check is on the left of the text (default).
gwinCheckboxDraw_CheckOnRight The check is on the right of the text.
gwinCheckboxDraw_Button Draw like a pushbutton. This essentially makes a checkable pushbutton.

Example

The following example shows how to use the checkbox widget:

#include "gfx.h"
 
static GListener gl;
static GHandle   ghCheckbox1;
 
static void createWidgets(void) {
	GWidgetInit	wi;
 
	// Apply some default values for GWIN
	wi.customDraw = 0;
	wi.customParam = 0;
	wi.customStyle = 0;
	wi.g.show = TRUE;
 
	// Apply the checkbox parameters	
	wi.g.width = 100;		// includes text
	wi.g.height = 20;
	wi.g.y = 10;
	wi.g.x = 10;
	wi.text = "Checkbox";
 
	// Create the actual checkbox 
	ghCheckbox1 = gwinCheckboxCreate(NULL, &wi);
}
 
int main(void) {
	GEvent* pe;
 
	// Initialize the display
	gfxInit();
 
	// Set the widget defaults
	gwinSetDefaultFont(gdispOpenFont("UI2"));
	gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE);
	gdispClear(White);
 
	// Attach the mouse input
	gwinAttachMouse(0);
 
	// create the widget
	createWidgets();
 
	// We want to listen for widget events
	geventListenerInit(&gl);
	gwinAttachListener(&gl);
 
	while(1) {
		// Get an Event
		pe = geventEventWait(&gl, TIME_INFINITE);
 
		switch(pe->type) {
			case GEVENT_GWIN_CHECKBOX:
				if (((GEventGWinCheckbox*)pe)->gwin== ghCheckbox1) {
					// The state of our checkbox has changed
					printf("Checkbox state: %d\r\n", ((GEventGWinCheckbox*)pe)->isChecked);
				}
				break;
 
			default:
				break;
		}
	}
 
	return 0;
}