diff options
Diffstat (limited to 'demos/modules/gwin')
| -rw-r--r-- | demos/modules/gwin/textedit/demo.mk | 3 | ||||
| -rw-r--r-- | demos/modules/gwin/textedit/gfxconf.h | 67 | ||||
| -rw-r--r-- | demos/modules/gwin/textedit/main.c | 143 | 
3 files changed, 213 insertions, 0 deletions
| diff --git a/demos/modules/gwin/textedit/demo.mk b/demos/modules/gwin/textedit/demo.mk new file mode 100644 index 00000000..2cd40fd3 --- /dev/null +++ b/demos/modules/gwin/textedit/demo.mk @@ -0,0 +1,3 @@ +DEMODIR = $(GFXLIB)/demos/modules/gwin/textedit +GFXINC +=   $(DEMODIR) +GFXSRC +=	$(DEMODIR)/main.c diff --git a/demos/modules/gwin/textedit/gfxconf.h b/demos/modules/gwin/textedit/gfxconf.h new file mode 100644 index 00000000..4e518774 --- /dev/null +++ b/demos/modules/gwin/textedit/gfxconf.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org> + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *    * Redistributions of source code must retain the above copyright + *      notice, this list of conditions and the following disclaimer. + *    * Redistributions in binary form must reproduce the above copyright + *      notice, this list of conditions and the following disclaimer in the + *      documentation and/or other materials provided with the distribution. + *    * Neither the name of the <organization> nor the + *      names of its contributors may be used to endorse or promote products + *      derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _GFXCONF_H +#define _GFXCONF_H + +/* The operating system to use. One of these must be defined - preferably in your Makefile */ +//#define GFX_USE_OS_CHIBIOS	FALSE +//#define GFX_USE_OS_WIN32		FALSE +//#define GFX_USE_OS_LINUX		FALSE +//#define GFX_USE_OS_OSX		FALSE + +/* GFX sub-systems to turn on */ +#define GFX_USE_GDISP			TRUE +#define GFX_USE_GWIN			TRUE +#define GFX_USE_GINPUT			TRUE +#define GFX_USE_GEVENT			TRUE +#define GFX_USE_GTIMER			TRUE + +/* Features for the GDISP sub-system. */ +#define GDISP_NEED_VALIDATION	TRUE +#define GDISP_NEED_CLIP			TRUE +#define GDISP_NEED_TEXT			TRUE +#define GDISP_NEED_TEXT_KERNING	TRUE +#define GDISP_NEED_STARTUP_LOGO	TRUE + +/* GDISP fonts to include */ +#define GDISP_INCLUDE_FONT_UI2	TRUE +#define GDISP_INCLUDE_FONT_DEJAVUSANS16	TRUE + +/* Features for the GWIN subsystem. */ +#define GWIN_NEED_CONSOLE		TRUE +#define GWIN_NEED_TEXTEDIT		TRUE +#define GWIN_NEED_BUTTON		TRUE + +/* Features for the GINPUT subsystem. */ +#define GINPUT_NEED_MOUSE		TRUE +#define GINPUT_NEED_KEYBOARD	TRUE + +#endif /* _GFXCONF_H */ + diff --git a/demos/modules/gwin/textedit/main.c b/demos/modules/gwin/textedit/main.c new file mode 100644 index 00000000..950475b5 --- /dev/null +++ b/demos/modules/gwin/textedit/main.c @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2012, 2013, Joel Bodenmann aka Tectu <joel@unormal.org> + * Copyright (c) 2012, 2013, Andrew Hannam aka inmarket + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + *    * Redistributions of source code must retain the above copyright + *      notice, this list of conditions and the following disclaimer. + *    * Redistributions in binary form must reproduce the above copyright + *      notice, this list of conditions and the following disclaimer in the + *      documentation and/or other materials provided with the distribution. + *    * Neither the name of the <organization> nor the + *      names of its contributors may be used to endorse or promote products + *      derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "gfx.h" + +static GHandle		ghConsole; +static GHandle		ghTextedit1; +static GHandle		ghTextedit2; +static GHandle		ghTextedit3; +static GListener	gl; + +static void guiCreate() +{ +	GWidgetInit	wi; +	gwinWidgetClearInit(&wi); + +	// Console +	wi.g.show = TRUE; +	wi.g.x = 0; +	wi.g.y = 0; +	wi.g.width = gdispGetWidth()/2; +	wi.g.height = gdispGetHeight(); +	ghConsole = gwinConsoleCreate(0, &wi.g); +	gwinSetColor(ghConsole, Yellow); +	gwinSetBgColor(ghConsole, Black); +	gwinSetFont(ghConsole, gdispOpenFont("UI2")); +	gwinClear(ghConsole); + +	// TextEdit1 +	wi.g.show = TRUE; +	wi.g.x = gdispGetWidth()/2 + 10; +	wi.g.y = 20; +	wi.g.width = 200; +	wi.g.height = 35; +	wi.text = "Use the TAB key"; +	ghTextedit1 = gwinTexteditCreate(0, &wi, 100); + +	// TextEdit2 +	wi.g.show = TRUE; +	wi.g.x = gdispGetWidth()/2 + 10; +	wi.g.y = 100; +	wi.g.width = 200; +	wi.g.height = 35; +	wi.text = "to switch between"; +	ghTextedit2 = gwinTexteditCreate(0, &wi, 20); +	gwinTexteditSetBorder(ghTextedit2, FALSE); + +	// TextEdit3 +	wi.g.show = TRUE; +	wi.g.x = gdispGetWidth()/2 + 10; +	wi.g.y = 180; +	wi.g.width = 200; +	wi.g.height = 35; +	wi.text = "the different widgets"; +	ghTextedit3 = gwinTexteditCreate(0, &wi, 100); +	gwinTexteditSetBorder(ghTextedit3, TRUE); +} + +int main(void) { +	GEventKeyboard* pk; +	unsigned i; + +	gfxInit(); + +	gdispClear(Silver); +	gwinSetDefaultFont(gdispOpenFont("DejaVuSans16")); +	gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE); +	gwinSetDefaultColor(Black); +	gwinSetDefaultBgColor(White); + +	geventListenerInit(&gl); +	geventAttachSource(&gl, ginputGetKeyboard(0), GLISTEN_KEYTRANSITIONS|GLISTEN_KEYUP); + +	guiCreate(); + +	gwinPrintf(ghConsole, "Keyboard Monitor...\n"); + +	while(1) { +		// Get an Event +		pk = (GEventKeyboard *)geventEventWait(&gl, TIME_INFINITE); + +		if (pk->type != GEVENT_KEYBOARD) +			continue; + +		gwinPrintf(ghConsole, "KEYSTATE: 0x%04X [ %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s]", +			pk->keystate, +			(!pk->keystate ? "NONE " : ""), +			((pk->keystate & GKEYSTATE_KEYUP) ? "KEYUP " : ""), +			((pk->keystate & GKEYSTATE_REPEAT) ? "REPEAT " : ""), +			((pk->keystate & GKEYSTATE_SPECIAL) ? "SPECIAL " : ""), +			((pk->keystate & GKEYSTATE_RAW) ? "RAW " : ""), +			((pk->keystate & GKEYSTATE_SHIFT_L) ? "LSHIFT " : ""), +			((pk->keystate & GKEYSTATE_SHIFT_R) ? "RSHIFT " : ""), +			((pk->keystate & GKEYSTATE_CTRL_L) ? "LCTRL " : ""), +			((pk->keystate & GKEYSTATE_CTRL_R) ? "RCTRL " : ""), +			((pk->keystate & GKEYSTATE_ALT_L) ? "LALT " : ""), +			((pk->keystate & GKEYSTATE_ALT_R) ? "RALT " : ""), +			((pk->keystate & GKEYSTATE_FN) ? "FN " : ""), +			((pk->keystate & GKEYSTATE_COMPOSE) ? "COMPOSE " : ""), +			((pk->keystate & GKEYSTATE_WINKEY) ? "WINKEY " : ""), +			((pk->keystate & GKEYSTATE_CAPSLOCK) ? "CAPSLOCK " : ""), +			((pk->keystate & GKEYSTATE_NUMLOCK) ? "NUMLOCK " : ""), +			((pk->keystate & GKEYSTATE_SCROLLLOCK) ? "SCROLLLOCK " : "") +			); +		if (pk->bytecount) { +			gwinPrintf(ghConsole, " Keys:"); +			for (i = 0; i < pk->bytecount; i++) +				gwinPrintf(ghConsole, " 0x%02X", (uint8_t)pk->c[i]); +			gwinPrintf(ghConsole, " ["); +			for (i = 0; i < pk->bytecount; i++) +				gwinPrintf(ghConsole, "%c", pk->c[i] >= ' ' && pk->c[i] <= '~' ? pk->c[i] : ' '); +			gwinPrintf(ghConsole, "]"); +		} +		gwinPrintf(ghConsole, "\n"); +	} +} + | 
