Пример #1
0
    def test_loader(self):
        loader = Loader()
        fm = OpenStruct(loader=loader)
        SettingsAware.settings = Fake()
        FileManagerAware.fm = fm

        # initially, the loader has nothing to do
        self.assertFalse(loader.has_work())

        dir = Directory(TESTDIR)
        self.assertEqual(None, dir.files)
        self.assertFalse(loader.has_work())

        # Calling load_content() will enqueue the loading operation.
        # dir is not loaded yet, but the loader has work
        dir.load_content(schedule=True)
        self.assertEqual(None, dir.files)
        self.assertTrue(loader.has_work())

        iterations = 0
        while loader.has_work():
            iterations += 1
            loader.work()
        #print(iterations)
        self.assertNotEqual(None, dir.files)
        self.assertFalse(loader.has_work())
Пример #2
0
 def get_directory(self, path):
     """Get the directory object at the given path"""
     path = abspath(path)
     try:
         return self.directories[path]
     except KeyError:
         obj = Directory(path)
         self.directories[path] = obj
         return obj
Пример #3
0
 def __init__(self):
     SettingsAware.settings = Fake()
     self.dir = Directory(TESTDIR)
Пример #4
0
def raw_load_content(self):
    """
	The method which is used in a Directory object to load stuff.
	Keep this up to date!
	"""

    from os.path import join, isdir, basename
    from os import listdir
    import ranger.ext.mount_path

    self.loading = True
    self.load_if_outdated()

    try:
        if self.exists and self.runnable:
            # 0.003s:
            self.mount_path = ranger.ext.mount_path.mount_path(self.path)

            # 0.1s:
            filenames = []
            for fname in listdir(self.path):
                if not self.settings.show_hidden:
                    hfilter = self.settings.hidden_filter
                    if hfilter:
                        if isinstance(hfilter, str) and hfilter in fname:
                            continue
                        if hasattr(hfilter, 'search') and \
                         hfilter.search(fname):
                            continue
                if isinstance(self.filter, str) and self.filter \
                  and self.filter not in fname:
                    continue
                filenames.append(join(self.path, fname))
            # ---

            self.load_content_mtime = os.stat(self.path).st_mtime

            marked_paths = [obj.path for obj in self.marked_items]

            # 2.85s:
            files = []
            for name in filenames:
                if isdir(name):
                    try:
                        item = self.fm.env.get_directory(name)
                    except:
                        item = Directory(name)
                else:
                    item = File(name)
                item.load_if_outdated()
                files.append(item)

            # 0.2s
            self.disk_usage = sum(f.size for f in files if f.is_file)

            self.scroll_offset = 0
            self.filenames = filenames
            self.files = files

            self._clear_marked_items()
            for item in self.files:
                if item.path in marked_paths:
                    self.mark_item(item, True)
                else:
                    self.mark_item(item, False)

            self.sort()

            if len(self.files) > 0:
                if self.pointed_obj is not None:
                    self.sync_index()
                else:
                    self.move(to=0)
        else:
            self.filenames = None
            self.files = None

        self.cycle_list = None
        self.content_loaded = True
        self.determine_infostring()
        self.correct_pointer()

    finally:
        self.loading = False
Пример #5
0
 def __init__(self):
     self.loader = Loader()
     fm = OpenStruct(loader=self.loader)
     SettingsAware.settings = Fake()
     FileManagerAware.fm = fm
     self.dir = Directory(TESTDIR)