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()
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, 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
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)
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
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 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)
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')
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))
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')
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()
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 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))
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')