def load_bit_by_bit(self): """An iterator that loads a part on every next() call Returns a generator which load a part of the directory in each iteration. """ self.loading = True self.percent = 0 self.load_if_outdated() basename_is_rel_to = self.path if self.flat else None try: if self.runnable: yield mypath = self.path self.mount_path = mount_path(mypath) if self.flat: filelist = [] for dirpath, dirnames, filenames in walklevel( mypath, self.flat): dirlist = [ os.path.join("/", dirpath, d) for d in dirnames if self.flat == -1 or dirpath.count(os.path.sep) - mypath.count(os.path.sep) <= self.flat ] filelist += dirlist filelist += [ os.path.join("/", dirpath, f) for f in filenames ] filenames = filelist self.load_content_mtime = mtimelevel(mypath, self.flat) else: filelist = os.listdir(mypath) filenames = [ mypath + (mypath == '/' and fname or '/' + fname) for fname in filelist ] self.load_content_mtime = os.stat(mypath).st_mtime if self._cumulative_size_calculated: # If self.content_loaded is true, this is not the first # time loading. So I can't really be sure if the # size has changed and I'll add a "?". if self.content_loaded: if self.fm.settings.autoupdate_cumulative_size: self.look_up_cumulative_size() else: self.infostring = ' %s' % human_readable( self.size, separator='? ') else: self.infostring = ' %s' % human_readable(self.size) else: self.size = len(filelist) self.infostring = ' %d' % self.size if self.is_link: self.infostring = '->' + self.infostring yield marked_paths = [obj.path for obj in self.marked_items] files = [] disk_usage = 0 if self.settings.vcs_aware: self.has_vcschild = False self.load_vcs(None) for name in filenames: try: file_lstat = os_lstat(name) if file_lstat.st_mode & 0o170000 == 0o120000: file_stat = os_stat(name) else: file_stat = file_lstat stats = (file_stat, file_lstat) is_a_dir = file_stat.st_mode & 0o170000 == 0o040000 except: stats = None is_a_dir = False if is_a_dir: if self.flat: item = Directory( name, preload=stats, path_is_abs=True, basename_is_rel_to=basename_is_rel_to) item.load() else: try: item = self.fm.get_directory(name) item.load_if_outdated() except: item = Directory(name, preload=stats, path_is_abs=True) item.load() else: item = File(name, preload=stats, path_is_abs=True, basename_is_rel_to=basename_is_rel_to) item.load() disk_usage += item.size # Load vcs data if self.settings.vcs_aware: item.load_vcs(self) if item.vcs_enabled: self.has_vcschild = True files.append(item) self.percent = 100 * len(files) // len(filenames) yield self.disk_usage = disk_usage self.vcs_outdated = False self.filenames = filenames self.files_all = files self._clear_marked_items() for item in self.files_all: if item.path in marked_paths: item._mark(True) self.marked_items.append(item) else: item._mark(False) self.sort() if files: if self.pointed_obj is not None: self.sync_index() else: self.move(to=0) else: self.filenames = None self.files_all = None self.files = None self.cycle_list = None self.content_loaded = True self.last_update_time = time() self.correct_pointer() finally: self.loading = False self.fm.signal_emit("finished_loading_dir", directory=self)
def load_bit_by_bit(self): """An iterator that loads a part on every next() call Returns a generator which load a part of the directory in each iteration. """ self.loading = True self.percent = 0 self.load_if_outdated() basename_is_rel_to = self.path if self.flat else None try: # pylint: disable=too-many-nested-blocks if self.runnable: yield mypath = self.path self.mount_path = mount_path(mypath) def ignore_files(): directory = expanduser("~") files = [] for filename in os.listdir(directory): if filename.startswith( "ranger_") and filename.endswith(".txt"): with open(os.path.join(directory, filename), 'r') as f: files += f.read().strip().split("\n") return list(set(files)) if self.flat: filelist = [] for dirpath, dirnames, filenames in walklevel( mypath, self.flat): dirlist = [ os.path.join("/", dirpath, d) for d in dirnames if self.flat == -1 or (dirpath.count(os.path.sep) - mypath.count(os.path.sep)) <= self.flat ] filelist += dirlist filelist += [ os.path.join("/", dirpath, f) for f in filenames ] filenames = filelist filenames = [ f for f in filenames if not f in ignore_files() ] self.load_content_mtime = mtimelevel(mypath, self.flat) else: filelist = os.listdir(mypath) filenames = [ mypath + (mypath == '/' and fname or '/' + fname) for fname in filelist ] filenames = [ f for f in filenames if not f in ignore_files() ] self.load_content_mtime = os.stat(mypath).st_mtime if self.cumulative_size_calculated: # If self.content_loaded is true, this is not the first # time loading. So I can't really be sure if the # size has changed and I'll add a "?". if self.content_loaded: if self.fm.settings.autoupdate_cumulative_size: self.look_up_cumulative_size() else: self.infostring = ' %s' % human_readable( self.size, separator='? ') else: self.infostring = ' %s' % human_readable(self.size) else: self.size = len(filelist) self.infostring = ' %d' % self.size if self.is_link: self.infostring = '->' + self.infostring yield marked_paths = [obj.path for obj in self.marked_items] files = [] disk_usage = 0 has_vcschild = False for name in filenames: try: file_lstat = os_lstat(name) if file_lstat.st_mode & 0o170000 == 0o120000: file_stat = os_stat(name) else: file_stat = file_lstat except OSError: file_lstat = None file_stat = None if file_lstat and file_stat: stats = (file_stat, file_lstat) is_a_dir = file_stat.st_mode & 0o170000 == 0o040000 else: stats = None is_a_dir = False if is_a_dir: item = self.fm.get_directory( name, preload=stats, path_is_abs=True, basename_is_rel_to=basename_is_rel_to) item.load_if_outdated() if self.flat: item.relative_path = os.path.relpath( item.path, self.path) else: item.relative_path = item.basename item.relative_path_lower = item.relative_path.lower() if item.vcs and item.vcs.track: if item.vcs.is_root_pointer: has_vcschild = True else: item.vcsstatus = \ item.vcs.rootvcs.status_subpath( # pylint: disable=no-member os.path.join(self.realpath, item.basename), is_directory=True, ) else: item = File(name, preload=stats, path_is_abs=True, basename_is_rel_to=basename_is_rel_to) item.load() disk_usage += item.size if self.vcs and self.vcs.track: item.vcsstatus = \ self.vcs.rootvcs.status_subpath( # pylint: disable=no-member os.path.join(self.realpath, item.basename)) files.append(item) self.percent = 100 * len(files) // len(filenames) yield self.has_vcschild = has_vcschild self.disk_usage = disk_usage self.filenames = filenames self.files_all = files self._clear_marked_items() for item in self.files_all: if item.path in marked_paths: item.mark_set(True) self.marked_items.append(item) else: item.mark_set(False) self.sort() if files: if self.pointed_obj is not None: self.sync_index() else: self.move(to=0) else: self.filenames = None self.files_all = None self.files = None self.cycle_list = None self.content_loaded = True self.last_update_time = time() self.correct_pointer() finally: self.loading = False self.fm.signal_emit("finished_loading_dir", directory=self) if self.vcs: self.fm.ui.vcsthread.process(self)
def load_bit_by_bit(self): """An iterator that loads a part on every next() call Returns a generator which load a part of the directory in each iteration. """ self.loading = True self.percent = 0 self.load_if_outdated() basename_is_rel_to = self.path if self.flat else None try: # pylint: disable=too-many-nested-blocks if self.runnable: yield mypath = self.path self.mount_path = mount_path(mypath) if self.flat: filelist = [] for dirpath, dirnames, filenames in walklevel(mypath, self.flat): dirlist = [ os.path.join("/", dirpath, d) for d in dirnames if self.flat == -1 or (dirpath.count(os.path.sep) - mypath.count(os.path.sep)) <= self.flat ] filelist += dirlist filelist += [os.path.join("/", dirpath, f) for f in filenames] filenames = filelist self.load_content_mtime = mtimelevel(mypath, self.flat) else: filelist = os.listdir(mypath) filenames = [mypath + (mypath == '/' and fname or '/' + fname) for fname in filelist] self.load_content_mtime = os.stat(mypath).st_mtime if self.cumulative_size_calculated: # If self.content_loaded is true, this is not the first # time loading. So I can't really be sure if the # size has changed and I'll add a "?". if self.content_loaded: if self.fm.settings.autoupdate_cumulative_size: self.look_up_cumulative_size() else: self.infostring = ' %s' % human_readable( self.size, separator='? ') else: self.infostring = ' %s' % human_readable(self.size) else: self.size = len(filelist) self.infostring = ' %d' % self.size if self.is_link: self.infostring = '->' + self.infostring yield marked_paths = [obj.path for obj in self.marked_items] files = [] disk_usage = 0 has_vcschild = False for name in filenames: try: file_lstat = os_lstat(name) if file_lstat.st_mode & 0o170000 == 0o120000: file_stat = os_stat(name) else: file_stat = file_lstat except OSError: file_lstat = None file_stat = None if file_lstat and file_stat: stats = (file_stat, file_lstat) is_a_dir = file_stat.st_mode & 0o170000 == 0o040000 else: stats = None is_a_dir = False if is_a_dir: item = self.fm.get_directory(name, preload=stats, path_is_abs=True, basename_is_rel_to=basename_is_rel_to) item.load_if_outdated() if self.flat: item.relative_path = os.path.relpath(item.path, self.path) else: item.relative_path = item.basename item.relative_path_lower = item.relative_path.lower() if item.vcs and item.vcs.track: if item.vcs.is_root_pointer: has_vcschild = True else: item.vcsstatus = \ item.vcs.rootvcs.status_subpath( # pylint: disable=no-member os.path.join(self.realpath, item.basename), is_directory=True, ) else: item = File(name, preload=stats, path_is_abs=True, basename_is_rel_to=basename_is_rel_to) item.load() disk_usage += item.size if self.vcs and self.vcs.track: item.vcsstatus = \ self.vcs.rootvcs.status_subpath( # pylint: disable=no-member os.path.join(self.realpath, item.basename)) files.append(item) self.percent = 100 * len(files) // len(filenames) yield self.has_vcschild = has_vcschild self.disk_usage = disk_usage self.filenames = filenames self.files_all = files self._clear_marked_items() for item in self.files_all: if item.path in marked_paths: item.mark_set(True) self.marked_items.append(item) else: item.mark_set(False) self.sort() if files: if self.pointed_obj is not None: self.sync_index() else: self.move(to=0) else: self.filenames = None self.files_all = None self.files = None self.cycle_list = None self.content_loaded = True self.last_update_time = time() self.correct_pointer() finally: self.loading = False self.fm.signal_emit("finished_loading_dir", directory=self) if self.vcs: self.fm.ui.vcsthread.process(self)
def load_bit_by_bit(self): """ Returns a generator which load a part of the directory in each iteration. """ self.loading = True self.load_if_outdated() try: if self.runnable: yield mypath = self.path self.mount_path = mount_path(mypath) hidden_filter = not self.settings.show_hidden \ and self.settings.hidden_filter filenames = [mypath + (mypath == '/' and fname or '/' + fname)\ for fname in os.listdir(mypath) \ if accept_file(fname, hidden_filter, self.filter)] yield self.load_content_mtime = os.stat(mypath).st_mtime marked_paths = [obj.path for obj in self.marked_items] files = [] disk_usage = 0 for name in filenames: try: file_lstat = os_lstat(name) if file_lstat.st_mode & 0o170000 == 0o120000: file_stat = os_stat(name) else: file_stat = file_lstat stats = (file_stat, file_lstat) is_a_dir = file_stat.st_mode & 0o170000 == 0o040000 except: stats = None is_a_dir = False if is_a_dir: try: item = self.fm.env.get_directory(name) item.load_if_outdated() except: item = Directory(name, preload=stats, path_is_abs=True) item.load() else: item = File(name, preload=stats, path_is_abs=True) item.load() disk_usage += item.size files.append(item) yield self.disk_usage = disk_usage self.filenames = filenames self.files = files self._clear_marked_items() for item in self.files: if item.path in marked_paths: item._mark(True) self.marked_items.append(item) else: item._mark(False) self.sort() if files: 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.last_update_time = time() self.correct_pointer() finally: self.loading = False
def load_bit_by_bit(self): """An iterator that loads a part on every next() call Returns a generator which load a part of the directory in each iteration. """ self.loading = True self.percent = 0 self.load_if_outdated() try: if self.runnable: yield mypath = self.path self.mount_path = mount_path(mypath) filelist = os.listdir(mypath) if self._cumulative_size_calculated: # If self.content_loaded is true, this is not the first # time loading. So I can't really be sure if the # size has changed and I'll add a "?". if self.content_loaded: if self.fm.settings.autoupdate_cumulative_size: self.look_up_cumulative_size() else: self.infostring = ' %s' % human_readable( self.size, separator='? ') else: self.infostring = ' %s' % human_readable(self.size) else: self.size = len(filelist) self.infostring = ' %d' % self.size if self.is_link: self.infostring = '->' + self.infostring filenames = [mypath + (mypath == '/' and fname or '/' + fname) for fname in filelist] yield self.load_content_mtime = os.stat(mypath).st_mtime marked_paths = [obj.path for obj in self.marked_items] files = [] disk_usage = 0 if self.settings.vcs_aware: self.has_vcschild = False self.load_vcs(None) for name in filenames: try: file_lstat = os_lstat(name) if file_lstat.st_mode & 0o170000 == 0o120000: file_stat = os_stat(name) else: file_stat = file_lstat stats = (file_stat, file_lstat) is_a_dir = file_stat.st_mode & 0o170000 == 0o040000 except: stats = None is_a_dir = False if is_a_dir: try: item = self.fm.get_directory(name) item.load_if_outdated() except: item = Directory(name, preload=stats, path_is_abs=True) item.load() else: item = File(name, preload=stats, path_is_abs=True) item.load() disk_usage += item.size # Load vcs data if self.settings.vcs_aware: item.load_vcs(self) if item.vcs_enabled: self.has_vcschild = True files.append(item) self.percent = 100 * len(files) // len(filenames) yield self.disk_usage = disk_usage self.vcs_outdated = False self.filenames = filenames self.files_all = files self._clear_marked_items() for item in self.files_all: if item.path in marked_paths: item._mark(True) self.marked_items.append(item) else: item._mark(False) self.sort() if files: if self.pointed_obj is not None: self.sync_index() else: self.move(to=0) else: self.filenames = None self.files_all = None self.files = None self.cycle_list = None self.content_loaded = True self.last_update_time = time() self.correct_pointer() finally: self.loading = False self.fm.signal_emit("finished_loading_dir", directory=self)
def load_bit_by_bit(self): """ Returns a generator which load a part of the directory in each iteration. """ self.loading = True self.load_if_outdated() try: if self.runnable: yield mypath = self.path self.mount_path = mount_path(mypath) hidden_filter = not self.settings.show_hidden \ and self.settings.hidden_filter filenames = [mypath + (mypath == '/' and fname or '/' + fname)\ for fname in os.listdir(mypath) if accept_file( fname, mypath, hidden_filter, self.filter)] yield self.load_content_mtime = os.stat(mypath).st_mtime marked_paths = [obj.path for obj in self.marked_items] files = [] disk_usage = 0 for name in filenames: try: file_lstat = os_lstat(name) if file_lstat.st_mode & 0o170000 == 0o120000: file_stat = os_stat(name) else: file_stat = file_lstat stats = (file_stat, file_lstat) is_a_dir = file_stat.st_mode & 0o170000 == 0o040000 except: stats = None is_a_dir = False if is_a_dir: try: item = self.fm.env.get_directory(name) item.load_if_outdated() except: item = Directory(name, preload=stats, path_is_abs=True) item.load() else: item = File(name, preload=stats, path_is_abs=True) item.load() disk_usage += item.size files.append(item) yield self.disk_usage = disk_usage self.filenames = filenames self.files = files self._clear_marked_items() for item in self.files: if item.path in marked_paths: item._mark(True) self.marked_items.append(item) else: item._mark(False) self.sort() if files: 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.last_update_time = time() self.correct_pointer() finally: self.loading = False
def load_bit_by_bit(self): """ Returns a generator which load a part of the directory in each iteration. """ self.loading = True self.percent = 0 self.load_if_outdated() try: if self.runnable: yield mypath = self.path self.mount_path = mount_path(mypath) if not self.settings.show_hidden and self.settings.hidden_filter: # COMPAT # hidden_filter used to be a regex, not a string. If an # old config is used, we don't need to re.compile it. if hasattr(self.settings.hidden_filter, 'search'): hidden_filter = self.settings.hidden_filter else: hidden_filter = re.compile(self.settings.hidden_filter) else: hidden_filter = None filelist = os.listdir(mypath) if self._cumulative_size_calculated: # If self.content_loaded is true, this is not the first # time loading. So I can't really be sure if the # size has changed and I'll add a "?". if self.content_loaded: if self.fm.settings.autoupdate_cumulative_size: self.look_up_cumulative_size() else: self.infostring = ' %s' % human_readable( self.size, separator='? ') else: self.infostring = ' %s' % human_readable(self.size) else: self.size = len(filelist) self.infostring = ' %d' % self.size if self.is_link: self.infostring = '->' + self.infostring filenames = [mypath + (mypath == '/' and fname or '/' + fname)\ for fname in filelist if accept_file( fname, mypath, hidden_filter, self.filter)] yield self.load_content_mtime = os.stat(mypath).st_mtime marked_paths = [obj.path for obj in self.marked_items] files = [] disk_usage = 0 for name in filenames: try: file_lstat = os_lstat(name) if file_lstat.st_mode & 0o170000 == 0o120000: file_stat = os_stat(name) else: file_stat = file_lstat stats = (file_stat, file_lstat) is_a_dir = file_stat.st_mode & 0o170000 == 0o040000 except: stats = None is_a_dir = False if is_a_dir: try: item = self.fm.get_directory(name) item.load_if_outdated() except: item = Directory(name, preload=stats, path_is_abs=True) item.load() else: item = File(name, preload=stats, path_is_abs=True) item.load() disk_usage += item.size files.append(item) self.percent = 100 * len(files) // len(filenames) yield self.disk_usage = disk_usage self.filenames = filenames self.files = files self._clear_marked_items() for item in self.files: if item.path in marked_paths: item._mark(True) self.marked_items.append(item) else: item._mark(False) self.sort() if files: 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.last_update_time = time() self.correct_pointer() finally: self.loading = False self.fm.signal_emit("finished_loading_dir", directory=self)