[X2Go-Commits] python-x2go.git - build-baikal (branch) updated: efa7e704ac2aea6b04d290015e074ea5d1b3e8a5
X2Go dev team
git-admin at x2go.org
Wed Jan 8 15:25:17 CET 2014
The branch, build-baikal has been updated
via efa7e704ac2aea6b04d290015e074ea5d1b3e8a5 (commit)
from 3ba383429d71413734999e9d24a7886a41c63385 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
build-for-reprepro.sh | 41 ++
...html => toc-x2go.gevent_subprocess-module.html} | 14 +-
...-module.html => toc-x2go.mimetypes-module.html} | 16 +-
...es-module.html => toc-x2go.xserver-module.html} | 13 +-
...ule.html => x2go.gevent_subprocess-module.html} | 38 +-
doc/html/x2go.gevent_subprocess-pysrc.html | 317 +++++++++++
...tml => x2go.gevent_subprocess.Popen-class.html} | 121 +++--
...ting-module.html => x2go.mimetypes-module.html} | 99 +---
doc/html/x2go.mimetypes-pysrc.html | 562 ++++++++++++++++++++
...> x2go.mimetypes.X2goMIMETypeAction-class.html} | 113 ++--
...=> x2go.mimetypes.X2goMIMETypeQueue-class.html} | 84 ++-
...html => x2go.mimetypes.X2goPrintJob-class.html} | 16 +-
...gistry-module.html => x2go.xserver-module.html} | 21 +-
...settings-pysrc.html => x2go.xserver-pysrc.html} | 167 +++---
...l => x2go.xserver.X2goClientXConfig-class.html} | 76 ++-
...ss.html => x2go.xserver.X2goXServer-class.html} | 38 +-
x2go/gevent_subprocess.py | 197 +++++++
x2go/mimetypes.py | 281 ++++++++++
x2go/xserver.py | 92 ++++
19 files changed, 1853 insertions(+), 453 deletions(-)
create mode 100755 build-for-reprepro.sh
copy doc/html/{toc-x2go.client-module.html => toc-x2go.gevent_subprocess-module.html} (59%)
copy doc/html/{toc-x2go.guardian-module.html => toc-x2go.mimetypes-module.html} (53%)
copy doc/html/{toc-x2go.inifiles-module.html => toc-x2go.xserver-module.html} (64%)
copy doc/html/{x2go.registry-module.html => x2go.gevent_subprocess-module.html} (84%)
create mode 100644 doc/html/x2go.gevent_subprocess-pysrc.html
copy doc/html/{x2go.rforward.X2goRevFwChannelThread-class.html => x2go.gevent_subprocess.Popen-class.html} (67%)
copy doc/html/{x2go.printing-module.html => x2go.mimetypes-module.html} (66%)
create mode 100644 doc/html/x2go.mimetypes-pysrc.html
copy doc/html/{x2go.printing.X2goPrintAction-class.html => x2go.mimetypes.X2goMIMETypeAction-class.html} (67%)
copy doc/html/{x2go.printing.X2goPrintQueue-class.html => x2go.mimetypes.X2goMIMETypeQueue-class.html} (74%)
copy doc/html/{x2go.printing.X2goPrintJob-class.html => x2go.mimetypes.X2goPrintJob-class.html} (91%)
copy doc/html/{x2go.registry-module.html => x2go.xserver-module.html} (86%)
copy doc/html/{x2go.settings-pysrc.html => x2go.xserver-pysrc.html} (56%)
copy doc/html/{x2go.settings.X2goClientSettings-class.html => x2go.xserver.X2goClientXConfig-class.html} (67%)
copy doc/html/{x2go.printing.X2goPrintJob-class.html => x2go.xserver.X2goXServer-class.html} (82%)
create mode 100644 x2go/gevent_subprocess.py
create mode 100644 x2go/mimetypes.py
create mode 100644 x2go/xserver.py
The diff of changes is:
diff --git a/build-for-reprepro.sh b/build-for-reprepro.sh
new file mode 100755
index 0000000..e7a1220
--- /dev/null
+++ b/build-for-reprepro.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# Copyright (C) 2010 by Mike Gabriel <m.gabriel at das-netzwerkteam.de>
+#
+# This programme is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This programme is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+PACKAGE=python-x2go
+
+rm -f ../$PACKAGE_*.changes
+rm -f ../$PACKAGE_*.upload
+rm -f ../$PACKAGE_*.build
+rm -f ../$PACKAGE_*.dsc
+rm -f ../$PACKAGE_*.tar.gz
+rm -f ../$PACKAGE*.deb
+
+cp debian/changelog debian/changelog.new
+editor debian/changelog.new
+mv debian/changelog.new debian/changelog
+
+make -f Makefile.pre-debuild all docupload
+
+debuild
+
+cd ..
+rm -f $PACKAGE_*.upload
+dupload --to nwt-ubuntu $PACKAGE_*.changes
+rm -f $PACKAGE_*.upload
+dupload --to nwt-debian $PACKAGE_*.changes
diff --git a/doc/html/toc-x2go.client-module.html b/doc/html/toc-x2go.gevent_subprocess-module.html
similarity index 59%
copy from doc/html/toc-x2go.client-module.html
copy to doc/html/toc-x2go.gevent_subprocess-module.html
index 832d03a..536baa4 100644
--- a/doc/html/toc-x2go.client-module.html
+++ b/doc/html/toc-x2go.gevent_subprocess-module.html
@@ -3,20 +3,22 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>client</title>
+ <title>gevent_subprocess</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
-<h1 class="toc">Module client</h1>
+<h1 class="toc">Module gevent_subprocess</h1>
<hr />
<h2 class="toc">Classes</h2>
- <a target="mainFrame" href="x2go.client.X2goClient-class.html"
- >X2goClient</a><br /> <h2 class="toc">Variables</h2>
- <a target="mainFrame" href="x2go.client-module.html#__NAME__"
- >__NAME__</a><br /> <a target="mainFrame" href="x2go.client-module.html#__package__"
+ <a target="mainFrame" href="x2go.gevent_subprocess.Popen-class.html"
+ >Popen</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="x2go.gevent_subprocess-module.html#MAXFD"
+ >MAXFD</a><br /> <a target="mainFrame" href="x2go.gevent_subprocess-module.html#PIPE"
+ >PIPE</a><br /> <a target="mainFrame" href="x2go.gevent_subprocess-module.html#STDOUT"
+ >STDOUT</a><br /> <a target="mainFrame" href="x2go.gevent_subprocess-module.html#__package__"
>__package__</a><br /><hr />
<script type="text/javascript">
diff --git a/doc/html/toc-x2go.guardian-module.html b/doc/html/toc-x2go.mimetypes-module.html
similarity index 53%
copy from doc/html/toc-x2go.guardian-module.html
copy to doc/html/toc-x2go.mimetypes-module.html
index e9d88c6..0190ef8 100644
--- a/doc/html/toc-x2go.guardian-module.html
+++ b/doc/html/toc-x2go.mimetypes-module.html
@@ -3,20 +3,24 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>guardian</title>
+ <title>mimetypes</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
-<h1 class="toc">Module guardian</h1>
+<h1 class="toc">Module mimetypes</h1>
<hr />
<h2 class="toc">Classes</h2>
- <a target="mainFrame" href="x2go.guardian.X2goSessionGuardian-class.html"
- >X2goSessionGuardian</a><br /> <h2 class="toc">Variables</h2>
- <a target="mainFrame" href="x2go.guardian-module.html#__NAME__"
- >__NAME__</a><br /> <a target="mainFrame" href="x2go.guardian-module.html#__package__"
+ <a target="mainFrame" href="x2go.mimetypes.X2goMIMETypeAction-class.html"
+ >X2goMIMETypeAction</a><br /> <a target="mainFrame" href="x2go.mimetypes.X2goMIMETypeQueue-class.html"
+ >X2goMIMETypeQueue</a><br /> <a target="mainFrame" href="x2go.mimetypes.X2goPrintJob-class.html"
+ >X2goPrintJob</a><br /> <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="x2go.mimetypes-module.html#x2go_printjob_handler"
+ >x2go_printjob_handler</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="x2go.mimetypes-module.html#__NAME__"
+ >__NAME__</a><br /> <a target="mainFrame" href="x2go.mimetypes-module.html#__package__"
>__package__</a><br /><hr />
<script type="text/javascript">
diff --git a/doc/html/toc-x2go.inifiles-module.html b/doc/html/toc-x2go.xserver-module.html
similarity index 64%
copy from doc/html/toc-x2go.inifiles-module.html
copy to doc/html/toc-x2go.xserver-module.html
index 66294e0..4a8ef74 100644
--- a/doc/html/toc-x2go.inifiles-module.html
+++ b/doc/html/toc-x2go.xserver-module.html
@@ -3,20 +3,21 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>inifiles</title>
+ <title>xserver</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
-<h1 class="toc">Module inifiles</h1>
+<h1 class="toc">Module xserver</h1>
<hr />
<h2 class="toc">Classes</h2>
- <a target="mainFrame" href="x2go.inifiles.X2goIniFile-class.html"
- >X2goIniFile</a><br /> <h2 class="toc">Variables</h2>
- <a target="mainFrame" href="x2go.inifiles-module.html#__NAME__"
- >__NAME__</a><br /> <a target="mainFrame" href="x2go.inifiles-module.html#__package__"
+ <a target="mainFrame" href="x2go.xserver.X2goClientXConfig-class.html"
+ >X2goClientXConfig</a><br /> <a target="mainFrame" href="x2go.xserver.X2goXServer-class.html"
+ >X2goXServer</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="x2go.xserver-module.html#__NAME__"
+ >__NAME__</a><br /> <a target="mainFrame" href="x2go.xserver-module.html#__package__"
>__package__</a><br /><hr />
<script type="text/javascript">
diff --git a/doc/html/x2go.registry-module.html b/doc/html/x2go.gevent_subprocess-module.html
similarity index 84%
copy from doc/html/x2go.registry-module.html
copy to doc/html/x2go.gevent_subprocess-module.html
index 1a70a24..44fd8c5 100644
--- a/doc/html/x2go.registry-module.html
+++ b/doc/html/x2go.gevent_subprocess-module.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.registry</title>
+ <title>x2go.gevent_subprocess</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,7 +43,7 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- Module registry
+ Module gevent_subprocess
</span>
</td>
<td>
@@ -51,16 +51,16 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.registry-module.html"
+ >] | <a href="x2go.gevent_subprocess-module.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
-<h1 class="epydoc">Module registry</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.registry-pysrc.html">source code</a></span></p>
-<p>X2goSessionRegistry class - the X2goClient's session registry
- backend</p>
+<h1 class="epydoc">Module gevent_subprocess</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.gevent_subprocess-pysrc.html">source code</a></span></p>
+<p>Implementation of the standard :mod:`subprocess` module that spawns
+ greenlets</p>
<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
@@ -74,15 +74,7 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="x2go.registry.X2goRegisteredSession-class.html" class="summary-name">X2goRegisteredSession</a>
- </td>
- </tr>
-<tr>
- <td width="15%" align="right" valign="top" class="summary">
- <span class="summary-type"> </span>
- </td><td class="summary">
- <a href="x2go.registry.X2goSessionRegistry-class.html" class="summary-name">X2goSessionRegistry</a><br />
- STILL UNDOCUMENTED
+ <a href="x2go.gevent_subprocess.Popen-class.html" class="summary-name">Popen</a>
</td>
</tr>
</table>
@@ -98,7 +90,21 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="__NAME__"></a><span class="summary-name">__NAME__</span> = <code title="'x2gosessregistry-pylib'"><code class="variable-quote">'</code><code class="variable-string">x2gosessregistry-pylib</code><code class="variable-quote">'</code></code>
+ <a name="MAXFD"></a><span class="summary-name">MAXFD</span> = <code title="1024">1024</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="PIPE"></a><span class="summary-name">PIPE</span> = <code title="-1">-1</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="STDOUT"></a><span class="summary-name">STDOUT</span> = <code title="-2">-2</code>
</td>
</tr>
<tr>
diff --git a/doc/html/x2go.gevent_subprocess-pysrc.html b/doc/html/x2go.gevent_subprocess-pysrc.html
new file mode 100644
index 0000000..9802c44
--- /dev/null
+++ b/doc/html/x2go.gevent_subprocess-pysrc.html
@@ -0,0 +1,317 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>x2go.gevent_subprocess</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="x2go-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://www.x2go.org">Python X2go</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="x2go-module.html">Package x2go</a> ::
+ Module gevent_subprocess
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="x2go.gevent_subprocess-pysrc.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="x2go.gevent_subprocess-module.html">Module x2go.gevent_subprocess</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: utf-8 -*-</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2010 by Mike Gabriel <m.gabriel at das-netzwerkteam.de></tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Python X2go is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># the Free Software Foundation; either version 3 of the License, or</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># (at your option) any later version.</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># Python X2go is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># GNU General Public License for more details.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># along with this program; if not, write to the</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># Free Software Foundation, Inc.,</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"># 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-comment"># found here: http://groups.google.com/group/gevent/browse_thread/thread/dba1a5d29e0a60ff</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-comment"># Mark Visser <mjmvisser at gmail.com></tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring">"""Implementation of the standard :mod:`subprocess` module that spawns greenlets"""</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">errno</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">fcntl</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-name">_subprocess</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-string">'subprocess'</tt><tt class="py-op">)</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">gevent</tt> <tt class="py-keyword">import</tt> <tt class="py-name">socket</tt><tt class="py-op">,</tt> <tt class="py-name">select</tt><tt class="py-op">,</tt> <tt class="py-name">hub</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-comment"># identical to original</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-name">CalledProcessError</tt> <tt class="py-op">=</tt> <tt class="py-name">_subprocess</tt><tt class="py-op">.</tt><tt class="py-name">CalledProcessError</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable x2go.gevent_subprocess.MAXFD=x2go.gevent_subprocess-module.html#MAXFD"><a title="x2go.gevent_subprocess.MAXFD" class="py-name" href="#" onclick="return doclink('link-0', 'MAXFD', 'link-0');">MAXFD</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_subprocess</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="x2go.gevent_subprocess.MAXFD" class="py-name" href="#" onclick="return doclink('link-1', 'MAXFD', 'link-0');">MAXFD</a></tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable x2go.gevent_subprocess.PIPE=x2go.gevent_subprocess-module.html#PIPE"><a title="x2go.gevent_subprocess.PIPE" class="py-name" href="#" onclick="return doclink('link-2', 'PIPE', 'link-2');">PIPE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_subprocess</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="x2go.gevent_subprocess.PIPE" class="py-name" href="#" onclick="return doclink('link-3', 'PIPE', 'link-2');">PIPE</a></tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable x2go.gevent_subprocess.STDOUT=x2go.gevent_subprocess-module.html#STDOUT"><a title="x2go.gevent_subprocess.STDOUT" class="py-name" href="#" onclick="return doclink('link-4', 'STDOUT', 'link-4');">STDOUT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_subprocess</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="x2go.gevent_subprocess.STDOUT" class="py-name" href="#" onclick="return doclink('link-5', 'STDOUT', 'link-4');">STDOUT</a></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-name">call</tt> <tt class="py-op">=</tt> <tt class="py-name">_subprocess</tt><tt class="py-op">.</tt><tt class="py-name">call</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-name">check_call</tt> <tt class="py-op">=</tt> <tt class="py-name">_subprocess</tt><tt class="py-op">.</tt><tt class="py-name">check_call</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-name">list2cmdline</tt> <tt class="py-op">=</tt> <tt class="py-name">_subprocess</tt><tt class="py-op">.</tt><tt class="py-name">list2cmdline</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
+<a name="Popen"></a><div id="Popen-def"><a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="Popen-toggle" onclick="return toggle('Popen');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="x2go.gevent_subprocess.Popen-class.html">Popen</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Popen-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Popen-expanded"><a name="Popen.__init__"></a><div id="Popen.__init__-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="Popen.__init__-toggle" onclick="return toggle('Popen.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.gevent_subprocess.Popen-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Popen.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Popen.__init__-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-comment"># delegate to an actual Popen object</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__p</tt> <tt class="py-op">=</tt> <tt class="py-name">_subprocess</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Class x2go.gevent_subprocess.Popen=x2go.gevent_subprocess.Popen-class.html"><a title="x2go.gevent_subprocess.Popen" class="py-name" href="#" onclick="return doclink('link-6', 'Popen', 'link-6');">Popen</a></tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-comment"># make the file handles nonblocking</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">fcntl</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">,</tt> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">F_SETFL</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_NONBLOCK</tt><tt class="py-op">)</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">fcntl</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">,</tt> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">F_SETFL</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_NONBLOCK</tt><tt class="py-op">)</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">fcntl</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">,</tt> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">F_SETFL</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_NONBLOCK</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt>
+<a name="Popen.__getattr__"></a><div id="Popen.__getattr__-def"><a name="L54"></a><tt class="py-lineno"> 54</tt> <a class="py-toggle" href="#" id="Popen.__getattr__-toggle" onclick="return toggle('Popen.__getattr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.gevent_subprocess.Popen-class.html#__getattr__">__getattr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Popen.__getattr__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Popen.__getattr__-expanded"><a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-comment"># delegate attribute lookup to the real Popen object</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__p</tt><tt class="py-op">,</tt> <tt id="link-7" class="py-name" targets="Variable x2go.log.X2goLogger.name=x2go.log.X2goLogger-class.html#name,Variable x2go.printing.X2goPrintAction.name=x2go.printing.X2goPrintAction-class.html#name"><a title="x2go.log.X2goLogger.name
+x2go.printing.X2goPrintAction.name" class="py-name" href="#" onclick="return doclink('link-7', 'name', 'link-7');">name</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
+<a name="Popen._write_pipe"></a><div id="Popen._write_pipe-def"><a name="L58"></a><tt class="py-lineno"> 58</tt> <a class="py-toggle" href="#" id="Popen._write_pipe-toggle" onclick="return toggle('Popen._write_pipe');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.gevent_subprocess.Popen-class.html#_write_pipe">_write_pipe</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">f</tt><tt class="py-op">,</tt> <tt class="py-param">input</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Popen._write_pipe-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Popen._write_pipe-expanded"><a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-comment"># writes the given input to f without blocking</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">input</tt><tt class="py-op">:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">bytes_total</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">)</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">bytes_written</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">bytes_written</tt> <tt class="py-op"><</tt> <tt class="py-name">bytes_total</tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-comment"># f.write() doesn't return anything, so use os.write.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">bytes_written</tt> <tt class="py-op">+=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name" targets="Method x2go.inifiles.X2goIniFile.write()=x2go.inifiles.X2goIniFile-class.html#write"><a title="x2go.inifiles.X2goIniFile.write" class="py-name" href="#" onclick="return doclink('link-8', 'write', 'link-8');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">input</tt><tt class="py-op">[</tt><tt class="py-name">bytes_written</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">ex</tt><tt class="py-op">:</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ex</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EAGAIN</tt><tt class="py-op">:</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">wait_write</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt>
+<a name="Popen._read_pipe"></a><div id="Popen._read_pipe-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="Popen._read_pipe-toggle" onclick="return toggle('Popen._read_pipe');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.gevent_subprocess.Popen-class.html#_read_pipe">_read_pipe</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Popen._read_pipe-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Popen._read_pipe-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-comment"># reads output from f without blocking</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-comment"># returns output</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">chunks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">chunk</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-number">4096</tt><tt class="py-op">)</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">chunk</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">chunks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">chunk</tt><tt class="py-op">)</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">ex</tt><tt class="py-op">:</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ex</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EAGAIN</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_clear</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">wait_read</tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">chunks</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt>
+<a name="Popen.communicate"></a><div id="Popen.communicate-def"><a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="Popen.communicate-toggle" onclick="return toggle('Popen.communicate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.gevent_subprocess.Popen-class.html#communicate">communicate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">input</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Popen.communicate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Popen.communicate-expanded"><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-comment"># Optimization: If we are only using one pipe, or no pipe at</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-comment"># all, using select() is unnecessary.</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">[</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">count</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">:</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_write_pipe</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">,</tt> <tt class="py-name">input</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">:</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_pipe</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_pipe</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method x2go.gevent_subprocess.Popen.wait()=x2go.gevent_subprocess.Popen-class.html#wait"><a title="x2go.gevent_subprocess.Popen.wait" class="py-name" href="#" onclick="return doclink('link-9', 'wait', 'link-9');">wait</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">stdout</tt><tt class="py-op">,</tt> <tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_communicate</tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
+<a name="Popen._communicate"></a><div id="Popen._communicate-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="Popen._communicate-toggle" onclick="return toggle('Popen._communicate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.gevent_subprocess.Popen-class.html#_communicate">_communicate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">input</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Popen._communicate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Popen._communicate-expanded"><a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-comment"># identical to original... all the heavy lifting is done</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-comment"># in gevent.select.select</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">read_set</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">write_set</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># Return</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> <tt class="py-comment"># Return</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">:</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-comment"># Flush stdin buffer.</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">.</tt><tt class="py-name">flush</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">input</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">write_set</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">:</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">read_set</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">:</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">read_set</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">input_offset</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">read_set</tt> <tt class="py-keyword">or</tt> <tt class="py-name">write_set</tt><tt class="py-op">:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-name">rlist</tt><tt class="py-op">,</tt> <tt class="py-name">wlist</tt><tt class="py-op">,</tt> <tt class="py-name">xlist</tt> <tt class="py-op">=</tt> <tt class="py-name">select</tt><tt class="py-op">.</tt><tt class="py-name">select</tt><tt class="py-op">(</tt><tt class="py-name">read_set</tt><tt class="py-op">,</tt> <tt class="py-name">write_set</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">select</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">args</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EINTR</tt><tt class="py-op">:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt> <tt class="py-keyword">in</tt> <tt class="py-name">wlist</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-comment"># When select has indicated that the file is writable,</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-comment"># we can write up to PIPE_BUF bytes without risk</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-comment"># blocking. POSIX defines PIPE_BUF >= 512</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">bytes_written</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="x2go.inifiles.X2goIniFile.write" class="py-name" href="#" onclick="return doclink('link-10', 'write', 'link-8');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">buffer</tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">,</tt> <tt class="py-name">input_offset</tt><tt class="py-op">,</tt> <tt class="py-number">512</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">input_offset</tt> <tt class="py-op">+=</tt> <tt class="py-name">bytes_written</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">input_offset</tt> <tt class="py-op">>=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">write_set</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdin</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt> <tt class="py-keyword">in</tt> <tt class="py-name">rlist</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1024</tt><tt class="py-op">)</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt> <tt class="py-op">==</tt> <tt class="py-string">""</tt><tt class="py-op">:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">read_set</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stdout</tt><tt class="py-op">)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-name">stdout</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">rlist</tt><tt class="py-op">:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1024</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt> <tt class="py-op">==</tt> <tt class="py-string">""</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-name">read_set</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">stderr</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-comment"># All data exchanged. Translate lists into strings.</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stdout</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">stdout</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stderr</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-comment"># Translate newlines, if requested. We cannot let the file</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-comment"># object do the translation: It is based on stdio, which is</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-comment"># impossible to combine with select (unless forcing no</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-comment"># buffering).</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">universal_newlines</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">,</tt> <tt class="py-string">'newlines'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stdout</tt><tt class="py-op">:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">stdout</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_translate_newlines</tt><tt class="py-op">(</tt><tt class="py-name">stdout</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stderr</tt><tt class="py-op">:</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">stderr</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_translate_newlines</tt><tt class="py-op">(</tt><tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="x2go.gevent_subprocess.Popen.wait" class="py-name" href="#" onclick="return doclink('link-11', 'wait', 'link-9');">wait</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">stdout</tt><tt class="py-op">,</tt> <tt class="py-name">stderr</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt>
+<a name="Popen.wait"></a><div id="Popen.wait-def"><a name="L183"></a><tt class="py-lineno">183</tt> <a class="py-toggle" href="#" id="Popen.wait-toggle" onclick="return toggle('Popen.wait');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.gevent_subprocess.Popen-class.html#wait">wait</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">check_interval</tt><tt class="py-op">=</tt><tt class="py-number">0.01</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Popen.wait-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="Popen.wait-expanded"><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-comment"># non-blocking, use hub.sleep</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">status</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">poll</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">status</tt> <tt class="py-op">>=</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">status</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">hub</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-name">check_interval</tt><tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">ECHILD</tt><tt class="py-op">:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-comment"># no child process, this happens if the child process</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-comment"># already died and has been cleaned up</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+</div></div><a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="x2go-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://www.x2go.org">Python X2go</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Fri Nov 19 21:34:02 2010
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/html/x2go.rforward.X2goRevFwChannelThread-class.html b/doc/html/x2go.gevent_subprocess.Popen-class.html
similarity index 67%
copy from doc/html/x2go.rforward.X2goRevFwChannelThread-class.html
copy to doc/html/x2go.gevent_subprocess.Popen-class.html
index 7275480..2f0204d 100644
--- a/doc/html/x2go.rforward.X2goRevFwChannelThread-class.html
+++ b/doc/html/x2go.gevent_subprocess.Popen-class.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.rforward.X2goRevFwChannelThread</title>
+ <title>x2go.gevent_subprocess.Popen</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,8 +43,8 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- <a href="x2go.rforward-module.html">Module rforward</a> ::
- Class X2goRevFwChannelThread
+ <a href="x2go.gevent_subprocess-module.html">Module gevent_subprocess</a> ::
+ Class Popen
</span>
</td>
<td>
@@ -52,34 +52,21 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.rforward.X2goRevFwChannelThread-class.html"
+ >] | <a href="x2go.gevent_subprocess.Popen-class.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class X2goRevFwChannelThread</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.rforward-pysrc.html#X2goRevFwChannelThread">source code</a></span></p>
+<h1 class="epydoc">Class Popen</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.gevent_subprocess-pysrc.html#Popen">source code</a></span></p>
<pre class="base-tree">
- object --+
- |
-threading._Verbose --+
- |
- threading.Thread --+
- |
- <strong class="uidshort">X2goRevFwChannelThread</strong>
+object --+
+ |
+ <strong class="uidshort">Popen</strong>
</pre>
-<dl><dt>Known Subclasses:</dt>
-<dd>
- <ul class="subclass-list">
-<li><a href="x2go.sftpserver.X2goRevFwSFTPChannelThread-class.html">sftpserver.X2goRevFwSFTPChannelThread</a></li> </ul>
-</dd></dl>
-
<hr />
-<p>Starts a thread for each incoming Paramiko/SSH data channel trough the
- reverse forwarding tunnel.</p>
-
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
@@ -94,13 +81,63 @@ threading._Verbose --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.rforward.X2goRevFwChannelThread-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
- <span class="summary-sig-arg">channel</span>,
- <span class="summary-sig-arg">remote</span>=<span class="summary-sig-default">None</span>,
+ <td><span class="summary-sig"><a href="x2go.gevent_subprocess.Popen-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">*args</span>,
<span class="summary-sig-arg">**kwargs</span>)</span><br />
x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.rforward-pysrc.html#X2goRevFwChannelThread.__init__">source code</a></span>
+ <span class="codelink"><a href="x2go.gevent_subprocess-pysrc.html#Popen.__init__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="__getattr__"></a><span class="summary-sig-name">__getattr__</span>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">name</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="x2go.gevent_subprocess-pysrc.html#Popen.__getattr__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="communicate"></a><span class="summary-sig-name">communicate</span>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">input</span>=<span class="summary-sig-default">None</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="x2go.gevent_subprocess-pysrc.html#Popen.communicate">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="wait"></a><span class="summary-sig-name">wait</span>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">check_interval</span>=<span class="summary-sig-default">0.01</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="x2go.gevent_subprocess-pysrc.html#Popen.wait">source code</a></span>
</td>
</tr>
@@ -110,18 +147,6 @@ threading._Verbose --+
</tr>
<tr>
<td colspan="2" class="summary">
- <p class="indent-wrapped-lines"><b>Inherited from <code>threading.Thread</code></b>:
- <code>__repr__</code>,
- <code>getName</code>,
- <code>isAlive</code>,
- <code>isDaemon</code>,
- <code>is_alive</code>,
- <code>join</code>,
- <code>run</code>,
- <code>setDaemon</code>,
- <code>setName</code>,
- <code>start</code>
- </p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__delattr__</code>,
<code>__format__</code>,
@@ -130,6 +155,7 @@ threading._Verbose --+
<code>__new__</code>,
<code>__reduce__</code>,
<code>__reduce_ex__</code>,
+ <code>__repr__</code>,
<code>__setattr__</code>,
<code>__sizeof__</code>,
<code>__str__</code>,
@@ -148,11 +174,6 @@ threading._Verbose --+
</tr>
<tr>
<td colspan="2" class="summary">
- <p class="indent-wrapped-lines"><b>Inherited from <code>threading.Thread</code></b>:
- <code>daemon</code>,
- <code>ident</code>,
- <code>name</code>
- </p>
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
<code>__class__</code>
</p>
@@ -176,29 +197,21 @@ threading._Verbose --+
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
- <span class="sig-arg">channel</span>,
- <span class="sig-arg">remote</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">*args</span>,
<span class="sig-arg">**kwargs</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.rforward-pysrc.html#X2goRevFwChannelThread.__init__">source code</a></span>
+ ><span class="codelink"><a href="x2go.gevent_subprocess-pysrc.html#Popen.__init__">source code</a></span>
</td>
</tr></table>
<p>x.__init__(...) initializes x; see x.__class__.__doc__ for
signature</p>
<dl class="fields">
- <dt>Parameters:</dt>
- <dd><ul class="nomargin-top">
- <li><strong class="pname"><code>channel</code></strong> (class) - incoming Paramiko/SSH channel from the <a
- href="x2go.session.X2goSession-class.html"
- class="link">X2goSession</a>'s transport accept queue</li>
- <li><strong class="pname"><code>remote</code></strong> ((str, int)) - tuple (addr, port) that specifies the data endpoint of the
- channel</li>
- </ul></dd>
<dt>Overrides:
object.__init__
+ <dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
@@ -235,7 +248,7 @@ threading._Verbose --+
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Nov 19 21:33:56 2010
+ Generated by Epydoc 3.0.1 on Fri Nov 19 21:33:55 2010
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/doc/html/x2go.printing-module.html b/doc/html/x2go.mimetypes-module.html
similarity index 66%
copy from doc/html/x2go.printing-module.html
copy to doc/html/x2go.mimetypes-module.html
index 81c6a00..c1f4941 100644
--- a/doc/html/x2go.printing-module.html
+++ b/doc/html/x2go.mimetypes-module.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.printing</title>
+ <title>x2go.mimetypes</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,7 +43,7 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- Module printing
+ Module mimetypes
</span>
</td>
<td>
@@ -51,34 +51,15 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.printing-module.html"
+ >] | <a href="x2go.mimetypes-module.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
-<h1 class="epydoc">Module printing</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.printing-pysrc.html">source code</a></span></p>
-<p>X2go printing sets up a thread that listens for incoming print jobs
- (<a href="x2go.printing.X2goPrintQueue-class.html"
- class="link">X2goPrintQueue</a>).</p>
- <p>For each incoming print job in an X2go session's spool directory an
- individual thread is started (<a
- href="x2go.printing.X2goPrintJob-class.html"
- class="link">X2goPrintJob</a>) that handles the processing of the
- incoming print job.</p>
- <p>Print jobs can either be sent to any of the local print queues (CUPS,
- Win32API), be opened in an external PDF viewer, be saved to a local
- folder or be handed over to a custom (print) command. This is defined by
- four print action classes (X2goPrintActionPDFVIEW,
- X2goPrintActionPDFSAVE, X2goPrintActionPRINT and
- X2goPrintActionPRINTCMD).</p>
- <p>Especially the <a href="x2go.printing.X2goClientPrinting-class.html"
- class="link">X2goClientPrinting</a> class in this file is one of Python
- X2go's public API classes. Retrieve an instance of this class from your
- <a href="x2go.client.X2goClient-class.html" class="link">X2goClient</a>
- instance. Use this class in your Python X2go based applications to access
- the »printing« configuration file of your X2go client application.</p>
+<h1 class="epydoc">Module mimetypes</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.mimetypes-pysrc.html">source code</a></span></p>
+<p>STILL UNDOCUMENTED</p>
<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
@@ -92,70 +73,22 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="x2go.printing.X2goClientPrinting-class.html" class="summary-name">X2goClientPrinting</a><br />
- <a href="x2go.printing.X2goClientPrinting-class.html"
- class="link">X2goClientPrinting</a> provides access to the X2go
- ini-like file »printing« as stored in
- <code>~/.x2goclient/printing</code> resp.
+ <a href="x2go.mimetypes.X2goMIMETypeAction-class.html" class="summary-name">X2goMIMETypeAction</a>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="x2go.printing.X2goPrintAction-class.html" class="summary-name">X2goPrintAction</a>
+ <a href="x2go.mimetypes.X2goMIMETypeQueue-class.html" class="summary-name">X2goMIMETypeQueue</a><br />
+ STILL UNDOCUMENTED
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="x2go.printing.X2goPrintActionPDFVIEW-class.html" class="summary-name">X2goPrintActionPDFVIEW</a><br />
- Print action that views incoming print job in an external PDF
- viewer application.
- </td>
- </tr>
-<tr>
- <td width="15%" align="right" valign="top" class="summary">
- <span class="summary-type"> </span>
- </td><td class="summary">
- <a href="x2go.printing.X2goPrintActionPDFSAVE-class.html" class="summary-name">X2goPrintActionPDFSAVE</a><br />
- Print action that saves incoming print jobs to a local folder.
- </td>
- </tr>
-<tr>
- <td width="15%" align="right" valign="top" class="summary">
- <span class="summary-type"> </span>
- </td><td class="summary">
- <a href="x2go.printing.X2goPrintActionPRINT-class.html" class="summary-name">X2goPrintActionPRINT</a><br />
- Print action that actually prints an incoming print job file.
- </td>
- </tr>
-<tr>
- <td width="15%" align="right" valign="top" class="summary">
- <span class="summary-type"> </span>
- </td><td class="summary">
- <a href="x2go.printing.X2goPrintActionPRINTCMD-class.html" class="summary-name">X2goPrintActionPRINTCMD</a><br />
- Print action that calls an external command for further processing
- of incoming print jobs.
- </td>
- </tr>
-<tr>
- <td width="15%" align="right" valign="top" class="summary">
- <span class="summary-type"> </span>
- </td><td class="summary">
- <a href="x2go.printing.X2goPrintQueue-class.html" class="summary-name">X2goPrintQueue</a><br />
- If X2go printing is supported in a particaluar <a
- href="x2go.session.X2goSession-class.html"
- class="link">X2goSession</a> instance this class provides a
- sub-thread for handling incoming X2go print jobs.
- </td>
- </tr>
-<tr>
- <td width="15%" align="right" valign="top" class="summary">
- <span class="summary-type"> </span>
- </td><td class="summary">
- <a href="x2go.printing.X2goPrintJob-class.html" class="summary-name">X2goPrintJob</a><br />
+ <a href="x2go.mimetypes.X2goPrintJob-class.html" class="summary-name">X2goPrintJob</a><br />
For each X2go print job we create a sub-thread that let's the print
job be processed in the background.
</td>
@@ -175,7 +108,7 @@
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing-module.html#x2go_printjob_handler" class="summary-sig-name">x2go_printjob_handler</a>(<span class="summary-sig-arg">job_file</span>=<span class="summary-sig-default">None</span>,
+ <td><span class="summary-sig"><a href="x2go.mimetypes-module.html#x2go_printjob_handler" class="summary-sig-name">x2go_printjob_handler</a>(<span class="summary-sig-arg">job_file</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">pdf_file</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">job_title</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">print_action</span>=<span class="summary-sig-default">None</span>,
@@ -183,10 +116,10 @@
<span class="summary-sig-arg">logger</span>=<span class="summary-sig-default">None</span>)</span><br />
This function is called as a handler function for each incoming X2go
print job represented by the class <a
- href="x2go.printing.X2goPrintJob-class.html"
+ href="x2go.mimetypes.X2goPrintJob-class.html"
class="link">X2goPrintJob</a>.</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#x2go_printjob_handler">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#x2go_printjob_handler">source code</a></span>
</td>
</tr>
@@ -207,7 +140,7 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="__NAME__"></a><span class="summary-name">__NAME__</span> = <code title="'x2goprint-pylib'"><code class="variable-quote">'</code><code class="variable-string">x2goprint-pylib</code><code class="variable-quote">'</code></code>
+ <a name="__NAME__"></a><span class="summary-name">__NAME__</span> = <code title="'x2gomimetypes-pylib'"><code class="variable-quote">'</code><code class="variable-string">x2gomimetypes-pylib</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
@@ -242,13 +175,13 @@
<span class="sig-arg">logger</span>=<span class="sig-default">None</span>)</span>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#x2go_printjob_handler">source code</a></span>
+ ><span class="codelink"><a href="x2go.mimetypes-pysrc.html#x2go_printjob_handler">source code</a></span>
</td>
</tr></table>
<p>This function is called as a handler function for each incoming X2go
print job represented by the class <a
- href="x2go.printing.X2goPrintJob-class.html"
+ href="x2go.mimetypes.X2goPrintJob-class.html"
class="link">X2goPrintJob</a>.</p>
<p>The handler function will (re-)read the »printing« configuration file
(if no explicit <code>print_action</code> is passed to this function...).
@@ -263,7 +196,7 @@
<code>X2goPrintActionXXX</code> classes</li>
<li><strong class="pname"><code>parent_thread</code></strong> (<code>instance</code>) - the <a href="x2go.printing.X2goPrintQueue-class.html"
class="link">X2goPrintQueue</a> thread that actually created this
- handler's <a href="x2go.printing.X2goPrintJob-class.html"
+ handler's <a href="x2go.mimetypes.X2goPrintJob-class.html"
class="link">X2goPrintJob</a> instance</li>
<li><strong class="pname"><code>logger</code></strong> (<code>instance</code>) - the <a href="x2go.printing.X2goPrintQueue-class.html"
class="link">X2goPrintQueue</a>'s logging instance</li>
diff --git a/doc/html/x2go.mimetypes-pysrc.html b/doc/html/x2go.mimetypes-pysrc.html
new file mode 100644
index 0000000..d24c283
--- /dev/null
+++ b/doc/html/x2go.mimetypes-pysrc.html
@@ -0,0 +1,562 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>x2go.mimetypes</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="x2go-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://www.x2go.org">Python X2go</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="x2go-module.html">Package x2go</a> ::
+ Module mimetypes
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="x2go.mimetypes-pysrc.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="x2go.mimetypes-module.html">Module x2go.mimetypes</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment">#!/usr/bin/env python</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: utf-8 -*-</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2010 by Mike Gabriel <m.gabriel at das-netzwerkteam.de></tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># Python X2go is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># the Free Software Foundation; either version 3 of the License, or</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># (at your option) any later version.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># Python X2go is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-comment"># GNU General Public License for more details.</tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-comment"># along with this program; if not, write to the</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-comment"># Free Software Foundation, Inc.,</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-comment"># 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">"""\</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring">STILL UNDOCUMENTED</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable x2go.__NAME__=x2go-module.html#__NAME__,Variable x2go.client.__NAME__=x2go.client-module.html#__NAME__,Variable x2go.defaults.__NAME__=x2go.defaults-module.html#__NAME__,Variable x2go.forward.__NAME__=x2go.forward-module.html#__NAME__,Variable x2go.guardian.__NAME__=x2go.guardian-module.html#__NAME__,Variable x2go.inifiles.__NAME__=x2go.inifiles-module.html#__NAME__,Variable x2go.log.__NAME__=x2go.log-module.html#__NAME__,Variable x2go.mimetypes.__NAME__=x2go.mimetypes-module.html#__NAME__,Variable x2go.printing.__NAME__=x2go.printing-module.html#__NAME__,Variable x2go.profiles.__NAME__=x2go.profiles-module.html#__NAME__,Variable x2go.proxy.__NAME__=x2go.proxy-module.html#__NAME__,Variable x2go.registry.__NAME__=x2go.registry-module.html#__NAME__,Variable x2go.rforward.__NAME__=x2go.rforward-module.html#__NAME__,Variable x2go.session.__NAME__=x2go.session-m
odule.ht
ml#__NAME__,Variable x2go.settings.__NAME__=x2go.settings-module.html#__NAME__,Variable x2go.sftpserver.__NAME__=x2go.sftpserver-module.html#__NAME__,Variable x2go.utils.__NAME__=x2go.utils-module.html#__NAME__,Variable x2go.x2go_exceptions.__NAME__=x2go.x2go_exceptions-module.html#__NAME__,Variable x2go.xserver.__NAME__=x2go.xserver-module.html#__NAME__"><a title="x2go.__NAME__
+x2go.client.__NAME__
+x2go.defaults.__NAME__
+x2go.forward.__NAME__
+x2go.guardian.__NAME__
+x2go.inifiles.__NAME__
+x2go.log.__NAME__
+x2go.mimetypes.__NAME__
+x2go.printing.__NAME__
+x2go.profiles.__NAME__
+x2go.proxy.__NAME__
+x2go.registry.__NAME__
+x2go.rforward.__NAME__
+x2go.session.__NAME__
+x2go.settings.__NAME__
+x2go.sftpserver.__NAME__
+x2go.utils.__NAME__
+x2go.x2go_exceptions.__NAME__
+x2go.xserver.__NAME__" class="py-name" href="#" onclick="return doclink('link-0', '__NAME__', 'link-0');">__NAME__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'x2gomimetypes-pylib'</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-comment"># modules</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">,</tt> <tt class="py-name">shutil</tt><tt class="py-op">,</tt> <tt class="py-name">copy</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">subprocess</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gevent</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module x2go.inifiles=x2go.inifiles-module.html"><a title="x2go.inifiles" class="py-name" href="#" onclick="return doclink('link-1', 'inifiles', 'link-1');">inifiles</a></tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">cStringIO</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">ConfigParser</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">'win32'</tt><tt class="py-op">:</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">win32api</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-comment"># Python X2go modules</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Module x2go.log=x2go.log-module.html"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-2', 'log', 'link-2');">log</a></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Module x2go.defaults=x2go.defaults-module.html"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-3', 'defaults', 'link-3');">defaults</a></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-comment"># we hide the default values from epydoc (that's why we transform them to _UNDERSCORE variables)</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-4', 'defaults', 'link-3');">defaults</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Variable x2go.defaults.LOCAL_HOME=x2go.defaults-module.html#LOCAL_HOME"><a title="x2go.defaults.LOCAL_HOME" class="py-name" href="#" onclick="return doclink('link-5', 'LOCAL_HOME', 'link-5');">LOCAL_HOME</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">_LOCAL_HOME</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-6', 'defaults', 'link-3');">defaults</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Variable x2go.defaults.X2GO_CLIENT_ROOTDIR=x2go.defaults-module.html#X2GO_CLIENT_ROOTDIR"><a title="x2go.defaults.X2GO_CLIENT_ROOTDIR" class="py-name" href="#" onclick="return doclink('link-7', 'X2GO_CLIENT_ROOTDIR', 'link-7');">X2GO_CLIENT_ROOTDIR</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">_X2GO_CLIENT_ROOTDIR</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-8', 'defaults', 'link-3');">defaults</a></tt> <tt class="py-keyword">import</tt> <tt id="link-9" class="py-name" targets="Variable x2go.defaults.X2GO_CLIENTPRINTING_DEFAULTS=x2go.defaults-module.html#X2GO_CLIENTPRINTING_DEFAULTS"><a title="x2go.defaults.X2GO_CLIENTPRINTING_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-9', 'X2GO_CLIENTPRINTING_DEFAULTS', 'link-9');">X2GO_CLIENTPRINTING_DEFAULTS</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">_X2GO_CLIENTPRINTING_DEFAULTS</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-10', 'defaults', 'link-3');">defaults</a></tt> <tt class="py-keyword">import</tt> <tt id="link-11" class="py-name" targets="Variable x2go.defaults.X2GO_PRINTING_CONFIGFILES=x2go.defaults-module.html#X2GO_PRINTING_CONFIGFILES"><a title="x2go.defaults.X2GO_PRINTING_CONFIGFILES" class="py-name" href="#" onclick="return doclink('link-11', 'X2GO_PRINTING_CONFIGFILES', 'link-11');">X2GO_PRINTING_CONFIGFILES</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">_X2GO_PRINTING_CONFIGFILES</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Module x2go.utils=x2go.utils-module.html"><a title="x2go.utils" class="py-name" href="#" onclick="return doclink('link-12', 'utils', 'link-12');">utils</a></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-13" class="py-name"><a title="x2go.inifiles" class="py-name" href="#" onclick="return doclink('link-13', 'inifiles', 'link-1');">inifiles</a></tt> </tt>
+<a name="X2goMIMETypeAction"></a><div id="X2goMIMETypeAction-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="X2goMIMETypeAction-toggle" onclick="return toggle('X2goMIMETypeAction');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeAction-class.html">X2goMIMETypeAction</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeAction-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="X2goMIMETypeAction-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt id="link-14" class="py-name" targets="Variable x2go.mimetypes.X2goMIMETypeAction.__name__=x2go.mimetypes.X2goMIMETypeAction-class.html#__name__,Variable x2go.printing.X2goPrintAction.__name__=x2go.printing.X2goPrintAction-class.html#__name__,Variable x2go.printing.X2goPrintActionPDFSAVE.__name__=x2go.printing.X2goPrintActionPDFSAVE-class.html#__name__,Variable x2go.printing.X2goPrintActionPDFVIEW.__name__=x2go.printing.X2goPrintActionPDFVIEW-class.html#__name__,Variable x2go.printing.X2goPrintActionPRINT.__name__=x2go.printing.X2goPrintActionPRINT-class.html#__name__,Variable x2go.printing.X2goPrintActionPRINTCMD.__name__=x2go.printing.X2goPrintActionPRINTCMD-class.html#__name__"><a title="x2go.mimetypes.X2goMIMETypeAction.__name__
+x2go.printing.X2goPrintAction.__name__
+x2go.printing.X2goPrintActionPDFSAVE.__name__
+x2go.printing.X2goPrintActionPDFVIEW.__name__
+x2go.printing.X2goPrintActionPRINT.__name__
+x2go.printing.X2goPrintActionPRINTCMD.__name__" class="py-name" href="#" onclick="return doclink('link-14', '__name__', 'link-14');">__name__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'MIME'</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt id="link-15" class="py-name" targets="Variable x2go.mimetypes.X2goMIMETypeAction.__description__=x2go.mimetypes.X2goMIMETypeAction-class.html#__description__,Variable x2go.printing.X2goPrintAction.__description__=x2go.printing.X2goPrintAction-class.html#__description__"><a title="x2go.mimetypes.X2goMIMETypeAction.__description__
+x2go.printing.X2goPrintAction.__description__" class="py-name" href="#" onclick="return doclink('link-15', '__description__', 'link-15');">__description__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Execute a command depending on an incoming file\'s MIME type'</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeAction.__init__"></a><div id="X2goMIMETypeAction.__init__-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="X2goMIMETypeAction.__init__-toggle" onclick="return toggle('X2goMIMETypeAction.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeAction-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">logger</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">loglevel</tt><tt class="py-op">=</tt><tt id="link-16" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-16', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Variable x2go.log.loglevel_DEFAULT=x2go.log-module.html#loglevel_DEFAULT"><a title="x2go.log.loglevel_DEFAULT" class
="py-nam
e" href="#" onclick="return doclink('link-17', 'loglevel_DEFAULT', 'link-17');">loglevel_DEFAULT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeAction.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeAction.__init__-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> STILL UNDOCUMENTED</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"> @param logger: you can pass an L{X2goLogger} object to the</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> L{X2goMIMETypeAction} constructor</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> @type logger: C{instance}</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> @param loglevel: if no L{X2goLogger} object has been supplied a new one will be</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> constructed with the given loglevel</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> @type loglevel: C{int}</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-18', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Class x2go.log.X2goLogger=x2go.log.X2goLogger-class.html"><a title="x2go.log.X2goLogger" class="py-name" href="#" onclick="return doclink('link-19', 'X2goLogger', 'link-19');">X2goLogger</a></tt><tt class="py-op">(</tt><tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt class="py-name">loglevel</tt><tt class="py-op">)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">logger</tt><tt class="py-op">)</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Variable x2go.log.X2goLogger.tag=x2go.log.X2goLogger-class.html#tag"><a title="x2go.log.X2goLogger.tag" class="py-name" href="#" onclick="return doclink('link-20', 'tag', 'link-20');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="x2go.__NAME__
+x2go.client.__NAME__
+x2go.defaults.__NAME__
+x2go.forward.__NAME__
+x2go.guardian.__NAME__
+x2go.inifiles.__NAME__
+x2go.log.__NAME__
+x2go.mimetypes.__NAME__
+x2go.printing.__NAME__
+x2go.profiles.__NAME__
+x2go.proxy.__NAME__
+x2go.registry.__NAME__
+x2go.rforward.__NAME__
+x2go.session.__NAME__
+x2go.settings.__NAME__
+x2go.sftpserver.__NAME__
+x2go.utils.__NAME__
+x2go.x2go_exceptions.__NAME__
+x2go.xserver.__NAME__" class="py-name" href="#" onclick="return doclink('link-21', '__NAME__', 'link-0');">__NAME__</a></tt> </tt>
+</div><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeAction.do_execute"></a><div id="X2goMIMETypeAction.do_execute-def"><a name="L75"></a><tt class="py-lineno"> 75</tt> <a class="py-toggle" href="#" id="X2goMIMETypeAction.do_execute-toggle" onclick="return toggle('X2goMIMETypeAction.do_execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeAction-class.html#do_execute">do_execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mime_file</tt><tt class="py-op">,</tt> <tt class="py-param">mime_type_dir</tt><tt class="py-op">,</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeAction.do_execute-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeAction.do_execute-expanded"><a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> Perform the defined print action (doing nothing in L{X2goPrintAction} parent class).</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> @param mime_file: name of the incoming file</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> @type mime_file: C{str}</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> @param mime_type_dir: location of the X2go client's spool directory for incoming MIME files</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> @type mime_type_dir: C{str}</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">platform</tt> <tt class="py-op">==</tt> <tt class="py-string">"win32"</tt><tt class="py-op">:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'processing an incoming MIME file with Python\'s os.startfile(): %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">mime_file</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-22" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-22', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Variable x2go.log.loglevel_DEBUG=x2go.log-module.html#loglevel_DEBUG"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-23', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">startfile</tt><tt class="py-op">(</tt><tt class="py-name">mime_file</tt><tt class="py-op">)</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">cmd_line</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-string">'xdg-open'</tt><tt class="py-op">,</tt> <tt class="py-name">mime_file</tt><tt class="py-op">,</tt> <tt class="py-op">]</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'processing an incoming MIME file with command: %s'</tt> <tt class="py-op">%</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">cmd_line</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-24" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-24', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-25', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Class x2go.gevent_subprocess.Popen=x2go.gevent_subprocess.Popen-class.html"><a title="x2go.gevent_subprocess.Popen" class="py-name" href="#" onclick="return doclink('link-26', 'Popen', 'link-26');">Popen</a></tt><tt class="py-op">(</tt><tt class="py-name">cmd_line</tt><tt class="py-op">,</tt> <tt class="py-name">stdout</tt><tt class="py-op">=</tt><tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Variable x2go.gevent_subprocess.PIPE=x2go.gevent_subprocess-module.html#PIPE"><a title="x2go.gevent_subprocess.PIPE" class="py-name" href="#" onclick="return doclink('link-27', 'PIPE', 'link-27');">PIPE</a></tt><tt class="py-op">,</tt> <tt class="py-name">stderr</tt><tt class="py-op">=</tt><tt class="py
-name">s
ubprocess</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Variable x2go.gevent_subprocess.STDOUT=x2go.gevent_subprocess-module.html#STDOUT"><a title="x2go.gevent_subprocess.STDOUT" class="py-name" href="#" onclick="return doclink('link-28', 'STDOUT', 'link-28');">STDOUT</a></tt><tt class="py-op">,</tt> <tt class="py-name">env</tt><tt class="py-op">=</tt><tt id="link-29" class="py-name" targets="Variable x2go.printing._PRINT_ENV=x2go.printing-module.html#_PRINT_ENV"><a title="x2go.printing._PRINT_ENV" class="py-name" href="#" onclick="return doclink('link-29', '_PRINT_ENV', 'link-29');">_PRINT_ENV</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-comment"># this is nasty!!!!</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'giving PDF viewer 20s to get the PDF file %s loaded'</tt> <tt class="py-op">%</tt> <tt class="py-name">_hr_filename</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-30" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-30', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-31', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">gevent</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">20</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">mime_file</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeQueue"></a><div id="X2goMIMETypeQueue-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue-toggle" onclick="return toggle('X2goMIMETypeQueue');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html">X2goMIMETypeQueue</a><tt class="py-op">(</tt><tt class="py-base-class">threading</tt><tt class="py-op">.</tt><tt class="py-base-class">Thread</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="X2goMIMETypeQueue-expanded"><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> STILL UNDOCUMENTED</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt id="link-32" class="py-name" targets="Variable x2go.mimetypes.X2goMIMETypeQueue.print_action=x2go.mimetypes.X2goMIMETypeQueue-class.html#print_action,Variable x2go.printing.X2goClientPrinting.print_action=x2go.printing.X2goClientPrinting-class.html#print_action,Variable x2go.printing.X2goPrintQueue.print_action=x2go.printing.X2goPrintQueue-class.html#print_action"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-32', 'print_action', 'link-32');">print_action</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt id="link-33" class="py-name" targets="Variable x2go.mimetypes.X2goMIMETypeQueue.spooldir=x2go.mimetypes.X2goMIMETypeQueue-class.html#spooldir,Variable x2go.printing.X2goPrintQueue.spooldir=x2go.printing.X2goPrintQueue-class.html#spooldir"><a title="x2go.mimetypes.X2goMIMETypeQueue.spooldir
+x2go.printing.X2goPrintQueue.spooldir" class="py-name" href="#" onclick="return doclink('link-33', 'spooldir', 'link-33');">spooldir</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt id="link-34" class="py-name" targets="Variable x2go.mimetypes.X2goMIMETypeQueue.active_jobs=x2go.mimetypes.X2goMIMETypeQueue-class.html#active_jobs,Variable x2go.printing.X2goPrintQueue.active_jobs=x2go.printing.X2goPrintQueue-class.html#active_jobs"><a title="x2go.mimetypes.X2goMIMETypeQueue.active_jobs
+x2go.printing.X2goPrintQueue.active_jobs" class="py-name" href="#" onclick="return doclink('link-34', 'active_jobs', 'link-34');">active_jobs</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt id="link-35" class="py-name" targets="Variable x2go.mimetypes.X2goMIMETypeQueue.job_history=x2go.mimetypes.X2goMIMETypeQueue-class.html#job_history,Variable x2go.printing.X2goPrintQueue.job_history=x2go.printing.X2goPrintQueue-class.html#job_history"><a title="x2go.mimetypes.X2goMIMETypeQueue.job_history
+x2go.printing.X2goPrintQueue.job_history" class="py-name" href="#" onclick="return doclink('link-35', 'job_history', 'link-35');">job_history</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeQueue.__init__"></a><div id="X2goMIMETypeQueue.__init__-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue.__init__-toggle" onclick="return toggle('X2goMIMETypeQueue.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">logger</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">loglevel</tt><tt class="py-op">=</tt><tt id="link-36" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-36', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="x2go.log.loglevel_DEFAULT" class="py-name" href="#" onclick="return doclink('link-37', 'loglevel_DEFAULT', 'link-17');"
>logleve
l_DEFAULT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeQueue.__init__-expanded"><a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> STILL UNDOCUMENTED</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> @param logger: you can pass an L{X2goLogger} object to the</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> L{X2goProxy} constructor</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> @type logger: C{instance}</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> @param loglevel: if no L{X2goLogger} object has been supplied a new one will be</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> constructed with the given loglevel</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> @type loglevel: C{int}</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">logger</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-38', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="x2go.log.X2goLogger" class="py-name" href="#" onclick="return doclink('link-39', 'X2goLogger', 'link-19');">X2goLogger</a></tt><tt class="py-op">(</tt><tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt class="py-name">loglevel</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">logger</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="x2go.log.X2goLogger.tag" class="py-name" href="#" onclick="return doclink('link-40', 'tag', 'link-20');">tag</a></tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="x2go.__NAME__
+x2go.client.__NAME__
+x2go.defaults.__NAME__
+x2go.forward.__NAME__
+x2go.guardian.__NAME__
+x2go.inifiles.__NAME__
+x2go.log.__NAME__
+x2go.mimetypes.__NAME__
+x2go.printing.__NAME__
+x2go.profiles.__NAME__
+x2go.proxy.__NAME__
+x2go.registry.__NAME__
+x2go.rforward.__NAME__
+x2go.session.__NAME__
+x2go.settings.__NAME__
+x2go.sftpserver.__NAME__
+x2go.utils.__NAME__
+x2go.x2go_exceptions.__NAME__
+x2go.xserver.__NAME__" class="py-name" href="#" onclick="return doclink('link-41', '__NAME__', 'link-0');">__NAME__</a></tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Thread</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method x2go.client.X2goClient.__init__()=x2go.client.X2goClient-class.html#__init__,Method x2go.forward.X2goFwServer.__init__()=x2go.forward.X2goFwServer-class.html#__init__,Method x2go.gevent_subprocess.Popen.__init__()=x2go.gevent_subprocess.Popen-class.html#__init__,Method x2go.guardian.X2goSessionGuardian.__init__()=x2go.guardian.X2goSessionGuardian-class.html#__init__,Method x2go.inifiles.X2goIniFile.__init__()=x2go.inifiles.X2goIniFile-class.html#__init__,Method x2go.log.X2goLogger.__init__()=x2go.log.X2goLogger-class.html#__init__,Method x2go.mimetypes.X2goMIMETypeAction.__init__()=x2go.mimetypes.X2goMIMETypeAction-class.html#__init__,Method x2go.mimetypes.X2goMIMETypeQueue.__init__()=x2go.mimetypes.X2goMIMETypeQueue-class.html#__init__,M
ethod x2
go.mimetypes.X2goPrintJob.__init__()=x2go.mimetypes.X2goPrintJob-class.html#__init__,Method x2go.printing.X2goClientPrinting.__init__()=x2go.printing.X2goClientPrinting-class.html#__init__,Method x2go.printing.X2goPrintAction.__init__()=x2go.printing.X2goPrintAction-class.html#__init__,Method x2go.printing.X2goPrintActionPDFSAVE.__init__()=x2go.printing.X2goPrintActionPDFSAVE-class.html#__init__,Method x2go.printing.X2goPrintActionPDFVIEW.__init__()=x2go.printing.X2goPrintActionPDFVIEW-class.html#__init__,Method x2go.printing.X2goPrintActionPRINT.__init__()=x2go.printing.X2goPrintActionPRINT-class.html#__init__,Method x2go.printing.X2goPrintActionPRINTCMD.__init__()=x2go.printing.X2goPrintActionPRINTCMD-class.html#__init__,Method x2go.printing.X2goPrintJob.__init__()=x2go.printing.X2goPrintJob-class.html#__init__,Method x2go.printing.X2goPrintQueue.__init__()=x2go.printing.X2goPrintQueue-class.html#__init__,Method x2go.profiles.X2goSessionProfiles.__init__()=x2go.profiles.X2
goSessio
nProfiles-class.html#__init__,Method x2go.proxy.X2goNX3Proxy.__init__()=x2go.proxy.X2goNX3Proxy-class.html#__init__,Method x2go.proxy.X2goProxy.__init__()=x2go.proxy.X2goProxy-class.html#__init__,Method x2go.registry.X2goRegisteredSession.__init__()=x2go.registry.X2goRegisteredSession-class.html#__init__,Method x2go.registry.X2goSessionRegistry.__init__()=x2go.registry.X2goSessionRegistry-class.html#__init__,Method x2go.rforward.X2goRevFwChannelThread.__init__()=x2go.rforward.X2goRevFwChannelThread-class.html#__init__,Method x2go.rforward.X2goRevFwTunnel.__init__()=x2go.rforward.X2goRevFwTunnel-class.html#__init__,Method x2go.session.X2goServerSessionList.__init__()=x2go.session.X2goServerSessionList-class.html#__init__,Method x2go.session.X2goSession.__init__()=x2go.session.X2goSession-class.html#__init__,Method x2go.settings.X2goClientSettings.__init__()=x2go.settings.X2goClientSettings-class.html#__init__,Method x2go.sftpserver.X2goRevFwTunnelToSFTP.__init__()=x2go.sftpse
rver.X2g
oRevFwTunnelToSFTP-class.html#__init__,Method x2go.xserver.X2goClientXConfig.__init__()=x2go.xserver.X2goClientXConfig-class.html#__init__,Method x2go.xserver.X2goXServer.__init__()=x2go.xserver.X2goXServer-class.html#__init__"><a title="x2go.client.X2goClient.__init__
+x2go.forward.X2goFwServer.__init__
+x2go.gevent_subprocess.Popen.__init__
+x2go.guardian.X2goSessionGuardian.__init__
+x2go.inifiles.X2goIniFile.__init__
+x2go.log.X2goLogger.__init__
+x2go.mimetypes.X2goMIMETypeAction.__init__
+x2go.mimetypes.X2goMIMETypeQueue.__init__
+x2go.mimetypes.X2goPrintJob.__init__
+x2go.printing.X2goClientPrinting.__init__
+x2go.printing.X2goPrintAction.__init__
+x2go.printing.X2goPrintActionPDFSAVE.__init__
+x2go.printing.X2goPrintActionPDFVIEW.__init__
+x2go.printing.X2goPrintActionPRINT.__init__
+x2go.printing.X2goPrintActionPRINTCMD.__init__
+x2go.printing.X2goPrintJob.__init__
+x2go.printing.X2goPrintQueue.__init__
+x2go.profiles.X2goSessionProfiles.__init__
+x2go.proxy.X2goNX3Proxy.__init__
+x2go.proxy.X2goProxy.__init__
+x2go.registry.X2goRegisteredSession.__init__
+x2go.registry.X2goSessionRegistry.__init__
+x2go.rforward.X2goRevFwChannelThread.__init__
+x2go.rforward.X2goRevFwTunnel.__init__
+x2go.session.X2goServerSessionList.__init__
+x2go.session.X2goSession.__init__
+x2go.settings.X2goClientSettings.__init__
+x2go.sftpserver.X2goRevFwTunnelToSFTP.__init__
+x2go.xserver.X2goClientXConfig.__init__
+x2go.xserver.X2goXServer.__init__" class="py-name" href="#" onclick="return doclink('link-42', '__init__', 'link-42');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_accept_jobs</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeQueue.__del__"></a><div id="X2goMIMETypeQueue.__del__-def"><a name="L131"></a><tt class="py-lineno">131</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue.__del__-toggle" onclick="return toggle('X2goMIMETypeQueue.__del__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html#__del__">__del__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue.__del__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeQueue.__del__-expanded"><a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name" targets="Method x2go.guardian.X2goSessionGuardian.stop_thread()=x2go.guardian.X2goSessionGuardian-class.html#stop_thread,Method x2go.mimetypes.X2goMIMETypeQueue.stop_thread()=x2go.mimetypes.X2goMIMETypeQueue-class.html#stop_thread,Method x2go.printing.X2goPrintQueue.stop_thread()=x2go.printing.X2goPrintQueue-class.html#stop_thread,Method x2go.proxy.X2goProxy.stop_thread()=x2go.proxy.X2goProxy-class.html#stop_thread,Method x2go.rforward.X2goRevFwTunnel.stop_thread()=x2go.rforward.X2goRevFwTunnel-class.html#stop_thread"><a title="x2go.guardian.X2goSessionGuardian.stop_thread
+x2go.mimetypes.X2goMIMETypeQueue.stop_thread
+x2go.printing.X2goPrintQueue.stop_thread
+x2go.proxy.X2goProxy.stop_thread
+x2go.rforward.X2goRevFwTunnel.stop_thread" class="py-name" href="#" onclick="return doclink('link-43', 'stop_thread', 'link-43');">stop_thread</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeQueue.pause"></a><div id="X2goMIMETypeQueue.pause-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue.pause-toggle" onclick="return toggle('X2goMIMETypeQueue.pause');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html#pause">pause</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue.pause-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeQueue.pause-expanded"><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> Prevent acceptance of new incoming MIME type files. The processing of MIME type files</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> that are currently still active will be completed, though.</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_accept_jobs</tt> <tt class="py-op">==</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_accept_jobs</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'paused thread: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-44" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-44', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-45', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeQueue.resume"></a><div id="X2goMIMETypeQueue.resume-def"><a name="L144"></a><tt class="py-lineno">144</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue.resume-toggle" onclick="return toggle('X2goMIMETypeQueue.resume');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html#resume">resume</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue.resume-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeQueue.resume-expanded"><a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> Resume operation of the X2go MIME type thread and continue accepting new incoming </tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> MIME type files.</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_accept_jobs</tt> <tt class="py-op">==</tt> <tt class="py-name">False</tt><tt class="py-op">:</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_accept_jobs</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'resumed thread: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-46" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-46', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-47', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeQueue.stop_thread"></a><div id="X2goMIMETypeQueue.stop_thread-def"><a name="L154"></a><tt class="py-lineno">154</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue.stop_thread-toggle" onclick="return toggle('X2goMIMETypeQueue.stop_thread');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html#stop_thread">stop_thread</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue.stop_thread-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeQueue.stop_thread-expanded"><a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> Stops this L{X2goMIMETypeQueue} thread completely.</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method x2go.mimetypes.X2goMIMETypeQueue.pause()=x2go.mimetypes.X2goMIMETypeQueue-class.html#pause,Method x2go.printing.X2goPrintQueue.pause()=x2go.printing.X2goPrintQueue-class.html#pause,Method x2go.rforward.X2goRevFwTunnel.pause()=x2go.rforward.X2goRevFwTunnel-class.html#pause"><a title="x2go.mimetypes.X2goMIMETypeQueue.pause
+x2go.printing.X2goPrintQueue.pause
+x2go.rforward.X2goRevFwTunnel.pause" class="py-name" href="#" onclick="return doclink('link-48', 'pause', 'link-48');">pause</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_keepalive</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'stopping thread: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-49" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-49', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-50', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="X2goMIMETypeQueue._incoming_mime_files"></a><div id="X2goMIMETypeQueue._incoming_mime_files-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue._incoming_mime_files-toggle" onclick="return toggle('X2goMIMETypeQueue._incoming_mime_files');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html#_incoming_mime_files">_incoming_mime_files</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue._incoming_mime_files-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeQueue._incoming_mime_files-expanded"><a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">l</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">listdir</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">mime_type_dir</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">mime_files</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">_job_file</tt> <tt class="py-keyword">in</tt> <tt class="py-name">job_files</tt><tt class="py-op">:</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">j</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">spool_dir</tt><tt class="py-op">,</tt> <tt class="py-name">_job_file</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">j</tt><tt class="py-op">.</tt><tt class="py-name">read</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">pdf_filename</tt><tt class="py-op">,</tt> <tt class="py-name">job_title</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">j</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">jobs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">_job_file</tt><tt class="py-op">,</tt> <tt class="py-name">pdf_filename</tt><tt class="py-op">,</tt> <tt class="py-name">job_title</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt> <tt class="py-name">j</tt> <tt class="py-keyword">for</tt> <tt class="py-name">j</tt> <tt class="py-keyword">in</tt> <tt class="py-name">jobs</tt> <tt class="py-keyword">if</tt> <tt class="py-name">j</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.active_jobs
+x2go.printing.X2goPrintQueue.active_jobs" class="py-name" href="#" onclick="return doclink('link-51', 'active_jobs', 'link-34');">active_jobs</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">]</tt> </tt>
+</div><a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeQueue.set_print_action"></a><div id="X2goMIMETypeQueue.set_print_action-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue.set_print_action-toggle" onclick="return toggle('X2goMIMETypeQueue.set_print_action');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html#set_print_action">set_print_action</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">print_action</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue.set_print_action-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeQueue.set_print_action-expanded"><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"> Modify the print action of this L{X2goPrintQueue} thread during runtime. The </tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> change of print action will be valid for the next incoming print job.</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-52" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-52', 'print_action', 'link-32');">print_action</a></tt> <tt class="py-keyword">in</tt> <tt id="link-53" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-53', 'defaults', 'link-3');">defaults</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Variable x2go.defaults.X2GO_PRINT_ACTIONS=x2go.defaults-module.html#X2GO_PRINT_ACTIONS"><a title="x2go.defaults.X2GO_PRINT_ACTIONS" class="py-name" href="#" onclick="return doclink('link-54', 'X2GO_PRINT_ACTIONS', 'link-54');">X2GO_PRINT_ACTIONS</a></tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt id="link-55" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-55', 'print_action', 'link-32');">print_action</a></tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-56', 'defaults', 'link-3');">defaults</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name"><a title="x2go.defaults.X2GO_PRINT_ACTIONS" class="py-name" href="#" onclick="return doclink('link-57', 'X2GO_PRINT_ACTIONS', 'link-54');">X2GO_PRINT_ACTIONS</a></tt><tt class="py-op">[</tt><tt id="link-58" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-58', 'print_action', 'link-32');">print_action</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-59" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-59', 'print_action', 'link-32');">print_action</a></tt> <tt class="py-keyword">in</tt> <tt id="link-60" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-60', 'defaults', 'link-3');">defaults</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="x2go.defaults.X2GO_PRINT_ACTIONS" class="py-name" href="#" onclick="return doclink('link-61', 'X2GO_PRINT_ACTIONS', 'link-54');">X2GO_PRINT_ACTIONS</a></tt><tt class="py-op">.</tt><tt class="py-name">values</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-62', 'print_action', 'link-32');">print_action</a></tt> <tt class="py-op">=</tt> <tt id="link-63" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-63', 'print_action', 'link-32');">print_action</a></tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> </tt>
+<a name="X2goMIMETypeQueue.run"></a><div id="X2goMIMETypeQueue.run-def"><a name="L188"></a><tt class="py-lineno">188</tt> <a class="py-toggle" href="#" id="X2goMIMETypeQueue.run-toggle" onclick="return toggle('X2goMIMETypeQueue.run');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goMIMETypeQueue-class.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goMIMETypeQueue.run-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goMIMETypeQueue.run-expanded"><a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"> Start this L{X2goPrintQueue} thread...</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'starting print queue thread: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">repr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-64" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-64', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-65', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_keepalive</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_keepalive</tt><tt class="py-op">:</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_accept_jobs</tt><tt class="py-op">:</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_incoming_print_jobs</tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">_job</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_incoming_print_jobs</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'incoming print job: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">_job</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-66" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-66', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-67', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">_new_printjob_thread</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name" targets="Class x2go.mimetypes.X2goPrintJob=x2go.mimetypes.X2goPrintJob-class.html,Class x2go.printing.X2goPrintJob=x2go.printing.X2goPrintJob-class.html"><a title="x2go.mimetypes.X2goPrintJob
+x2go.printing.X2goPrintJob" class="py-name" href="#" onclick="return doclink('link-68', 'X2goPrintJob', 'link-68');">X2goPrintJob</a></tt><tt class="py-op">(</tt><tt class="py-name">target</tt><tt class="py-op">=</tt><tt id="link-69" class="py-name" targets="Function x2go.mimetypes.x2go_printjob_handler()=x2go.mimetypes-module.html#x2go_printjob_handler,Function x2go.printing.x2go_printjob_handler()=x2go.printing-module.html#x2go_printjob_handler"><a title="x2go.mimetypes.x2go_printjob_handler
+x2go.printing.x2go_printjob_handler" class="py-name" href="#" onclick="return doclink('link-69', 'x2go_printjob_handler', 'link-69');">x2go_printjob_handler</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">kwargs</tt><tt class="py-op">=</tt><tt class="py-op">{</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-string">'job_file'</tt><tt class="py-op">:</tt> <tt class="py-name">_job</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-string">'pdf_file'</tt><tt class="py-op">:</tt> <tt class="py-name">_job</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-string">'job_title'</tt><tt class="py-op">:</tt> <tt class="py-name">_job</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-string">'print_action'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-70', 'print_action', 'link-32');">print_action</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-string">'parent_thread'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">,</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-string">'logger'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">logger</tt><tt class="py-op">,</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.active_jobs
+x2go.printing.X2goPrintQueue.active_jobs" class="py-name" href="#" onclick="return doclink('link-71', 'active_jobs', 'link-34');">active_jobs</a></tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">_job</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">_new_printjob_thread</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">_new_printjob_thread</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method x2go.registry.X2goRegisteredSession.start()=x2go.registry.X2goRegisteredSession-class.html#start,Method x2go.session.X2goSession.start()=x2go.session.X2goSession-class.html#start"><a title="x2go.registry.X2goRegisteredSession.start
+x2go.session.X2goSession.start" class="py-name" href="#" onclick="return doclink('link-72', 'start', 'link-72');">start</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">gevent</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">gevent</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> </tt>
+<a name="x2go_printjob_handler"></a><div id="x2go_printjob_handler-def"><a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <a class="py-toggle" href="#" id="x2go_printjob_handler-toggle" onclick="return toggle('x2go_printjob_handler');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes-module.html#x2go_printjob_handler">x2go_printjob_handler</a><tt class="py-op">(</tt><tt class="py-param">job_file</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">pdf_file</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">job_title</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">print_action</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">parent_thread</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">logger</tt><tt class="py-op">=</tt><tt class="py-
name">No
ne</tt><tt class="py-op">,</tt> <tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="x2go_printjob_handler-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="x2go_printjob_handler-expanded"><a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> This function is called as a handler function for each incoming X2go print job </tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"><tt class="py-docstring"> represented by the class L{X2goPrintJob}.</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"><tt class="py-docstring"> The handler function will (re-)read the »printing« configuration file (if no</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"><tt class="py-docstring"> explicit C{print_action} is passed to this function...). It then will</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> execute the C{<print_action>.do_print()} command.</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> @param pdf_file: PDF file name as placed in to the X2go spool directory</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> @type pdf_file: C{str}</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> @param job_title: human readable print job title</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> @type job_title: C{str}</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> @param print_action: an instance of either of the possible C{X2goPrintActionXXX} classes</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> @type print_action: C{X2goPrintActionXXX} nstance</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> @param parent_thread: the L{X2goPrintQueue} thread that actually created this handler's L{X2goPrintJob} instance</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"> @type parent_thread: C{instance}</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"> @param logger: the L{X2goPrintQueue}'s logging instance</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> @type logger: C{instance}</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-73" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-73', 'print_action', 'link-32');">print_action</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">_printing</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name" targets="Class x2go.printing.X2goClientPrinting=x2go.printing.X2goClientPrinting-class.html"><a title="x2go.printing.X2goClientPrinting" class="py-name" href="#" onclick="return doclink('link-74', 'X2goClientPrinting', 'link-74');">X2goClientPrinting</a></tt><tt class="py-op">(</tt><tt class="py-name">logger</tt><tt class="py-op">=</tt><tt class="py-name">logger</tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt id="link-75" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-75', 'print_action', 'link-32');">print_action</a></tt> <tt class="py-op">=</tt> <tt class="py-name">_printing</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-76', 'print_action', 'link-32');">print_action</a></tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'action for printing is: %s'</tt> <tt class="py-op">%</tt> <tt id="link-77" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-77', 'print_action', 'link-32');">print_action</a></tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-78" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-78', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-79', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.print_action
+x2go.printing.X2goClientPrinting.print_action
+x2go.printing.X2goPrintQueue.print_action" class="py-name" href="#" onclick="return doclink('link-80', 'print_action', 'link-32');">print_action</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method x2go.printing.X2goPrintAction.do_print()=x2go.printing.X2goPrintAction-class.html#do_print,Method x2go.printing.X2goPrintActionPDFSAVE.do_print()=x2go.printing.X2goPrintActionPDFSAVE-class.html#do_print,Method x2go.printing.X2goPrintActionPDFVIEW.do_print()=x2go.printing.X2goPrintActionPDFVIEW-class.html#do_print,Method x2go.printing.X2goPrintActionPRINT.do_print()=x2go.printing.X2goPrintActionPRINT-class.html#do_print,Method x2go.printing.X2goPrintActionPRINTCMD.do_print()=x2go.printing.X2goPrintActionPRINTCMD-class.html#do_print"><a title="x2go.printing.X2goPrintAction.do_print
+x2go.printing.X2goPrintActionPDFSAVE.do_print
+x2go.printing.X2goPrintActionPDFVIEW.do_print
+x2go.printing.X2goPrintActionPRINT.do_print
+x2go.printing.X2goPrintActionPRINTCMD.do_print" class="py-name" href="#" onclick="return doclink('link-81', 'do_print', 'link-81');">do_print</a></tt><tt class="py-op">(</tt><tt class="py-name">pdf_file</tt><tt class="py-op">=</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">parent_thread</tt><tt class="py-op">.</tt><tt class="py-name">spool_dir</tt><tt class="py-op">,</tt> <tt class="py-name">pdf_file</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">job_title</tt><tt class="py-op">=</tt><tt class="py-name">job_title</tt><tt class="py-op">,</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">spool_dir</tt><tt class="py-op">=</tt><tt class="py-name">parent_thread</tt><tt class="py-op">.</tt><tt class="py-name">spool_dir</tt><tt class="py-op">,</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">logger</tt><tt class="py-op">(</tt><tt class="py-string">'removing print job files for %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">pdf_file</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt id="link-82" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-82', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="x2go.log.loglevel_DEBUG" class="py-name" href="#" onclick="return doclink('link-83', 'loglevel_DEBUG', 'link-23');">loglevel_DEBUG</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">parent_thread</tt><tt class="py-op">.</tt><tt class="py-name">spool_dir</tt><tt class="py-op">,</tt> <tt class="py-name">job_file</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">parent_thread</tt><tt class="py-op">.</tt><tt class="py-name">spool_dir</tt><tt class="py-op">,</tt> <tt class="py-name">pdf_file</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">parent_thread</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.active_jobs
+x2go.printing.X2goPrintQueue.active_jobs" class="py-name" href="#" onclick="return doclink('link-84', 'active_jobs', 'link-34');">active_jobs</a></tt><tt class="py-op">[</tt><tt class="py-string">'%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">pdf_file</tt><tt class="py-op">]</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">parent_thread</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="x2go.mimetypes.X2goMIMETypeQueue.job_history
+x2go.printing.X2goPrintQueue.job_history" class="py-name" href="#" onclick="return doclink('link-85', 'job_history', 'link-35');">job_history</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">pdf_file</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> </tt>
+<a name="X2goPrintJob"></a><div id="X2goPrintJob-def"><a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <a class="py-toggle" href="#" id="X2goPrintJob-toggle" onclick="return toggle('X2goPrintJob');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="x2go.mimetypes.X2goPrintJob-class.html">X2goPrintJob</a><tt class="py-op">(</tt><tt class="py-base-class">threading</tt><tt class="py-op">.</tt><tt class="py-base-class">Thread</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goPrintJob-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="X2goPrintJob-expanded"><a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> For each X2go print job we create a sub-thread that let's </tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> the print job be processed in the background.</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt class="py-docstring"> As a handler for this class the function L{x2go_printjob_handler()} </tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-docstring"> is used.</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="X2goPrintJob.__init__"></a><div id="X2goPrintJob.__init__-def"><a name="L270"></a><tt class="py-lineno">270</tt> <a class="py-toggle" href="#" id="X2goPrintJob.__init__-toggle" onclick="return toggle('X2goPrintJob.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.mimetypes.X2goPrintJob-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goPrintJob.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="X2goPrintJob.__init__-expanded"><a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> Construct the X2go print job thread...</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"> All parameters (**kwargs) are passed through to the constructor</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> of C{threading.Thread()}.</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Thread</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="x2go.client.X2goClient.__init__
+x2go.forward.X2goFwServer.__init__
+x2go.gevent_subprocess.Popen.__init__
+x2go.guardian.X2goSessionGuardian.__init__
+x2go.inifiles.X2goIniFile.__init__
+x2go.log.X2goLogger.__init__
+x2go.mimetypes.X2goMIMETypeAction.__init__
+x2go.mimetypes.X2goMIMETypeQueue.__init__
+x2go.mimetypes.X2goPrintJob.__init__
+x2go.printing.X2goClientPrinting.__init__
+x2go.printing.X2goPrintAction.__init__
+x2go.printing.X2goPrintActionPDFSAVE.__init__
+x2go.printing.X2goPrintActionPDFVIEW.__init__
+x2go.printing.X2goPrintActionPRINT.__init__
+x2go.printing.X2goPrintActionPRINTCMD.__init__
+x2go.printing.X2goPrintJob.__init__
+x2go.printing.X2goPrintQueue.__init__
+x2go.profiles.X2goSessionProfiles.__init__
+x2go.proxy.X2goNX3Proxy.__init__
+x2go.proxy.X2goProxy.__init__
+x2go.registry.X2goRegisteredSession.__init__
+x2go.registry.X2goSessionRegistry.__init__
+x2go.rforward.X2goRevFwChannelThread.__init__
+x2go.rforward.X2goRevFwTunnel.__init__
+x2go.session.X2goServerSessionList.__init__
+x2go.session.X2goSession.__init__
+x2go.settings.X2goClientSettings.__init__
+x2go.sftpserver.X2goRevFwTunnelToSFTP.__init__
+x2go.xserver.X2goClientXConfig.__init__
+x2go.xserver.X2goXServer.__init__" class="py-name" href="#" onclick="return doclink('link-86', '__init__', 'link-42');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">daemon</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div></div><a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+ <!-- Home link -->
+ <th> <a
+ href="x2go-module.html">Home</a> </th>
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <!-- Project homepage -->
+ <th class="navbar" align="right" width="100%">
+ <table border="0" cellpadding="0" cellspacing="0">
+ <tr><th class="navbar" align="center"
+ ><a class="navbar" target="_top" href="http://www.x2go.org">Python X2go</a></th>
+ </tr></table></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Fri Nov 19 21:33:58 2010
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/doc/html/x2go.printing.X2goPrintAction-class.html b/doc/html/x2go.mimetypes.X2goMIMETypeAction-class.html
similarity index 67%
copy from doc/html/x2go.printing.X2goPrintAction-class.html
copy to doc/html/x2go.mimetypes.X2goMIMETypeAction-class.html
index c2de8c2..64efd5d 100644
--- a/doc/html/x2go.printing.X2goPrintAction-class.html
+++ b/doc/html/x2go.mimetypes.X2goMIMETypeAction-class.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.printing.X2goPrintAction</title>
+ <title>x2go.mimetypes.X2goMIMETypeAction</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,8 +43,8 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- <a href="x2go.printing-module.html">Module printing</a> ::
- Class X2goPrintAction
+ <a href="x2go.mimetypes-module.html">Module mimetypes</a> ::
+ Class X2goMIMETypeAction
</span>
</td>
<td>
@@ -52,26 +52,20 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.printing.X2goPrintAction-class.html"
+ >] | <a href="x2go.mimetypes.X2goMIMETypeAction-class.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class X2goPrintAction</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintAction">source code</a></span></p>
+<h1 class="epydoc">Class X2goMIMETypeAction</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeAction">source code</a></span></p>
<pre class="base-tree">
object --+
|
- <strong class="uidshort">X2goPrintAction</strong>
+ <strong class="uidshort">X2goMIMETypeAction</strong>
</pre>
-<dl><dt>Known Subclasses:</dt>
-<dd>
- <ul class="subclass-list">
-<li><a href="x2go.printing.X2goPrintActionPDFSAVE-class.html">X2goPrintActionPDFSAVE</a></li><li>, <a href="x2go.printing.X2goPrintActionPDFVIEW-class.html">X2goPrintActionPDFVIEW</a></li><li>, <a href="x2go.printing.X2goPrintActionPRINT-class.html">X2goPrintActionPRINT</a></li><li>, <a href="x2go.printing.X2goPrintActionPRINTCMD-class.html">X2goPrintActionPRINTCMD</a></li> </ul>
-</dd></dl>
-
<hr />
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
@@ -87,12 +81,12 @@ object --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing.X2goPrintAction-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <td><span class="summary-sig"><a href="x2go.mimetypes.X2goMIMETypeAction-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">logger</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">loglevel</span>=<span class="summary-sig-default">56</span>)</span><br />
- This is a meta class has no functionality.</td>
+ STILL UNDOCUMENTED</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintAction.__init__">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeAction.__init__">source code</a></span>
</td>
</tr>
@@ -106,15 +100,14 @@ object --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing.X2goPrintAction-class.html#do_print" class="summary-sig-name">do_print</a>(<span class="summary-sig-arg">self</span>,
- <span class="summary-sig-arg">pdf_file</span>,
- <span class="summary-sig-arg">job_title</span>,
- <span class="summary-sig-arg">spool_dir</span>)</span><br />
+ <td><span class="summary-sig"><a href="x2go.mimetypes.X2goMIMETypeAction-class.html#do_execute" class="summary-sig-name">do_execute</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">mime_file</span>,
+ <span class="summary-sig-arg">mime_type_dir</span>)</span><br />
Perform the defined print action (doing nothing in <a
href="x2go.printing.X2goPrintAction-class.html"
class="link">X2goPrintAction</a> parent class).</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintAction.do_print">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeAction.do_execute">source code</a></span>
</td>
</tr>
@@ -153,14 +146,14 @@ object --+
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="__name__"></a><span class="summary-name">__name__</span> = <code title="'NAME'"><code class="variable-quote">'</code><code class="variable-string">NAME</code><code class="variable-quote">'</code></code>
+ <a name="__name__"></a><span class="summary-name">__name__</span> = <code title="'MIME'"><code class="variable-quote">'</code><code class="variable-string">MIME</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="__description__"></a><span class="summary-name">__description__</span> = <code title="'DESCRIPTION'"><code class="variable-quote">'</code><code class="variable-string">DESCRIPTION</code><code class="variable-quote">'</code></code>
+ <a href="x2go.mimetypes.X2goMIMETypeAction-class.html#__description__" class="summary-name">__description__</a> = <code title="'Execute a command depending on an incoming file\'s MIME type'"><code class="variable-quote">'</code><code class="variable-string">Execute a command depending on an incoming </code><code class="variable-ellipsis">...</code></code>
</td>
</tr>
</table>
@@ -172,22 +165,6 @@ object --+
<td align="left" colspan="2" class="table-header">
<span class="table-header">Properties</span></td>
</tr>
-<tr>
- <td width="15%" align="right" valign="top" class="summary">
- <span class="summary-type"> </span>
- </td><td class="summary">
- <a href="x2go.printing.X2goPrintAction-class.html#name" class="summary-name">name</a><br />
- Return the X2go print action's name.
- </td>
- </tr>
-<tr>
- <td width="15%" align="right" valign="top" class="summary">
- <span class="summary-type"> </span>
- </td><td class="summary">
- <a href="x2go.printing.X2goPrintAction-class.html#description" class="summary-name">description</a><br />
- Return the X2go print action's description text.
- </td>
- </tr>
<tr>
<td colspan="2" class="summary">
<p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
@@ -218,19 +195,18 @@ object --+
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintAction.__init__">source code</a></span>
+ ><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeAction.__init__">source code</a></span>
</td>
</tr></table>
- <p>This is a meta class has no functionality. It is used as parent class
- by »real« X2go print actions.</p>
+ <p>STILL UNDOCUMENTED</p>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
<li><strong class="pname"><code>logger</code></strong> (<code>instance</code>) - you can pass an <a href="x2go.log.X2goLogger-class.html"
class="link">X2goLogger</a> object to the <a
- href="x2go.printing.X2goPrintAction-class.html"
- class="link">X2goPrintAction</a> constructor</li>
+ href="x2go.mimetypes.X2goMIMETypeAction-class.html"
+ class="link">X2goMIMETypeAction</a> constructor</li>
<li><strong class="pname"><code>loglevel</code></strong> (<code>int</code>) - if no <a href="x2go.log.X2goLogger-class.html"
class="link">X2goLogger</a> object has been supplied a new one
will be constructed with the given loglevel</li>
@@ -241,20 +217,19 @@ object --+
</dl>
</td></tr></table>
</div>
-<a name="do_print"></a>
+<a name="do_execute"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
- <h3 class="epydoc"><span class="sig"><span class="sig-name">do_print</span>(<span class="sig-arg">self</span>,
- <span class="sig-arg">pdf_file</span>,
- <span class="sig-arg">job_title</span>,
- <span class="sig-arg">spool_dir</span>)</span>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">do_execute</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">mime_file</span>,
+ <span class="sig-arg">mime_type_dir</span>)</span>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintAction.do_print">source code</a></span>
+ ><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeAction.do_execute">source code</a></span>
</td>
</tr></table>
@@ -264,50 +239,38 @@ object --+
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
- <li><strong class="pname"><code>pdf_file</code></strong> (<code>str</code>) - PDF file name as placed in to the X2go spool directory</li>
- <li><strong class="pname"><code>job_title</code></strong> (<code>str</code>) - human readable print job title</li>
- <li><strong class="pname"><code>spool_dir</code></strong> (<code>str</code>) - location of the X2go client's spool directory</li>
+ <li><strong class="pname"><code>mime_file</code></strong> (<code>str</code>) - name of the incoming file</li>
+ <li><strong class="pname"><code>mime_type_dir</code></strong> (<code>str</code>) - location of the X2go client's spool directory for incoming MIME
+ files</li>
</ul></dd>
</dl>
</td></tr></table>
</div>
<br />
-<!-- ==================== PROPERTY DETAILS ==================== -->
-<a name="section-PropertyDetails"></a>
+<!-- ==================== CLASS VARIABLE DETAILS ==================== -->
+<a name="section-ClassVariableDetails"></a>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
<td align="left" colspan="2" class="table-header">
- <span class="table-header">Property Details</span></td>
+ <span class="table-header">Class Variable Details</span></td>
</tr>
</table>
-<a name="name"></a>
+<a name="__description__"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
- <h3 class="epydoc">name</h3>
- <p>Return the X2go print action's name.</p>
+ <h3 class="epydoc">__description__</h3>
+
<dl class="fields">
- <dt>Get Method:</dt>
- <dd class="value"><span class="summary-sig"><i>unreachable</i>.name()</span>
- - Return the X2go print action's name.
- </dd>
</dl>
-</td></tr></table>
-</div>
-<a name="description"></a>
-<div>
-<table class="details" border="1" cellpadding="3"
- cellspacing="0" width="100%" bgcolor="white">
-<tr><td>
- <h3 class="epydoc">description</h3>
- <p>Return the X2go print action's description text.</p>
<dl class="fields">
- <dt>Get Method:</dt>
- <dd class="value"><span class="summary-sig"><i>unreachable</i>.description()</span>
- - Return the X2go print action's description text.
- </dd>
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+<code class="variable-quote">'</code><code class="variable-string">Execute a command depending on an incoming file\'s MIME type</code><code class="variable-quote">'</code>
+</pre></td></tr></table>
+</dd>
</dl>
</td></tr></table>
</div>
diff --git a/doc/html/x2go.printing.X2goPrintQueue-class.html b/doc/html/x2go.mimetypes.X2goMIMETypeQueue-class.html
similarity index 74%
copy from doc/html/x2go.printing.X2goPrintQueue-class.html
copy to doc/html/x2go.mimetypes.X2goMIMETypeQueue-class.html
index 8d87b83..26ab93a 100644
--- a/doc/html/x2go.printing.X2goPrintQueue-class.html
+++ b/doc/html/x2go.mimetypes.X2goMIMETypeQueue-class.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.printing.X2goPrintQueue</title>
+ <title>x2go.mimetypes.X2goMIMETypeQueue</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,8 +43,8 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- <a href="x2go.printing-module.html">Module printing</a> ::
- Class X2goPrintQueue
+ <a href="x2go.mimetypes-module.html">Module mimetypes</a> ::
+ Class X2goMIMETypeQueue
</span>
</td>
<td>
@@ -52,14 +52,14 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.printing.X2goPrintQueue-class.html"
+ >] | <a href="x2go.mimetypes.X2goMIMETypeQueue-class.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class X2goPrintQueue</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue">source code</a></span></p>
+<h1 class="epydoc">Class X2goMIMETypeQueue</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue">source code</a></span></p>
<pre class="base-tree">
object --+
|
@@ -67,14 +67,11 @@ threading._Verbose --+
|
threading.Thread --+
|
- <strong class="uidshort">X2goPrintQueue</strong>
+ <strong class="uidshort">X2goMIMETypeQueue</strong>
</pre>
<hr />
-<p>If X2go printing is supported in a particaluar <a
- href="x2go.session.X2goSession-class.html" class="link">X2goSession</a>
- instance this class provides a sub-thread for handling incoming X2go
- print jobs.</p>
+<p>STILL UNDOCUMENTED</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
@@ -90,15 +87,12 @@ threading._Verbose --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing.X2goPrintQueue-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
- <span class="summary-sig-arg">spool_dir</span>=<span class="summary-sig-default">None</span>,
- <span class="summary-sig-arg">print_action</span>=<span class="summary-sig-default">None</span>,
- <span class="summary-sig-arg">print_action_args</span>=<span class="summary-sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
+ <td><span class="summary-sig"><a href="x2go.mimetypes.X2goMIMETypeQueue-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">logger</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">loglevel</span>=<span class="summary-sig-default">56</span>)</span><br />
- x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
+ STILL UNDOCUMENTED</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.__init__">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.__init__">source code</a></span>
</td>
</tr>
@@ -114,7 +108,7 @@ threading._Verbose --+
<tr>
<td><span class="summary-sig"><a name="__del__"></a><span class="summary-sig-name">__del__</span>(<span class="summary-sig-arg">self</span>)</span></td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.__del__">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.__del__">source code</a></span>
</td>
</tr>
@@ -128,10 +122,10 @@ threading._Verbose --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing.X2goPrintQueue-class.html#pause" class="summary-sig-name">pause</a>(<span class="summary-sig-arg">self</span>)</span><br />
- Prevent acceptance of new incoming print jobs.</td>
+ <td><span class="summary-sig"><a href="x2go.mimetypes.X2goMIMETypeQueue-class.html#pause" class="summary-sig-name">pause</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Prevent acceptance of new incoming MIME type files.</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.pause">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.pause">source code</a></span>
</td>
</tr>
@@ -146,10 +140,10 @@ threading._Verbose --+
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="resume"></a><span class="summary-sig-name">resume</span>(<span class="summary-sig-arg">self</span>)</span><br />
- Resume operation of the X2go print spooler and continue accepting new
- incoming print jobs.</td>
+ Resume operation of the X2go MIME type thread and continue accepting
+ new incoming MIME type files.</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.resume">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.resume">source code</a></span>
</td>
</tr>
@@ -164,10 +158,10 @@ threading._Verbose --+
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a name="stop_thread"></a><span class="summary-sig-name">stop_thread</span>(<span class="summary-sig-arg">self</span>)</span><br />
- Stops this <a href="x2go.printing.X2goPrintQueue-class.html"
- class="link">X2goPrintQueue</a> thread completely.</td>
+ Stops this <a href="x2go.mimetypes.X2goMIMETypeQueue-class.html"
+ class="link">X2goMIMETypeQueue</a> thread completely.</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.stop_thread">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.stop_thread">source code</a></span>
</td>
</tr>
@@ -181,14 +175,14 @@ threading._Verbose --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing.X2goPrintQueue-class.html#set_print_action" class="summary-sig-name">set_print_action</a>(<span class="summary-sig-arg">self</span>,
+ <td><span class="summary-sig"><a href="x2go.mimetypes.X2goMIMETypeQueue-class.html#set_print_action" class="summary-sig-name">set_print_action</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">print_action</span>,
<span class="summary-sig-arg">**kwargs</span>)</span><br />
Modify the print action of this <a
href="x2go.printing.X2goPrintQueue-class.html"
class="link">X2goPrintQueue</a> thread during runtime.</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.set_print_action">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.set_print_action">source code</a></span>
</td>
</tr>
@@ -202,11 +196,11 @@ threading._Verbose --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing.X2goPrintQueue-class.html#run" class="summary-sig-name">run</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ <td><span class="summary-sig"><a href="x2go.mimetypes.X2goMIMETypeQueue-class.html#run" class="summary-sig-name">run</a>(<span class="summary-sig-arg">self</span>)</span><br />
Start this <a href="x2go.printing.X2goPrintQueue-class.html"
class="link">X2goPrintQueue</a> thread...</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.run">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.run">source code</a></span>
</td>
</tr>
@@ -318,34 +312,19 @@ threading._Verbose --+
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
- <span class="sig-arg">spool_dir</span>=<span class="sig-default">None</span>,
- <span class="sig-arg">print_action</span>=<span class="sig-default">None</span>,
- <span class="sig-arg">print_action_args</span>=<span class="sig-default"><code class="variable-group">{</code><code class="variable-group">}</code></span>,
<span class="sig-arg">logger</span>=<span class="sig-default">None</span>,
<span class="sig-arg">loglevel</span>=<span class="sig-default">56</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.__init__">source code</a></span>
+ ><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.__init__">source code</a></span>
</td>
</tr></table>
- <p>x.__init__(...) initializes x; see x.__class__.__doc__ for
- signature</p>
+ <p>STILL UNDOCUMENTED</p>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
- <li><strong class="pname"><code>spool_dir</code></strong> (<code>str</code>) - local spool directory for incoming print job files</li>
- <li><strong class="pname"><code>print_action</code></strong> (<code>str</code> or instance) - name or instance of either of the possible X2go print action
- classes</li>
- <li><strong class="pname"><code>print_action_args</code></strong> - depending of the chosen <code>print_action</code> this dictionary
- may contain different values; the <code>print_action_args</code>
- will be passed on to the X2go print action instance constructor,
- so refer to either of these: <a
- href="x2go.printing.X2goPrintActionPDFVIEW-class.html#__init__"
- class="link">X2goPrintActionPDFVIEW.__init__()</a>, <a
- href="x2go.printing.X2goPrintActionPRINT-class.html#__init__"
- class="link">X2goPrintActionPRINT.__init__()</a> et al.</li>
<li><strong class="pname"><code>logger</code></strong> (<code>instance</code>) - you can pass an <a href="x2go.log.X2goLogger-class.html"
class="link">X2goLogger</a> object to the <a
href="x2go.proxy.X2goProxy-class.html" class="link">X2goProxy</a>
@@ -370,12 +349,13 @@ threading._Verbose --+
<h3 class="epydoc"><span class="sig"><span class="sig-name">pause</span>(<span class="sig-arg">self</span>)</span>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.pause">source code</a></span>
+ ><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.pause">source code</a></span>
</td>
</tr></table>
- <p>Prevent acceptance of new incoming print jobs. The processing of print
- jobs that are currently still active will be completed, though.</p>
+ <p>Prevent acceptance of new incoming MIME type files. The processing of
+ MIME type files that are currently still active will be completed,
+ though.</p>
<dl class="fields">
</dl>
</td></tr></table>
@@ -392,7 +372,7 @@ threading._Verbose --+
<span class="sig-arg">**kwargs</span>)</span>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.set_print_action">source code</a></span>
+ ><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.set_print_action">source code</a></span>
</td>
</tr></table>
@@ -414,7 +394,7 @@ threading._Verbose --+
<h3 class="epydoc"><span class="sig"><span class="sig-name">run</span>(<span class="sig-arg">self</span>)</span>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintQueue.run">source code</a></span>
+ ><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goMIMETypeQueue.run">source code</a></span>
</td>
</tr></table>
diff --git a/doc/html/x2go.printing.X2goPrintJob-class.html b/doc/html/x2go.mimetypes.X2goPrintJob-class.html
similarity index 91%
copy from doc/html/x2go.printing.X2goPrintJob-class.html
copy to doc/html/x2go.mimetypes.X2goPrintJob-class.html
index ff38e3c..2c85866 100644
--- a/doc/html/x2go.printing.X2goPrintJob-class.html
+++ b/doc/html/x2go.mimetypes.X2goPrintJob-class.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.printing.X2goPrintJob</title>
+ <title>x2go.mimetypes.X2goPrintJob</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,7 +43,7 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- <a href="x2go.printing-module.html">Module printing</a> ::
+ <a href="x2go.mimetypes-module.html">Module mimetypes</a> ::
Class X2goPrintJob
</span>
</td>
@@ -52,14 +52,14 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.printing.X2goPrintJob-class.html"
+ >] | <a href="x2go.mimetypes.X2goPrintJob-class.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class X2goPrintJob</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintJob">source code</a></span></p>
+<h1 class="epydoc">Class X2goPrintJob</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goPrintJob">source code</a></span></p>
<pre class="base-tree">
object --+
|
@@ -74,7 +74,7 @@ threading._Verbose --+
<p>For each X2go print job we create a sub-thread that let's the print
job be processed in the background.</p>
<p>As a handler for this class the function <a
- href="x2go.printing-module.html#x2go_printjob_handler"
+ href="x2go.mimetypes-module.html#x2go_printjob_handler"
class="link">x2go_printjob_handler()</a> is used.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
@@ -91,11 +91,11 @@ threading._Verbose --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing.X2goPrintJob-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <td><span class="summary-sig"><a href="x2go.mimetypes.X2goPrintJob-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">**kwargs</span>)</span><br />
Construct the X2go print job thread...</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintJob.__init__">source code</a></span>
+ <span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goPrintJob.__init__">source code</a></span>
</td>
</tr>
@@ -175,7 +175,7 @@ threading._Verbose --+
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintJob.__init__">source code</a></span>
+ ><span class="codelink"><a href="x2go.mimetypes-pysrc.html#X2goPrintJob.__init__">source code</a></span>
</td>
</tr></table>
diff --git a/doc/html/x2go.registry-module.html b/doc/html/x2go.xserver-module.html
similarity index 86%
copy from doc/html/x2go.registry-module.html
copy to doc/html/x2go.xserver-module.html
index 1a70a24..3d0f914 100644
--- a/doc/html/x2go.registry-module.html
+++ b/doc/html/x2go.xserver-module.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.registry</title>
+ <title>x2go.xserver</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,7 +43,7 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- Module registry
+ Module xserver
</span>
</td>
<td>
@@ -51,17 +51,14 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.registry-module.html"
+ >] | <a href="x2go.xserver-module.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== MODULE DESCRIPTION ==================== -->
-<h1 class="epydoc">Module registry</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.registry-pysrc.html">source code</a></span></p>
-<p>X2goSessionRegistry class - the X2goClient's session registry
- backend</p>
-
+<h1 class="epydoc">Module xserver</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.xserver-pysrc.html">source code</a></span></p>
<!-- ==================== CLASSES ==================== -->
<a name="section-Classes"></a>
<table class="summary" border="1" cellpadding="3"
@@ -74,15 +71,17 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="x2go.registry.X2goRegisteredSession-class.html" class="summary-name">X2goRegisteredSession</a>
+ <a href="x2go.xserver.X2goClientXConfig-class.html" class="summary-name">X2goClientXConfig</a><br />
+ Configuration file based XServer startup settings for X2goClient
+ instances.
</td>
</tr>
<tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="x2go.registry.X2goSessionRegistry-class.html" class="summary-name">X2goSessionRegistry</a><br />
- STILL UNDOCUMENTED
+ <a href="x2go.xserver.X2goXServer-class.html" class="summary-name">X2goXServer</a><br />
+ This routine will start an XServer if it is not running already
</td>
</tr>
</table>
@@ -98,7 +97,7 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="__NAME__"></a><span class="summary-name">__NAME__</span> = <code title="'x2gosessregistry-pylib'"><code class="variable-quote">'</code><code class="variable-string">x2gosessregistry-pylib</code><code class="variable-quote">'</code></code>
+ <a name="__NAME__"></a><span class="summary-name">__NAME__</span> = <code title="'x2gosettings-pylib'"><code class="variable-quote">'</code><code class="variable-string">x2gosettings-pylib</code><code class="variable-quote">'</code></code>
</td>
</tr>
<tr>
diff --git a/doc/html/x2go.settings-pysrc.html b/doc/html/x2go.xserver-pysrc.html
similarity index 56%
copy from doc/html/x2go.settings-pysrc.html
copy to doc/html/x2go.xserver-pysrc.html
index 844ab58..5d774b9 100644
--- a/doc/html/x2go.settings-pysrc.html
+++ b/doc/html/x2go.xserver-pysrc.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.settings</title>
+ <title>x2go.xserver</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,7 +43,7 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- Module settings
+ Module xserver
</span>
</td>
<td>
@@ -51,43 +51,45 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.settings-pysrc.html"
+ >] | <a href="x2go.xserver-pysrc.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
-<h1 class="epydoc">Source Code for <a href="x2go.settings-module.html">Module x2go.settings</a></h1>
+<h1 class="epydoc">Source Code for <a href="x2go.xserver-module.html">Module x2go.xserver</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: utf-8 -*-</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"> </tt>
-<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2010 by Mike Gabriel <m.gabriel at das-netzwerkteam.de></tt> </tt>
-<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
-<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Python X2go is free software; you can redistribute it and/or modify</tt> </tt>
-<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment"># it under the terms of the GNU General Public License as published by</tt> </tt>
-<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># the Free Software Foundation; either version 3 of the License, or</tt> </tt>
-<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># (at your option) any later version.</tt> </tt>
-<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
-<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"># Python X2go is distributed in the hope that it will be useful,</tt> </tt>
-<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"># but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
-<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
-<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"># GNU General Public License for more details.</tt> </tt>
-<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
-<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
-<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment"># along with this program; if not, write to the</tt> </tt>
-<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"># Free Software Foundation, Inc.,</tt> </tt>
-<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"># 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</tt> </tt>
-<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"> </tt>
-<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-docstring">"""\</tt> </tt>
-<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-docstring">X2goClientSettings class - managing x2goclient settings file (incl. LDAP-Support).</tt> </tt>
-<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"><tt class="py-docstring">The L{X2goClientSettings} class one of Python X2go's a public API classes.</tt> </tt>
-<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"><tt class="py-docstring">Use this class (indirectly by retrieving it from an L{X2goClient} instance)</tt> </tt>
-<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt class="py-docstring">in your Python X2go based applications to access the</tt> </tt>
-<a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"><tt class="py-docstring">»settings« configuration file of your X2go client application.</tt> </tt>
-<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
-<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable x2go.__NAME__=x2go-module.html#__NAME__,Variable x2go.client.__NAME__=x2go.client-module.html#__NAME__,Variable x2go.defaults.__NAME__=x2go.defaults-module.html#__NAME__,Variable x2go.forward.__NAME__=x2go.forward-module.html#__NAME__,Variable x2go.guardian.__NAME__=x2go.guardian-module.html#__NAME__,Variable x2go.inifiles.__NAME__=x2go.inifiles-module.html#__NAME__,Variable x2go.log.__NAME__=x2go.log-module.html#__NAME__,Variable x2go.mimetypes.__NAME__=x2go.mimetypes-module.html#__NAME__,Variable x2go.printing.__NAME__=x2go.printing-module.html#__NAME__,Variable x2go.profiles.__NAME__=x2go.profiles-module.html#__NAME__,Variable x2go.proxy.__NAME__=x2go.proxy-module.html#__NAME__,Variable x2go.registry.__NAME__=x2go.registry-module.html#__NAME__,Variable x2go.rforward.__NAME__=x2go.rforward-module.html#__NAME__,Variable x2go.session.__NAME__=x2go.session-mo
dule.htm
l#__NAME__,Variable x2go.settings.__NAME__=x2go.settings-module.html#__NAME__,Variable x2go.sftpserver.__NAME__=x2go.sftpserver-module.html#__NAME__,Variable x2go.utils.__NAME__=x2go.utils-module.html#__NAME__,Variable x2go.x2go_exceptions.__NAME__=x2go.x2go_exceptions-module.html#__NAME__,Variable x2go.xserver.__NAME__=x2go.xserver-module.html#__NAME__"><a title="x2go.__NAME__
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: utf-8 -*-</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2010 by Mike Gabriel <m.gabriel at das-netzwerkteam.de></tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># Python X2go is free software; you can redistribute it and/or modify</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment"># it under the terms of the GNU General Public License as published by</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># the Free Software Foundation; either version 3 of the License, or</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"># (at your option) any later version.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"># Python X2go is distributed in the hope that it will be useful,</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"># but WITHOUT ANY WARRANTY; without even the implied warranty of</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"><tt class="py-comment"># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-comment"># GNU General Public License for more details.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-comment"># You should have received a copy of the GNU General Public License</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-comment"># along with this program; if not, write to the</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"><tt class="py-comment"># Free Software Foundation, Inc.,</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-comment"># 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"><tt class="py-comment"># This code was initially written by:</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"><tt class="py-comment"># 2010 Dick Kniep <dick.kniep at lindix.nl></tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt class="py-comment"># Other contributors:</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"><tt class="py-comment"># none so far</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module x2go.gevent_subprocess=x2go.gevent_subprocess-module.html"><a title="x2go.gevent_subprocess" class="py-name" href="#" onclick="return doclink('link-0', 'gevent_subprocess', 'link-0');">gevent_subprocess</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">subprocess</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable x2go.__NAME__=x2go-module.html#__NAME__,Variable x2go.client.__NAME__=x2go.client-module.html#__NAME__,Variable x2go.defaults.__NAME__=x2go.defaults-module.html#__NAME__,Variable x2go.forward.__NAME__=x2go.forward-module.html#__NAME__,Variable x2go.guardian.__NAME__=x2go.guardian-module.html#__NAME__,Variable x2go.inifiles.__NAME__=x2go.inifiles-module.html#__NAME__,Variable x2go.log.__NAME__=x2go.log-module.html#__NAME__,Variable x2go.mimetypes.__NAME__=x2go.mimetypes-module.html#__NAME__,Variable x2go.printing.__NAME__=x2go.printing-module.html#__NAME__,Variable x2go.profiles.__NAME__=x2go.profiles-module.html#__NAME__,Variable x2go.proxy.__NAME__=x2go.proxy-module.html#__NAME__,Variable x2go.registry.__NAME__=x2go.registry-module.html#__NAME__,Variable x2go.rforward.__NAME__=x2go.rforward-module.html#__NAME__,Variable x2go.session.__NAME__=x2go.session-mo
dule.htm
l#__NAME__,Variable x2go.settings.__NAME__=x2go.settings-module.html#__NAME__,Variable x2go.sftpserver.__NAME__=x2go.sftpserver-module.html#__NAME__,Variable x2go.utils.__NAME__=x2go.utils-module.html#__NAME__,Variable x2go.x2go_exceptions.__NAME__=x2go.x2go_exceptions-module.html#__NAME__,Variable x2go.xserver.__NAME__=x2go.xserver-module.html#__NAME__"><a title="x2go.__NAME__
x2go.client.__NAME__
x2go.defaults.__NAME__
x2go.forward.__NAME__
@@ -105,46 +107,49 @@ x2go.settings.__NAME__
x2go.sftpserver.__NAME__
x2go.utils.__NAME__
x2go.x2go_exceptions.__NAME__
-x2go.xserver.__NAME__" class="py-name" href="#" onclick="return doclink('link-0', '__NAME__', 'link-0');">__NAME__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'x2gosettings-pylib'</tt> </tt>
-<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"> </tt>
-<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"><tt class="py-comment"># modules</tt> </tt>
-<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
-<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> </tt>
-<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"><tt class="py-comment"># Python X2go modules</tt> </tt>
-<a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module x2go.log=x2go.log-module.html"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-1', 'log', 'link-1');">log</a></tt> </tt>
-<a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Module x2go.defaults=x2go.defaults-module.html"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-2', 'defaults', 'link-2');">defaults</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Variable x2go.defaults.X2GO_SETTINGS_CONFIGFILES=x2go.defaults-module.html#X2GO_SETTINGS_CONFIGFILES"><a title="x2go.defaults.X2GO_SETTINGS_CONFIGFILES" class="py-name" href="#" onclick="return doclink('link-3', 'X2GO_SETTINGS_CONFIGFILES', 'link-3');">X2GO_SETTINGS_CONFIGFILES</a></tt> </tt>
-<a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-4', 'defaults', 'link-2');">defaults</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Variable x2go.defaults.X2GO_CLIENTSETTINGS_DEFAULTS=x2go.defaults-module.html#X2GO_CLIENTSETTINGS_DEFAULTS"><a title="x2go.defaults.X2GO_CLIENTSETTINGS_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-5', 'X2GO_CLIENTSETTINGS_DEFAULTS', 'link-5');">X2GO_CLIENTSETTINGS_DEFAULTS</a></tt> </tt>
-<a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Module x2go.inifiles=x2go.inifiles-module.html"><a title="x2go.inifiles" class="py-name" href="#" onclick="return doclink('link-6', 'inifiles', 'link-6');">inifiles</a></tt> </tt>
-<a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"> </tt>
-<a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"> </tt>
-<a name="X2goClientSettings"></a><div id="X2goClientSettings-def"><a name="L41"></a><tt class="py-lineno">41</tt> <a class="py-toggle" href="#" id="X2goClientSettings-toggle" onclick="return toggle('X2goClientSettings');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="x2go.settings.X2goClientSettings-class.html">X2goClientSettings</a><tt class="py-op">(</tt><tt class="py-base-class">inifiles</tt><tt class="py-op">.</tt><tt class="py-base-class">X2goIniFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="X2goClientSettings-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="X2goClientSettings-expanded"><a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
-<a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"><tt class="py-docstring"> Configuration file based settings for X2goClient instances.</tt> </tt>
-<a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"> <tt id="link-7" class="py-name" targets="Variable x2go.inifiles.X2goIniFile.defaultValues=x2go.inifiles.X2goIniFile-class.html#defaultValues,Variable x2go.printing.X2goClientPrinting.defaultValues=x2go.printing.X2goClientPrinting-class.html#defaultValues,Variable x2go.profiles.X2goSessionProfiles.defaultValues=x2go.profiles.X2goSessionProfiles-class.html#defaultValues,Variable x2go.settings.X2goClientSettings.defaultValues=x2go.settings.X2goClientSettings-class.html#defaultValues,Variable x2go.xserver.X2goClientXConfig.defaultValues=x2go.xserver.X2goClientXConfig-class.html#defaultValues"><a title="x2go.inifiles.X2goIniFile.defaultValues
+x2go.xserver.__NAME__" class="py-name" href="#" onclick="return doclink('link-1', '__NAME__', 'link-1');">__NAME__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'x2gosettings-pylib'</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"><tt class="py-comment"># modules</tt> </tt>
+<a name="L34"></a><tt class="py-lineno">34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"><tt class="py-comment"># Python X2go modules</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Module x2go.log=x2go.log-module.html"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-2', 'log', 'link-2');">log</a></tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name" targets="Module x2go.defaults=x2go.defaults-module.html"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-3', 'defaults', 'link-3');">defaults</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Variable x2go.defaults.X2GO_XCONFIG_CONFIGFILES=x2go.defaults-module.html#X2GO_XCONFIG_CONFIGFILES"><a title="x2go.defaults.X2GO_XCONFIG_CONFIGFILES" class="py-name" href="#" onclick="return doclink('link-4', 'X2GO_XCONFIG_CONFIGFILES', 'link-4');">X2GO_XCONFIG_CONFIGFILES</a></tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-5', 'defaults', 'link-3');">defaults</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Variable x2go.defaults.X2GO_CLIENTXCONFIG_DEFAULTS=x2go.defaults-module.html#X2GO_CLIENTXCONFIG_DEFAULTS"><a title="x2go.defaults.X2GO_CLIENTXCONFIG_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-6', 'X2GO_CLIENTXCONFIG_DEFAULTS', 'link-6');">X2GO_CLIENTXCONFIG_DEFAULTS</a></tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Module x2go.inifiles=x2go.inifiles-module.html"><a title="x2go.inifiles" class="py-name" href="#" onclick="return doclink('link-7', 'inifiles', 'link-7');">inifiles</a></tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"> </tt>
+<a name="X2goClientXConfig"></a><div id="X2goClientXConfig-def"><a name="L44"></a><tt class="py-lineno">44</tt> <a class="py-toggle" href="#" id="X2goClientXConfig-toggle" onclick="return toggle('X2goClientXConfig');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="x2go.xserver.X2goClientXConfig-class.html">X2goClientXConfig</a><tt class="py-op">(</tt><tt class="py-base-class">inifiles</tt><tt class="py-op">.</tt><tt class="py-base-class">X2goIniFile</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goClientXConfig-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="X2goClientXConfig-expanded"><a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"><tt class="py-docstring"> Configuration file based XServer startup settings for X2goClient instances.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"><tt class="py-docstring"> This class is needed for Windows systems and (maybe soon) for Unix desktops using Wayland.</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"> <tt id="link-8" class="py-name" targets="Variable x2go.inifiles.X2goIniFile.defaultValues=x2go.inifiles.X2goIniFile-class.html#defaultValues,Variable x2go.printing.X2goClientPrinting.defaultValues=x2go.printing.X2goClientPrinting-class.html#defaultValues,Variable x2go.profiles.X2goSessionProfiles.defaultValues=x2go.profiles.X2goSessionProfiles-class.html#defaultValues,Variable x2go.settings.X2goClientSettings.defaultValues=x2go.settings.X2goClientSettings-class.html#defaultValues,Variable x2go.xserver.X2goClientXConfig.defaultValues=x2go.xserver.X2goClientXConfig-class.html#defaultValues"><a title="x2go.inifiles.X2goIniFile.defaultValues
x2go.printing.X2goClientPrinting.defaultValues
x2go.profiles.X2goSessionProfiles.defaultValues
x2go.settings.X2goClientSettings.defaultValues
-x2go.xserver.X2goClientXConfig.defaultValues" class="py-name" href="#" onclick="return doclink('link-7', 'defaultValues', 'link-7');">defaultValues</a></tt> <tt class="py-op">=</tt> <tt id="link-8" class="py-name"><a title="x2go.defaults.X2GO_CLIENTSETTINGS_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-8', 'X2GO_CLIENTSETTINGS_DEFAULTS', 'link-5');">X2GO_CLIENTSETTINGS_DEFAULTS</a></tt> </tt>
-<a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"> </tt>
-<a name="X2goClientSettings.__init__"></a><div id="X2goClientSettings.__init__-def"><a name="L48"></a><tt class="py-lineno">48</tt> <a class="py-toggle" href="#" id="X2goClientSettings.__init__-toggle" onclick="return toggle('X2goClientSettings.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.settings.X2goClientSettings-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">config_files</tt><tt class="py-op">=</tt><tt id="link-9" class="py-name"><a title="x2go.defaults.X2GO_SETTINGS_CONFIGFILES" class="py-name" href="#" onclick="return doclink('link-9', 'X2GO_SETTINGS_CONFIGFILES', 'link-3');">X2GO_SETTINGS_CONFIGFILES</a></tt><tt class="py-op">,</tt> <tt class="py-param">defaults</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">logger</tt><tt class="py-op">=</tt><tt class="py-name">None
</tt><tt
class="py-op">,</tt> <tt class="py-param">loglevel</tt><tt class="py-op">=</tt><tt id="link-10" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-10', 'log', 'link-1');">log</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Variable x2go.log.loglevel_DEFAULT=x2go.log-module.html#loglevel_DEFAULT"><a title="x2go.log.loglevel_DEFAULT" class="py-name" href="#" onclick="return doclink('link-11', 'loglevel_DEFAULT', 'link-11');">loglevel_DEFAULT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="X2goClientSettings.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="X2goClientSettings.__init__-expanded"><a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
-<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"><tt class="py-docstring"> Constructs an L{X2goClientSettings} instance. This is normally done by an L{X2goClient} instance.</tt> </tt>
-<a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"><tt class="py-docstring"> You can retrieve this L{X2goClientSettings} instance with the L{X2goClient.get_client_settings()} </tt> </tt>
-<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"><tt class="py-docstring"> method.</tt> </tt>
-<a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"><tt class="py-docstring"> On construction the L{X2goClientSettings} object is filled with values from the configuration files::</tt> </tt>
-<a name="L55"></a><tt class="py-lineno">55</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"><tt class="py-docstring"> /etc/x2goclient/settings</tt> </tt>
-<a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"><tt class="py-docstring"> ~/.x2goclient/settings</tt> </tt>
+x2go.xserver.X2goClientXConfig.defaultValues" class="py-name" href="#" onclick="return doclink('link-8', 'defaultValues', 'link-8');">defaultValues</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="x2go.defaults.X2GO_CLIENTXCONFIG_DEFAULTS" class="py-name" href="#" onclick="return doclink('link-9', 'X2GO_CLIENTXCONFIG_DEFAULTS', 'link-6');">X2GO_CLIENTXCONFIG_DEFAULTS</a></tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"> </tt>
+<a name="X2goClientXConfig.__init__"></a><div id="X2goClientXConfig.__init__-def"><a name="L53"></a><tt class="py-lineno">53</tt> <a class="py-toggle" href="#" id="X2goClientXConfig.__init__-toggle" onclick="return toggle('X2goClientXConfig.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.xserver.X2goClientXConfig-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">config_files</tt><tt class="py-op">=</tt><tt id="link-10" class="py-name"><a title="x2go.defaults.X2GO_XCONFIG_CONFIGFILES" class="py-name" href="#" onclick="return doclink('link-10', 'X2GO_XCONFIG_CONFIGFILES', 'link-4');">X2GO_XCONFIG_CONFIGFILES</a></tt><tt class="py-op">,</tt> <tt class="py-param">defaults</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">logger</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><t
t class=
"py-op">,</tt> <tt class="py-param">loglevel</tt><tt class="py-op">=</tt><tt id="link-11" class="py-name"><a title="x2go.log" class="py-name" href="#" onclick="return doclink('link-11', 'log', 'link-2');">log</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Variable x2go.log.loglevel_DEFAULT=x2go.log-module.html#loglevel_DEFAULT"><a title="x2go.log.loglevel_DEFAULT" class="py-name" href="#" onclick="return doclink('link-12', 'loglevel_DEFAULT', 'link-12');">loglevel_DEFAULT</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goClientXConfig.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="X2goClientXConfig.__init__-expanded"><a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"> <tt class="py-docstring">"""\</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">55</tt> <tt class="py-line"><tt class="py-docstring"> Constructs an L{X2goClientXConfig} instance. This is normally done by an L{X2goClient} instance.</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"><tt class="py-docstring"> You can retrieve this L{X2goClientXConfig} instance with the C{X2goClient.get_client_xconfig()} </tt> </tt>
+<a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"><tt class="py-docstring"> method.</tt> </tt>
<a name="L58"></a><tt class="py-lineno">58</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"><tt class="py-docstring"> The files are read in the specified order and config options of both files are merged. Options </tt> </tt>
-<a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"><tt class="py-docstring"> set in the user configuration file (C{~/.x2goclient/settings}) override global options set in</tt> </tt>
-<a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"><tt class="py-docstring"> C{/etc/x2goclient/settings}.</tt> </tt>
-<a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L63"></a><tt class="py-lineno">63</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"> <tt id="link-12" class="py-name"><a title="x2go.inifiles" class="py-name" href="#" onclick="return doclink('link-12', 'inifiles', 'link-6');">inifiles</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Class x2go.inifiles.X2goIniFile=x2go.inifiles.X2goIniFile-class.html"><a title="x2go.inifiles.X2goIniFile" class="py-name" href="#" onclick="return doclink('link-13', 'X2goIniFile', 'link-13');">X2goIniFile</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method x2go.client.X2goClient.__init__()=x2go.client.X2goClient-class.html#__init__,Method x2go.forward.X2goFwServer.__init__()=x2go.forward.X2goFwServer-class.html#__init__,Method x2go.gevent_subprocess.Popen.__init__()=x2go.gevent_subprocess.Popen-class.html#__init__,Method x2go.guardian.X2goSessionGuardian.__init__()=x2go.guardian.X2goSessionGuardian-class.html#__init__,Method x2go.inifiles.X2goIniFi
le.__ini
t__()=x2go.inifiles.X2goIniFile-class.html#__init__,Method x2go.log.X2goLogger.__init__()=x2go.log.X2goLogger-class.html#__init__,Method x2go.mimetypes.X2goMIMETypeAction.__init__()=x2go.mimetypes.X2goMIMETypeAction-class.html#__init__,Method x2go.mimetypes.X2goMIMETypeQueue.__init__()=x2go.mimetypes.X2goMIMETypeQueue-class.html#__init__,Method x2go.mimetypes.X2goPrintJob.__init__()=x2go.mimetypes.X2goPrintJob-class.html#__init__,Method x2go.printing.X2goClientPrinting.__init__()=x2go.printing.X2goClientPrinting-class.html#__init__,Method x2go.printing.X2goPrintAction.__init__()=x2go.printing.X2goPrintAction-class.html#__init__,Method x2go.printing.X2goPrintActionPDFSAVE.__init__()=x2go.printing.X2goPrintActionPDFSAVE-class.html#__init__,Method x2go.printing.X2goPrintActionPDFVIEW.__init__()=x2go.printing.X2goPrintActionPDFVIEW-class.html#__init__,Method x2go.printing.X2goPrintActionPRINT.__init__()=x2go.printing.X2goPrintActionPRINT-class.html#__init__,Method x2go.printing.
X2goPrin
tActionPRINTCMD.__init__()=x2go.printing.X2goPrintActionPRINTCMD-class.html#__init__,Method x2go.printing.X2goPrintJob.__init__()=x2go.printing.X2goPrintJob-class.html#__init__,Method x2go.printing.X2goPrintQueue.__init__()=x2go.printing.X2goPrintQueue-class.html#__init__,Method x2go.profiles.X2goSessionProfiles.__init__()=x2go.profiles.X2goSessionProfiles-class.html#__init__,Method x2go.proxy.X2goNX3Proxy.__init__()=x2go.proxy.X2goNX3Proxy-class.html#__init__,Method x2go.proxy.X2goProxy.__init__()=x2go.proxy.X2goProxy-class.html#__init__,Method x2go.registry.X2goRegisteredSession.__init__()=x2go.registry.X2goRegisteredSession-class.html#__init__,Method x2go.registry.X2goSessionRegistry.__init__()=x2go.registry.X2goSessionRegistry-class.html#__init__,Method x2go.rforward.X2goRevFwChannelThread.__init__()=x2go.rforward.X2goRevFwChannelThread-class.html#__init__,Method x2go.rforward.X2goRevFwTunnel.__init__()=x2go.rforward.X2goRevFwTunnel-class.html#__init__,Method x2go.sessio
n.X2goSe
rverSessionList.__init__()=x2go.session.X2goServerSessionList-class.html#__init__,Method x2go.session.X2goSession.__init__()=x2go.session.X2goSession-class.html#__init__,Method x2go.settings.X2goClientSettings.__init__()=x2go.settings.X2goClientSettings-class.html#__init__,Method x2go.sftpserver.X2goRevFwTunnelToSFTP.__init__()=x2go.sftpserver.X2goRevFwTunnelToSFTP-class.html#__init__,Method x2go.xserver.X2goClientXConfig.__init__()=x2go.xserver.X2goClientXConfig-class.html#__init__,Method x2go.xserver.X2goXServer.__init__()=x2go.xserver.X2goXServer-class.html#__init__"><a title="x2go.client.X2goClient.__init__
+<a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"><tt class="py-docstring"> On construction the L{X2goClientXConfig} instance is filled with values from the configuration files::</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"><tt class="py-docstring"> /etc/x2goclient/xconfig</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"><tt class="py-docstring"> ~/.x2goclient/xconfig</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"><tt class="py-docstring"> The files are read in the specified order and config options of both files are merged. Options </tt> </tt>
+<a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"><tt class="py-docstring"> set in the user configuration file (C{~/.x2goclient/xconfig}) override global options set in</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">66</tt> <tt class="py-line"><tt class="py-docstring"> C{/etc/x2goclient/xconfig}.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">69</tt> <tt class="py-line"> <tt id="link-13" class="py-name"><a title="x2go.inifiles" class="py-name" href="#" onclick="return doclink('link-13', 'inifiles', 'link-7');">inifiles</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Class x2go.inifiles.X2goIniFile=x2go.inifiles.X2goIniFile-class.html"><a title="x2go.inifiles.X2goIniFile" class="py-name" href="#" onclick="return doclink('link-14', 'X2goIniFile', 'link-14');">X2goIniFile</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method x2go.client.X2goClient.__init__()=x2go.client.X2goClient-class.html#__init__,Method x2go.forward.X2goFwServer.__init__()=x2go.forward.X2goFwServer-class.html#__init__,Method x2go.gevent_subprocess.Popen.__init__()=x2go.gevent_subprocess.Popen-class.html#__init__,Method x2go.guardian.X2goSessionGuardian.__init__()=x2go.guardian.X2goSessionGuardian-class.html#__init__,Method x2go.inifiles.X2goIniFi
le.__ini
t__()=x2go.inifiles.X2goIniFile-class.html#__init__,Method x2go.log.X2goLogger.__init__()=x2go.log.X2goLogger-class.html#__init__,Method x2go.mimetypes.X2goMIMETypeAction.__init__()=x2go.mimetypes.X2goMIMETypeAction-class.html#__init__,Method x2go.mimetypes.X2goMIMETypeQueue.__init__()=x2go.mimetypes.X2goMIMETypeQueue-class.html#__init__,Method x2go.mimetypes.X2goPrintJob.__init__()=x2go.mimetypes.X2goPrintJob-class.html#__init__,Method x2go.printing.X2goClientPrinting.__init__()=x2go.printing.X2goClientPrinting-class.html#__init__,Method x2go.printing.X2goPrintAction.__init__()=x2go.printing.X2goPrintAction-class.html#__init__,Method x2go.printing.X2goPrintActionPDFSAVE.__init__()=x2go.printing.X2goPrintActionPDFSAVE-class.html#__init__,Method x2go.printing.X2goPrintActionPDFVIEW.__init__()=x2go.printing.X2goPrintActionPDFVIEW-class.html#__init__,Method x2go.printing.X2goPrintActionPRINT.__init__()=x2go.printing.X2goPrintActionPRINT-class.html#__init__,Method x2go.printing.
X2goPrin
tActionPRINTCMD.__init__()=x2go.printing.X2goPrintActionPRINTCMD-class.html#__init__,Method x2go.printing.X2goPrintJob.__init__()=x2go.printing.X2goPrintJob-class.html#__init__,Method x2go.printing.X2goPrintQueue.__init__()=x2go.printing.X2goPrintQueue-class.html#__init__,Method x2go.profiles.X2goSessionProfiles.__init__()=x2go.profiles.X2goSessionProfiles-class.html#__init__,Method x2go.proxy.X2goNX3Proxy.__init__()=x2go.proxy.X2goNX3Proxy-class.html#__init__,Method x2go.proxy.X2goProxy.__init__()=x2go.proxy.X2goProxy-class.html#__init__,Method x2go.registry.X2goRegisteredSession.__init__()=x2go.registry.X2goRegisteredSession-class.html#__init__,Method x2go.registry.X2goSessionRegistry.__init__()=x2go.registry.X2goSessionRegistry-class.html#__init__,Method x2go.rforward.X2goRevFwChannelThread.__init__()=x2go.rforward.X2goRevFwChannelThread-class.html#__init__,Method x2go.rforward.X2goRevFwTunnel.__init__()=x2go.rforward.X2goRevFwTunnel-class.html#__init__,Method x2go.sessio
n.X2goSe
rverSessionList.__init__()=x2go.session.X2goServerSessionList-class.html#__init__,Method x2go.session.X2goSession.__init__()=x2go.session.X2goSession-class.html#__init__,Method x2go.settings.X2goClientSettings.__init__()=x2go.settings.X2goClientSettings-class.html#__init__,Method x2go.sftpserver.X2goRevFwTunnelToSFTP.__init__()=x2go.sftpserver.X2goRevFwTunnelToSFTP-class.html#__init__,Method x2go.xserver.X2goClientXConfig.__init__()=x2go.xserver.X2goClientXConfig-class.html#__init__,Method x2go.xserver.X2goXServer.__init__()=x2go.xserver.X2goXServer-class.html#__init__"><a title="x2go.client.X2goClient.__init__
x2go.forward.X2goFwServer.__init__
x2go.gevent_subprocess.Popen.__init__
x2go.guardian.X2goSessionGuardian.__init__
@@ -173,8 +178,30 @@ x2go.session.X2goSession.__init__
x2go.settings.X2goClientSettings.__init__
x2go.sftpserver.X2goRevFwTunnelToSFTP.__init__
x2go.xserver.X2goClientXConfig.__init__
-x2go.xserver.X2goXServer.__init__" class="py-name" href="#" onclick="return doclink('link-14', '__init__', 'link-14');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-15" class="py-name" targets="Variable x2go.printing.X2goClientPrinting.config_files=x2go.printing.X2goClientPrinting-class.html#config_files"><a title="x2go.printing.X2goClientPrinting.config_files" class="py-name" href="#" onclick="return doclink('link-15', 'config_files', 'link-15');">config_files</a></tt><tt class="py-op">,</tt> <tt id="link-16" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-16', 'defaults', 'link-2');">defaults</a></tt><tt class="py-op">=</tt><tt id="link-17" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-17', 'defaults', 'link-2');">defaults</a></tt><tt class="py-op">,</tt> <tt class="py-name">logger</tt><tt class="py-op">=</tt><tt c
lass="py
-name">logger</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt class="py-name">loglevel</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"> </tt><script type="text/javascript">
+x2go.xserver.X2goXServer.__init__" class="py-name" href="#" onclick="return doclink('link-15', '__init__', 'link-15');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt id="link-16" class="py-name" targets="Variable x2go.printing.X2goClientPrinting.config_files=x2go.printing.X2goClientPrinting-class.html#config_files"><a title="x2go.printing.X2goClientPrinting.config_files" class="py-name" href="#" onclick="return doclink('link-16', 'config_files', 'link-16');">config_files</a></tt><tt class="py-op">,</tt> <tt id="link-17" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-17', 'defaults', 'link-3');">defaults</a></tt><tt class="py-op">=</tt><tt id="link-18" class="py-name"><a title="x2go.defaults" class="py-name" href="#" onclick="return doclink('link-18', 'defaults', 'link-3');">defaults</a></tt><tt class="py-op">,</tt> <tt class="py-name">logger</tt><tt class="py-op">=</tt><tt c
lass="py
-name">logger</tt><tt class="py-op">,</tt> <tt class="py-name">loglevel</tt><tt class="py-op">=</tt><tt class="py-name">loglevel</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L70"></a><tt class="py-lineno">70</tt> <tt class="py-line"> </tt>
+<a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"> </tt>
+<a name="X2goXServer"></a><div id="X2goXServer-def"><a name="L72"></a><tt class="py-lineno">72</tt> <a class="py-toggle" href="#" id="X2goXServer-toggle" onclick="return toggle('X2goXServer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="x2go.xserver.X2goXServer-class.html">X2goXServer</a><tt class="py-op">(</tt><tt class="py-base-class">threading</tt><tt class="py-op">.</tt><tt class="py-base-class">Thread</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goXServer-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="X2goXServer-expanded"><a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">74</tt> <tt class="py-line"><tt class="py-docstring"> This routine will start an XServer if it is not running </tt> </tt>
+<a name="L75"></a><tt class="py-lineno">75</tt> <tt class="py-line"><tt class="py-docstring"> already</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt> <tt class="py-line"> </tt>
+<a name="X2goXServer.__init__"></a><div id="X2goXServer.__init__-def"><a name="L78"></a><tt class="py-lineno">78</tt> <a class="py-toggle" href="#" id="X2goXServer.__init__-toggle" onclick="return toggle('X2goXServer.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="x2go.xserver.X2goXServer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">XServerParms</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="X2goXServer.__init__-collapsed" style="display:none;" pad="++" indent="++++++++"></div><div id="X2goXServer.__init__-expanded"><a name="L79"></a><tt class="py-lineno">79</tt> <tt class="py-line"> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt> <tt class="py-line"> <tt class="py-name">processname</tt> <tt class="py-op">=</tt> <tt class="py-name">XServerParms</tt><tt class="py-op">.</tt><tt class="py-name">binary</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">line</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">popen</tt><tt class="py-op">(</tt><tt class="py-string">"ps xa"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt> <tt class="py-line"> <tt class="py-name">fields</tt> <tt class="py-op">=</tt> <tt class="py-name">line</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt> <tt class="py-line"> <tt class="py-name">pid</tt> <tt class="py-op">=</tt> <tt class="py-name">fields</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt> <tt class="py-line"> <tt class="py-name">process</tt> <tt class="py-op">=</tt> <tt class="py-name">fields</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt> <tt class="py-line"> </tt>
+<a name="L86"></a><tt class="py-lineno">86</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">process</tt><tt class="py-op">.</tt><tt class="py-name">find</tt><tt class="py-op">(</tt><tt class="py-name">XServerParms</tt><tt class="py-op">.</tt><tt class="py-name">binary</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">87</tt> <tt class="py-line"> <tt class="py-comment"># XServer is already running</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">88</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">89</tt> <tt class="py-line"> </tt>
+<a name="L90"></a><tt class="py-lineno">90</tt> <tt class="py-line"> <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt class="py-name">subprocess</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Class x2go.gevent_subprocess.Popen=x2go.gevent_subprocess.Popen-class.html"><a title="x2go.gevent_subprocess.Popen" class="py-name" href="#" onclick="return doclink('link-19', 'Popen', 'link-19');">Popen</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">XServerParms</tt><tt class="py-op">.</tt><tt class="py-name">binary</tt><tt class="py-op">,</tt><tt class="py-name">XServerParms</tt><tt class="py-op">.</tt><tt class="py-name">parameters</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">shell</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno">91</tt> <tt class="py-line"> <tt class="py-name">sts</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">waitpid</tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">.</tt><tt class="py-name">pid</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+</div></div><a name="L92"></a><tt class="py-lineno">92</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -212,7 +239,7 @@ expandto(location.href);
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Nov 19 21:33:58 2010
+ Generated by Epydoc 3.0.1 on Fri Nov 19 21:33:59 2010
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/doc/html/x2go.settings.X2goClientSettings-class.html b/doc/html/x2go.xserver.X2goClientXConfig-class.html
similarity index 67%
copy from doc/html/x2go.settings.X2goClientSettings-class.html
copy to doc/html/x2go.xserver.X2goClientXConfig-class.html
index 29b43da..71e153e 100644
--- a/doc/html/x2go.settings.X2goClientSettings-class.html
+++ b/doc/html/x2go.xserver.X2goClientXConfig-class.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.settings.X2goClientSettings</title>
+ <title>x2go.xserver.X2goClientXConfig</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,8 +43,8 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- <a href="x2go.settings-module.html">Module settings</a> ::
- Class X2goClientSettings
+ <a href="x2go.xserver-module.html">Module xserver</a> ::
+ Class X2goClientXConfig
</span>
</td>
<td>
@@ -52,24 +52,27 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.settings.X2goClientSettings-class.html"
+ >] | <a href="x2go.xserver.X2goClientXConfig-class.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class X2goClientSettings</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.settings-pysrc.html#X2goClientSettings">source code</a></span></p>
+<h1 class="epydoc">Class X2goClientXConfig</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.xserver-pysrc.html#X2goClientXConfig">source code</a></span></p>
<pre class="base-tree">
object --+
|
<a href="x2go.inifiles.X2goIniFile-class.html">inifiles.X2goIniFile</a> --+
|
- <strong class="uidshort">X2goClientSettings</strong>
+ <strong class="uidshort">X2goClientXConfig</strong>
</pre>
<hr />
-<p>Configuration file based settings for X2goClient instances.</p>
+<p>Configuration file based XServer startup settings for X2goClient
+ instances.</p>
+ <p>This class is needed for Windows systems and (maybe soon) for Unix
+ desktops using Wayland.</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
@@ -85,15 +88,15 @@
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.settings.X2goClientSettings-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
- <span class="summary-sig-arg">config_files</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">/etc/x2goclient/settings</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">/home/mike/.x2goclient/settings</code><code class="variable-quote">'</code><code class="variable-group">]</code></span>,
+ <td><span class="summary-sig"><a href="x2go.xserver.X2goClientXConfig-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">config_files</span>=<span class="summary-sig-default"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">/etc/x2goclient/xconfig</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">/home/mike/.x2goclient/xconfig</code><code class="variable-quote">'</code><code class="variable-group">]</code></span>,
<span class="summary-sig-arg">defaults</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">logger</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">loglevel</span>=<span class="summary-sig-default">56</span>)</span><br />
- Constructs an <a href="x2go.settings.X2goClientSettings-class.html"
- class="link">X2goClientSettings</a> instance.</td>
+ Constructs an <a href="x2go.xserver.X2goClientXConfig-class.html"
+ class="link">X2goClientXConfig</a> instance.</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.settings-pysrc.html#X2goClientSettings.__init__">source code</a></span>
+ <span class="codelink"><a href="x2go.xserver-pysrc.html#X2goClientXConfig.__init__">source code</a></span>
</td>
</tr>
@@ -140,15 +143,7 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="x2go.settings.X2goClientSettings-class.html#defaultValues" class="summary-name">defaultValues</a> = <code title="{'Authorization': {'editprofile': True,
- 'newprofile': True,
- 'resume': True,
- 'suspend': True},
- 'General': {'autoresume': True, 'clientport': 22},
- 'LDAP': {'port': 389,
- 'port1': 0,
- 'port2': 0,
-..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">Authorization</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">editprofile</code><code class="variable-quote">'</code><code class="variable-op">: </code>True<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">newpr</code><code class="variable-ellipsis">...</code></code>
+ <a href="x2go.xserver.X2goClientXConfig-class.html#defaultValues" class="summary-name">defaultValues</a> = <code title="{'XServer': {'binary': 'XMing', 'parameters': '', 'stopcommand': ''}}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">XServer</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">binary</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">XMing</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">parameters</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-ellipsis">...</code></code>
</td>
</tr>
<tr>
@@ -196,37 +191,36 @@
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
- <span class="sig-arg">config_files</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">/etc/x2goclient/settings</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">/home/mike/.x2goclient/settings</code><code class="variable-quote">'</code><code class="variable-group">]</code></span>,
+ <span class="sig-arg">config_files</span>=<span class="sig-default"><code class="variable-group">[</code><code class="variable-quote">'</code><code class="variable-string">/etc/x2goclient/xconfig</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">/home/mike/.x2goclient/xconfig</code><code class="variable-quote">'</code><code class="variable-group">]</code></span>,
<span class="sig-arg">defaults</span>=<span class="sig-default">None</span>,
<span class="sig-arg">logger</span>=<span class="sig-default">None</span>,
<span class="sig-arg">loglevel</span>=<span class="sig-default">56</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.settings-pysrc.html#X2goClientSettings.__init__">source code</a></span>
+ ><span class="codelink"><a href="x2go.xserver-pysrc.html#X2goClientXConfig.__init__">source code</a></span>
</td>
</tr></table>
- <p>Constructs an <a href="x2go.settings.X2goClientSettings-class.html"
- class="link">X2goClientSettings</a> instance. This is normally done by an
+ <p>Constructs an <a href="x2go.xserver.X2goClientXConfig-class.html"
+ class="link">X2goClientXConfig</a> instance. This is normally done by an
<a href="x2go.client.X2goClient-class.html" class="link">X2goClient</a>
instance. You can retrieve this <a
- href="x2go.settings.X2goClientSettings-class.html"
- class="link">X2goClientSettings</a> instance with the <a
- href="x2go.client.X2goClient-class.html#get_client_settings"
- class="link">X2goClient.get_client_settings()</a> method.</p>
+ href="x2go.xserver.X2goClientXConfig-class.html"
+ class="link">X2goClientXConfig</a> instance with the
+ <code>X2goClient.get_client_xconfig()</code> method.</p>
<p>On construction the <a
- href="x2go.settings.X2goClientSettings-class.html"
- class="link">X2goClientSettings</a> object is filled with values from the
- configuration files:</p>
+ href="x2go.xserver.X2goClientXConfig-class.html"
+ class="link">X2goClientXConfig</a> instance is filled with values from
+ the configuration files:</p>
<pre class="literalblock">
- /etc/x2goclient/settings
- ~/.x2goclient/settings
+ /etc/x2goclient/xconfig
+ ~/.x2goclient/xconfig
</pre>
<p>The files are read in the specified order and config options of both
files are merged. Options set in the user configuration file
- (<code>~/.x2goclient/settings</code>) override global options set in
- <code>/etc/x2goclient/settings</code>.</p>
+ (<code>~/.x2goclient/xconfig</code>) override global options set in
+ <code>/etc/x2goclient/xconfig</code>.</p>
<dl class="fields">
<dt>Parameters:</dt>
<dd><ul class="nomargin-top">
@@ -271,15 +265,7 @@
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">Authorization</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">editprofile</code><code class="variable-quote">'</code><code class="variable-op">: </code>True<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">newprofile</code><code class="variable-quote">'</code><code class="variable-op">: </code>True<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">resume</code><code class="variable-quote">'</code><code class="variable-op">: </code>True<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">suspend</code><code class="variable-quote">'</code><code class="variable-op">: </code>True<code class="variable-group">}</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">General</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">autoresume</code><code class="variable-quote">'</code><code class="variable-op">: </code>True<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">clientport</code><code class="variable-quote">'</code><code class="variable-op">: </code>22<code class="variable-group">}</code><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">LDAP</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">port</code><code class="variable-quote">'</code><code class="variable-op">: </code>389<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">port1</code><code class="variable-quote">'</code><code class="variable-op">: </code>0<code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">port2</code><code class="variable-quote">'</code><code class="variable-op">: </code>0<code class="variable-op">,</code>
-<code class="variable-ellipsis">...</code>
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">XServer</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">binary</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string">XMing</code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">parameters</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">stopcommand</code><code class="variable-quote">'</code><code class="variable-op">: </code>
<code cl
ass="variable-quote">'</code><code class="variable-string"></code><code class="variable-quote">'</code><code class="variable-group">}</code><code class="variable-group">}</code>
</pre></td></tr></table>
</dd>
</dl>
diff --git a/doc/html/x2go.printing.X2goPrintJob-class.html b/doc/html/x2go.xserver.X2goXServer-class.html
similarity index 82%
copy from doc/html/x2go.printing.X2goPrintJob-class.html
copy to doc/html/x2go.xserver.X2goXServer-class.html
index ff38e3c..d9e5774 100644
--- a/doc/html/x2go.printing.X2goPrintJob-class.html
+++ b/doc/html/x2go.xserver.X2goXServer-class.html
@@ -3,7 +3,7 @@
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
- <title>x2go.printing.X2goPrintJob</title>
+ <title>x2go.xserver.X2goXServer</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
@@ -43,8 +43,8 @@
<td width="100%">
<span class="breadcrumbs">
<a href="x2go-module.html">Package x2go</a> ::
- <a href="x2go.printing-module.html">Module printing</a> ::
- Class X2goPrintJob
+ <a href="x2go.xserver-module.html">Module xserver</a> ::
+ Class X2goXServer
</span>
</td>
<td>
@@ -52,14 +52,14 @@
<!-- hide/show private -->
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
- >] | <a href="x2go.printing.X2goPrintJob-class.html"
+ >] | <a href="x2go.xserver.X2goXServer-class.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
-<h1 class="epydoc">Class X2goPrintJob</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintJob">source code</a></span></p>
+<h1 class="epydoc">Class X2goXServer</h1><p class="nomargin-top"><span class="codelink"><a href="x2go.xserver-pysrc.html#X2goXServer">source code</a></span></p>
<pre class="base-tree">
object --+
|
@@ -67,15 +67,11 @@ threading._Verbose --+
|
threading.Thread --+
|
- <strong class="uidshort">X2goPrintJob</strong>
+ <strong class="uidshort">X2goXServer</strong>
</pre>
<hr />
-<p>For each X2go print job we create a sub-thread that let's the print
- job be processed in the background.</p>
- <p>As a handler for this class the function <a
- href="x2go.printing-module.html#x2go_printjob_handler"
- class="link">x2go_printjob_handler()</a> is used.</p>
+<p>This routine will start an XServer if it is not running already</p>
<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
@@ -91,11 +87,11 @@ threading._Verbose --+
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="x2go.printing.X2goPrintJob-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
- <span class="summary-sig-arg">**kwargs</span>)</span><br />
- Construct the X2go print job thread...</td>
+ <td><span class="summary-sig"><a href="x2go.xserver.X2goXServer-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">XServerParms</span>)</span><br />
+ x.__init__(...) initializes x; see x.__class__.__doc__ for signature</td>
<td align="right" valign="top">
- <span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintJob.__init__">source code</a></span>
+ <span class="codelink"><a href="x2go.xserver-pysrc.html#X2goXServer.__init__">source code</a></span>
</td>
</tr>
@@ -171,20 +167,20 @@ threading._Verbose --+
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
- <span class="sig-arg">**kwargs</span>)</span>
+ <span class="sig-arg">XServerParms</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="x2go.printing-pysrc.html#X2goPrintJob.__init__">source code</a></span>
+ ><span class="codelink"><a href="x2go.xserver-pysrc.html#X2goXServer.__init__">source code</a></span>
</td>
</tr></table>
- <p>Construct the X2go print job thread...</p>
- <p>All parameters (**kwargs) are passed through to the constructor of
- <code>threading.Thread()</code>.</p>
+ <p>x.__init__(...) initializes x; see x.__class__.__doc__ for
+ signature</p>
<dl class="fields">
<dt>Overrides:
object.__init__
+ <dd><em class="note">(inherited documentation)</em></dd>
</dt>
</dl>
</td></tr></table>
@@ -221,7 +217,7 @@ threading._Verbose --+
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Nov 19 21:33:56 2010
+ Generated by Epydoc 3.0.1 on Fri Nov 19 21:33:57 2010
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/x2go/gevent_subprocess.py b/x2go/gevent_subprocess.py
new file mode 100644
index 0000000..79ed23e
--- /dev/null
+++ b/x2go/gevent_subprocess.py
@@ -0,0 +1,197 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2010 by Mike Gabriel <m.gabriel at das-netzwerkteam.de>
+#
+# Python X2go is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Python X2go is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+# found here: http://groups.google.com/group/gevent/browse_thread/thread/dba1a5d29e0a60ff
+# Mark Visser <mjmvisser at gmail.com>
+
+"""Implementation of the standard :mod:`subprocess` module that spawns greenlets"""
+import errno
+import sys
+import fcntl, os
+
+_subprocess = __import__('subprocess')
+
+from gevent import socket, select, hub
+
+# identical to original
+CalledProcessError = _subprocess.CalledProcessError
+MAXFD = _subprocess.MAXFD
+PIPE = _subprocess.PIPE
+STDOUT = _subprocess.STDOUT
+call = _subprocess.call
+check_call = _subprocess.check_call
+list2cmdline = _subprocess.list2cmdline
+
+
+class Popen(object):
+ def __init__(self, *args, **kwargs):
+ # delegate to an actual Popen object
+ self.__p = _subprocess.Popen(*args, **kwargs)
+ # make the file handles nonblocking
+ if self.stdin is not None:
+ fcntl.fcntl(self.stdin, fcntl.F_SETFL, os.O_NONBLOCK)
+ if self.stdout is not None:
+ fcntl.fcntl(self.stdout, fcntl.F_SETFL, os.O_NONBLOCK)
+ if self.stderr is not None:
+ fcntl.fcntl(self.stderr, fcntl.F_SETFL, os.O_NONBLOCK)
+
+ def __getattr__(self, name):
+ # delegate attribute lookup to the real Popen object
+ return getattr(self.__p, name)
+
+ def _write_pipe(self, f, input):
+ # writes the given input to f without blocking
+ if input:
+ bytes_total = len(input)
+ bytes_written = 0
+ while bytes_written < bytes_total:
+ try:
+ # f.write() doesn't return anything, so use os.write.
+ bytes_written += os.write(f.fileno(), input[bytes_written:])
+ except IOError, ex:
+ if ex[0] != errno.EAGAIN:
+ raise
+ sys.exc_clear()
+ socket.wait_write(f.fileno())
+ f.close()
+
+ def _read_pipe(self, f):
+ # reads output from f without blocking
+ # returns output
+ chunks = []
+ while True:
+ try:
+ chunk = f.read(4096)
+ if not chunk:
+ break
+ chunks.append(chunk)
+ except IOError, ex:
+ if ex[0] != errno.EAGAIN:
+ raise
+ sys.exc_clear()
+ socket.wait_read(f.fileno())
+ f.close()
+ return ''.join(chunks)
+
+ def communicate(self, input=None):
+ # Optimization: If we are only using one pipe, or no pipe at
+ # all, using select() is unnecessary.
+ if [self.stdin, self.stdout, self.stderr].count(None) >= 2:
+ stdout = None
+ stderr = None
+ if self.stdin:
+ self._write_pipe(self.stdin, input)
+ elif self.stdout:
+ stdout = self._read_pipe(self.stdout)
+ elif self.stderr:
+ stderr = self._read_pipe(self.stderr)
+ self.wait()
+ return (stdout, stderr)
+ else:
+ return self._communicate(input)
+
+ def _communicate(self, input):
+ # identical to original... all the heavy lifting is done
+ # in gevent.select.select
+ read_set = []
+ write_set = []
+ stdout = None # Return
+ stderr = None # Return
+
+ if self.stdin:
+ # Flush stdin buffer.
+ self.stdin.flush()
+ if input:
+ write_set.append(self.stdin)
+ else:
+ self.stdin.close()
+ if self.stdout:
+ read_set.append(self.stdout)
+ stdout = []
+ if self.stderr:
+ read_set.append(self.stderr)
+ stderr = []
+
+ input_offset = 0
+ while read_set or write_set:
+ try:
+ rlist, wlist, xlist = select.select(read_set, write_set, [])
+ except select.error, e:
+ if e.args[0] == errno.EINTR:
+ continue
+ raise
+
+ if self.stdin in wlist:
+ # When select has indicated that the file is writable,
+ # we can write up to PIPE_BUF bytes without risk
+ # blocking. POSIX defines PIPE_BUF >= 512
+ bytes_written = os.write(self.stdin.fileno(), buffer(input, input_offset, 512))
+ input_offset += bytes_written
+ if input_offset >= len(input):
+ self.stdin.close()
+ write_set.remove(self.stdin)
+
+ if self.stdout in rlist:
+ data = os.read(self.stdout.fileno(), 1024)
+ if data == "":
+ self.stdout.close()
+ read_set.remove(self.stdout)
+ stdout.append(data)
+
+ if self.stderr in rlist:
+ data = os.read(self.stderr.fileno(), 1024)
+ if data == "":
+ self.stderr.close()
+ read_set.remove(self.stderr)
+ stderr.append(data)
+
+ # All data exchanged. Translate lists into strings.
+ if stdout is not None:
+ stdout = ''.join(stdout)
+ if stderr is not None:
+ stderr = ''.join(stderr)
+
+ # Translate newlines, if requested. We cannot let the file
+ # object do the translation: It is based on stdio, which is
+ # impossible to combine with select (unless forcing no
+ # buffering).
+ if self.universal_newlines and hasattr(file, 'newlines'):
+ if stdout:
+ stdout = self._translate_newlines(stdout)
+ if stderr:
+ stderr = self._translate_newlines(stderr)
+
+ self.wait()
+ return (stdout, stderr)
+
+ def wait(self, check_interval=0.01):
+ # non-blocking, use hub.sleep
+ try:
+ while True:
+ status = self.poll()
+ if status >= 0:
+ return status
+ hub.sleep(check_interval)
+ except OSError, e:
+ if e.errno == errno.ECHILD:
+ # no child process, this happens if the child process
+ # already died and has been cleaned up
+ return -1
+ else:
+ raise
\ No newline at end of file
diff --git a/x2go/mimetypes.py b/x2go/mimetypes.py
new file mode 100644
index 0000000..f46e6ee
--- /dev/null
+++ b/x2go/mimetypes.py
@@ -0,0 +1,281 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2010 by Mike Gabriel <m.gabriel at das-netzwerkteam.de>
+#
+# Python X2go is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Python X2go is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+"""\
+STILL UNDOCUMENTED
+
+"""
+__NAME__ = 'x2gomimetypes-pylib'
+
+# modules
+import sys, os, shutil, copy
+import subprocess
+import types
+import threading
+import gevent
+import inifiles
+import cStringIO
+import ConfigParser
+
+if sys.platform == 'win32':
+ import win32api
+
+
+# Python X2go modules
+import log
+import defaults
+# we hide the default values from epydoc (that's why we transform them to _UNDERSCORE variables)
+from defaults import LOCAL_HOME as _LOCAL_HOME
+from defaults import X2GO_CLIENT_ROOTDIR as _X2GO_CLIENT_ROOTDIR
+from defaults import X2GO_CLIENTPRINTING_DEFAULTS as _X2GO_CLIENTPRINTING_DEFAULTS
+from defaults import X2GO_PRINTING_CONFIGFILES as _X2GO_PRINTING_CONFIGFILES
+import utils
+import inifiles
+
+class X2goMIMETypeAction(object):
+
+ __name__ = 'MIME'
+ __description__ = 'Execute a command depending on an incoming file\'s MIME type'
+
+ def __init__(self, logger=None, loglevel=log.loglevel_DEFAULT):
+ """\
+ STILL UNDOCUMENTED
+
+ @param logger: you can pass an L{X2goLogger} object to the
+ L{X2goMIMETypeAction} constructor
+ @type logger: C{instance}
+ @param loglevel: if no L{X2goLogger} object has been supplied a new one will be
+ constructed with the given loglevel
+ @type loglevel: C{int}
+
+ """
+ if logger is None:
+ self.logger = log.X2goLogger(loglevel=loglevel)
+ else:
+ self.logger = copy.deepcopy(logger)
+ self.logger.tag = __NAME__
+
+ def do_execute(self, mime_file, mime_type_dir, ):
+ """\
+ Perform the defined print action (doing nothing in L{X2goPrintAction} parent class).
+
+ @param mime_file: name of the incoming file
+ @type mime_file: C{str}
+ @param mime_type_dir: location of the X2go client's spool directory for incoming MIME files
+ @type mime_type_dir: C{str}
+
+ """
+ if sys.platform == "win32":
+ self.logger('processing an incoming MIME file with Python\'s os.startfile(): %s' % mime_file, loglevel=log.loglevel_DEBUG)
+ os.startfile(mime_file)
+ else:
+ cmd_line = [ 'xdg-open', mime_file, ]
+ self.logger('processing an incoming MIME file with command: %s' % ' '.join(cmd_line), loglevel=log.loglevel_DEBUG)
+ p = subprocess.Popen(cmd_line, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=_PRINT_ENV)
+ # this is nasty!!!!
+ self.logger('giving PDF viewer 20s to get the PDF file %s loaded' % _hr_filename, loglevel=log.loglevel_DEBUG)
+ gevent.sleep(20)
+ os.remove(mime_file)
+
+
+class X2goMIMETypeQueue(threading.Thread):
+ """\
+ STILL UNDOCUMENTED
+
+ """
+ print_action = None
+
+ spooldir = None
+ active_jobs = {}
+ job_history = []
+
+ def __init__(self, logger=None, loglevel=log.loglevel_DEFAULT):
+ """\
+ STILL UNDOCUMENTED
+
+ @param logger: you can pass an L{X2goLogger} object to the
+ L{X2goProxy} constructor
+ @type logger: C{instance}
+ @param loglevel: if no L{X2goLogger} object has been supplied a new one will be
+ constructed with the given loglevel
+ @type loglevel: C{int}
+
+ """
+ if logger is None:
+ self.logger = log.X2goLogger(loglevel=loglevel)
+ else:
+ self.logger = copy.deepcopy(logger)
+ self.logger.tag = __NAME__
+
+ threading.Thread.__init__(self)
+ self.daemon = True
+ self._accept_jobs = True
+
+ def __del__(self):
+ self.stop_thread()
+
+ def pause(self):
+ """\
+ Prevent acceptance of new incoming MIME type files. The processing of MIME type files
+ that are currently still active will be completed, though.
+
+ """
+ if self._accept_jobs == True:
+ self._accept_jobs = False
+ self.logger('paused thread: %s' % repr(self), loglevel=log.loglevel_DEBUG)
+
+ def resume(self):
+ """\
+ Resume operation of the X2go MIME type thread and continue accepting new incoming
+ MIME type files.
+
+ """
+ if self._accept_jobs == False:
+ self._accept_jobs = True
+ self.logger('resumed thread: %s' % repr(self), loglevel=log.loglevel_DEBUG)
+
+ def stop_thread(self):
+ """\
+ Stops this L{X2goMIMETypeQueue} thread completely.
+
+ """
+ self.pause()
+ self._keepalive = False
+ self.logger('stopping thread: %s' % repr(self), loglevel=log.loglevel_DEBUG)
+
+ @property
+ def _incoming_mime_files(self):
+
+ l = os.listdir(self.mime_type_dir)
+ mime_files = []
+ for _job_file in job_files:
+ j = open(os.path.join(self.spool_dir, _job_file), 'r')
+ content = j.read()
+ (pdf_filename, job_title) = content.split('\n')[0:2]
+ j.close()
+ jobs.append((_job_file, pdf_filename, job_title))
+ return [ j for j in jobs if j[1] not in self.active_jobs.keys() ]
+
+ def set_print_action(self, print_action, **kwargs):
+ """\
+ Modify the print action of this L{X2goPrintQueue} thread during runtime. The
+ change of print action will be valid for the next incoming print job.
+
+ """
+ if print_action in defaults.X2GO_PRINT_ACTIONS.keys():
+ print_action = defaults.X2GO_PRINT_ACTIONS[print_action]
+
+ if print_action in defaults.X2GO_PRINT_ACTIONS.values():
+ self.print_action = print_action(**kwargs)
+
+ def run(self):
+ """\
+ Start this L{X2goPrintQueue} thread...
+
+ """
+ self.logger('starting print queue thread: %s' % repr(self), loglevel=log.loglevel_DEBUG)
+
+ self._keepalive = True
+ while self._keepalive:
+
+ while self._accept_jobs:
+
+ if self._incoming_print_jobs:
+
+ for _job in self._incoming_print_jobs:
+ self.logger('incoming print job: %s' % _job[1], loglevel=log.loglevel_DEBUG)
+ _new_printjob_thread = X2goPrintJob(target=x2go_printjob_handler,
+ kwargs={
+ 'job_file': _job[0],
+ 'pdf_file': _job[1],
+ 'job_title': _job[2],
+ 'print_action': self.print_action,
+ 'parent_thread': self,
+ 'logger': self.logger,
+ }
+ )
+ self.active_jobs['%s' % _job[1]] = _new_printjob_thread
+ _new_printjob_thread.start()
+
+ gevent.sleep(3)
+
+ gevent.sleep(1)
+
+
+def x2go_printjob_handler(job_file=None, pdf_file=None, job_title=None, print_action=None, parent_thread=None, logger=None, ):
+ """\
+ This function is called as a handler function for each incoming X2go print job
+ represented by the class L{X2goPrintJob}.
+
+ The handler function will (re-)read the »printing« configuration file (if no
+ explicit C{print_action} is passed to this function...). It then will
+ execute the C{<print_action>.do_print()} command.
+
+ @param pdf_file: PDF file name as placed in to the X2go spool directory
+ @type pdf_file: C{str}
+ @param job_title: human readable print job title
+ @type job_title: C{str}
+ @param print_action: an instance of either of the possible C{X2goPrintActionXXX} classes
+ @type print_action: C{X2goPrintActionXXX} nstance
+ @param parent_thread: the L{X2goPrintQueue} thread that actually created this handler's L{X2goPrintJob} instance
+ @type parent_thread: C{instance}
+ @param logger: the L{X2goPrintQueue}'s logging instance
+ @type logger: C{instance}
+
+ """
+ if print_action is None:
+ _printing = X2goClientPrinting(logger=logger)
+ print_action = _printing.print_action
+
+ logger('action for printing is: %s' % print_action, loglevel=log.loglevel_DEBUG)
+ print_action.do_print(pdf_file=os.path.join(parent_thread.spool_dir, pdf_file),
+ job_title=job_title,
+ spool_dir=parent_thread.spool_dir,
+ )
+
+ logger('removing print job files for %s' % pdf_file, loglevel=log.loglevel_DEBUG)
+ os.remove(os.path.join(parent_thread.spool_dir, job_file))
+ os.remove(os.path.join(parent_thread.spool_dir, pdf_file))
+
+ del parent_thread.active_jobs['%s' % pdf_file]
+ parent_thread.job_history.append(pdf_file)
+
+
+class X2goPrintJob(threading.Thread):
+ """\
+ For each X2go print job we create a sub-thread that let's
+ the print job be processed in the background.
+
+ As a handler for this class the function L{x2go_printjob_handler()}
+ is used.
+
+ """
+ def __init__(self, **kwargs):
+ """\
+ Construct the X2go print job thread...
+
+ All parameters (**kwargs) are passed through to the constructor
+ of C{threading.Thread()}.
+
+ """
+ threading.Thread.__init__(self, **kwargs)
+ self.daemon = True
+
+
diff --git a/x2go/xserver.py b/x2go/xserver.py
new file mode 100644
index 0000000..e72a0bf
--- /dev/null
+++ b/x2go/xserver.py
@@ -0,0 +1,92 @@
+# -*- coding: utf-8 -*-
+
+# -*- coding: utf-8 -*-
+
+# Copyright (C) 2010 by Mike Gabriel <m.gabriel at das-netzwerkteam.de>
+#
+# Python X2go is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# Python X2go is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# This code was initially written by:
+# 2010 Dick Kniep <dick.kniep at lindix.nl>
+#
+# Other contributors:
+# none so far
+
+import os
+import gevent_subprocess as subprocess
+
+__NAME__ = 'x2gosettings-pylib'
+
+# modules
+import os
+import threading
+
+# Python X2go modules
+import log
+from defaults import X2GO_XCONFIG_CONFIGFILES
+from defaults import X2GO_CLIENTXCONFIG_DEFAULTS
+import inifiles
+
+
+class X2goClientXConfig(inifiles.X2goIniFile):
+ """\
+ Configuration file based XServer startup settings for X2goClient instances.
+
+ This class is needed for Windows systems and (maybe soon) for Unix desktops using Wayland.
+
+ """
+ defaultValues = X2GO_CLIENTXCONFIG_DEFAULTS
+
+ def __init__(self, config_files=X2GO_XCONFIG_CONFIGFILES, defaults=None, logger=None, loglevel=log.loglevel_DEFAULT):
+ """\
+ Constructs an L{X2goClientXConfig} instance. This is normally done by an L{X2goClient} instance.
+ You can retrieve this L{X2goClientXConfig} instance with the C{X2goClient.get_client_xconfig()}
+ method.
+
+ On construction the L{X2goClientXConfig} instance is filled with values from the configuration files::
+
+ /etc/x2goclient/xconfig
+ ~/.x2goclient/xconfig
+
+ The files are read in the specified order and config options of both files are merged. Options
+ set in the user configuration file (C{~/.x2goclient/xconfig}) override global options set in
+ C{/etc/x2goclient/xconfig}.
+
+ """
+ inifiles.X2goIniFile.__init__(self, config_files, defaults=defaults, logger=logger, loglevel=loglevel)
+
+
+class X2goXServer(threading.Thread):
+ """
+ This routine will start an XServer if it is not running
+ already
+ """
+
+ def __init__(self, XServerParms):
+
+ processname = XServerParms.binary
+ for line in os.popen("ps xa"):
+ fields = line.split()
+ pid = fields[0]
+ process = fields[4]
+
+ if process.find(XServerParms.binary) > 0:
+ # XServer is already running
+ return
+
+ p = subprocess.Popen([XServerParms.binary,XServerParms.parameters], shell=True)
+ sts = os.waitpid(p.pid, 0)[1]
+
hooks/post-receive
--
python-x2go.git (Python X2Go Client API)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "python-x2go.git" (Python X2Go Client API).
More information about the x2go-commits
mailing list