def run(self, edit): self.edit = edit self.prompt_region = Region(0, self.view.size()) content = expanduser(self.view.substr(self.prompt_region)) path, prefix = os.path.split(content) if not isdir(content) else (content, '') if not valid(path or content): return completions = [n for n in os.listdir(path) if n.upper().startswith(prefix.upper()) and isdir(join(path, n))] sort_nicely(completions) common = os.path.commonprefix([f.upper() for f in completions]) new_content = '' if not completions: return sublime.status_message('No matches') if len(completions) == 1: new_content = join(path, completions[0]) + os.sep elif common and common > prefix: new_content = join(path, common) if new_content: self.fill_prompt(new_content) else: self.completions = completions self.path = path self.w = self.view.window() or sublime.active_window() return self.w.show_quick_panel(completions, self.on_done)
def worker(self, path): self.preview_path = '📁 <a href="dir\v{0}">{0}</a>'.format(path) self.subdirs = self.files = self.size = 0 self.errors = [] self.open_dirs = [] self.open_files = [] self._created, self._accessed, self._modified = get_dates(path) def add_err(err): self.errors.append(str(err)) for index, (root, dirs, files) in enumerate(os.walk(path, onerror=add_err)): self.subdirs += len(dirs) self.files += len(files) if not index: sort_nicely(dirs) sort_nicely(files) self.open_dirs = ['📁 <a href="dir\v%s%s">%s</a>' % (join(root, d), os.sep, d) for d in dirs] self.open_files = [] for f in files: fpath = join(root, f) if not index: self.open_files.append('≡ <a href="file\v%s">%s</a>' % (fpath, f)) try: self.size += getsize(fpath) except OSError as e: add_err(e) if not self.view.is_popup_visible() or self.view.settings().get('dired_stop_preview_thread'): return sublime.set_timeout_async(self.update_preview(), 1) sublime.set_timeout_async(self.update_preview(loading=False), 1)
def vid_proto_from_dir(root_dir, vid_name=None): vid = {} vid['root_path'] = root_dir frames = [] frame_list = [i for i in os.listdir(root_dir) if isimg(i)] sort_nicely(frame_list) for index, path in enumerate(frame_list): frames.append({'frame': index+1, 'path': path}) vid['frames'] = frames if not vid_name: # infer video namke from root_dir if not provided vid_name = stem(root_dir) vid['video'] = vid_name return vid
def worker(self, path): self.preview_path = '📁 <a href="dir\v{0}">{0}</a>'.format(path) self.subdirs = self.files = self.size = 0 self.errors = [] self.open_dirs = [] self.open_files = [] self._created, self._accessed, self._modified = get_dates(path) def add_err(err): self.errors.append(str(err)) for index, (root, dirs, files) in enumerate(os.walk(path, onerror=add_err)): self.subdirs += len(dirs) self.files += len(files) if not index: sort_nicely(dirs) sort_nicely(files) self.open_dirs = [ '📁 <a href="dir\v%s%s">%s</a>' % (join(root, d), os.sep, d) for d in dirs ] self.open_files = [] for f in files: fpath = join(root, f) if not index: self.open_files.append('≡ <a href="file\v%s">%s</a>' % (fpath, f)) try: self.size += getsize(fpath) except OSError as e: add_err(e) if not self.view.is_popup_visible() or self.view.settings().get( 'dired_stop_preview_thread'): return sublime.set_timeout_async(self.update_preview(), 1) sublime.set_timeout_async(self.update_preview(loading=False), 1)