diff options
author | Moritz Bruder <[email protected]> | 2018-04-04 09:39:47 +0200 |
---|---|---|
committer | lukefromdc <[email protected]> | 2018-04-08 15:01:05 -0400 |
commit | 0585258dc117b50cf8e8f6b5361fd815cc292cca (patch) | |
tree | 07f4a10ba806c9acd9b46989e6649c3a24880107 /src | |
parent | 68ace006c2443c5f4f263bcdb949ad4685a42081 (diff) | |
download | caja-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.c | 7 | ||||
-rw-r--r-- | src/caja-file-management-properties.ui | 6 | ||||
-rw-r--r-- | src/file-manager/caja-icon-view-ui.xml | 2 | ||||
-rw-r--r-- | src/file-manager/fm-icon-view.c | 13 |
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 |