ev_view_get_has_selection (view));
}
+static void
+view_layers_changed_cb (EvView *view,
+ EvWindow *window)
+{
+ ev_sidebar_layers_update_layers_state (EV_SIDEBAR_LAYERS (window->priv->sidebar_layers));
+}
+
static void
ev_window_page_changed_cb (EvWindow *ev_window,
gint old_page,
gtk_widget_show (fc);
}
+static void
+ev_window_cmd_open_containing_folder (GtkAction *action, EvWindow *ev_window)
+{
+ GtkWidget *ev_window_widget;
+ GFile *file;
+ GFile *parent;
+
+ ev_window_widget = GTK_WIDGET (ev_window);
+
+ file = g_file_new_for_uri (ev_window->priv->uri);
+ parent = g_file_get_parent (file);
+
+ if (parent) {
+ char *parent_uri;
+
+ parent_uri = g_file_get_uri (parent);
+ if (parent_uri) {
+ GdkScreen *screen;
+ guint32 timestamp;
+ GError *error;
+
+ screen = gtk_widget_get_screen (ev_window_widget);
+ timestamp = gtk_get_current_event_time ();
+
+ error = NULL;
+ if (!gtk_show_uri (screen, parent_uri, timestamp, &error)) {
+ ev_window_error_message (ev_window, error, _("Could not open the containing folder"));
+ g_error_free (error);
+ }
+
+ g_free (parent_uri);
+ }
+ }
+
+ if (file)
+ g_object_unref (file);
+
+ if (parent)
+ g_object_unref (parent);
+
+}
+
static GKeyFile *
get_print_settings_file (void)
{
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CLOSE);
gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)), 5);
gtk_box_set_spacing (GTK_BOX (content_area), 2);
- gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 400);
toolbar = EGG_EDITABLE_TOOLBAR (ev_window->priv->toolbar);
{ "FileSaveAs", GTK_STOCK_SAVE_AS, N_("_Save a Copy…"), "<control>S",
N_("Save a copy of the current document"),
G_CALLBACK (ev_window_cmd_save_as) },
+ { "FileOpenContainingFolder", GTK_STOCK_DIRECTORY, N_("Open Containing _Folder"), NULL,
+ N_("Show the folder which contains this file in the file manager"),
+ G_CALLBACK (ev_window_cmd_open_containing_folder) },
{ "FilePrint", GTK_STOCK_PRINT, N_("_Print…"), "<control>P",
N_("Print this document"),
G_CALLBACK (ev_window_cmd_file_print) },
{
GtkAction *action;
+ action = gtk_action_group_get_action (action_group, "FileOpenContainingFolder");
+ /*translators: this is the label for toolbar button*/
+ g_object_set (action, "short_label", _("Open Folder"), NULL);
+
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*/
if (window->priv->document && ev_document_has_synctex (window->priv->document)) {
EvSourceLink link;
+ guint32 timestamp;
- g_variant_get (parameters, "(&s(ii))", &link.filename, &link.line, &link.col);
+ g_variant_get (parameters, "(&s(ii)u)", &link.filename, &link.line, &link.col, ×tamp);
ev_view_highlight_forward_search (EV_VIEW (window->priv->view), &link);
- gtk_window_present (GTK_WINDOW (window));
+ gtk_window_present_with_time (GTK_WINDOW (window), timestamp);
}
g_dbus_method_invocation_return_value (invocation, g_variant_new ("()"));
"<method name='SyncView'>"
"<arg type='s' name='source_file' direction='in'/>"
"<arg type='(ii)' name='source_point' direction='in'/>"
+ "<arg type='u' name='timestamp' direction='in'/>"
"</method>"
"<signal name='SyncSource'>"
"<arg type='s' name='source_file' direction='out'/>"
g_signal_connect_object (ev_window->priv->view, "annot-added",
G_CALLBACK (view_annot_added),
ev_window, 0);
+ g_signal_connect_object (ev_window->priv->view, "layers-changed",
+ G_CALLBACK (view_layers_changed_cb),
+ ev_window, 0);
#ifdef ENABLE_DBUS
g_signal_connect_swapped (ev_window->priv->view, "sync-source",
G_CALLBACK (ev_window_sync_source),