Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Garcia <cristian99garcia@gmail.com>2013-06-13 22:56:35 (GMT)
committer Cristian Garcia <cristian99garcia@gmail.com>2013-06-13 22:56:35 (GMT)
commite96388f52c260ade61b8fa56fe86d2c604ab556b (patch)
tree20c1586f311a8c1666343d5a06459e0314604726
parentc8225bfa7ce133a9a29206d280f5102a6d0a86a1 (diff)
Arreglando una que otra cosa
-rw-r--r--CristianEdit.py1
-rw-r--r--CristianEdit/CristianEdit.py43
-rw-r--r--CristianEdit/objetos.py93
-rw-r--r--CristianEdit/objetos.pycbin42752 -> 45122 bytes
4 files changed, 122 insertions, 15 deletions
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