EWOL: Comple XML GUI {#ewol_tutorial_complex_xml_gui} ==================== @tableofcontents Objectifs: {#ewol_tutorial_complex_xml_gui_objectif} ========== - What is a Widget - Simply create a complex Gui What is a Widget {#ewol_tutorial_complex_xml_gui_what} ================ A widget is a simple entity of a graphical Object. It herited of every ewol::Object class with many graphical interface to draw a complex gui. We can consider some widget: - ewol::Windows: Main gui interface to display the unique "windows". - Container Widget: Widget that manage some subWidget (generic) - Simple widget: all widget that display somthing. - Meta widget: Widget composed with some wodget. Simple load & configure of a widget: {#ewol_tutorial_complex_xml_gui_simple} ==================================== We have 4 way to create a widget: call create and configure ------------------------- First create the widget: ```{.cpp} ewol::widget::ButtonShared tmpWidget = ewol::widget::Button::create(); if (tmpWidget == null) { APPL_CRITICAL("The widget can not be created"); } ``` Set some parameters: ```{.cpp} tmpWidget->propertyName.set("my name"); tmpWidget->propertyExpand.set(bvec2(true,false)); tmpWidget->propertyFill.set(bvec2(true,true)); ``` **Note:** ``` This is the faster way to configure your gui. and the check are done when you compile your code. ``` Call create and direct configuration ------------------------------------ We can configure the wiget before the init() is called. ```{.cpp} ewol::widget::ButtonShared tmpWidget = ewol::widget::Button::create( "name", etk::String("my name"), "expand", bvec2(true,false), "fill", bvec2(true,true)); if (tmpWidget == null) { APPL_CRITICAL("The widget can not be created"); } ``` **Note:** ``` The configuration is done and check at the runtime ==> you need to test it to be sure your configuration work. ``` Call generic factory system (compositing) ----------------------------------------- ```{.cpp} #include ewol::widget::WidgetShared tmpWidget = ewol::widget::composerGenerateString("