| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041 |
- /*
- mui_ref
-
-
- Documentatio
-
- mui-style
- monochrome user interface concepts
- selected element: inverted vs frame
- selection criteria: size vs. number of element types
- only buttons --> inverted cursor
- buttons and user elements --> frame cuser
- what means style:
- selected element concept (inverted vs frame)
- MUI_STYLE command for fonts
- callback postfix
- Edit modes
- unselected, selected, selected & update
-
-
- */
- #include "u8g2.h"
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include "mui.h"
- #include "mui_u8g2.h"
- /*=================================================*/
- /* global variables */
- u8g2_t u8g2;
- mui_t ui;
- /*
- global variables which form the communication gateway between the user interface and the rest of the code
- */
- uint8_t number_input9 = 2; // variable where the user can input a number between 0 and 9
- uint8_t number_input99 = 95; // variable where the user can input a number between 0 and 99
- uint8_t chkbox1_input = 0;
- uint8_t chkbox2_input = 0;
- uint8_t radio_input = 0;
- uint8_t fruit_input = 2;
- uint8_t color_input = 0;
- uint8_t food_input = 0;
- uint8_t text_input[4] = { ' ',' ',' ',' '} ;
- uint16_t list_selection_1 = 0;
- uint16_t list_selection_2 = 0;
- uint16_t list_selection_3 = 0;
- /*=================================================*/
- /* user element access functions */
- static const char *animals[] = { "Bird", "Bison", "Cat", "Crow", "Dog", "Elephant", "Fish", "Gnu", "Horse", "Koala", "Lion", "Mouse", "Owl", "Rabbit", "Spider", "Turtle", "Zebra" };
- uint16_t animals_get_cnt(void *data)
- {
- return sizeof(animals)/sizeof(*animals); /* number of animals */
- }
- const char *animals_get_str(void *data, uint16_t index)
- {
- return animals[index];
- }
- /*=================================================*/
- /* style */
- uint8_t mui_style_helv_r_08(mui_t *ui, uint8_t msg)
- {
-
- u8g2_t *u8g2 = mui_get_U8g2(ui);
- switch(msg)
- {
- case MUIF_MSG_DRAW:
-
- u8g2_SetFont(u8g2, u8g2_font_helvR08_tr);
- //u8g2_SetFont(u8g2, u8g2_font_squeezed_r7_tr);
- break;
- }
- return 0;
- }
- uint8_t mui_style_helv_b_08(mui_t *ui, uint8_t msg)
- {
- u8g2_t *u8g2 = mui_get_U8g2(ui);
- switch(msg)
- {
- case MUIF_MSG_DRAW:
-
- //u8g2_SetFont(u8g2, u8g2_font_helvB08_tr);
- u8g2_SetFont(u8g2, u8g2_font_squeezed_b7_tr);
- //su8g2_SetFont(u8g2, u8g2_font_lubBI14_te);
- break;
- }
- return 0;
- }
- uint8_t mui_style_menu_items(mui_t *ui, uint8_t msg)
- {
-
- u8g2_t *u8g2 = mui_get_U8g2(ui);
- switch(msg)
- {
- case MUIF_MSG_DRAW:
-
- //u8g2_SetFont(u8g2, u8g2_font_helvR08_tr);
- u8g2_SetFont(u8g2, u8g2_font_squeezed_r7_tr);
- break;
- }
- return 0;
- }
- uint8_t mui_style_monospaced(mui_t *ui, uint8_t msg)
- {
- u8g2_t *u8g2 = mui_get_U8g2(ui);
- switch(msg)
- {
- case MUIF_MSG_DRAW:
- u8g2_SetFont(u8g2, u8g2_font_profont12_tr);
- //u8g2_SetFont(u8g2, u8g2_font_6x10_tr);
- break;
- }
- return 0;
- }
- uint8_t mui_style_streamline_food_drink(mui_t *ui, uint8_t msg)
- {
- u8g2_t *u8g2 = mui_get_U8g2(ui);
- switch(msg)
- {
- case MUIF_MSG_DRAW:
- u8g2_SetFont(u8g2, u8g2_font_streamline_food_drink_t);
- break;
- }
- return 0;
- }
- uint8_t mui_style_small(mui_t *ui, uint8_t msg)
- {
- u8g2_t *u8g2 = mui_get_U8g2(ui);
- switch(msg)
- {
- case MUIF_MSG_DRAW:
- u8g2_SetFont(u8g2, u8g2_font_blipfest_07_tr );
- //u8g2_SetFont(u8g2, u8g2_font_squeezed_r7_tr);
- break;
- }
- return 0;
- }
- uint8_t mui_style_streamline_interface_essential_login(mui_t *ui, uint8_t msg)
- {
- u8g2_t *u8g2 = mui_get_U8g2(ui);
- switch(msg)
- {
- case MUIF_MSG_DRAW:
- u8g2_SetFont(u8g2, u8g2_font_streamline_interface_essential_login_t);
- //u8g2_SetFont(u8g2, u8g2_font_6x10_tr);
- break;
- }
- return 0;
- }
- /*=================================================*/
- /* local mui functions */
- uint8_t mui_hrule(mui_t *ui, uint8_t msg)
- {
- u8g2_t *u8g2 = mui_get_U8g2(ui);
- switch(msg)
- {
- case MUIF_MSG_DRAW:
- u8g2_DrawHLine(u8g2, 0, mui_get_y(ui), u8g2_GetDisplayWidth(u8g2));
- break;
- }
- return 0;
- }
- /*=================================================*/
- /* list functions (get cnt/get element pairs) */
- uint16_t list_get_cnt(void *data)
- {
- return 17; /* number of animals */
- }
- const char *list_get_str(void *data, uint16_t index)
- {
- static const char *animals[] = { "Bird", "Bison", "Cat", "Crow", "Dog", "Elephant", "Fish", "Gnu", "Horse", "Koala", "Lion", "Mouse", "Owl", "Rabbit", "Spider", "Turtle", "Zebra" };
- return animals[index];
- }
- uint16_t menu_get_cnt(void *data)
- {
- return 10; /* number of menu entries */
- }
- const char *menu_get_str(void *data, uint16_t index)
- {
- static const char *menu[] =
- {
- MUI_1 "Goto Main Menu",
- MUI_10 "Enter a number",
- MUI_11 "Parent/Child Selection",
- MUI_13 "Checkbox",
- MUI_14 "Radio Selection",
- MUI_15 "Text Input",
- MUI_16 "Single Line Selection",
- MUI_17 "List Line Selection",
- MUI_18 "Parent/Child List",
- MUI_20 "Array Edit",
- };
- return menu[index];
- }
- /*=================================================*/
- /* list functions (get cnt/get element pairs) */
- muif_t muif_list[] MUI_PROGMEM = {
- /* normal text style for the examples */
- MUIF_STYLE(0, mui_style_helv_r_08),
-
- /* bold text style for menu heading */
- MUIF_STYLE(1, mui_style_helv_b_08),
- /* very small font with programming info */
- MUIF_STYLE(2, mui_style_small),
-
- MUIF_STYLE(3, mui_style_streamline_interface_essential_login),
-
- /* food and drink */
- MUIF_STYLE(4, mui_style_streamline_food_drink),
-
- /* monospaced font, good for mui_u8g2_u8_char_wm_mud_pi */
- MUIF_STYLE(5, mui_style_monospaced),
- /* smaller replacement for style 0 */
- /*MUIF_STYLE(6, mui_style_glasstown),*/
-
- /* style for menu entries */
- MUIF_STYLE(7, mui_style_menu_items),
-
-
-
- /* horizontal line (hrule) */
- MUIF_RO("HR", mui_hrule),
- /* read only fixed text */
- MUIF_U8G2_LABEL(),
- MUIF_RO("GP",mui_u8g2_goto_data),
- MUIF_BUTTON("GC", mui_u8g2_goto_form_w1_pi),
- /* Form 10 */
- MUIF_GOTO(mui_u8g2_btn_goto_wm_fi),
-
- MUIF_BUTTON("G0", mui_u8g2_btn_goto_wm_fi),
- MUIF_BUTTON("G1", mui_u8g2_btn_goto_w1_fi),
- MUIF_BUTTON("G2", mui_u8g2_btn_goto_w1_pi),
- MUIF_BUTTON("G3", mui_u8g2_btn_goto_w2_fi),
- MUIF_BUTTON("G6", mui_u8g2_btn_goto_wm_if),
- /* Form 20 */
- MUIF_U8G2_U8_MIN_MAX("N0", &number_input9, 0, 9, mui_u8g2_u8_min_max_wm_mse_pi),
- MUIF_U8G2_U8_MIN_MAX("N1", &number_input99, 0, 99, mui_u8g2_u8_min_max_wm_mud_pi),
- MUIF_U8G2_U8_MIN_MAX("N2", &number_input9, 0, 9, mui_u8g2_u8_min_max_wm_mse_pf),
- MUIF_U8G2_U8_MIN_MAX("N3", &number_input99, 0, 99, mui_u8g2_u8_min_max_wm_mud_pf),
- /* Form 30 */
- MUIF_VARIABLE("C1",&chkbox1_input,mui_u8g2_u8_chkbox_wm_pi),
- MUIF_VARIABLE("C2",&chkbox2_input,mui_u8g2_u8_chkbox_wm_pi),
- MUIF_VARIABLE("RB",&radio_input,mui_u8g2_u8_radio_wm_pi),
- /* Form 40: Cycle Option */
- MUIF_VARIABLE("O1",&fruit_input,mui_u8g2_u8_opt_line_wa_mse_pi),
- MUIF_VARIABLE("O2",&fruit_input,mui_u8g2_u8_opt_line_wa_mud_pi),
- MUIF_VARIABLE("O3",&fruit_input,mui_u8g2_u8_opt_line_wa_mse_pf),
- MUIF_VARIABLE("O4",&fruit_input,mui_u8g2_u8_opt_line_wa_mud_pf),
- /* Form 50: Parent/Child Option */
- MUIF_VARIABLE("P1",&color_input,mui_u8g2_u8_opt_parent_wm_pi),
- MUIF_VARIABLE("ca",&color_input,mui_u8g2_u8_opt_radio_child_w1_pi),
-
- MUIF_VARIABLE("P2",&food_input,mui_u8g2_u8_opt_parent_wm_pi),
- MUIF_VARIABLE("cf",&food_input,mui_u8g2_u8_opt_child_wm_pi),
- /* Form 60: Char Input */
- MUIF_VARIABLE("T0", text_input+0, mui_u8g2_u8_char_wm_mud_pi),
- MUIF_VARIABLE("T1", text_input+1, mui_u8g2_u8_char_wm_mud_pi),
- MUIF_VARIABLE("T2", text_input+2, mui_u8g2_u8_char_wm_mud_pi),
- MUIF_VARIABLE("T3", text_input+3, mui_u8g2_u8_char_wm_mud_pi),
- /* Form 70: One of many selection within the same field */
- MUIF_U8G2_U16_LIST("A1", &list_selection_1, NULL, animals_get_str, animals_get_cnt, mui_u8g2_u16_list_line_wa_mse_pi),
- MUIF_U8G2_U16_LIST("A2", &list_selection_2, NULL, animals_get_str, animals_get_cnt, mui_u8g2_u16_list_line_wa_mud_pi),
- MUIF_U8G2_U16_LIST("AP", &list_selection_3, NULL, animals_get_str, animals_get_cnt, mui_u8g2_u16_list_parent_wm_pi),
- MUIF_U8G2_U16_LIST("AC", &list_selection_3, NULL, animals_get_str, animals_get_cnt, mui_u8g2_u16_list_child_w1_pi),
- /* Form 90: bar */
- MUIF_U8G2_U8_MIN_MAX_STEP("B0", &number_input9, 0, 20, 2, MUI_MMS_2X_BAR|MUI_MMS_SHOW_VALUE, mui_u8g2_u8_bar_wm_mse_pi),
- MUIF_U8G2_U8_MIN_MAX_STEP("B1", &number_input9, 0, 20, 2, MUI_MMS_2X_BAR|MUI_MMS_SHOW_VALUE, mui_u8g2_u8_bar_wm_mud_pi),
- MUIF_U8G2_U8_MIN_MAX_STEP("B2", &number_input9, 0, 20, 2, MUI_MMS_2X_BAR|MUI_MMS_SHOW_VALUE, mui_u8g2_u8_bar_wm_mse_pf),
- MUIF_U8G2_U8_MIN_MAX_STEP("B3", &number_input9, 0, 20, 2, MUI_MMS_2X_BAR|MUI_MMS_SHOW_VALUE, mui_u8g2_u8_bar_wm_mud_pf),
- };
- fds_t fds[] =
- MUI_FORM(1)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "MUI Elements")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_10 "Goto Buttons|"
- MUI_20 "uint8 Number|"
- MUI_30 "uint8 Checkbox|"
- MUI_40 "uint8 Cycle Options|"
- MUI_50 "uint8 ParentChild Select|"
- MUI_60 "uint8 Char/Text Input|"
- MUI_70 "uint16 Cycle Options|"
- MUI_80 "uint16 ParentChild Select|"
- MUI_90 "uint8 Bar Graph|"
- MUI_18 "Parent/Child List|"
- MUI_20 "Array Edit|"
- MUI_16 "Goto Test")
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(10)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "Goto Buttons")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_11 "btn_goto_wm_fi|"
- MUI_12 "btn_goto_w1_fi|"
- MUI_13 "btn_goto_w1_pi|"
- MUI_14 "btn_goto_w2_fi|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(11)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_btn_goto_wm_fi")
- MUI_LABEL(1,12, "MUIF_GOTO, MUIF_BUTTON")
- MUI_LABEL(1,19, "MUI_GOTO, MUI_XYAT")
- MUI_LABEL(1,25, "Centered button, jumps to form")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_GOTO(64, 42, 10, "Button")
- MUI_GOTO(64, 59, 10, " Ok ")
- MUI_FORM(12)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_btn_goto_w1_fi")
- MUI_LABEL(1,12, "MUIF_GOTO, MUIF_BUTTON")
- MUI_LABEL(1,19, "MUI_GOTO, MUI_XYAT")
- MUI_LABEL(1,25, "Full width button with frame")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_XYAT("G1", 1, 42, 10, "Button")
- MUI_GOTO(64, 59, 10, " Ok ")
- MUI_FORM(13)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_btn_goto_w1_pi")
- MUI_LABEL(1,12, "MUIF_GOTO, MUIF_BUTTON")
- MUI_LABEL(1,19, "MUI_GOTO, MUI_XYAT")
- MUI_LABEL(1,25, "Full width button without frame")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_XYAT("G2", 1, 42, 10, "Button")
- MUI_GOTO(64, 59, 10, " Ok ")
- MUI_FORM(14)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_btn_goto_w2_fi")
- MUI_LABEL(1,12, "MUIF_GOTO, MUIF_BUTTON")
- MUI_LABEL(1,19, "MUI_GOTO, MUI_XYAT")
- MUI_LABEL(1,25, "Centered half display width button")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_XYAT("G3", 32, 42, 10, "Btn 1")
- MUI_XYAT("G3", 96, 42, 10, "Btn 2")
- MUI_GOTO(64, 59, 10, " Ok ")
- MUI_FORM(16)
- MUI_STYLE(0)
- MUI_GOTO(64, 59, 1, " Back ")
- MUI_FORM(20)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "uint8 Number")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_21 "u8_min_max_wm_mse_pi|"
- MUI_22 "u8_min_max_wm_mud_pi|"
- MUI_23 "u8_min_max_wm_mse_pf|"
- MUI_24 "u8_min_max_wm_mud_pf|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(21)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_min_max_wm_mse_pi")
- MUI_LABEL(1,12, "MUIF_U8G2_U8_MIN_MAX")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "Input for uint8_t number")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Number: ")
- MUI_XY("N0",70, 40)
- MUI_GOTO(64, 59, 20, " Ok ")
- MUI_FORM(22)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_min_max_wm_mud_pi")
- MUI_LABEL(1,12, "MUIF_U8G2_U8_MIN_MAX")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "Input for uint8_t number")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Number: ")
- MUI_XY("N1",70, 40)
- MUI_GOTO(64, 59, 20, " Ok ")
- MUI_FORM(23)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_min_max_wm_mse_pf")
- MUI_LABEL(1,12, "MUIF_U8G2_U8_MIN_MAX")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "Input for uint8_t number")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Number: ")
- MUI_XY("N2",70, 40)
- MUI_GOTO(64, 59, 20, " Ok ")
- MUI_FORM(24)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_min_max_wm_mud_pf")
- MUI_LABEL(1,12, "MUIF_U8G2_U8_MIN_MAX")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "Input for uint8_t number")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Number: ")
- MUI_XY("N3",70, 40)
- MUI_GOTO(64, 59, 20, " Ok ")
- MUI_FORM(30)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "uint8 Checkbox")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_31 "u8_chkbox_wm_pi|"
- MUI_32 "u8_radio_wm_pi|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(31)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_chkbox_wm_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "Checkbox, values 0 and 1, uint8_t)")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Checkbox 1: ")
- MUI_XY("C1",66, 40)
- MUI_LABEL(1,55, "Checkbox 2: ")
- MUI_XY("C2",66, 55)
- MUI_STYLE(3)
- MUI_GOTO(110, 54, 30, "\x31")
- MUI_FORM(32)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_radio_wm_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYA, MUI_XYAT")
- MUI_LABEL(1,25, "Radio buttons, assign arg to variable")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_XYAT("RB", 1, 40, 1, "Radio 1")
- MUI_XYAT("RB", 1, 55, 2, "Radio 2")
- MUI_STYLE(3)
- MUI_GOTO(110, 54, 30, "\x31")
- MUI_FORM(40)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "uint8 Cycle Options")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_41 "u8_opt_line_wa_mse_pi|"
- MUI_42 "u8_opt_line_wa_mud_pi|"
- MUI_43 "u8_opt_line_wa_mse_pf|"
- MUI_44 "u8_opt_line_wa_mud_pf|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(41)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_opt_line_wa_mse_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYAT")
- MUI_LABEL(1,25, "Options forward cycle")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Fruit:")
- MUI_XYAT("O1",60, 40, 60, "Banana|Apple|Melon|Cranberry")
- MUI_STYLE(0)
- //MUI_XYAT("G6", 64, 59, 40, " Ok ")
- MUI_GOTO(64, 59, 40, " Ok ")
- MUI_FORM(42)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_opt_line_wa_mud_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYAT")
- MUI_LABEL(1,25, "Options forward+backward cycle")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Fruit:")
- MUI_XYAT("O2",60, 40, 60, "Banana|Apple|Melon|Cranberry")
- MUI_STYLE(0)
- //MUI_XYAT("G6", 64, 59, 40, " Ok ")
- MUI_GOTO(64, 59, 40, " Ok ")
- MUI_FORM(43)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_opt_line_wa_mse_pf")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYAT")
- MUI_LABEL(1,25, "Options forward cycle")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Fruit:")
- MUI_XYAT("O3",60, 40, 60, "Banana|Apple|Melon|Cranberry")
- MUI_STYLE(0)
- MUI_XYAT("G6", 64, 59, 40, " Ok ")
- //MUI_GOTO(64, 59, 40, " Ok ")
- MUI_FORM(44)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_opt_line_wa_mud_pf")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYAT")
- MUI_LABEL(1,25, "Options forward+backward cycle")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Fruit:")
- MUI_XYAT("O4",60, 40, 60, "Banana|Apple|Melon|Cranberry")
- MUI_STYLE(0)
- MUI_XYAT("G6", 64, 59, 40, " Ok ")
- //MUI_GOTO(64, 59, 40, " Ok ")
- MUI_FORM(50)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "uint8 ParentChild Select")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_51 "u8_opt_radio_child_w1_pi|"
- MUI_53 "u8_opt_child_wm_pi|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- //MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(51)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "..._u8_opt_parent_wm_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYAT")
- MUI_LABEL(1,25, "Parent: Show selected option")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Color:")
- MUI_XYAT("P1",60, 40, 52, "red|orange|yellow|green|cyan|azure|blue|violet|magenta|rose")
- MUI_STYLE(0)
- MUI_GOTO(64, 59, 50, " Ok ")
- MUI_FORM(52)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "..._u8_opt_radio_child_w1_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYA")
- MUI_LABEL(1,25, "Child: Show selectable options")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_XYA("ca", 5, 38, 0)
- MUI_XYA("ca", 5, 49, 1)
- MUI_XYA("ca", 5, 60, 2)
- MUI_FORM(53)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "..._u8_opt_parent_wm_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYAT")
- MUI_LABEL(1,25, "Parent: Show selected option")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(15,42, "We need:")
- MUI_STYLE(4)
- MUI_XYAT("P2",80, 49, 54, "\x30|\x31|\x32|\x33|\x34|\x35|\x36|\x37|\x38|\x39|\x40|\x41|\x42|\x43")
- MUI_STYLE(0)
- MUI_GOTO(64, 59, 50, " Ok ")
- MUI_FORM(54)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "..._u8_opt_child_wm_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYA")
- MUI_LABEL(1,25, "Child: Show selectable options")
- MUI_XY("HR", 0,26)
- MUI_STYLE(4)
- MUI_XYA("cf", 3, 53, 0)
- MUI_XYA("cf", 28, 53, 1)
- MUI_XYA("cf", 53, 53, 2)
- MUI_XYA("cf", 78, 53, 3)
- MUI_XYA("cf", 103, 53, 4)
- MUI_FORM(60)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "uint8 Char/Text Input")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_61 "u8_char_wm_mud_pi|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(61)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_char_wm_mud_pi")
- MUI_LABEL(1,12, "MUIF_VARIABLE")
- MUI_LABEL(1,19, "MUI_XYAT")
- MUI_LABEL(1,25, "4x Char Input")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Text:")
- MUI_STYLE(5)
- MUI_XY("T0",40, 40)
- MUI_XY("T1",48, 40)
- MUI_XY("T2",56, 40)
- MUI_XY("T3",64, 40)
- MUI_STYLE(0)
- MUI_GOTO(64, 59, 60, " Ok ")
- MUI_FORM(70)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "uint16 Cycle Options")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_71 "u16_list_line_wa_mse_pi|"
- MUI_72 "u16_list_line_wa_mud_pi|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(71)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u16_list_line_wa_mse_pi")
- MUI_LABEL(1,12, "MUIF_U8G2_U16_LIST")
- MUI_LABEL(1,19, "MUI_XYA")
- MUI_LABEL(1,25, "Cycle through options")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Animal:")
- MUI_XYA("A1",45, 40, 50)
- MUI_GOTO(64, 59, 70, " Ok ")
- MUI_FORM(72)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u16_list_line_wa_mud_pi")
- MUI_LABEL(1,12, "MUIF_U8G2_U16_LIST")
- MUI_LABEL(1,19, "MUI_XYA")
- MUI_LABEL(1,25, "Cycle through options")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Animal:")
- MUI_XYA("A2",45, 40, 50)
- MUI_GOTO(64, 59, 70, " Ok ")
- //uint8_t mui_u8g2_u16_list_parent_wm_pi(mui_t *ui, uint8_t msg); /* MUIF_U8G2_U16_LIST, MUI_XYA, arg=subform */
- //uint8_t mui_u8g2_u16_list_child_w1_pi(mui_t *ui, uint8_t msg); /* MUIF_U8G2_U16_LIST, MUI_XYA, arg=sub element number */
- MUI_FORM(80)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "uint16 ParentChild Select")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_81 "u16_list_parent_wm_pi|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- //MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(81)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "..._u16_list_parent_wm_pi")
- MUI_LABEL(1,12, "MUIF_U8G2_U16_LIST")
- MUI_LABEL(1,19, "MUI_XYA")
- MUI_LABEL(1,25, "Parent: Show selected option")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(5,40, "Animal:")
- MUI_XYA("AP",50, 40, 82) /* jump to sub form 82 */
- MUI_GOTO(64, 59, 80, " Ok ")
- MUI_FORM(82)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "...u16_list_child_w1_pi")
- MUI_LABEL(1,12, "MUIF_U8G2_U16_LIST")
- MUI_LABEL(1,19, "MUI_XYA")
- MUI_LABEL(1,25, "Child: Show selectable options")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_XYA("AC", 5, 38, 0)
- MUI_XYA("AC", 5, 49, 1)
- MUI_XYA("AC", 5, 60, 2)
- MUI_FORM(90)
- MUI_STYLE(1)
- MUI_LABEL(5,10, "uint8 Bar Graph")
- MUI_XY("HR", 0,13)
- MUI_STYLE(7)
- MUI_DATA("GP",
- MUI_91 "u8_bar_wm_mse_pi|"
- MUI_92 "u8_bar_wm_mud_pi|"
- MUI_93 "u8_bar_wm_mse_pf|"
- MUI_94 "u8_bar_wm_mud_pf|"
- MUI_1 "Back to Main Menu" )
- MUI_XYA("GC", 5, 25, 0)
- MUI_XYA("GC", 5, 37, 1)
- MUI_XYA("GC", 5, 49, 2)
- MUI_XYA("GC", 5, 61, 3)
- MUI_FORM(91)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_bar_wm_mse_pi")
- MUI_LABEL(1,12, "MUIF_U8G2_U8_MIN_MAX_STEP")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "uint8_t bar graph input")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Bar: ")
- MUI_XY("B0",40, 40)
- MUI_GOTO(64, 59, 90, " Ok ")
- MUI_FORM(92)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_bar_wm_mud_pi")
- MUI_LABEL(1,12, "MUIF_U8G2_U8_MIN_MAX_STEP")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "uint8_t bar graph input")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Bar: ")
- MUI_XY("B1",40, 40)
- MUI_GOTO(64, 59, 90, " Ok ")
- MUI_FORM(93)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_bar_wm_mse_pf")
- MUI_LABEL(1,12, "MUIF_U8G2_U8_MIN_MAX_STEP")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "uint8_t bar graph input")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Bar: ")
- MUI_XY("B2",40, 40)
- MUI_GOTO(64, 59, 90, " Ok ")
- MUI_FORM(94)
- MUI_STYLE(2)
- MUI_LABEL(1,5, "mui_u8g2_u8_bar_wm_mud_pf")
- MUI_LABEL(1,12, "MUIF_U8G2_U8_MIN_MAX_STEP")
- MUI_LABEL(1,19, "MUI_XY")
- MUI_LABEL(1,25, "uint8_t bar graph input")
- MUI_XY("HR", 0,26)
- MUI_STYLE(0)
- MUI_LABEL(1,40, "Bar: ")
- MUI_XY("B3",40, 40)
- MUI_GOTO(64, 59, 90, " Ok ")
- ;
- int screenshot_n = 0;
- void do_screenshot(void)
- {
- char s[4096];
- u8x8_SaveBitmapTGA(u8g2_GetU8x8(&u8g2), "screenshot.tga");
- sprintf( s,
- "convert -border 4 -bordercolor 'rgb(255,190,40)'"
- " -fill 'rgb(255,170,0)' -opaque white"
- " -filter point -resize 200%%"
- " screenshot.tga pic%04d.png", screenshot_n);
- system(s);
- screenshot_n++;
- /*
- gif animation:
- convert -delay 40 -loop 0 pic*.png animation.gif
- */
- }
- char key_queue[1024] = "";
- int key_pos = 0;
- int get_key(void)
- {
- int k;
-
- if ( key_queue[key_pos] != '\0' )
- {
- k = key_queue[key_pos++];
- }
- else
- {
- k = u8g_sdl_get_key();
- }
- return k;
- }
- void set_key_queue(const char *s)
- {
- strcpy(key_queue, s);
- key_pos = 0;
- }
- int draw(int form, const char *keys, const char *gif)
- {
- int k;
- int is_screenshot_enabled = 0;
- mui_GotoForm(&ui, form, 0);
- set_key_queue(keys);
- for(;;)
- {
- u8g2_SetFontRefHeightExtendedText(&u8g2);
- u8g2_FirstPage(&u8g2);
- do
- {
- mui_Draw(&ui);
- } while( u8g2_NextPage(&u8g2) );
- if ( is_screenshot_enabled )
- {
- do_screenshot();
- }
- // printf("mui_GetCurrentCursorFocusPosition=%d\n", mui_GetCurrentCursorFocusPosition(&ui));
-
- do
- {
- k = get_key();
- } while( k < 0 );
- printf("%c", k);
-
- /*
- if ( k == 'e' ) y -= 1;
- if ( k == 'x' ) y += 1;
- if ( k == 's' ) x -= 1;
- if ( k == 'd' ) x += 1;
- */
-
- if ( k == 'q' ) break;
- if ( k == 'n' )
- {
- mui_NextField(&ui);
- }
- if ( k == 'p' )
- {
- mui_PrevField(&ui);
- }
- if ( k == 's' )
- {
- mui_SendSelect(&ui);
- }
- if ( k == 't' )
- {
- puts("screenshot");
- do_screenshot();
- }
-
- if ( k == 'a' ) // start animation
- {
- screenshot_n = 0;
- system("rm pic*.png");
- is_screenshot_enabled = 1;
- }
-
- if ( k == '.' )
- {
- char sys[1024];
- is_screenshot_enabled = 0;
- sprintf(sys, "convert -delay 100 -loop 0 pic*.png %s", gif);
- system(sys);
- }
-
- if ( k == 'x' )
- {
- mui_GotoForm(&ui, 10, 0);
- set_key_queue("asnnsnsnnsnnsnnns.");
- }
- }
- return 0;
- }
- int main(void)
- {
-
- u8g2_SetupBuffer_SDL_128x64_4(&u8g2, &u8g2_cb_r0);
- u8x8_InitDisplay(u8g2_GetU8x8(&u8g2));
- u8x8_SetPowerSave(u8g2_GetU8x8(&u8g2), 0);
-
- u8x8_ConnectBitmapToU8x8(u8g2_GetU8x8(&u8g2)); /* connect to bitmap */
-
- u8g2_SetFontMode(&u8g2, 1);
- mui_Init(&ui, &u8g2, fds, muif_list, sizeof(muif_list)/sizeof(muif_t));
- mui_GotoForm(&ui, 1, 0);
- draw(1, "", ""); return 0;
-
- /*
-
- a: start animation
- .: end and write animation
- goto form (first argument) then press a to see where the animation has to start
- */
- /*
- draw(10, "asnnnsnsnnnsnnsnnnsnnnsnnnnns.q", "mui_btn_goto.gif");
- draw(20, "assssnsnssnnnnnnsnsnnssppssssssnsnnnssnpppppppsns.q", "mui_uint8_number.gif");
- draw(30, "assnsnsnssnsnsssnsns.q", "mui_uint8_checkbox_radio.gif");
- draw(40, "asnnssnsnssppsnsnnsnnsssnsnnnssnnsns.q", "mui_u8g2_u8_opt_line_wa.gif");
- draw(50, "assnnnnsnnspppsnsnssnnnsnnsnnnnnnnsns.q", "mui_u8g2_u8_opt_parent.gif");
- draw(60, "assppppppsnsnnnnnnnnnsnsppppppppppppppppppppsnsnnnsns.q", "mui_u8g2_u8_char_wm_mud_pi.gif");
- draw(70, "assssssnsnssnnnnnnsnnspsns.q", "mui_u8g2_u16_list_line.gif");
- draw(80, "assnnssnnnssoppppppnsns.q", "mui_u8g2_u16_list_child.gif");
- draw(90, "assssnsnssnnpsnsnnsssnnsnsnnnsspppnsns.q", "mui_u8g2_u8_bar.gif");
- */
- draw(10, "asnnnsnsnnnsnsnnnsnsnnnnns.q", "mui_btn_goto.gif");
- draw(20, "assssnsnssnnnnnnsnsnssppssssssnsnssnpppppppsns.q", "mui_uint8_number.gif");
- draw(30, "assnsnsnssnsnsssnsns.q", "mui_uint8_checkbox_radio.gif");
- draw(40, "assssspsnssnnnnnppsnsnssssnsnssppsns.q", "mui_u8g2_u8_opt_line_wa.gif");
- draw(50, "assnnnnsnnspppsnsnssnnnsnnsnnnnnnnsns.q", "mui_u8g2_u8_opt_parent.gif");
- draw(60, "assppppppsnsnnnnnnnnnsnsppppppppppppppppppppsnsnnnsns.q", "mui_u8g2_u8_char_wm_mud_pi.gif");
- draw(70, "assssssnsnssnnnnnnsnnspsns.q", "mui_u8g2_u16_list_line.gif");
- draw(80, "assnnssnnnssoppppppnsns.q", "mui_u8g2_u16_list_child.gif");
- draw(90, "assssnsnssnnpsnsnsssnnsnsnsspppnsns.q", "mui_u8g2_u8_bar.gif");
-
-
- return 0;
- }
|