diff options
author | Cristian 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) |
commit | 4525db2225bef6dd1cf9877b6d207d2e8fd87b4a (patch) | |
tree | 25be0f09f826102db7c982bee37b3dcb5e437a20 | |
parent | 25ba2cd625f5ccbe676ab6e69b45158845eb5199 (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.py | 40 | ||||
-rw-r--r-- | CristianEdit/objetos.py | 24 | ||||
-rw-r--r-- | CristianEdit/objetos.pyc | bin | 45024 -> 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 Binary files differindex 35f3b4d..6ab6e5b 100644 --- a/CristianEdit/objetos.pyc +++ b/CristianEdit/objetos.pyc |