X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Fselector.py;h=dcbc74498b930b3e4d2b31aa6318eae7d59d6b57;hb=3e460450c1baa9af43f5391ba4673a599071656b;hp=c5ba07f37a4eb490010155d5b334f0e82c26ed14;hpb=2be70af38592f9eab413e3fe5823cc3e6b00e3de;p=naja.git diff --git a/naja/widgets/selector.py b/naja/widgets/selector.py index c5ba07f..dcbc744 100644 --- a/naja/widgets/selector.py +++ b/naja/widgets/selector.py @@ -4,6 +4,7 @@ from naja.constants import KEYS from naja.widgets.base import Container from naja.resources import resources from naja.resources.mutators import EIGHT_BIT, R270 +from naja.sound import sound class SelectorWidget(Container): @@ -17,18 +18,27 @@ class SelectorWidget(Container): super(SelectorWidget, self).render(surface) pos = self.selector.get_rect() selected = self.widgets[self.position] + if not selected.is_selectable(): + selected = self.change_pos(1) + pos = pos.move(selected.pos) pos = pos.move(-pos.width * 1.5, (selected.size[1] - pos.height) / 2) surface.blit(self.selector, pos) + def change_pos(self, change): + self.position = (self.position + change) % len(self.widgets) + while not self.widgets[self.position].is_selectable(): + self.position = (self.position + change) % len(self.widgets) + return self.widgets[self.position] + def handle_event(self, ev): if ev.type == pgl.KEYDOWN: if ev.key in KEYS.UP + KEYS.DOWN: if ev.key in KEYS.DOWN: - self.position += 1 + self.change_pos(1) else: - self.position -= 1 - self.position %= len(self.widgets) + self.change_pos(-1) + sound.play_sound('zoop.ogg', volume=0.05) return True elif ev.key in KEYS.SELECT: return self.widgets[self.position].callback('click')