class pygihack(activity.Activity):
    def __init__(self, handle):
        activity.Activity.__init__(self, handle)
        self.set_border_width(3)
        
        self.connect("delete_event", self.delete_event)
        self.connect("destroy", self.destroy)
        
        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
        self.toolbar = Toolbar()
        self.toolbartry = ToolbarTry()
        self.navegador = Navegador()
        vbox.pack_start(self.toolbar, False, True, 0)
        vbox.pack_start(self.navegador, True, True, 0)
        vbox.pack_start(self.toolbartry, False, True, 3)
        self.set_canvas(vbox)
        self.show_all()
        
        self.navegador.connect('info', self.get_info)
    
    def get_info(self, widget, objeto):
        self.toolbartry.label.set_text( str(objeto) )
        
    def delete_event(self, widget, event, data=None):
        return False
    
    def destroy(self, widget, data=None):
        Gtk.main_quit()
Example #2
0
    def setup_init(self):
        self.navegador = Navegador()
        base_panel = Gtk.Paned(orientation=Gtk.Orientation.HORIZONTAL)
        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        scroll.add_with_viewport(self.navegador)
        base_panel.pack2(scroll, resize=True, shrink=True)

        self.add(base_panel)

        self.show_all()
Example #3
0
 def __init__(self, config):
     self.__config = config
     self.__navegador = Navegador(self.__config)
     self.__sensorDeObjetos = SensorDeObjetos(
         config.DomoPatronAReconocer, config.DomoCamaraId,
         config.DomoMostrarEnVentanaReconocimiento,
         config.DomoFotogramasXCaptura)
     self.__testigoLuminoso = Led()
     self.__testigoSonoro = Buzzer()
     if self.__config.DomoMostrarEnVentanaCentrado:
         cv.NamedWindow(self.__windowName, 1)
     self.__debugMode = self.__config.DomoDebugMode
Example #4
0
    def setup_init(self):
        """
        Se crea la interfaz grafica,
        se setea y se empaqueta todo.
        """

        self.navegador = Navegador()

        base_panel = Gtk.Paned(orientation = Gtk.Orientation.HORIZONTAL)

        # Izquierda
        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        #scroll.add_with_viewport (self.lista_de_reproduccion)

        #base_panel.pack1(scroll, resize = True, shrink = True)

        # Derecha
        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        scroll.add_with_viewport(self.navegador)

        base_panel.pack2(scroll, resize = True, shrink = True)

        self.add(base_panel)

        self.show_all()
 def __init__(self, handle):
     activity.Activity.__init__(self, handle)
     self.set_border_width(3)
     
     self.connect("delete_event", self.delete_event)
     self.connect("destroy", self.destroy)
     
     vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
     self.toolbar = Toolbar()
     self.toolbartry = ToolbarTry()
     self.navegador = Navegador()
     vbox.pack_start(self.toolbar, False, True, 0)
     vbox.pack_start(self.navegador, True, True, 0)
     vbox.pack_start(self.toolbartry, False, True, 3)
     self.set_canvas(vbox)
     self.show_all()
     
     self.navegador.connect('info', self.get_info)
Example #6
0
 def __init__ (self, config):
     self.__config = config
     self.__navegador = Navegador(self.__config)
     self.__sensorDeObjetos = SensorDeObjetos(config.DomoPatronAReconocer, config.DomoCamaraId, config.DomoMostrarEnVentanaReconocimiento, config.DomoFotogramasXCaptura)
     self.__testigoLuminoso = Led()
     self.__testigoSonoro = Buzzer()
     if self.__config.DomoMostrarEnVentanaCentrado :
         cv.NamedWindow(self.__windowName,1)
     self.__debugMode = self.__config.DomoDebugMode
Example #7
0
    def __init__(self):        

        self.DEFAULT_URL = 'https://sistemas.uff.br/conexaouff'

        self.__navegador = Navegador()
        self.__navegador.setUrl(self.DEFAULT_URL)
        self.__navegador.login()

        self.disciplinas = list()
        self.arquivos = list()
Example #8
0
    def setup_init(self):
        self.navegador = Navegador()
        base_panel = Gtk.Paned(orientation = Gtk.Orientation.HORIZONTAL)
        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        scroll.add_with_viewport(self.navegador)
        base_panel.pack2(scroll, resize = True, shrink = True)

        self.add(base_panel)

        self.show_all()
    def __init__(self):

        gtk.Window.__init__(self)

        self.set_title("JAMediaExplorer")
        self.set_icon_from_file(os.path.join(ICONOS, "JAMediaExplorer.svg"))
        self.modify_bg(0, gtk.gdk.Color(65000, 65000, 65000))
        self.set_resizable(True)
        self.set_size_request(640, 480)
        self.set_position(gtk.WIN_POS_CENTER)
        self.set_border_width(3)

        vbox = gtk.VBox()

        self.toolbar = Toolbar()
        self.toolbar_accion = ToolbarAccion()
        self.toolbar_salir = ToolbarSalir()
        self.navegador = Navegador()
        self.toolbar_try = ToolbarTry()

        vbox.pack_start(self.toolbar, False, False, 0)
        vbox.pack_start(self.toolbar_accion, False, False, 0)
        vbox.pack_start(self.toolbar_salir, False, False, 0)
        vbox.pack_start(self.navegador, True, True, 0)
        vbox.pack_end(self.toolbar_try, False, False, 0)

        self.add(vbox)
        self.show_all()
        self.realize()

        self.toolbar_accion.hide()
        self.toolbar_salir.hide()

        self.toolbar.connect('salir', self.__confirmar_salir)
        self.toolbar.connect('accion_ver', self.__set_accion)
        self.toolbar_accion.connect('borrar', self.__ejecutar_borrar)
        self.toolbar_salir.connect('salir', self.__salir)
        self.connect("delete-event", self.__salir)

        self.navegador.connect('info', self.__get_info)
        self.navegador.connect('borrar', self.__set_borrar)
Example #10
0
    def __init__(self):

        gtk.Window.__init__(self)

        self.set_title("JAMediaExplorer")
        self.set_icon_from_file(os.path.join(ICONOS, "JAMediaExplorer.svg"))
        self.modify_bg(0, gtk.gdk.Color(65000, 65000, 65000))
        self.set_resizable(True)
        self.set_size_request(640, 480)
        self.set_position(gtk.WIN_POS_CENTER)
        self.set_border_width(3)

        vbox = gtk.VBox()

        self.toolbar = Toolbar()
        self.toolbar_accion = ToolbarAccion()
        self.toolbar_salir = ToolbarSalir()
        self.navegador = Navegador()
        self.toolbar_try = ToolbarTry()

        vbox.pack_start(self.toolbar, False, False, 0)
        vbox.pack_start(self.toolbar_accion, False, False, 0)
        vbox.pack_start(self.toolbar_salir, False, False, 0)
        vbox.pack_start(self.navegador, True, True, 0)
        vbox.pack_end(self.toolbar_try, False, False, 0)

        self.add(vbox)
        self.show_all()
        self.realize()

        self.toolbar_accion.hide()
        self.toolbar_salir.hide()

        self.toolbar.connect('salir', self.__confirmar_salir)
        self.toolbar.connect('accion_ver', self.__set_accion)
        self.toolbar_accion.connect('borrar', self.__ejecutar_borrar)
        self.toolbar_salir.connect('salir', self.__salir)
        self.connect("delete-event", self.__salir)

        self.navegador.connect('info', self.__get_info)
        self.navegador.connect('borrar', self.__set_borrar)
Example #11
0
class JAMediaWeb(Gtk.Plug):

    __gsignals__ = {
    "salir":(GObject.SIGNAL_RUN_FIRST,
        GObject.TYPE_NONE, [])}

    def __init__(self):
        """
        JAMediaWeb: Gtk.Plug para embeber en otra aplicacion.
        """

        Gtk.Plug.__init__(self, 0L)

        self.navegador = None

        self.show_all()

        self.connect("embedded", self.embed_event)

    def setup_init(self):
        """
        Se crea la interfaz grafica,
        se setea y se empaqueta todo.
        """

        self.navegador = Navegador()

        base_panel = Gtk.Paned(orientation = Gtk.Orientation.HORIZONTAL)

        # Izquierda
        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        #scroll.add_with_viewport (self.lista_de_reproduccion)

        #base_panel.pack1(scroll, resize = True, shrink = True)

        # Derecha
        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        scroll.add_with_viewport(self.navegador)

        base_panel.pack2(scroll, resize = True, shrink = True)

        self.add(base_panel)

        self.show_all()

        #self.navegador.connect("title-changed", self.set_titulo)
        #self.navegador.connect("load-finished", self.listo)
        #self.navegador.connect("load-started", self.cargando)
        #self.navegador.connect("load-progress-changed", self.set_progreso)
        #self.navegador.connect("load-error", self.error)
        #self.navegador.connect("download-requested", self.descargar_archivo, gtk.Window())
        #self.navegador.connect("create-web-view", self.ventana_con_webview)
        #self.navegador.connect("populate-popup", self.menu_webview)
        #self.navegador.connect("status-bar-text-changed", self.set_text_status)
        #self.navegador.connect("icon-loaded", self.favicon)

        #self.navegador.open('https://www.google.com/')
        #self.navegador.set_zoom_level(1.0)
        #print self.navegador.get_view_mode()
        #self.navegador.set_view_mode(WebKit.WebViewViewMode.FLOATING)

    def load(self, url):

        self.navegador.load(url)

    def anterior(self, widget):
        """
        Carga la página anterior.
        """

        self.navegador.go_back()

    def siguiente(self, widget):
        """
        Carga la página siguiente.
        """

        self.navegador.go_forward()

    def recargar(self, widget):
        """
        Recarga la página actual.
        """

        self.navegador.reload()

    def detener(self, widget):
        """
        Detiene la carga de la página.
        """

        self.navegador.stop_loading()

    def acercar(self, widget):
        """Hace zoom in."""

        pass

    def alejar(self, widget):
        """Hace zoom out."""

        pass

    def embed_event(self, widget):
        """
        No hace nada por ahora.
        """

        print "JAMediaWeb => OK"

    def emit_salir(self, widget):
        """
        Emite salir para que cuando esta embebida, la
        aplicacion decida que hacer, si salir, o cerrar solo
        JAMediaWeb.
        """

        self.emit('salir')
Example #12
0
class Domo:
    
    __navegador = None
    __sensorDeObjetos = None
    __testigoLuminoso = None
    __testigoSonoro = None
    __config = None
    __windowName = "Visor de Centrado"
    __domoMostrarMovimiento = False
    
    """ Ventana Eje  (min,max) """
    __ventanaX = None
    __ventanY = None
    
    """ Constructor """
    def __init__ (self, config):
        self.__config = config
        self.__navegador = Navegador(self.__config)
        self.__sensorDeObjetos = SensorDeObjetos(config.DomoPatronAReconocer, config.DomoCamaraId, config.DomoMostrarEnVentanaReconocimiento, config.DomoFotogramasXCaptura)
        self.__testigoLuminoso = Led()
        self.__testigoSonoro = Buzzer()
        if self.__config.DomoMostrarEnVentanaCentrado :
            cv.NamedWindow(self.__windowName,1)
        self.__debugMode = self.__config.DomoDebugMode
    
    """ Destructor """
    def __del__(self):
        if self.__config.DomoMostrarEnVentanaCentrado :
            cv.DestroyWindow(self.__windowName)
        
    """ Calcula las coordenadas de las ventanas una unica vez de acuerdo al tamano de la  imagen """
    def __calcularVentana(self):
        if self.__ventanaX == None and self.__ventanY == None :
            imgSize = self.__sensorDeObjetos.getImageSize()
            imgSizeX = imgSize[0]
            imgSizeY = imgSize[1] 
            tmpPrincipio = int((imgSizeX - self.__config.DomoVentanaHorizontal)/2)
            tmpFin = imgSizeX - tmpPrincipio
            self.__ventanaX = (tmpPrincipio,tmpFin)
            tmpPrincipio = int((imgSizeY - self.__config.DomoVentanaVertical)/2)
            tmpFin = imgSizeY - tmpPrincipio
            self.__ventanaY = (tmpPrincipio,tmpFin)    
    
    
    """ Posiciona el Domo """
    def posicionar(self):
        self.__sensorDeObjetos.capturar()
        self.__calcularVentana()
        
        if self.__sensorDeObjetos.haveObjects() :
            self.__testigoLuminoso.encender()
            if self.__config.DomoMover :
                self.__posicionar()
        else :
            self.__testigoLuminoso.apagar()
            
    
    """ Calcula la posicion """
    def __posicionar(self):
        coordenadas = self.__sensorDeObjetos.getObjectPosition()
        
        """ ((x, y, w, h), n) """
        x = coordenadas[0]
        y = coordenadas[1]
        w = coordenadas[2]
        h = coordenadas[3]
        n = coordenadas[4]
        cx = int(x + (w /2))
        cy = int(y + (h /2))
        
        mov = self.__calcularMovimientoDomo(x, y, w, h, n, cx, cy)
        movX = mov[0]
        movY = mov[1]
        movZ = mov[2]
        
        if self.__config.DomoMostrarEnVentanaCentrado :
            self.__mostrarCentradoEnVentana(cx,cy, movX, movY)
        
        self.__realizarMovimientos(movX, movY, movZ)
    
    """ Muestra una imagen con la 'Ventana' para la imagen """
    def __mostrarCentradoEnVentana(self,cx,cy,movX,movY):
        tmpImage = self.__sensorDeObjetos.getImage()

        cv.Circle(tmpImage, (cx,cy), 3, cv.RGB(255, 0, 0))
        cv.Line(tmpImage, (self.__ventanaX[0],0), (self.__ventanaX[0],tmpImage.height), cv.RGB(255, 0, 0))
        cv.Line(tmpImage, (self.__ventanaX[1],0), (self.__ventanaX[1],tmpImage.height), cv.RGB(255, 0, 0))
        cv.Line(tmpImage, (0,self.__ventanaY[0]), (tmpImage.width,self.__ventanaY[0]), cv.RGB(255, 0, 0))
        cv.Line(tmpImage, (0,self.__ventanaY[1]), (tmpImage.width,self.__ventanaY[1]), cv.RGB(255, 0, 0))
        
        imgCenterX = int(tmpImage.width/2)
        imgCenterY = int(tmpImage.height/2)
        cv.Circle(tmpImage, (imgCenterX,imgCenterY), 3, cv.RGB(0, 0, 255))
        
        if self.__debugMode :
            print movX,movY
        
        cv.Line(tmpImage, (imgCenterX,imgCenterY), (imgCenterX+ (movX*self.__config.DomoPixelesPorMovimientoDebugLineX),imgCenterY), cv.RGB(0, 0, 255))
        cv.Line(tmpImage, (imgCenterX,imgCenterY), (imgCenterX,imgCenterY+ (movY*self.__config.DomoPixelesPorMovimientoDebugLineX)), cv.RGB(0, 0, 255))
        
        """cv.SaveImage("ImagenCentrado.jpg", tmpImage)"""
        cv.ShowImage(self.__windowName, tmpImage)
        return cv.WaitKey(10) <= 0
        
    
    """ Calcula el moviemiento del domo """
    def __calcularMovimientoDomo(self, x, y, w, h, n, cx, cy):
        return ( self.__calcularCantidadMoviemientoEje(self.__ventanaX, cx), self.__calcularCantidadMoviemientoEje(self.__ventanaY, cy), self.__calcularCantidadMoviemientoDistancia(w))


    """ Realiza el moviemiento del domo """
    def __realizarMovimientos(self,movX,movY, movZ):
        self.__navegador.mover(movX,movY,movZ)
        
    
    """ Devuelve la cantidad de movimientos que hay que realizar para centrar el Objeto """
    def __calcularCantidadMoviemientoEje(self, ventana, centroFigura):
        
        centroFronteraPrincipio = ventana[0];
        centroFronteraFin = ventana[1];
        
        if centroFigura < centroFronteraPrincipio :
            return self.__pixelesAMovimiento(centroFigura - centroFronteraPrincipio)
        elif centroFigura > centroFronteraFin :
            return self.__pixelesAMovimiento(centroFigura - centroFronteraFin)
        else :
            return 0
    
    """ Devuelve la cantidad de movimientos que hay que realizar para centrar el Objeto en Z """
    def __calcularCantidadMoviemientoDistancia(self,width):
       
       minimo = self.__config.DomoVentanaDistanciaMinima
       maximo = self.__config.DomoVentanaDistanciaMaxima
       
       if width < minimo :
           return minimo - width
       elif width > maximo :
           return maximo - width
       else :
           return 0
        
    """ Devuelve la cantidad de movimientos que implica la cantidad de pixeles pasada """
    def __pixelesAMovimiento(self,pixeles):
        return int(round(pixeles / self.__config.DomoPixelesPorMovimiento))
Example #13
0
class JAMediaWeb(Gtk.Plug):

    __gsignals__ = {"salir": (GObject.SIGNAL_RUN_FIRST, GObject.TYPE_NONE, [])}

    def __init__(self):
        """
        JAMediaWeb: Gtk.Plug para embeber en otra aplicacion.
        """

        Gtk.Plug.__init__(self, 0L)

        self.navegador = None
        self.show_all()
        self.connect("embedded", self.embed_event)

    def setup_init(self):
        self.navegador = Navegador()
        base_panel = Gtk.Paned(orientation=Gtk.Orientation.HORIZONTAL)
        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        scroll.add_with_viewport(self.navegador)
        base_panel.pack2(scroll, resize=True, shrink=True)

        self.add(base_panel)

        self.show_all()

        #self.navegador.connect("title-changed", self.set_titulo)
        #self.navegador.connect("load-finished", self.listo)
        #self.navegador.connect("load-started", self.cargando)
        #self.navegador.connect("load-progress-changed", self.set_progreso)
        #self.navegador.connect("load-error", self.error)
        #self.navegador.connect("download-requested", self.descargar_archivo, gtk.Window())
        #self.navegador.connect("create-web-view", self.ventana_con_webview)
        #self.navegador.connect("populate-popup", self.menu_webview)
        #self.navegador.connect("status-bar-text-changed", self.set_text_status)
        #self.navegador.connect("icon-loaded", self.favicon)

        #self.navegador.open('https://www.google.com/')
        #self.navegador.set_zoom_level(1.0)
        #print self.navegador.get_view_mode()
        #self.navegador.set_view_mode(WebKit.WebViewViewMode.FLOATING)

    def load(self, url):
        self.navegador.load(url)

    def anterior(self, widget):
        self.navegador.go_back()

    def siguiente(self, widget):
        self.navegador.go_forward()

    def recargar(self, widget):
        self.navegador.reload()

    def detener(self, widget):
        self.navegador.stop_loading()

    def acercar(self, widget):
        pass

    def alejar(self, widget):
        pass

    def embed_event(self, widget):
        print "JAMediaWeb => OK"

    def emit_salir(self, widget):
        self.emit('salir')
Example #14
0
class Ventana(gtk.Window):

    def __init__(self):

        gtk.Window.__init__(self)

        self.set_title("JAMediaExplorer")
        self.set_icon_from_file(os.path.join(ICONOS, "JAMediaExplorer.svg"))
        self.modify_bg(0, gtk.gdk.Color(65000, 65000, 65000))
        self.set_resizable(True)
        self.set_size_request(640, 480)
        self.set_position(gtk.WIN_POS_CENTER)
        self.set_border_width(3)

        vbox = gtk.VBox()

        self.toolbar = Toolbar()
        self.toolbar_accion = ToolbarAccion()
        self.toolbar_salir = ToolbarSalir()
        self.navegador = Navegador()
        self.toolbar_try = ToolbarTry()

        vbox.pack_start(self.toolbar, False, False, 0)
        vbox.pack_start(self.toolbar_accion, False, False, 0)
        vbox.pack_start(self.toolbar_salir, False, False, 0)
        vbox.pack_start(self.navegador, True, True, 0)
        vbox.pack_end(self.toolbar_try, False, False, 0)

        self.add(vbox)
        self.show_all()
        self.realize()

        self.toolbar_accion.hide()
        self.toolbar_salir.hide()

        self.toolbar.connect('salir', self.__confirmar_salir)
        self.toolbar.connect('accion_ver', self.__set_accion)
        self.toolbar_accion.connect('borrar', self.__ejecutar_borrar)
        self.toolbar_salir.connect('salir', self.__salir)
        self.connect("delete-event", self.__salir)

        self.navegador.connect('info', self.__get_info)
        self.navegador.connect('borrar', self.__set_borrar)

    def __set_accion(self, widget, accion, valor):
        """
        Cuando se hace click en ver ocultos del menu.
        """
        self.get_toplevel().set_sensitive(False)
        self.navegador.notebookdirectorios.recargar(valor)
        self.get_toplevel().set_sensitive(True)

    def __ejecutar_borrar(self, widget, direccion, modelo, iter_):
        """
        Ejecuta borrar un archivo o directorio.
        """
        self.get_toplevel().set_sensitive(False)
        if borrar(direccion):
            modelo.remove(iter_)
            self.navegador.notebookdirectorios.copiando = False
            self.navegador.notebookdirectorios.cortando = False
        self.get_toplevel().set_sensitive(True)

    def __set_borrar(self, widget, direccion, modelo, iter_):
        """
        Setea borrar un archivo en toolbaraccion.
        """
        self.toolbar_salir.hide()
        self.toolbar_accion.set_accion(direccion, modelo, iter_)

    def __confirmar_salir(self, widget=None, senial=None):
        self.toolbar_accion.hide()
        self.toolbar_salir.run("JAMediaExplorer")

    def __ocultar(self, objeto):
        if objeto.get_visible():
            objeto.hide()

    def __mostrar(self, objeto):
        if not objeto.get_visible():
            objeto.show()

    def __get_items(self, directorio, tipo):
        if not os.path.exists(directorio) \
            or not os.path.isdir(directorio):
                return []
        items = []
        for archivo in os.listdir(directorio):
            path = os.path.join(directorio, archivo)
            descripcion = describe_archivo(path)
            if tipo in descripcion and not 'iso' in descripcion:
                items.append([archivo, path])
        return items

    def __get_info(self, widget, path):
        """
        Recibe el path seleccionado en la estructura
        de directorios, obtiene información sobre el mismo
        y la pasa a infowidget para ser mostrada.
        """
        if not path:
            return
        if not os.path.exists(path):
            return

        self.toolbar_try.label.set_text(path)
        # FIXME: Falla si se movió y no se actualiza
        unidad, directorio, archivo, enlace = describe_uri(path)
        lectura, escritura, ejecucion = describe_acceso_uri(path)

        texto = ""
        typeinfo = ""

        if enlace:
            texto = "Enlace.\n"
        else:
            if directorio:
                texto = "Directorio.\n"

            elif archivo:
                texto = "Archivo.\n"
                texto += "Tipo:\n"

                for dato in describe_archivo(path).split(";"):
                    texto += "\t%s\n" % (dato.strip())
                    typeinfo += dato

                texto += "Tamaño:\n"
                texto += "\t%s bytes\n" % (get_tamanio(path))

        texto += "Permisos: \n"
        texto += "\tLactura: %s\n" % (lectura)
        texto += "\tEscritura: %s\n" % (escritura)
        texto += "\tEjecución: %s\n" % (ejecucion)

        self.navegador.infowidget.set_info(texto, typeinfo)

    def __salir(self, widget=None, senial=None):
        notebook = self.navegador.notebookdirectorios
        paginas = notebook.get_n_pages()
        pags = notebook.get_children()
        for indice in range(paginas):
            pags[indice].get_child().new_handle(False)
        sys.exit(0)
        gtk.main_quit()
Example #15
0
class ConexaoUff(object):
    
    def __init__(self):        

        self.DEFAULT_URL = 'https://sistemas.uff.br/conexaouff'

        self.__navegador = Navegador()
        self.__navegador.setUrl(self.DEFAULT_URL)
        self.__navegador.login()

        self.disciplinas = list()
        self.arquivos = list()

    def baixarArquivos(self):
        self.getArquivosDeCadaGrupo()

        BaixarArquivos.baixar(self.arquivos, self.__navegador)

    def getArquivosDeCadaGrupo(self):
        self.getDisciplinas()
        
        for disciplina in self.disciplinas:
            self.__navegador.setUrl(self.DEFAULT_URL + '/grupos/%s/arquivos' % (disciplina.codigo))
            
            conteudo = self.__navegador.getContent()
            arquivos = GerarArquivos.gerar(disciplina, conteudo)
            self.arquivos.extend(arquivos)

        return self.arquivos

    def getDisciplinas(self):
        self.__navegador.setUrl(self.DEFAULT_URL)
        
        conteudo = self.__navegador.getContent()
                
        self.disciplinas = GerarDisciplinas.gerar(conteudo)

        return self.disciplinas

    def close(self):
        self.__navegador.exit()
class Ventana(gtk.Window):
    def __init__(self):

        gtk.Window.__init__(self)

        self.set_title("JAMediaExplorer")
        self.set_icon_from_file(os.path.join(ICONOS, "JAMediaExplorer.svg"))
        self.modify_bg(0, gtk.gdk.Color(65000, 65000, 65000))
        self.set_resizable(True)
        self.set_size_request(640, 480)
        self.set_position(gtk.WIN_POS_CENTER)
        self.set_border_width(3)

        vbox = gtk.VBox()

        self.toolbar = Toolbar()
        self.toolbar_accion = ToolbarAccion()
        self.toolbar_salir = ToolbarSalir()
        self.navegador = Navegador()
        self.toolbar_try = ToolbarTry()

        vbox.pack_start(self.toolbar, False, False, 0)
        vbox.pack_start(self.toolbar_accion, False, False, 0)
        vbox.pack_start(self.toolbar_salir, False, False, 0)
        vbox.pack_start(self.navegador, True, True, 0)
        vbox.pack_end(self.toolbar_try, False, False, 0)

        self.add(vbox)
        self.show_all()
        self.realize()

        self.toolbar_accion.hide()
        self.toolbar_salir.hide()

        self.toolbar.connect('salir', self.__confirmar_salir)
        self.toolbar.connect('accion_ver', self.__set_accion)
        self.toolbar_accion.connect('borrar', self.__ejecutar_borrar)
        self.toolbar_salir.connect('salir', self.__salir)
        self.connect("delete-event", self.__salir)

        self.navegador.connect('info', self.__get_info)
        self.navegador.connect('borrar', self.__set_borrar)

    def __set_accion(self, widget, accion, valor):
        """
        Cuando se hace click en ver ocultos del menu.
        """
        self.get_toplevel().set_sensitive(False)
        self.navegador.notebookdirectorios.recargar(valor)
        self.get_toplevel().set_sensitive(True)

    def __ejecutar_borrar(self, widget, direccion, modelo, iter_):
        """
        Ejecuta borrar un archivo o directorio.
        """
        self.get_toplevel().set_sensitive(False)
        if borrar(direccion):
            modelo.remove(iter_)
            self.navegador.notebookdirectorios.copiando = False
            self.navegador.notebookdirectorios.cortando = False
        self.get_toplevel().set_sensitive(True)

    def __set_borrar(self, widget, direccion, modelo, iter_):
        """
        Setea borrar un archivo en toolbaraccion.
        """
        self.toolbar_salir.hide()
        self.toolbar_accion.set_accion(direccion, modelo, iter_)

    def __confirmar_salir(self, widget=None, senial=None):
        self.toolbar_accion.hide()
        self.toolbar_salir.run("JAMediaExplorer")

    def __ocultar(self, objeto):
        if objeto.get_visible():
            objeto.hide()

    def __mostrar(self, objeto):
        if not objeto.get_visible():
            objeto.show()

    def __get_items(self, directorio, tipo):
        if not os.path.exists(directorio) \
            or not os.path.isdir(directorio):
            return []
        items = []
        for archivo in os.listdir(directorio):
            path = os.path.join(directorio, archivo)
            descripcion = describe_archivo(path)
            if tipo in descripcion and not 'iso' in descripcion:
                items.append([archivo, path])
        return items

    def __get_info(self, widget, path):
        """
        Recibe el path seleccionado en la estructura
        de directorios, obtiene información sobre el mismo
        y la pasa a infowidget para ser mostrada.
        """
        if not path:
            return
        if not os.path.exists(path):
            return

        self.toolbar_try.label.set_text(path)
        # FIXME: Falla si se movió y no se actualiza
        unidad, directorio, archivo, enlace = describe_uri(path)
        lectura, escritura, ejecucion = describe_acceso_uri(path)

        texto = ""
        typeinfo = ""

        if enlace:
            texto = "Enlace.\n"
        else:
            if directorio:
                texto = "Directorio.\n"

            elif archivo:
                texto = "Archivo.\n"
                texto += "Tipo:\n"

                for dato in describe_archivo(path).split(";"):
                    texto += "\t%s\n" % (dato.strip())
                    typeinfo += dato

                texto += "Tamaño:\n"
                texto += "\t%s bytes\n" % (get_tamanio(path))

        texto += "Permisos: \n"
        texto += "\tLactura: %s\n" % (lectura)
        texto += "\tEscritura: %s\n" % (escritura)
        texto += "\tEjecución: %s\n" % (ejecucion)

        self.navegador.infowidget.set_info(texto, typeinfo)

    def __salir(self, widget=None, senial=None):
        notebook = self.navegador.notebookdirectorios
        paginas = notebook.get_n_pages()
        pags = notebook.get_children()
        for indice in range(paginas):
            pags[indice].get_child().new_handle(False)
        sys.exit(0)
        gtk.main_quit()
Example #17
0
class Domo:

    __navegador = None
    __sensorDeObjetos = None
    __testigoLuminoso = None
    __testigoSonoro = None
    __config = None
    __windowName = "Visor de Centrado"
    __domoMostrarMovimiento = False
    """ Ventana Eje  (min,max) """
    __ventanaX = None
    __ventanY = None
    """ Constructor """
    def __init__(self, config):
        self.__config = config
        self.__navegador = Navegador(self.__config)
        self.__sensorDeObjetos = SensorDeObjetos(
            config.DomoPatronAReconocer, config.DomoCamaraId,
            config.DomoMostrarEnVentanaReconocimiento,
            config.DomoFotogramasXCaptura)
        self.__testigoLuminoso = Led()
        self.__testigoSonoro = Buzzer()
        if self.__config.DomoMostrarEnVentanaCentrado:
            cv.NamedWindow(self.__windowName, 1)
        self.__debugMode = self.__config.DomoDebugMode

    """ Destructor """

    def __del__(self):
        if self.__config.DomoMostrarEnVentanaCentrado:
            cv.DestroyWindow(self.__windowName)

    """ Calcula las coordenadas de las ventanas una unica vez de acuerdo al tamano de la  imagen """

    def __calcularVentana(self):
        if self.__ventanaX == None and self.__ventanY == None:
            imgSize = self.__sensorDeObjetos.getImageSize()
            imgSizeX = imgSize[0]
            imgSizeY = imgSize[1]
            tmpPrincipio = int(
                (imgSizeX - self.__config.DomoVentanaHorizontal) / 2)
            tmpFin = imgSizeX - tmpPrincipio
            self.__ventanaX = (tmpPrincipio, tmpFin)
            tmpPrincipio = int(
                (imgSizeY - self.__config.DomoVentanaVertical) / 2)
            tmpFin = imgSizeY - tmpPrincipio
            self.__ventanaY = (tmpPrincipio, tmpFin)

    """ Posiciona el Domo """

    def posicionar(self):
        self.__sensorDeObjetos.capturar()
        self.__calcularVentana()

        if self.__sensorDeObjetos.haveObjects():
            self.__testigoLuminoso.encender()
            if self.__config.DomoMover:
                self.__posicionar()
        else:
            self.__testigoLuminoso.apagar()

    """ Calcula la posicion """

    def __posicionar(self):
        coordenadas = self.__sensorDeObjetos.getObjectPosition()
        """ ((x, y, w, h), n) """
        x = coordenadas[0]
        y = coordenadas[1]
        w = coordenadas[2]
        h = coordenadas[3]
        n = coordenadas[4]
        cx = int(x + (w / 2))
        cy = int(y + (h / 2))

        mov = self.__calcularMovimientoDomo(x, y, w, h, n, cx, cy)
        movX = mov[0]
        movY = mov[1]
        movZ = mov[2]

        if self.__config.DomoMostrarEnVentanaCentrado:
            self.__mostrarCentradoEnVentana(cx, cy, movX, movY)

        self.__realizarMovimientos(movX, movY, movZ)

    """ Muestra una imagen con la 'Ventana' para la imagen """

    def __mostrarCentradoEnVentana(self, cx, cy, movX, movY):
        tmpImage = self.__sensorDeObjetos.getImage()

        cv.Circle(tmpImage, (cx, cy), 3, cv.RGB(255, 0, 0))
        cv.Line(tmpImage, (self.__ventanaX[0], 0),
                (self.__ventanaX[0], tmpImage.height), cv.RGB(255, 0, 0))
        cv.Line(tmpImage, (self.__ventanaX[1], 0),
                (self.__ventanaX[1], tmpImage.height), cv.RGB(255, 0, 0))
        cv.Line(tmpImage, (0, self.__ventanaY[0]),
                (tmpImage.width, self.__ventanaY[0]), cv.RGB(255, 0, 0))
        cv.Line(tmpImage, (0, self.__ventanaY[1]),
                (tmpImage.width, self.__ventanaY[1]), cv.RGB(255, 0, 0))

        imgCenterX = int(tmpImage.width / 2)
        imgCenterY = int(tmpImage.height / 2)
        cv.Circle(tmpImage, (imgCenterX, imgCenterY), 3, cv.RGB(0, 0, 255))

        if self.__debugMode:
            print movX, movY

        cv.Line(tmpImage, (imgCenterX, imgCenterY),
                (imgCenterX +
                 (movX * self.__config.DomoPixelesPorMovimientoDebugLineX),
                 imgCenterY), cv.RGB(0, 0, 255))
        cv.Line(tmpImage, (imgCenterX, imgCenterY),
                (imgCenterX, imgCenterY +
                 (movY * self.__config.DomoPixelesPorMovimientoDebugLineX)),
                cv.RGB(0, 0, 255))
        """cv.SaveImage("ImagenCentrado.jpg", tmpImage)"""
        cv.ShowImage(self.__windowName, tmpImage)
        return cv.WaitKey(10) <= 0

    """ Calcula el moviemiento del domo """

    def __calcularMovimientoDomo(self, x, y, w, h, n, cx, cy):
        return (self.__calcularCantidadMoviemientoEje(self.__ventanaX, cx),
                self.__calcularCantidadMoviemientoEje(self.__ventanaY, cy),
                self.__calcularCantidadMoviemientoDistancia(w))

    """ Realiza el moviemiento del domo """

    def __realizarMovimientos(self, movX, movY, movZ):
        self.__navegador.mover(movX, movY, movZ)

    """ Devuelve la cantidad de movimientos que hay que realizar para centrar el Objeto """

    def __calcularCantidadMoviemientoEje(self, ventana, centroFigura):

        centroFronteraPrincipio = ventana[0]
        centroFronteraFin = ventana[1]

        if centroFigura < centroFronteraPrincipio:
            return self.__pixelesAMovimiento(centroFigura -
                                             centroFronteraPrincipio)
        elif centroFigura > centroFronteraFin:
            return self.__pixelesAMovimiento(centroFigura - centroFronteraFin)
        else:
            return 0

    """ Devuelve la cantidad de movimientos que hay que realizar para centrar el Objeto en Z """

    def __calcularCantidadMoviemientoDistancia(self, width):

        minimo = self.__config.DomoVentanaDistanciaMinima
        maximo = self.__config.DomoVentanaDistanciaMaxima

        if width < minimo:
            return minimo - width
        elif width > maximo:
            return maximo - width
        else:
            return 0

    """ Devuelve la cantidad de movimientos que implica la cantidad de pixeles pasada """

    def __pixelesAMovimiento(self, pixeles):
        return int(round(pixeles / self.__config.DomoPixelesPorMovimiento))
Example #18
0
class JAMediaWeb(Gtk.Plug):

    __gsignals__ = {
    "salir":(GObject.SIGNAL_RUN_FIRST,
        GObject.TYPE_NONE, [])}

    def __init__(self):
        """
        JAMediaWeb: Gtk.Plug para embeber en otra aplicacion.
        """

        Gtk.Plug.__init__(self, 0L)

        self.navegador = None
        self.show_all()
        self.connect("embedded", self.embed_event)

    def setup_init(self):
        self.navegador = Navegador()
        base_panel = Gtk.Paned(orientation = Gtk.Orientation.HORIZONTAL)
        scroll = Gtk.ScrolledWindow()
        scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
        scroll.add_with_viewport(self.navegador)
        base_panel.pack2(scroll, resize = True, shrink = True)

        self.add(base_panel)

        self.show_all()

        #self.navegador.connect("title-changed", self.set_titulo)
        #self.navegador.connect("load-finished", self.listo)
        #self.navegador.connect("load-started", self.cargando)
        #self.navegador.connect("load-progress-changed", self.set_progreso)
        #self.navegador.connect("load-error", self.error)
        #self.navegador.connect("download-requested", self.descargar_archivo, gtk.Window())
        #self.navegador.connect("create-web-view", self.ventana_con_webview)
        #self.navegador.connect("populate-popup", self.menu_webview)
        #self.navegador.connect("status-bar-text-changed", self.set_text_status)
        #self.navegador.connect("icon-loaded", self.favicon)

        #self.navegador.open('https://www.google.com/')
        #self.navegador.set_zoom_level(1.0)
        #print self.navegador.get_view_mode()
        #self.navegador.set_view_mode(WebKit.WebViewViewMode.FLOATING)

    def load(self, url):
        self.navegador.load(url)

    def anterior(self, widget):
        self.navegador.go_back()

    def siguiente(self, widget):
        self.navegador.go_forward()

    def recargar(self, widget):
        self.navegador.reload()

    def detener(self, widget):
        self.navegador.stop_loading()

    def acercar(self, widget):
        pass

    def alejar(self, widget):
        pass

    def embed_event(self, widget):
        print "JAMediaWeb => OK"

    def emit_salir(self, widget):
        self.emit('salir')