Extension de la boîte de dialogue d'impression

Vous pouvez ajouter un onglet personnalisé à la boîte de dialogue d'impression :

  • définissez l'intitulé de l'onglet avec PrintOperation::set_custom_tab_label(), créez un nouvel élément graphique et renvoyez un pointeur sur celui-ci dans le gestionnaire de signal create_custom_widget. Vous souhaiterez probablement que ce soit un élément graphique conteneur en empaquetant quelques autres.
  • recueillez les données des éléments graphiques dans le gestionnaire de signal custom_widget_apply.

Bien que le signal custom_widget_apply fournisse un pointeur sur l'élément graphique précédemment créé, pour simplifier les choses, vous pouvez conserver en tant que membres de la classe, les éléments graphiques présumés contenir des entrées utilisateur. Par exemple, disons que nous avons un Gtk::Entry nommé m_Entry membre de votre classe CustomPrintOperation :

Gtk::Widget* CustomPrintOperation::on_create_custom_widget()
{
  set_custom_tab_label("Onglet personnalisé");

  Gtk::HBox* hbox = new Gtk::HBox(false, 8);
  hbox->set_border_width(6);

  Gtk::Label* label = Gtk::manage(new Gtk::Label("Saisissez du texte : "));
  hbox->pack_start(*label, false, false);
  label->show();

  hbox->pack_start(m_Entry, false, false);
  m_Entry.show();

  return hbox;
}

void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */)
{
  Glib::ustring user_input = m_Entry.get_text();
  //...
}

L'exemple dans le dossier examples/book/printing/advanced démontre cette façon d'opérer.