get_first_and_last_page (export, &first_page, &last_page);
- if (file_format) {
- export->fc.format = g_ascii_strcasecmp (file_format, "pdf") == 0 ?
- EV_FILE_FORMAT_PDF : EV_FILE_FORMAT_PS;
- } else {
- export->fc.format = gtk_printer_accepts_pdf (printer) ?
- EV_FILE_FORMAT_PDF : EV_FILE_FORMAT_PS;
- }
+ export->fc.format = file_format && g_ascii_strcasecmp (file_format, "pdf") == 0 ?
+ EV_FILE_FORMAT_PDF : EV_FILE_FORMAT_PS;
export->fc.filename = export->temp_file;
export->fc.first_page = MIN (first_page, last_page);
export->fc.last_page = MAX (first_page, last_page);
gtk_print_operation_cancel (print->op);
}
+static void
+ev_print_operation_print_request_page_setup (EvPrintOperationPrint *print,
+ GtkPrintContext *context,
+ gint page_nr,
+ GtkPageSetup *setup)
+{
+ EvPrintOperation *op = EV_PRINT_OPERATION (print);
+ gdouble width, height;
+
+ ev_document_get_page_size (op->document, page_nr,
+ &width, &height);
+ if (width > height)
+ gtk_page_setup_set_orientation (setup, GTK_PAGE_ORIENTATION_LANDSCAPE);
+ else
+ gtk_page_setup_set_orientation (setup, GTK_PAGE_ORIENTATION_PORTRAIT);
+}
+
static void
ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
GtkPrintContext *context,
g_signal_connect_swapped (print->op, "status_changed",
G_CALLBACK (ev_print_operation_print_status_changed),
print);
+ g_signal_connect_swapped (print->op, "request_page_setup",
+ G_CALLBACK (ev_print_operation_print_request_page_setup),
+ print);
gtk_print_operation_set_allow_async (print->op, TRUE);
}