Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgnacio 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)
commit2726ec228fbe02731d7f18b5a92bf2ebd4ed6cfe (patch)
tree700b632bafeaf147ff905c96c1ca3b265a4727f1
parent5370e9ba038af45b7535a14debe62eefe0b65b1f (diff)
Idea inicial funcionando..
-rw-r--r--Widgets.py101
1 files changed, 95 insertions, 6 deletions
diff --git a/Widgets.py b/Widgets.py
index 49f3d73..b3137fb 100644
--- a/Widgets.py
+++ b/Widgets.py
@@ -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)