changeset 182:bf366e0b9050

* Fix "Serve by HTTP"; stub out "Change Remote Location"
author Chris Cannam
date Fri, 17 Dec 2010 10:01:02 +0000
parents 731aef59d5f4
children 01580704de3e
files easyhg_en.qm easyhg_en.ts hgrunner.cpp hgrunner.h mainwindow.cpp mainwindow.h settingsdialog.cpp
diffstat 7 files changed, 415 insertions(+), 288 deletions(-) [+]
line wrap: on
line diff
Binary file easyhg_en.qm has changed
--- a/easyhg_en.ts	Fri Dec 17 09:36:39 2010 +0000
+++ b/easyhg_en.ts	Fri Dec 17 10:01:02 2010 +0000
@@ -154,37 +154,37 @@
 <context>
     <name>HgRunner</name>
     <message>
-        <location filename="hgrunner.cpp" line="143"/>
+        <location filename="hgrunner.cpp" line="168"/>
         <source>User name:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="145"/>
+        <location filename="hgrunner.cpp" line="170"/>
         <source>User name for &quot;%1&quot;:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="149"/>
+        <location filename="hgrunner.cpp" line="174"/>
         <source>Enter user name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="170"/>
+        <location filename="hgrunner.cpp" line="195"/>
         <source>Password:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="173"/>
+        <location filename="hgrunner.cpp" line="198"/>
         <source>Password for &quot;%1&quot; at &quot;%2&quot;:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="176"/>
+        <location filename="hgrunner.cpp" line="201"/>
         <source>Password for user &quot;%1&quot;:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="182"/>
+        <location filename="hgrunner.cpp" line="207"/>
         <source>Enter password</source>
         <translation type="unfinished"></translation>
     </message>
@@ -226,61 +226,61 @@
 <context>
     <name>MainWindow</name>
     <message>
-        <location filename="mainwindow.cpp" line="64"/>
-        <location filename="mainwindow.cpp" line="1133"/>
+        <location filename="mainwindow.cpp" line="66"/>
+        <location filename="mainwindow.cpp" line="1188"/>
         <source>EasyMercurial</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="132"/>
+        <location filename="mainwindow.cpp" line="135"/>
         <source>About EasyMercurial</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="133"/>
+        <location filename="mainwindow.cpp" line="136"/>
         <source>&lt;qt&gt;&lt;h2&gt;About EasyMercurial&lt;/h2&gt;&lt;p&gt;EasyMercurial is a simple user interface for the Mercurial version control system.&lt;/p&gt;&lt;p&gt;EasyMercurial is based on hgExplorer by Jari Korhonen, with thanks.&lt;br&gt;EasyMercurial development carried out by Chris Cannam for soundsoftware.ac.uk at the Centre for Digital Music, Queen Mary, University of London.&lt;ul&gt;&lt;li&gt;Copyright &amp;copy; 2010 Jari Korhonen&lt;/li&gt;&lt;li&gt;Copyright &amp;copy; 2010 Chris Cannam&lt;/li&gt;&lt;li&gt;Copyright &amp;copy; 2010 Queen Mary, University of London&lt;/li&gt;&lt;/ul&gt;&lt;p&gt; This program 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 2 of the License, or (at your option) any later version.  See the file COPYING included with this distribution for more information.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="300"/>
+        <location filename="mainwindow.cpp" line="310"/>
         <source>Commit files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="351"/>
+        <location filename="mainwindow.cpp" line="362"/>
         <source>Tag</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="352"/>
+        <location filename="mainwindow.cpp" line="363"/>
         <source>Enter tag:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="528"/>
+        <location filename="mainwindow.cpp" line="575"/>
         <source>Revert files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="305"/>
-        <location filename="mainwindow.cpp" line="307"/>
-        <location filename="mainwindow.cpp" line="533"/>
-        <location filename="mainwindow.cpp" line="535"/>
+        <location filename="mainwindow.cpp" line="315"/>
+        <location filename="mainwindow.cpp" line="317"/>
+        <location filename="mainwindow.cpp" line="580"/>
+        <location filename="mainwindow.cpp" line="582"/>
         <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="306"/>
+        <location filename="mainwindow.cpp" line="316"/>
         <source>You are about to commit the following files:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="534"/>
+        <location filename="mainwindow.cpp" line="581"/>
         <source>You are about to &lt;b&gt;revert&lt;/b&gt; the following files to their previous committed state.&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to these files but have not committed:</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="mainwindow.cpp" line="536"/>
+        <location filename="mainwindow.cpp" line="583"/>
         <source>You are about to &lt;b&gt;revert&lt;/b&gt; %n file(s).&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to these files but have not committed.</source>
         <oldsource>You are about to &lt;b&gt;revert&lt;/b&gt; %n files.&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to these files but have not committed.</oldsource>
         <translation type="unfinished">
@@ -289,200 +289,218 @@
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="648"/>
+        <location filename="mainwindow.cpp" line="698"/>
         <source>Merge from the default branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="650"/>
+        <location filename="mainwindow.cpp" line="700"/>
         <source>Merge from branch &quot;%1&quot;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="656"/>
+        <location filename="mainwindow.cpp" line="706"/>
         <source>Merge from %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="705"/>
+        <location filename="mainwindow.cpp" line="755"/>
         <source>Confirm pull</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="706"/>
+        <location filename="mainwindow.cpp" line="756"/>
         <source>Confirm pull from remote repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="707"/>
+        <location filename="mainwindow.cpp" line="757"/>
         <source>You are about to pull from the following remote repository:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="720"/>
+        <location filename="mainwindow.cpp" line="770"/>
         <source>Confirm push</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="721"/>
+        <location filename="mainwindow.cpp" line="771"/>
         <source>Confirm push to remote repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="722"/>
+        <location filename="mainwindow.cpp" line="772"/>
         <source>You are about to push to the following remote repository:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="802"/>
+        <location filename="mainwindow.cpp" line="826"/>
+        <location filename="mainwindow.cpp" line="845"/>
+        <source>Serve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="826"/>
+        <source>Failed to identify an active IPv4 address</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <source>Starting server at %n address(es):</source>
+        <translation type="obsolete">
+            <numerusform>Starting server at this address:</numerusform>
+            <numerusform>Starting server at %n addresses:</numerusform>
+        </translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="863"/>
         <source>Open Repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="803"/>
+        <location filename="mainwindow.cpp" line="864"/>
         <source>&lt;qt&gt;&lt;big&gt;What would you like to open?&lt;/big&gt;&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="807"/>
+        <location filename="mainwindow.cpp" line="868"/>
         <source>&lt;qt&gt;&lt;center&gt;&lt;img src=&quot;:images/browser-64.png&quot;&gt;&lt;br&gt;Remote repository&lt;/center&gt;&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="808"/>
+        <location filename="mainwindow.cpp" line="869"/>
         <source>Open a remote Mercurial repository, by cloning from its URL into a local folder.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="812"/>
+        <location filename="mainwindow.cpp" line="873"/>
         <source>&lt;qt&gt;&lt;center&gt;&lt;img src=&quot;:images/hglogo-64.png&quot;&gt;&lt;br&gt;Local repository&lt;/center&gt;&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="813"/>
+        <location filename="mainwindow.cpp" line="874"/>
         <source>Open an existing local Mercurial repository.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="817"/>
+        <location filename="mainwindow.cpp" line="878"/>
         <source>&lt;qt&gt;&lt;center&gt;&lt;img src=&quot;:images/hdd_unmount-64.png&quot;&gt;&lt;br&gt;File folder&lt;/center&gt;&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="818"/>
+        <location filename="mainwindow.cpp" line="879"/>
         <source>Open a local folder, by creating a Mercurial repository in it.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="867"/>
+        <location filename="mainwindow.cpp" line="928"/>
         <source>File chosen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="868"/>
+        <location filename="mainwindow.cpp" line="929"/>
         <source>&lt;qt&gt;&lt;b&gt;Folder required&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This is a file; to open a repository, you need to choose a folder.&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="875"/>
-        <location filename="mainwindow.cpp" line="945"/>
+        <location filename="mainwindow.cpp" line="936"/>
+        <location filename="mainwindow.cpp" line="1006"/>
         <source>Folder does not exist</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="876"/>
+        <location filename="mainwindow.cpp" line="937"/>
         <source>&lt;qt&gt;&lt;b&gt;Folder does not exist&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This folder does not exist, and it cannot be created because its parent does not exist either.&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="883"/>
-        <location filename="mainwindow.cpp" line="899"/>
+        <location filename="mainwindow.cpp" line="944"/>
+        <location filename="mainwindow.cpp" line="960"/>
         <source>Path is in existing repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="884"/>
+        <location filename="mainwindow.cpp" line="945"/>
         <source>&lt;qt&gt;&lt;b&gt;Path is in an existing repository&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to initialise a repository at &quot;%1&quot;.&lt;br&gt;This path is already inside an existing repository.&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="891"/>
-        <location filename="mainwindow.cpp" line="907"/>
+        <location filename="mainwindow.cpp" line="952"/>
+        <location filename="mainwindow.cpp" line="968"/>
         <source>Path is a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="892"/>
+        <location filename="mainwindow.cpp" line="953"/>
         <source>&lt;qt&gt;&lt;b&gt;Path is a file&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to initialise a repository at &quot;%1&quot;.&lt;br&gt;This is an existing file; it is only possible to initialise in folders.&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="900"/>
+        <location filename="mainwindow.cpp" line="961"/>
         <source>&lt;qt&gt;&lt;b&gt;Local path is in an existing repository&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open a remote repository by cloning it to the local path &quot;%1&quot;.&lt;br&gt;This path is already inside an existing repository.&lt;br&gt;Please provide a new folder name for the local repository.&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="908"/>
+        <location filename="mainwindow.cpp" line="969"/>
         <source>&lt;qt&gt;&lt;b&gt;Local path is a file&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open a remote repository by cloning it to the local path &quot;%1&quot;.&lt;br&gt;This path is an existing file.&lt;br&gt;Please provide a new folder name for the local repository.&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="915"/>
+        <location filename="mainwindow.cpp" line="976"/>
         <source>Folder exists</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="916"/>
+        <location filename="mainwindow.cpp" line="977"/>
         <source>&lt;qt&gt;&lt;b&gt;Local folder already exists&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open a remote repository by cloning it to the local path &quot;%1&quot;.&lt;br&gt;This is the path of an existing folder.&lt;br&gt;Please provide a new folder name for the local repository.&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="923"/>
+        <location filename="mainwindow.cpp" line="984"/>
         <source>Path is inside a repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="924"/>
+        <location filename="mainwindow.cpp" line="985"/>
         <source>&lt;qt&gt;&lt;b&gt;Open the repository that contains this path?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This is not the root folder of a repository.&lt;br&gt;But it is inside a repository, whose root is at &quot;%2&quot;. &lt;br&gt;&lt;br&gt;Would you like to open that repository instead?&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="934"/>
+        <location filename="mainwindow.cpp" line="995"/>
         <source>Folder has no repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="935"/>
+        <location filename="mainwindow.cpp" line="996"/>
         <source>&lt;qt&gt;&lt;b&gt;Initialise a repository here?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This folder does not contain a Mercurial repository.&lt;br&gt;&lt;br&gt;Would you like to initialise a repository here?&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="946"/>
+        <location filename="mainwindow.cpp" line="1007"/>
         <source>&lt;qt&gt;&lt;b&gt;Initialise a new repository?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open &quot;%1&quot;.&lt;br&gt;This folder does not yet exist.&lt;br&gt;&lt;br&gt;Would you like to create the folder and initialise a new empty repository in it?&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="956"/>
+        <location filename="mainwindow.cpp" line="1017"/>
         <source>Repository exists</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="957"/>
+        <location filename="mainwindow.cpp" line="1018"/>
         <source>&lt;qt&gt;&lt;b&gt;Open existing repository?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to initialise a new repository at &quot;%1&quot;.&lt;br&gt;This folder already contains a repository.  Would you like to open it?&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1122"/>
+        <location filename="mainwindow.cpp" line="1177"/>
         <source>Ok</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1133"/>
+        <location filename="mainwindow.cpp" line="1188"/>
         <source>Mercurial command did not return any output.</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="mainwindow.cpp" line="1216"/>
+        <location filename="mainwindow.cpp" line="1271"/>
         <source>Pushed %n changeset(s)</source>
         <translation type="unfinished">
             <numerusform>Pushed %n changeset</numerusform>
@@ -490,22 +508,22 @@
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1218"/>
+        <location filename="mainwindow.cpp" line="1273"/>
         <source>No changes to push</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1220"/>
+        <location filename="mainwindow.cpp" line="1275"/>
         <source>Push complete</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1222"/>
+        <location filename="mainwindow.cpp" line="1277"/>
         <source>The push command output was:</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="mainwindow.cpp" line="1232"/>
+        <location filename="mainwindow.cpp" line="1287"/>
         <source>Pulled %n changeset(s)</source>
         <translation type="unfinished">
             <numerusform>Pulled %n changeset</numerusform>
@@ -513,383 +531,374 @@
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1234"/>
+        <location filename="mainwindow.cpp" line="1289"/>
         <source>No changes to pull</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1236"/>
+        <location filename="mainwindow.cpp" line="1291"/>
         <source>Pull complete</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1238"/>
+        <location filename="mainwindow.cpp" line="1293"/>
         <source>The pull command output was:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1285"/>
+        <location filename="mainwindow.cpp" line="1324"/>
+        <location filename="mainwindow.cpp" line="1325"/>
+        <location filename="mainwindow.cpp" line="1330"/>
+        <location filename="mainwindow.cpp" line="1331"/>
+        <source>Push failed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1326"/>
+        <source>Your local repository could not be pushed to the remote repository.&lt;br&gt;&lt;br&gt;You may need to merge the changes locally first.&lt;br&gt;&lt;br&gt;The output of the push command was:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1332"/>
+        <source>Your local repository could not be pushed to the remote repository.&lt;br&gt;&lt;br&gt;The remote repository may have been changed by someone else since you last pushed. Try pulling and merging their changes into your local repository first.&lt;br&gt;&lt;br&gt;The output of the push command was:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1349"/>
+        <location filename="mainwindow.cpp" line="1350"/>
+        <source>Failed to run Mercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1351"/>
+        <source>The Mercurial program either could not be found or failed to run.&lt;br&gt;This may indicate a problem with the Mercurial installation, or with the EasyHg interaction extension.&lt;br&gt;&lt;br&gt;The test command said:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1388"/>
         <source>&lt;qt&gt;&lt;h3&gt;Command failed&lt;/h3&gt;&lt;p&gt;The following command failed:&lt;/p&gt;&lt;code&gt;%1&lt;/code&gt;%2&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1291"/>
+        <location filename="mainwindow.cpp" line="1394"/>
         <source>&lt;p&gt;Its output said:&lt;/p&gt;&lt;code&gt;%1&lt;/code&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1296"/>
+        <location filename="mainwindow.cpp" line="1399"/>
         <source>Command failed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1445"/>
+        <location filename="mainwindow.cpp" line="1551"/>
         <source>Change summary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1446"/>
+        <location filename="mainwindow.cpp" line="1552"/>
         <source>Summary of uncommitted changes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1459"/>
-        <location filename="mainwindow.cpp" line="1464"/>
-        <location filename="mainwindow.cpp" line="1831"/>
+        <location filename="mainwindow.cpp" line="1565"/>
+        <location filename="mainwindow.cpp" line="1570"/>
+        <location filename="mainwindow.cpp" line="1911"/>
         <source>Update</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="601"/>
-        <location filename="mainwindow.cpp" line="626"/>
-        <location filename="mainwindow.cpp" line="1837"/>
+        <location filename="mainwindow.cpp" line="1875"/>
+        <source>Open a repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1880"/>
+        <source>Quit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1882"/>
+        <source>Quit EasyMercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1886"/>
+        <source>Refresh the window to show the current state of the working folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1889"/>
+        <source>See what changes are available in the remote repository waiting to be pulled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1892"/>
+        <source>Pull changes from the remote repository to the local repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1895"/>
+        <source>Push changes from the local repository to the remote repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1899"/>
+        <source>See what has changed in the working folder compared with the last committed state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1902"/>
+        <source>Throw away your changes and return to the last committed state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1905"/>
+        <source>Mark the selected file(s) to be added on the next commit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1909"/>
+        <source>Mark the selected file(s) to be removed from version control on the next commit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1912"/>
+        <source>Update the working folder to the head of the current repository branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1916"/>
+        <source>Commit your changes to the local repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1919"/>
+        <source>Merge the two independent sets of changes in the local repository into the working folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1926"/>
+        <source>Edit .hgignore File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1927"/>
+        <source>Edit the .hgignore file, containing the names of files that should be ignored by Mercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1929"/>
+        <source>Serve via HTTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="649"/>
+        <location filename="mainwindow.cpp" line="675"/>
+        <location filename="mainwindow.cpp" line="1918"/>
         <source>Merge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1750"/>
+        <location filename="mainwindow.cpp" line="1841"/>
         <source>the default branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1752"/>
+        <location filename="mainwindow.cpp" line="1843"/>
         <source>branch &quot;%1&quot;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1771"/>
+        <location filename="mainwindow.cpp" line="1862"/>
         <source>On %1. Not at the head of the branch: consider updating</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1760"/>
+        <location filename="mainwindow.cpp" line="1851"/>
         <source>&lt;b&gt;Awaiting merge&lt;/b&gt; on %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="mainwindow.cpp" line="308"/>
+        <location filename="mainwindow.cpp" line="318"/>
         <source>You are about to commit %n file(s).</source>
         <translation type="unfinished">
             <numerusform>You are about to commit %n file.</numerusform>
             <numerusform>You are about to commit %n files.</numerusform>
         </translation>
     </message>
+    <message numerus="yes">
+        <location filename="mainwindow.cpp" line="834"/>
+        <source>Running temporary server at %n address(es):</source>
+        <translation type="unfinished">
+            <numerusform>Running temporary server at this address:</numerusform>
+            <numerusform>Running temporary server at %n addresses:</numerusform>
+        </translation>
+    </message>
     <message>
-        <location filename="mainwindow.cpp" line="1459"/>
+        <location filename="mainwindow.cpp" line="838"/>
+        <source>&lt;p&gt;Press Close to stop the server and return.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1565"/>
         <source>&lt;qt&gt;&lt;h3&gt;Update successful&lt;/h3&gt;&lt;p&gt;%1&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1464"/>
+        <location filename="mainwindow.cpp" line="1570"/>
         <source>&lt;qt&gt;&lt;h3&gt;Merge successful&lt;/h3&gt;&lt;p&gt;%1&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1470"/>
+        <location filename="mainwindow.cpp" line="1576"/>
         <source>Resolved</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1471"/>
+        <location filename="mainwindow.cpp" line="1577"/>
         <source>&lt;qt&gt;&lt;h3&gt;Merge resolved&lt;/h3&gt;&lt;p&gt;Merge resolved successfully.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1758"/>
+        <location filename="mainwindow.cpp" line="1847"/>
+        <source>(Examining repository)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="mainwindow.cpp" line="1849"/>
         <source>Nothing committed to this repository yet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1762"/>
+        <location filename="mainwindow.cpp" line="1853"/>
         <source>Have unresolved files following merge on %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1764"/>
+        <location filename="mainwindow.cpp" line="1855"/>
         <source>Have merged but not yet committed on %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1768"/>
+        <location filename="mainwindow.cpp" line="1859"/>
         <source>On %1. Not at the head of the branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="mainwindow.cpp" line="1774"/>
+        <location filename="mainwindow.cpp" line="1865"/>
         <source>At one of %n heads of %1</source>
         <translation type="unfinished">
             <numerusform></numerusform>
-            <numerusform></numerusform>
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1776"/>
+        <location filename="mainwindow.cpp" line="1867"/>
         <source>At the head of %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1783"/>
-        <source>Init local repository</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1784"/>
-        <source>Create an empty local repository in selected folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1786"/>
-        <source>Clone from remote</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1787"/>
-        <source>Clone from remote repository into local repository in selected folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1789"/>
+        <location filename="mainwindow.cpp" line="1874"/>
         <source>Open...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1790"/>
-        <source>Open repository</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1793"/>
+        <location filename="mainwindow.cpp" line="1877"/>
         <source>Settings...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1794"/>
+        <location filename="mainwindow.cpp" line="1878"/>
         <source>View and change application settings</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1797"/>
-        <source>Exit</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1799"/>
-        <source>Exit application</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1803"/>
+        <location filename="mainwindow.cpp" line="1885"/>
         <source>Refresh</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1804"/>
-        <source>Refresh (info of) status of workfolder files</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1806"/>
+        <location filename="mainwindow.cpp" line="1888"/>
         <source>Preview</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1807"/>
-        <source>View info of changesets incoming to us from remote repository (on pull operation)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1809"/>
+        <location filename="mainwindow.cpp" line="1891"/>
         <source>Pull</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1810"/>
-        <source>Pull changesets from remote repository to local repository</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1812"/>
+        <location filename="mainwindow.cpp" line="1894"/>
         <source>Push</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1813"/>
-        <source>Push local changesets to remote repository</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1816"/>
+        <location filename="mainwindow.cpp" line="1898"/>
         <source>Diff</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1817"/>
-        <source>Folderdiff: View all differences between working folder files and local repository files</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1819"/>
-        <source>View changesetdiff</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1820"/>
-        <source>Change set diff: View differences between all files of 2 repository changesets</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1822"/>
+        <location filename="mainwindow.cpp" line="1901"/>
         <source>Revert</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1823"/>
-        <source>Undo selected working folder file changes (return to local repository version)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1825"/>
+        <location filename="mainwindow.cpp" line="1904"/>
         <source>Add</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1826"/>
-        <source>Add working folder file(s) (selected or all yet untracked) to local repository (on next commit)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1828"/>
+        <location filename="mainwindow.cpp" line="1908"/>
         <source>Remove</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1829"/>
-        <source>Remove selected working folder file from local repository (on next commit)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1832"/>
-        <source>Update working folder from local repository</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1834"/>
+        <location filename="mainwindow.cpp" line="1915"/>
         <source>Commit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1835"/>
-        <source>Save selected file(s) or all changed files in working folder (and all subfolders) to local repository</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1838"/>
-        <source>Merge two local repository changesets to working folder</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1844"/>
+        <location filename="mainwindow.cpp" line="1923"/>
         <source>Annotate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1845"/>
+        <location filename="mainwindow.cpp" line="1924"/>
         <source>Show line-by-line version information for selected file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1847"/>
-        <source>Tag revision</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1848"/>
-        <source>Give decsriptive name (tag) to current workfolder parent revision.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1850"/>
-        <source>Edit .hgignore</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1851"/>
-        <source>Edit .hgignore file (file contains names of files that should be ignored by mercurial)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1853"/>
-        <source>Serve (via http)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1854"/>
+        <location filename="mainwindow.cpp" line="1930"/>
         <source>Serve local repository via http for workgroup access</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1857"/>
+        <location filename="mainwindow.cpp" line="1933"/>
         <source>About</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1858"/>
-        <source>Show the application&apos;s About box</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1860"/>
-        <source>About Qt</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1861"/>
-        <source>Show the Qt library&apos;s About box</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1864"/>
+        <location filename="mainwindow.cpp" line="1936"/>
         <source>Clear selections</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1870"/>
-        <location filename="mainwindow.cpp" line="1905"/>
+        <location filename="mainwindow.cpp" line="1942"/>
+        <location filename="mainwindow.cpp" line="1961"/>
         <source>File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1881"/>
+        <location filename="mainwindow.cpp" line="1949"/>
         <source>Advanced</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1898"/>
+        <location filename="mainwindow.cpp" line="1955"/>
         <source>Help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1942"/>
+        <location filename="mainwindow.cpp" line="1997"/>
         <source>Ready</source>
         <translation type="unfinished"></translation>
     </message>
@@ -985,6 +994,98 @@
     </message>
 </context>
 <context>
+    <name>SettingsDialog</name>
+    <message>
+        <location filename="settingsdialog.cpp" line="33"/>
+        <source>Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="40"/>
+        <source>User details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="49"/>
+        <source>Name:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="55"/>
+        <source>Email address:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="63"/>
+        <source>System application locations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="72"/>
+        <source>Mercurial (hg) program:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="78"/>
+        <location filename="settingsdialog.cpp" line="88"/>
+        <location filename="settingsdialog.cpp" line="98"/>
+        <location filename="settingsdialog.cpp" line="108"/>
+        <location filename="settingsdialog.cpp" line="122"/>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="82"/>
+        <source>External diff program:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="92"/>
+        <source>External file-merge program:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="102"/>
+        <source>External text editor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="116"/>
+        <source>EasyHg Mercurial extension:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="131"/>
+        <source>Use EasyHg Mercurial extension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="147"/>
+        <source>Mercurial program</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="153"/>
+        <source>External diff program</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="159"/>
+        <source>External file-merge program</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="165"/>
+        <source>External text editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="settingsdialog.cpp" line="171"/>
+        <source>EasyHg Mercurial extension</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>StartupDialog</name>
     <message>
         <location filename="startupdialog.cpp" line="29"/>
@@ -1026,7 +1127,8 @@
     </message>
     <message>
         <location filename="uncommitteditem.cpp" line="80"/>
-        <source>Show summary</source>
+        <source>Summarise changes</source>
+        <oldsource>Show summary</oldsource>
         <translation type="unfinished"></translation>
     </message>
     <message>
--- a/hgrunner.cpp	Fri Dec 17 09:36:39 2010 +0000
+++ b/hgrunner.cpp	Fri Dec 17 10:01:02 2010 +0000
@@ -313,6 +313,12 @@
     checkQueue();
 }
 
+void HgRunner::killCurrentActions()
+{
+    m_queue.clear();
+    killCurrentCommand();
+}
+
 void HgRunner::killCurrentCommand()
 {
     if (m_isRunning) {
--- a/hgrunner.h	Fri Dec 17 09:36:39 2010 +0000
+++ b/hgrunner.h	Fri Dec 17 10:01:02 2010 +0000
@@ -37,6 +37,7 @@
     ~HgRunner();
 
     void requestAction(HgAction action);
+    void killCurrentActions(); // kill anything running; clear the queue
 
 signals:
     void commandCompleted(HgAction action, QString stdOut);
--- a/mainwindow.cpp	Fri Dec 17 09:36:39 2010 +0000
+++ b/mainwindow.cpp	Fri Dec 17 10:01:02 2010 +0000
@@ -779,27 +779,19 @@
     }
 }
 
-QString MainWindow::listAllUpIpV4Addresses()
+QStringList MainWindow::listAllUpIpV4Addresses()
 {
-    QString ret;
+    QStringList ret;
     QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces();
 
-    for (int i = 0; i < ifaces.count(); i++)
-    {
+    for (int i = 0; i < ifaces.count(); i++) {
         QNetworkInterface iface = ifaces.at(i);
-
-        if (iface.flags().testFlag(QNetworkInterface::IsUp) && !iface.flags().testFlag(QNetworkInterface::IsLoopBack))
-        {
-            for (int j=0; j<iface.addressEntries().count(); j++)
-            {
+        if (iface.flags().testFlag(QNetworkInterface::IsUp)
+            && !iface.flags().testFlag(QNetworkInterface::IsLoopBack)) {
+            for (int j=0; j<iface.addressEntries().count(); j++) {
                 QHostAddress tmp = iface.addressEntries().at(j).ip();
-                if (QAbstractSocket::IPv4Protocol == tmp.protocol())
-                {
-                    if (!ret.isEmpty())
-                    {
-                        ret += " ";
-                    }
-                    ret += tmp.toString();
+                if (QAbstractSocket::IPv4Protocol == tmp.protocol()) {
+                    ret.push_back(tmp.toString());
                 }
             }
         }
@@ -827,14 +819,32 @@
     QStringList params;
     QString msg;
 
-    QString addrs = listAllUpIpV4Addresses();
-    QTextStream(&msg) << "Server running on address(es) (" << addrs << "), port 8000";
+    QStringList addrs = listAllUpIpV4Addresses();
+
+    if (addrs.empty()) {
+        QMessageBox::critical
+            (this, tr("Serve"), tr("Failed to identify an active IPv4 address"));
+        return;
+    }
+
+    //!!! should find available port as well
+
+    QTextStream ts(&msg);
+    ts << QString("<qt><p>%1</p>")
+        .arg(tr("Running temporary server at %n address(es):", "", addrs.size()));
+    foreach (QString addr, addrs) {
+        ts << QString("<pre>&nbsp;&nbsp;http://%1:8000</pre>").arg(xmlEncode(addr));
+    }
+    ts << tr("<p>Press Close to stop the server and return.</p>");
+    ts.flush();
+             
     params << "serve";
 
     runner->requestAction(HgAction(ACT_SERVE, workFolderPath, params));
     
-    QMessageBox::information(this, "Serve", msg, QMessageBox::Close);
-//!!!    runner -> killCurrentCommand();
+    QMessageBox::information(this, tr("Serve"), msg, QMessageBox::Close);
+
+    runner->killCurrentActions();
 }
 
 void MainWindow::startupDialog()
@@ -903,6 +913,11 @@
     }
 }
 
+void MainWindow::changeRemoteRepo()
+{
+    //!!! so we want a "multi-choice" thingy but with remote only? and then we rewrite the local hgrc??
+}
+
 void MainWindow::open(QString local)
 {
     if (openLocal(local)) {
@@ -1666,6 +1681,7 @@
 
     connect(settingsAct, SIGNAL(triggered()), this, SLOT(settings()));
     connect(openAct, SIGNAL(triggered()), this, SLOT(open()));
+    connect(changeRemoteRepoAct, SIGNAL(triggered()), this, SLOT(changeRemoteRepo()));
 
     connect(hgIncomingAct, SIGNAL(triggered()), this, SLOT(hgIncoming()));
     connect(hgPullAct, SIGNAL(triggered()), this, SLOT(hgPull()));
@@ -1864,6 +1880,9 @@
     openAct = new QAction(QIcon(":/images/fileopen.png"), tr("Open..."), this);
     openAct -> setStatusTip(tr("Open a repository"));
 
+    changeRemoteRepoAct = new QAction(tr("Change Remote Location..."), this);
+    changeRemoteRepoAct->setStatusTip(tr("Change the default remote repository for pull and push actions"));
+
     settingsAct = new QAction(QIcon(":/images/settings.png"), tr("Settings..."), this);
     settingsAct -> setStatusTip(tr("View and change application settings"));
 
@@ -1913,10 +1932,10 @@
     hgAnnotateAct = new QAction(tr("Annotate"), this);
     hgAnnotateAct -> setStatusTip(tr("Show line-by-line version information for selected file"));
 
-    hgIgnoreAct = new QAction(tr("Edit .hgignore"), this);
+    hgIgnoreAct = new QAction(tr("Edit .hgignore File"), this);
     hgIgnoreAct -> setStatusTip(tr("Edit the .hgignore file, containing the names of files that should be ignored by Mercurial"));
 
-    hgServeAct = new QAction(tr("Serve (via http)"), this);
+    hgServeAct = new QAction(tr("Serve via HTTP"), this);
     hgServeAct -> setStatusTip(tr("Serve local repository via http for workgroup access"));
 
     //Help actions
@@ -1932,6 +1951,7 @@
     fileMenu = menuBar()->addMenu(tr("File"));
 
     fileMenu -> addAction(openAct);
+    fileMenu -> addAction(changeRemoteRepoAct);
     fileMenu -> addAction(settingsAct);
     fileMenu -> addSeparator();
     fileMenu -> addAction(exitAct);
--- a/mainwindow.h	Fri Dec 17 09:36:39 2010 +0000
+++ b/mainwindow.h	Fri Dec 17 10:01:02 2010 +0000
@@ -68,6 +68,7 @@
     void about();
     void settings();
     void open();
+    void changeRemoteRepo();
     void startupDialog();
     void clearSelections();
 
@@ -119,7 +120,7 @@
     void reportNewRemoteHeads(QString);
     void presentLongStdoutToUser(QString stdo);
 
-    QString listAllUpIpV4Addresses();
+    QStringList listAllUpIpV4Addresses();
     QString filterTag(QString tag);
 
     QString getUserInfo() const;
@@ -161,6 +162,7 @@
 
     //File menu actions
     QAction *openAct;
+    QAction *changeRemoteRepoAct;
     QAction *settingsAct;
     QAction *exitAct;
 
--- a/settingsdialog.cpp	Fri Dec 17 09:36:39 2010 +0000
+++ b/settingsdialog.cpp	Fri Dec 17 10:01:02 2010 +0000
@@ -139,10 +139,6 @@
     connect(bbox, SIGNAL(accepted()), this, SLOT(accept()));
     mainLayout->addWidget(bbox, 2, 0);
     m_ok = bbox->button(QDialogButtonBox::Ok);
-//    m_ok->setEnabled(false);
-    
-//!!!    m_ok->setEnabled(m_name != "");
-//    updateExample();
 }
 
 void