Documentation/Source/eric5.Utilities.SingleApplication.html

changeset 58
37f0444c3479
parent 21
b88a0e6268bd
child 409
0ea528e80202
--- a/Documentation/Source/eric5.Utilities.SingleApplication.html	Thu Jan 14 17:27:31 2010 +0000
+++ b/Documentation/Source/eric5.Utilities.SingleApplication.html	Thu Jan 14 18:35:52 2010 +0000
@@ -22,7 +22,7 @@
 <body><a NAME="top" ID="top"></a>
 <h1>eric5.Utilities.SingleApplication</h1>
 <p>
-&#77;&#111;&#100;&#117;&#108;&#101; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#116;&#104;&#101; &#115;&#105;&#110;&#103;&#108;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#115;&#101;&#114;v&#101;&#114; &#97;&#110;&#100; &#99;&#108;&#105;&#101;&#110;&#116;.
+Module implementing the single application server and client.
 </p>
 <h3>Global Attributes</h3>
 <table>
@@ -32,10 +32,10 @@
 <table>
 <tr>
 <td><a href="#SingleApplicationClient">SingleApplicationClient</a></td>
-<td>&#67;&#108;&#97;&#115;&#115; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#116;&#104;&#101; &#115;&#105;&#110;&#103;&#108;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#99;&#108;&#105;&#101;&#110;&#116; &#98;&#97;&#115;&#101; &#99;&#108;&#97;&#115;&#115;.</td>
+<td>Class implementing the single application client base class.</td>
 </tr><tr>
 <td><a href="#SingleApplicationServer">SingleApplicationServer</a></td>
-<td>&#67;&#108;&#97;&#115;&#115; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#116;&#104;&#101; &#115;&#105;&#110;&#103;&#108;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#115;&#101;&#114;v&#101;&#114; &#98;&#97;&#115;&#101; &#99;&#108;&#97;&#115;&#115;.</td>
+<td>Class implementing the single application server base class.</td>
 </tr>
 </table>
 <h3>Functions</h3>
@@ -46,7 +46,7 @@
 <a NAME="SingleApplicationClient" ID="SingleApplicationClient"></a>
 <h2>SingleApplicationClient</h2>
 <p>
-    &#67;&#108;&#97;&#115;&#115; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#116;&#104;&#101; &#115;&#105;&#110;&#103;&#108;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#99;&#108;&#105;&#101;&#110;&#116; &#98;&#97;&#115;&#101; &#99;&#108;&#97;&#115;&#115;.
+    Class implementing the single application client base class.
 </p>
 <h3>Derived from</h3>
 object
@@ -58,84 +58,84 @@
 <table>
 <tr>
 <td><a href="#SingleApplicationClient.__init__">SingleApplicationClient</a></td>
-<td>&#67;&#111;&#110;&#115;&#116;&#114;&#117;&#99;&#116;&#111;&#114;</td>
+<td>Constructor</td>
 </tr><tr>
 <td><a href="#SingleApplicationClient.connect">connect</a></td>
-<td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#99;&#111;&#110;&#110;&#101;&#99;&#116; &#116;&#104;&#101; &#115;&#105;&#110;&#103;&#108;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#99;&#108;&#105;&#101;&#110;&#116; &#116;&#111; &#105;&#116;&#115; &#115;&#101;&#114;v&#101;&#114;.</td>
+<td>Public method to connect the single application client to its server.</td>
 </tr><tr>
 <td><a href="#SingleApplicationClient.disconnect">disconnect</a></td>
-<td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#100;&#105;&#115;&#99;&#111;&#110;&#110;&#101;&#99;&#116; &#102;&#114;&#111;&#109; &#116;&#104;&#101; &#83;&#105;&#110;&#103;&#108;&#101; &#65;&#112;&#112;&#108;&#105;&#111;&#99;&#97;&#116;&#105;&#111;&#110; &#115;&#101;&#114;v&#101;&#114;.</td>
+<td>Public method to disconnect from the Single Appliocation server.</td>
 </tr><tr>
 <td><a href="#SingleApplicationClient.errstr">errstr</a></td>
-<td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#114;&#101;&#116;&#117;&#114;&#110; &#97; &#109;&#101;&#97;&#110;&#105;&#110;&#103;&#102;&#117;&#108; &#101;&#114;&#114;&#111;&#114; &#115;&#116;&#114;&#105;&#110;&#103; &#102;&#111;&#114; &#116;&#104;&#101; &#108;&#97;&#115;&#116; &#101;&#114;&#114;&#111;&#114;.</td>
+<td>Public method to return a meaningful error string for the last error.</td>
 </tr><tr>
 <td><a href="#SingleApplicationClient.processArgs">processArgs</a></td>
-<td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#112;&#114;&#111;&#99;&#101;&#115;&#115; &#116;&#104;&#101; &#99;&#111;&#109;&#109;&#97;&#110;&#100; &#108;&#105;&#110;&#101; &#97;&#114;&#103;&#115; &#112;&#97;&#115;&#115;&#101;&#100; &#116;&#111; &#116;&#104;&#101; &#85;&#73;.</td>
+<td>Public method to process the command line args passed to the UI.</td>
 </tr><tr>
 <td><a href="#SingleApplicationClient.sendCommand">sendCommand</a></td>
-<td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#115;&#101;&#110;&#100; &#116;&#104;&#101; &#99;&#111;&#109;&#109;&#97;&#110;&#100; &#116;&#111; &#116;&#104;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#115;&#101;&#114;v&#101;&#114;.</td>
+<td>Public method to send the command to the application server.</td>
 </tr>
 </table>
 <a NAME="SingleApplicationClient.__init__" ID="SingleApplicationClient.__init__"></a>
 <h4>SingleApplicationClient (Constructor)</h4>
 <b>SingleApplicationClient</b>(<i>name</i>)
 <p>
-        &#67;&#111;&#110;&#115;&#116;&#114;&#117;&#99;&#116;&#111;&#114;
+        Constructor
 </p><dl>
 <dt><i>name</i></dt>
 <dd>
-&#110;&#97;&#109;&#101; &#111;&#102; &#116;&#104;&#101; &#108;&#111;&#99;&#97;&#108; &#115;&#101;&#114;v&#101;&#114; &#116;&#111; &#99;&#111;&#110;&#110;&#101;&#99;&#116; &#116;&#111; (&#115;&#116;&#114;&#105;&#110;&#103;)
+name of the local server to connect to (string)
 </dd>
 </dl><a NAME="SingleApplicationClient.connect" ID="SingleApplicationClient.connect"></a>
 <h4>SingleApplicationClient.connect</h4>
 <b>connect</b>(<i></i>)
 <p>
-        &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#99;&#111;&#110;&#110;&#101;&#99;&#116; &#116;&#104;&#101; &#115;&#105;&#110;&#103;&#108;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#99;&#108;&#105;&#101;&#110;&#116; &#116;&#111; &#105;&#116;&#115; &#115;&#101;&#114;v&#101;&#114;.
+        Public method to connect the single application client to its server.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-v&#97;&#108;&#117;&#101; &#105;&#110;&#100;&#105;&#99;&#97;&#116;&#105;&#110;&#103; &#115;&#117;&#99;&#99;&#101;&#115;&#115; &#111;&#114; &#97;&#110; &#101;&#114;&#114;&#111;&#114; &#110;&#117;&#109;&#98;&#101;&#114;. &#86;&#97;&#108;&#117;&#101; &#105;&#115; &#111;&#110;&#101; &#111;&#102;&#58;
-            &#60;&#116;&#97;&#98;&#108;&#101;&#62;
-                &#60;&#116;&#114;&#62;&#60;&#116;&#100;&#62;&#48;&#60;/&#116;&#100;&#62;&#60;&#116;&#100;&#62;&#78;&#111; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#105;&#115; &#114;&#117;&#110;&#110;&#105;&#110;&#103;&#60;/&#116;&#100;&#62;&#60;/&#116;&#114;&#62;
-                &#60;&#116;&#114;&#62;&#60;&#116;&#100;&#62;&#49;&#60;/&#116;&#100;&#62;&#60;&#116;&#100;&#62;&#65;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#105;&#115; &#97;&#108;&#114;&#101;&#97;&#100;y &#114;&#117;&#110;&#110;&#105;&#110;&#103;&#60;/&#116;&#100;&#62;&#60;/&#116;&#114;&#62;
-            &#60;/&#116;&#97;&#98;&#108;&#101;&#62;
+value indicating success or an error number. Value is one of:
+            <table>
+                <tr><td>0</td><td>No application is running</td></tr>
+                <tr><td>1</td><td>Application is already running</td></tr>
+            </table>
 </dd>
 </dl><a NAME="SingleApplicationClient.disconnect" ID="SingleApplicationClient.disconnect"></a>
 <h4>SingleApplicationClient.disconnect</h4>
 <b>disconnect</b>(<i></i>)
 <p>
-        &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#100;&#105;&#115;&#99;&#111;&#110;&#110;&#101;&#99;&#116; &#102;&#114;&#111;&#109; &#116;&#104;&#101; &#83;&#105;&#110;&#103;&#108;&#101; &#65;&#112;&#112;&#108;&#105;&#111;&#99;&#97;&#116;&#105;&#111;&#110; &#115;&#101;&#114;v&#101;&#114;.
+        Public method to disconnect from the Single Appliocation server.
 </p><a NAME="SingleApplicationClient.errstr" ID="SingleApplicationClient.errstr"></a>
 <h4>SingleApplicationClient.errstr</h4>
 <b>errstr</b>(<i></i>)
 <p>
-        &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#114;&#101;&#116;&#117;&#114;&#110; &#97; &#109;&#101;&#97;&#110;&#105;&#110;&#103;&#102;&#117;&#108; &#101;&#114;&#114;&#111;&#114; &#115;&#116;&#114;&#105;&#110;&#103; &#102;&#111;&#114; &#116;&#104;&#101; &#108;&#97;&#115;&#116; &#101;&#114;&#114;&#111;&#114;.
+        Public method to return a meaningful error string for the last error.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-&#101;&#114;&#114;&#111;&#114; &#115;&#116;&#114;&#105;&#110;&#103; &#102;&#111;&#114; &#116;&#104;&#101; &#108;&#97;&#115;&#116; &#101;&#114;&#114;&#111;&#114; (&#115;&#116;&#114;&#105;&#110;&#103;)
+error string for the last error (string)
 </dd>
 </dl><a NAME="SingleApplicationClient.processArgs" ID="SingleApplicationClient.processArgs"></a>
 <h4>SingleApplicationClient.processArgs</h4>
 <b>processArgs</b>(<i>args</i>)
 <p>
-        &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#112;&#114;&#111;&#99;&#101;&#115;&#115; &#116;&#104;&#101; &#99;&#111;&#109;&#109;&#97;&#110;&#100; &#108;&#105;&#110;&#101; &#97;&#114;&#103;&#115; &#112;&#97;&#115;&#115;&#101;&#100; &#116;&#111; &#116;&#104;&#101; &#85;&#73;.
+        Public method to process the command line args passed to the UI.
 </p><p>
-        &#60;&#98;&#62;&#78;&#111;&#116;&#101;&#60;/&#98;&#62;&#58; &#84;&#104;&#105;&#115; &#109;&#101;&#116;&#104;&#111;&#100; &#109;&#117;&#115;&#116; &#98;&#101; &#111;v&#101;&#114;&#114;&#105;&#100;&#100;&#101;&#110; &#98;y &#115;&#117;&#98;&#99;&#108;&#97;&#115;&#115;&#101;&#115;.
+        <b>Note</b>: This method must be overridden by subclasses.
 </p><dl>
 <dt><i>args</i></dt>
 <dd>
-&#99;&#111;&#109;&#109;&#97;&#110;&#100; &#108;&#105;&#110;&#101; &#97;&#114;&#103;&#115; (&#108;&#105;&#115;&#116; &#111;&#102; &#115;&#116;&#114;&#105;&#110;&#103;&#115;)
+command line args (list of strings)
 </dd>
 </dl><a NAME="SingleApplicationClient.sendCommand" ID="SingleApplicationClient.sendCommand"></a>
 <h4>SingleApplicationClient.sendCommand</h4>
 <b>sendCommand</b>(<i>cmd</i>)
 <p>
-        &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#115;&#101;&#110;&#100; &#116;&#104;&#101; &#99;&#111;&#109;&#109;&#97;&#110;&#100; &#116;&#111; &#116;&#104;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#115;&#101;&#114;v&#101;&#114;.
+        Public method to send the command to the application server.
 </p><dl>
 <dt><i>cmd</i></dt>
 <dd>
-&#99;&#111;&#109;&#109;&#97;&#110;&#100; &#116;&#111; &#98;&#101; &#115;&#101;&#110;&#116; (&#115;&#116;&#114;&#105;&#110;&#103;)
+command to be sent (string)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
@@ -143,7 +143,7 @@
 <a NAME="SingleApplicationServer" ID="SingleApplicationServer"></a>
 <h2>SingleApplicationServer</h2>
 <p>
-    &#67;&#108;&#97;&#115;&#115; &#105;&#109;&#112;&#108;&#101;&#109;&#101;&#110;&#116;&#105;&#110;&#103; &#116;&#104;&#101; &#115;&#105;&#110;&#103;&#108;&#101; &#97;&#112;&#112;&#108;&#105;&#99;&#97;&#116;&#105;&#111;&#110; &#115;&#101;&#114;v&#101;&#114; &#98;&#97;&#115;&#101; &#99;&#108;&#97;&#115;&#115;.
+    Class implementing the single application server base class.
 </p>
 <h3>Derived from</h3>
 QLocalServer
@@ -155,69 +155,69 @@
 <table>
 <tr>
 <td><a href="#SingleApplicationServer.__init__">SingleApplicationServer</a></td>
-<td>&#67;&#111;&#110;&#115;&#116;&#114;&#117;&#99;&#116;&#111;&#114;</td>
+<td>Constructor</td>
 </tr><tr>
 <td><a href="#SingleApplicationServer.__disconnected">__disconnected</a></td>
-<td>&#80;&#114;&#105;v&#97;&#116;&#101; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#104;&#97;&#110;&#100;&#108;&#101; &#116;&#104;&#101; &#99;&#108;&#111;&#115;&#117;&#114;&#101; &#111;&#102; &#116;&#104;&#101; &#115;&#111;&#99;&#107;&#101;&#116;.</td>
+<td>Private method to handle the closure of the socket.</td>
 </tr><tr>
 <td><a href="#SingleApplicationServer.__newConnection">__newConnection</a></td>
-<td>&#80;&#114;&#105;v&#97;&#116;&#101; &#115;&#108;&#111;&#116; &#116;&#111; &#104;&#97;&#110;&#100;&#108;&#101; &#97; &#110;&#101;w &#99;&#111;&#110;&#110;&#101;&#99;&#116;&#105;&#111;&#110;.</td>
+<td>Private slot to handle a new connection.</td>
 </tr><tr>
 <td><a href="#SingleApplicationServer.__parseLine">__parseLine</a></td>
-<td>&#80;&#114;&#105;v&#97;&#116;&#101; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#104;&#97;&#110;&#100;&#108;&#101; &#100;&#97;&#116;&#97; &#102;&#114;&#111;&#109; &#116;&#104;&#101; &#99;&#108;&#105;&#101;&#110;&#116;.</td>
+<td>Private method to handle data from the client.</td>
 </tr><tr>
 <td><a href="#SingleApplicationServer.handleCommand">handleCommand</a></td>
-<td>&#80;&#117;&#98;&#108;&#105;&#99; &#115;&#108;&#111;&#116; &#116;&#111; &#104;&#97;&#110;&#100;&#108;&#101; &#116;&#104;&#101; &#99;&#111;&#109;&#109;&#97;&#110;&#100; &#115;&#101;&#110;&#116; &#98;y &#116;&#104;&#101; &#99;&#108;&#105;&#101;&#110;&#116;.</td>
+<td>Public slot to handle the command sent by the client.</td>
 </tr><tr>
 <td><a href="#SingleApplicationServer.shutdown">shutdown</a></td>
-<td>&#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#117;&#115;&#101;&#100; &#116;&#111; &#115;&#104;&#117;&#116; &#100;&#111;w&#110; &#116;&#104;&#101; &#115;&#101;&#114;v&#101;&#114;.</td>
+<td>Public method used to shut down the server.</td>
 </tr>
 </table>
 <a NAME="SingleApplicationServer.__init__" ID="SingleApplicationServer.__init__"></a>
 <h4>SingleApplicationServer (Constructor)</h4>
 <b>SingleApplicationServer</b>(<i>name</i>)
 <p>
-        &#67;&#111;&#110;&#115;&#116;&#114;&#117;&#99;&#116;&#111;&#114;
+        Constructor
 </p><dl>
 <dt><i>name</i></dt>
 <dd>
-&#110;&#97;&#109;&#101; &#116;&#104;&#105;&#115; &#115;&#101;&#114;v&#101;&#114; &#105;&#115; &#108;&#105;&#115;&#116;&#101;&#110;&#105;&#110;&#103; &#116;&#111; (&#115;&#116;&#114;&#105;&#110;&#103;)
+name this server is listening to (string)
 </dd>
 </dl><a NAME="SingleApplicationServer.__disconnected" ID="SingleApplicationServer.__disconnected"></a>
 <h4>SingleApplicationServer.__disconnected</h4>
 <b>__disconnected</b>(<i></i>)
 <p>
-        &#80;&#114;&#105;v&#97;&#116;&#101; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#104;&#97;&#110;&#100;&#108;&#101; &#116;&#104;&#101; &#99;&#108;&#111;&#115;&#117;&#114;&#101; &#111;&#102; &#116;&#104;&#101; &#115;&#111;&#99;&#107;&#101;&#116;.
+        Private method to handle the closure of the socket.
 </p><a NAME="SingleApplicationServer.__newConnection" ID="SingleApplicationServer.__newConnection"></a>
 <h4>SingleApplicationServer.__newConnection</h4>
 <b>__newConnection</b>(<i></i>)
 <p>
-        &#80;&#114;&#105;v&#97;&#116;&#101; &#115;&#108;&#111;&#116; &#116;&#111; &#104;&#97;&#110;&#100;&#108;&#101; &#97; &#110;&#101;w &#99;&#111;&#110;&#110;&#101;&#99;&#116;&#105;&#111;&#110;.
+        Private slot to handle a new connection.
 </p><a NAME="SingleApplicationServer.__parseLine" ID="SingleApplicationServer.__parseLine"></a>
 <h4>SingleApplicationServer.__parseLine</h4>
 <b>__parseLine</b>(<i></i>)
 <p>
-        &#80;&#114;&#105;v&#97;&#116;&#101; &#109;&#101;&#116;&#104;&#111;&#100; &#116;&#111; &#104;&#97;&#110;&#100;&#108;&#101; &#100;&#97;&#116;&#97; &#102;&#114;&#111;&#109; &#116;&#104;&#101; &#99;&#108;&#105;&#101;&#110;&#116;.
+        Private method to handle data from the client.
 </p><a NAME="SingleApplicationServer.handleCommand" ID="SingleApplicationServer.handleCommand"></a>
 <h4>SingleApplicationServer.handleCommand</h4>
 <b>handleCommand</b>(<i>cmd, params</i>)
 <p>
-        &#80;&#117;&#98;&#108;&#105;&#99; &#115;&#108;&#111;&#116; &#116;&#111; &#104;&#97;&#110;&#100;&#108;&#101; &#116;&#104;&#101; &#99;&#111;&#109;&#109;&#97;&#110;&#100; &#115;&#101;&#110;&#116; &#98;y &#116;&#104;&#101; &#99;&#108;&#105;&#101;&#110;&#116;.
+        Public slot to handle the command sent by the client.
 </p><p>
-        &#60;&#98;&#62;&#78;&#111;&#116;&#101;&#60;/&#98;&#62;&#58; &#84;&#104;&#105;&#115; &#109;&#101;&#116;&#104;&#111;&#100; &#109;&#117;&#115;&#116; &#98;&#101; &#111;v&#101;&#114;&#114;&#105;&#100;&#100;&#101;&#110; &#98;y &#115;&#117;&#98;&#99;&#108;&#97;&#115;&#115;&#101;&#115;.
+        <b>Note</b>: This method must be overridden by subclasses.
 </p><dl>
 <dt><i>cmd</i></dt>
 <dd>
-&#99;&#111;&#109;&#109;&#97;&#110;&#100;&#115;&#116;&#114;&#105;&#110;&#103; (&#115;&#116;&#114;&#105;&#110;&#103;)
+commandstring (string)
 </dd><dt><i>params</i></dt>
 <dd>
-&#112;&#97;&#114;&#97;&#109;&#101;&#116;&#101;&#114;&#115;&#116;&#114;&#105;&#110;&#103; (&#115;&#116;&#114;&#105;&#110;&#103;)
+parameterstring (string)
 </dd>
 </dl><a NAME="SingleApplicationServer.shutdown" ID="SingleApplicationServer.shutdown"></a>
 <h4>SingleApplicationServer.shutdown</h4>
 <b>shutdown</b>(<i></i>)
 <p>
-        &#80;&#117;&#98;&#108;&#105;&#99; &#109;&#101;&#116;&#104;&#111;&#100; &#117;&#115;&#101;&#100; &#116;&#111; &#115;&#104;&#117;&#116; &#100;&#111;w&#110; &#116;&#104;&#101; &#115;&#101;&#114;v&#101;&#114;.
+        Public method used to shut down the server.
 </p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />

eric ide

mercurial