[gnome-commander] Added a Send-to command option in options dialog



commit 10dcec7861c3e7d2f68fc387a2a54ae63cb25001
Author: Uwe Scholz <uwescholz src gnome org>
Date:   Wed Oct 8 21:38:08 2014 +0200

    Added a Send-to command option in options dialog

 src/dialogs/gnome-cmd-options-dialog.cc |   16 +++++++++++-----
 src/gnome-cmd-data.cc                   |    4 ++++
 src/gnome-cmd-data.h                    |    9 +++++++++
 src/gnome-cmd-user-actions.cc           |   18 +++++++++++++++++-
 4 files changed, 41 insertions(+), 6 deletions(-)
---
diff --git a/src/dialogs/gnome-cmd-options-dialog.cc b/src/dialogs/gnome-cmd-options-dialog.cc
index 56f2992..81bbcac 100644
--- a/src/dialogs/gnome-cmd-options-dialog.cc
+++ b/src/dialogs/gnome-cmd-options-dialog.cc
@@ -1524,7 +1524,7 @@ inline GtkWidget *create_programs_tab (GtkWidget *parent, GnomeCmdData::Options
     cat = create_category (parent, check, _("MIME applications"));
     gtk_box_pack_start (GTK_BOX (vbox), cat, FALSE, FALSE, 0);
 
-    table = create_table (parent, 6, 2);
+    table = create_table (parent, 7, 2);
     cat = create_category (parent, table, _("Standard programs"));
     gtk_box_pack_start (GTK_BOX (vbox), cat, FALSE, FALSE, 0);
 
@@ -1534,10 +1534,12 @@ inline GtkWidget *create_programs_tab (GtkWidget *parent, GnomeCmdData::Options
     table_add (table, label, 0, 2, GTK_FILL);
     label = create_label (parent, _("Differ:"));
     table_add (table, label, 0, 3, GTK_FILL);
-    label = create_label (parent, _("Terminal:"));
+    label = create_label (parent, _("Send-to:"));
     table_add (table, label, 0, 4, GTK_FILL);
-    label = create_label (parent, _("Terminal for executing a program:"));
+    label = create_label (parent, _("Terminal:"));
     table_add (table, label, 0, 5, GTK_FILL);
+    label = create_label (parent, _("Terminal for executing a program:"));
+    table_add (table, label, 0, 6, GTK_FILL);
 
     entry = create_entry (parent, "viewer", cfg.viewer);
     table_add (table, entry, 1, 0, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
@@ -1549,10 +1551,12 @@ inline GtkWidget *create_programs_tab (GtkWidget *parent, GnomeCmdData::Options
     table_add (table, entry, 1, 2, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
     entry = create_entry (parent, "differ", cfg.differ);
     table_add (table, entry, 1, 3, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
-    entry = create_entry (parent, "termopen", cfg.termopen);
+    entry = create_entry (parent, "sendto", cfg.sendto);
     table_add (table, entry, 1, 4, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
-    entry = create_entry (parent, "termexec", cfg.termexec);
+    entry = create_entry (parent, "termopen", cfg.termopen);
     table_add (table, entry, 1, 5, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
+    entry = create_entry (parent, "termexec", cfg.termexec);
+    table_add (table, entry, 1, 6, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
 
 
     //Other favorite apps frame
@@ -1609,6 +1613,7 @@ inline void store_programs_options (GtkWidget *dialog, GnomeCmdData::Options &cf
     GtkWidget *entry1 = lookup_widget (dialog, "viewer");
     GtkWidget *entry2 = lookup_widget (dialog, "editor");
     GtkWidget *entry3 = lookup_widget (dialog, "differ");
+    GtkWidget *entry4 = lookup_widget (dialog, "sendto");
     GtkWidget *entry5 = lookup_widget (dialog, "termopen");
     GtkWidget *entry6 = lookup_widget (dialog, "termexec");
     GtkWidget *check_uris = lookup_widget (dialog, "honor_expect_uris");
@@ -1617,6 +1622,7 @@ inline void store_programs_options (GtkWidget *dialog, GnomeCmdData::Options &cf
     cfg.set_viewer(gtk_entry_get_text (GTK_ENTRY (entry1)));
     cfg.set_editor(gtk_entry_get_text (GTK_ENTRY (entry2)));
     cfg.set_differ(gtk_entry_get_text (GTK_ENTRY (entry3)));
+    cfg.set_sendto(gtk_entry_get_text (GTK_ENTRY (entry4)));
     cfg.set_termopen(gtk_entry_get_text (GTK_ENTRY (entry5)));
     cfg.set_termexec(gtk_entry_get_text (GTK_ENTRY (entry6)));
 
diff --git a/src/gnome-cmd-data.cc b/src/gnome-cmd-data.cc
index f0f4b0c..127da0d 100644
--- a/src/gnome-cmd-data.cc
+++ b/src/gnome-cmd-data.cc
@@ -109,6 +109,7 @@ GnomeCmdData::Options::Options(const Options &cfg)
     use_internal_viewer = cfg.use_internal_viewer;
     editor = g_strdup (cfg.editor);
     differ = g_strdup (cfg.differ);
+    sendto = g_strdup (cfg.sendto);
     termopen = g_strdup (cfg.termopen);
     termexec = g_strdup (cfg.termexec);
     fav_apps = cfg.fav_apps;
@@ -165,6 +166,7 @@ GnomeCmdData::Options &GnomeCmdData::Options::operator = (const Options &cfg)
         use_internal_viewer = cfg.use_internal_viewer;
         editor = g_strdup (cfg.editor);
         differ = g_strdup (cfg.differ);
+        sendto = g_strdup (cfg.sendto);
         termopen = g_strdup (cfg.termopen);
         termexec = g_strdup (cfg.termexec);
         fav_apps = cfg.fav_apps;
@@ -1206,6 +1208,7 @@ void GnomeCmdData::load()
     options.viewer = gnome_cmd_data_get_string ("/programs/viewer", "gedit %s");
     options.editor = gnome_cmd_data_get_string ("/programs/editor", "gedit %s");
     options.differ = gnome_cmd_data_get_string ("/programs/differ", "meld %s");
+    options.sendto = gnome_cmd_data_get_string ("/programs/sendto", "nautilus-sendto %s");
     options.termopen = gnome_cmd_data_get_string ("/programs/terminal_open", "gnome-terminal");
     options.termexec = gnome_cmd_data_get_string ("/programs/terminal_exec", "gnome-terminal -e %s");
 
@@ -1629,6 +1632,7 @@ void GnomeCmdData::save()
     gnome_cmd_data_set_string ("/programs/viewer", options.viewer);
     gnome_cmd_data_set_string ("/programs/editor", options.editor);
     gnome_cmd_data_set_string ("/programs/differ", options.differ);
+    gnome_cmd_data_set_string ("/programs/sendto", options.sendto);
     gnome_cmd_data_set_string ("/programs/terminal_open", options.termopen);
     gnome_cmd_data_set_string ("/programs/terminal_exec", options.termexec);
 
diff --git a/src/gnome-cmd-data.h b/src/gnome-cmd-data.h
index 0fb4b3f..f889c5b 100644
--- a/src/gnome-cmd-data.h
+++ b/src/gnome-cmd-data.h
@@ -136,6 +136,7 @@ struct GnomeCmdData
         gboolean                     use_internal_viewer;
         gchar                       *editor;
         gchar                       *differ;
+        gchar                       *sendto;
         gchar                       *termopen;
         gchar                       *termexec;
         GList                       *fav_apps;
@@ -183,6 +184,7 @@ struct GnomeCmdData
                    use_internal_viewer(TRUE),
                    editor(NULL),
                    differ(NULL),
+                   sendto(NULL),
                    termopen(NULL),
                    termexec(NULL),
                    fav_apps(NULL),
@@ -206,6 +208,7 @@ struct GnomeCmdData
             g_free (viewer);
             g_free (editor);
             g_free (differ);
+            g_free (sendto);
             g_free (termopen);
             g_free (termexec);
         }
@@ -273,6 +276,12 @@ struct GnomeCmdData
             differ = g_strdup (command);
         }
 
+        void set_sendto(const gchar *command)
+        {
+            g_free (sendto);
+            sendto = g_strdup (command);
+        }
+
         void set_termexec(const gchar *command)
         {
             g_free (termexec);
diff --git a/src/gnome-cmd-user-actions.cc b/src/gnome-cmd-user-actions.cc
index 9f57a88..9073889 100644
--- a/src/gnome-cmd-user-actions.cc
+++ b/src/gnome-cmd-user-actions.cc
@@ -891,7 +891,23 @@ void file_advrename (GtkMenuItem *menuitem, gpointer not_used)
 
 void file_sendto (GtkMenuItem *menuitem, gpointer not_used)
 {
-    command_execute (menuitem, (gpointer) "nautilus-sendto %s");
+    gint argc;
+    gchar **argv;
+    gchar *command;
+    gchar *dpath = GNOME_CMD_FILE (get_fs (ACTIVE)->get_directory())->get_real_path();
+    GError *error = NULL;
+
+    command = g_strdup (gnome_cmd_data.options.sendto);
+
+    DEBUG ('g', "running: %s\n", command);
+
+    g_shell_parse_argv (command, &argc, &argv, NULL);
+    if (!g_spawn_async (dpath, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, &error))
+        gnome_cmd_error_message (_("Unable to execute command."), error);
+
+    g_strfreev (argv);
+    g_free (command);
+    g_free (dpath);
 }
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]