bauiv1lib.url
UI functionality related to URLs.
1# Released under the MIT License. See LICENSE for details. 2# 3"""UI functionality related to URLs.""" 4 5from __future__ import annotations 6 7import bauiv1 as bui 8 9 10class ShowURLWindow(bui.Window): 11 """A window presenting a URL to the user visually.""" 12 13 def __init__(self, address: str): 14 # in some cases we might want to show it as a qr code 15 # (for long URLs especially) 16 app = bui.app 17 assert app.classic is not None 18 uiscale = app.ui_v1.uiscale 19 self._address = address 20 21 self._width = 800 22 self._height = 450 23 super().__init__( 24 root_widget=bui.containerwidget( 25 size=(self._width, self._height + 40), 26 transition='in_right', 27 scale=( 28 1.25 29 if uiscale is bui.UIScale.SMALL 30 else 1.25 if uiscale is bui.UIScale.MEDIUM else 1.25 31 ), 32 ) 33 ) 34 bui.textwidget( 35 parent=self._root_widget, 36 position=(self._width * 0.5, self._height - 10), 37 size=(0, 0), 38 color=app.ui_v1.title_color, 39 h_align='center', 40 v_align='center', 41 text=bui.Lstr(resource='directBrowserToURLText'), 42 maxwidth=self._width * 0.95, 43 ) 44 bui.textwidget( 45 parent=self._root_widget, 46 position=(self._width * 0.5, self._height - 60), 47 size=(0, 0), 48 scale=1.3, 49 color=app.ui_v1.infotextcolor, 50 h_align='center', 51 v_align='center', 52 text=address, 53 maxwidth=self._width * 0.95, 54 ) 55 button_width = 200 56 57 qr_size = 220 58 bui.imagewidget( 59 parent=self._root_widget, 60 position=( 61 self._width * 0.5 - qr_size * 0.5, 62 self._height * 0.5 - qr_size * 0.5 + 10, 63 ), 64 size=(qr_size, qr_size), 65 texture=bui.get_qrcode_texture(address), 66 ) 67 68 xoffs = 0 69 if bui.clipboard_is_supported(): 70 xoffs = -150 71 btn = bui.buttonwidget( 72 parent=self._root_widget, 73 position=( 74 self._width * 0.5 - button_width * 0.5 + xoffs, 75 20, 76 ), 77 size=(button_width, 65), 78 autoselect=True, 79 label=bui.Lstr(resource='copyText'), 80 on_activate_call=self._copy, 81 ) 82 xoffs = 150 83 84 btn = bui.buttonwidget( 85 parent=self._root_widget, 86 position=(self._width * 0.5 - button_width * 0.5 + xoffs, 20), 87 size=(button_width, 65), 88 autoselect=True, 89 label=bui.Lstr(resource='doneText'), 90 on_activate_call=self._done, 91 ) 92 # we have no 'cancel' button but still want to be able to 93 # hit back/escape/etc to leave.. 94 bui.containerwidget( 95 edit=self._root_widget, 96 selected_child=btn, 97 start_button=btn, 98 on_cancel_call=btn.activate, 99 ) 100 101 def _copy(self) -> None: 102 bui.clipboard_set_text(self._address) 103 bui.screenmessage(bui.Lstr(resource='copyConfirmText'), color=(0, 1, 0)) 104 105 def _done(self) -> None: 106 bui.containerwidget(edit=self._root_widget, transition='out_left')
class
ShowURLWindow(bauiv1._uitypes.Window):
11class ShowURLWindow(bui.Window): 12 """A window presenting a URL to the user visually.""" 13 14 def __init__(self, address: str): 15 # in some cases we might want to show it as a qr code 16 # (for long URLs especially) 17 app = bui.app 18 assert app.classic is not None 19 uiscale = app.ui_v1.uiscale 20 self._address = address 21 22 self._width = 800 23 self._height = 450 24 super().__init__( 25 root_widget=bui.containerwidget( 26 size=(self._width, self._height + 40), 27 transition='in_right', 28 scale=( 29 1.25 30 if uiscale is bui.UIScale.SMALL 31 else 1.25 if uiscale is bui.UIScale.MEDIUM else 1.25 32 ), 33 ) 34 ) 35 bui.textwidget( 36 parent=self._root_widget, 37 position=(self._width * 0.5, self._height - 10), 38 size=(0, 0), 39 color=app.ui_v1.title_color, 40 h_align='center', 41 v_align='center', 42 text=bui.Lstr(resource='directBrowserToURLText'), 43 maxwidth=self._width * 0.95, 44 ) 45 bui.textwidget( 46 parent=self._root_widget, 47 position=(self._width * 0.5, self._height - 60), 48 size=(0, 0), 49 scale=1.3, 50 color=app.ui_v1.infotextcolor, 51 h_align='center', 52 v_align='center', 53 text=address, 54 maxwidth=self._width * 0.95, 55 ) 56 button_width = 200 57 58 qr_size = 220 59 bui.imagewidget( 60 parent=self._root_widget, 61 position=( 62 self._width * 0.5 - qr_size * 0.5, 63 self._height * 0.5 - qr_size * 0.5 + 10, 64 ), 65 size=(qr_size, qr_size), 66 texture=bui.get_qrcode_texture(address), 67 ) 68 69 xoffs = 0 70 if bui.clipboard_is_supported(): 71 xoffs = -150 72 btn = bui.buttonwidget( 73 parent=self._root_widget, 74 position=( 75 self._width * 0.5 - button_width * 0.5 + xoffs, 76 20, 77 ), 78 size=(button_width, 65), 79 autoselect=True, 80 label=bui.Lstr(resource='copyText'), 81 on_activate_call=self._copy, 82 ) 83 xoffs = 150 84 85 btn = bui.buttonwidget( 86 parent=self._root_widget, 87 position=(self._width * 0.5 - button_width * 0.5 + xoffs, 20), 88 size=(button_width, 65), 89 autoselect=True, 90 label=bui.Lstr(resource='doneText'), 91 on_activate_call=self._done, 92 ) 93 # we have no 'cancel' button but still want to be able to 94 # hit back/escape/etc to leave.. 95 bui.containerwidget( 96 edit=self._root_widget, 97 selected_child=btn, 98 start_button=btn, 99 on_cancel_call=btn.activate, 100 ) 101 102 def _copy(self) -> None: 103 bui.clipboard_set_text(self._address) 104 bui.screenmessage(bui.Lstr(resource='copyConfirmText'), color=(0, 1, 0)) 105 106 def _done(self) -> None: 107 bui.containerwidget(edit=self._root_widget, transition='out_left')
A window presenting a URL to the user visually.
ShowURLWindow(address: str)
14 def __init__(self, address: str): 15 # in some cases we might want to show it as a qr code 16 # (for long URLs especially) 17 app = bui.app 18 assert app.classic is not None 19 uiscale = app.ui_v1.uiscale 20 self._address = address 21 22 self._width = 800 23 self._height = 450 24 super().__init__( 25 root_widget=bui.containerwidget( 26 size=(self._width, self._height + 40), 27 transition='in_right', 28 scale=( 29 1.25 30 if uiscale is bui.UIScale.SMALL 31 else 1.25 if uiscale is bui.UIScale.MEDIUM else 1.25 32 ), 33 ) 34 ) 35 bui.textwidget( 36 parent=self._root_widget, 37 position=(self._width * 0.5, self._height - 10), 38 size=(0, 0), 39 color=app.ui_v1.title_color, 40 h_align='center', 41 v_align='center', 42 text=bui.Lstr(resource='directBrowserToURLText'), 43 maxwidth=self._width * 0.95, 44 ) 45 bui.textwidget( 46 parent=self._root_widget, 47 position=(self._width * 0.5, self._height - 60), 48 size=(0, 0), 49 scale=1.3, 50 color=app.ui_v1.infotextcolor, 51 h_align='center', 52 v_align='center', 53 text=address, 54 maxwidth=self._width * 0.95, 55 ) 56 button_width = 200 57 58 qr_size = 220 59 bui.imagewidget( 60 parent=self._root_widget, 61 position=( 62 self._width * 0.5 - qr_size * 0.5, 63 self._height * 0.5 - qr_size * 0.5 + 10, 64 ), 65 size=(qr_size, qr_size), 66 texture=bui.get_qrcode_texture(address), 67 ) 68 69 xoffs = 0 70 if bui.clipboard_is_supported(): 71 xoffs = -150 72 btn = bui.buttonwidget( 73 parent=self._root_widget, 74 position=( 75 self._width * 0.5 - button_width * 0.5 + xoffs, 76 20, 77 ), 78 size=(button_width, 65), 79 autoselect=True, 80 label=bui.Lstr(resource='copyText'), 81 on_activate_call=self._copy, 82 ) 83 xoffs = 150 84 85 btn = bui.buttonwidget( 86 parent=self._root_widget, 87 position=(self._width * 0.5 - button_width * 0.5 + xoffs, 20), 88 size=(button_width, 65), 89 autoselect=True, 90 label=bui.Lstr(resource='doneText'), 91 on_activate_call=self._done, 92 ) 93 # we have no 'cancel' button but still want to be able to 94 # hit back/escape/etc to leave.. 95 bui.containerwidget( 96 edit=self._root_widget, 97 selected_child=btn, 98 start_button=btn, 99 on_cancel_call=btn.activate, 100 )