From 469e5a5cd3b8406d4b1ae450cb5f14616dad39bb Mon Sep 17 00:00:00 2001 From: Cristian García Date: Sat, 22 Jun 2013 23:03:15 +0000 Subject: Arreglando funcionalidad del dialogo de estado --- diff --git a/CristianEdit.py b/CristianEdit.py index fb38491..6979182 100755 --- a/CristianEdit.py +++ b/CristianEdit.py @@ -27,6 +27,41 @@ from gi.repository import Gdk from CristianEdit.CristianEdit import CristianEdit from CristianEdit.objetos import DialogoCerrar +UI_INFO = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +""" screen = Gdk.Screen.get_default() css_provider = Gtk.CssProvider() @@ -61,6 +96,14 @@ class Ventana(Gtk.Window): self.cristianedit = CristianEdit() self.socket.add_id(self.cristianedit.get_id()) + uimanager = Gtk.UIManager() + uimanager.add_ui_from_string(UI_INFO) + accelgroup = uimanager.get_accel_group() + self.add_accel_group(accelgroup) + + self.popup = uimanager.get_widget("/PopupMenu") + print self.popup.get_children() + self.show_all() self.realize() self.cristianedit.setup_init(direcciones) diff --git a/CristianEdit/CristianEdit.py b/CristianEdit/CristianEdit.py index d572af2..a78535d 100644 --- a/CristianEdit/CristianEdit.py +++ b/CristianEdit/CristianEdit.py @@ -76,9 +76,11 @@ class CristianEdit(Gtk.Plug): """Se crea la interfaz grafica, se setea y empaqueta todo.""" + self.vbox = Gtk.VBox() + self.add(self.vbox) + self.abrir_configuracion() - self.vbox = Gtk.VBox() self.menu = Menu(self) hbox_toolbar = Gtk.HBox() self.toolbar = Toolbar() @@ -91,6 +93,7 @@ class CristianEdit(Gtk.Plug): self.vbox.pack_start(self.notebook, True, True, 0) self.notebook.set_show_tabs(False) + self.notebook.crear_menu() self.pagina_nueva() self.menu.actualizar_recientes(self.configuraciones['recientes']) @@ -110,7 +113,6 @@ class CristianEdit(Gtk.Plug): 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() def mostrar_teclado(self, mostrar): @@ -393,9 +395,28 @@ class CristianEdit(Gtk.Plug): """Muestra un diálogo con los datos del archivo que se está editando actualmente.""" - dialogo = DialogoEstado(self, self.notebook) + dialogo = DialogoEstado(self, self.get_objetos(None)) + dialogo.connect('solicitar-objetos', self.get_objetos) dialogo.show_all() + def get_objetos(self, widget): + """Llama a la función 'set_dict' + del widget ejecutante.""" + + diccionario = { + 'buffer': self.get_buffer(), + 'direccion': self.get_direccion(), + 'fuente': self.get_fuente(), + 'pagina': self.notebook.get_current_page() + 1, + 'paginas': self.notebook.get_n_pages() + } + + if not widget: + return diccionario + + else: + widget.set_dict(diccionario) + def get_escritura(self, direccion): """Recibe una dirección de un archivo y devuelve sí se puede editar.""" diff --git a/CristianEdit/objetos.py b/CristianEdit/objetos.py index 112cca0..a01fe86 100644 --- a/CristianEdit/objetos.py +++ b/CristianEdit/objetos.py @@ -407,6 +407,7 @@ class Notebook(Gtk.Notebook): boton = Gtk.ToolButton(Gtk.STOCK_ADD) boton.connect('clicked', self.emit_agregar) + self.connect('button-press-event', self.click) self.set_scrollable(True) self.set_action_widget(boton, Gtk.PackType.END) @@ -463,6 +464,10 @@ class Notebook(Gtk.Notebook): return scrolled + def crear_menu(self): + + self.popup = self.get_toplevel().popup + def borrar_pagina(self, numero=None): """Borra la página actual""" @@ -485,6 +490,14 @@ class Notebook(Gtk.Notebook): self.emit('boton-nuevo-clicked') + def click(self, widget, event): + """Recibe el evento cuando se hace clic encima del widget clase.""" + + if event.type == Gdk.EventType.BUTTON_PRESS and event.button == 3: + self.popup.popup(None, None, None, None, event.button, event.time) + self.popup.show_all() + return True # event has been handled + def desplazar_al_final(self): """Se mueve a la última pestaña""" @@ -727,7 +740,7 @@ class DialogoReemplazarTexto(Gtk.Dialog): boton_ok = Gtk.Button('Reemplazar') boton_cerrar = Gtk.Button(None, Gtk.STOCK_CLOSE) - boton_ok.connect('clicked', self.reemplazar) + boton_ok.connect('clicked', self.reemplazar_todo) boton_cerrar.connect('clicked', self.cerrar) hbox.pack_start(boton_ok, False, False, 2) @@ -738,7 +751,7 @@ class DialogoReemplazarTexto(Gtk.Dialog): self.vbox.remove(self.get_children()[0].get_children()[-1]) - def reemplazar(self, widget): + def reemplazar_todo(self, widget): """Reemplaza el texto.""" self.emit('solicitar-buffer') @@ -875,12 +888,17 @@ class DialogoEstado(Gtk.Dialog): __gtype_name__ = 'DialogoEstado' - def __init__(self, padre, notebook): + __gsignals__ = { + 'solicitar-objetos': (GObject.SIGNAL_RUN_FIRST, + None, []) + } - Gtk.Dialog.__init__(self) + def __init__(self, padre, dict): + + Gtk.Dialog.__init__(self, title='Estado del archivo.') self.padre = padre - self.notebook = notebook + self.dict = dict self.label_caracteres = Gtk.Label() self.label_lineas = Gtk.Label() @@ -908,11 +926,6 @@ class DialogoEstado(Gtk.Dialog): for label in lista: label.modify_font(Pango.FontDescription('bold')) - fuente = self.padre.get_fuente() - fuente = Pango.FontDescription(fuente) - fuente.set_size(14000) - self.label_fuente.modify_font(fuente) - self.tabla.attach(label_caracteres, 0, 1, 0, 1) self.tabla.attach(label_lineas, 0, 1, 1, 2) self.tabla.attach(entry_lugar, 0, 1, 2, 3) @@ -942,15 +955,22 @@ class DialogoEstado(Gtk.Dialog): """Actualiza la información que se guarda y muestran en las etiquetas""" - buffer = self.padre.get_buffer() - direccion = self.padre.get_direccion() - fuente = self.padre.get_fuente() - pagina = self.notebook.get_current_page() + 1 - paginas = self.notebook.get_n_pages() + self.emit('solicitar-objetos') + + buffer = self.dict['buffer'] + direccion = self.dict['direccion'] + fuente = self.dict['fuente'] + pagina = self.dict['pagina'] + paginas = self.dict['paginas'] self.label_caracteres.set_text(str(buffer.get_char_count())) self.label_lineas.set_text(str(buffer.get_line_count())) - self.label_fuente.set_text(fuente) + + self.label_fuente.set_text(fuente) + fuente = Pango.FontDescription(self.dict['fuente']) + fuente.set_size(14000) + self.label_fuente.modify_font(fuente) + self.entry_lugar.set_text(direccion) self.label_pestania.set_text(str(pagina) + '/' + str(paginas)) @@ -960,12 +980,17 @@ class DialogoEstado(Gtk.Dialog): else: self.label_modificado.set_text('Sin modificar') + def set_dict(self, dict): + """Setea la variable 'dict' del + widget que ejecuta esta función.""" + + self.dict = dict + def cerrar(self, widget): """Destruye al Widget clase""" self.destroy() - class Configuraciones(Gtk.Dialog): __gtype_name__ = 'Configuraciones' diff --git a/CristianEdit/objetos.pyc b/CristianEdit/objetos.pyc index 4743d17..69a734a 100644 --- a/CristianEdit/objetos.pyc +++ b/CristianEdit/objetos.pyc Binary files differ -- cgit v0.9.1