Update LVGL to v9.1.0
This commit is contained in:
@@ -1,19 +1,19 @@
|
||||
|
||||
Simple Text area
|
||||
"""""""""""""""""""""""
|
||||
----------------
|
||||
|
||||
.. lv_example:: widgets/textarea/lv_example_textarea_1
|
||||
:language: c
|
||||
|
||||
|
||||
Text area with password field
|
||||
"""""""""""""""""""""""""""""
|
||||
-----------------------------
|
||||
|
||||
.. lv_example:: widgets/textarea/lv_example_textarea_2
|
||||
:language: c
|
||||
|
||||
Text auto-formatting
|
||||
"""""""""""""""""""""""""""""
|
||||
--------------------
|
||||
|
||||
.. lv_example:: widgets/textarea/lv_example_textarea_3
|
||||
:language: c
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
static void textarea_event_handler(lv_event_t * e)
|
||||
{
|
||||
lv_obj_t * ta = lv_event_get_target(e);
|
||||
LV_UNUSED(ta);
|
||||
LV_LOG_USER("Enter was pressed. The current text is: %s", lv_textarea_get_text(ta));
|
||||
}
|
||||
|
||||
@@ -11,17 +12,17 @@ static void btnm_event_handler(lv_event_t * e)
|
||||
{
|
||||
lv_obj_t * obj = lv_event_get_target(e);
|
||||
lv_obj_t * ta = lv_event_get_user_data(e);
|
||||
const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj));
|
||||
const char * txt = lv_buttonmatrix_get_button_text(obj, lv_buttonmatrix_get_selected_button(obj));
|
||||
|
||||
if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_del_char(ta);
|
||||
else if(strcmp(txt, LV_SYMBOL_NEW_LINE) == 0) lv_event_send(ta, LV_EVENT_READY, NULL);
|
||||
if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_delete_char(ta);
|
||||
else if(strcmp(txt, LV_SYMBOL_NEW_LINE) == 0) lv_obj_send_event(ta, LV_EVENT_READY, NULL);
|
||||
else lv_textarea_add_text(ta, txt);
|
||||
|
||||
}
|
||||
|
||||
void lv_example_textarea_1(void)
|
||||
{
|
||||
lv_obj_t * ta = lv_textarea_create(lv_scr_act());
|
||||
lv_obj_t * ta = lv_textarea_create(lv_screen_active());
|
||||
lv_textarea_set_one_line(ta, true);
|
||||
lv_obj_align(ta, LV_ALIGN_TOP_MID, 0, 10);
|
||||
lv_obj_add_event_cb(ta, textarea_event_handler, LV_EVENT_READY, ta);
|
||||
@@ -33,12 +34,12 @@ void lv_example_textarea_1(void)
|
||||
LV_SYMBOL_BACKSPACE, "0", LV_SYMBOL_NEW_LINE, ""
|
||||
};
|
||||
|
||||
lv_obj_t * btnm = lv_btnmatrix_create(lv_scr_act());
|
||||
lv_obj_t * btnm = lv_buttonmatrix_create(lv_screen_active());
|
||||
lv_obj_set_size(btnm, 200, 150);
|
||||
lv_obj_align(btnm, LV_ALIGN_BOTTOM_MID, 0, -10);
|
||||
lv_obj_add_event_cb(btnm, btnm_event_handler, LV_EVENT_VALUE_CHANGED, ta);
|
||||
lv_obj_clear_flag(btnm, LV_OBJ_FLAG_CLICK_FOCUSABLE); /*To keep the text area focused on button clicks*/
|
||||
lv_btnmatrix_set_map(btnm, btnm_map);
|
||||
lv_obj_remove_flag(btnm, LV_OBJ_FLAG_CLICK_FOCUSABLE); /*To keep the text area focused on button clicks*/
|
||||
lv_buttonmatrix_set_map(btnm, btnm_map);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
def textarea_event_handler(e, ta):
|
||||
print("Enter was pressed. The current text is: " + ta.get_text())
|
||||
|
||||
|
||||
def btnm_event_handler(e, ta):
|
||||
obj = e.get_target()
|
||||
txt = obj.get_btn_text(obj.get_selected_btn())
|
||||
if txt == lv.SYMBOL.BACKSPACE:
|
||||
ta.del_char()
|
||||
elif txt == lv.SYMBOL.NEW_LINE:
|
||||
lv.event_send(ta, lv.EVENT.READY, None)
|
||||
elif txt:
|
||||
ta.add_text(txt)
|
||||
|
||||
|
||||
ta = lv.textarea(lv.scr_act())
|
||||
ta.set_one_line(True)
|
||||
ta.align(lv.ALIGN.TOP_MID, 0, 10)
|
||||
ta.add_event_cb(lambda e: textarea_event_handler(e, ta), lv.EVENT.READY, None)
|
||||
ta.add_state(lv.STATE.FOCUSED) # To be sure the cursor is visible
|
||||
|
||||
btnm_map = ["1", "2", "3", "\n",
|
||||
"4", "5", "6", "\n",
|
||||
"7", "8", "9", "\n",
|
||||
lv.SYMBOL.BACKSPACE, "0", lv.SYMBOL.NEW_LINE, ""]
|
||||
|
||||
btnm = lv.btnmatrix(lv.scr_act())
|
||||
btnm.set_size(200, 150)
|
||||
btnm.align(lv.ALIGN.BOTTOM_MID, 0, -10)
|
||||
btnm.add_event_cb(lambda e: btnm_event_handler(e, ta), lv.EVENT.VALUE_CHANGED, None)
|
||||
btnm.clear_flag(lv.obj.FLAG.CLICK_FOCUSABLE) # To keep the text area focused on button clicks
|
||||
btnm.set_map(btnm_map)
|
||||
@@ -8,7 +8,7 @@ static lv_obj_t * kb;
|
||||
void lv_example_textarea_2(void)
|
||||
{
|
||||
/*Create the password box*/
|
||||
lv_obj_t * pwd_ta = lv_textarea_create(lv_scr_act());
|
||||
lv_obj_t * pwd_ta = lv_textarea_create(lv_screen_active());
|
||||
lv_textarea_set_text(pwd_ta, "");
|
||||
lv_textarea_set_password_mode(pwd_ta, true);
|
||||
lv_textarea_set_one_line(pwd_ta, true);
|
||||
@@ -17,29 +17,36 @@ void lv_example_textarea_2(void)
|
||||
lv_obj_add_event_cb(pwd_ta, ta_event_cb, LV_EVENT_ALL, NULL);
|
||||
|
||||
/*Create a label and position it above the text box*/
|
||||
lv_obj_t * pwd_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * pwd_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(pwd_label, "Password:");
|
||||
lv_obj_align_to(pwd_label, pwd_ta, LV_ALIGN_OUT_TOP_LEFT, 0, 0);
|
||||
|
||||
/*Create the one-line mode text area*/
|
||||
lv_obj_t * text_ta = lv_textarea_create(lv_scr_act());
|
||||
lv_obj_t * text_ta = lv_textarea_create(lv_screen_active());
|
||||
lv_textarea_set_one_line(text_ta, true);
|
||||
lv_textarea_set_password_mode(text_ta, false);
|
||||
lv_obj_set_width(text_ta, lv_pct(40));
|
||||
lv_obj_add_event_cb(text_ta, ta_event_cb, LV_EVENT_ALL, NULL);
|
||||
lv_obj_align(text_ta, LV_ALIGN_TOP_RIGHT, -5, 20);
|
||||
|
||||
|
||||
/*Create a label and position it above the text box*/
|
||||
lv_obj_t * oneline_label = lv_label_create(lv_scr_act());
|
||||
lv_obj_t * oneline_label = lv_label_create(lv_screen_active());
|
||||
lv_label_set_text(oneline_label, "Text:");
|
||||
lv_obj_align_to(oneline_label, text_ta, LV_ALIGN_OUT_TOP_LEFT, 0, 0);
|
||||
|
||||
/*Create a keyboard*/
|
||||
kb = lv_keyboard_create(lv_scr_act());
|
||||
kb = lv_keyboard_create(lv_screen_active());
|
||||
lv_obj_set_size(kb, LV_HOR_RES, LV_VER_RES / 2);
|
||||
|
||||
lv_keyboard_set_textarea(kb, pwd_ta); /*Focus it on one of the text areas to start*/
|
||||
|
||||
/*The keyboard will show Arabic characters if they are enabled */
|
||||
#if LV_USE_ARABIC_PERSIAN_CHARS && LV_FONT_DEJAVU_16_PERSIAN_HEBREW
|
||||
lv_obj_set_style_text_font(kb, &lv_font_dejavu_16_persian_hebrew, 0);
|
||||
lv_obj_set_style_text_font(text_ta, &lv_font_dejavu_16_persian_hebrew, 0);
|
||||
lv_obj_set_style_text_font(pwd_ta, &lv_font_dejavu_16_persian_hebrew, 0);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
static void ta_event_cb(lv_event_t * e)
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
def ta_event_cb(e):
|
||||
code = e.get_code()
|
||||
ta = e.get_target()
|
||||
if code == lv.EVENT.CLICKED or code == lv.EVENT.FOCUSED:
|
||||
# Focus on the clicked text area
|
||||
if kb != None:
|
||||
kb.set_textarea(ta)
|
||||
|
||||
elif code == lv.EVENT.READY:
|
||||
print("Ready, current text: " + ta.get_text())
|
||||
|
||||
|
||||
# Create the password box
|
||||
LV_HOR_RES = lv.scr_act().get_disp().driver.hor_res
|
||||
LV_VER_RES = lv.scr_act().get_disp().driver.ver_res
|
||||
|
||||
pwd_ta = lv.textarea(lv.scr_act())
|
||||
pwd_ta.set_text("")
|
||||
pwd_ta.set_password_mode(True)
|
||||
pwd_ta.set_one_line(True)
|
||||
pwd_ta.set_width(LV_HOR_RES // 2 - 20)
|
||||
pwd_ta.set_pos(5, 20)
|
||||
pwd_ta.add_event_cb(ta_event_cb, lv.EVENT.ALL, None)
|
||||
|
||||
# Create a label and position it above the text box
|
||||
pwd_label = lv.label(lv.scr_act())
|
||||
pwd_label.set_text("Password:")
|
||||
pwd_label.align_to(pwd_ta, lv.ALIGN.OUT_TOP_LEFT, 0, 0)
|
||||
|
||||
# Create the one-line mode text area
|
||||
text_ta = lv.textarea(lv.scr_act())
|
||||
text_ta.set_width(LV_HOR_RES // 2 - 20)
|
||||
text_ta.set_one_line(True)
|
||||
text_ta.add_event_cb(ta_event_cb, lv.EVENT.ALL, None)
|
||||
text_ta.set_password_mode(False)
|
||||
|
||||
text_ta.align(lv.ALIGN.TOP_RIGHT, -5, 20)
|
||||
|
||||
# Create a label and position it above the text box
|
||||
oneline_label = lv.label(lv.scr_act())
|
||||
oneline_label.set_text("Text:")
|
||||
oneline_label.align_to(text_ta, lv.ALIGN.OUT_TOP_LEFT, 0, 0)
|
||||
|
||||
# Create a keyboard
|
||||
kb = lv.keyboard(lv.scr_act())
|
||||
kb.set_size(LV_HOR_RES, LV_VER_RES // 2)
|
||||
|
||||
kb.set_textarea(pwd_ta) # Focus it on one of the text areas to start
|
||||
|
||||
@@ -12,7 +12,7 @@ static lv_obj_t * kb;
|
||||
void lv_example_textarea_3(void)
|
||||
{
|
||||
/*Create the text area*/
|
||||
lv_obj_t * ta = lv_textarea_create(lv_scr_act());
|
||||
lv_obj_t * ta = lv_textarea_create(lv_screen_active());
|
||||
lv_obj_add_event_cb(ta, ta_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
||||
lv_textarea_set_accepted_chars(ta, "0123456789:");
|
||||
lv_textarea_set_max_length(ta, 5);
|
||||
@@ -20,7 +20,7 @@ void lv_example_textarea_3(void)
|
||||
lv_textarea_set_text(ta, "");
|
||||
|
||||
/*Create a keyboard*/
|
||||
kb = lv_keyboard_create(lv_scr_act());
|
||||
kb = lv_keyboard_create(lv_screen_active());
|
||||
lv_obj_set_size(kb, LV_HOR_RES, LV_VER_RES / 2);
|
||||
lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);
|
||||
lv_keyboard_set_textarea(kb, ta);
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
def ta_event_cb(e):
|
||||
ta = e.get_target()
|
||||
txt = ta.get_text()
|
||||
# print(txt)
|
||||
pos = ta.get_cursor_pos()
|
||||
# print("cursor pos: ",pos)
|
||||
# find position of ":" in text
|
||||
colon_pos= txt.find(":")
|
||||
# if there are more than 2 digits before the colon, remove the last one entered
|
||||
if colon_pos == 3:
|
||||
ta.del_char()
|
||||
if colon_pos != -1:
|
||||
# if there are more than 3 digits after the ":" remove the last one entered
|
||||
rest = txt[colon_pos:]
|
||||
if len(rest) > 3:
|
||||
ta.del_char()
|
||||
|
||||
if len(txt) < 2:
|
||||
return
|
||||
if ":" in txt:
|
||||
return
|
||||
if txt[0] >= '0' and txt[0] <= '9' and \
|
||||
txt[1] >= '0' and txt[1] <= '9':
|
||||
if len(txt) == 2 or txt[2] != ':' :
|
||||
ta.set_cursor_pos(2)
|
||||
ta.add_char(ord(':'))
|
||||
#
|
||||
# Automatically format text like a clock. E.g. "12:34"
|
||||
# Add the ':' automatically
|
||||
#
|
||||
# Create the text area
|
||||
|
||||
LV_HOR_RES = lv.scr_act().get_disp().driver.hor_res
|
||||
LV_VER_RES = lv.scr_act().get_disp().driver.ver_res
|
||||
|
||||
ta = lv.textarea(lv.scr_act())
|
||||
ta.add_event_cb(ta_event_cb, lv.EVENT.VALUE_CHANGED, None)
|
||||
ta.set_accepted_chars("0123456789:")
|
||||
ta.set_max_length(5)
|
||||
ta.set_one_line(True)
|
||||
ta.set_text("")
|
||||
ta.add_state(lv.STATE.FOCUSED)
|
||||
|
||||
# Create a keyboard
|
||||
kb = lv.keyboard(lv.scr_act())
|
||||
kb.set_size(LV_HOR_RES, LV_VER_RES // 2)
|
||||
kb.set_mode(lv.keyboard.MODE.NUMBER)
|
||||
kb.set_textarea(ta)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user