Source code for bauiv1lib.v2upgrade

# Released under the MIT License. See LICENSE for details.
#
"""UI for upgrading V1 accounts to V2."""

from __future__ import annotations

import bauiv1 as bui


[docs] class V2UpgradeWindow(bui.Window): """A window presenting a URL to the user visually.""" def __init__(self, login_name: str, code: str): app = bui.app assert app.classic is not None uiscale = app.ui_v1.uiscale self._code = code self._width = 700 self._height = 270 super().__init__( root_widget=bui.containerwidget( size=(self._width, self._height + 40), transition='in_right', scale=( 1.25 if uiscale is bui.UIScale.SMALL else 1.25 if uiscale is bui.UIScale.MEDIUM else 1.25 ), ) ) bui.getsound('error').play() bui.textwidget( parent=self._root_widget, position=(self._width * 0.5, self._height - 46), size=(0, 0), color=app.ui_v1.title_color, h_align='center', v_align='center', text=bui.Lstr( resource='deviceAccountUpgradeText', subs=[('${NAME}', login_name)], ), maxwidth=self._width * 0.95, ) bui.textwidget( parent=self._root_widget, position=(self._width * 0.5, 125), size=(0, 0), scale=0.8, color=(0.7, 0.8, 0.7), h_align='center', v_align='center', text=( bui.charstr(bui.SpecialChar.LOCAL_ACCOUNT) + login_name + ' ----> ' + bui.charstr(bui.SpecialChar.V2_LOGO) + login_name ), maxwidth=self._width * 0.95, ) button_width = 200 cancel_button = bui.buttonwidget( parent=self._root_widget, position=(20, 25), size=(button_width, 65), autoselect=True, label=bui.Lstr(resource='notNowText'), on_activate_call=self._done, ) _what_is_this_button = bui.buttonwidget( parent=self._root_widget, position=(self._width * 0.5 - button_width * 0.5, 25), size=(button_width, 65), autoselect=True, label=bui.Lstr(resource='whatIsThisText'), color=(0.55, 0.5, 0.6), textcolor=(0.75, 0.7, 0.8), on_activate_call=show_what_is_v2_page, ) upgrade_button = bui.buttonwidget( parent=self._root_widget, position=(self._width - button_width - 20, 25), size=(button_width, 65), autoselect=True, label=bui.Lstr(resource='upgradeText'), on_activate_call=self._upgrade_press, ) bui.containerwidget( edit=self._root_widget, selected_child=upgrade_button, cancel_button=cancel_button, ) def _upgrade_press(self) -> None: plus = bui.app.plus assert plus is not None # Get rid of the window and sign out before kicking the # user over to a browser to do the upgrade. This hopefully # makes it more clear when they come back that they need to # sign in with the 'BombSquad account' option. bui.containerwidget(edit=self._root_widget, transition='out_left') plus.sign_out_v1() bamasteraddr = plus.get_master_server_address(version=2) bui.open_url(f'{bamasteraddr}/v2uda/{self._code}') def _done(self) -> None: bui.containerwidget(edit=self._root_widget, transition='out_left')
[docs] def show_what_is_v2_page() -> None: """Show the webpage describing V2 accounts.""" plus = bui.app.plus assert plus is not None bamasteraddr = plus.get_master_server_address(version=2) bui.open_url(f'{bamasteraddr}/whatisv2')
# 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