From dd27c3530432ea0b09f01e604bf577f31d8ef841 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 1 Jun 2023 15:41:47 +1000 Subject: convert lvgl from submodule to a plain old directory --- lib/lvgl | 1 - lib/lvgl/examples/event/index.rst | 19 ++++++++ lib/lvgl/examples/event/lv_example_event.h | 41 +++++++++++++++++ lib/lvgl/examples/event/lv_example_event_1.c | 30 ++++++++++++ lib/lvgl/examples/event/lv_example_event_1.py | 25 ++++++++++ lib/lvgl/examples/event/lv_example_event_2.c | 46 +++++++++++++++++++ lib/lvgl/examples/event/lv_example_event_2.py | 22 +++++++++ lib/lvgl/examples/event/lv_example_event_3.c | 44 ++++++++++++++++++ lib/lvgl/examples/event/lv_example_event_3.py | 32 +++++++++++++ lib/lvgl/examples/event/lv_example_event_4.c | 66 +++++++++++++++++++++++++++ 10 files changed, 325 insertions(+), 1 deletion(-) delete mode 160000 lib/lvgl create mode 100644 lib/lvgl/examples/event/index.rst create mode 100644 lib/lvgl/examples/event/lv_example_event.h create mode 100644 lib/lvgl/examples/event/lv_example_event_1.c create mode 100644 lib/lvgl/examples/event/lv_example_event_1.py create mode 100644 lib/lvgl/examples/event/lv_example_event_2.c create mode 100644 lib/lvgl/examples/event/lv_example_event_2.py create mode 100644 lib/lvgl/examples/event/lv_example_event_3.c create mode 100644 lib/lvgl/examples/event/lv_example_event_3.py create mode 100644 lib/lvgl/examples/event/lv_example_event_4.c (limited to 'lib/lvgl/examples/event') diff --git a/lib/lvgl b/lib/lvgl deleted file mode 160000 index 0732400e..00000000 --- a/lib/lvgl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 0732400e7b564dd0e7dc4a924619d8e19c5b23a0 diff --git a/lib/lvgl/examples/event/index.rst b/lib/lvgl/examples/event/index.rst new file mode 100644 index 00000000..a556ac8c --- /dev/null +++ b/lib/lvgl/examples/event/index.rst @@ -0,0 +1,19 @@ + +Button click event +""""""""""""""""""" + +.. lv_example:: event/lv_example_event_1 + :language: c + +Handle multiple events +"""""""""""""""""""""""" +.. lv_example:: event/lv_example_event_2 + :language: c + + +Event bubbling +"""""""""""""""""""""""" +.. lv_example:: event/lv_example_event_3 + :language: c + + diff --git a/lib/lvgl/examples/event/lv_example_event.h b/lib/lvgl/examples/event/lv_example_event.h new file mode 100644 index 00000000..591f4f94 --- /dev/null +++ b/lib/lvgl/examples/event/lv_example_event.h @@ -0,0 +1,41 @@ +/** + * @file lv_example_event.h + * + */ + +#ifndef LV_EXAMPLE_EVENT_H +#define LV_EXAMPLE_EVENT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * GLOBAL PROTOTYPES + **********************/ +void lv_example_event_1(void); +void lv_example_event_2(void); +void lv_example_event_3(void); +void lv_example_event_4(void); + +/********************** + * MACROS + **********************/ + +#ifdef __cplusplus +} /*extern "C"*/ +#endif + +#endif /*LV_EXAMPLE_EVENT_H*/ diff --git a/lib/lvgl/examples/event/lv_example_event_1.c b/lib/lvgl/examples/event/lv_example_event_1.c new file mode 100644 index 00000000..5be478e1 --- /dev/null +++ b/lib/lvgl/examples/event/lv_example_event_1.c @@ -0,0 +1,30 @@ +#include "../lv_examples.h" +#if LV_BUILD_EXAMPLES && LV_USE_SWITCH + +static void event_cb(lv_event_t * e) +{ + LV_LOG_USER("Clicked"); + + static uint32_t cnt = 1; + lv_obj_t * btn = lv_event_get_target(e); + lv_obj_t * label = lv_obj_get_child(btn, 0); + lv_label_set_text_fmt(label, "%"LV_PRIu32, cnt); + cnt++; +} + +/** + * Add click event to a button + */ +void lv_example_event_1(void) +{ + lv_obj_t * btn = lv_btn_create(lv_scr_act()); + lv_obj_set_size(btn, 100, 50); + lv_obj_center(btn); + lv_obj_add_event_cb(btn, event_cb, LV_EVENT_CLICKED, NULL); + + lv_obj_t * label = lv_label_create(btn); + lv_label_set_text(label, "Click me!"); + lv_obj_center(label); +} + +#endif diff --git a/lib/lvgl/examples/event/lv_example_event_1.py b/lib/lvgl/examples/event/lv_example_event_1.py new file mode 100644 index 00000000..93376cf3 --- /dev/null +++ b/lib/lvgl/examples/event/lv_example_event_1.py @@ -0,0 +1,25 @@ +class Event_1(): + def __init__(self): + self.cnt = 1 + # + # Add click event to a button + # + + btn = lv.btn(lv.scr_act()) + btn.set_size(100, 50) + btn.center() + btn.add_event_cb(self.event_cb, lv.EVENT.CLICKED, None) + + label = lv.label(btn) + label.set_text("Click me!") + label.center() + + def event_cb(self,e): + print("Clicked") + + btn = e.get_target() + label = btn.get_child(0) + label.set_text(str(self.cnt)) + self.cnt += 1 + +evt1 = Event_1() diff --git a/lib/lvgl/examples/event/lv_example_event_2.c b/lib/lvgl/examples/event/lv_example_event_2.c new file mode 100644 index 00000000..24991425 --- /dev/null +++ b/lib/lvgl/examples/event/lv_example_event_2.c @@ -0,0 +1,46 @@ +#include "../lv_examples.h" +#if LV_BUILD_EXAMPLES && LV_USE_SWITCH + +static void event_cb(lv_event_t * e) +{ + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * label = lv_event_get_user_data(e); + + switch(code) { + case LV_EVENT_PRESSED: + lv_label_set_text(label, "The last button event:\nLV_EVENT_PRESSED"); + break; + case LV_EVENT_CLICKED: + lv_label_set_text(label, "The last button event:\nLV_EVENT_CLICKED"); + break; + case LV_EVENT_LONG_PRESSED: + lv_label_set_text(label, "The last button event:\nLV_EVENT_LONG_PRESSED"); + break; + case LV_EVENT_LONG_PRESSED_REPEAT: + lv_label_set_text(label, "The last button event:\nLV_EVENT_LONG_PRESSED_REPEAT"); + break; + default: + break; + } +} + +/** + * Handle multiple events + */ +void lv_example_event_2(void) +{ + lv_obj_t * btn = lv_btn_create(lv_scr_act()); + lv_obj_set_size(btn, 100, 50); + lv_obj_center(btn); + + lv_obj_t * btn_label = lv_label_create(btn); + lv_label_set_text(btn_label, "Click me!"); + lv_obj_center(btn_label); + + lv_obj_t * info_label = lv_label_create(lv_scr_act()); + lv_label_set_text(info_label, "The last button event:\nNone"); + + lv_obj_add_event_cb(btn, event_cb, LV_EVENT_ALL, info_label); +} + +#endif diff --git a/lib/lvgl/examples/event/lv_example_event_2.py b/lib/lvgl/examples/event/lv_example_event_2.py new file mode 100644 index 00000000..31392691 --- /dev/null +++ b/lib/lvgl/examples/event/lv_example_event_2.py @@ -0,0 +1,22 @@ +def event_cb(e,label): + code = e.get_code() + if code == lv.EVENT.PRESSED: + label.set_text("The last button event:\nLV_EVENT_PRESSED") + elif code == lv.EVENT.CLICKED: + label.set_text("The last button event:\nLV_EVENT_CLICKED") + elif code == lv.EVENT.LONG_PRESSED: + label.set_text("The last button event:\nLV_EVENT_LONG_PRESSED") + elif code == lv.EVENT.LONG_PRESSED_REPEAT: + label.set_text("The last button event:\nLV_EVENT_LONG_PRESSED_REPEAT") +btn = lv.btn(lv.scr_act()) +btn.set_size(100, 50) +btn.center() + +btn_label = lv.label(btn) +btn_label.set_text("Click me!") +btn_label.center() + +info_label = lv.label(lv.scr_act()) +info_label.set_text("The last button event:\nNone") + +btn.add_event_cb(lambda e: event_cb(e,info_label), lv.EVENT.ALL, None) diff --git a/lib/lvgl/examples/event/lv_example_event_3.c b/lib/lvgl/examples/event/lv_example_event_3.c new file mode 100644 index 00000000..5ead9440 --- /dev/null +++ b/lib/lvgl/examples/event/lv_example_event_3.c @@ -0,0 +1,44 @@ +#include "../lv_examples.h" +#if LV_BUILD_EXAMPLES && LV_USE_FLEX + +static void event_cb(lv_event_t * e) +{ + /*The original target of the event. Can be the buttons or the container*/ + lv_obj_t * target = lv_event_get_target(e); + + /*The current target is always the container as the event is added to it*/ + lv_obj_t * cont = lv_event_get_current_target(e); + + /*If container was clicked do nothing*/ + if(target == cont) return; + + /*Make the clicked buttons red*/ + lv_obj_set_style_bg_color(target, lv_palette_main(LV_PALETTE_RED), 0); +} + +/** + * Demonstrate event bubbling + */ +void lv_example_event_3(void) +{ + + lv_obj_t * cont = lv_obj_create(lv_scr_act()); + lv_obj_set_size(cont, 290, 200); + lv_obj_center(cont); + lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW_WRAP); + + uint32_t i; + for(i = 0; i < 30; i++) { + lv_obj_t * btn = lv_btn_create(cont); + lv_obj_set_size(btn, 80, 50); + lv_obj_add_flag(btn, LV_OBJ_FLAG_EVENT_BUBBLE); + + lv_obj_t * label = lv_label_create(btn); + lv_label_set_text_fmt(label, "%"LV_PRIu32, i); + lv_obj_center(label); + } + + lv_obj_add_event_cb(cont, event_cb, LV_EVENT_CLICKED, NULL); +} + +#endif diff --git a/lib/lvgl/examples/event/lv_example_event_3.py b/lib/lvgl/examples/event/lv_example_event_3.py new file mode 100644 index 00000000..197b9b2e --- /dev/null +++ b/lib/lvgl/examples/event/lv_example_event_3.py @@ -0,0 +1,32 @@ +def event_cb(e): + + # The original target of the event. Can be the buttons or the container + target = e.get_target() + # print(type(target)) + + # If container was clicked do nothing + if type(target) != type(lv.btn()): + return + + # Make the clicked buttons red + target.set_style_bg_color(lv.palette_main(lv.PALETTE.RED), 0) + +# +# Demonstrate event bubbling +# + +cont = lv.obj(lv.scr_act()) +cont.set_size(320, 200) +cont.center() +cont.set_flex_flow(lv.FLEX_FLOW.ROW_WRAP) + +for i in range(30): + btn = lv.btn(cont) + btn.set_size(80, 50) + btn.add_flag(lv.obj.FLAG.EVENT_BUBBLE) + + label = lv.label(btn) + label.set_text(str(i)) + label.center() + +cont.add_event_cb(event_cb, lv.EVENT.CLICKED, None) diff --git a/lib/lvgl/examples/event/lv_example_event_4.c b/lib/lvgl/examples/event/lv_example_event_4.c new file mode 100644 index 00000000..7d459b81 --- /dev/null +++ b/lib/lvgl/examples/event/lv_example_event_4.c @@ -0,0 +1,66 @@ +#include "../lv_examples.h" + +#if LV_BUILD_EXAMPLES + +static int n = 3; +static lv_obj_t * label = NULL; + +static void timer_cb(lv_timer_t * timer) +{ + if(n < 3 || n > 32) { + n = 3; + } + else { + static uint32_t old_tick = 0; + uint32_t tick = lv_tick_get(); + if(!old_tick) { + old_tick = tick; + } + if(tick - old_tick > 3000) { + n++; + lv_label_set_text_fmt(label, "%d sides", n); + old_tick = tick; + } + } + lv_obj_invalidate(timer->user_data); +} + +static void event_cb(lv_event_t * e) +{ + /*The original target of the event. Can be the buttons or the container*/ + lv_draw_ctx_t * draw_ctx = lv_event_get_draw_ctx(e); + lv_draw_rect_dsc_t draw_dsc; + lv_draw_rect_dsc_init(&draw_dsc); + draw_dsc.bg_color = lv_palette_main(LV_PALETTE_LIGHT_GREEN); + draw_dsc.bg_opa = LV_OPA_COVER; + lv_point_t points[32]; + int i, r = 150; + uint32_t tick = lv_tick_get(); + for(i = 0; i < n; i++) { + int angle = i * 360 / n + ((tick % 36000) / 100); + lv_coord_t x = 150 + (r * lv_trigo_cos(angle) >> LV_TRIGO_SHIFT), y = + 150 + (r * lv_trigo_sin(angle) >> LV_TRIGO_SHIFT); + points[i].x = x; + points[i].y = y; + } + lv_draw_polygon(draw_ctx, &draw_dsc, points, n); +} + +/** + * Demonstrate event bubbling + */ +void lv_example_event_4(void) +{ + + lv_obj_t * cont = lv_obj_create(lv_scr_act()); + lv_obj_remove_style_all(cont); + lv_obj_set_size(cont, 300, 300); + label = lv_label_create(cont); + lv_label_set_text_fmt(label, "%d sides", n); + lv_obj_center(label); + + lv_obj_add_event_cb(cont, event_cb, LV_EVENT_DRAW_MAIN, NULL); + lv_timer_create(timer_cb, 17, cont); +} + +#endif -- cgit v1.2.3