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
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().