Objet PrintOperation
L'objet principal est Gtk::PrintOperation, alloué pour chaque opération d'impression. Pour gérer le tracé de la page, il faut se connecter à ses signaux, ou bien créer un objet dérivé et surdéfinir les gestionnaires de signaux virtuels fournis par défaut. PrintOperation gère automatiquement tous les paramètres affectant la boucle d'impression.
- XX.I.I. Signaux
XX.I.I. Signaux
La fonction membre PrintOperation::run() démarre la boucle d'impression au cours de laquelle divers signaux sont émis :
- begin_print : vous devez gérer ce signal car c'est à cet instant que vous créez et définissez un objet Pango::Layout en utilisant le Gtk::PrintContext fourni et que vous y divisez la sortie d'impression en plusieurs pages.
- paginate : la pagination est en règle générale lente, donc si vous voulez la contrôler, vous pouvez appeler la fonction membre PrintOperation::set_show_progress() et gérer ce signal.
-
Pour chaque page devant être imprimée, les signaux suivants sont émis :
- request_page_setup : fournit un objet PrintContext, un numéro de page et un objet Gtk::PageSetup. Gérez ce signal si vous voulez modifier page par page les réglages de la page.
- draw_page : vous devez gérer ce signal qui fournit un objet PrintContext et un numéro de page. L'objet PrintContext sera utilisé pour créer un Cairo::Context dans lequel la page donnée sera dessinée. Pour le rendu du texte, itérez sur le Pango::Layout que vous avez créé dans le gestionnaire du signal begin_print.
- end_print : un gestionnaire pour ce signal est une place sûre pour libérer les ressources relatives à PrintOperation. Si vous avez une classe personnalisée dérivée de PrintOperation, il est évidemment plus simple de faire cela dans le destructeur.
- done : ce signal est émis quand l'impression est terminée, cela signifie que les données de l'impression ont été placées en file d'attente. Notez que la valeur Gtk::PrintOperationResult renvoyée peut indiquer qu'une erreur est survenue. Dans tous les cas, vous souhaiterez probablement avertir l'utilisateur du résultat final.
- status_changed : ce signal est émis chaque fois que l'état d'une tâche d'impression change jusqu'à ce qu'elle soit terminée. Appelez la fonction membre PrintOperation::set_track_print_status() pour contrôler l'état de la tâche après qu'elle a été placée en file d'attente. Pour afficher l'état, utilisez get_status() ou get_status_string().