- dialog_ = build_print();
-}
-
-
-void FormPrint::show()
-{
- if (!dialog_) {
- build();
- // allow controlling of input and ok/apply (de)activation
- fl_set_input_return(dialog_->input_printer,
- FL_RETURN_CHANGED);
- fl_set_input_return(dialog_->input_file,
- FL_RETURN_CHANGED);
- fl_set_input_return(dialog_->input_from_page,
- FL_RETURN_CHANGED);
- fl_set_input_return(dialog_->input_to_page,
- FL_RETURN_CHANGED);
- fl_set_input_return(dialog_->input_count,
- FL_RETURN_CHANGED);
-
- // limit these inputs to unsigned integers
- fl_set_input_filter(dialog_->input_from_page,
- fl_unsigned_int_filter);
- fl_set_input_filter(dialog_->input_to_page,
- fl_unsigned_int_filter);
- fl_set_input_filter(dialog_->input_count,
- fl_unsigned_int_filter);
-
- // what limits (if any) make sense for these?
- fl_set_input_maxchars(dialog_->input_printer, 255);
- fl_set_input_maxchars(dialog_->input_file, 255);
- fl_set_input_maxchars(dialog_->input_from_page, 4); // 9999
- fl_set_input_maxchars(dialog_->input_to_page, 4); // 9999
- fl_set_input_maxchars(dialog_->input_count, 4); // 9999
-
- fl_set_form_atclose(dialog_->form_print,
- C_FormPrintWMHideCB, 0);
- }
-
- update(); // make sure its up-to-date
-
- if (dialog_->form_print->visible) {
- fl_raise_form(dialog_->form_print);
- } else {
- fl_show_form(dialog_->form_print,
- FL_PLACE_MOUSE | FL_FREE_SIZE,
- FL_FULLBORDER,
- _("Print"));
- u_ = d_->updateBufferDependent.connect(slot(this,
- &FormPrint::update));
- h_ = d_->hideBufferDependent.connect(slot(this,
- &FormPrint::hide));
- }
-}
-
-
-void FormPrint::hide()
-{
- if (dialog_
- && dialog_->form_print
- && dialog_->form_print->visible) {
- fl_hide_form(dialog_->form_print);
- u_.disconnect();
- h_.disconnect();
- }
+ dialog_.reset(build_print());
+
+ // Manage the ok, apply and cancel/close buttons
+ bc().setOK(dialog_->button_ok);
+ bc().setApply(dialog_->button_apply);
+ bc().setCancel(dialog_->button_cancel);
+
+ // allow controlling of input and ok/apply (de)activation
+ fl_set_input_return(dialog_->input_printer,
+ FL_RETURN_CHANGED);
+ fl_set_input_return(dialog_->input_file,
+ FL_RETURN_CHANGED);
+ fl_set_input_return(dialog_->input_from_page,
+ FL_RETURN_CHANGED);
+ fl_set_input_return(dialog_->input_to_page,
+ FL_RETURN_CHANGED);
+ fl_set_input_return(dialog_->input_count,
+ FL_RETURN_CHANGED);
+
+ // limit these inputs to unsigned integers
+ fl_set_input_filter(dialog_->input_from_page,
+ fl_unsigned_int_filter);
+ fl_set_input_filter(dialog_->input_to_page,
+ fl_unsigned_int_filter);
+ fl_set_input_filter(dialog_->input_count,
+ fl_unsigned_int_filter);
+
+ // what limits (if any) make sense for these?
+ fl_set_input_maxchars(dialog_->input_printer, 255);
+ fl_set_input_maxchars(dialog_->input_file, 255);
+ fl_set_input_maxchars(dialog_->input_from_page, 4); // 9999
+ fl_set_input_maxchars(dialog_->input_to_page, 4); // 9999
+ fl_set_input_maxchars(dialog_->input_count, 4); // 9999
+
+ target_.reset();
+ target_.registerRadioButton(dialog_->radio_printer,
+ PrinterParams::PRINTER);
+ target_.registerRadioButton(dialog_->radio_file,
+ PrinterParams::FILE);
+ order_.reset();
+ order_.registerRadioButton(dialog_->radio_order_reverse,
+ true);
+ order_.registerRadioButton(dialog_->radio_order_normal,
+ false);
+ which_.reset();
+ which_.registerRadioButton(dialog_->radio_odd_pages,
+ PrinterParams::ODD);
+ which_.registerRadioButton(dialog_->radio_even_pages,
+ PrinterParams::EVEN);
+ which_.registerRadioButton(dialog_->radio_all_pages,
+ PrinterParams::ALL);