You've already forked MicroPythonOS
mirror of
https://github.com/m5stack/MicroPythonOS.git
synced 2026-05-20 11:51:27 -07:00
improve displaywallet
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import mpos.ui
|
||||
|
||||
appscreen = lv.screen_active()
|
||||
|
||||
import lvgl as lv
|
||||
@@ -7,78 +9,6 @@ indev_error_y = 120
|
||||
|
||||
DARKPINK = lv.color_hex(0xEC048C)
|
||||
|
||||
EVENT_MAP = {
|
||||
lv.EVENT.ALL: "ALL",
|
||||
lv.EVENT.CANCEL: "CANCEL",
|
||||
lv.EVENT.CHILD_CHANGED: "CHILD_CHANGED",
|
||||
lv.EVENT.CHILD_CREATED: "CHILD_CREATED",
|
||||
lv.EVENT.CHILD_DELETED: "CHILD_DELETED",
|
||||
lv.EVENT.CLICKED: "CLICKED",
|
||||
lv.EVENT.COLOR_FORMAT_CHANGED: "COLOR_FORMAT_CHANGED",
|
||||
lv.EVENT.COVER_CHECK: "COVER_CHECK",
|
||||
lv.EVENT.CREATE: "CREATE",
|
||||
lv.EVENT.DEFOCUSED: "DEFOCUSED",
|
||||
lv.EVENT.DELETE: "DELETE",
|
||||
lv.EVENT.DRAW_MAIN: "DRAW_MAIN",
|
||||
lv.EVENT.DRAW_MAIN_BEGIN: "DRAW_MAIN_BEGIN",
|
||||
lv.EVENT.DRAW_MAIN_END: "DRAW_MAIN_END",
|
||||
lv.EVENT.DRAW_POST: "DRAW_POST",
|
||||
lv.EVENT.DRAW_POST_BEGIN: "DRAW_POST_BEGIN",
|
||||
lv.EVENT.DRAW_POST_END: "DRAW_POST_END",
|
||||
lv.EVENT.DRAW_TASK_ADDED: "DRAW_TASK_ADDED",
|
||||
lv.EVENT.FLUSH_FINISH: "FLUSH_FINISH",
|
||||
lv.EVENT.FLUSH_START: "FLUSH_START",
|
||||
lv.EVENT.FLUSH_WAIT_FINISH: "FLUSH_WAIT_FINISH",
|
||||
lv.EVENT.FLUSH_WAIT_START: "FLUSH_WAIT_START",
|
||||
lv.EVENT.FOCUSED: "FOCUSED",
|
||||
lv.EVENT.GESTURE: "GESTURE",
|
||||
lv.EVENT.GET_SELF_SIZE: "GET_SELF_SIZE",
|
||||
lv.EVENT.HIT_TEST: "HIT_TEST",
|
||||
lv.EVENT.HOVER_LEAVE: "HOVER_LEAVE",
|
||||
lv.EVENT.HOVER_OVER: "HOVER_OVER",
|
||||
lv.EVENT.INDEV_RESET: "INDEV_RESET",
|
||||
lv.EVENT.INSERT: "INSERT",
|
||||
lv.EVENT.INVALIDATE_AREA: "INVALIDATE_AREA",
|
||||
lv.EVENT.KEY: "KEY",
|
||||
lv.EVENT.LAST: "LAST",
|
||||
lv.EVENT.LAYOUT_CHANGED: "LAYOUT_CHANGED",
|
||||
lv.EVENT.LEAVE: "LEAVE",
|
||||
lv.EVENT.LONG_PRESSED: "LONG_PRESSED",
|
||||
lv.EVENT.LONG_PRESSED_REPEAT: "LONG_PRESSED_REPEAT",
|
||||
lv.EVENT.PREPROCESS: "PREPROCESS",
|
||||
lv.EVENT.PRESSED: "PRESSED",
|
||||
lv.EVENT.PRESSING: "PRESSING",
|
||||
lv.EVENT.PRESS_LOST: "PRESS_LOST",
|
||||
lv.EVENT.READY: "READY",
|
||||
lv.EVENT.REFRESH: "REFRESH",
|
||||
lv.EVENT.REFR_EXT_DRAW_SIZE: "REFR_EXT_DRAW_SIZE",
|
||||
lv.EVENT.REFR_READY: "REFR_READY",
|
||||
lv.EVENT.REFR_REQUEST: "REFR_REQUEST",
|
||||
lv.EVENT.REFR_START: "REFR_START",
|
||||
lv.EVENT.RELEASED: "RELEASED",
|
||||
lv.EVENT.RENDER_READY: "RENDER_READY",
|
||||
lv.EVENT.RENDER_START: "RENDER_START",
|
||||
lv.EVENT.RESOLUTION_CHANGED: "RESOLUTION_CHANGED",
|
||||
lv.EVENT.ROTARY: "ROTARY",
|
||||
lv.EVENT.SCREEN_LOADED: "SCREEN_LOADED",
|
||||
lv.EVENT.SCREEN_LOAD_START: "SCREEN_LOAD_START",
|
||||
lv.EVENT.SCREEN_UNLOADED: "SCREEN_UNLOADED",
|
||||
lv.EVENT.SCREEN_UNLOAD_START: "SCREEN_UNLOAD_START",
|
||||
lv.EVENT.SCROLL: "SCROLL",
|
||||
lv.EVENT.SCROLL_BEGIN: "SCROLL_BEGIN",
|
||||
lv.EVENT.SCROLL_END: "SCROLL_END",
|
||||
lv.EVENT.SCROLL_THROW_BEGIN: "SCROLL_THROW_BEGIN",
|
||||
lv.EVENT.SHORT_CLICKED: "SHORT_CLICKED",
|
||||
lv.EVENT.SIZE_CHANGED: "SIZE_CHANGED",
|
||||
lv.EVENT.STYLE_CHANGED: "STYLE_CHANGED",
|
||||
lv.EVENT.VALUE_CHANGED: "VALUE_CHANGED",
|
||||
lv.EVENT.VSYNC: "VSYNC"
|
||||
}
|
||||
|
||||
# Function to translate event code to name
|
||||
def get_event_name(event_code):
|
||||
return EVENT_MAP.get(event_code, f"Unknown event {event_code}")
|
||||
|
||||
def get_xy():
|
||||
indev = lv.indev_active()
|
||||
if indev:
|
||||
@@ -124,7 +54,7 @@ def touch_cb(event):
|
||||
# DRAW_POST_END
|
||||
# GET_SELF_SIZE
|
||||
if event_code not in [23,25,26,27,28,29,30,49]:
|
||||
name = get_event_name(event_code)
|
||||
name = mpos.ui.get_event_name(event_code)
|
||||
#x, y = get_xy()
|
||||
#print(f"lv_event_t: code={event_code}, name={name}, x={x}, y={y}") # target={event.get_target()}, user_data={event.get_user_data()}, param={event.get_param()}
|
||||
if event_code == lv.EVENT.PRESSING: # this is probably enough
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import time
|
||||
|
||||
import mpos.config
|
||||
import mpos.ui
|
||||
|
||||
# screens:
|
||||
appscreen = lv.screen_active()
|
||||
@@ -8,7 +9,6 @@ settings_screen = None
|
||||
|
||||
|
||||
|
||||
|
||||
# Settings screen implementation
|
||||
class SettingsScreen(lv.obj):
|
||||
def __init__(self):
|
||||
@@ -66,13 +66,42 @@ class SettingsScreen(lv.obj):
|
||||
)
|
||||
|
||||
# Initialize keyboard (hidden initially)
|
||||
self.keyboard = lv.keyboard(lv.screen_active())
|
||||
self.keyboard = lv.keyboard(lv.layer_sys())
|
||||
self.keyboard.set_size(lv.pct(100), lv.pct(40))
|
||||
self.keyboard.align(lv.ALIGN.BOTTOM_MID, 0, 0)
|
||||
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
|
||||
|
||||
self.keyboard.add_event_cb(self.keyboard_cb,lv.EVENT.READY,None)
|
||||
self.keyboard.add_event_cb(self.keyboard_cb,lv.EVENT.CANCEL,None)
|
||||
#self.keyboard.add_event_cb(self.keyboard_value_changed_cb,lv.EVENT.VALUE_CHANGED,None)
|
||||
|
||||
|
||||
def hide_keyboard(self):
|
||||
print("hide_keyboard: hiding keyboard")
|
||||
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
|
||||
|
||||
def show_keyboard(self):
|
||||
# Show keyboard:
|
||||
print("showing keyboard")
|
||||
self.keyboard.remove_flag(lv.obj.FLAG.HIDDEN)
|
||||
self.keyboard.set_textarea(self.textarea)
|
||||
|
||||
def keyboard_cb(self, event):
|
||||
print("keyboard_cb: Keyboard event triggered")
|
||||
code=event.get_code()
|
||||
if code==lv.EVENT.READY or code==lv.EVENT.CANCEL:
|
||||
print("keyboard_cb: READY or CANCEL or RETURN clicked, hiding keyboard")
|
||||
self.hide_keyboard()
|
||||
|
||||
def keyboard_value_changed_cb_unused(self, event):
|
||||
print("keyboard value changed!")
|
||||
print(f"event: code={event.get_code()}, target={event.get_target()}, user_data={event.get_user_data()}, param={event.get_param()}") # event: code=32, target=<Blob>, user_data=<Blob>, param=<Blob>
|
||||
button = self.keyboard.get_selected_button()
|
||||
text = self.keyboard.get_button_text(button)
|
||||
#print(f"button {button} and text {text}")
|
||||
if text == lv.SYMBOL.NEW_LINE:
|
||||
print("Newline key pressed, hiding keyboard...")
|
||||
self.hide_keyboard()
|
||||
|
||||
def open_edit_popup(self, setting):
|
||||
# Close existing msgbox and keyboard if open
|
||||
if self.msgbox:
|
||||
@@ -82,7 +111,7 @@ class SettingsScreen(lv.obj):
|
||||
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
|
||||
|
||||
# Create msgbox
|
||||
self.msgbox = lv.msgbox(self)
|
||||
self.msgbox = lv.msgbox()
|
||||
self.msgbox.add_title(setting["title"])
|
||||
self.msgbox.set_width(lv.pct(80))
|
||||
self.msgbox.center()
|
||||
@@ -97,8 +126,10 @@ class SettingsScreen(lv.obj):
|
||||
self.textarea.set_width(lv.pct(100))
|
||||
self.textarea.set_height(lv.SIZE_CONTENT)
|
||||
self.textarea.set_text(self.prefs.get_string(setting["key"], ""))
|
||||
self.textarea.add_event_cb(self.textarea_cb, lv.EVENT.FOCUSED, None)
|
||||
self.textarea.add_event_cb(self.textarea_cb, lv.EVENT.DEFOCUSED, None)
|
||||
#self.textarea.add_event_cb(self.show_keyboard, lv.EVENT.CLICKED, None)
|
||||
#self.textarea.add_event_cb(self.show_keyboard, lv.EVENT.FOCUSED, None)
|
||||
#self.textarea.add_event_cb(self.hide_keyboard, lv.EVENT.DEFOCUSED, None)
|
||||
self.textarea.add_event_cb(self.textarea_cb, lv.EVENT.ALL, None)
|
||||
|
||||
# Button container
|
||||
btn_cont = lv.obj(content)
|
||||
@@ -128,11 +159,12 @@ class SettingsScreen(lv.obj):
|
||||
|
||||
def textarea_cb(self, event):
|
||||
code = event.get_code()
|
||||
if code == lv.EVENT.FOCUSED:
|
||||
self.keyboard.remove_flag(lv.obj.FLAG.HIDDEN)
|
||||
self.keyboard.set_textarea(self.textarea)
|
||||
event_name = mpos.ui.get_event_name(code)
|
||||
print(f"textarea cb code {code} has event_name {event_name}")
|
||||
if code == lv.EVENT.CLICKED or code == lv.EVENT.FOCUSED:
|
||||
self.show_keyboard()
|
||||
elif code == lv.EVENT.DEFOCUSED:
|
||||
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
|
||||
self.hide_keyboard()
|
||||
|
||||
def save_setting(self, setting):
|
||||
if self.textarea:
|
||||
@@ -145,10 +177,10 @@ class SettingsScreen(lv.obj):
|
||||
|
||||
def close_popup(self, event):
|
||||
if self.msgbox:
|
||||
self.msgbox.delete()
|
||||
self.msgbox.close()
|
||||
self.msgbox = None
|
||||
if self.keyboard:
|
||||
self.keyboard.add_flag(lv.obj.FLAG.HIDDEN)
|
||||
self.hide_keyboard()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -309,3 +309,75 @@ def create_drawer(display):
|
||||
|
||||
|
||||
|
||||
EVENT_MAP = {
|
||||
lv.EVENT.ALL: "ALL",
|
||||
lv.EVENT.CANCEL: "CANCEL",
|
||||
lv.EVENT.CHILD_CHANGED: "CHILD_CHANGED",
|
||||
lv.EVENT.CHILD_CREATED: "CHILD_CREATED",
|
||||
lv.EVENT.CHILD_DELETED: "CHILD_DELETED",
|
||||
lv.EVENT.CLICKED: "CLICKED",
|
||||
lv.EVENT.COLOR_FORMAT_CHANGED: "COLOR_FORMAT_CHANGED",
|
||||
lv.EVENT.COVER_CHECK: "COVER_CHECK",
|
||||
lv.EVENT.CREATE: "CREATE",
|
||||
lv.EVENT.DEFOCUSED: "DEFOCUSED",
|
||||
lv.EVENT.DELETE: "DELETE",
|
||||
lv.EVENT.DRAW_MAIN: "DRAW_MAIN",
|
||||
lv.EVENT.DRAW_MAIN_BEGIN: "DRAW_MAIN_BEGIN",
|
||||
lv.EVENT.DRAW_MAIN_END: "DRAW_MAIN_END",
|
||||
lv.EVENT.DRAW_POST: "DRAW_POST",
|
||||
lv.EVENT.DRAW_POST_BEGIN: "DRAW_POST_BEGIN",
|
||||
lv.EVENT.DRAW_POST_END: "DRAW_POST_END",
|
||||
lv.EVENT.DRAW_TASK_ADDED: "DRAW_TASK_ADDED",
|
||||
lv.EVENT.FLUSH_FINISH: "FLUSH_FINISH",
|
||||
lv.EVENT.FLUSH_START: "FLUSH_START",
|
||||
lv.EVENT.FLUSH_WAIT_FINISH: "FLUSH_WAIT_FINISH",
|
||||
lv.EVENT.FLUSH_WAIT_START: "FLUSH_WAIT_START",
|
||||
lv.EVENT.FOCUSED: "FOCUSED",
|
||||
lv.EVENT.GESTURE: "GESTURE",
|
||||
lv.EVENT.GET_SELF_SIZE: "GET_SELF_SIZE",
|
||||
lv.EVENT.HIT_TEST: "HIT_TEST",
|
||||
lv.EVENT.HOVER_LEAVE: "HOVER_LEAVE",
|
||||
lv.EVENT.HOVER_OVER: "HOVER_OVER",
|
||||
lv.EVENT.INDEV_RESET: "INDEV_RESET",
|
||||
lv.EVENT.INSERT: "INSERT",
|
||||
lv.EVENT.INVALIDATE_AREA: "INVALIDATE_AREA",
|
||||
lv.EVENT.KEY: "KEY",
|
||||
lv.EVENT.LAST: "LAST",
|
||||
lv.EVENT.LAYOUT_CHANGED: "LAYOUT_CHANGED",
|
||||
lv.EVENT.LEAVE: "LEAVE",
|
||||
lv.EVENT.LONG_PRESSED: "LONG_PRESSED",
|
||||
lv.EVENT.LONG_PRESSED_REPEAT: "LONG_PRESSED_REPEAT",
|
||||
lv.EVENT.PREPROCESS: "PREPROCESS",
|
||||
lv.EVENT.PRESSED: "PRESSED",
|
||||
lv.EVENT.PRESSING: "PRESSING",
|
||||
lv.EVENT.PRESS_LOST: "PRESS_LOST",
|
||||
lv.EVENT.READY: "READY",
|
||||
lv.EVENT.REFRESH: "REFRESH",
|
||||
lv.EVENT.REFR_EXT_DRAW_SIZE: "REFR_EXT_DRAW_SIZE",
|
||||
lv.EVENT.REFR_READY: "REFR_READY",
|
||||
lv.EVENT.REFR_REQUEST: "REFR_REQUEST",
|
||||
lv.EVENT.REFR_START: "REFR_START",
|
||||
lv.EVENT.RELEASED: "RELEASED",
|
||||
lv.EVENT.RENDER_READY: "RENDER_READY",
|
||||
lv.EVENT.RENDER_START: "RENDER_START",
|
||||
lv.EVENT.RESOLUTION_CHANGED: "RESOLUTION_CHANGED",
|
||||
lv.EVENT.ROTARY: "ROTARY",
|
||||
lv.EVENT.SCREEN_LOADED: "SCREEN_LOADED",
|
||||
lv.EVENT.SCREEN_LOAD_START: "SCREEN_LOAD_START",
|
||||
lv.EVENT.SCREEN_UNLOADED: "SCREEN_UNLOADED",
|
||||
lv.EVENT.SCREEN_UNLOAD_START: "SCREEN_UNLOAD_START",
|
||||
lv.EVENT.SCROLL: "SCROLL",
|
||||
lv.EVENT.SCROLL_BEGIN: "SCROLL_BEGIN",
|
||||
lv.EVENT.SCROLL_END: "SCROLL_END",
|
||||
lv.EVENT.SCROLL_THROW_BEGIN: "SCROLL_THROW_BEGIN",
|
||||
lv.EVENT.SHORT_CLICKED: "SHORT_CLICKED",
|
||||
lv.EVENT.SIZE_CHANGED: "SIZE_CHANGED",
|
||||
lv.EVENT.STYLE_CHANGED: "STYLE_CHANGED",
|
||||
lv.EVENT.VALUE_CHANGED: "VALUE_CHANGED",
|
||||
lv.EVENT.VSYNC: "VSYNC"
|
||||
}
|
||||
|
||||
# Function to translate event code to name
|
||||
def get_event_name(event_code):
|
||||
return EVENT_MAP.get(event_code, f"Unknown event {event_code}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user