ev_window_title_set_type (ev_window->priv->title, EV_WINDOW_TITLE_DOCUMENT);
ev_job_queue_add_job (ev_window->priv->xfer_job, EV_JOB_PRIORITY_HIGH);
- gtk_widget_destroy (password_dialog);
+ gtk_widget_destroy (password_dialog);
return;
}
uris = gtk_file_chooser_get_uris (GTK_FILE_CHOOSER (chooser));
- ev_application_open_uri_list (EV_APP, uris, GDK_CURRENT_TIME);
+ ev_application_open_uri_list (EV_APP, uris,
+ gtk_window_get_screen (GTK_WINDOW (ev_window)),
+ GDK_CURRENT_TIME);
g_slist_foreach (uris, (GFunc)g_free, NULL);
g_slist_free (uris);
#ifdef HAVE_GTK_RECENT
static void
ev_window_cmd_recent_file_activate (GtkAction *action,
- GtkRecentInfo *info)
+ EvWindow *window)
{
- const gchar *uri;
+ GtkRecentInfo *info;
+ const gchar *uri;
+ info = g_object_get_data (G_OBJECT (action), "gtk-recent-info");
+ g_assert (info != NULL);
+
uri = gtk_recent_info_get_uri (info);
- ev_application_open_uri (EV_APP, uri, NULL,
- GDK_CURRENT_TIME, NULL);
+ ev_application_open_uri_at_dest (EV_APP, uri,
+ gtk_window_get_screen (GTK_WINDOW (window)),
+ NULL, 0,
+ GDK_CURRENT_TIME);
}
#else
static void
"label", label,
NULL);
- g_object_weak_ref (G_OBJECT (action),
- (GWeakNotify) gtk_recent_info_unref,
- gtk_recent_info_ref (info));
+ g_object_set_data_full (G_OBJECT (action),
+ "gtk-recent-info",
+ gtk_recent_info_ref (info),
+ (GDestroyNotify) gtk_recent_info_unref);
+
g_signal_connect (G_OBJECT (action), "activate",
G_CALLBACK (ev_window_cmd_recent_file_activate),
- (gpointer) info);
+ (gpointer) ev_window);
gtk_action_group_add_action (ev_window->priv->recent_action_group,
action);
gint response,
EvWindow *window)
{
- EvBackend document_type;
- gboolean export_to_ps = TRUE;
- GtkPrintPages print_pages;
+ EvPrintRange *ranges = NULL;
+ EvPrintPageSet page_set;
+ EvPageCache *page_cache;
+ gint n_ranges = 0;
+ gint copies;
+ gboolean collate;
+ gboolean reverse;
+ gdouble scale;
+ gint current_page;
+ gint width;
+ gint height;
+ GtkPrintPages print_pages;
if (response != GTK_RESPONSE_OK) {
gtk_widget_destroy (GTK_WIDGET (dialog));
window->priv->print_page_setup = g_object_ref (
gtk_print_unix_dialog_get_page_setup (GTK_PRINT_UNIX_DIALOG (dialog)));
- document_type = ev_document_factory_get_backend (window->priv->document);
- print_pages = gtk_print_settings_get_print_pages (window->priv->print_settings);
-
- if (print_pages == GTK_PRINT_PAGES_ALL) {
- switch (document_type) {
- case EV_BACKEND_PDF:
- /* Export to ps when printing to file */
- if (gtk_print_settings_has_key (window->priv->print_settings,
- GTK_PRINT_SETTINGS_OUTPUT_URI)) {
- export_to_ps = TRUE;
- } else {
- export_to_ps = !gtk_printer_accepts_pdf (window->priv->printer);
- }
-
- break;
- case EV_BACKEND_PS:
- export_to_ps = FALSE;
- break;
- default:
- export_to_ps = TRUE;
- break;
- }
- }
-
- if ((export_to_ps || document_type == EV_BACKEND_PS) &&
- !gtk_printer_accepts_ps (window->priv->printer)) {
+ if (!gtk_printer_accepts_ps (window->priv->printer)) {
GtkWidget *msgdialog;
msgdialog = gtk_message_dialog_new (GTK_WINDOW (dialog),
return FALSE;
}
- if (export_to_ps) {
- EvPrintRange *ranges = NULL;
- EvPageCache *page_cache;
- gint n_ranges = 0;
- gint current_page;
- gint width;
- gint height;
-
- ev_window_clear_print_job (window);
-
- current_page =
- gtk_print_unix_dialog_get_current_page (GTK_PRINT_UNIX_DIALOG (dialog));
-
- switch (print_pages) {
- case GTK_PRINT_PAGES_CURRENT:
- ranges = g_new0 (EvPrintRange, 1);
-
- ranges->start = current_page;
- ranges->end = current_page;
- n_ranges = 1;
-
- break;
- case GTK_PRINT_PAGES_RANGES: {
- GtkPageRange *page_range;
-
- page_range = gtk_print_settings_get_page_ranges (window->priv->print_settings,
- &n_ranges);
- if (n_ranges > 0)
- ranges = g_memdup (page_range, n_ranges * sizeof (GtkPageRange));
- }
- break;
- default:
- break;
- }
-
- page_cache = ev_page_cache_get (window->priv->document);
- ev_page_cache_get_size (page_cache,
- current_page,
- 0, 1.0,
- &width, &height);
+ ev_window_clear_print_job (window);
- window->priv->print_job =
- ev_job_print_new (window->priv->document,
- ranges, n_ranges,
- (gdouble)width,
- (gdouble)height);
+ current_page = gtk_print_unix_dialog_get_current_page (GTK_PRINT_UNIX_DIALOG (dialog));
+ print_pages = gtk_print_settings_get_print_pages (window->priv->print_settings);
+
+ switch (print_pages) {
+ case GTK_PRINT_PAGES_CURRENT:
+ ranges = g_new0 (EvPrintRange, 1);
- g_signal_connect (window->priv->print_job, "finished",
- G_CALLBACK (ev_window_print_job_cb),
- window);
- /* The priority doesn't matter for this job */
- ev_job_queue_add_job (window->priv->print_job, EV_JOB_PRIORITY_LOW);
- } else {
- gchar *filename;
-
- filename = g_filename_from_uri (window->priv->uri, NULL, NULL);
- ev_window_print_send (window, filename);
- g_free (filename);
+ ranges->start = current_page;
+ ranges->end = current_page;
+ n_ranges = 1;
+
+ break;
+ case GTK_PRINT_PAGES_RANGES: {
+ GtkPageRange *page_range;
+
+ page_range = gtk_print_settings_get_page_ranges (window->priv->print_settings,
+ &n_ranges);
+ if (n_ranges > 0)
+ ranges = g_memdup (page_range, n_ranges * sizeof (GtkPageRange));
+ }
+ break;
+ default:
+ break;
}
+
+ page_set = (EvPrintPageSet)gtk_print_settings_get_page_set (window->priv->print_settings);
+
+ scale = gtk_print_settings_get_scale (window->priv->print_settings) * 0.01;
+ page_cache = ev_page_cache_get (window->priv->document);
+ ev_page_cache_get_size (page_cache,
+ current_page,
+ 0, scale,
+ &width, &height);
+
+ copies = gtk_print_settings_get_n_copies (window->priv->print_settings);
+ collate = gtk_print_settings_get_collate (window->priv->print_settings);
+ reverse = gtk_print_settings_get_reverse (window->priv->print_settings);
+
+ window->priv->print_job = ev_job_print_new (window->priv->document,
+ (gdouble)width,
+ (gdouble)height,
+ ranges, n_ranges,
+ page_set,
+ copies, collate,
+ reverse);
+
+ g_signal_connect (window->priv->print_job, "finished",
+ G_CALLBACK (ev_window_print_job_cb),
+ window);
+ /* The priority doesn't matter for this job */
+ ev_job_queue_add_job (window->priv->print_job, EV_JOB_PRIORITY_LOW);
gtk_widget_destroy (GTK_WIDGET (dialog));
window->priv->print_dialog = NULL;
GTK_PRINT_CAPABILITY_COLLATE |
GTK_PRINT_CAPABILITY_REVERSE |
GTK_PRINT_CAPABILITY_SCALE |
- GTK_PRINT_CAPABILITY_GENERATE_PS);
+ GTK_PRINT_CAPABILITY_GENERATE_PS |
+ GTK_PRINT_CAPABILITY_GENERATE_PDF);
gtk_print_unix_dialog_set_current_page (GTK_PRINT_UNIX_DIALOG (dialog),
current_page);
"Marco Pesenti Gritti <marco@gnome.org>",
"Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
"Bryan Clark <clarkbw@gnome.org>",
- "Carlos Garcia Campos <carlosgc@gnome.org>",
+ "Carlos Garcia Campos <carlosgc@gnome.org>",
+ "Wouter Bolsterlee <wbolster@gnome.org>",
NULL
};
gnome_vfs_uri_list_free (uri_list);
- ev_application_open_uri_list (EV_APP, uris, 0);
+ ev_application_open_uri_list (EV_APP, uris,
+ gtk_widget_get_screen (widget),
+ 0);
g_slist_free (uris);
}
GtkAction *action;
action = gtk_action_group_get_action (action_group, "GoPreviousPage");
+ g_object_set (action, "is-important", TRUE, NULL);
/*translators: this is the label for toolbar button*/
g_object_set (action, "short_label", _("Previous"), NULL);
- g_object_set (action, "is-important", TRUE, NULL);
action = gtk_action_group_get_action (action_group, "GoNextPage");
g_object_set (action, "is-important", TRUE, NULL);
action = gtk_action_group_get_action (action_group, "ViewZoomIn");
/*translators: this is the label for toolbar button*/
g_object_set (action, "short_label", _("Zoom In"), NULL);
- action = gtk_action_group_get_action (action_group, "ViewZoomIn");
action = gtk_action_group_get_action (action_group, "ViewZoomOut");
/*translators: this is the label for toolbar button*/
g_object_set (action, "short_label", _("Zoom Out"), NULL);
- action = gtk_action_group_get_action (action_group, "ViewZoomIn");
action = gtk_action_group_get_action (action_group, "ViewBestFit");
/*translators: this is the label for toolbar button*/
g_object_set (action, "short_label", _("Best Fit"), NULL);
- action = gtk_action_group_get_action (action_group, "ViewZoomIn");
action = gtk_action_group_get_action (action_group, "ViewPageWidth");
/*translators: this is the label for toolbar button*/
g_object_set (action, "short_label", _("Fit Width"), NULL);
- action = gtk_action_group_get_action (action_group, "ViewZoomIn");
action = gtk_action_group_get_action (action_group, "LeaveFullscreen");
g_object_set (action, "is-important", TRUE, NULL);
g_free (dir);
ev_application_open_uri_at_dest (EV_APP, uri,
+ gtk_window_get_screen (GTK_WINDOW (window)),
ev_link_action_get_dest (action),
0,
GDK_CURRENT_TIME);