You've already forked MicroPythonOS
mirror of
https://github.com/m5stack/MicroPythonOS.git
synced 2026-05-20 11:51:27 -07:00
start_launcher(): empty screen stack
This commit is contained in:
@@ -1,7 +1,5 @@
|
||||
import mpos.ui
|
||||
|
||||
appscreen = lv.screen_active()
|
||||
|
||||
import lvgl as lv
|
||||
|
||||
indev_error_x = 160
|
||||
@@ -45,6 +43,7 @@ def touch_cb(event):
|
||||
event_code=event.get_code()
|
||||
# Ignore:
|
||||
# =======
|
||||
# 19: HIT_TEST
|
||||
# COVER_CHECK
|
||||
# DRAW_MAIN
|
||||
# DRAW_MAIN_BEGIN
|
||||
@@ -53,10 +52,9 @@ def touch_cb(event):
|
||||
# DRAW_POST_BEGIN
|
||||
# DRAW_POST_END
|
||||
# GET_SELF_SIZE
|
||||
if event_code not in [23,25,26,27,28,29,30,49]:
|
||||
if event_code not in [19,23,25,26,27,28,29,30,49]:
|
||||
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()}
|
||||
#print(f"lv_event_t: code={event_code}, name={name}") # target={event.get_target()}, user_data={event.get_user_data()}, param={event.get_param()}
|
||||
if event_code == lv.EVENT.PRESSING: # this is probably enough
|
||||
#if event_code in [lv.EVENT.PRESSED, lv.EVENT.PRESSING, lv.EVENT.LONG_PRESSED, lv.EVENT.LONG_PRESSED_REPEAT]:
|
||||
x, y = get_xy()
|
||||
@@ -81,7 +79,8 @@ def touch_cb(event):
|
||||
canvas.set_px(x + dx, y + dy, DARKPINK, lv.OPA.COVER)
|
||||
|
||||
|
||||
canvas = lv.canvas(appscreen)
|
||||
main_screen = lv.obj()
|
||||
canvas = lv.canvas(main_screen)
|
||||
|
||||
disp = lv.display_get_default()
|
||||
hor_res = disp.get_horizontal_resolution()
|
||||
@@ -97,3 +96,4 @@ canvas.fill_bg(lv.color_white(), lv.OPA.COVER)
|
||||
canvas.add_flag(lv.obj.FLAG.CLICKABLE)
|
||||
canvas.add_event_cb(touch_cb, lv.EVENT.ALL, None)
|
||||
|
||||
mpos.ui.load_screen(main_screen)
|
||||
|
||||
@@ -40,11 +40,22 @@ start_x = None # Store the starting X-coordinate for left-edge swipe
|
||||
|
||||
def swipe_read_cb(indev_drv, data):
|
||||
global start_y, start_x
|
||||
global indev
|
||||
global mouse
|
||||
|
||||
pressed = mouse.get_state() # Get mouse/touch pressed state
|
||||
point = lv.point_t()
|
||||
mouse.get_point(point) # Get current coordinates
|
||||
#indev.get_point(point) # Always returns 0,0
|
||||
x, y = point.x, point.y
|
||||
|
||||
#indev.stop_processing()
|
||||
#data.state = lv.INDEV_STATE.RELEASED # Ensure release state
|
||||
#data.point.x = -1 # Move point off-screen to prevent widget interaction
|
||||
#data.point.y = -1
|
||||
#indev.stop_processing() # doesn't work on unix
|
||||
#return
|
||||
#mouse.stop_processing()
|
||||
|
||||
if pressed and start_y is None and start_x is None:
|
||||
# Mouse/touch pressed (start of potential swipe)
|
||||
|
||||
@@ -32,7 +32,7 @@ def execute_script(script_source, is_file, is_launcher, is_graphical):
|
||||
prevscreen = lv.screen_active()
|
||||
newscreen=lv.obj()
|
||||
newscreen.set_size(lv.pct(100),lv.pct(100))
|
||||
lv.screen_load(newscreen)
|
||||
mpos.ui.load_screen(newscreen)
|
||||
script_globals = {
|
||||
'lv': lv,
|
||||
'th': mpos.ui.th,
|
||||
@@ -111,6 +111,7 @@ def start_app(app_dir, is_launcher=False):
|
||||
mpos.ui.close_bar()
|
||||
|
||||
def restart_launcher():
|
||||
mpos.ui.empty_screen_stack()
|
||||
# No need to stop the other launcher first, because it exits after building the screen
|
||||
start_app_by_name("com.example.launcher", True)
|
||||
|
||||
|
||||
@@ -428,6 +428,10 @@ def clean_top_layer():
|
||||
|
||||
screen_stack = []
|
||||
|
||||
def empty_screen_stack():
|
||||
global screen_stack
|
||||
screen_stack.clear()
|
||||
|
||||
def load_screen(screen):
|
||||
global screen_stack
|
||||
topscreen = None
|
||||
@@ -447,7 +451,7 @@ def back_screen():
|
||||
#print("Adding notification bar and drawer to top layer")
|
||||
#mpos.ui.create_notification_bar()
|
||||
#mpos.ui.create_drawer()
|
||||
close_top_layer_msgboxes()
|
||||
close_top_layer_msgboxes() # would be nicer to "cancel" all input events
|
||||
|
||||
print("Loading previous screen")
|
||||
screen_stack.pop() # Remove current screen
|
||||
|
||||
Reference in New Issue
Block a user