class JAMediaLector(Gtk.Plug): """ JAMediaLector: Lector pdf y de archivos de texto. Implementado sobre: python 2.7.3 y Gtk 3 Es un Gtk.Plug para embeber en cualquier contenedor dentro de otra aplicacion. Para ello, es necesario crear en la aplicacion donde será enbebido JAMediaLector, un socket: import JAMediaLector from JAMediaLector.JAMediaLector import JAMediaLector self.socket = Gtk.Socket() self.add(self.socket) self.jamedialector = JAMediaLector() socket.add_id(self.jamedialector.get_id() y luego proceder de la siguiente forma: GLib.idle_add(self.setup_init) def setup_init(self): self.jamedialector.setup_init() # self.jamediaplayer.pack_standar() # Esta última linea no debe ir cuando se embebe NOTA: Tambien se puede ejecutar JAMediaLector directamente mediante python JAMediaLector.py """ __gsignals__ = { "salir":(GObject.SIGNAL_RUN_FIRST, GObject.TYPE_NONE, [])} def __init__(self): """ JAMediaLector: Gtk.Plug para embeber en otra aplicación. """ Gtk.Plug.__init__(self, 0L) self.toolbar_box = None self.toolbar = None self.toolbar_config = None self.toolballector = None self.toolbartray = None self.visor = None self.previewcontainer = None self.toolbarpaginas = None self.textview = None self.toolbar_salir = None self.controlespdf = None self.controlestexto = None self.controles_dinamicos = None self.documento = None self.npaginas = None self.indexpaginaactiva = None self.pagina = None self.show_all() self.connect("embedded", self.embed_event) def setup_init(self): """ Se crea la interfaz grafica, se setea todo y se empaqueta todo. """ ### Contenedor secundario para toda la interfaz. basebox = Gtk.Box(orientation = Gtk.Orientation.VERTICAL) ### Contenedor para todas las toolbars. self.toolbar_box = Gtk.Box(orientation = Gtk.Orientation.VERTICAL) ### Panel para lector y barra de navegación de páginas. hpanel = Gtk.HPaned() self.toolbar = Toolbar() self.toolbar_salir = ToolbarSalir() self.toolbar_config = ToolbarConfig() self.toolbarlector = ToolbarLector() self.toolbartry = ToolbarTry() ### Empaquetado de las tres toolbars superiores de la aplicacion. self.toolbar_box.pack_start(self.toolbar, False, False, 0) self.toolbar_box.pack_start(self.toolbar_salir, False, False, 0) self.toolbar_box.pack_start(self.toolbar_config, False, False, 0) self.visor = DrawingLector() self.previewcontainer = PreviewContainer() self.toolbarpaginas = ToolbarPaginas() self.textview = TextView() # Izquierda vbox = Gtk.Box(orientation = Gtk.Orientation.VERTICAL) scroll = Gtk.ScrolledWindow() scroll.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) scroll.add_with_viewport(self.visor) vbox.pack_start(self.toolbarlector, False, False, 0) vbox.pack_start(scroll, True, True, 0) self.controlespdf = [self.toolbarlector, scroll] scroll = Gtk.ScrolledWindow() scroll.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) scroll.add_with_viewport(self.textview) vbox.pack_start(scroll, True, True, 0) self.controlestexto = [scroll] hpanel.pack1(vbox, resize = True, shrink = True) ### Derecha self.derecha_vbox = Gtk.Box(orientation = Gtk.Orientation.VERTICAL) scroll = Gtk.ScrolledWindow() scroll.set_policy( Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) scroll.add_with_viewport(self.previewcontainer) self.derecha_vbox.pack_start(self.toolbarpaginas, False, False, 0) self.derecha_vbox.pack_start(scroll, True, True, 0) self.controlespdf.append(self.derecha_vbox) hpanel.pack2(self.derecha_vbox, resize = False, shrink = False) basebox.pack_start(self.toolbar_box, False, False, 0) basebox.pack_start(hpanel, True, True, 0) basebox.pack_start(self.toolbartry, False, False, 0) self.controles_dinamicos = [ self.toolbar_box, self.derecha_vbox, self.toolbartry] self.add(basebox) self.show_all() self.toolbar_salir.hide() self.toolbar.abrir.hide() # Solo cuando no esta embebido self.toolbar_config.hide() self.toolbarlector.connect('original', self.visor.original) self.toolbarlector.connect('alejar', self.visor.alejar) self.toolbarlector.connect('acercar', self.visor.acercar) #self.toolbarlector.connect('rotar_izquierda', self.visor.acercar) #self.toolbarlector.connect('rotar_derecha', self.visor.acercar) self.toolbarpaginas.connect('activar', self.activar) self.previewcontainer.connect('nueva_seleccion', self.nueva_pagina) self.visor.connect("button_press_event", self.clicks_en_pantalla) self.toolbar.connect('abrir', self.show_filechooser) self.toolbar.connect('config', self.mostrar_config) self.toolbar.connect('salir', self.confirmar_salir) self.toolbar_salir.connect('salir', self.emit_salir) map(self.ocultar, self.controlestexto) map(self.ocultar, self.controlespdf) def pack_standar(self): """ Para empaquetar el botón abrir. """ self.toolbar.abrir.show() def mostrar_config(self, widget): """ Muestra u oculta las opciones de configuracion (toolbar_config). """ map(self.ocultar, [self.toolbar_salir]) if self.toolbar_config.get_visible(): self.toolbar_config.hide() else: self.toolbar_config.show_all() def clicks_en_pantalla(self, widget, event): """ Hace fullscreen y unfullscreen sobre la ventana principal cuando el usuario hace doble click en el visor. """ if event.type.value_name == "GDK_2BUTTON_PRESS": ventana = self.get_toplevel() screen = ventana.get_screen() w,h = ventana.get_size() ww, hh = (screen.get_width(), screen.get_height()) if ww == w and hh == h: ventana.unfullscreen() else: ventana.fullscreen() def do_motion_notify_event(self, event): """ Cuando se mueve el mouse sobre la ventana. """ if self.toolbar_config.ocultar_controles: x, y = (int(event.x), int(event.y)) rect = self.get_allocation() xx, yy, ww, hh = (rect.x, rect.y, rect.width, rect.height) arriba = range(0, self.toolbar_box.get_allocation().height) derecha = range(ww - self.derecha_vbox.get_allocation().width, ww) if y in arriba or x in derecha: map(self.mostrar, self.controles_dinamicos) else: map(self.ocultar, self.controles_dinamicos) #map(self.ocultar, [self.toolbar_config, self.toolbar_salir]) else: map(self.mostrar, self.controles_dinamicos) def ocultar(self, objeto): """ Esta funcion es llamada desde self.ocultar_controles() """ if objeto.get_visible(): objeto.hide() def mostrar(self, objeto): """ Esta funcion es llamada desde self.ocultar_controles() """ if not objeto.get_visible(): objeto.show() def show_filechooser(self, widget): selector = Selector_de_Archivos(self) selector.connect('archivos-seleccionados', self.cargar_archivo) def cargar_archivo(self, widget, archivo): """ Recibe un archivo desde el filechooser para abrir en el lector. """ self.abrir( archivo) def limpiar(self): self.toolbartry.label.set_text("") self.documento = None self.previewcontainer.limpiar() self.load_pagina(None) self.textview.get_buffer().set_text("") map(self.ocultar, self.controlestexto) map(self.ocultar, self.controlespdf) def abrir(self, archivo): """ Abre un Archivo. """ descripcion = JAMF.describe_uri(archivo) if descripcion: if descripcion[2]: # Es un Archivo tipo = JAMF.describe_archivo(archivo) if 'pdf' in tipo: self.toolbartry.label.set_text(archivo) archivo = "file://%s" % (archivo) map(self.ocultar, self.controlestexto) map(self.mostrar, self.controlespdf) self.documento = Poppler.Document.new_from_file(archivo, None) self.npaginas = self.documento.get_n_pages() #thread = threading.Thread( target=self.llenar_preview ) #thread.start() self.previewcontainer.llenar(self.documento) elif 'text' in tipo: self.toolbartry.label.set_text(archivo) map(self.ocultar, self.controlespdf) map(self.mostrar, self.controlestexto) arch = open(archivo, "r") lineas = arch.readlines() arch.close() texto = "" for linea in lineas: texto += linea self.textview.get_buffer().set_text(texto) else: self.toolbartry.label.set_text("") self.documento = None self.previewcontainer.limpiar() self.load_pagina(None) self.textview.get_buffer().set_text("") #def llenar_preview(self): # """ Thread para cargar las páginas en preview. """ # self.previewcontainer.llenar(self.documento) def nueva_pagina(self, widget, indice): """ Cuando se selecciona una nueva pagina """ self.load_pagina(indice) def load_pagina(self, indice): """ Carga una página del Archivo pdf abierto actualmente. """ if indice != None: self.indexpaginaactiva = indice self.pagina = self.documento.get_page(self.indexpaginaactiva) self.visor.set_pagina(self.pagina) self.toolbarpaginas.set_pagina(self.indexpaginaactiva+1, self.npaginas) else: self.indexpaginaactiva = None self.pagina = None self.visor.set_pagina(None) self.toolbarpaginas.set_pagina(None, None) def activar(self, widget, senial): """ Cuando se pasa de pagina. """ if senial == 'atras': if self.indexpaginaactiva > 0: self.previewcontainer.seleccionar(self.indexpaginaactiva-1) else: self.previewcontainer.seleccionar(self.npaginas-1) elif senial == 'siguiente': if self.indexpaginaactiva < self.npaginas-1: self.previewcontainer.seleccionar(self.indexpaginaactiva+1) else: self.previewcontainer.seleccionar(0) def embed_event(self, widget): """ No hace nada por ahora. """ print "JAMediaLector => OK" def confirmar_salir(self, widget = None, senial = None): """ Recibe salir y lo pasa a la toolbar de confirmación. """ map(self.ocultar, [self.toolbar_config]) self.toolbar_salir.run("JAMediaLector") def emit_salir(self, widget = None, senial = None): """ Emite salir para que cuando esta embebida, la aplicacion decida que hacer, si salir, o cerrar solo JAMediaLector. """ self.emit('salir')
class Ventana(Gtk.Window): """ Ventana Principal de JAMexplorer. """ __gtype_name__ = 'JAMediaExplorer' def __init__(self): super(Ventana, self).__init__() self.set_title("JAMediaExplorer") self.set_icon_from_file( os.path.join(ICONOS, "JAMediaExplorer.svg")) self.set_resizable(True) self.set_size_request(640, 480) self.set_position(Gtk.WindowPosition.CENTER) self.set_border_width(3) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) self.toolbar = Toolbar() self.toolbar_accion = ToolbarAccion() self.toolbar_salir = ToolbarSalir() self.navegador = Navegador() self.toolbar_try = ToolbarTry() switchbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) switchbox.pack_start(self.navegador, True, True, 0) vbox.pack_start(self.toolbar, False, True, 0) vbox.pack_start(self.toolbar_accion, False, True, 0) vbox.pack_start(self.toolbar_salir, False, True, 0) vbox.pack_start(switchbox, True, True, 0) vbox.pack_start(self.toolbar_try, False, True, 0) self.add(vbox) #self.socketimagenes = Gtk.Socket() #self.socketimagenes.show() #switchbox.pack_start(self.socketimagenes, True, True, 0) #self.jamimagenes = JAMImagenes() #self.socketimagenes.add_id(self.jamimagenes.get_id()) #self.socketjamedia = Gtk.Socket() #self.socketjamedia.show() #switchbox.pack_start(self.socketjamedia, True, True, 0) #self.jamediaplayer = JAMediaPlayer() #self.socketjamedia.add_id(self.jamediaplayer.get_id()) #self.socketjamedialector = Gtk.Socket() #self.socketjamedialector.show() #switchbox.pack_start(self.socketjamedialector, True, True, 0) #self.jamedialector = JAMediaLector() #self.socketjamedialector.add_id(self.jamedialector.get_id()) #self.sockets = [ # self.socketimagenes, # self.socketjamedia, # self.socketjamedialector] self.objetos_no_visibles_en_switch = [ self.toolbar, self.toolbar_accion, self.toolbar_salir, self.navegador, self.toolbar_try] 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('cargar', self.switch) self.navegador.connect('borrar', self.__set_borrar) #self.jamimagenes.connect('salir', self.get_explorador) #self.jamediaplayer.connect('salir', self.get_explorador) #self.jamedialector.connect('salir', self.get_explorador) #GLib.idle_add(self.setup_init) #def setup_init(self): # self.jamediaplayer.setup_init() # self.jamedialector.setup_init() # map(self.ocultar, self.sockets) 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) from JAMediaObjects.JAMFileSystem import borrar 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): """ Recibe salir y lo pasa a la toolbar de confirmación. """ 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): from JAMediaObjects.JAMFileSystem import describe_archivo 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 from JAMediaObjects.JAMFileSystem import get_tamanio from JAMediaObjects.JAMFileSystem import describe_archivo from JAMediaObjects.JAMFileSystem import describe_uri from JAMediaObjects.JAMFileSystem import describe_acceso_uri 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() for indice in range(paginas): pags = notebook.get_children() pags[indice].get_child().new_handle(False) import sys sys.exit(0) Gtk.main_quit()
class JAMediaLector(Gtk.Plug): """ JAMediaLector: Lector pdf y de archivos de texto. Implementado sobre: python 2.7.3 y Gtk 3 Es un Gtk.Plug para embeber en cualquier contenedor dentro de otra aplicacion. Para ello, es necesario crear en la aplicacion donde será enbebido JAMediaLector, un socket: import JAMediaLector from JAMediaLector.JAMediaLector import JAMediaLector self.socket = Gtk.Socket() self.add(self.socket) self.jamedialector = JAMediaLector() socket.add_id(self.jamedialector.get_id() y luego proceder de la siguiente forma: GLib.idle_add(self.setup_init) def setup_init(self): self.jamedialector.setup_init() # self.jamediaplayer.pack_standar() # Esta última linea no debe ir cuando se embebe NOTA: Tambien se puede ejecutar JAMediaLector directamente mediante python JAMediaLector.py """ __gsignals__ = {"salir": (GObject.SIGNAL_RUN_FIRST, GObject.TYPE_NONE, [])} def __init__(self): """ JAMediaLector: Gtk.Plug para embeber en otra aplicación. """ Gtk.Plug.__init__(self, 0L) self.toolbar_box = None self.toolbar = None self.toolbar_config = None self.toolballector = None self.toolbartray = None self.visor = None self.previewcontainer = None self.toolbarpaginas = None self.textview = None self.toolbar_salir = None self.controlespdf = None self.controlestexto = None self.controles_dinamicos = None self.documento = None self.npaginas = None self.indexpaginaactiva = None self.pagina = None self.show_all() self.connect("embedded", self.embed_event) def setup_init(self): """ Se crea la interfaz grafica, se setea todo y se empaqueta todo. """ ### Contenedor secundario para toda la interfaz. basebox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) ### Contenedor para todas las toolbars. self.toolbar_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) ### Panel para lector y barra de navegación de páginas. hpanel = Gtk.HPaned() self.toolbar = Toolbar() self.toolbar_salir = ToolbarSalir() self.toolbar_config = ToolbarConfig() self.toolbarlector = ToolbarLector() self.toolbartry = ToolbarTry() ### Empaquetado de las tres toolbars superiores de la aplicacion. self.toolbar_box.pack_start(self.toolbar, False, False, 0) self.toolbar_box.pack_start(self.toolbar_salir, False, False, 0) self.toolbar_box.pack_start(self.toolbar_config, False, False, 0) self.visor = DrawingLector() self.previewcontainer = PreviewContainer() self.toolbarpaginas = ToolbarPaginas() self.textview = TextView() # Izquierda vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) scroll = Gtk.ScrolledWindow() scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) scroll.add_with_viewport(self.visor) vbox.pack_start(self.toolbarlector, False, False, 0) vbox.pack_start(scroll, True, True, 0) self.controlespdf = [self.toolbarlector, scroll] scroll = Gtk.ScrolledWindow() scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) scroll.add_with_viewport(self.textview) vbox.pack_start(scroll, True, True, 0) self.controlestexto = [scroll] hpanel.pack1(vbox, resize=True, shrink=True) ### Derecha self.derecha_vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) scroll = Gtk.ScrolledWindow() scroll.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) scroll.add_with_viewport(self.previewcontainer) self.derecha_vbox.pack_start(self.toolbarpaginas, False, False, 0) self.derecha_vbox.pack_start(scroll, True, True, 0) self.controlespdf.append(self.derecha_vbox) hpanel.pack2(self.derecha_vbox, resize=False, shrink=False) basebox.pack_start(self.toolbar_box, False, False, 0) basebox.pack_start(hpanel, True, True, 0) basebox.pack_start(self.toolbartry, False, False, 0) self.controles_dinamicos = [ self.toolbar_box, self.derecha_vbox, self.toolbartry ] self.add(basebox) self.show_all() self.toolbar_salir.hide() self.toolbar.abrir.hide() # Solo cuando no esta embebido self.toolbar_config.hide() self.toolbarlector.connect('original', self.visor.original) self.toolbarlector.connect('alejar', self.visor.alejar) self.toolbarlector.connect('acercar', self.visor.acercar) #self.toolbarlector.connect('rotar_izquierda', self.visor.acercar) #self.toolbarlector.connect('rotar_derecha', self.visor.acercar) self.toolbarpaginas.connect('activar', self.activar) self.previewcontainer.connect('nueva_seleccion', self.nueva_pagina) self.visor.connect("button_press_event", self.clicks_en_pantalla) self.toolbar.connect('abrir', self.show_filechooser) self.toolbar.connect('config', self.mostrar_config) self.toolbar.connect('salir', self.confirmar_salir) self.toolbar_salir.connect('salir', self.emit_salir) map(self.ocultar, self.controlestexto) map(self.ocultar, self.controlespdf) def pack_standar(self): """ Para empaquetar el botón abrir. """ self.toolbar.abrir.show() def mostrar_config(self, widget): """ Muestra u oculta las opciones de configuracion (toolbar_config). """ map(self.ocultar, [self.toolbar_salir]) if self.toolbar_config.get_visible(): self.toolbar_config.hide() else: self.toolbar_config.show_all() def clicks_en_pantalla(self, widget, event): """ Hace fullscreen y unfullscreen sobre la ventana principal cuando el usuario hace doble click en el visor. """ if event.type.value_name == "GDK_2BUTTON_PRESS": ventana = self.get_toplevel() screen = ventana.get_screen() w, h = ventana.get_size() ww, hh = (screen.get_width(), screen.get_height()) if ww == w and hh == h: ventana.unfullscreen() else: ventana.fullscreen() def do_motion_notify_event(self, event): """ Cuando se mueve el mouse sobre la ventana. """ if self.toolbar_config.ocultar_controles: x, y = (int(event.x), int(event.y)) rect = self.get_allocation() xx, yy, ww, hh = (rect.x, rect.y, rect.width, rect.height) arriba = range(0, self.toolbar_box.get_allocation().height) derecha = range(ww - self.derecha_vbox.get_allocation().width, ww) if y in arriba or x in derecha: map(self.mostrar, self.controles_dinamicos) else: map(self.ocultar, self.controles_dinamicos) #map(self.ocultar, [self.toolbar_config, self.toolbar_salir]) else: map(self.mostrar, self.controles_dinamicos) def ocultar(self, objeto): """ Esta funcion es llamada desde self.ocultar_controles() """ if objeto.get_visible(): objeto.hide() def mostrar(self, objeto): """ Esta funcion es llamada desde self.ocultar_controles() """ if not objeto.get_visible(): objeto.show() def show_filechooser(self, widget): selector = Selector_de_Archivos(self) selector.connect('archivos-seleccionados', self.cargar_archivo) def cargar_archivo(self, widget, archivo): """ Recibe un archivo desde el filechooser para abrir en el lector. """ self.abrir(archivo) def limpiar(self): self.toolbartry.label.set_text("") self.documento = None self.previewcontainer.limpiar() self.load_pagina(None) self.textview.get_buffer().set_text("") map(self.ocultar, self.controlestexto) map(self.ocultar, self.controlespdf) def abrir(self, archivo): """ Abre un Archivo. """ descripcion = JAMF.describe_uri(archivo) if descripcion: if descripcion[2]: # Es un Archivo tipo = JAMF.describe_archivo(archivo) if 'pdf' in tipo: self.toolbartry.label.set_text(archivo) archivo = "file://%s" % (archivo) map(self.ocultar, self.controlestexto) map(self.mostrar, self.controlespdf) self.documento = Poppler.Document.new_from_file( archivo, None) self.npaginas = self.documento.get_n_pages() #thread = threading.Thread( target=self.llenar_preview ) #thread.start() self.previewcontainer.llenar(self.documento) elif 'text' in tipo: self.toolbartry.label.set_text(archivo) map(self.ocultar, self.controlespdf) map(self.mostrar, self.controlestexto) arch = open(archivo, "r") lineas = arch.readlines() arch.close() texto = "" for linea in lineas: texto += linea self.textview.get_buffer().set_text(texto) else: self.toolbartry.label.set_text("") self.documento = None self.previewcontainer.limpiar() self.load_pagina(None) self.textview.get_buffer().set_text("") #def llenar_preview(self): # """ Thread para cargar las páginas en preview. """ # self.previewcontainer.llenar(self.documento) def nueva_pagina(self, widget, indice): """ Cuando se selecciona una nueva pagina """ self.load_pagina(indice) def load_pagina(self, indice): """ Carga una página del Archivo pdf abierto actualmente. """ if indice != None: self.indexpaginaactiva = indice self.pagina = self.documento.get_page(self.indexpaginaactiva) self.visor.set_pagina(self.pagina) self.toolbarpaginas.set_pagina(self.indexpaginaactiva + 1, self.npaginas) else: self.indexpaginaactiva = None self.pagina = None self.visor.set_pagina(None) self.toolbarpaginas.set_pagina(None, None) def activar(self, widget, senial): """ Cuando se pasa de pagina. """ if senial == 'atras': if self.indexpaginaactiva > 0: self.previewcontainer.seleccionar(self.indexpaginaactiva - 1) else: self.previewcontainer.seleccionar(self.npaginas - 1) elif senial == 'siguiente': if self.indexpaginaactiva < self.npaginas - 1: self.previewcontainer.seleccionar(self.indexpaginaactiva + 1) else: self.previewcontainer.seleccionar(0) def embed_event(self, widget): """ No hace nada por ahora. """ print "JAMediaLector => OK" def confirmar_salir(self, widget=None, senial=None): """ Recibe salir y lo pasa a la toolbar de confirmación. """ map(self.ocultar, [self.toolbar_config]) self.toolbar_salir.run("JAMediaLector") def emit_salir(self, widget=None, senial=None): """ Emite salir para que cuando esta embebida, la aplicacion decida que hacer, si salir, o cerrar solo JAMediaLector. """ self.emit('salir')