diff options
author | Ignacio RodrÃguez <ignaciorodriguez@sugarlabs.org> | 2013-03-23 00:44:40 (GMT) |
---|---|---|
committer | Ignacio RodrÃguez <ignaciorodriguez@sugarlabs.org> | 2013-03-23 00:44:40 (GMT) |
commit | 2726ec228fbe02731d7f18b5a92bf2ebd4ed6cfe (patch) | |
tree | 700b632bafeaf147ff905c96c1ca3b265a4727f1 | |
parent | 5370e9ba038af45b7535a14debe62eefe0b65b1f (diff) |
Idea inicial funcionando..
-rw-r--r-- | Widgets.py | 101 |
1 files changed, 95 insertions, 6 deletions
@@ -164,12 +164,11 @@ class TablaPeriodica(gtk.EventBox): pregunta = Pregunta(G.PREGUNTAS[2]["pregunta"]) self.tabla.attach(pregunta, 3, 13, 1, 2) - Actual = 1 + respuesta = Respuestas() + self.tabla.attach(respuesta, 3, 13, 2, 3) for x in G.PREGUNTAS[2]["opciones"]: - print x - pregunta = Pregunta(x) - self.tabla.attach(pregunta, 3, 13, Actual, Actual + 1) - Actual += 1 + pregunta = Pregunta(x, original=G.PREGUNTAS[2]["opciones"][G.PREGUNTAS[2]["respuesta"]],respuesta=True) + respuesta._add(pregunta) def set_colores(self, boton): for elemen in G.COLORS: @@ -295,13 +294,103 @@ class Toolbar1(gtk.Toolbar): self.show_all() +class Respuestas(gtk.ScrolledWindow): + def __init__(self): + super(Respuestas, self).__init__() + self.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC) + self._actual = 0 + self.set_size_request(120, -1) + self._box = gtk.HBox() + self._botones = gtk.VBox() + self.arriba = gtk.EventBox() + self.arriba.add(gtk.Arrow(0, 0)) + self.arriba.connect("button-press-event", self._arriba) + self.abajo = gtk.EventBox() + self.abajo.add(gtk.Arrow(1, 0)) + self.abajo.connect("button-press-event", self._abajo) + self._botones.pack_start(self.arriba) + self._botones.pack_end(self.abajo) + self._box.pack_end(self._botones) + self.add_with_viewport(self._box) + self._respuestas = [] + self.show_all() + + def _actualizar(self): + for x in self._box: + self._box.remove(x) + self._box.pack_start(self._respuestas[self._actual], True, True, 0) + self._box.pack_start(self._botones, False, False, 0) + self.show_all() + + def _arriba(self, widget, event): + self._actualizar() + self._actual += 1 + if self._actual > len(self._respuestas) - 1: + self._actual = 0 + + def _abajo(self, widget, event): + self._actualizar() + self._actual -= 1 + if self._actual <= 0: + self._actual = len(self._respuestas) - 1 + + + def _add(self, respuesta): + for x in self._box: + self._box.remove(x) + self._box.pack_start(respuesta, True, True, 0) + self._box.pack_start(self._botones, False, False, 0) + + self._respuestas.append(respuesta) + + class Pregunta(gtk.EventBox): - def __init__(self, pregunta): + def __init__(self, pregunta, original=None, respuesta=False): super(Pregunta, self).__init__() + self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK | + gtk.gdk.ENTER_NOTIFY_MASK | gtk.gdk.LEAVE_NOTIFY_MASK) + if respuesta: + self.connect("enter-notify-event", self._adentro, True) + self.connect("leave-notify-event", self._adentro, False) + self.connect("button-press-event", self._chequear) + self.modify_bg(gtk.STATE_NORMAL, G.CELESTE) + self._original = original self._pregunta = gtk.Label() self._pregunta.set_markup("<b>" + pregunta + "</b>") self.add(self._pregunta) self.show_all() + + def _chequear(self, widget, event): + if self._original == self._pregunta.get_text(): + def pro(): + self.modify_bg(gtk.STATE_NORMAL, G.VERDECLARO) + def pro1(): + self.modify_bg(gtk.STATE_NORMAL, G.VERDEOSCURO) + def pro2(): + self.modify_bg(gtk.STATE_NORMAL, G.CELESTE) + + gobject.timeout_add(200, pro) + gobject.timeout_add(400, pro1) + gobject.timeout_add(600, pro) + gobject.timeout_add(800, pro2) + else: + def pro(): + self.modify_bg(gtk.STATE_NORMAL, G.ROJO) + def pro1(): + self.modify_bg(gtk.STATE_NORMAL, G.ROSADOCLARO) + def pro2(): + self.modify_bg(gtk.STATE_NORMAL, G.CELESTE) + + gobject.timeout_add(200, pro) + gobject.timeout_add(400, pro1) + gobject.timeout_add(600, pro) + gobject.timeout_add(800, pro2) + + def _adentro(self, widget, event, estado): + if estado: + self.modify_bg(gtk.STATE_NORMAL, G.CELESTECLARO) + else: + self.modify_bg(gtk.STATE_NORMAL, G.CELESTE) |