RadioButton

From uGFX Wiki
Revision as of 06:16, 16 August 2014 by Inmarket (Talk | contribs)

Jump to: navigation, search

A radio button is a widget that only works together in a group of two or more radio buttons. Inside this group of radio buttons, only one button can be checked at a time. When you click on another raido button, the current one gets disabled and the new one becomes gets the checked state.

API reference

The API reference for the radio button widget can be found here.

Custom Draw Routines

The radio button 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
gwinRadioDraw_Radio The standard radio button look. If GDISP_NEED_CIRCLE is defined a round radio is drawn.
gwinRadioDraw_Button Looks like a standard push button
gwinRadioDraw_Tab A tab look

Example

The following example shows how to use the radio button widget. In this example we create two groups where each group consists of three radio buttons:

#include "gfx.h"
 
#define GROUP1		0	// this will be the first radio button group
#define GROUP2		1	// this will be the second radio button group
 
static GListener	gl;
static GHandle		ghRadio11, ghRadio12, ghRadio13;	// the first group
static GHandle		ghRadio21, ghRadio22, ghRadio23;	// the second group
 
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;
 
	// create Radio11
	wi.g.y = 10; wi.g.x = 10; wi.g.width = 80; wi.g.height = 20; wi.text = "Radio 1";
	ghRadio11 = gwinRadioCreate(NULL, &wi, GROUP1);
 
	// create Radio12
	wi.g.y = 50; wi.g.x = 10; wi.g.width = 80; wi.g.height = 20; wi.text = "Radio 2";
	ghRadio12 = gwinRadioCreate(NULL, &wi, GROUP1);
 
	// create Radio13
	wi.g.y = 90; wi.g.x = 10; wi.g.width = 80; wi.g.height = 20; wi.text = "Radio 3";
	ghRadio13 = gwinRadioCreate(NULL, &wi, GROUP1);
 
	// create Radio21
	wi.g.y = 10; wi.g.x = 120; wi.g.width = 80; wi.g.height = 20; wi.text = "Radio 1";
	ghRadio21 = gwinRadioCreate(NULL, &wi, GROUP2);
 
	// create Radio22
	wi.g.y = 50; wi.g.x = 120; wi.g.width = 80; wi.g.height = 20; wi.text = "Radio 2";
	ghRadio22 = gwinRadioCreate(NULL, &wi, GROUP2);
 
	// create Radio23
	wi.g.y = 90; wi.g.x = 120; wi.g.width = 80; wi.g.height = 20; wi.text = "Radio 3";
	ghRadio23 = gwinRadioCreate(NULL, &wi, GROUP2);
 
	// Check the first radio buttons
	gwinRadioPress(ghRadio11);
	gwinRadioPress(ghRadio21);
}
 
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_RADIO:
				printf("group: %u   radio: %s\n", ((GEventGWinRadio *)pe)->group,
                                                                  gwinGetText(((GEventGWinRadio *)pe)->radio)
                                      );
				break;
 
			default:
				break;
		}
	}
 
	return 0;
}