class GameImage(gtk.DrawingArea): def __init__(self): gtk.DrawingArea.__init__(self) self.modify_bg(gtk.STATE_NORMAL, COLORES["text"]) self.add_events(gtk.gdk.BUTTON_PRESS_MASK) self.imagenplayer = False self.path = False self.show_all() def stop(self): if self.imagenplayer: self.imagenplayer.stop() del(self.imagenplayer) self.imagenplayer = False def load(self, topic): self.stop() self.path = os.path.abspath("Imagenes/juego1.png") self.imagenplayer = ImagePlayer(self) self.imagenplayer.load(self.path) return False
class GameImage(gtk.DrawingArea): def __init__(self): gtk.DrawingArea.__init__(self) self.modify_bg(gtk.STATE_NORMAL, COLORES["text"]) self.add_events(gtk.gdk.BUTTON_PRESS_MASK) self.imagenplayer = False self.path = False self.show_all() def stop(self): if self.imagenplayer: self.imagenplayer.stop() del (self.imagenplayer) self.imagenplayer = False def load(self, topic): self.stop() self.path = os.path.abspath("Imagenes/juego1.png") self.imagenplayer = ImagePlayer(self) self.imagenplayer.load(self.path) return False
class OjosCompuestos(gtk.HPaned): def __init__(self, pantalla): gtk.HPaned.__init__(self) print "Corriendo Ojos Compuestos . . ." self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#ffffff")) self.player = False self.pantalla = pantalla self.playerlist = PlayerList() self.pack1(self.pantalla, resize=True, shrink=True) self.pack2(self.playerlist, resize=False, shrink=False) self.playerlist.connect("nueva-seleccion", self.__play_item) self.connect("realize", self.__load_imagenes) self.show_all() def __load_imagenes(self, widget): gobject.idle_add(self.__run) def __run(self): self.player = ImagePlayer(self.pantalla) dirpath = os.path.join(BASE_PATH, "Imagenes") elementos = [] for path in sorted(os.listdir(dirpath)): elementos.append([path, os.path.join(dirpath, path)]) self.playerlist.lista.agregar_items(elementos) dialog = Dialog(parent=self.get_toplevel(), text="Presiona Escape Cuando Desees Salir") dialog.run() return False def __play_item(self, widget, path): if path: self.player.load(path) def salir(self): self.player.stop()
class OjosCompuestos(Gtk.HPaned): def __init__(self, pantalla): GObject.GObject.__init__(self) print "Corriendo Ojos Compuestos . . ." self.override_background_color(Gtk.StateType.NORMAL, color_parser("#ffffff")) self.player = False self.pantalla = pantalla self.playerlist = PlayerList() self.pack1(self.pantalla, resize=True, shrink=True) self.pack2(self.playerlist, resize=False, shrink=False) self.playerlist.connect("nueva-seleccion", self.__play_item) self.connect("realize", self.__load_imagenes) self.show_all() def __load_imagenes(self, widget): GLib.idle_add(self.__run) def __run(self): self.player = ImagePlayer(self.pantalla) dirpath = os.path.join(BASE_PATH, "Imagenes") elementos = [] for path in sorted(os.listdir(dirpath)): elementos.append([path, os.path.join(dirpath, path)]) self.playerlist.lista.agregar_items(elementos) dialog = Dialog(parent=self.get_toplevel(), text="Presiona Escape Cuando Desees Salir") dialog.run() return False def __play_item(self, widget, path): if path: self.player.load(path) def salir(self): self.player.stop()
class HelpSlideShow(gtk.EventBox): def __init__(self): gtk.EventBox.__init__(self) self.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"]) #self.set_border_width(20) self.slides = [] self.index_select = 0 self.imagenplayer = False self.control = False self.drawing = gtk.DrawingArea() eventcontainer = gtk.EventBox() eventcontainer.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"]) self.label = gtk.Label("Text") self.label.set_property("justify", gtk.JUSTIFY_CENTER) self.drawing.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"]) self.label.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"]) self.label.modify_fg(gtk.STATE_NORMAL, COLORES["window"]) #self.label.modify_font(pango.FontDescription("DejaVu Sans 16")) eventcontainer.add(self.label) hbox = gtk.HBox() self.left = gtk.Button() self.left.unset_flags(gtk.CAN_FOCUS) self.left.set_relief(gtk.RELIEF_NONE) imagen = gtk.Image() imagen.set_from_file("Imagenes/flecha_izquierda.png") self.left.set_border_width(0) self.left.add(imagen) self.left.connect("clicked", self.go_left) hbox.pack_start(self.left) hbox.add(eventcontainer) self.right = gtk.Button() self.right.set_relief(gtk.RELIEF_NONE) self.right.unset_flags(gtk.CAN_FOCUS) imagen = gtk.Image() imagen.set_from_file("Imagenes/flecha_derecha.png") self.right.set_border_width(0) self.right.add(imagen) self.right.connect("clicked", self.go_right) hbox.pack_end(self.right) tabla = gtk.Table(rows=8, columns=1, homogeneous=True) tabla.attach(self.drawing, 0, 1, 0, 7, ypadding=5) tabla.attach(hbox, 0, 1, 7, 8) align = gtk.Alignment(0.5, 0.5, 0.7, 0.95) align.add(tabla) self.add(align) def go_right(self, widget): self.__run_secuencia() self.left.show() self.right.show() def go_left(self, widget): self.__run_secuencia(offset=-1) self.left.show() self.right.show() def __run_secuencia(self, widget=None, offset=1): self.stop() self.index_select += offset self.path = self.slides[self.index_select % len(self.slides)] self.imagenplayer = ImagePlayer(self.drawing) self.imagenplayer.load(self.path) self.label.set_text("Slide %i of %i" % ( self.index_select % len(self.slides) + 1, len(self.slides))) #self.left.hide() #self.right.hide() return True def toggle(self): if self.control: gobject.source_remove(self.control) self.control = False self.modify_bg(gtk.STATE_NORMAL, COLORES['rojo']) self.left.show() self.right.show() else: self.modify_bg(gtk.STATE_NORMAL, COLORES['window']) self.play() self.left.hide() self.right.hide() def reset(self): self.modify_bg(gtk.STATE_NORMAL, COLORES['window']) self.play() def stop(self): if self.imagenplayer: self.imagenplayer.stop() del(self.imagenplayer) self.imagenplayer = False def play(self): if not self.control: self.control = gobject.timeout_add(10000, self.__run_secuencia) def load(self): self.stop() self.slides = sorted(glob("Imagenes/tv_slides/slide*.png")) self.index_select = -1 self.__run_secuencia() #self.play() return False
class FlashCardView(gtk.EventBox): __gsignals__ = { "video": (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, (gobject.TYPE_STRING, ))} def __init__(self): gtk.EventBox.__init__(self) self.modify_bg(gtk.STATE_NORMAL, COLORES["contenido"]) self.set_border_width(4) self.user = False self.topic = False self.vocabulario = [] self.imagenplayer = False self.index_select = 0 self.click_event = True tabla = gtk.Table(rows=11, columns=5, homogeneous=True) tabla.set_property("column-spacing", 5) tabla.set_property("row-spacing", 5) tabla.set_border_width(4) self.cabecera = Cabecera() self.flashcard = FlashCard() tabla.attach(self.cabecera, 0, 5, 0, 2) tabla.attach(self.flashcard, 0, 3, 2, 11) self.derecha = Derecha() tabla.attach(self.derecha, 3, 5, 2, 10) self.statuslabel = gtk.Label("Flashcard 0 of 0") tabla.attach(self.statuslabel, 3, 5, 10, 11) self.add(tabla) self.show_all() self.derecha.connect("siguiente", self.__siguiente) self.derecha.connect("show_answer", self.__show_answer) def __show_answer(self, widget): index = self.index_select respuesta = self.vocabulario[index][3] if len(self.vocabulario[index]) > 3 else \ self.vocabulario[index][1] self.derecha.label.set_text( self.vocabulario[index][1].replace(" ", "\n")) self.cabecera.question_label.set_markup("<b>"+respuesta+"</b>") if self.click_event: self.flashcard.disconnect(self.click_event) self.click_event = None self.click_event = self.flashcard.connect("button-press-event", self.repetir_respuesta, respuesta) #self.cabecera.question_label.modify_fg(gtk.STATE_NORMAL, COLORES["rojo"]) gobject.idle_add(self.__show_phrase, respuesta) def __show_phrase(self, respuesta): decir_demorado(170, 50, 0, "en-gb", respuesta) self.cabecera.question_label.modify_fg(gtk.STATE_NORMAL, COLORES["window"]) self.cabecera.question_label.set_markup(respuesta) if not self.click_event: self.click_event = self.flashcard.connect("button-press-event", self.repetir_respuesta, respuesta) def __siguiente(self, widget, respuesta): """ ContinĂșa con siguiente palabra del vocabulario cargado. """ r = 0 if respuesta == 1: r = 5 elif respuesta == 2: r = 3 elif respuesta == 3: r = 0 guardar(self.user, self.topic, self.vocabulario[self.index_select][0], r) if self.index_select < len(self.vocabulario) - 1: self.index_select += 1 gobject.timeout_add(500, self.__load, self.index_select) else: dialog = Dialog("Congratulations!", self.get_toplevel(), ("OK", gtk.RESPONSE_ACCEPT), "Memorization task completed for today.") dialog.run() dialog.destroy() self.emit("video", self.topic) def __load(self, index): """ Carga una nueva palabra del Vocabulario """ path = os.path.join(self.topic, "Imagenes", "%s.png" % self.vocabulario[index][0]) if self.imagenplayer: self.imagenplayer.stop() del(self.imagenplayer) self.imagenplayer = False self.imagenplayer = ImagePlayer(self.flashcard.drawing) self.imagenplayer.load(path) #self.cabecera.question_label.modify_fg(gtk.STATE_NORMAL, COLORES["rojo"]) pregunta = self.vocabulario[index][2] if len(self.vocabulario[index]) > 2 else "" if pregunta == "": pregunta = "What is this?" self.cabecera.question_label.set_markup("<b>"+pregunta+"</b>") if self.click_event: self.flashcard.disconnect(self.click_event) self.click_event = None self.click_event = self.flashcard.connect("button-press-event", self.repetir_pregunta, pregunta) gobject.idle_add(self.__activar, pregunta) return False def repetir_pregunta(self, widget, event, pregunta): if self.click_event: self.flashcard.disconnect(self.click_event) self.click_event = None self.click_event = None self.cabecera.question_label.set_markup("<b>"+pregunta+"</b>") gobject.idle_add(self.__activar, pregunta) def repetir_respuesta(self, widget, event, respuesta): if self.click_event: self.flashcard.disconnect(self.click_event) self.click_event = None self.click_event = None self.cabecera.question_label.set_markup("<b>"+respuesta+"</b>") gobject.idle_add(self.__show_phrase, respuesta) def __activar(self, pregunta): decir_demorado(170, 50, 0, "en", pregunta) if not self.click_event: self.click_event = self.flashcard.connect("button-press-event", self.repetir_pregunta, pregunta) self.derecha.activar() self.cabecera.question_label.modify_fg(gtk.STATE_NORMAL, COLORES["window"]) self.cabecera.question_label.set_markup(pregunta) self.statuslabel.set_text("Flashcard %i of %i" % ( self.index_select + 1, len(self.vocabulario))) return False def stop(self): """ Desactiva la vista de FlashCards. """ self.hide() if self.imagenplayer: self.imagenplayer.stop() del(self.imagenplayer) self.imagenplayer = False def run(self, data): """ Carga Vocabulario, pone widgets a estado inicial y carga primera palabra. """ topic, _dict = data self.user = _dict parser = SafeConfigParser() metadata = os.path.join(topic, "topic.ini") parser.read(metadata) self.cabecera.titulo.set_text("Topic: " + parser.get('topic', 'title')) self.derecha.run() vocabulario = get_vocabulario(topic, _dict) if len(vocabulario) > 14: vocabulario = vocabulario[:15] self.show() if vocabulario: self.vocabulario = vocabulario self.topic = topic self.index_select = 0 gobject.timeout_add(500, self.__load, self.index_select) else: self.topic = topic dialog = Dialog("Come back tomorrow!", self.get_toplevel(), ("OK", gtk.RESPONSE_ACCEPT), "You've memorized all flashcards for today.") dialog.run() dialog.destroy() self.emit("video", self.topic)
class FlashCardsPreview(gtk.EventBox): def __init__(self): gtk.EventBox.__init__(self) self.modify_bg(gtk.STATE_NORMAL, COLORES["window"]) #self.set_border_width(20) self.vocabulario = [] self.index_select = 0 self.imagenplayer = False self.path = False self.control = False self.topic = False self.drawing = gtk.DrawingArea() eventcontainer = gtk.EventBox() eventcontainer.modify_bg(gtk.STATE_NORMAL, COLORES["window"]) self.label = gtk.Label("Text") self.label.set_property("justify", gtk.JUSTIFY_CENTER) self.drawing.modify_bg(gtk.STATE_NORMAL, COLORES["window"]) self.label.modify_bg(gtk.STATE_NORMAL, COLORES["window"]) self.label.modify_fg(gtk.STATE_NORMAL, COLORES["text"]) self.label.modify_font(pango.FontDescription("DejaVu Sans 20")) eventcontainer.add(self.label) eventcontainer.connect("button-press-event", self.utter) hbox = gtk.HBox() self.left = gtk.Button() self.left.set_relief(gtk.RELIEF_NONE) imagen = gtk.Image() imagen.set_from_file("Imagenes/flecha_izquierda.png") self.left.modify_bg(gtk.STATE_NORMAL, COLORES["rojo"]) self.left.add(imagen) self.left.connect("clicked", self.go_left) hbox.pack_start(self.left) hbox.add(eventcontainer) self.right = gtk.Button() self.right.set_relief(gtk.RELIEF_NONE) imagen = gtk.Image() imagen.set_from_file("Imagenes/flecha_derecha.png") self.right.modify_bg(gtk.STATE_NORMAL, COLORES["rojo"]) self.right.add(imagen) self.right.connect("clicked", self.go_right) hbox.pack_end(self.right) tabla = gtk.Table(rows=8, columns=1, homogeneous=True) tabla.attach(self.drawing, 0, 1, 0, 7, ypadding=5) tabla.attach(hbox, 0, 1, 7, 8) align = gtk.Alignment(0.5, 0.5, 0.7, 0.95) align.add(tabla) self.add(align) def utter(self, widget, event): palabra = self.label.get_text() #self.label.modify_fg(gtk.STATE_NORMAL, COLORES["rojo"]) self.label.set_markup("<b>"+palabra+"</b>") gobject.idle_add(self.utter2, palabra) return True def utter2(self, palabra): decir_demorado(170, 50, 0, "en-gb", palabra) self.label.set_markup(palabra) #self.label.modify_fg(gtk.STATE_NORMAL, COLORES["text"]) def go_right(self, widget): self.__run_secuencia() self.left.show() self.right.show() def go_left(self, widget): self.__run_secuencia(-1) self.left.show() self.right.show() def __run_secuencia(self, widget=None, offset=1): self.stop() self.path = os.path.join(self.topic, "Imagenes", "%s.png" % self.vocabulario[self.index_select][0]) self.imagenplayer = ImagePlayer(self.drawing) self.imagenplayer.load(self.path) self.label.set_text( self.vocabulario[self.index_select][1]) if self.index_select < len(self.vocabulario) - 1: self.index_select += offset else: self.index_select = 0 self.left.hide() self.right.hide() return True def toggle(self): if self.control: gobject.source_remove(self.control) self.control = False self.modify_bg(gtk.STATE_NORMAL, COLORES['rojo']) self.left.show() self.right.show() else: self.modify_bg(gtk.STATE_NORMAL, COLORES['window']) self.play() self.left.hide() self.right.hide() def reset(self): self.modify_bg(gtk.STATE_NORMAL, COLORES['window']) self.play() def stop(self): if self.imagenplayer: self.imagenplayer.stop() del(self.imagenplayer) self.imagenplayer = False def play(self): if not self.control: self.control = gobject.timeout_add(4000, self.__run_secuencia) def load(self, topic): self.stop() self.topic = topic self.vocabulario = get_flashcards_previews(self.topic) self.index_select = 0 self.__run_secuencia() self.play() return False
class FlashCardsPreview(gtk.EventBox): def __init__(self): gtk.EventBox.__init__(self) self.modify_bg(gtk.STATE_NORMAL, COLORES["window"]) #self.set_border_width(20) self.vocabulario = [] self.index_select = 0 self.imagenplayer = False self.path = False self.control = False self.topic = False self.drawing = gtk.DrawingArea() eventcontainer = gtk.EventBox() eventcontainer.modify_bg(gtk.STATE_NORMAL, COLORES["window"]) self.label = gtk.Label("Text") self.label.set_property("justify", gtk.JUSTIFY_CENTER) self.drawing.modify_bg(gtk.STATE_NORMAL, COLORES["window"]) self.label.modify_bg(gtk.STATE_NORMAL, COLORES["window"]) self.label.modify_fg(gtk.STATE_NORMAL, COLORES["text"]) self.label.modify_font(pango.FontDescription("DejaVu Sans 20")) eventcontainer.add(self.label) eventcontainer.connect("button-press-event", self.utter) hbox = gtk.HBox() self.left = gtk.Button() self.left.set_relief(gtk.RELIEF_NONE) imagen = gtk.Image() imagen.set_from_file("Imagenes/flecha_izquierda.png") self.left.modify_bg(gtk.STATE_NORMAL, COLORES["rojo"]) self.left.add(imagen) self.left.connect("clicked", self.go_left) hbox.pack_start(self.left) hbox.add(eventcontainer) self.right = gtk.Button() self.right.set_relief(gtk.RELIEF_NONE) imagen = gtk.Image() imagen.set_from_file("Imagenes/flecha_derecha.png") self.right.modify_bg(gtk.STATE_NORMAL, COLORES["rojo"]) self.right.add(imagen) self.right.connect("clicked", self.go_right) hbox.pack_end(self.right) tabla = gtk.Table(rows=8, columns=1, homogeneous=True) tabla.attach(self.drawing, 0, 1, 0, 7, ypadding=5) tabla.attach(hbox, 0, 1, 7, 8) align = gtk.Alignment(0.5, 0.5, 0.7, 0.95) align.add(tabla) self.add(align) def utter(self, widget, event): palabra = self.label.get_text() #self.label.modify_fg(gtk.STATE_NORMAL, COLORES["rojo"]) self.label.set_markup("<b>" + palabra + "</b>") gobject.idle_add(self.utter2, palabra) return True def utter2(self, palabra): decir_demorado(170, 50, 0, "en-gb", palabra) self.label.set_markup(palabra) #self.label.modify_fg(gtk.STATE_NORMAL, COLORES["text"]) def go_right(self, widget): self.__run_secuencia() self.left.show() self.right.show() def go_left(self, widget): self.__run_secuencia(-1) self.left.show() self.right.show() def __run_secuencia(self, widget=None, offset=1): self.stop() self.path = os.path.join( self.topic, "Imagenes", "%s.png" % self.vocabulario[self.index_select][0]) self.imagenplayer = ImagePlayer(self.drawing) self.imagenplayer.load(self.path) self.label.set_text(self.vocabulario[self.index_select][1]) if self.index_select < len(self.vocabulario) - 1: self.index_select += offset else: self.index_select = 0 self.left.hide() self.right.hide() return True def toggle(self): if self.control: gobject.source_remove(self.control) self.control = False self.modify_bg(gtk.STATE_NORMAL, COLORES['rojo']) self.left.show() self.right.show() else: self.modify_bg(gtk.STATE_NORMAL, COLORES['window']) self.play() self.left.hide() self.right.hide() def reset(self): self.modify_bg(gtk.STATE_NORMAL, COLORES['window']) self.play() def stop(self): if self.imagenplayer: self.imagenplayer.stop() del (self.imagenplayer) self.imagenplayer = False def play(self): if not self.control: self.control = gobject.timeout_add(4000, self.__run_secuencia) def load(self, topic): self.stop() self.topic = topic self.vocabulario = get_flashcards_previews(self.topic) self.index_select = 0 self.__run_secuencia() self.play() return False
class HelpSlideShow(gtk.EventBox): def __init__(self): gtk.EventBox.__init__(self) self.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"]) #self.set_border_width(20) self.slides = [] self.index_select = 0 self.imagenplayer = False self.control = False self.drawing = gtk.DrawingArea() eventcontainer = gtk.EventBox() eventcontainer.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"]) self.label = gtk.Label("Text") self.label.set_property("justify", gtk.JUSTIFY_CENTER) self.drawing.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"]) self.label.modify_bg(gtk.STATE_NORMAL, COLORES["toolbar"]) self.label.modify_fg(gtk.STATE_NORMAL, COLORES["window"]) #self.label.modify_font(pango.FontDescription("DejaVu Sans 16")) eventcontainer.add(self.label) hbox = gtk.HBox() self.left = gtk.Button() self.left.unset_flags(gtk.CAN_FOCUS) self.left.set_relief(gtk.RELIEF_NONE) imagen = gtk.Image() imagen.set_from_file("Imagenes/flecha_izquierda.png") self.left.set_border_width(0) self.left.add(imagen) self.left.connect("clicked", self.go_left) hbox.pack_start(self.left) hbox.add(eventcontainer) self.right = gtk.Button() self.right.set_relief(gtk.RELIEF_NONE) self.right.unset_flags(gtk.CAN_FOCUS) imagen = gtk.Image() imagen.set_from_file("Imagenes/flecha_derecha.png") self.right.set_border_width(0) self.right.add(imagen) self.right.connect("clicked", self.go_right) hbox.pack_end(self.right) tabla = gtk.Table(rows=8, columns=1, homogeneous=True) tabla.attach(self.drawing, 0, 1, 0, 7, ypadding=5) tabla.attach(hbox, 0, 1, 7, 8) align = gtk.Alignment(0.5, 0.5, 0.7, 0.95) align.add(tabla) self.add(align) def go_right(self, widget): self.__run_secuencia() self.left.show() self.right.show() def go_left(self, widget): self.__run_secuencia(offset=-1) self.left.show() self.right.show() def __run_secuencia(self, widget=None, offset=1): self.stop() self.index_select += offset self.path = self.slides[self.index_select % len(self.slides)] self.imagenplayer = ImagePlayer(self.drawing) self.imagenplayer.load(self.path) self.label.set_text("Slide %i of %i" % ( self.index_select % len(self.slides) + 1, len(self.slides))) #self.left.hide() #self.right.hide() return True def toggle(self): if self.control: gobject.source_remove(self.control) self.control = False self.modify_bg(gtk.STATE_NORMAL, COLORES['rojo']) self.left.show() self.right.show() else: self.modify_bg(gtk.STATE_NORMAL, COLORES['window']) self.play() self.left.hide() self.right.hide() def reset(self): self.modify_bg(gtk.STATE_NORMAL, COLORES['window']) self.play() def stop(self): if self.imagenplayer: self.imagenplayer.stop() del(self.imagenplayer) self.imagenplayer = False def play(self): if not self.control: self.control = gobject.timeout_add(10000, self.__run_secuencia) def load(self): self.stop() self.slides = sorted(glob("Imagenes/slides/slide*.png")) self.index_select = -1 self.__run_secuencia() #self.play() return False