diff options
author | hut <hut@lavabit.com> | 2009-12-23 01:18:31 +0100 |
---|---|---|
committer | hut <hut@lavabit.com> | 2009-12-23 01:18:31 +0100 |
commit | 0115ab105d160c6923f7a3449dbd9345d0fe4a65 (patch) | |
tree | ff229528344968dc01247ad79c91a66c91d59dd0 /ranger/fsobject/directory.py | |
parent | 85f45f481311ff3fb241c89c824ccc80583cd99a (diff) | |
download | ranger-0115ab105d160c6923f7a3449dbd9345d0fe4a65.tar.gz |
fixed / improved loader
Diffstat (limited to 'ranger/fsobject/directory.py')
-rw-r--r-- | ranger/fsobject/directory.py | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/ranger/fsobject/directory.py b/ranger/fsobject/directory.py index 5ad07ef1..7fa130ec 100644 --- a/ranger/fsobject/directory.py +++ b/ranger/fsobject/directory.py @@ -2,6 +2,7 @@ from . import BAD_INFO from .file import File from .fsobject import FileSystemObject as SuperClass from ranger.shared import SettingsAware +from ranger import log import ranger.fsobject def sort_by_basename(path): @@ -17,6 +18,7 @@ class NoDirectoryGiven(Exception): class Directory(SuperClass, SettingsAware): enterable = False + load_generator = None loading = False filenames = None @@ -47,9 +49,12 @@ class Directory(SuperClass, SettingsAware): """Loads the contents of the directory. Use this sparingly since it takes rather long. """ + + log("generating loader for " + self.path + "(" + str(id(self)) + ")") from os.path import join, isdir, basename from os import listdir + self.loading = True self.load_if_outdated() yield @@ -89,7 +94,8 @@ class Directory(SuperClass, SettingsAware): self.content_loaded = True self.loading = False - yield +# yield +# yield def load_content(self, schedule=False): """Loads the contents of the directory. Use this sparingly since @@ -101,13 +107,21 @@ class Directory(SuperClass, SettingsAware): if schedule is None: schedule = self.size > 30 - if not self.loading: + if self.load_generator is None: + self.load_generator = self.load_bit_by_bit() + if schedule and self.fm: - self.loading = True self.fm.loader.add(self) else: - for _ in self.load_bit_by_bit(): + for _ in self.load_generator: pass + self.load_generator = None + + elif not schedule or not self.fm: + for _ in self.load_generator: + pass + self.load_generator = None + def sort(self): """Sort the containing files""" |