プリントダイアログの拡張

プリントダイアログにはカスタムしたタブを追加できます:

このようにcustom_widget_applyシグナルは生成したウィジットを提供していますが、物事を単純にするためには、ユーザーからの入力情報を保持しているこのウィジットはクラスメンバにしておいたほうがいいでしょう。次の例では、Gtk::Entry型のm_Entryがそうなっています。これはカスタ厶したCustomPrintOperationクラスのメンバになっています:

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

  Gtk::HBox* hbox = new Gtk::HBox(false, 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();
  //...
}

examples/book/printing/advancedの例ではこれをおこなっています。