aboutsummaryrefslogtreecommitdiffstats
path: root/demos/modules/gwin/container_nested/main.c
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@unormal.org>2014-05-21 14:56:02 +0200
committerJoel Bodenmann <joel@unormal.org>2014-05-21 14:56:02 +0200
commit1edc0a2d5a43047f1f7634bef2881b3bf520f069 (patch)
treeff7a8fcb2803e9508c0a637fa26ae6d7988e5542 /demos/modules/gwin/container_nested/main.c
parent34e23320b4c69f5e409f25431603d901abfc4740 (diff)
downloaduGFX-1edc0a2d5a43047f1f7634bef2881b3bf520f069.tar.gz
uGFX-1edc0a2d5a43047f1f7634bef2881b3bf520f069.tar.bz2
uGFX-1edc0a2d5a43047f1f7634bef2881b3bf520f069.zip
Added containers_nested demo
Diffstat (limited to 'demos/modules/gwin/container_nested/main.c')
-rw-r--r--demos/modules/gwin/container_nested/main.c158
1 files changed, 158 insertions, 0 deletions
diff --git a/demos/modules/gwin/container_nested/main.c b/demos/modules/gwin/container_nested/main.c
new file mode 100644
index 00000000..94285afa
--- /dev/null
+++ b/demos/modules/gwin/container_nested/main.c
@@ -0,0 +1,158 @@
+#include "gfx.h"
+
+static GListener gl;
+static GHandle ghContainer1, ghContainer2, ghContainer3;
+static GHandle ghButton1, ghButton2, ghButton3, ghButton4;
+static GHandle ghCheckbox1, ghCheckbox2, ghCheckbox3;
+
+static void createWidgets(void) {
+ GWidgetInit wi;
+
+ // Apply some default values for GWIN
+ gwinWidgetClearInit(&wi);
+ wi.g.show = FALSE;
+
+ // Container 1
+ wi.g.width = 300;
+ wi.g.height = 220;
+ wi.g.y = 40;
+ wi.g.x = 10;
+ wi.text = "Container 1";
+ ghContainer1 = gwinContainerCreate(0, &wi, GWIN_CONTAINER_BORDER);
+
+ wi.g.show = TRUE;
+
+ // Container 2
+ wi.g.width = 100;
+ wi.g.height = 150;
+ wi.g.y = 55;
+ wi.g.x = 10;
+ wi.g.parent = ghContainer1;
+ wi.text = "Container 2";
+ ghContainer2 = gwinContainerCreate(0, &wi, GWIN_CONTAINER_BORDER);
+
+ // Container 3
+ wi.g.width = 100;
+ wi.g.height = 150;
+ wi.g.y = 55;
+ wi.g.x = 185;
+ wi.g.parent = ghContainer1;
+ wi.text = "Container 3";
+ ghContainer3 = gwinContainerCreate(0, &wi, GWIN_CONTAINER_BORDER);
+
+ // Button 1
+ wi.g.width = 80;
+ wi.g.height = 20;
+ wi.g.y = 10;
+ wi.g.x = 10;
+ wi.text = "Button 1";
+ wi.g.parent = ghContainer2;
+ ghButton1 = gwinButtonCreate(0, &wi);
+
+ // Button 2
+ wi.g.width = 80;
+ wi.g.height = 20;
+ wi.g.y = 40;
+ wi.g.x = 10;
+ wi.text = "Button 2";
+ wi.g.parent = ghContainer2;
+ ghButton2 = gwinButtonCreate(0, &wi);
+
+ // Button 3
+ wi.g.width = 80;
+ wi.g.height = 20;
+ wi.g.y = 10;
+ wi.g.x = 10;
+ wi.text = "Button 3";
+ wi.g.parent = ghContainer3;
+ ghButton3 = gwinButtonCreate(0, &wi);
+
+ // Button 4
+ wi.g.width = 80;
+ wi.g.height = 20;
+ wi.g.y = 40;
+ wi.g.x = 10;
+ wi.text = "Button 4";
+ wi.g.parent = ghContainer3;
+ ghButton4 = gwinButtonCreate(0, &wi);
+
+ // Checkbox 1
+ wi.g.width = 80;
+ wi.g.height = 20;
+ wi.g.y = 25;
+ wi.g.x = 10;
+ wi.text = " Visible C2";
+ wi.g.parent = ghContainer1;
+ ghCheckbox1 = gwinCheckboxCreate(0, &wi);
+
+ // Checkbox 2
+ wi.g.width = 80;
+ wi.g.height = 20;
+ wi.g.y = 25;
+ wi.g.x = 185;
+ wi.text = " Visible C3";
+ wi.g.parent = ghContainer1;
+ ghCheckbox2 = gwinCheckboxCreate(0, &wi);
+
+ // Checkbox 3
+ wi.g.width = 80;
+ wi.g.height = 20;
+ wi.g.y = 10;
+ wi.g.x = 10;
+ wi.text = " Visible C1";
+ wi.g.parent = 0;
+ ghCheckbox3 = gwinCheckboxCreate(0, &wi);
+
+
+ // Make the container become visible - therefore all its children
+ // become visible as well
+ gwinShow(ghContainer1);
+}
+
+int main(void) {
+ GEvent* pe;
+
+ // Initialize the display
+ gfxInit();
+
+ // Attach the mouse input
+ gwinAttachMouse(0);
+
+ // Set the widget defaults
+ gwinSetDefaultFont(gdispOpenFont("*"));
+ gwinSetDefaultStyle(&WhiteWidgetStyle, FALSE);
+ gdispClear(White);
+
+ // Create the widget
+ createWidgets();
+
+ // We want to listen for widget events
+ geventListenerInit(&gl);
+ gwinAttachListener(&gl);
+
+ // Set the initial state of the checkboxes
+ gwinCheckboxCheck(ghCheckbox1, TRUE);
+ gwinCheckboxCheck(ghCheckbox2, TRUE);
+ gwinCheckboxCheck(ghCheckbox3, TRUE);
+
+ while(1) {
+ // Get an Event
+ pe = geventEventWait(&gl, TIME_INFINITE);
+
+ switch(pe->type) {
+ case GEVENT_GWIN_CHECKBOX:
+ if (((GEventGWinCheckbox*)pe)->checkbox == ghCheckbox1) {
+ gwinSetVisible(ghContainer2, gwinCheckboxIsChecked(ghCheckbox1));
+ }
+ else if (((GEventGWinCheckbox*)pe)->checkbox == ghCheckbox2) {
+ gwinSetVisible(ghContainer3, gwinCheckboxIsChecked(ghCheckbox2));
+ }
+ else if (((GEventGWinCheckbox*)pe)->checkbox == ghCheckbox3) {
+ gwinSetVisible(ghContainer1, gwinCheckboxIsChecked(ghCheckbox3));
+ }
+ break;
+ }
+ }
+
+ return 0;
+}