diff options
author | Milan Svoboda <msvoboda@ra.rockwell.com> | 2014-11-25 21:43:18 +0100 |
---|---|---|
committer | Milan Svoboda <msvoboda@ra.rockwell.com> | 2014-11-25 21:43:18 +0100 |
commit | f9b4e8c0a31d38fb48ee0e61e17a9534f00fdd82 (patch) | |
tree | 1b0b5c6f86efdae9e0316458067ff93d84d8e4e1 /ranger/container/directory.py | |
parent | 5c97716aa0e260ec2b0cd6cffee1ea74fd9ff8f8 (diff) | |
download | ranger-f9b4e8c0a31d38fb48ee0e61e17a9534f00fdd82.tar.gz |
implement filter_inode_type
Diffstat (limited to 'ranger/container/directory.py')
-rw-r--r-- | ranger/container/directory.py | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/ranger/container/directory.py b/ranger/container/directory.py index c6987a76..17cc90b7 100644 --- a/ranger/container/directory.py +++ b/ranger/container/directory.py @@ -36,13 +36,18 @@ def sort_naturally(path): def sort_naturally_icase(path): return path.basename_natural_lower -def accept_file(fname, directory, hidden_filter, name_filter): - if hidden_filter and hidden_filter.search(fname): - return False - if name_filter and not name_filter.search(fname): - return False - if directory.temporary_filter and not directory.temporary_filter.search(fname): - return False +def accept_file(file, filters): + """ + Returns True if file shall be shown, otherwise False. + Parameters: + file - an instance of FileSystemObject + filters - an array of lambdas, each expects a file and + returns True if file shall be shown, + otherwise False. + """ + for filter in filters: + if filter and not filter(file): + return False return True class Directory(FileSystemObject, Accumulator, Loadable): @@ -59,6 +64,7 @@ class Directory(FileSystemObject, Accumulator, Loadable): files_all = None filter = None temporary_filter = None + inode_type_filter = None marked_items = None scroll_begin = 0 @@ -178,8 +184,10 @@ class Directory(FileSystemObject, Accumulator, Loadable): else: hidden_filter = None - self.files = [f for f in self.files_all if accept_file( - f.basename, self, hidden_filter, self.filter)] + filters = [(lambda file: not hidden_filter.search(file.basename)) if hidden_filter else None, + (lambda file: self.filter.search(file.basename)) if self.filter else None, + self.inode_type_filter] + self.files = [f for f in self.files_all if accept_file(f, filters)] self.move_to_obj(self.pointed_obj) # XXX: Check for possible race conditions |