def _extcompare(x, y, rev): if rev: ret = util.cmp(util.extname(y.name), util.extname(x.name)) else: ret = util.cmp(util.extname(x.name), util.extname(y.name)) if ret == 0: return util.cmp(y.name, x.name) if rev else util.cmp(x.name, y.name) else: return ret
def _rename(): """Invoke command line of rename mode.""" filer = widgets.filer cmdline = widgets.cmdline if filer.dir.ismark(): cmdline.start(mode.Replace()) else: cmdline.start(mode.Rename(), filer.file.name, -len(util.extname(filer.file.name))-1)
def loadprograms(self): osname = sys.platform self.__class__.programs[:] = [] for path in os.getenv("PATH").split(os.pathsep): try: files = os.listdir(path) except OSError: continue for f in files: if osname == "cygwin": ext = util.extname(f) if ext != ".exe": continue f = f.replace(ext, "") self.programs.append(f) self.programs.sort()
def _unpack2(): """Unpack file of tar, zip and rar to current directory.""" ext = util.extname(widgets.filer.file.name) cmdline = widgets.cmdline if ext == ".gz" : cmdline.start(mode.Shell(), "tar xvfz %f -C %D") elif ext == ".tgz": cmdline.start(mode.Shell(), "tar xvfz %f -C %D") elif ext == ".bz2": cmdline.start(mode.Shell(), "tar xvfj %f -C %D") elif ext == ".tar": cmdline.start(mode.Shell(), "tar xvf %f -C %D") elif ext == ".rar": cmdline.start(mode.Shell(), "rar x %f -C %D") elif ext == ".zip": cmdline.start(mode.Shell(), "unzip %f -d %D") elif ext == ".xpi": cmdline.start(mode.Shell(), "unzip %f -d %D") elif ext == ".jar": cmdline.start(mode.Shell(), "unzip %f -d %D")
def _fileviewer(): """File view by tar, zipinfo, unrar, 7z and Pyful.environs["PAGER"].""" ext = util.extname(widgets.filer.file.name) pager = Pyful.environs["PAGER"] if ".gz" == ext: process.spawn("tar tvfz %f | "+ pager) elif ".tgz" == ext: process.spawn("tar tvfz %f | "+ pager) elif ".bz2" == ext: process.spawn("tar tvfj %f | "+ pager) elif ".tar" == ext: process.spawn("tar tvf %f | "+ pager) elif ".zip" == ext: process.spawn("zipinfo %f | "+ pager) elif ".rar" == ext: process.spawn("unrar l %f | "+ pager) elif ".7z" == ext: process.spawn("7z l %f | "+ pager) else: process.spawn(pager+" %f")
def get_file_stat(self): fstat = "" if self.draw_ext and not self.isdir() and not self.islink(): fstat += " {0}".format(util.extname(self.name)) if self.draw_user: fstat += " {0}".format(self.get_user_name()) if self.draw_group: fstat += " {0}".format(self.get_group_name()) if self.draw_nlink: fstat += " {0:>3}".format(self.stat.st_nlink) if self.draw_size: if self.isdir(): fstat += " {0:>7}".format("<DIR>") else: fstat += " {0:>7}".format(self.get_file_size()) if self.draw_permission: fstat += " {0}".format(self.get_permission()) if self.draw_mtime: fstat += " {0}".format(self.get_mtime()) return fstat
def input(self, key): if self.pager.active: self.pager.input(key) return if self.finder.active: if not self.finder.input(key): return kmap = self.keymap f = self.file ext = util.extname(f.name) if f.marked and (key, ".mark") in kmap: kmap[(key, ".mark")]() elif f.islink() and (key, ".link") in kmap: kmap[(key, ".link")]() elif f.isdir() and (key, ".dir") in kmap: kmap[(key, ".dir")]() elif f.isexec() and (key, ".exec") in kmap: kmap[(key, ".exec")]() elif ext and (key, ext) in kmap: kmap[(key, ext)]() else: if key in kmap: kmap[key]()
def extract(self, source): mode = self.tarmodes.get(util.extname(source), "gz") try: import tarfile tar = tarfile.open(source, "r:"+mode) except Exception as e: message.exception(e) raise FilectrlCancel("Exception occurred while `untar'") try: for info in tar.getmembers(): if not self.active: raise FilectrlCancel(self.title) self.update("Extracting: {0}".format(info.name)) tar.extract(info, self.dstdir) self.notify("Extracted: {0}".format(info.name)) if info.isdir(): self.dirlist.append(info) finally: for dinfo in reversed(sorted(self.dirlist, key=lambda a: a.name)): dirpath = os.path.join(self.dstdir, dinfo.name) os.utime(dirpath, (dinfo.mtime, dinfo.mtime)) self.dirlist[:] = [] tar.close()