[gnome-commander] Show relative path names in search results list
- From: Uwe Scholz <uwescholz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-commander] Show relative path names in search results list
- Date: Thu, 12 Jun 2014 19:24:04 +0000 (UTC)
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]