Skip to content
Snippets Groups Projects
Commit 6df6c9a0 authored by dos's avatar dos Committed by dos
Browse files

audio_config: Push submenus onto the view stack

This lets the OS button go back in the submenu hierarchy
consistently to other parts of the system.
parent a88552d9
Branches
Tags
1 merge request!485audio_config: Push submenus onto the view stack
Pipeline #8821 passed
from st3m.application import Application from st3m.application import Application
from st3m.ui.view import View, ViewTransitionDirection
import math, random, sys_display import math, random, sys_display
from st3m import settings from st3m import settings
import audio import audio
...@@ -271,10 +272,8 @@ class Drawable: ...@@ -271,10 +272,8 @@ class Drawable:
class Submenu(Drawable): class Submenu(Drawable):
def __init__(self, press): def __init__(self, press):
super().__init__(press) super().__init__(press)
self.submenu_active = False
def draw(self, ctx): def draw(self, ctx):
if self.submenu_active:
self._draw(ctx) self._draw(ctx)
def _draw(self, ctx): def _draw(self, ctx):
...@@ -565,6 +564,22 @@ class Press: ...@@ -565,6 +564,22 @@ class Press:
self.select_pressed = False self.select_pressed = False
class SubView(View):
def __init__(self, menu, app):
self.menu = menu
self.app = app
def on_enter(self, vm):
self.vm = vm
def think(self, ins, delta_ms):
if self.vm.is_active(self):
self.app.think(ins, delta_ms)
def draw(self, ctx):
self.menu.draw(ctx)
class App(Application): class App(Application):
def __init__(self, app_ctx): def __init__(self, app_ctx):
super().__init__(app_ctx) super().__init__(app_ctx)
...@@ -596,13 +611,6 @@ class App(Application): ...@@ -596,13 +611,6 @@ class App(Application):
def draw(self, ctx): def draw(self, ctx):
self.ctx = ctx self.ctx = ctx
main_menu_active = True
for menu in self.menus:
menu.draw(self.ctx)
if menu.submenu_active:
main_menu_active = False
if main_menu_active:
self.draw_bg() self.draw_bg()
ctx.save() ctx.save()
ctx.rgb(*colours.GO_GREEN) ctx.rgb(*colours.GO_GREEN)
...@@ -651,12 +659,12 @@ class App(Application): ...@@ -651,12 +659,12 @@ class App(Application):
super().think(ins, delta_ms) super().think(ins, delta_ms)
for i in range(1, 10, 2): for i in range(1, 10, 2):
if self.input.captouch.petals[i].whole.pressed: if self.input.captouch.petals[i].whole.pressed:
for menu in self.menus: if not self.is_active():
menu.submenu_active = False self.vm.pop()
if i < 5: if i < 5:
self.menus[i // 2].submenu_active = True self.vm.push(SubView(self.menus[i // 2], self))
elif i > 5: elif i > 5:
self.menus[(i // 2) - 1].submenu_active = True self.vm.push(SubView(self.menus[(i // 2) - 1], self))
if ( if (
self.input.buttons.app.right.pressed self.input.buttons.app.right.pressed
...@@ -670,11 +678,12 @@ class App(Application): ...@@ -670,11 +678,12 @@ class App(Application):
def on_enter(self, vm): def on_enter(self, vm):
super().on_enter(vm) super().on_enter(vm)
if self.vm.direction == ViewTransitionDirection.FORWARD:
settings.load_all() settings.load_all()
def on_exit(self): def on_exit(self):
if self.vm.direction == ViewTransitionDirection.BACKWARD:
settings.save_all() settings.save_all()
super().on_exit()
if __name__ == "__main__": if __name__ == "__main__":
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment