[gnome-commander/remove-search] Add search command option in the preferences



commit a09e907ecdd220c760d26e741ba0e3fa814dc5d4
Author: Uwe Scholz <u scholz83 gmx de>
Date:   Thu Jan 13 23:18:02 2022 +0100

    Add search command option in the preferences

 data/org.gnome.gnome-commander.gschema.xml |  7 +++++++
 src/dialogs/gnome-cmd-options-dialog.cc    | 26 ++++++++++++++++----------
 src/gnome-cmd-data.cc                      | 17 +++++++++++++++++
 src/gnome-cmd-data.h                       | 10 ++++++++++
 4 files changed, 50 insertions(+), 10 deletions(-)
---
diff --git a/data/org.gnome.gnome-commander.gschema.xml b/data/org.gnome.gnome-commander.gschema.xml
index 17762b8d..024ddaad 100644
--- a/data/org.gnome.gnome-commander.gschema.xml
+++ b/data/org.gnome.gnome-commander.gschema.xml
@@ -714,6 +714,13 @@
           This string defines the command for starting the diff tool.
       </description>
     </key>
+    <key name="search-cmd" type="s">
+      <default>''</default>
+      <summary>Search command</summary>
+      <description>
+          This string defines the command for starting an external file search tool.
+      </description>
+    </key>
     <key name="use-gcmd-block" type="b">
       <default>true</default>
       <summary>Leave terminal open</summary>
diff --git a/src/dialogs/gnome-cmd-options-dialog.cc b/src/dialogs/gnome-cmd-options-dialog.cc
index 33df7cc7..3a494483 100644
--- a/src/dialogs/gnome-cmd-options-dialog.cc
+++ b/src/dialogs/gnome-cmd-options-dialog.cc
@@ -1716,10 +1716,12 @@ static GtkWidget *create_programs_tab (GtkWidget *parent, GnomeCmdData::Options
     table_add (table1, label, 0, 2, GTK_FILL);
     label = create_label (parent, _("Differ:"));
     table_add (table1, label, 0, 3, GTK_FILL);
-    label = create_label (parent, _("Send files:"));
+    label = create_label (parent, _("Search:"));
     table_add (table1, label, 0, 4, GTK_FILL);
-    label = create_label (parent, _("Terminal:"));
+    label = create_label (parent, _("Send files:"));
     table_add (table1, label, 0, 5, GTK_FILL);
+    label = create_label (parent, _("Terminal:"));
+    table_add (table1, label, 0, 6, GTK_FILL);
 
     entry = create_entry (parent, "viewer", cfg.viewer);
     table_add (table1, entry, 1, 0, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
@@ -1731,10 +1733,12 @@ static GtkWidget *create_programs_tab (GtkWidget *parent, GnomeCmdData::Options
     table_add (table1, entry, 1, 2, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
     entry = create_entry (parent, "differ", cfg.differ);
     table_add (table1, entry, 1, 3, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
-    entry = create_entry (parent, "sendto", cfg.sendto);
+    entry = create_entry (parent, "search", cfg.search);
     table_add (table1, entry, 1, 4, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
-    entry = create_entry (parent, "termopen", cfg.termopen);
+    entry = create_entry (parent, "sendto", cfg.sendto);
     table_add (table1, entry, 1, 5, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
+    entry = create_entry (parent, "termopen", cfg.termopen);
+    table_add (table1, entry, 1, 6, (GtkAttachOptions) (GTK_EXPAND|GTK_FILL));
 
     separator = gtk_separator_menu_item_new ();
     gtk_box_pack_start (GTK_BOX (vbox), separator, FALSE, FALSE, 0);
@@ -1808,9 +1812,10 @@ void store_programs_options (GtkWidget *dialog, GnomeCmdData::Options &cfg)
     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 *entry4 = lookup_widget (dialog, "search");
+    GtkWidget *entry5 = lookup_widget (dialog, "sendto");
+    GtkWidget *entry6 = lookup_widget (dialog, "termopen");
+    GtkWidget *entry7 = lookup_widget (dialog, "termexec");
     GtkWidget *check_use_gcmd_block = lookup_widget (dialog, "is_use_gcmd_block");
     GtkWidget *check_uris = lookup_widget (dialog, "honor_expect_uris");
     GtkWidget *check_iv = lookup_widget (dialog, "use_internal_viewer");
@@ -1818,9 +1823,10 @@ void store_programs_options (GtkWidget *dialog, GnomeCmdData::Options &cfg)
     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)));
+    cfg.set_search(gtk_entry_get_text (GTK_ENTRY (entry4)));
+    cfg.set_sendto(gtk_entry_get_text (GTK_ENTRY (entry5)));
+    cfg.set_termopen(gtk_entry_get_text (GTK_ENTRY (entry6)));
+    cfg.set_termexec(gtk_entry_get_text (GTK_ENTRY (entry7)));
     gnome_cmd_data.use_gcmd_block = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_use_gcmd_block));
 
     cfg.honor_expect_uris = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (check_uris));
diff --git a/src/gnome-cmd-data.cc b/src/gnome-cmd-data.cc
index 269c88a6..7e28e47e 100644
--- a/src/gnome-cmd-data.cc
+++ b/src/gnome-cmd-data.cc
@@ -884,6 +884,14 @@ static void on_differ_cmd_changed()
     gnome_cmd_data.options.differ = differ_cmd;
 }
 
+static void on_search_cmd_changed()
+{
+    gchar *search_cmd;
+    g_free(gnome_cmd_data.options.search);
+    search_cmd = g_settings_get_string (gnome_cmd_data.options.gcmd_settings->programs, 
GCMD_SETTINGS_SEARCH_CMD);
+    gnome_cmd_data.options.search = search_cmd;
+}
+
 static void on_sendto_cmd_changed()
 {
     gchar *sendto_cmd;
@@ -1321,6 +1329,11 @@ static void gcmd_connect_gsettings_signals(GcmdSettings *gs)
                       G_CALLBACK (on_differ_cmd_changed),
                       nullptr);
 
+    g_signal_connect (gs->programs,
+                      "changed::search-cmd",
+                      G_CALLBACK (on_search_cmd_changed),
+                      nullptr);
+
     g_signal_connect (gs->programs,
                       "changed::sendto-cmd",
                       G_CALLBACK (on_sendto_cmd_changed),
@@ -1432,6 +1445,7 @@ GnomeCmdData::Options::Options(const Options &cfg)
     use_internal_viewer = cfg.use_internal_viewer;
     editor = g_strdup (cfg.editor);
     differ = g_strdup (cfg.differ);
+    search = g_strdup (cfg.search);
     sendto = g_strdup (cfg.sendto);
     termopen = g_strdup (cfg.termopen);
     termexec = g_strdup (cfg.termexec);
@@ -1497,6 +1511,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);
+        search = g_strdup (cfg.search);
         sendto = g_strdup (cfg.sendto);
         termopen = g_strdup (cfg.termopen);
         termexec = g_strdup (cfg.termexec);
@@ -3213,6 +3228,7 @@ void GnomeCmdData::load()
     options.viewer = g_settings_get_string(options.gcmd_settings->programs, GCMD_SETTINGS_VIEWER_CMD);
     options.editor = g_settings_get_string(options.gcmd_settings->programs, GCMD_SETTINGS_EDITOR_CMD);
     options.differ = g_settings_get_string(options.gcmd_settings->programs, GCMD_SETTINGS_DIFFER_CMD);
+    options.search = g_settings_get_string(options.gcmd_settings->programs, GCMD_SETTINGS_SEARCH_CMD);
     options.sendto = g_settings_get_string(options.gcmd_settings->programs, GCMD_SETTINGS_SENDTO_CMD);
     options.termopen = g_settings_get_string(options.gcmd_settings->programs, GCMD_SETTINGS_TERMINAL_CMD);
     options.termexec = g_settings_get_string(options.gcmd_settings->programs, 
GCMD_SETTINGS_TERMINAL_EXEC_CMD);
@@ -3594,6 +3610,7 @@ void GnomeCmdData::save()
     set_gsettings_when_changed      (options.gcmd_settings->programs, GCMD_SETTINGS_VIEWER_CMD, 
options.viewer);
     set_gsettings_when_changed      (options.gcmd_settings->programs, GCMD_SETTINGS_EDITOR_CMD, 
options.editor);
     set_gsettings_when_changed      (options.gcmd_settings->programs, GCMD_SETTINGS_DIFFER_CMD, 
options.differ);
+    set_gsettings_when_changed      (options.gcmd_settings->programs, GCMD_SETTINGS_SEARCH_CMD, 
options.search);
     set_gsettings_when_changed      (options.gcmd_settings->programs, GCMD_SETTINGS_SENDTO_CMD, 
options.sendto);
     set_gsettings_when_changed      (options.gcmd_settings->programs, GCMD_SETTINGS_TERMINAL_CMD, 
options.termopen);
     set_gsettings_when_changed      (options.gcmd_settings->programs, GCMD_SETTINGS_TERMINAL_EXEC_CMD, 
options.termexec);
diff --git a/src/gnome-cmd-data.h b/src/gnome-cmd-data.h
index 7c637647..4351ca44 100644
--- a/src/gnome-cmd-data.h
+++ b/src/gnome-cmd-data.h
@@ -202,6 +202,7 @@ GcmdSettings *gcmd_settings_new (void);
 #define GCMD_SETTINGS_VIEWER_CMD                      "viewer-cmd"
 #define GCMD_SETTINGS_EDITOR_CMD                      "editor-cmd"
 #define GCMD_SETTINGS_DIFFER_CMD                      "differ-cmd"
+#define GCMD_SETTINGS_SEARCH_CMD                      "search-cmd"
 #define GCMD_SETTINGS_SENDTO_CMD                      "sendto-cmd"
 #define GCMD_SETTINGS_TERMINAL_CMD                    "terminal-cmd"
 #define GCMD_SETTINGS_TERMINAL_EXEC_CMD               "terminal-exec-cmd"
@@ -369,6 +370,7 @@ struct GnomeCmdData
         gboolean                     use_internal_viewer;
         gchar                       *editor;
         gchar                       *differ;
+        gchar                       *search;
         gchar                       *sendto;
         gchar                       *termopen;
         gchar                       *termexec;
@@ -424,6 +426,7 @@ struct GnomeCmdData
                    use_internal_viewer(TRUE),
                    editor(nullptr),
                    differ(nullptr),
+                   search(nullptr),
                    sendto(nullptr),
                    termopen(nullptr),
                    termexec(nullptr),
@@ -452,6 +455,7 @@ struct GnomeCmdData
             g_free (viewer);
             g_free (editor);
             g_free (differ);
+            g_free (search);
             g_free (sendto);
             g_free (termopen);
             g_free (termexec);
@@ -514,6 +518,12 @@ struct GnomeCmdData
             differ = g_strdup (command);
         }
 
+        void set_search(const gchar *command)
+        {
+            g_free (search);
+            search = g_strdup (command);
+        }
+
         void set_sendto(const gchar *command)
         {
             g_free (sendto);


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