aboutsummaryrefslogtreecommitdiffstats
path: root/demos
diff options
context:
space:
mode:
authorJoel Bodenmann <joel@unormal.org>2014-05-11 15:11:10 +0200
committerJoel Bodenmann <joel@unormal.org>2014-05-11 15:11:10 +0200
commit50257722605df92ab57f42317fc2e97f7fd05f9a (patch)
tree0abcded4770690c28885f902743068c926270c73 /demos
parent6dc3cbcd2952f2c8c2fb589807ede06e09f87391 (diff)
downloaduGFX-50257722605df92ab57f42317fc2e97f7fd05f9a.tar.gz
uGFX-50257722605df92ab57f42317fc2e97f7fd05f9a.tar.bz2
uGFX-50257722605df92ab57f42317fc2e97f7fd05f9a.zip
Extending GWIN widget demo
Diffstat (limited to 'demos')
-rw-r--r--demos/modules/gwin/widgets/gfxconf.h1
-rw-r--r--demos/modules/gwin/widgets/main.c91
2 files changed, 60 insertions, 32 deletions
diff --git a/demos/modules/gwin/widgets/gfxconf.h b/demos/modules/gwin/widgets/gfxconf.h
index 368fdfb8..9f8601b8 100644
--- a/demos/modules/gwin/widgets/gfxconf.h
+++ b/demos/modules/gwin/widgets/gfxconf.h
@@ -60,6 +60,7 @@
#define GWIN_NEED_WIDGET TRUE
#define GWIN_NEED_LABEL TRUE
+ #define GWIN_LABEL_ATTRIBUTE TRUE
#define GWIN_NEED_BUTTON TRUE
// #define GWIN_BUTTON_LAZY_RELEASE TRUE
#define GWIN_NEED_SLIDER TRUE
diff --git a/demos/modules/gwin/widgets/main.c b/demos/modules/gwin/widgets/main.c
index 1af28b1b..3d8d7624 100644
--- a/demos/modules/gwin/widgets/main.c
+++ b/demos/modules/gwin/widgets/main.c
@@ -25,7 +25,7 @@
* (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 <stdio.h>
#include "gfx.h"
/**
@@ -79,7 +79,7 @@ static GHandle ghPgButtons, ghPgSliders, ghPgCheckboxes, ghPgLabels, ghPgRadios
static GHandle ghButton1, ghButton2, ghButton3, ghButton4;
static GHandle ghSlider1, ghSlider2, ghSlider3, ghSlider4;
static GHandle ghCheckbox1, ghCheckbox2, ghCheckDisableAll;
-static GHandle ghLabel1;
+static GHandle ghLabelSlider1, ghLabelSlider2, ghLabelSlider3, ghLabelSlider4, ghLabelRadio1;
static GHandle ghRadio1, ghRadio2;
static GHandle ghRadioBlack, ghRadioWhite, ghRadioYellow;
static GHandle ghList1, ghList2, ghList3, ghList4;
@@ -93,7 +93,7 @@ static gdispImage imgYesNo;
#define BUTTON_PADDING 20
#define TAB_HEIGHT 30
-#define LABEL_HEIGHT 40
+#define LABEL_HEIGHT 15
#define BUTTON_WIDTH 50
#define BUTTON_HEIGHT 30
#define LIST_WIDTH 75
@@ -176,36 +176,36 @@ static void createWidgets(void) {
// Buttons
wi.g.parent = ghPgButtons;
- wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; wi.g.y = 0;
- wi.g.x = 0; setbtntext(&wi, gwinGetInnerWidth(ghPgButtons), "B1");
+ wi.g.width = BUTTON_WIDTH; wi.g.height = BUTTON_HEIGHT; wi.g.y = 5;
+ wi.g.x = 5; setbtntext(&wi, gwinGetInnerWidth(ghPgButtons), "Button 1");
ghButton1 = gwinButtonCreate(0, &wi);
- wi.g.x += wi.g.width+1; setbtntext(&wi, gwinGetInnerWidth(ghPgButtons), "B2");
+ wi.g.x += wi.g.width+3; setbtntext(&wi, gwinGetInnerWidth(ghPgButtons), "Button 2");
ghButton2 = gwinButtonCreate(0, &wi);
- wi.g.x += wi.g.width+1; setbtntext(&wi, gwinGetInnerWidth(ghPgButtons), "B3");
+ wi.g.x += wi.g.width+3; setbtntext(&wi, gwinGetInnerWidth(ghPgButtons), "Button 3");
ghButton3 = gwinButtonCreate(0, &wi);
- wi.g.x += wi.g.width+1; setbtntext(&wi, gwinGetInnerWidth(ghPgButtons), "B4");
+ wi.g.x += wi.g.width+3; setbtntext(&wi, gwinGetInnerWidth(ghPgButtons), "Button 4");
ghButton4 = gwinButtonCreate(0, &wi);
// Horizontal Sliders
wi.g.parent = ghPgSliders;
- wi.g.width = gwinGetInnerWidth(ghPgSliders); wi.g.height = SLIDER_WIDTH;
- wi.g.x = 0; wi.g.y = 0; wi.text = "S1";
+ wi.g.width = gwinGetInnerWidth(ghPgSliders) - 10; wi.g.height = SLIDER_WIDTH;
+ wi.g.x = 5; wi.g.y = 5; wi.text = "S1";
ghSlider1 = gwinSliderCreate(0, &wi);
wi.g.y += wi.g.height + 1; wi.text = "S2";
ghSlider2 = gwinSliderCreate(0, &wi);
// Vertical Sliders
- wi.g.y += wi.g.height + 1;
- wi.g.width = SLIDER_WIDTH; wi.g.height = gwinGetInnerHeight(ghPgSliders) - wi.g.y;
- wi.g.x = 0; wi.text = "S3";
+ wi.g.y += wi.g.height + 5;
+ wi.g.width = SLIDER_WIDTH; wi.g.height = gwinGetInnerHeight(ghPgSliders) - 5 - wi.g.y;
+ wi.g.x = 5; wi.text = "S3";
ghSlider3 = gwinSliderCreate(0, &wi);
wi.g.x += wi.g.width+1; wi.text = "S4";
ghSlider4 = gwinSliderCreate(0, &wi);
// Checkboxes - for the 2nd checkbox we apply special drawing before making it visible
wi.g.parent = ghPgCheckboxes;
- wi.g.width = CHECKBOX_WIDTH; wi.g.height = CHECKBOX_HEIGHT; wi.g.x = 0;
- wi.g.y = 0; wi.text = "C1";
+ wi.g.width = CHECKBOX_WIDTH; wi.g.height = CHECKBOX_HEIGHT; wi.g.x = 5;
+ wi.g.y = 5; wi.text = "C1";
ghCheckbox1 = gwinCheckboxCreate(0, &wi);
wi.customDraw = gwinCheckboxDraw_CheckOnRight;
wi.g.y += wi.g.height+1; wi.text = "C2";
@@ -216,19 +216,34 @@ static void createWidgets(void) {
// Labels
wi.g.parent = ghPgLabels;
- wi.g.width = 0; wi.g.height = LABEL_HEIGHT; // dynamic width, fixed height
- wi.g.x = wi.g.y = 0; wi.text = "Label";
- ghLabel1 = gwinLabelCreate(0, &wi);
+ wi.g.width = 200; wi.g.height = LABEL_HEIGHT;
+ wi.g.x = wi.g.y = 5;wi.text = "N/A";
+ ghLabelSlider1 = gwinLabelCreate(0, &wi);
+ gwinLabelSetAttribute(ghLabelSlider1, 100, "Slider 1:");
+ wi.g.y += LABEL_HEIGHT + 2;
+ ghLabelSlider2 = gwinLabelCreate(0, &wi);
+ gwinLabelSetAttribute(ghLabelSlider2, 100, "Slider 2:");
+ wi.g.y += LABEL_HEIGHT + 2;
+ ghLabelSlider3 = gwinLabelCreate(0, &wi);
+ gwinLabelSetAttribute(ghLabelSlider3, 100, "Slider 3:");
+ wi.g.y += LABEL_HEIGHT + 2;
+ ghLabelSlider4 = gwinLabelCreate(0, &wi);
+ gwinLabelSetAttribute(ghLabelSlider4, 100, "Slider 4:");
+ wi.g.y += LABEL_HEIGHT + 2;
+ ghLabelRadio1 = gwinLabelCreate(0, &wi);
+ gwinLabelSetAttribute(ghLabelRadio1, 100, "RadioButton 1:");
+
// Radio Buttons
wi.g.parent = ghPgRadios;
- wi.g.width = RADIO_WIDTH; wi.g.height = RADIO_HEIGHT; wi.g.y = 0;
- wi.g.x = 0; wi.text = "Yes";
+ wi.g.width = RADIO_WIDTH; wi.g.height = RADIO_HEIGHT; wi.g.y = 5;
+ wi.g.x = 5; wi.text = "Yes";
ghRadio1 = gwinRadioCreate(0, &wi, GROUP_YESNO);
wi.g.x += wi.g.width; wi.text = "No"; if (wi.g.x + wi.g.width > gwinGetInnerWidth(ghPgRadios)) { wi.g.x = 0; wi.g.y += RADIO_HEIGHT; }
ghRadio2 = gwinRadioCreate(0, &wi, GROUP_YESNO);
+ gwinRadioPress(ghRadio1);
wi.g.width = COLOR_WIDTH; wi.g.y += RADIO_HEIGHT+5;
- wi.g.x = 0; wi.text = "Black";
+ wi.g.x = 5; wi.text = "Black";
ghRadioBlack = gwinRadioCreate(0, &wi, GROUP_COLORS);
wi.g.x += wi.g.width; wi.text = "White"; if (wi.g.x + wi.g.width > gwinGetInnerWidth(ghPgRadios)) { wi.g.x = 0; wi.g.y += RADIO_HEIGHT; }
ghRadioWhite = gwinRadioCreate(0, &wi, GROUP_COLORS);
@@ -238,8 +253,8 @@ static void createWidgets(void) {
// Lists
wi.g.parent = ghPgLists;
- wi.g.width = LIST_WIDTH; wi.g.height = LIST_HEIGHT; wi.g.y = 0;
- wi.g.x = 0; wi.text = "L1";
+ wi.g.width = LIST_WIDTH; wi.g.height = LIST_HEIGHT; wi.g.y = 5;
+ wi.g.x = 5; wi.text = "L1";
ghList1 = gwinListCreate(0, &wi, FALSE);
gwinListAddItem(ghList1, "Item 0", FALSE);
gwinListAddItem(ghList1, "Item 1", FALSE);
@@ -306,8 +321,8 @@ static void createWidgets(void) {
// Progressbar
wi.g.parent = ghPgProgressbars;
- wi.g.width = gwinGetInnerWidth(ghPgImages); wi.g.height = SLIDER_WIDTH; wi.g.y = 0;
- wi.g.x = 0; wi.text = "Progressbar 1";
+ wi.g.width = gwinGetInnerWidth(ghPgImages)-5; wi.g.height = SLIDER_WIDTH; wi.g.y = 5;
+ wi.g.x = 5; wi.text = "Progressbar 1";
ghProgressbar1 = gwinProgressbarCreate(0, &wi);
gwinProgressbarSetResolution(ghProgressbar1, 10);
}
@@ -448,14 +463,26 @@ int main(void) {
// Set control visibility depending on the tab selected
setTab(((GEventGWinRadio *)pe)->radio);
- // Do some special animation for Label1 to demonstrate auto width sizing
+ // We show the state of some of the GUI elements here
if (((GEventGWinRadio *)pe)->radio == ghTabLabels) {
- gwinPrintf(ghConsole, "Change Label Text\n");
- gfxSleepMilliseconds(1000);
- gwinSetText(ghLabel1, "Very Big Label", FALSE);
-
- gfxSleepMilliseconds(1000);
- gwinSetText(ghLabel1, "Label", FALSE);
+ char tmp[20];
+
+ // The sliders
+ snprintf(tmp, sizeof(tmp), "%d%%", gwinSliderGetPosition(ghSlider1));
+ gwinSetText(ghLabelSlider1, tmp, TRUE);
+ snprintf(tmp, sizeof(tmp), "%d%%", gwinSliderGetPosition(ghSlider2));
+ gwinSetText(ghLabelSlider2, tmp, TRUE);
+ snprintf(tmp, sizeof(tmp), "%d%%", gwinSliderGetPosition(ghSlider3));
+ gwinSetText(ghLabelSlider3, tmp, TRUE);
+ snprintf(tmp, sizeof(tmp), "%d%%", gwinSliderGetPosition(ghSlider4));
+ gwinSetText(ghLabelSlider4, tmp, TRUE);
+
+ // The radio buttons
+ if (gwinRadioIsPressed(ghRadio1)) {
+ gwinSetText(ghLabelRadio1, "Yes", TRUE);
+ } else if (gwinRadioIsPressed(ghRadio2)) {
+ gwinSetText(ghLabelRadio1, "No", TRUE);
+ }
}
break;