pilas.interfaz.deslizador

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

# Source Code for Module pilas.interfaz.deslizador

      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.actores import Actor
     13  from pilas.interfaz.base_interfaz import BaseInterfaz
     14
     15
     16 -class Deslizador(BaseInterfaz):
     17      """Representa un deslizador (slider) tipo volumen horizontal."""
     18
     19 -    def __init__(self, x=0, y=0, ruta_barra = 'interfaz/barra.png',
     20                                   ruta_deslizador = 'interfaz/deslizador.png'):
     21          """Inicializa al actor.
     22
     23          :param x: Posición horizontal inicial.
     24          :param y: Posición vertical inicial.
     25          :param ruta_barra: Imagen que se usará como barra.
     26          :param ruta_deslizador: Imagen para presentar al manejado o cursor del deslizador.
     27          """
     28          self.deslizador = None
     29          BaseInterfaz.__init__(self, ruta_barra, x=x, y=y)
     30          self.deslizador = Actor(ruta_deslizador, self.x, self.y)
     31          self.deslizador.fijo = True
     32          self.centro = ('izquierda', 'centro')
     33
     34          self.click = False
     35
     36          self.escena.click_de_mouse.conectar(self.click_del_mouse)
     37          self.escena.mueve_mouse.conectar(self.movimiento_del_mouse)
     38          self.escena.termina_click.conectar(self.termino_del_click)
     39
     40          self.progreso = 0
     41          self.posicion_relativa_x = 0
     42
     43          self.funciones = []
     44
     45          # establecemos posicion inicial
     46          self.x = x
     47          self.y = y
     48          self.fijo = True
     49
     50 -    def set_transparencia(self, nuevo_valor):
     51          """Define la transparecia del actor."""
     52          self.transparencia = nuevo_valor
     53          self.deslizador.transparencia = nuevo_valor
     54
     55 -    def definir_posicion(self, x, y):
     56          """Cambia la posición.
     57
     58          :param x: Nueva posición horizontal.
     59          :param y: Nueva posición vertical.
     60          """
     61          self.limite_izq = self.x
     62          self.limite_der = self.x + self.obtener_ancho()
     63
     64          self._actor.definir_posicion(x, y)
     65          if self.deslizador:
     66              self.deslizador.definir_posicion(x + self.posicion_relativa_x, y)
     67
     68 -    def conectar(self, f):
     69          self.funciones.append(f)
     70
     71 -    def desconectar(self, f):
     72          self.funciones.remove(f)
     73
     74 -    def ejecutar_funciones(self, valor):
     75          for i in self.funciones:
     76              i(valor)
     77
     78 -    def click_del_mouse(self, click):
     79          if (self.activo):
     80              if self.deslizador.colisiona_con_un_punto(click.x, click.y):
     81                  self.click = True
     82
     83 -    def movimiento_del_mouse(self, movimiento):
     84          if (self.activo):
     85              if self.click == True:
     86                  ancho = self.obtener_ancho()
     87                  deslizador_pos_x = self.deslizador.x - self.x
     88                  factor = (deslizador_pos_x + ancho) / ancho - 1
     89                  self.progreso = factor
     90
     91                  self.ejecutar_funciones(factor)
     92
     93                  self.deslizador.x = movimiento.x
     94
     95                  if self.deslizador.x <= self.limite_izq:
     96                      self.deslizador.x = self.limite_izq
     97
     98                  elif self.deslizador.x >= self.limite_der:
     99                      self.deslizador.x = self.limite_der
    100
    101                  self.posicion_relativa_x = self.deslizador.x - self.x
    102
    103 -    def termino_del_click(self, noclick):
    104          self.click = False
    105
    106 -    def mostrar(self):
    107          BaseInterfaz.mostrar(self)
    108          self.deslizador.transparencia = 0
    109
    110 -    def ocultar(self):
    111          BaseInterfaz.ocultar(self)
    112          self.deslizador.transparencia = 100
    113
    114 -    def eliminar(self):
    115          self.deslizador.eliminar()
    116          BaseInterfaz.eliminar(self)
    117