aboutsummaryrefslogtreecommitdiffstats
path: root/demos/modules/gwin
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2013-08-01 15:06:32 +1000
committerinmarket <andrewh@inmarket.com.au>2013-08-01 15:06:32 +1000
commit157ec08034c44957afbc24a16486a680708a4379 (patch)
tree7045ff788027ef36e3eaaa671f69e477783fc2fe /demos/modules/gwin
parentdb189048929220a2a9bd83157022eb096cf6f993 (diff)
parentb0b35396395c3eadc5a656df995a17b266c4b374 (diff)
downloaduGFX-157ec08034c44957afbc24a16486a680708a4379.tar.gz
uGFX-157ec08034c44957afbc24a16486a680708a4379.tar.bz2
uGFX-157ec08034c44957afbc24a16486a680708a4379.zip
Merge branch 'master' into fonts
Diffstat (limited to 'demos/modules/gwin')
-rw-r--r--demos/modules/gwin/list/gfxconf.h150
-rw-r--r--demos/modules/gwin/list/main.c72
-rw-r--r--demos/modules/gwin/widgets/gfxconf.h3
-rw-r--r--demos/modules/gwin/widgets/main.c38
4 files changed, 258 insertions, 5 deletions
diff --git a/demos/modules/gwin/list/gfxconf.h b/demos/modules/gwin/list/gfxconf.h
new file mode 100644
index 00000000..cf5f8690
--- /dev/null
+++ b/demos/modules/gwin/list/gfxconf.h
@@ -0,0 +1,150 @@
+/**
+ * This file has a different license to the rest of the GFX system.
+ * You can copy, modify and distribute this file as you see fit.
+ * You do not need to publish your source modifications to this file.
+ * The only thing you are not permitted to do is to relicense it
+ * under a different license.
+ */
+
+/**
+ * Copy this file into your project directory and rename it as gfxconf.h
+ * Edit your copy to turn on the GFX features you want to use.
+ */
+
+#ifndef _GFXCONF_H
+#define _GFXCONF_H
+
+/* The operating system to use - one of these must be defined */
+//#define GFX_USE_OS_CHIBIOS FALSE
+//#define GFX_USE_OS_WIN32 FALSE
+//#define GFX_USE_OS_LINUX TRUE
+//#define GFX_USE_OS_OSX FALSE
+
+/* GFX subsystems to turn on */
+#define GFX_USE_GDISP TRUE
+#define GFX_USE_TDISP FALSE
+#define GFX_USE_GWIN TRUE
+#define GFX_USE_GEVENT TRUE
+#define GFX_USE_GTIMER TRUE
+#define GFX_USE_GQUEUE TRUE
+#define GFX_USE_GINPUT TRUE
+#define GFX_USE_GADC FALSE
+#define GFX_USE_GAUDIN FALSE
+#define GFX_USE_GAUDOUT FALSE
+#define GFX_USE_GMISC FALSE
+
+/* Features for the GDISP subsystem */
+#define GDISP_NEED_VALIDATION TRUE
+#define GDISP_NEED_CLIP TRUE
+#define GDISP_NEED_TEXT TRUE
+#define GDISP_NEED_CIRCLE TRUE
+#define GDISP_NEED_ELLIPSE TRUE
+#define GDISP_NEED_ARC FALSE
+#define GDISP_NEED_CONVEX_POLYGON TRUE
+#define GDISP_NEED_SCROLL FALSE
+#define GDISP_NEED_PIXELREAD FALSE
+#define GDISP_NEED_CONTROL FALSE
+#define GDISP_NEED_QUERY FALSE
+#define GDISP_NEED_IMAGE FALSE
+#define GDISP_NEED_MULTITHREAD FALSE
+#define GDISP_NEED_ASYNC FALSE
+#define GDISP_NEED_MSGAPI FALSE
+
+/* GDISP - builtin fonts */
+#define GDISP_INCLUDE_FONT_SMALL FALSE
+#define GDISP_INCLUDE_FONT_LARGER FALSE
+#define GDISP_INCLUDE_FONT_UI1 FALSE
+#define GDISP_INCLUDE_FONT_UI2 TRUE
+#define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE
+
+/* GDISP image decoders */
+#define GDISP_NEED_IMAGE_NATIVE FALSE
+#define GDISP_NEED_IMAGE_GIF FALSE
+#define GDISP_NEED_IMAGE_BMP FALSE
+#define GDISP_NEED_IMAGE_JPG FALSE
+#define GDISP_NEED_IMAGE_PNG FALSE
+#define GDISP_NEED_IMAGE_ACCOUNTING FALSE
+
+/* Optional image support that can be turned off */
+/*
+ #define GDISP_NEED_IMAGE_BMP_1 TRUE
+ #define GDISP_NEED_IMAGE_BMP_4 TRUE
+ #define GDISP_NEED_IMAGE_BMP_4_RLE TRUE
+ #define GDISP_NEED_IMAGE_BMP_8 TRUE
+ #define GDISP_NEED_IMAGE_BMP_8_RLE TRUE
+ #define GDISP_NEED_IMAGE_BMP_16 TRUE
+ #define GDISP_NEED_IMAGE_BMP_24 TRUE
+ #define GDISP_NEED_IMAGE_BMP_32 TRUE
+*/
+
+/* Features for the TDISP subsystem. */
+#define TDISP_NEED_MULTITHREAD FALSE
+
+/* Features for the GWIN subsystem. */
+#define GWIN_NEED_WINDOWMANAGER TRUE
+#define GWIN_NEED_CONSOLE FALSE
+#define GWIN_NEED_GRAPH FALSE
+#define GWIN_NEED_WIDGET TRUE
+#define GWIN_NEED_BUTTON FALSE
+#define GWIN_NEED_SLIDER FALSE
+#define GWIN_NEED_CHECKBOX FALSE
+#define GWIN_NEED_IMAGE FALSE
+#define GWIN_NEED_RADIO FALSE
+#define GWIN_NEED_LIST TRUE
+
+/* Features for the GEVENT subsystem. */
+#define GEVENT_ASSERT_NO_RESOURCE FALSE
+
+/* Features for the GTIMER subsystem. */
+/* NONE */
+
+/* Features for the GQUEUE subsystem. */
+#define GQUEUE_NEED_ASYNC TRUE
+#define GQUEUE_NEED_GSYNC FALSE
+#define GQUEUE_NEED_FSYNC FALSE
+
+/* Features for the GINPUT subsystem. */
+#define GINPUT_NEED_MOUSE TRUE
+#define GINPUT_NEED_KEYBOARD FALSE
+#define GINPUT_NEED_TOGGLE FALSE
+#define GINPUT_NEED_DIAL FALSE
+
+/* Features for the GADC subsystem. */
+/* NONE */
+
+/* Features for the GAUDIN subsystem. */
+/* NONE */
+
+/* Features for the GAUDOUT subsystem. */
+/* NONE */
+
+/* Features for the GMISC subsystem. */
+#define GMISC_NEED_ARRAYOPS FALSE
+#define GMISC_NEED_FASTTRIG FALSE
+#define GMISC_NEED_FIXEDTRIG FALSE
+
+/* Optional Parameters for various subsystems */
+/*
+ #define GDISP_MAX_FONT_HEIGHT 16
+ #define GEVENT_MAXIMUM_SIZE 32
+ #define GEVENT_MAX_SOURCE_LISTENERS 32
+ #define GTIMER_THREAD_WORKAREA_SIZE 512
+ #define GADC_MAX_LOWSPEED_DEVICES 4
+ #define GWIN_BUTTON_LAZY_RELEASE FALSE
+ #define GWIN_CONSOLE_USE_BASESTREAM FALSE
+ #define GWIN_CONSOLE_USE_FLOAT FALSE
+ #define GWIN_NEED_IMAGE_ANIMATION FALSE
+*/
+
+/* Optional Low Level Driver Definitions */
+/*
+ #define GDISP_USE_CUSTOM_BOARD FALSE
+ #define GDISP_SCREEN_WIDTH 320
+ #define GDISP_SCREEN_HEIGHT 240
+ #define GDISP_USE_FSMC
+ #define GDISP_USE_GPIO
+ #define TDISP_COLUMNS 16
+ #define TDISP_ROWS 2
+*/
+
+#endif /* _GFXCONF_H */
diff --git a/demos/modules/gwin/list/main.c b/demos/modules/gwin/list/main.c
new file mode 100644
index 00000000..a3a17250
--- /dev/null
+++ b/demos/modules/gwin/list/main.c
@@ -0,0 +1,72 @@
+#include "gfx.h"
+
+static GListener gl;
+static GHandle ghList1;
+
+static void createWidgets(void) {
+ GWidgetInit wi;
+
+ // Apply some default values for GWIN
+ wi.customDraw = 0;
+ wi.customParam = 0;
+ wi.customStyle = 0;
+ wi.g.show = FALSE;
+
+ // Apply the list parameters
+ wi.g.width = 100;
+ wi.g.height = 80;
+ wi.g.y = 10;
+ wi.g.x = 10;
+ wi.text = "List Name";
+
+ // Create the actual list
+ ghList1 = gwinListCreate(NULL, &wi);
+}
+
+int main(void) {
+ GEvent* pe;
+
+ // Initialize the display
+ gfxInit();
+
+ // Set the widget defaults
+ gwinSetDefaultFont(gdispOpenFont("UI2"));
+ gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE);
+ gdispClear(Red);
+
+ // Attach the mouse input
+ gwinAttachMouse(0);
+
+ // create the widget
+ createWidgets();
+
+ // We want to listen for widget events
+ geventListenerInit(&gl);
+ gwinAttachListener(&gl);
+
+ // Add some items to the list widget
+ gwinListAddItem(ghList1, "Item 0", FALSE);
+ gwinListAddItem(ghList1, "Item 1", FALSE);
+ gwinListAddItem(ghList1, "Item 2", FALSE);
+ gwinListAddItem(ghList1, "Item 3", FALSE);
+ gwinListAddItem(ghList1, "Item 4", FALSE);
+ gwinListAddItem(ghList1, "Item 5", FALSE);
+ gwinListAddItem(ghList1, "Item 6", FALSE);
+ gwinListAddItem(ghList1, "Item 7", FALSE);
+ gwinListAddItem(ghList1, "Item 8", FALSE);
+ gwinListAddItem(ghList1, "Item 9", FALSE);
+ gwinListAddItem(ghList1, "Item 10", FALSE);
+ gwinListAddItem(ghList1, "Item 11", FALSE);
+ gwinListAddItem(ghList1, "Item 12", FALSE);
+ gwinListAddItem(ghList1, "Item 13", FALSE);
+
+ gwinSetVisible(ghList1, TRUE);
+
+ while(1) {
+ // Get an Event
+ pe = geventEventWait(&gl, TIME_INFINITE);
+
+ }
+
+ return 0;
+}
diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h
index 08c350b6..8f2d1540 100644
--- a/demos/modules/gwin/widgets/gfxconf.h
+++ b/demos/modules/gwin/widgets/gfxconf.h
@@ -47,7 +47,7 @@
#define GDISP_NEED_CIRCLE TRUE
#define GDISP_NEED_ELLIPSE FALSE
#define GDISP_NEED_ARC FALSE
-#define GDISP_NEED_CONVEX_POLYGON FALSE
+#define GDISP_NEED_CONVEX_POLYGON TRUE
#define GDISP_NEED_SCROLL FALSE
#define GDISP_NEED_PIXELREAD FALSE
#define GDISP_NEED_CONTROL FALSE
@@ -78,6 +78,7 @@
#define GWIN_NEED_LABEL TRUE
#define GWIN_NEED_IMAGE TRUE
#define GWIN_NEED_RADIO TRUE
+#define GWIN_NEED_LIST TRUE
#define GWIN_NEED_IMAGE_ANIMATION TRUE
diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c
index 5a2c22d9..3e904262 100644
--- a/demos/modules/gwin/widgets/main.c
+++ b/demos/modules/gwin/widgets/main.c
@@ -69,13 +69,14 @@ static const GWidgetStyle YellowWidgetStyle = {
/* The variables we need */
static GListener gl;
static GHandle ghConsole;
-static GHandle ghTabButtons, ghTabSliders, ghTabCheckboxes, ghTabLabels, ghTabRadios, ghTabImages;
+static GHandle ghTabButtons, ghTabSliders, ghTabCheckboxes, ghTabLabels, ghTabRadios, ghTabLists, ghTabImages;
static GHandle ghButton1, ghButton2, ghButton3, ghButton4;
static GHandle ghSlider1, ghSlider2, ghSlider3, ghSlider4;
static GHandle ghCheckbox1, ghCheckbox2, ghCheckDisableAll;
static GHandle ghLabel1;
static GHandle ghRadio1, ghRadio2;
static GHandle ghRadioBlack, ghRadioWhite, ghRadioYellow;
+static GHandle ghList1;
static GHandle ghImage1;
/* Some useful macros */
@@ -86,6 +87,8 @@ static GHandle ghImage1;
#define LABEL_HEIGHT 40
#define BUTTON_WIDTH 50
#define BUTTON_HEIGHT 30
+#define LIST_WIDTH 100
+#define LIST_HEIGHT 80
#define SLIDER_WIDTH 20
#define CHECKBOX_WIDTH 80
#define CHECKBOX_HEIGHT 20
@@ -108,13 +111,14 @@ static void createWidgets(void) {
// Create the Tabs
wi.g.show = TRUE; wi.customDraw = gwinRadioDraw_Tab;
- wi.g.width = ScrWidth/6; wi.g.height = TAB_HEIGHT; wi.g.y = 0;
+ wi.g.width = ScrWidth/7; wi.g.height = TAB_HEIGHT; wi.g.y = 0;
wi.g.x = 0*wi.g.width; wi.text = "Buttons"; ghTabButtons = gwinRadioCreate(NULL, &wi, GROUP_TABS);
wi.g.x = 1*wi.g.width; wi.text = "Sliders"; ghTabSliders = gwinRadioCreate(NULL, &wi, GROUP_TABS);
wi.g.x = 2*wi.g.width; wi.text = "Checkbox"; ghTabCheckboxes = gwinRadioCreate(NULL, &wi, GROUP_TABS);
wi.g.x = 3*wi.g.width; wi.text = "Radios"; ghTabRadios = gwinRadioCreate(NULL, &wi, GROUP_TABS);
- wi.g.x = 4*wi.g.width; wi.text = "Labels"; ghTabLabels = gwinRadioCreate(NULL, &wi, GROUP_TABS);
- wi.g.x = 5*wi.g.width; wi.text = "Images"; ghTabImages = gwinRadioCreate(NULL, &wi, GROUP_TABS);
+ wi.g.x = 4*wi.g.width; wi.text = "Lists"; ghTabLists = gwinRadioCreate(NULL, &wi, GROUP_TABS);
+ wi.g.x = 5*wi.g.width; wi.text = "Labels"; ghTabLabels = gwinRadioCreate(NULL, &wi, GROUP_TABS);
+ wi.g.x = 6*wi.g.width; wi.text = "Images"; ghTabImages = gwinRadioCreate(NULL, &wi, GROUP_TABS);
// Buttons
wi.g.show = FALSE; wi.customDraw = 0;
@@ -156,6 +160,25 @@ static void createWidgets(void) {
wi.g.x = 2*wi.g.width; wi.text = "Yellow"; ghRadioYellow = gwinRadioCreate(NULL, &wi, GROUP_COLORS);
gwinRadioPress(ghRadioWhite);
+ // Lists
+ wi.g.show = FALSE; wi.customDraw = 0;
+ wi.g.width = LIST_WIDTH; wi.g.height = LIST_HEIGHT; wi.g.y = TAB_HEIGHT+5;
+ wi.g.x = 0+0*(LIST_WIDTH+1); wi.text = "L1"; ghList1 = gwinListCreate(NULL, &wi);
+ gwinListAddItem(ghList1, "Item 0", FALSE);
+ gwinListAddItem(ghList1, "Item 1", FALSE);
+ gwinListAddItem(ghList1, "Item 2", FALSE);
+ gwinListAddItem(ghList1, "Item 3", FALSE);
+ gwinListAddItem(ghList1, "Item 4", FALSE);
+ gwinListAddItem(ghList1, "Item 5", FALSE);
+ gwinListAddItem(ghList1, "Item 6", FALSE);
+ gwinListAddItem(ghList1, "Item 7", FALSE);
+ gwinListAddItem(ghList1, "Item 8", FALSE);
+ gwinListAddItem(ghList1, "Item 9", FALSE);
+ gwinListAddItem(ghList1, "Item 10", FALSE);
+ gwinListAddItem(ghList1, "Item 11", FALSE);
+ gwinListAddItem(ghList1, "Item 12", FALSE);
+ gwinListAddItem(ghList1, "Item 13", FALSE);
+
// Image
wi.g.x = ScrWidth-210; wi.g.y = TAB_HEIGHT + 10; wi.g.width = 200; wi.g.height = 200;
ghImage1 = gwinImageCreate(NULL, &wi.g);
@@ -183,6 +206,7 @@ static void setTab(GHandle tab) {
gwinSetVisible(ghLabel1, FALSE);
gwinSetVisible(ghRadio1, FALSE); gwinSetVisible(ghRadio2, FALSE);
gwinSetVisible(ghRadioWhite, FALSE);gwinSetVisible(ghRadioBlack, FALSE);gwinSetVisible(ghRadioYellow, FALSE);
+ gwinSetVisible(ghList1, FALSE);
gwinSetVisible(ghImage1, FALSE);
/* Turn on widgets depending on the tab selected */
@@ -199,6 +223,8 @@ static void setTab(GHandle tab) {
} else if (tab == ghTabRadios) {
gwinSetVisible(ghRadio1, TRUE); gwinSetVisible(ghRadio2, TRUE);
gwinSetVisible(ghRadioWhite, TRUE); gwinSetVisible(ghRadioBlack, TRUE); gwinSetVisible(ghRadioYellow, TRUE);
+ } else if (tab == ghTabLists) {
+ gwinSetVisible(ghList1, TRUE);
} else if (tab == ghTabImages) {
gwinSetVisible(ghImage1, TRUE);
}
@@ -282,6 +308,10 @@ int main(void) {
}
break;
+ case GEVENT_GWIN_LIST:
+ gwinPrintf(ghConsole, "List %s Item %d\n", gwinGetText(((GEventGWinList *)pe)->list), ((GEventGWinList *)pe)->item);
+ break;
+
case GEVENT_GWIN_RADIO:
gwinPrintf(ghConsole, "Radio Group %u=%s\n", ((GEventGWinRadio *)pe)->group, gwinGetText(((GEventGWinRadio *)pe)->radio));