summary refs log blame commit diff stats
path: root/doc/pydoc/ranger.defaults.options.html
blob: 095423481255ce873486753f50288a62d5a3f19d (plain) (tree)








































                                                                                                                                                                                                                                                        
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module ranger.defaults.options</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head><body bgcolor="#f0f0f8">

<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="ranger.html"><font color="#ffffff">ranger</font></a>.<a href="ranger.defaults.html"><font color="#ffffff">defaults</font></a>.options</strong></big></big></font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/home/hut/work/ranger/ranger/defaults/options.py">/home/hut/work/ranger/ranger/defaults/options.py</a></font></td></tr></table>
    <p></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
    
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="ranger.defaults.apps.html">ranger.defaults.apps</a><br>
</td><td width="25%" valign=top><a href="ranger.colorschemes.default.html">ranger.colorschemes.default</a><br>
</td><td width="25%" valign=top><a href="ranger.colorschemes.html">ranger.colorschemes</a><br>
</td><td width="25%" valign=top><a href="ranger.defaults.keys.html">ranger.defaults.keys</a><br>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
    
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>auto_load_preview</strong> = True<br>
<strong>collapse_preview</strong> = True<br>
<strong>directories_first</strong> = True<br>
<strong>max_dirsize_for_autopreview</strong> = None<br>
<strong>max_history_size</strong> = 20<br>
<strong>preview_files</strong> = False<br>
<strong>reverse</strong> = False<br>
<strong>scroll_offset</strong> = 2<br>
<strong>show_hidden</strong> = False<br>
<strong>sort</strong> = 'basename'</td></tr></table>
</body></html>
container, document, image, media, video) = (False,) * 21 size = 0 def __init__(self, path, preload=None, path_is_abs=False): if not path_is_abs: path = abspath(path) self.path = path self.basename = basename(path) self.basename_lower = self.basename.lower() self.extension = splitext(self.basename)[1].lstrip(extsep) or None self.dirname = dirname(path) self.preload = preload self.display_data = {} try: lastdot = self.basename.rindex('.') + 1 self.extension = self.basename[lastdot:].lower() except ValueError: self.extension = None def __repr__(self): return "<{0} {1}>".format(self.__class__.__name__, self.path) @lazy_property def shell_escaped_basename(self): return shell_escape(self.basename) @lazy_property def filetype(self): try: return spawn(["file", '-Lb', '--mime-type', self.path]) except OSError: return "" @lazy_property def basename_natural(self): return [c if i % 3 == 1 else (int(c) if c else 0) for i, c in \ enumerate(_extract_number_re.split(self.basename))] @lazy_property def basename_natural_lower(self): return [c if i % 3 == 1 else (int(c) if c else 0) for i, c in \ enumerate(_extract_number_re.split(self.basename_lower))] @lazy_property def safe_basename(self): return self.basename.translate(_safe_string_table) for attr in ('video', 'audio', 'image', 'media', 'document', 'container'): exec("%s = lazy_property(" "lambda self: self.set_mimetype() or self.%s)" % (attr, attr)) def __str__(self): """returns a string containing the absolute path""" return str(self.path) def use(self): """Used in garbage-collecting. Override in Directory""" def look_up_cumulative_size(self): pass # normal files have no cumulative size def set_mimetype(self): """assign attributes such as self.video according to the mimetype""" basename = self.basename if self.extension == 'part': basename = basename[0:-5] self._mimetype = self.fm.mimetypes.guess_type(basename, False)[0] if self._mimetype is None: self._mimetype = '' self.video = self._mimetype.startswith('video') self.image = self._mimetype.startswith('image') self.audio = self._mimetype.startswith('audio') self.media = self.video or self.image or self.audio self.document = self._mimetype.startswith('text') \ or self.extension in DOCUMENT_EXTENSIONS \ or self.basename.lower() in DOCUMENT_BASENAMES self.container = self.extension in CONTAINER_EXTENSIONS keys = ('video', 'audio', 'image', 'media', 'document', 'container') self._mimetype_tuple = tuple(key for key in keys if getattr(self, key)) if self._mimetype == '': self._mimetype = None @property def mimetype(self): try: return self._mimetype except: self.set_mimetype() return self._mimetype @property def mimetype_tuple(self): try: return self._mimetype_tuple except: self.set_mimetype() return self._mimetype_tuple def mark(self, boolean): directory = self.fm.get_directory(self.dirname) directory.mark_item(self) def _mark(self, boolean): """Called by directory.mark_item() and similar functions""" self.marked = bool(boolean) @lazy_property def realpath(self): if self.is_link: try: return realpath(self.path) except: return None # it is impossible to get the link destination return self.path def load(self): """Loads information about the directory itself. reads useful information about the filesystem-object from the filesystem and caches it for later use """ self.display_data = {} self.fm.update_preview(self.path) self.loaded = True # Get the stat object, either from preload or from [l]stat self.permissions = None new_stat = None path = self.path is_link = False if self.preload: new_stat = self.preload[1] self.is_link = new_stat.st_mode & 0o170000 == 0o120000 if self.is_link: new_stat = self.preload[0] self.preload = None self.exists = True if new_stat else False else: try: new_stat = lstat(path) self.is_link = new_stat.st_mode & 0o170000 == 0o120000 if self.is_link: new_stat = stat(path) self.exists = True except: self.exists = False # Set some attributes self.accessible = True if new_stat else False mode = new_stat.st_mode if new_stat else 0 format = mode & 0o170000 if format == 0o020000 or format == 0o060000: # stat.S_IFCHR/BLK self.is_device = True self.size = 0 self.infostring = 'dev' elif format == 0o010000: # stat.S_IFIFO self.is_fifo = True self.size = 0 self.infostring = 'fifo' elif format == 0o140000: # stat.S_IFSOCK self.is_socket = True self.size = 0 self.infostring = 'sock' elif self.is_file: if new_stat: self.size = new_stat.st_size self.infostring = ' ' + human_readable(self.size) else: self.size = 0 self.infostring = '?' if self.is_link and not self.is_directory: self.infostring = '->' + self.infostring self.stat = new_stat def get_permission_string(self): if self.permissions is not None: return self.permissions if self.is_directory: perms = ['d'] elif self.is_link: perms = ['l'] else: perms = ['-'] mode = self.stat.st_mode test = 0o0400 while test: # will run 3 times because 0o400 >> 9 = 0 for what in "rwx": if mode & test: perms.append(what) else: perms.append('-') test >>= 1 self.permissions = ''.join(perms) return self.permissions def load_if_outdated(self): """Calls load() if the currently cached information is outdated""" if not self.loaded: self.load() return True try: real_ctime = lstat(self.path).st_ctime except OSError: real_ctime = None if not self.stat or self.stat.st_ctime != real_ctime: self.load() return True return False