1
2 import pilas
3 from pilas.actores.globo import Globo
4
5
7 """Representa un mensaje de globo (similar a las historietas), pero con opciones para elegir.
8
9 >>> mensaje = u"Mi color favorito es el..."
10 >>> globo = pilas.actores.GloboElegir(mensaje, [u"rojo", u"verde", u"azul"], cuando_responde_color_favorito)
11
12 .. image:: images/actores/globo_elegir.png
13
14 El primer argumento es el mensaje a mostrar, el segundo una lista de opciones que se ofrecerán
15 y por último una función de respuesta. Que podría ser codificada así:
16
17 .. code-block:: python
18
19 def cuando_responde_color_favorito(respuesta):
20 print "Ha seleccionado la opcion: " + respuesta
21
22 """
23
24 - def __init__(self, texto, opciones, funcion_a_invocar, x=0, y=0, dialogo=None):
25 """Constructor del dialogo:
26
27 :param texto: Cadena de texto que se tiene que mostrar.
28 :param opciones: Lista de opciones a mostrar.
29 :param funcion_a_invocar: Referencia a la función que se tiene que ejecutar cuando responde el usuario.
30 :param x: Posición horizontal.
31 :param y: Posición vertical.
32 :param dialogo: Instancia del manejador de dialogos, para crear mensajes enlazados.
33 """
34 self.dialogo = dialogo
35 self.opciones = opciones
36 self.funcion_a_invocar = funcion_a_invocar
37
38 self.lista_seleccion = pilas.interfaz.ListaSeleccion(opciones, self._cuando_selecciona_opcion, x, y)
39 self.lista_seleccion.escala = 0.1
40 self.lista_seleccion.escala = [1], 0.2
41 self.lista_seleccion.z = 1
42
43 Globo.__init__(self, texto, x, y, dialogo=dialogo,
44 ancho_globo=self.lista_seleccion.ancho_opciones+24,
45 alto_globo=self.lista_seleccion.alto_opciones + (self.lista_seleccion.separacion_entre_opciones * len(self.opciones) * 2))
46 self.z = 2
47
59
61 ancho, alto = self.lienzo.obtener_area_de_texto(texto, tamano=14)
62 opciones_ancho, opciones_alto = self.lienzo.obtener_area_para_lista_de_texto(self.opciones, tamano=14)
63 return ancho + opciones_ancho, alto + opciones_alto
64
65 - def _escribir_texto(self, texto):
66 self.lienzo.escribir(texto, 12, 25, tamano=14)
67
70
75