diff --git a/wuttapos/app.py b/wuttapos/app.py index 42db530..8765a35 100644 --- a/wuttapos/app.py +++ b/wuttapos/app.py @@ -169,7 +169,10 @@ def main(page: ft.Page): threading.excepthook = thread_exc_hook page.title = f"WuttaPOS v{wuttapos.__version__}" - page.window.full_screen = True + if hasattr(page, 'window'): + page.window.full_screen = True + else: + page.window_full_screen = True # global defaults for button/text styles etc. page.data = { @@ -179,7 +182,10 @@ def main(page: ft.Page): def clean_exit(): # TODO: this doesn't do anything interesting now, but it could - page.window.destroy() + if hasattr(page, 'window'): + page.window.destroy() + else: + page.window_destroy() def keyboard(e): # exit on ctrl+Q @@ -194,8 +200,12 @@ def main(page: ft.Page): clean_exit() # cf. https://flet.dev/docs/controls/page/#window_destroy - page.window.prevent_close = True - page.window.on_event = window_event + if hasattr(page, 'window'): + page.window.prevent_close = True + page.window.on_event = window_event + else: + page.window_prevent_close = True + page.window_on_event = window_event # TODO: probably these should be auto-loaded from spec from wuttapos.views.pos import POSView @@ -227,6 +237,11 @@ def main(page: ft.Page): elif page.route == '/login': page.views.append(LoginView(config, '/login')) + if hasattr(page, 'window'): + page.window.full_screen = True + else: + page.window_full_screen = True + page.update() # TODO: this was in example docs but not sure what it's for? diff --git a/wuttapos/controls/timestamp.py b/wuttapos/controls/timestamp.py index d3ff2bc..5f9b201 100644 --- a/wuttapos/controls/timestamp.py +++ b/wuttapos/controls/timestamp.py @@ -25,6 +25,8 @@ WuttaPOS - timestamp control """ import asyncio +import threading +import time import flet as ft @@ -43,7 +45,13 @@ class WuttaTimestamp(ft.Text): def did_mount(self): self.running = True - self.page.run_task(self.update_display) + if hasattr(self.page, 'run_task'): + self.page.run_task(self.update_display) + else: + # nb. daemonized thread should be stopped when app exits + # cf. https://docs.python.org/3/library/threading.html#thread-objects + thread = threading.Thread(target=self.update_display_blocking, daemon=True) + thread.start() def will_unmount(self): self.running = False @@ -56,3 +64,9 @@ class WuttaTimestamp(ft.Text): self.value = self.render_time(self.app.localtime()) self.update() await asyncio.sleep(0.5) + + def update_display_blocking(self): + while self.running: + self.value = self.render_time(self.app.localtime()) + self.update() + time.sleep(0.5)