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

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

Référence