pilas.interfaz.selector

Package pilas :: Package interfaz :: Module selector |
[hide private]
[frames] | no frames]

# Source Code for Module pilas.interfaz.selector

     1  # -*- encoding: utf-8 -*-
     2  # pilas engine - a video game framework.
     3  #
     4  # copyright 2010 - hugo ruscitti
     5  # license: lgplv3 (see http://www.gnu.org/licenses/lgpl.html)
     6  #
     7  # website - http://www.pilas-engine.com.ar
     8  #
     9  # Deslizador creado por Pablo Garrido
    10
    11  import pilas
    12  from pilas.interfaz.base_interfaz import BaseInterfaz
    13
    14 -class Selector(BaseInterfaz):
    15      """Representa un selector con un checkbox."""
    16
    17 -    def __init__(self, texto, x=0, y=0, ancho=200):
    18          """Inicializa el selector.
    19
    20          :param texto: Texto que se mostrará junto al selector.
    21          :param x: Posición horizontal.
    22          :param y: Posición vertical.
    23          :param ancho: Ancho del selector.
    24          """
    25          BaseInterfaz.__init__(self, x=x, y=y)
    26
    27          self.texto = texto
    28          self._cargar_lienzo(ancho)
    29          self._cargar_imagenes()
    30          self.funcion_de_respuesta = None
    31
    32          self.deseleccionar()
    33          self.escena.click_de_mouse.conectar(self.detection_click_mouse)
    34          self.fijo = True
    35
    36 -    def _cargar_imagenes(self):
    37          self.imagen_selector = pilas.imagenes.cargar("interfaz/selector.png")
    38          self.imagen_selector_seleccionado = pilas.imagenes.cargar("interfaz/selector_seleccionado.png")
    39
    40 -    def _cargar_lienzo(self, ancho):
    41          self.imagen = pilas.imagenes.cargar_superficie(ancho, 29)
    42
    43 -    def pintar_texto(self):
    44          "Dibuja el texto sobre el selector."
    45          self.imagen.texto(self.texto, 35, 20)
    46
    47 -    def deseleccionar(self):
    48          "Destilda el selector."
    49          self.seleccionado = False
    50          self.imagen.limpiar()
    51          self.imagen.pintar_imagen(self.imagen_selector)
    52          self.pintar_texto()
    53          self.centro = ("centro", "centro")
    54
    55 -    def seleccionar(self):
    56          "Tilda el selector."
    57          self.seleccionado = True
    58          self.imagen.limpiar()
    59          self.imagen.pintar_imagen(self.imagen_selector_seleccionado)
    60          self.pintar_texto()
    61          self.centro = ("centro", "centro")
    62
    63 -    def detection_click_mouse(self, click):
    64          """Detecta el click de mouse y alterna la selección.
    65
    66          :param click: representa el evento de click.
    67          """
    68          if (self.activo):
    69              if self.colisiona_con_un_punto(click.x, click.y):
    70                  self.alternar_seleccion()
    71
    72 -    def alternar_seleccion(self):
    73          """Alterna la selección del selector."""
    74          if self.seleccionado:
    75              self.deseleccionar()
    76          else:
    77              self.seleccionar()
    78
    79          if self.funcion_de_respuesta:
    80              self.funcion_de_respuesta(self.seleccionado)
    81
    82 -    def definir_accion(self, funcion):
    83          """Define cual será la función a ejecutar en la selección.
    84
    85          :param funcion: La función a ejecutar.
    86          """
    87          self.funcion_de_respuesta = funcion
    88