Example #1
0
 def _back(self) -> None:
     from bastd.ui.settings import controls
     _ba.release_gamepad_input()
     ba.containerwidget(edit=self._root_widget, transition='out_right')
     ba.app.ui.set_main_menu_window(
         controls.ControlsSettingsWindow(
             transition='in_left').get_root_widget())
Example #2
0
    def die(self) -> None:
        """Kill the window."""

        # This strong-refs us; killing it allow us to die now.
        self._decrement_timer = None
        _ba.release_gamepad_input()
        if self._root_widget:
            ba.containerwidget(edit=self._root_widget, transition='out_scale')
Example #3
0
def gamepad_configure_callback(event: Dict[str, Any]) -> None:
    """Respond to a gamepad button press during config selection."""
    from ba.internal import get_remote_app_name
    from bastd.ui.settings import gamepad

    # Ignore all but button-presses.
    if event['type'] not in ['BUTTONDOWN', 'HATMOTION']:
        return
    _ba.release_gamepad_input()
    try:
        ba.app.ui.clear_main_menu_window(transition='out_left')
    except Exception:
        ba.print_exception('Error transitioning out main_menu_window.')
    ba.playsound(ba.getsound('activateBeep'))
    ba.playsound(ba.getsound('swish'))
    inputdevice = event['input_device']
    assert isinstance(inputdevice, ba.InputDevice)
    if inputdevice.allows_configuring:
        ba.app.ui.set_main_menu_window(
            gamepad.GamepadSettingsWindow(inputdevice).get_root_widget())
    else:
        width = 700
        height = 200
        button_width = 100
        uiscale = ba.app.ui.uiscale
        dlg = (ba.containerwidget(
            scale=(1.7 if uiscale is ba.UIScale.SMALL else
                   1.4 if uiscale is ba.UIScale.MEDIUM else 1.0),
            size=(width, height),
            transition='in_right'))
        ba.app.ui.set_main_menu_window(dlg)
        device_name = inputdevice.name
        if device_name == 'iDevice':
            msg = ba.Lstr(resource='bsRemoteConfigureInAppText',
                          subs=[('${REMOTE_APP_NAME}', get_remote_app_name())])
        else:
            msg = ba.Lstr(resource='cantConfigureDeviceText',
                          subs=[('${DEVICE}', device_name)])
        ba.textwidget(parent=dlg,
                      position=(0, height - 80),
                      size=(width, 25),
                      text=msg,
                      scale=0.8,
                      h_align='center',
                      v_align='top')

        def _ok() -> None:
            from bastd.ui.settings import controls
            ba.containerwidget(edit=dlg, transition='out_right')
            ba.app.ui.set_main_menu_window(
                controls.ControlsSettingsWindow(
                    transition='in_left').get_root_widget())

        ba.buttonwidget(parent=dlg,
                        position=((width - button_width) / 2, 20),
                        size=(button_width, 60),
                        label=ba.Lstr(resource='okText'),
                        on_activate_call=_ok)