PrintOperation

El objeto primario es Gtk::PrintOperation, reservado por cada operación de impresión. Para manejar el dibujo de una página, conecte sus señales, o herede de él y sobrecargue los manejadores de señales virtuales predeterminados. PrintOperation maneja automáticamente todas las opciones que afectan al bucle de impresión.

20.1.1. Señales

El método PrintOperation::run() comienza el ciclo de impresión, durante el que se emiten varias señales:

  • begin_print: debe manejar esta señal, porque aquí es donde crea y configura un Pango::Layout usando el Gtk::PrintContext proporcionado y divide la salida de impresión en páginas.
  • paginate: la paginación es potencialmente lenta, por lo que, si necesita monitorizarla puede llamar al método PrintOperation::set_show_progress() y manejar esta señal.
  • Para cada página que necesita procesarse, se emiten las siguientes señales:
    • request_page_setup: proporciona un PrintContext, número de página y Gtk::PageSetup. Maneje esta señal si necesita modificar la configuración de cada página.
    • draw_page: debe manejar esta señal, que proporciona un PrintContext y un número de página. El PrintContext debe usarse para crear un Cairo::Context en el que la página proporcionada debe dibujarse. Para procesar texto, itere sobre el Pango::Layout que creó en el manejador begin_print.
  • end_print: su manejador es un lugar seguro para liberar cualquier recurso relacionado con una PrintOperation. Si tiene una clase personalizada que herede de PrintOperation, es naturalmente más simple hacerlo en el destructor.
  • done: esta señal se emite cuando termina la impresión, indicando que se han almacenado en el búfer los datos. Tenga en cuenta que el Gtk::PrintOperationResult proporcionado podría indicar un error. En cualquier caso, probablemente quiera notificar al usuario el estado final.
  • status_changed: emitida siempre que el estado de un trabajo de impresión cambia, hasta que termina. Llame al método PrintOperation::set_track_print_status() para monitorizar el estado del trabajo luego de haberlo almacenado en el búfer. Para ver el estado, use get_status() o get_status_string().

Referencia