summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMoritz Bruder <[email protected]>2018-04-04 09:39:47 +0200
committerlukefromdc <[email protected]>2018-04-08 15:01:05 -0400
commit0585258dc117b50cf8e8f6b5361fd815cc292cca (patch)
tree07f4a10ba806c9acd9b46989e6649c3a24880107 /src
parent68ace006c2443c5f4f263bcdb949ad4685a42081 (diff)
downloadcaja-0585258dc117b50cf8e8f6b5361fd815cc292cca.tar.bz2
caja-0585258dc117b50cf8e8f6b5361fd815cc292cca.tar.xz
Add sort criterion by reversed extension segments
The basenames of files are split by dots and then starting from the end each segment is compared to find a sort order. Example: bar.tar.bz2 foo.tar.bz2 a.bar.gz x.tar.gz z.tar.gz test.tex A heuristic determines what extension segments are part of the extension. There is probably no perfect solution but there are much less false positives. As a result the sorting is more intuitive and the displayed column in the list view is better readable and displays extensions more accurately. In addition a bug related to the default sort criteria in the preferences has been fixed.
Diffstat (limited to 'src')
-rw-r--r--src/caja-file-management-properties.c7
-rw-r--r--src/caja-file-management-properties.ui6
-rw-r--r--src/file-manager/caja-icon-view-ui.xml2
-rw-r--r--src/file-manager/fm-icon-view.c13
4 files changed, 28 insertions, 0 deletions
diff --git a/src/caja-file-management-properties.c b/src/caja-file-management-properties.c
index dc687688..0568f360 100644
--- a/src/caja-file-management-properties.c
+++ b/src/caja-file-management-properties.c
@@ -94,6 +94,12 @@ static const char * const zoom_values[] =
NULL
};
+/*
+ * This array corresponds to the object with id "model2" in
+ * caja-file-management-properties.ui. It has to positionally match with it.
+ * The purpose is to map values from a combo box to values of the gsettings
+ * enum.
+ */
static const char * const sort_order_values[] =
{
"name",
@@ -104,6 +110,7 @@ static const char * const sort_order_values[] =
"mtime",
"atime",
"emblems",
+ "extension",
"trash-time",
NULL
};
diff --git a/src/caja-file-management-properties.ui b/src/caja-file-management-properties.ui
index 4bb397ea..20d36c08 100644
--- a/src/caja-file-management-properties.ui
+++ b/src/caja-file-management-properties.ui
@@ -84,6 +84,9 @@
<col id="0" translatable="yes">By Size</col>
</row>
<row>
+ <col id="0" translatable="yes">By Size on Disk</col>
+ </row>
+ <row>
<col id="0" translatable="yes">By Type</col>
</row>
<row>
@@ -96,6 +99,9 @@
<col id="0" translatable="yes">By Emblems</col>
</row>
<row>
+ <col id="0" translatable="yes">By Extension</col>
+ </row>
+ <row>
<col id="0" translatable="yes">By Trashed Date</col>
</row>
</data>
diff --git a/src/file-manager/caja-icon-view-ui.xml b/src/file-manager/caja-icon-view-ui.xml
index 89c4cb6e..865daaf3 100644
--- a/src/file-manager/caja-icon-view-ui.xml
+++ b/src/file-manager/caja-icon-view-ui.xml
@@ -17,6 +17,7 @@
<menuitem name="Sort by Modification Date" action="Sort by Modification Date"/>
<menuitem name="Sort by Emblems" action="Sort by Emblems"/>
<menuitem name="Sort by Trash Time" action="Sort by Trash Time"/>
+ <menuitem name="Sort by Extension" action="Sort by Extension"/>
</placeholder>
<separator name="Layout separator"/>
<menuitem name="Tighter Layout" action="Tighter Layout"/>
@@ -40,6 +41,7 @@
<menuitem name="Sort by Modification Date" action="Sort by Modification Date"/>
<menuitem name="Sort by Emblems" action="Sort by Emblems"/>
<menuitem name="Sort by Trash Time" action="Sort by Trash Time"/>
+ <menuitem name="Sort by Extension" action="Sort by Extension"/>
</placeholder>
<separator name="Layout separator"/>
<menuitem name="Tighter Layout" action="Tighter Layout"/>
diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c
index aadb3463..2d533bfc 100644
--- a/src/file-manager/fm-icon-view.c
+++ b/src/file-manager/fm-icon-view.c
@@ -169,6 +169,13 @@ static const SortCriterion sort_criteria[] =
"Sort by Trash Time",
N_("by T_rash Time"),
N_("Keep icons sorted by trash time in rows")
+ },
+ {
+ CAJA_FILE_SORT_BY_EXTENSION,
+ "extension",
+ "Sort by Extension",
+ N_("by E_xtension"),
+ N_("Keep icons sorted by reversed extension segments in rows")
}
};
@@ -1770,6 +1777,12 @@ static const GtkRadioActionEntry arrange_radio_entries[] =
N_("Keep icons sorted by trash time in rows"),
CAJA_FILE_SORT_BY_TRASHED_TIME
},
+ {
+ "Sort by Extension", NULL,
+ N_("By E_xtension"), NULL,
+ N_("Keep icons sorted by reverse extension segments in rows"),
+ CAJA_FILE_SORT_BY_EXTENSION
+ },
};
static void