From bf8d6203edb4b83436089462d9d591930e127b77 Mon Sep 17 00:00:00 2001 From: Cristian Garcia Date: Fri, 26 Jul 2013 20:51:26 +0000 Subject: Ahora la aplicacion tambien imprime archivos --- diff --git a/CristianEdit/CristianEdit.py b/CristianEdit/CristianEdit.py index 3cae54a..c58ee27 100644 --- a/CristianEdit/CristianEdit.py +++ b/CristianEdit/CristianEdit.py @@ -41,6 +41,7 @@ from objetos import Teclado from Creditos import Creditos from gi.repository import Gtk +from gi.repository import GtkSource from gi.repository import GObject from gi.repository import Pango from gi.repository import Gdk @@ -399,9 +400,47 @@ class CristianEdit(Gtk.Plug): buffer.buscar_lenguaje(lugar, combo) def imprimir(self, *args): - """Imprimir el texto el documento actual""" + """Imprimir el texto el documento actual.""" + + def begin_print(operation, context, compositor): + while not compositor.paginate(context): + pass + + n_pages = compositor.get_n_pages() + operation.set_n_pages(n_pages) + + def draw_page(operation, context, page_nr, compositor): + compositor.draw_page(context, page_nr) + + window = self.get_toplevel() + view = self.get_view() + buffer = self.get_buffer() + direccion = self.get_direccion() + + compositor = GtkSource.PrintCompositor.new_from_view(view) + compositor.set_wrap_mode(Gtk.WrapMode.CHAR) + compositor.set_highlight_syntax(True) + compositor.set_print_line_numbers(1) + compositor.set_header_format(False, 'Imprimido en %A', None, '%F') + compositor.set_footer_format(True, '%T', direccion, 'Página %N/%Q') + compositor.set_print_header(True) + compositor.set_print_footer(True) - print "IMPRIMIR" + print_op = Gtk.PrintOperation() + print_op.connect("begin-print", begin_print, compositor) + print_op.connect("draw-page", draw_page, compositor) + res = print_op.run(Gtk.PrintOperationAction.PRINT_DIALOG, window) + + if res == Gtk.PrintOperationResult.ERROR: + dialog = Gtk.MessageDialog( + window, + Gtk.DialogFlags.DESTROY_WITH_PARENT, + Gtk.MessageType.ERROR, + Gtk.ButtonsType.OK, + 'Error al imprimir el archivo: %s' % direccion) + + dialog.run() + dialog.destroy() def estado(self, *args): """Muestra un diálogo con los datos -- cgit v0.9.1