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):
109
110 - def ocultar(self):
111 BaseInterfaz.ocultar(self) 112 self.deslizador.transparencia = 100
113
114 - def eliminar(self):
117