diff options
author | hut <hut@lavabit.com> | 2009-12-24 14:34:36 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2009-12-24 14:34:36 +0100 |
commit | e92fe17a449cad78c79a905fd53ec73f8a41051c (patch) | |
tree | 5399ae2b1a85047afcd0f8f3bd92b52550ca614d /ranger/fsobject/directory.py | |
parent | f13e7310ef7b9fa91f219c91e03f46573d42d2ed (diff) | |
download | ranger-e92fe17a449cad78c79a905fd53ec73f8a41051c.tar.gz |
implemented sorting
Diffstat (limited to 'ranger/fsobject/directory.py')
-rw-r--r-- | ranger/fsobject/directory.py | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/ranger/fsobject/directory.py b/ranger/fsobject/directory.py index 66d99464..f91f99d9 100644 --- a/ranger/fsobject/directory.py +++ b/ranger/fsobject/directory.py @@ -32,6 +32,15 @@ class Directory(SuperClass, SettingsAware): old_show_hidden = None old_directories_first = None + old_reverse = None + old_sort = None + + sort_dict = { + 'basename': sort_by_basename, + 'size': lambda path: path.size, + 'mtime': lambda path: -(path.stat and path.stat.st_mtime or 1), + 'type': lambda path: path.mimetype, + } def __init__(self, path): from os.path import isfile @@ -46,6 +55,8 @@ class Directory(SuperClass, SettingsAware): # to find out if something has changed: self.old_show_hidden = self.settings.show_hidden self.old_directories_first = self.settings.directories_first + self.old_sort = self.settings.sort + self.old_reverse = self.settings.reverse def mark_item(self, item, val): item._mark(val) @@ -189,7 +200,14 @@ class Directory(SuperClass, SettingsAware): return old_pointed_file = self.pointed_file - self.files.sort(key = sort_by_basename) + try: + sort_func = self.sort_dict[self.settings.sort] + except: + sort_func = sort_by_basename + self.files.sort(key = sort_func) + + if self.settings.reverse: + self.files.reverse() if self.settings.directories_first: self.files.sort(key = sort_by_directory) @@ -200,10 +218,14 @@ class Directory(SuperClass, SettingsAware): self.correct_pointer() self.old_directories_first = self.settings.directories_first + self.old_sort = self.settings.sort + self.old_reverse = self.settings.reverse def sort_if_outdated(self): """Sort the containing files if they are outdated""" - if self.old_directories_first != self.settings.directories_first: + if self.old_directories_first != self.settings.directories_first \ + or self.old_sort != self.settings.sort \ + or self.old_reverse != self.settings.reverse: self.sort() # Notice: fm.env.cf should always point to the current file. If you |