#include "ev-document-images.h"
#include "ev-document-links.h"
#include "ev-document-thumbnails.h"
+#include "ev-document-type-builtins.h"
#include "ev-file-exporter.h"
#include "ev-file-helpers.h"
#include "ev-file-monitor.h"
#include "ev-utils.h"
#include "ev-keyring.h"
#include "ev-view.h"
+#include "ev-view-type-builtins.h"
#include "ev-window.h"
#include "ev-window-title.h"
#include "ev-print-operation.h"
char *uri;
glong uri_mtime;
char *local_uri;
- EvLinkDest *dest;
gboolean unlink_temp_file;
gboolean in_reload;
EvFileMonitor *monitor;
EvWindowPageMode page_mode;
EvWindowTitle *title;
+ /* Load params */
+ EvLinkDest *dest;
+ gchar *search_string;
+ EvWindowRunMode window_mode;
+
EvJob *load_job;
EvJob *reload_job;
EvJob *thumbnail_job;
/* Sizing mode */
if (ev_metadata_manager_get (uri, "sizing_mode", &sizing_mode, FALSE)) {
enum_value = g_enum_get_value_by_nick
- (EV_SIZING_MODE_CLASS, g_value_get_string (&sizing_mode));
+ (g_type_class_peek (EV_TYPE_SIZING_MODE), g_value_get_string (&sizing_mode));
g_value_unset (&sizing_mode);
ev_view_set_sizing_mode (view, enum_value->value);
}
if (!ev_job_is_failed (job)) {
ev_window_set_document (ev_window, document);
- if (job_load->mode != EV_WINDOW_MODE_PREVIEW) {
+ if (ev_window->priv->window_mode != EV_WINDOW_MODE_PREVIEW) {
setup_view_from_metadata (ev_window);
}
flags);
}
- if (job_load->dest) {
+ if (ev_window->priv->dest) {
EvLink *link;
EvLinkAction *link_action;
- link_action = ev_link_action_new_dest (g_object_ref (job_load->dest));
+ link_action = ev_link_action_new_dest (ev_window->priv->dest);
link = ev_link_new (NULL, link_action);
ev_view_handle_link (EV_VIEW (ev_window->priv->view), link);
g_object_unref (link);
+
+ /* Already unrefed by ev_link_action
+ * FIXME: link action should inc dest ref counting
+ * or not unref it at all
+ */
+ ev_window->priv->dest = NULL;
}
- switch (job_load->mode) {
+ switch (ev_window->priv->window_mode) {
case EV_WINDOW_MODE_FULLSCREEN:
ev_window_run_fullscreen (ev_window);
break;
break;
}
- if (job_load->search_string && EV_IS_DOCUMENT_FIND (document)) {
+ if (ev_window->priv->search_string && EV_IS_DOCUMENT_FIND (document)) {
ev_window_cmd_edit_find (NULL, ev_window);
egg_find_bar_set_search_string (EGG_FIND_BAR (ev_window->priv->find_bar),
- job_load->search_string);
+ ev_window->priv->search_string);
}
+ g_free (ev_window->priv->search_string);
+ ev_window->priv->search_string = NULL;
+
/* Create a monitor for the document */
ev_window->priv->monitor = ev_file_monitor_new (ev_window->priv->uri);
- g_signal_connect_swapped (G_OBJECT (ev_window->priv->monitor), "changed",
+ g_signal_connect_swapped (ev_window->priv->monitor, "changed",
G_CALLBACK (ev_window_document_changed),
ev_window);
if (!ev_window->priv->message_area)
return;
-
+
fraction = n_bytes / (gdouble)total_bytes;
- status = g_strdup_printf (_("Downloading document %d%%"),
+ status = g_strdup_printf (_("Downloading document (%d%%)"),
(gint)(fraction * 100));
ev_progress_message_area_set_status (EV_PROGRESS_MESSAGE_AREA (ev_window->priv->message_area),
ev_view_set_loading (EV_VIEW (ev_window->priv->view), TRUE);
ev_window->priv->unlink_temp_file = unlink_temp_file;
+ ev_window->priv->window_mode = mode;
if (mode == EV_WINDOW_MODE_PREVIEW) {
ev_window->priv->print_settings_file = print_settings ?
g_free (ev_window->priv->uri);
ev_window->priv->uri = g_strdup (uri);
+ if (ev_window->priv->search_string)
+ g_free (ev_window->priv->search_string);
+ ev_window->priv->search_string = search_string ?
+ g_strdup (search_string) : NULL;
+
+ if (ev_window->priv->dest)
+ g_object_unref (ev_window->priv->dest);
+ ev_window->priv->dest = dest ? g_object_ref (dest) : NULL;
+
setup_size_from_metadata (ev_window);
- ev_window->priv->load_job = ev_job_load_new (uri, dest, mode, search_string);
+ ev_window->priv->load_job = ev_job_load_new (uri);
g_signal_connect (ev_window->priv->load_job,
"finished",
G_CALLBACK (ev_window_load_job_cb),
const gchar *uri;
uri = ev_window->priv->local_uri ? ev_window->priv->local_uri : ev_window->priv->uri;
- ev_window->priv->reload_job = ev_job_load_new (uri, NULL, 0, NULL);
+ ev_window->priv->reload_job = ev_job_load_new (uri);
g_signal_connect (ev_window->priv->reload_job, "finished",
G_CALLBACK (ev_window_reload_job_cb),
ev_window);
if (error->domain != G_IO_ERROR ||
error->code != G_IO_ERROR_CANCELLED)
ev_window_error_message (ev_window, error,
- "%s", _("Failed to reaload document."));
+ "%s", _("Failed to reload document."));
g_error_free (error);
} else {
ev_window_reload_local (ev_window);
return;
fraction = n_bytes / (gdouble)total_bytes;
- status = g_strdup_printf (_("Downloading document %d%%"),
+ status = g_strdup_printf (_("Downloading document (%d%%)"),
(gint)(fraction * 100));
ev_progress_message_area_set_status (EV_PROGRESS_MESSAGE_AREA (ev_window->priv->message_area),
gtk_recent_info_ref (info),
(GDestroyNotify) gtk_recent_info_unref);
- g_signal_connect (G_OBJECT (action), "activate",
+ g_signal_connect (action, "activate",
G_CALLBACK (ev_window_cmd_recent_file_activate),
(gpointer) ev_window);
switch (save_type) {
case EV_SAVE_DOCUMENT:
- status = g_strdup_printf (_("Uploading document %d%%"),
+ status = g_strdup_printf (_("Uploading document (%d%%)"),
(gint)(fraction * 100));
break;
case EV_SAVE_ATTACHMENT:
- status = g_strdup_printf (_("Uploading attachment %d%%"),
+ status = g_strdup_printf (_("Uploading attachment (%d%%)"),
(gint)(fraction * 100));
break;
case EV_SAVE_IMAGE:
- status = g_strdup_printf (_("Uploading image %d%%"),
+ status = g_strdup_printf (_("Uploading image (%d%%)"),
(gint)(fraction * 100));
break;
default:
ev_window->priv->print_queue = g_queue_new ();
op = ev_print_operation_new (ev_window->priv->document);
- g_signal_connect (G_OBJECT (op), "begin_print",
+ g_signal_connect (op, "begin_print",
G_CALLBACK (ev_window_print_operation_begin_print),
(gpointer)ev_window);
- g_signal_connect (G_OBJECT (op), "status_changed",
+ g_signal_connect (op, "status_changed",
G_CALLBACK (ev_window_print_operation_status_changed),
(gpointer)ev_window);
- g_signal_connect (G_OBJECT (op), "done",
+ g_signal_connect (op, "done",
G_CALLBACK (ev_window_print_operation_done),
(gpointer)ev_window);
GTK_RESPONSE_NO,
GTK_STOCK_CANCEL,
GTK_RESPONSE_CANCEL,
- _("Close after _Printing"),
+ _("Close _after Printing"),
GTK_RESPONSE_YES,
NULL);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
GEnumValue *enum_value;
mode = ev_view_get_sizing_mode (EV_VIEW (window->priv->view));
- enum_value = g_enum_get_value (EV_SIZING_MODE_CLASS, mode);
+ enum_value = g_enum_get_value (g_type_class_peek (EV_TYPE_SIZING_MODE), mode);
if (!ev_window_is_empty (window))
ev_metadata_manager_set_string (window->priv->uri, "sizing_mode",
}
}
+static void
+ev_window_drag_data_received (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time)
+
+{
+ EvWindow *window = EV_WINDOW (widget);
+ gchar **uris;
+ gint i = 0;
+ GSList *uri_list = NULL;
+
+ uris = gtk_selection_data_get_uris (selection_data);
+ if (!uris) {
+ gtk_drag_finish (context, FALSE, FALSE, time);
+ return;
+ }
+
+ for (i = 0; uris[i]; i++) {
+ uri_list = g_slist_prepend (uri_list, (gpointer) uris[i]);
+ }
+
+ ev_application_open_uri_list (EV_APP, uri_list,
+ gtk_window_get_screen (GTK_WINDOW (window)),
+ 0);
+ gtk_drag_finish (context, TRUE, FALSE, time);
+
+ g_strfreev (uris);
+ g_slist_free (uri_list);
+}
+
static void
ev_window_finalize (GObject *object)
{
priv->uri = NULL;
}
+ if (priv->search_string) {
+ g_free (priv->search_string);
+ priv->search_string = NULL;
+ }
+
if (priv->dest) {
g_object_unref (priv->dest);
priv->dest = NULL;
widget_class->screen_changed = ev_window_screen_changed;
widget_class->window_state_event = ev_window_state_event;
+ widget_class->drag_data_received = ev_window_drag_data_received;
g_type_class_add_private (g_object_class, sizeof (EvWindowPrivate));
}
ev_window_sizing_mode_changed_cb (EV_VIEW (ev_window->priv->view), NULL, ev_window);
ev_window_setup_action_sensitivity (ev_window);
+
+ /* Drag and Drop */
+ gtk_drag_dest_set (GTK_WIDGET (ev_window),
+ GTK_DEST_DEFAULT_ALL,
+ NULL, 0,
+ GDK_ACTION_COPY);
+ gtk_drag_dest_add_uri_targets (GTK_WIDGET (ev_window));
}
/**