Extender el diálogo de impresión

Puede añadir una pestaña personalizada al diálogo de impresión:

  • Establezca el título de la pestaña mediante PrintOperation::set_custom_tab_label(), cree un widget nuevo y devuélvalo desde el manejador de señales create_custom_widget. Probablemente quiera que este sea un widget contenedor, empaquetado con algunos otros.
  • Obtenga los datos de los widgets en el manejador de señales custom_widget_apply.

A pesar de que la señal custom_widget_apply proporciona al widget que creó previamente, para simplificar las cosas puede mantener a los widgets que espera que contengan entrada del usuario como miembros de clase. Por ejemplo, si tiene un Gtk::Entry llamado m_Entry como miembro de su clase CustomPrintOperation:

Gtk::Widget* CustomPrintOperation::on_create_custom_widget()
{
  set_custom_tab_label("My custom tab");

  Gtk::Box* hbox = new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 8);
  hbox->set_border_width(6);

  Gtk::Label* label = Gtk::manage(new Gtk::Label("Enter some text: "));
  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();
  //...
}

El ejemplo en examples/book/printing/advanced demuestra esto.