Difference between revisions of "Container"
From uGFX Wiki
(Created page with "Category:Containers") |
|||
Line 1: | Line 1: | ||
+ | The container widget can be used to group together other widgets. It's a simple blank rectangle and it can be used as a parent for other widgets. | ||
+ | A widget can be added as a child to a container by adding the containers GHandle to the childs widget init structure: | ||
+ | <syntaxhighlight lang=c> | ||
+ | GHandle ghContainer; | ||
+ | GHandle ghChild; | ||
+ | ... | ||
+ | wi.g.parent = ghContainer; | ||
+ | ... | ||
+ | ghChild = gwinCreateXxx(0, &wi); | ||
+ | </syntaxhighlight> | ||
+ | Note: The childrens position (wi.g.x and wi.g.y) are always relative to its parent. | ||
+ | |||
+ | == Border == | ||
+ | The container widget can optionally be rendered with a border. To enable the border, GWIN_CONTAINER_BORDER has to be passed as a flag to the gwinContainerCreate() routine. | ||
+ | Note: If you want to use the container as a window-like element, you might want to take a look at the frame widget instead. | ||
+ | |||
+ | == Example == | ||
+ | The following example shows how to create a container and a button to it. | ||
+ | <syntaxhighlight lang=c> | ||
+ | #include "gfx.h" | ||
+ | |||
+ | static GHandle ghContainer; | ||
+ | static GHandle ghButton; | ||
+ | |||
+ | static void createWidgets(void) { | ||
+ | GWidgetInit wi; | ||
+ | |||
+ | // Apply some default values for GWIN | ||
+ | gwinWidgetClearInit(&wi); | ||
+ | |||
+ | // Apply the container parameters | ||
+ | wi.g.show = FALSE; | ||
+ | wi.g.width = 200; | ||
+ | wi.g.height = 150; | ||
+ | wi.g.y = 10; | ||
+ | wi.g.x = 10; | ||
+ | wi.text = "Container"; | ||
+ | ghContainer = gwinContainerCreate(0, &wi, GWIN_CONTAINER_BORDER); | ||
+ | wi.g.show = TRUE; | ||
+ | |||
+ | // Apply the button parameters | ||
+ | wi.g.width = 120; | ||
+ | wi.g.height = 30; | ||
+ | wi.g.y = 10; | ||
+ | wi.g.x = 10; | ||
+ | wi.text = "Button"; | ||
+ | wi.g.parent = ghContainer; | ||
+ | ghButton = gwinButtonCreate(0, &wi); | ||
+ | |||
+ | // Make the container become visible - therefore all its children | ||
+ | // become visible as well | ||
+ | gwinShow(ghContainer); | ||
+ | } | ||
+ | |||
+ | int main(void) { | ||
+ | // 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(); | ||
+ | |||
+ | while(1) { | ||
+ | gfxSleepMilliseconds(1000); | ||
+ | } | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
[[Category:Containers]] | [[Category:Containers]] |
Revision as of 17:34, 1 July 2014
The container widget can be used to group together other widgets. It's a simple blank rectangle and it can be used as a parent for other widgets. A widget can be added as a child to a container by adding the containers GHandle to the childs widget init structure:
GHandle ghContainer; GHandle ghChild; ... wi.g.parent = ghContainer; ... ghChild = gwinCreateXxx(0, &wi);
Note: The childrens position (wi.g.x and wi.g.y) are always relative to its parent.
Border
The container widget can optionally be rendered with a border. To enable the border, GWIN_CONTAINER_BORDER has to be passed as a flag to the gwinContainerCreate() routine. Note: If you want to use the container as a window-like element, you might want to take a look at the frame widget instead.
Example
The following example shows how to create a container and a button to it.
#include "gfx.h" static GHandle ghContainer; static GHandle ghButton; static void createWidgets(void) { GWidgetInit wi; // Apply some default values for GWIN gwinWidgetClearInit(&wi); // Apply the container parameters wi.g.show = FALSE; wi.g.width = 200; wi.g.height = 150; wi.g.y = 10; wi.g.x = 10; wi.text = "Container"; ghContainer = gwinContainerCreate(0, &wi, GWIN_CONTAINER_BORDER); wi.g.show = TRUE; // Apply the button parameters wi.g.width = 120; wi.g.height = 30; wi.g.y = 10; wi.g.x = 10; wi.text = "Button"; wi.g.parent = ghContainer; ghButton = gwinButtonCreate(0, &wi); // Make the container become visible - therefore all its children // become visible as well gwinShow(ghContainer); } int main(void) { // 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(); while(1) { gfxSleepMilliseconds(1000); } return 0; }