diff options
Diffstat (limited to 'parentesis.activity/parentesis.py')
-rw-r--r-- | parentesis.activity/parentesis.py | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/parentesis.activity/parentesis.py b/parentesis.activity/parentesis.py deleted file mode 100644 index 21987c6..0000000 --- a/parentesis.activity/parentesis.py +++ /dev/null @@ -1,121 +0,0 @@ -# -*- encoding: UTF-8 -*- -import gtk -from sugar.activity.activity import Activity, ActivityToolbox -import logica - -ESTADO_VACIO = 0 -ESTADO_IZQ = 1 -ESTADO_DER = 2 - -IGUAL = "=" - -class Parentesis(Activity): - def __init__(self, handle): - Activity.__init__(self,handle) - - self.toolbox = ActivityToolbox(self) - self.set_toolbox(self.toolbox) - - self.vbox = gtk.VBox() - self.hbox = gtk.HBox() - self.msj = gtk.Label() - self.vbox.pack_start(self.msj) - self.vbox.pack_start(self.hbox) - self.set_canvas(self.vbox) - self.show_all() - - self.solucion_izquierdos = set() - self.solucion_derechos = set() - - self.problemas = logica.generarCasos() - self.MostrarProblema(self.problemas.pop()) - - def MostrarProblema(self, prob): - for w in self.hbox.get_children(): - self.hbox.remove(w) - - prob_str = prob - prob = list(prob) - pos = 0 - boton = self.crear_boton(pos) - self.agregar_widget(boton) - while pos < len(prob): - car = prob[pos] - if car == "(": - self.solucion_izquierdos.add(pos) - pos = pos + 1 - elif car == ")": - self.solucion_derechos.add(pos) - pos = pos + 1 - else: - car_etiqueta = gtk.Label(car) - self.agregar_widget(car_etiqueta) - pos = pos + 1 - boton = self.crear_boton(pos) - self.agregar_widget(boton) - - igual = self.crear_boton_igual() - self.agregar_widget(igual) - self.agregar_widget(gtk.Label(eval(prob_str))) - - def agregar_widget(self, widget): - ''' Agrega el boton a la lista de botones ''' - self.hbox.pack_start(widget) - widget.show() - - def crear_boton(self, pos): - boton = BotonParentesis(pos) - boton.connect('clicked', self.boton_activado) - return boton - - def crear_boton_igual(self): - boton = gtk.Button(IGUAL) - boton.connect('clicked', self.boton_igual_activado) - return boton - - def boton_activado(self, boton): - boton.iterarEstado() - - def boton_igual_activado(self, boton): - respuesta_izquierdos = set() - respuesta_derechos = set() - for widget in self.hbox.get_children(): - if isinstance(widget,BotonParentesis): - estado = widget.getEstado() - if estado == ESTADO_IZQ: - respuesta_izquierdos.add(widget.getPos()) - if estado == ESTADO_DER: - respuesta_derechos.add(widget.getPos()) - - if respuesta_izquierdos == self.solucion_izquierdos and respuesta_derechos == self.solucion_derechos: - self.msj.set_label("Muy Bien!") - self.MostrarProblema(self.problemas.pop()) - else: - self.msj.set_label("Incorrecto") - -class BotonParentesis(gtk.Button): - - def __init__(self, pos): - gtk.Button.__init__(self, "") - self._pos = pos - self._estado = ESTADO_VACIO - - def getPos(self): - return self._pos - - def setPos(self, pos): - self._pos = pos - - def iterarEstado(self): - if self._estado == ESTADO_VACIO: - self._estado = ESTADO_IZQ - self.set_label("(") - elif self._estado == ESTADO_IZQ: - self._estado = ESTADO_DER - self.set_label(")") - elif self._estado == ESTADO_DER: - self._estado = ESTADO_VACIO - self.set_label("") - - def getEstado(self): - return self._estado
\ No newline at end of file |