49cf8d8715048a8371d943c605b112944a6d4371
[naja.git] / naja / widgets / selector.py
1 import pygame.locals as pgl
2
3 from naja.widgets.base import Container
4 from naja.resources import resources
5 from naja.resources.mutators import EIGHT_BIT, R270
6
7
8 class SelectorWidget(Container):
9     def __init__(self, *args, **kwargs):
10         super(SelectorWidget, self).__init__(*args, **kwargs)
11         self.position = 0
12         self.selector = resources.get_image('bits', 'arrow_on.png',
13                                             transforms=(R270, EIGHT_BIT))
14
15     def render(self, surface):
16         super(SelectorWidget, self).render(surface)
17         pos = self.selector.get_rect()
18         selected = self.widgets[self.position]
19         pos = pos.move(selected.pos)
20         pos = pos.move(-pos.width * 1.5, (selected.size[1] - pos.height) / 2)
21         surface.blit(self.selector, pos)
22
23     def handle_event(self, ev):
24         if ev.type == pgl.KEYDOWN:
25             if ev.key in (pgl.K_DOWN, pgl.K_s, pgl.K_o,
26                           pgl.K_UP, pgl.K_w, pgl.K_COMMA):
27                 if ev.key in (pgl.K_DOWN, pgl.K_s, pgl.K_o):
28                     self.position += 1
29                 else:
30                     self.position -= 1
31                 self.position %= len(self.widgets)
32                 return True
33             elif ev.key in (pgl.K_RETURN, pgl.K_KP_ENTER):
34                 return self.widgets[self.position].callback('click')
35
36         return super(SelectorWidget, self).handle_event(ev)