From e96388f52c260ade61b8fa56fe86d2c604ab556b Mon Sep 17 00:00:00 2001 From: Cristian Garcia Date: Thu, 13 Jun 2013 22:56:35 +0000 Subject: Arreglando una que otra cosa --- diff --git a/CristianEdit.py b/CristianEdit.py index 237ce8f..fb38491 100644 --- a/CristianEdit.py +++ b/CristianEdit.py @@ -66,7 +66,6 @@ class Ventana(Gtk.Window): self.cristianedit.setup_init(direcciones) self.connect('delete-event', self.salir) - self.connect('key-press-event', self.cristianedit.tecla) self.cristianedit.connect('cerrar', self.salir) def salir(self, *args): diff --git a/CristianEdit/CristianEdit.py b/CristianEdit/CristianEdit.py index 688ed03..06a5afc 100644 --- a/CristianEdit/CristianEdit.py +++ b/CristianEdit/CristianEdit.py @@ -35,6 +35,7 @@ from objetos import BarraInferior from objetos import DialogoCerrar from objetos import DialogoEstado from objetos import DialogoReemplazar +from objetos import DialogoReemplazarTexto from objetos import SelectordeFuente from objetos import Configuraciones from objetos import Teclado @@ -72,14 +73,6 @@ class CristianEdit(Gtk.Plug): self.show_all() - def tecla(self, widget, event): - """Saber si el usuario presionó una tecla.""" - - tecla = Gdk.keyval_name(event.keyval) - - if tecla == 'Escape': - self.emit('cerrar') - def setup_init(self, direcciones): """Se crea la interfaz grafica, se setea y empaqueta todo.""" @@ -91,6 +84,7 @@ class CristianEdit(Gtk.Plug): hbox_toolbar = Gtk.HBox() self.toolbar = Barra() self.notebook = Notebook(self) + self.dialogo = DialogoReemplazarTexto(self.get_toplevel()) self.vbox.pack_start(self.menu, False, False, 0) self.vbox.pack_start(hbox_toolbar, False, False, 0) @@ -115,6 +109,7 @@ class CristianEdit(Gtk.Plug): self.toolbar.connect('buscar', self.buscar_texto) self.notebook.connect('boton-cerrar-clicked', self.cerrar_desde_boton) self.notebook.connect('boton-nuevo-clicked', self.pagina_nueva) + self.dialogo.connect('solicitar-buffer', self.setear_variable_buffer) self.add(self.vbox) self.show_all() @@ -217,9 +212,12 @@ class CristianEdit(Gtk.Plug): elif accion == 'Desplazar al final': self.notebook.desplazar_al_final() + elif accion == 'Reemplazar': + self.mostrar_dialogo_reemplazar() + elif accion == 'Acerca de': Creditos(self.get_toplevel()) - + def abrir(self, widget=None, direccion=None): """Abrir uno o varios archivo/s.""" @@ -559,6 +557,29 @@ class CristianEdit(Gtk.Plug): for view in self.views: view.modify_font(Pango.FontDescription(fuente)) + def mostrar_dialogo_reemplazar(self, widget=None): + """Muestra un diálogo para reemplzar texto""" + + if not self.dialogo.mostrado: + self.dialogo.mostrado = True + + texto_actual = '' + + buffer = self.get_buffer() + + if buffer.get_selection_bounds(): + inicio, fin = buffer.get_selection_bounds() + texto_actual = buffer.get_text(inicio, fin, 0) + + if len(texto_actual.splitlines()) > 1: + texto_actual = '' + + self.dialogo.set_text(texto_actual) + self.dialogo.show_all() + + else: + self.dialogo.set_focus(True) + def mostrar_dialogo_configuraciones(self, widget=None): """Abre un díalogo con configuraciones.""" @@ -626,6 +647,10 @@ class CristianEdit(Gtk.Plug): return self.buffers[pagina].get_text(start, end, 0) + def setear_variable_buffer(self, widget): + + widget.buffer = self.get_buffer() + def set_configuracion(self, diccionario): """Establece la configuración según datos de una lista""" diff --git a/CristianEdit/objetos.py b/CristianEdit/objetos.py index ad44555..fc84908 100644 --- a/CristianEdit/objetos.py +++ b/CristianEdit/objetos.py @@ -57,26 +57,33 @@ class Menu(Gtk.MenuBar): menu_archivo = Gtk.MenuItem('_Archivo') menu_recientes = Gtk.MenuItem('_Recientes') menu_editar = Gtk.MenuItem('_Editar') + menu_buscar = Gtk.MenuItem('_Buscar') menu_ayuda = Gtk.MenuItem('Ay_uda') - self.menus = [menu_archivo, menu_recientes, menu_editar, menu_ayuda] + self.menus = [ + menu_archivo, + menu_recientes, + menu_editar, + menu_ayuda, + menu_buscar] - menu_archivo.set_use_underline(True) - menu_recientes.set_use_underline(True) - menu_editar.set_use_underline(True) - menu_ayuda.set_use_underline(True) + for menu in self.menus: + menu.set_use_underline(True) self.add(menu_archivo) self.add(menu_editar) + self.add(menu_buscar) self.add(menu_ayuda) archivo = Gtk.Menu() self.menu_recientes = Gtk.Menu() editar = Gtk.Menu() + buscar = Gtk.Menu() ayuda = Gtk.Menu() menu_archivo.set_submenu(archivo) menu_editar.set_submenu(editar) + menu_buscar.set_submenu(buscar) menu_recientes.set_submenu(self.menu_recientes) menu_ayuda.set_submenu(ayuda) @@ -92,13 +99,17 @@ class Menu(Gtk.MenuBar): self.menu_item('Deshacer', self.emit_accion, editar, 'Z') self.menu_item('Rehacer', self.emit_accion, editar, 'R') + editar.append(Gtk.SeparatorMenuItem()) self.menu_item('Insertar fecha y hora', self.emit_accion, editar) + editar.append(Gtk.SeparatorMenuItem()) self.menu_item('Estado del archivo', self.emit_accion, editar, 'E') + editar.append(Gtk.SeparatorMenuItem()) self.menu_item('Mostrar teclado...', self.emit_accion, editar, 'T') + self.menu_item('Reemplazar', self.emit_accion, buscar, 'H') #ajuste = Gtk.Adjustment(2, 0, 100, 1, 1, 0) #escala = Gtk.HScale() #escala.set_adjustment(ajuste) @@ -684,6 +695,78 @@ class ComboLenguajes(Gtk.ComboBoxText): return self.lenguaje_manager +class DialogoReemplazarTexto(Gtk.Dialog): + + __gsignals__ = { + 'solicitar-buffer': (GObject.SIGNAL_RUN_FIRST, + None, []) + } + + def __init__(self, padre): + + Gtk.Dialog.__init__(self) + + self.set_title('Reemplazar') + self.set_border_width(10) + self.set_transient_for(padre) + + self.buffer = False + self.mostrado = False + + self.entrada_buscar = Gtk.Entry() + self.entrada_reemplazar = Gtk.Entry() + + tabla = Gtk.Table(2, 2, False) + + tabla.attach(Gtk.Label('Texto a buscar:'), 0, 1, 0, 1) + tabla.attach(self.entrada_buscar, 1, 2, 0, 1) + tabla.attach(Gtk.Label('Texto con el que se reemplazará:'), 0, 1, 1, 2) + tabla.attach(self.entrada_reemplazar, 1, 2, 1, 2) + + hbox = Gtk.HBox() + + boton_ok = Gtk.Button('Reemplazar') + boton_cerrar = Gtk.Button(None, Gtk.STOCK_CLOSE) + + boton_ok.connect('clicked', self.reemplazar) + boton_cerrar.connect('clicked', self.cerrar) + + hbox.pack_start(boton_ok, False, False, 2) + hbox.pack_start(boton_cerrar, False, False, 2) + + self.vbox.add(tabla) + self.vbox.pack_end(hbox, False, False, 10) + + self.vbox.remove(self.get_children()[0].get_children()[-1]) + + def reemplazar(self, widget): + """Reemplaza el texto.""" + + self.emit('solicitar-buffer') + + inicio, fin = self.buffer.get_bounds() + + texto_buscado = self.entrada_buscar.get_text() + texto_solicitado = self.entrada_reemplazar.get_text() + texto_existente = self.buffer.get_text(inicio, fin, 0) + + if texto_buscado and texto_buscado in texto_existente: + texto = texto_existente.replace(texto_buscado, texto_solicitado) + + self.buffer.set_text(texto) + + def set_text(self, texto): + """Setea el texto de la entrada de texto a buscar.""" + + self.entrada_buscar.set_text(texto) + + def cerrar(self, widget): + """Oculta el widget del que ereda la clase.""" + + self.hide() + self.mostrado = False + + class DialogoReemplazar(Gtk.MessageDialog): def __init__(self, direccion, buffer, padre, texto): diff --git a/CristianEdit/objetos.pyc b/CristianEdit/objetos.pyc index fb94f10..07ec7db 100644 --- a/CristianEdit/objetos.pyc +++ b/CristianEdit/objetos.pyc Binary files differ -- cgit v0.9.1