Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian García <cristian99garcia@gmail.com>2013-07-10 18:00:42 (GMT)
committer Cristian García <cristian99garcia@gmail.com>2013-07-10 18:00:42 (GMT)
commit4525db2225bef6dd1cf9877b6d207d2e8fd87b4a (patch)
tree25be0f09f826102db7c982bee37b3dcb5e437a20
parent25ba2cd625f5ccbe676ab6e69b45158845eb5199 (diff)
Agregando para que los botones y menus sean sensibles o insensibles segun si su accion se puede realizar o no
-rw-r--r--CristianEdit/CristianEdit.py40
-rw-r--r--CristianEdit/objetos.py24
-rw-r--r--CristianEdit/objetos.pycbin45024 -> 45013 bytes
3 files changed, 46 insertions, 18 deletions
diff --git a/CristianEdit/CristianEdit.py b/CristianEdit/CristianEdit.py
index f0a8e94..bbb4cb5 100644
--- a/CristianEdit/CristianEdit.py
+++ b/CristianEdit/CristianEdit.py
@@ -93,7 +93,6 @@ class CristianEdit(Gtk.Plug):
self.vbox.pack_start(self.notebook, True, True, 0)
self.notebook.set_show_tabs(False)
- self.pagina_nueva()
self.menu.actualizar_recientes(self.configuraciones['recientes'])
numero = 0
@@ -110,10 +109,43 @@ 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.notebook.connect('switch-page', self.pre_actualizar_widgets)
self.dialogo.connect('solicitar-buffer', self.setear_variable_buffer)
+ self.pagina_nueva()
self.show_all()
+ def pre_actualizar_widgets(self, widget, vbox=None, pagina=None):
+
+ if vbox:
+ scrolled = vbox.get_children()[0]
+ view = scrolled.get_children()[0]
+
+ else:
+ view = self.get_view()
+
+ self.actualizar_widgets(view=view)
+
+ def actualizar_widgets(self, view=None):
+
+ if view == None:
+ view = self.get_view()
+
+ buffer = view.get_buffer()
+ menus = self.menu.menu_items
+ botones = self.toolbar.botones
+
+ inicio, fin = buffer.get_bounds()
+ texto = buffer.get_text(inicio, fin, 0)
+
+ menus['Guardar'].set_sensitive(buffer.get_modified())
+ menus['Deshacer'].set_sensitive(not buffer.can_undo())
+ menus['Rehacer'].set_sensitive(not buffer.can_redo())
+ menus['Reemplazar'].set_sensitive(bool(texto))
+
+ botones['Deshacer'].set_sensitive(not buffer.can_undo())
+ botones['Rehacer'].set_sensitive(not buffer.can_redo())
+
def mostrar_teclado(self, mostrar):
"""Muestra un teclado en pantalla."""
@@ -329,6 +361,7 @@ class CristianEdit(Gtk.Plug):
pagina = self.notebook.get_current_page()
label = self.etiquetas[pagina]
+ buffer = self.get_buffer()
if self.lugares[pagina] == 'Sin dirección' and not direccion:
self.guardar_como()
@@ -343,7 +376,7 @@ class CristianEdit(Gtk.Plug):
label.set_text(direccion.split('/')[-1])
- self.buffers[pagina].set_modified(False)
+ buffer.set_modified(False)
texto = self.get_texto()
@@ -458,6 +491,9 @@ class CristianEdit(Gtk.Plug):
label = Gtk.Label('Sin título')
combo.connect('changed', self.combo_changed)
+ buffer.connect('changed', self.pre_actualizar_widgets)
+ buffer.connect('undo', self.pre_actualizar_widgets)
+ buffer.connect('redo', self.pre_actualizar_widgets)
buffer.connect('mark-set', self.actualizar_b_estado)
buffer.connect('modified-changed', self.changed_modificado)
view.connect('cambio-de-busqueda', self.color_changed)
diff --git a/CristianEdit/objetos.py b/CristianEdit/objetos.py
index d5597b2..18341c3 100644
--- a/CristianEdit/objetos.py
+++ b/CristianEdit/objetos.py
@@ -59,6 +59,7 @@ class Menu(Gtk.MenuBar):
menu_buscar = Gtk.MenuItem('_Buscar')
menu_ayuda = Gtk.MenuItem('Ay_uda')
+ self.menu_items = {}
self.menus = [
menu_archivo,
menu_recientes,
@@ -107,28 +108,14 @@ class Menu(Gtk.MenuBar):
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)
- #item = Gtk.MenuItem()
- #item.add(escala)
- #editar.append(item)
-
self.menu_item('Acerca de', self.emit_accion, ayuda)
- def menu_item(self, objeto, callback, menu, letra=None, devolver=None):
+ def menu_item(self, label, callback, menu, letra=None, devolver=None):
"""Crea los item para los menús"""
- item = Gtk.MenuItem()
+ item = Gtk.MenuItem(label)
menu.append(item)
- if str(type(objeto)) == "<type 'str'>":
- item.set_label(objeto)
-
- else:
- item.add(objeto)
-
if callback:
item.connect('activate', callback)
@@ -139,6 +126,8 @@ class Menu(Gtk.MenuBar):
if devolver:
return item
+ self.menu_items[label] = item
+
def abrir_reciente(self, widget):
"""Abre un archivo desde un menuitem."""
@@ -521,6 +510,8 @@ class Toolbar(Gtk.Toolbar):
self.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);
+ self.botones = {}
+
self.toolbutton(Gtk.STOCK_NEW, 'Nuevo')
self.separador()
@@ -561,6 +552,7 @@ class Toolbar(Gtk.Toolbar):
toolbutton.connect('clicked', self.emit_accion, tooltip)
self.add(toolbutton)
+ self.botones[tooltip] = toolbutton
def emit_accion(self, widget, accion):
"""Emite la señan 'accion' con la
diff --git a/CristianEdit/objetos.pyc b/CristianEdit/objetos.pyc
index 35f3b4d..6ab6e5b 100644
--- a/CristianEdit/objetos.pyc
+++ b/CristianEdit/objetos.pyc
Binary files differ