[gnome-commander] Show relative path names in search results list



commit 43e068dcce46e0754c0b098022679c4bbb95823d
Author: Christian Mallwitz <c mallwitz gmail com>
Date:   Thu Jun 12 21:13:52 2014 +0200

    Show relative path names in search results list
    
    Signed-off-by: Uwe Scholz <uwescholz src gnome org>

 src/dialogs/gnome-cmd-search-dialog.cc |    3 +++
 src/gnome-cmd-file-list.cc             |   31 +++++++++++++++++++++++++------
 src/gnome-cmd-file-list.h              |    1 +
 3 files changed, 29 insertions(+), 6 deletions(-)
---
diff --git a/src/dialogs/gnome-cmd-search-dialog.cc b/src/dialogs/gnome-cmd-search-dialog.cc
index 7921237..6efe8c4 100644
--- a/src/dialogs/gnome-cmd-search-dialog.cc
+++ b/src/dialogs/gnome-cmd-search-dialog.cc
@@ -962,6 +962,9 @@ void GnomeCmdSearchDialog::Private::on_dialog_response(GtkDialog *window, int re
 
                 dialog->priv->result_list->remove_all_files();
 
+                gchar *base_dir_utf8 = GNOME_CMD_FILE (data.start_dir)->get_real_path();
+                dialog->priv->result_list->set_base_dir(base_dir_utf8); 
+
                 if (gnome_cmd_con_is_local (con) ? data.start_local_search() : data.start_generic_search())
                 {
                     data.set_statusmsg();
diff --git a/src/gnome-cmd-file-list.cc b/src/gnome-cmd-file-list.cc
index 9a6aa4e..d31dc74 100644
--- a/src/gnome-cmd-file-list.cc
+++ b/src/gnome-cmd-file-list.cc
@@ -147,6 +147,8 @@ struct GnomeCmdFileList::Private
     GnomeCmdFileCollection visible_files;
     GnomeCmd::Collection<GnomeCmdFile *> selected_files;      // contains GnomeCmdFile pointers, no refing
 
+    gchar *base_dir;
+
     GCompareDataFunc sort_func;
     gint current_col;
     gboolean sort_raising[NUM_COLUMNS];
@@ -185,6 +187,8 @@ GnomeCmdFileList::Private::Private(GnomeCmdFileList *fl)
     memset(column_pixmaps, NULL, sizeof(column_pixmaps));
     memset(column_labels, NULL, sizeof(column_labels));
 
+    base_dir = NULL;
+
     quicksearch_popup = NULL;
     selpat_dialog = NULL;
 
@@ -292,7 +296,7 @@ struct FileFormatData
 
     static gchar empty_string[];
 
-    FileFormatData(GnomeCmdFile *f, gboolean tree_size);
+    FileFormatData(GnomeCmdFileList *fl, GnomeCmdFile *f, gboolean tree_size);
     ~FileFormatData();
 };
 
@@ -300,7 +304,7 @@ struct FileFormatData
 gchar FileFormatData::empty_string[] = "";
 
 
-inline FileFormatData::FileFormatData(GnomeCmdFile *f, gboolean tree_size)
+inline FileFormatData::FileFormatData(GnomeCmdFileList *fl, GnomeCmdFile *f, gboolean tree_size)
 {
     // If the user wants a character instead of icon for filetype set it now
     if (gnome_cmd_data.options.layout == GNOME_CMD_LAYOUT_TEXT)
@@ -325,6 +329,13 @@ inline FileFormatData::FileFormatData(GnomeCmdFile *f, gboolean tree_size)
     else
         fname = get_utf8 (f->get_name());
 
+    if (fl->priv->base_dir != NULL)
+       text[GnomeCmdFileList::COLUMN_DIR] = g_strconcat(get_utf8("."), dpath + 
(strlen(fl->priv->base_dir)-1), NULL);
+    else 
+       text[GnomeCmdFileList::COLUMN_DIR] = dpath;
+
+    DEBUG ('l', "FileFormatData text[GnomeCmdFileList::COLUMN_DIR]=[%s]\n", 
text[GnomeCmdFileList::COLUMN_DIR]);       
+
     if (gnome_cmd_data.options.ext_disp_mode != GNOME_CMD_EXT_DISP_WITH_FNAME)
         fext = get_utf8 (f->get_extension());
     else
@@ -333,7 +344,7 @@ inline FileFormatData::FileFormatData(GnomeCmdFile *f, gboolean tree_size)
     //Set other file information
     text[GnomeCmdFileList::COLUMN_NAME]  = fname;
     text[GnomeCmdFileList::COLUMN_EXT]   = fext;
-    text[GnomeCmdFileList::COLUMN_DIR]   = dpath;
+
     text[GnomeCmdFileList::COLUMN_SIZE]  = tree_size ? (gchar *) f->get_tree_size_as_str() : (gchar *) 
f->get_size();
 
     if (f->info->type != GNOME_VFS_FILE_TYPE_DIRECTORY || !f->is_dotdot)
@@ -1672,7 +1683,7 @@ inline void add_file_to_clist (GnomeCmdFileList *fl, GnomeCmdFile *f, gint in_ro
 {
     GtkCList *clist = *fl;
 
-    FileFormatData data(f,FALSE);
+    FileFormatData data(fl, f,FALSE);
 
     gint row = in_row == -1 ? gtk_clist_append (clist, data.text) : gtk_clist_insert (clist, in_row, 
data.text);
 
@@ -1803,7 +1814,7 @@ void GnomeCmdFileList::update_file(GnomeCmdFile *f)
     if (row == -1)
         return;
 
-    FileFormatData data(f, FALSE);
+    FileFormatData data(this, f, FALSE);
 
     for (gint i=1; i<NUM_COLUMNS; i++)
         gtk_clist_set_text (*this, row, i, data.text[i]);
@@ -1827,7 +1838,7 @@ void GnomeCmdFileList::show_dir_tree_size(GnomeCmdFile *f)
     if (row == -1)
         return;
 
-    FileFormatData data(f,TRUE);
+    FileFormatData data(this, f,TRUE);
 
     for (gint i=1; i<NUM_COLUMNS; i++)
         gtk_clist_set_text (*this, row, i, data.text[i]);
@@ -2474,6 +2485,14 @@ GList *GnomeCmdFileList::sort_selection(GList *list)
 }
 
 
+void GnomeCmdFileList::set_base_dir (gchar *dir)
+{
+    g_return_if_fail (dir != NULL);
+    if (priv->base_dir) { g_free (priv->base_dir); }
+    priv->base_dir = dir;
+}
+
+
 void GnomeCmdFileList::set_connection (GnomeCmdCon *new_con, GnomeCmdDir *start_dir)
 {
     g_return_if_fail (GNOME_CMD_IS_CON (new_con));
diff --git a/src/gnome-cmd-file-list.h b/src/gnome-cmd-file-list.h
index 9aa5e78..cc639b0 100644
--- a/src/gnome-cmd-file-list.h
+++ b/src/gnome-cmd-file-list.h
@@ -172,6 +172,7 @@ struct GnomeCmdFileList
 
     void invalidate_tree_size();
 
+    void set_base_dir(gchar *dir);
     void set_connection(GnomeCmdCon *con, GnomeCmdDir *start_dir=NULL);
     void set_directory(GnomeCmdDir *dir);
     void goto_directory(const gchar *dir);


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