Source code for bauiv1lib.cloudui._test

# Released under the MIT License. See LICENSE for details.
#
"""UIs provided by the cloud (similar-ish to html in concept)."""

from __future__ import annotations

from typing import TYPE_CHECKING, override

from bacommon.cloudui import CloudUIRequest
import bauiv1 as bui

from bauiv1lib.cloudui._window import CloudUIWindow
from bauiv1lib.cloudui._controller import CloudUIController

if TYPE_CHECKING:
    from bacommon.cloudui import CloudUIResponse
    import bacommon.cloudui.v1


[docs] def show_test_cloud_ui_window() -> None: """Bust out a cloud-ui window.""" # Pop up an auxiliary window wherever we are in the nav stack. bui.app.ui_v1.auxiliary_window_activate( win_type=CloudUIWindow, win_create_call=bui.CallStrict( TestCloudUIController().create_window, CloudUIRequest('/') ), )
class TestCloudUIController(CloudUIController): """Provides various tests/demonstrations of cloudui functionality.""" @override def fulfill_request(self, request: CloudUIRequest) -> CloudUIResponse: """Fulfill a request. Will be called in a background thread. """ import bacommon.cloudui.v1 as clui return clui.Response( code=clui.ResponseCode.SUCCESS, page=get_test_page(), ) def get_test_page() -> bacommon.cloudui.v1.Page: """Return test page.""" import bacommon.cloudui.v1 as clui return clui.Page( title='Testing', rows=[ clui.Row( title='First Row', debug=True, padding_left=5.0, buttons=[ clui.Button( label='Test', size=(180, 200), decorations=[ clui.Image( 'powerupPunch', position=(-70, 0), size=(40, 40), h_align=clui.HAlign.LEFT, ), clui.Image( 'powerupSpeed', position=(0, 75), size=(35, 35), v_align=clui.VAlign.TOP, ), clui.Text( 'TL', position=(-70, 75), size=(50, 50), h_align=clui.HAlign.LEFT, v_align=clui.VAlign.TOP, debug=True, ), clui.Text( 'TR', position=(70, 75), size=(50, 50), h_align=clui.HAlign.RIGHT, v_align=clui.VAlign.TOP, debug=True, ), clui.Text( 'BL', position=(-70, -75), size=(50, 50), h_align=clui.HAlign.LEFT, v_align=clui.VAlign.BOTTOM, debug=True, ), clui.Text( 'BR', position=(70, -75), size=(50, 50), h_align=clui.HAlign.RIGHT, v_align=clui.VAlign.BOTTOM, debug=True, ), ], ), clui.Button( label='Test2', size=(100, 100), color=(1, 0, 0), text_color=(1, 1, 1, 1), padding_right=4, ), # Should look like the first button but # scaled down. clui.Button( label='Test', size=(180, 200), scale=0.6, padding_bottom=30, # Should nudge us up. debug=True, # Show bounds. decorations=[ clui.Image( 'powerupPunch', position=(-70, 0), size=(40, 40), h_align=clui.HAlign.LEFT, ), clui.Image( 'powerupSpeed', position=(0, 75), size=(35, 35), v_align=clui.VAlign.TOP, ), clui.Text( 'TL', position=(-70, 75), size=(50, 50), h_align=clui.HAlign.LEFT, v_align=clui.VAlign.TOP, debug=True, ), clui.Text( 'TR', position=(70, 75), size=(50, 50), h_align=clui.HAlign.RIGHT, v_align=clui.VAlign.TOP, debug=True, ), clui.Text( 'BL', position=(-70, -75), size=(50, 50), h_align=clui.HAlign.LEFT, v_align=clui.VAlign.BOTTOM, debug=True, ), clui.Text( 'BR', position=(70, -75), size=(50, 50), h_align=clui.HAlign.RIGHT, v_align=clui.VAlign.BOTTOM, debug=True, ), ], ), # Testing custom button images and opacity. clui.Button( label='Test3', texture='buttonSquareWide', padding_left=10.0, padding_right=10.0, color=(1, 1, 1), opacity=0.3, size=(200, 100), ), ], ), clui.Row( title='Second Row', subtitle='Second row subtitle.', buttons=[ clui.Button( size=(150, 100), decorations=[ clui.Text( 'MaxWidthTest', position=(0, 25), size=(150 * 0.8, 32.0), flatness=1.0, shadow=0.0, debug=True, ), clui.Text( 'MaxHeightTest\nSecondLine', position=(0, -20), size=(150 * 0.8, 40), flatness=1.0, shadow=0.0, debug=True, ), ], ), clui.Button( size=(150, 100), decorations=[ clui.Image( 'zoeIcon', position=(0, 0), size=(70, 70), tint_texture='zoeIconColorMask', tint_color=(1, 0, 0), tint2_color=(0, 1, 0), mask_texture='characterIconMask', ), ], ), clui.Button( size=(150, 100), decorations=[ clui.Image( 'bridgitPreview', position=(0, 10), size=(120, 60), mask_texture='mapPreviewMask', mesh_opaque='level_select_button_opaque', mesh_transparent=( 'level_select_button_transparent' ), ), ], ), clui.Button(size=(150, 100)), clui.Button(size=(150, 100)), clui.Button(size=(150, 100)), ], ), clui.Row( buttons=[ clui.Button( size=(100, 100), color=(0.8, 0.8, 0.8), ), clui.Button( size=(100, 100), color=(0.8, 0.8, 0.8), ), ], ), clui.Row( title='Last Row (Faded Title)', title_color=(0.6, 0.6, 1.0, 0.3), title_flatness=1.0, title_shadow=1.0, subtitle='Testing Centered Title/Content', subtitle_color=(1.0, 0.5, 1.0, 0.5), subtitle_flatness=1.0, subtitle_shadow=0.0, center_content=True, center_title=True, buttons=[ clui.Button( 'Hello There!', size=(200, 120), color=(0.7, 0.7, 0.9), ), ], ), ], ) # 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