Source code for bauiv1lib.qrcode

# Released under the MIT License. See LICENSE for details.
#
"""Provides functionality for displaying QR codes."""
from __future__ import annotations

from typing import override

import bauiv1 as bui

from bauiv1lib.popup import PopupWindow


[docs] class QRCodeWindow(PopupWindow): """Popup window that shows a QR code.""" def __init__(self, origin_widget: bui.Widget, qr_tex: bui.Texture): position = origin_widget.get_screen_space_center() assert bui.app.classic is not None uiscale = bui.app.ui_v1.uiscale scale = ( 2.3 if uiscale is bui.UIScale.SMALL else 1.65 if uiscale is bui.UIScale.MEDIUM else 1.23 ) self._transitioning_out = False self._width = 450 self._height = 400 bg_color = (0.5, 0.4, 0.6) super().__init__( position=position, size=(self._width, self._height), scale=scale, bg_color=bg_color, ) self._cancel_button = bui.buttonwidget( parent=self.root_widget, position=(50, self._height - 30), size=(50, 50), scale=0.5, label='', color=bg_color, on_activate_call=self._on_cancel_press, autoselect=True, icon=bui.gettexture('crossOut'), iconscale=1.2, ) bui.imagewidget( parent=self.root_widget, position=(self._width * 0.5 - 150, self._height * 0.5 - 150), size=(300, 300), texture=qr_tex, ) def _on_cancel_press(self) -> None: self._transition_out() def _transition_out(self) -> None: if not self._transitioning_out: self._transitioning_out = True bui.containerwidget(edit=self.root_widget, transition='out_scale')
[docs] @override def on_popup_cancel(self) -> None: bui.getsound('swish').play() self._transition_out()
# Docs-generation hack; import some stuff that we likely only forward-declared # in our actual source code so that docs tools can find it. from typing import (Coroutine, Any, Literal, Callable, Generator, Awaitable, Sequence, Self) import asyncio from concurrent.futures import Future from pathlib import Path from enum import Enum