1 import pygame.locals as pgl
3 from naja.constants import KEYS
4 from naja.widgets.base import Container
5 from naja.resources import resources
6 from naja.resources.mutators import EIGHT_BIT, R270
7 from naja.sound import sound
10 class SelectorWidget(Container):
11 def __init__(self, *args, **kwargs):
12 super(SelectorWidget, self).__init__(*args, **kwargs)
14 self.selector = resources.get_image('bits', 'arrow_on.png',
15 transforms=(R270, EIGHT_BIT))
17 def render(self, surface):
18 super(SelectorWidget, self).render(surface)
19 pos = self.selector.get_rect()
20 selected = self.widgets[self.position]
21 pos = pos.move(selected.pos)
22 pos = pos.move(-pos.width * 1.5, (selected.size[1] - pos.height) / 2)
23 surface.blit(self.selector, pos)
25 def handle_event(self, ev):
26 if ev.type == pgl.KEYDOWN:
27 if ev.key in KEYS.UP + KEYS.DOWN:
28 if ev.key in KEYS.DOWN:
32 self.position %= len(self.widgets)
33 sound.play_sound('change_action.ogg', volume=0.05)
35 elif ev.key in KEYS.SELECT:
36 return self.widgets[self.position].callback('click')
38 return super(SelectorWidget, self).handle_event(ev)