[evince] Add Send To action to file menu
- From: Carlos Garcia Campos <carlosgc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evince] Add Send To action to file menu
- Date: Sun, 5 Feb 2012 13:19:52 +0000 (UTC)
commit c9ce5786d8c0f8409249b3aff99c4262610c1e75
Author: Carlos Garcia Campos <carlosgc gnome org>
Date: Sun Feb 5 14:15:20 2012 +0100
Add Send To action to file menu
It uses nautilus-sendto to allow you to send the current document by
email, to a removable device, etc. If nautilus-sendto command is not
present in path, the menu item is hidden.
https://bugzilla.gnome.org/show_bug.cgi?id=569913
data/evince-ui.xml | 1 +
shell/ev-window.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 46 insertions(+), 0 deletions(-)
---
diff --git a/data/evince-ui.xml b/data/evince-ui.xml
index de70257..72a5af9 100644
--- a/data/evince-ui.xml
+++ b/data/evince-ui.xml
@@ -4,6 +4,7 @@
<menuitem name="FileOpenMenu" action="FileOpen"/>
<menuitem name="FileOpenCopyMenu" action="FileOpenCopy"/>
<menuitem name="FileSaveAsMenu" action="FileSaveAs"/>
+ <menuitem name="FileSendToMenu" action="FileSendTo"/>
<menuitem name="FileOpenContainingFolderMenu" action="FileOpenContainingFolder"/>
<separator/>
<menuitem name="FilePrintMenu" action="FilePrint"/>
diff --git a/shell/ev-window.c b/shell/ev-window.c
index b00cd5d..a875f78 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -366,6 +366,8 @@ static void ev_window_setup_bookmarks (EvWindow *windo
static guint ev_window_n_copies = 0;
+static gchar *nautilus_sendto = NULL;
+
G_DEFINE_TYPE (EvWindow, ev_window, GTK_TYPE_WINDOW)
static gdouble
@@ -456,6 +458,7 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
ev_window_set_action_sensitive (ev_window, "FilePrint", has_pages && ok_to_print);
ev_window_set_action_sensitive (ev_window, "FileProperties", has_document && has_properties);
ev_window_set_action_sensitive (ev_window, "FileOpenContainingFolder", has_document);
+ ev_window_set_action_sensitive (ev_window, "FileSendTo", has_document);
/* Edit menu */
ev_window_set_action_sensitive (ev_window, "EditSelectAll", has_pages && can_get_text);
@@ -2924,6 +2927,40 @@ ev_window_cmd_save_as (GtkAction *action, EvWindow *ev_window)
}
static void
+ev_window_cmd_send_to (GtkAction *action,
+ EvWindow *ev_window)
+{
+ GAppInfo *app_info;
+ gchar *command;
+ const char *uri;
+ GError *error = NULL;
+
+ uri = ev_window->priv->local_uri ? ev_window->priv->local_uri : ev_window->priv->uri;
+ command = g_strdup_printf ("%s %s", nautilus_sendto, uri);
+ app_info = g_app_info_create_from_commandline (command, NULL, 0, &error);
+ if (app_info) {
+ GdkAppLaunchContext *context;
+ GdkScreen *screen;
+
+ screen = gtk_window_get_screen (GTK_WINDOW (ev_window));
+ context = gdk_display_get_app_launch_context (gdk_screen_get_display (screen));
+ gdk_app_launch_context_set_screen (context, screen);
+ gdk_app_launch_context_set_timestamp (context, gtk_get_current_event_time ());
+ g_app_info_launch (app_info, NULL, G_APP_LAUNCH_CONTEXT (context), &error);
+ g_object_unref (context);
+
+ g_object_unref (app_info);
+ }
+ g_free (command);
+
+ if (error) {
+ ev_window_error_message (ev_window, error, "%s",
+ _("Could not send current document"));
+ g_error_free (error);
+ }
+}
+
+static void
ev_window_cmd_open_containing_folder (GtkAction *action, EvWindow *ev_window)
{
GtkWidget *ev_window_widget;
@@ -5672,6 +5709,8 @@ ev_window_class_init (EvWindowClass *ev_window_class)
widget_class->window_state_event = ev_window_state_event;
widget_class->drag_data_received = ev_window_drag_data_received;
+ nautilus_sendto = g_find_program_in_path ("nautilus-sendto");
+
g_type_class_add_private (g_object_class, sizeof (EvWindowPrivate));
}
@@ -5694,6 +5733,9 @@ static const GtkActionEntry entries[] = {
{ "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) },
+ { "FileSendTo", NULL, N_("Send _To..."), NULL,
+ N_("Send current document by mail, instant message..."),
+ G_CALLBACK (ev_window_cmd_send_to) },
{ "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) },
@@ -6030,6 +6072,9 @@ set_action_properties (GtkActionGroup *action_group)
/*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, "FileSendTo");
+ gtk_action_set_visible (action, nautilus_sendto != 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*/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]