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-07-18 23:32:56 (GMT)
committer Cristian Garcia <cristian99garcia@gmail.com>2013-07-18 23:32:56 (GMT)
commit50dc2c9443e0c55e68b84373e0eb39411682f424 (patch)
tree5751387ca57499af9a4bb76b5d01892e4fe584e4
parentacbff555fb220746c530405833f0452274744ce4 (diff)
Agregando GMenu para mayor compatibilad con Gnome, esto implico cambiar casi totalmente el archivo que contiene la ventana 'CristianEdit.py'
-rwxr-xr-xCristianEdit.py95
-rw-r--r--CristianEdit/CristianEdit.py3
2 files changed, 82 insertions, 16 deletions
diff --git a/CristianEdit.py b/CristianEdit.py
index 7fc4f63..51df23f 100755
--- a/CristianEdit.py
+++ b/CristianEdit.py
@@ -23,6 +23,8 @@ import os
from gi.repository import Gtk
from gi.repository import Gdk
+from gi.repository import Gio
+from gi.repository import GObject
from CristianEdit.CristianEdit import CristianEdit
from CristianEdit.objetos import DialogoCerrar
@@ -41,13 +43,12 @@ context.add_provider_for_screen(
Gtk.STYLE_PROVIDER_PRIORITY_USER)
-class Ventana(Gtk.Window):
+class Ventana(Gtk.ApplicationWindow):
- def __init__(self, direcciones):
-
- super(Ventana, self).__init__()
+ def __init__(self, aplicacion, direcciones):
- self.set_title('CristianEdit')
+ Gtk.Window.__init__(self, title='CristianEdit', application=aplicacion)
+
self.set_icon_from_file(os.path.join(os.path.dirname(__file__),
'Iconos/CristianEdit.svg'))
@@ -64,6 +65,7 @@ class Ventana(Gtk.Window):
self.realize()
self.cristianedit.setup_init(direcciones)
+ aplicacion.connect('accion', self.cristianedit.set_accion)
self.connect('delete-event', self.salir)
self.cristianedit.connect('cerrar', self.salir)
@@ -81,11 +83,7 @@ class Ventana(Gtk.Window):
self.cristianedit.guardar_configuracion()
for buffer in buffers:
- if buffers.index(buffer) == buffers.index(buffers[-1]):
- if_cerrar = True
-
- else:
- if_cerrar = False
+ if_cerrar = buffers.index(buffer) == buffers.index(buffers[-1])
if buffer.get_modified():
@@ -120,12 +118,76 @@ class Ventana(Gtk.Window):
if if_cerrar:
Gtk.main_quit()
- else:
- if if_cerrar:
- Gtk.main_quit()
+ elif not buffer.get_modified() and if_cerrar:
+ sys.exit(0)
-if __name__ == '__main__':
+class Aplicacion(Gtk.Application):
+ """Clase basada en el ejemplo 'Gmenu.py'"""
+
+ __gsignals__ = {
+ 'accion': (GObject.SIGNAL_RUN_FIRST,
+ None, (str,)),
+ }
+
+ def __init__(self, direcciones):
+
+ Gtk.Application.__init__(self)
+
+ self.direcciones = direcciones
+
+ def do_activate(self):
+
+ win = Ventana(self, self.direcciones)
+ win.show_all()
+
+ def do_startup (self):
+
+ # Inicia la aplicación
+ Gtk.Application.do_startup(self)
+
+ # Crear el menú
+ menu = Gio.Menu()
+
+ menu.set_label('Hola')
+
+ # Agregar los items del menú
+ menu.append("Nuevo", "app.Nuevo")
+ menu.append("Abrir", "app.Abrir")
+ menu.append("Guardar", "app.Guardar")
+ menu.append("Guardar como", "app.Guardar como")
+ menu.append("Salir", "app.Salir")
+
+ # Establecer el menú a la aplicación
+ self.set_app_menu(menu)
+
+ # Crear acciones para los items del menú
+ nuevo = Gio.SimpleAction.new("Nuevo", None)
+ abrir = Gio.SimpleAction.new('Abrir', None)
+ guardar = Gio.SimpleAction.new('Guardar', None)
+ guardar_como = Gio.SimpleAction.new('Guardar como', None)
+ salir = Gio.SimpleAction.new("Salir", None)
+
+ # Conectar las acciones a funciones
+ nuevo.connect("activate", self.emit_accion)
+ abrir.connect("activate", self.emit_accion)
+ guardar.connect("activate", self.emit_accion)
+ guardar_como.connect("activate", self.emit_accion)
+ salir.connect("activate", self.emit_accion)
+
+ # Agregando los items a la aplicación
+ self.add_action(nuevo)
+ self.add_action(abrir)
+ self.add_action(guardar)
+ self.add_action(guardar_como)
+ self.add_action(salir)
+
+ def emit_accion(self, widget, parametro):
+
+ self.emit('accion', widget.get_name())
+
+if __name__ == '__main__':
+
if len(sys.argv) >= 2:
lista = sys.argv[1:]
@@ -138,5 +200,6 @@ if __name__ == '__main__':
if os.path.exists(lugar):
direcciones.append(os.path.realpath(lugar))
- Ventana(direcciones)
- Gtk.main()
+ app = Aplicacion(direcciones)
+ exit_status = app.run(sys.argv)
+ sys.exit(exit_status)
diff --git a/CristianEdit/CristianEdit.py b/CristianEdit/CristianEdit.py
index 4f409c6..d958725 100644
--- a/CristianEdit/CristianEdit.py
+++ b/CristianEdit/CristianEdit.py
@@ -252,6 +252,9 @@ class CristianEdit(Gtk.Plug):
elif accion == 'Acerca de':
Creditos(self.get_toplevel())
+
+ elif accion == 'Salir':
+ self.emit('cerrar')
def abrir(self, widget=None, direccion=None):
"""Abrir uno o varios archivo/s."""