X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=naja%2Fwidgets%2Fselector.py;fp=naja%2Fwidgets%2Fselector.py;h=c0c91b96e8ec584fbc76e437c5605d70dd11a568;hb=2a9f5c76556f00f631ea10a6cba44a92bdd27512;hp=0000000000000000000000000000000000000000;hpb=bcc041da95b01ae36c2198b5c6bc4bd75dcc0c24;p=naja.git diff --git a/naja/widgets/selector.py b/naja/widgets/selector.py new file mode 100644 index 0000000..c0c91b9 --- /dev/null +++ b/naja/widgets/selector.py @@ -0,0 +1,35 @@ +import pygame.locals as pgl + +from naja.widgets.base import Container +from naja.resources import resources +from naja.resources.mutators import R270 + + +class SelectorWidget(Container): + def __init__(self, *args, **kwargs): + super(SelectorWidget, self).__init__(*args, **kwargs) + self.position = 0 + self.selector = resources.get_image('bits', 'arrow_on.png', + transforms=(R270,)) + + def render(self, surface): + super(SelectorWidget, self).render(surface) + pos = self.selector.get_rect() + selected = self.widgets[self.position] + pos = pos.move(selected.pos) + pos = pos.move(-pos.width * 1.5, (selected.size[1] - pos.height) / 2) + surface.blit(self.selector, pos) + + def handle_event(self, ev): + if ev.type == pgl.KEYDOWN: + if ev.key in (pgl.K_DOWN, pgl.K_UP): + if ev.key == pgl.K_DOWN: + self.position += 1 + else: + self.position -= 1 + self.position %= len(self.widgets) + return True + elif ev.key == pgl.K_RETURN: + return self.widgets[self.position].callback('click') + + return super(SelectorWidget, self).handle_event(ev)