Example #1
0
    def __init__(self):
        self.camera = Camera()
        self.borracho_actual = None
        self.indice = 0

        # cargamos el archivo creado con glade
        self.gladefile = "pychupito/gui/chupiventana.glade"
        self.glade = gtk.Builder()
        self.glade.add_from_file(self.gladefile)

        # cargamos las variables
        self.window = self.glade.get_object("chupiventana")
        self.image_add = self.glade.get_object("image_add")
        self.image_delete = self.glade.get_object("image_delete")
        # self.image_drink = self.glade.get_object("image_drink")

        self.button_add = self.glade.get_object("button_add")
        self.button_delete = self.glade.get_object("button_delete")
        self.button_previous = self.glade.get_object("button_previous")
        self.button_next = self.glade.get_object("button_next")
        # self.button_drink = self.glade.get_object("button_drink")

        # conectamos las señales
        self.glade.connect_signals(self)

        # modificamos las variables para mostrar o no los botones
        # self.window.set_icon_from_file("icono.png")
        self.window.set_title("PyChupito")
        self.button_previous.set_sensitive(False)
        self.button_next.set_sensitive(False)
        self.button_delete.set_sensitive(False)
        # self.button_drink.set_sensitive(False)

        # mostramos la cámara en la imagen de la izquierda
        self.camera.check_name_cameras()
        self.camera.open_camera(0)

        # creamos una especie de while
        self.refresh = gobject.timeout_add(50, self.update)  # Bucle video

        # creamos una lista de borrachos
        self.borrachos = Borrachos()

        # mostramos la ventana
        self.window.show()
Example #2
0
class Main:
    """Clase principal """

    def __init__(self):
        self.camera = Camera()
        self.borracho_actual = None
        self.indice = 0

        # cargamos el archivo creado con glade
        self.gladefile = "pychupito/gui/chupiventana.glade"
        self.glade = gtk.Builder()
        self.glade.add_from_file(self.gladefile)

        # cargamos las variables
        self.window = self.glade.get_object("chupiventana")
        self.image_add = self.glade.get_object("image_add")
        self.image_delete = self.glade.get_object("image_delete")
        # self.image_drink = self.glade.get_object("image_drink")

        self.button_add = self.glade.get_object("button_add")
        self.button_delete = self.glade.get_object("button_delete")
        self.button_previous = self.glade.get_object("button_previous")
        self.button_next = self.glade.get_object("button_next")
        # self.button_drink = self.glade.get_object("button_drink")

        # conectamos las señales
        self.glade.connect_signals(self)

        # modificamos las variables para mostrar o no los botones
        # self.window.set_icon_from_file("icono.png")
        self.window.set_title("PyChupito")
        self.button_previous.set_sensitive(False)
        self.button_next.set_sensitive(False)
        self.button_delete.set_sensitive(False)
        # self.button_drink.set_sensitive(False)

        # mostramos la cámara en la imagen de la izquierda
        self.camera.check_name_cameras()
        self.camera.open_camera(0)

        # creamos una especie de while
        self.refresh = gobject.timeout_add(50, self.update)  # Bucle video

        # creamos una lista de borrachos
        self.borrachos = Borrachos()

        # mostramos la ventana
        self.window.show()

    # callback
    def button_add_clicked(self, widget):
        borracho = self.borrachos.agregar_borracho()
        nombre_imagen = borracho.agregar_imagen()

        frame = self.camera.get_frame()
        save = cvCloneImage(frame)
        try:
            cvSaveImage("imagenes/%s.png" % nombre_imagen, save)
        except:
            print "no se ha podido guardar la imagen"

        if len(self.borrachos.lista_borrachos) == 1:
            self.button_previous.set_sensitive(True)
            self.button_next.set_sensitive(True)
            self.button_delete.set_sensitive(True)
            # self.button_drink.set_sensitive(True)

        self.borracho_actual = self.borrachos.lista_borrachos[self.indice % self.borrachos.numero_borrachos]
        nombre_imagen = self.borracho_actual.lista_imagenes[-1]
        imagen_borracho = cvLoadImage("imagenes/%s.png" % nombre_imagen)
        resized = change_size_image(imagen_borracho, (150, 100))
        self.load_image_delete(resized)

    def button_previous_clicked(self, widget):
        self.indice -= 1
        self.borracho_actual = self.borrachos.lista_borrachos[self.indice % self.borrachos.numero_borrachos]
        nombre_imagen = self.borracho_actual.lista_imagenes[-1]
        imagen_borracho = cvLoadImage("imagenes/%s.png" % nombre_imagen)
        resized = change_size_image(imagen_borracho, (150, 100))
        self.load_image_delete(resized)

    def button_next_clicked(self, widget):
        self.indice += 1
        self.borracho_actual = self.borrachos.lista_borrachos[self.indice % self.borrachos.numero_borrachos]
        nombre_imagen = self.borracho_actual.lista_imagenes[-1]
        imagen_borracho = cvLoadImage("imagenes/%s.png" % nombre_imagen)
        resized = change_size_image(imagen_borracho, (150, 100))
        self.load_image_delete(resized)

    def button_delete_clicked(self, widget):
        self.borrachos.eliminar_borracho(self.borracho_actual)
        self.indice -= 1
        self.borracho_actual = self.borrachos.lista_borrachos[self.indice % self.borrachos.numero_borrachos]
        nombre_imagen = self.borracho_actual.lista_imagenes[-1]
        imagen_borracho = cvLoadImage("imagenes/%s.png" % nombre_imagen)
        resized = change_size_image(imagen_borracho, (150, 100))
        self.load_image_delete(resized)

        if not self.borrachos.numero_borrachos:
            self.button_previous.set_sensitive(False)
            self.button_next.set_sensitive(False)
            self.button_delete.set_sensitive(False)
            self.button_drink.set_sensitive(False)

    def button_drink_clicked(self, widget):
        if not self.borrachos.numero_borrachos:
            print "TODO: MOSTRAR LA CARA DE ALGO GRACIOSO"
        elif self.borrachos.numero_borrachos > 1:
            borracho_aleatorio = self.borrachos.seleccionar_borracho_aleatorio()
            nombre_imagen = borracho_aleatorio.lista_imagenes[-1]
            print nombre_imagen
            imagen_borracho = cvLoadImage("imagenes/%s.png" % nombre_imagen)
            resized = change_size_image(imagen_borracho)
            self.load_image_drink(resized)
        else:
            print "Para jugar tu solo no lo uses "

    def gtk_main_quit(self, widget):
        """Funcion que es llamada cuando queremos cerramos la ventana. """
        gtk.main_quit()
        exit()

    # metodos
    def load_image_add(self, image):
        """Nos carga una imagen en la parte izquierda de la pantalla. 
        @param image: imagen a cargar.
        @type image: L{IplImage}"""
        pix_buf = convert_opencv2gtk(image)
        self.image_add.set_from_pixbuf(pix_buf)

    def load_image_delete(self, image):
        """Nos carga una imagen en la parte derecha de la pantalla. 
        @param image: imagen a cargar.
        @type image: L{IplImage}"""
        pix_buf = convert_opencv2gtk(image)
        self.image_delete.set_from_pixbuf(pix_buf)

    def load_image_drink(self, image):
        """Comprueba si la ventana de configuración está abierta. 
        @return: True si la configuración se ha creado correctamente, 
         False en caso contrario.
        @rtype: C{bool}"""
        pix_buf = convert_opencv2gtk(image)
        self.image_drink.set_from_pixbuf(pix_buf)

    def update(self):
        """Función llamada por un bucle cada cierto tiempo que nos actualiza
         la cámara y el video mediante frame y los muesta por pantalla.
         @return: Devuelve True siempre que exista frame de una cámara o 
          un video, y False en caso de no encontrarlo.
         @rtype: C{bool}
         """

        if self.camera.capture == None:
            return False

        frame = self.camera.get_frame()
        resized = change_size_image(frame)
        self.load_image_add(resized)

        # if len(self.photos) >= 1:
        #    self.load_image_delete(self.photos[self.pointer])
        # if self.pointer != -1 and self.rand != None:
        #    self.load_image_delete(self.rand)
        #    print "Entro"

        return True