|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module ranger.applications</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> <br>
<font color="#ffffff" face="helvetica, arial"> <br><big><big><strong><a href="ranger.html"><font color="#ffffff">ranger</font></a>.applications</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/applications.py">/home/hut/work/ranger/ranger/applications.py</a></font></td></tr></table>
<p><tt># Copyright (c) 2009, 2010 hut <hut@lavabit.com><br>
#<br>
# Permission to use, copy, modify, and/or distribute this software for any<br>
# purpose with or without fee is hereby granted, provided that the above<br>
# copyright notice and this permission notice appear in all copies.<br>
#<br>
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES<br>
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF<br>
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR<br>
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES<br>
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN<br>
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF<br>
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt> </tt></td><td> </td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="os.html">os</a><br>
</td><td width="25%" valign=top><a href="sys.html">sys</a><br>
</td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt> </tt></td><td> </td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="builtins.html#object">builtins.object</a>
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="ranger.applications.html#AppContext">AppContext</a>
</font></dt><dt><font face="helvetica, arial"><a href="ranger.applications.html#Applications">Applications</a>
</font></dt></dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom> <br>
<font color="#000000" face="helvetica, arial"><a name="AppContext">class <strong>AppContext</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
<td colspan=2><tt>An <a href="#AppContext">AppContext</a> <a href="builtins.html#object">object</a> abstracts the spawning of processes.<br>
<br>
At initialization of the <a href="builtins.html#object">object</a> you can define many high-level options.<br>
When you call the <a href="#AppContext-run">run</a>() function, those options are evaluated and<br>
translated into Popen() calls.<br>
<br>
An instances of this class is passed as the only argument to<br>
app_xyz calls of the <a href="#Applications">Applications</a> <a href="builtins.html#object">object</a>.<br>
<br>
Attributes:<br>
action -- a string with a command or a list of arguments for<br>
the Popen call.<br>
app -- the name of the app function. ("vim" for app_vim.)<br>
app is used to get an action if the user didn't specify one.<br>
mode -- a number, mainly used in determining the action in app_xyz()<br>
flags -- a string with flags which change the way programs are run<br>
files -- a list containing files, mainly used in app_xyz<br>
file -- an arbitrary file from that list (or None)<br>
fm -- the filemanager instance<br>
wait -- boolean, wait for the end or execute programs in parallel?<br>
stdout -- directly passed to Popen<br>
stderr -- directly passed to Popen<br>
stdin -- directly passed to Popen<br>
shell -- directly passed to Popen. Should the string be shell-interpreted?<br>
<br>
List of allowed flags:<br>
s: silent mode. output will be discarded.<br>
d: detach the process.<br>
p: redirect output to the pager<br>
<br>
An uppercase key ensures that a certain flag will not be used.<br> </tt></td></tr>
<tr><td> </td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="AppContext-__init__"><strong>__init__</strong></a>(self, app<font color="#909090">='default'</font>, files<font color="#909090">=None</font>, mode<font color="#909090">=0</font>, flags<font color="#909090">=''</font>, fm<font color="#909090">=None</font>, stdout<font color="#909090">=None</font>, stderr<font color="#909090">=None</font>, stdin<font color="#909090">=None</font>, shell<font color="#909090">=None</font>, wait<font color="#909090">=True</font>, action<font color="#909090">=None</font>)</dt><dd><tt>The necessary parameters are fm and action or app.</tt></dd></dl>
<dl><dt><a name="AppContext-__iter__"><strong>__iter__</strong></a>(self)</dt><dd><tt>Iterates over all file paths</tt></dd></dl>
<dl><dt><a name="AppContext-get_action"><strong>get_action</strong></a>(self, apps<font color="#909090">=None</font>)</dt><dd><tt>Get the action from app_xyz</tt></dd></dl>
<dl><dt><a name="AppContext-run"><strong>run</strong></a>(self)</dt><dd><tt>Run the application in the way specified by the options.<br>
<br>
Returns False if nothing can be done, None if there was an error,<br>
otherwise the process <a href="builtins.html#object">object</a> returned by Popen().<br>
<br>
This function tries to find an action if none is defined.</tt></dd></dl>
<dl><dt><a name="AppContext-squash_flags"><strong>squash_flags</strong></a>(self)</dt><dd><tt>Remove duplicates and lowercase counterparts of uppercase flags</tt></dd></dl>
<hr>
Data descriptors defined here:<br>
<dl><dt><strong>__dict__</strong></dt>
<dd><tt>dictionary for instance variables (if defined)</tt></dd>
</dl>
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list of weak references to the object (if defined)</tt></dd>
</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom> <br>
<font color="#000000" face="helvetica, arial"><a name="Applications">class <strong>Applications</strong></a>(<a href="builtins.html#object">builtins.object</a>)</font></td></tr>
<tr bgcolor="#ffc8d8"><td rowspan=2><tt> </tt></td>
<td colspan=2><tt>This class contains definitions on how to run programs and should<br>
be extended in ranger.defaults.apps<br>
<br>
The user can decide what program to run, and if he uses eg. 'vim', the<br>
function app_vim() will be called. However, usually the user<br>
simply wants to "start" the file without specific instructions.<br>
In such a case, app_default() is called, where you should examine<br>
the context and decide which program to use.<br>
<br>
All app functions have a name starting with app_ and return a string<br>
containing the whole command or a tuple containing a list of the<br>
arguments.<br>
It has one argument, which is the <a href="#AppContext">AppContext</a> instance.<br>
<br>
You should define app_default, app_pager and app_editor since<br>
internal functions depend on those. Here are sample implementations:<br>
<br>
def app_default(self, context):<br>
if context.file.media:<br>
if context.file.video:<br>
# detach videos from the filemanager<br>
context.flags += 'd'<br>
return app_mplayer(context)<br>
else:<br>
return app_editor(context)<br>
<br>
def app_pager(self, context):<br>
return ('less', ) + tuple(context)<br>
<br>
def app_editor(self, context):<br>
return ('vim', ) + tuple(context)<br> </tt></td></tr>
<tr><td> </td>
<td width="100%">Methods defined here:<br>
<dl><dt><a name="Applications-all"><strong>all</strong></a>(self)</dt><dd><tt>Returns a list with all application functions</tt></dd></dl>
<dl><dt><a name="Applications-app_self"><strong>app_self</strong></a>(self, context)</dt><dd><tt>Run the file itself</tt></dd></dl>
<dl><dt><a name="Applications-get"><strong>get</strong></a>(self, app)</dt><dd><tt>Looks for an application, returns app_default if it doesn't exist</tt></dd></dl>
<dl><dt><a name="Applications-has"><strong>has</strong></a>(self, app)</dt><dd><tt>Returns whether an application is defined</tt></dd></dl>
<hr>
Data descriptors defined here:<br>
<dl><dt><strong>__dict__</strong></dt>
<dd><tt>dictionary for instance variables (if defined)</tt></dd>
</dl>
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list of weak references to the object (if defined)</tt></dd>
</dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt> </tt></td><td> </td>
<td width="100%"><dl><dt><a name="-run"><strong>run</strong></a>(action<font color="#909090">=None</font>, **kw)</dt><dd><tt>Shortcut for creating and immediately running an <a href="#AppContext">AppContext</a>.</tt></dd></dl>
<dl><dt><a name="-tup"><strong>tup</strong></a>(*args)</dt><dd><tt>This helper function creates a tuple out of the arguments.<br>
<br>
('a', ) + tuple(some_iterator)<br>
is equivalent to:<br>
<a href="#-tup">tup</a>('a', *some_iterator)</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom> <br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt> </tt></td><td> </td>
<td width="100%"><strong>ALLOWED_FLAGS</strong> = 'sdpSDP'<br>
<strong>PIPE</strong> = -1<br>
<strong>devnull</strong> = <_io.TextIOWrapper name='/dev/null' encoding='UTF-8'></td></tr></table>
</body></html>
|