async def hold_to_confirm( ctx: wire.Context, content: ui.Layout, code: EnumTypeButtonRequestType = ButtonRequestType.Other, confirm: str = HoldToConfirm.DEFAULT_CONFIRM, confirm_style: ButtonStyleType = HoldToConfirm.DEFAULT_CONFIRM_STYLE, loader_style: LoaderStyleType = HoldToConfirm.DEFAULT_LOADER_STYLE, ) -> bool: await ctx.call(ButtonRequest(code=code), ButtonAck) if content.__class__.__name__ == "Paginated": # The following works because asserts are omitted in non-debug builds. # IOW if the assert runs, that means __debug__ is True and Paginated is imported assert isinstance(content, Paginated) content.pages[-1] = HoldToConfirm(content.pages[-1], confirm, confirm_style, loader_style) dialog = content # type: ui.Layout else: dialog = HoldToConfirm(content, confirm, confirm_style, loader_style) if __debug__: return await ctx.wait(dialog, confirm_signal()) is CONFIRMED else: return await ctx.wait(dialog) is CONFIRMED
def notify_layout_change(layout: ui.Layout) -> None: global current_content current_content = layout.read_content() if layout_change_chan.takers: layout_change_chan.publish(current_content)
def notify_layout_change(layout: Layout) -> None: storage.current_content[:] = layout.read_content() if storage.watch_layout_changes or layout_change_chan.takers: layout_change_chan.publish(storage.current_content)