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-06-22 23:03:15 (GMT)
committer Cristian García <cristian99garcia@gmail.com>2013-06-22 23:03:15 (GMT)
commit469e5a5cd3b8406d4b1ae450cb5f14616dad39bb (patch)
tree1de244d95a540c2f00d8efc698aadcb495843327
parentec8d997c37524df37db4d4e3831e9620523a5d07 (diff)
Arreglando funcionalidad del dialogo de estado
-rwxr-xr-xCristianEdit.py43
-rw-r--r--CristianEdit/CristianEdit.py27
-rw-r--r--CristianEdit/objetos.py59
-rw-r--r--CristianEdit/objetos.pycbin44182 -> 45221 bytes
4 files changed, 109 insertions, 20 deletions
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 = """
+<ui>
+ <menubar name='MenuBar'>
+ <menu action='FileMenu'>
+ <menu action='FileNew'>
+ <menuitem action='FileNewStandard' />
+ <menuitem action='FileNewFoo' />
+ <menuitem action='FileNewGoo' />
+ </menu>
+ <separator />
+ <menuitem action='FileQuit' />
+ </menu>
+ <menu action='EditMenu'>
+ <menuitem action='EditCopy' />
+ <menuitem action='EditPaste' />
+ <menuitem action='EditSomething' />
+ </menu>
+ <menu action='ChoicesMenu'>
+ <menuitem action='ChoiceOne'/>
+ <menuitem action='ChoiceTwo'/>
+ <separator />
+ <menuitem action='ChoiceThree'/>
+ </menu>
+ </menubar>
+ <toolbar name='ToolBar'>
+ <toolitem action='FileNewStandard' />
+ <toolitem action='FileQuit' />
+ </toolbar>
+ <popup name='PopupMenu'>
+ <menuitem action='EditCopy' />
+ <menuitem action='EditPaste' />
+ <menuitem action='EditSomething' />
+ </popup>
+</ui>
+"""
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