changeset 318:124a3ea9fafb easyhg_v0.4

Merge, and add a helpful warning when you try to push before committing your merge (I just did this and the ensuing warning was misleading)
author Chris Cannam
date Wed, 02 Mar 2011 12:38:17 +0000
parents 5144926b715e (diff) 806e9cb9ce61 (current diff)
children 1aba0914dcfc 67feb05754ee
files mainwindow.cpp
diffstat 3 files changed, 551 insertions(+), 435 deletions(-) [+]
line wrap: on
line diff
Binary file easyhg_en.qm has changed
--- a/easyhg_en.ts	Wed Mar 02 12:29:45 2011 +0000
+++ b/easyhg_en.ts	Wed Mar 02 12:38:17 2011 +0000
@@ -1,53 +1,67 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.0" language="en_US">
+<TS version="2.0" language="en_GB">
 <context>
     <name>ChangesetItem</name>
     <message>
-        <location filename="changesetitem.cpp" line="112"/>
         <source>&lt;qt&gt;&lt;b&gt;&amp;nbsp;Revision: &lt;/b&gt;%1&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changesetitem.cpp" line="119"/>
         <source>Copy identifier to clipboard</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changesetitem.cpp" line="128"/>
         <source>Diff to parent %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changesetitem.cpp" line="138"/>
         <source>Diff to parent</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changesetitem.cpp" line="143"/>
         <source>Diff to current working folder</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changesetitem.cpp" line="148"/>
         <source>Update to this revision</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changesetitem.cpp" line="151"/>
         <source>Merge from here to current</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changesetitem.cpp" line="156"/>
         <source>Add tag...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Summarise changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Diff to left parent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Diff to right parent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start new branch...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>ClickableLabel</name>
+    <message>
+        <source>&lt;u&gt;%1&lt;/u&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ConfirmCommentDialog</name>
     <message>
-        <location filename="confirmcommentdialog.cpp" line="156"/>
         <source>&lt;p&gt;Please enter your comment:&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -55,136 +69,125 @@
 <context>
     <name>FileStatusWidget</name>
     <message>
-        <location filename="filestatuswidget.cpp" line="42"/>
-        <source>Local:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="filestatuswidget.cpp" line="50"/>
-        <source>Remote:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="filestatuswidget.cpp" line="55"/>
-        <source>State:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="filestatuswidget.cpp" line="65"/>
-        <source>You have no uncommitted changes.</source>
-        <oldsource>You have made no changes.</oldsource>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="filestatuswidget.cpp" line="68"/>
         <source>Unmodified:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="69"/>
         <source>Modified:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="70"/>
         <source>Added:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="71"/>
         <source>Removed:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="72"/>
         <source>Missing:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="73"/>
         <source>In Conflict:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="74"/>
         <source>Untracked:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="76"/>
         <source>You have not changed these files.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="77"/>
         <source>You have changed these files since you last committed them.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="78"/>
-        <source>These files will be added to version control next time you commit.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="filestatuswidget.cpp" line="79"/>
-        <source>These files will be removed from version control next time you commit.&lt;br&gt;They will not be deleted from the local folder.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="filestatuswidget.cpp" line="81"/>
         <source>These files are recorded in the version control, but absent from your working folder.&lt;br&gt;If you intended to delete them, select them and use Remove to tell the version control system about it.&lt;br&gt;If you deleted them by accident, select them and use Revert to restore their previous contents.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="84"/>
         <source>These files are unresolved following an incomplete merge.&lt;br&gt;Select a file and use Merge to try to resolve the merge again.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="85"/>
-        <source>These files are in your working folder but are not under version control.&lt;br&gt;Select a file and use Add to place it under version control or Ignore to remove it from this list.</source>
+        <source>Files highlighted &lt;font color=#d40000&gt;in red&lt;/font&gt; have appeared since your most recent commit or update.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="filestatuswidget.cpp" line="88"/>
-        <source>Files highlighted &lt;font color=#d40000&gt;in red&lt;/font&gt; have appeared since your most recent commit or update.</source>
+        <source>Ignored:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>These files will be added to version control next time you commit them.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>These files will be removed from version control next time you commit them.&lt;br&gt;They will not be deleted from the local folder.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>These files are in your working folder but are not under version control.&lt;br&gt;Select a file and use Add to place it under version control.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>These files have names that match entries in the working folder&apos;s .hgignore file,&lt;br&gt;and so will be ignored by the version control system.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show all files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;This area will list files in your working folder that you have changed.&lt;br&gt;&lt;br&gt;At the moment you have no uncommitted changes.&lt;br&gt;&lt;br&gt;To see changes previously made to the repository,&lt;br&gt;switch to the History tab.&lt;br&gt;&lt;br&gt;%1&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>To open the working folder in Finder,&lt;br&gt;click on the &amp;ldquo;Local&amp;rdquo; folder path shown above.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>To open the working folder in Windows Explorer,&lt;br&gt;click on the &amp;ldquo;Local&amp;rdquo; folder path shown above.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>To open the working folder in your system file manager,&lt;br&gt;click the &amp;ldquo;Local&amp;rdquo; folder path shown above.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;You have no uncommitted changes.&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>HgRunner</name>
     <message>
-        <location filename="hgrunner.cpp" line="143"/>
         <source>User name:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="145"/>
         <source>User name for &quot;%1&quot;:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="149"/>
         <source>Enter user name</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="170"/>
         <source>Password:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="173"/>
         <source>Password for &quot;%1&quot; at &quot;%2&quot;:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="176"/>
         <source>Password for user &quot;%1&quot;:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgrunner.cpp" line="182"/>
         <source>Enter password</source>
         <translation type="unfinished"></translation>
     </message>
@@ -192,12 +195,10 @@
 <context>
     <name>HgTabWidget</name>
     <message>
-        <location filename="hgtabwidget.cpp" line="40"/>
         <source>My work</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="hgtabwidget.cpp" line="44"/>
         <source>History</source>
         <translation type="unfinished"></translation>
     </message>
@@ -205,284 +206,187 @@
 <context>
     <name>IncomingDialog</name>
     <message>
-        <location filename="incomingdialog.cpp" line="38"/>
         <source>No changes waiting to pull</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="incomingdialog.cpp" line="41"/>
         <source>The command output was:</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="incomingdialog.cpp" line="46"/>
         <source>There are %n change(s) ready to pull</source>
         <translation type="unfinished">
             <numerusform>There is %n change ready to pull</numerusform>
             <numerusform>There are %n changes ready to pull</numerusform>
         </translation>
     </message>
+    <message>
+        <source>&lt;qt&gt;Your local repository already contains all changes found in the remote repository.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MainWindow</name>
     <message>
-        <location filename="mainwindow.cpp" line="64"/>
-        <location filename="mainwindow.cpp" line="1133"/>
         <source>EasyMercurial</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="132"/>
         <source>About EasyMercurial</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="133"/>
-        <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"/>
         <source>Commit files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="351"/>
         <source>Tag</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="352"/>
         <source>Enter tag:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="528"/>
         <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"/>
-        <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"/>
-        <source>You are about to commit the following files:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="534"/>
-        <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"/>
         <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">
-            <numerusform>You are about to &lt;b&gt;revert&lt;/b&gt; %n file.&lt;br&gt;&lt;br&gt;This will &lt;b&gt;throw away any changes&lt;/b&gt; that you have made to this file but have not committed.</numerusform>
+            <numerusform>You are about to &lt;b&gt;revert&lt;/b&gt; %n file.&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.</numerusform>
             <numerusform>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.</numerusform>
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="648"/>
         <source>Merge from the default branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="650"/>
         <source>Merge from branch &quot;%1&quot;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="656"/>
         <source>Merge from %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="705"/>
         <source>Confirm pull</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="706"/>
-        <source>Confirm pull from remote repository</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="707"/>
-        <source>You are about to pull from the following remote repository:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="720"/>
         <source>Confirm push</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="721"/>
-        <source>Confirm push to remote repository</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="722"/>
-        <source>You are about to push to the following remote repository:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="802"/>
         <source>Open Repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="803"/>
         <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"/>
         <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"/>
         <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"/>
         <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"/>
         <source>Open an existing local Mercurial repository.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="817"/>
         <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"/>
         <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"/>
         <source>File chosen</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="868"/>
         <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"/>
         <source>Folder does not exist</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="876"/>
         <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"/>
         <source>Path is in existing repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="884"/>
         <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"/>
         <source>Path is a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="892"/>
         <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"/>
-        <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"/>
         <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"/>
         <source>Folder exists</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="916"/>
-        <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"/>
         <source>Path is inside a repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="924"/>
         <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"/>
         <source>Folder has no repository</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="935"/>
         <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"/>
         <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"/>
         <source>Repository exists</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="957"/>
         <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"/>
         <source>Ok</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1133"/>
         <source>Mercurial command did not return any output.</source>
         <translation type="unfinished"></translation>
     </message>
     <message numerus="yes">
-        <location filename="mainwindow.cpp" line="1216"/>
         <source>Pushed %n changeset(s)</source>
         <translation type="unfinished">
             <numerusform>Pushed %n changeset</numerusform>
@@ -490,22 +394,14 @@
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1218"/>
         <source>No changes to push</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1220"/>
         <source>Push complete</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1222"/>
-        <source>The push command output was:</source>
-        <translation type="unfinished"></translation>
-    </message>
     <message numerus="yes">
-        <location filename="mainwindow.cpp" line="1232"/>
         <source>Pulled %n changeset(s)</source>
         <translation type="unfinished">
             <numerusform>Pulled %n changeset</numerusform>
@@ -513,81 +409,50 @@
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1234"/>
         <source>No changes to pull</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1236"/>
         <source>Pull complete</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1238"/>
-        <source>The pull command output was:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1285"/>
-        <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"/>
-        <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"/>
         <source>Command failed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1445"/>
         <source>Change summary</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1446"/>
         <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"/>
         <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"/>
         <source>Merge</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1750"/>
         <source>the default branch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1752"/>
         <source>branch &quot;%1&quot;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1771"/>
         <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"/>
         <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"/>
         <source>You are about to commit %n file(s) to %1.</source>
         <translation type="unfinished">
             <numerusform>You are about to commit %n file to %1.</numerusform>
@@ -595,336 +460,465 @@
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1459"/>
         <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"/>
-        <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"/>
         <source>Resolved</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1471"/>
-        <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"/>
         <source>Nothing committed to this repository yet</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1762"/>
         <source>Have unresolved files following merge on %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1764"/>
         <source>Have merged but not yet committed on %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1768"/>
         <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"/>
         <source>At one of %n heads of %1</source>
         <translation type="unfinished">
-            <numerusform></numerusform>
-            <numerusform></numerusform>
+            <numerusform>At one of %n heads of %1</numerusform>
+            <numerusform>At one of %n heads of %1</numerusform>
         </translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1776"/>
         <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"/>
         <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"/>
         <source>Settings...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1794"/>
         <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"/>
         <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"/>
         <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"/>
         <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"/>
         <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"/>
         <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"/>
         <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"/>
         <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"/>
         <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"/>
         <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"/>
         <source>Annotate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1845"/>
         <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"/>
         <source>Serve local repository via http for workgroup access</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1857"/>
-        <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"/>
-        <source>Clear selections</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="mainwindow.cpp" line="1870"/>
-        <location filename="mainwindow.cpp" line="1905"/>
         <source>File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1881"/>
         <source>Advanced</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1898"/>
         <source>Help</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="mainwindow.cpp" line="1942"/>
         <source>Ready</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; you are committing only the files you have selected, not all of the files that have been changed!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;h3&gt;%1&lt;/h3&gt;&lt;p&gt;%2%3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You are about to commit the following files to %1:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>New Branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter new branch name:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start Branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add Tag</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; you are reverting only the files you have selected, not all of the files that have been changed!</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unable to revert</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;b&gt;Sorry, unable to revert these files&lt;/b&gt;&lt;br&gt;&lt;br&gt;EasyMercurial can only revert a subset of files during a merge if it still has a record of which parent was the original merge target; that information is no longer available.&lt;br&gt;&lt;br&gt;This is a limitation of EasyMercurial.  Consider reverting all files, or using hg revert with a specific revision at the command-line instead.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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>
+        <source>&lt;qt&gt;&lt;h3&gt;Pull from remote repository?&lt;/h3&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;p&gt;You are about to pull changes from the remote repository at &lt;code&gt;%1&lt;/code&gt;.&lt;/p&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;h3&gt;Push to remote repository?&lt;/h3&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;p&gt;You are about to push your changes to the remote repository at &lt;code&gt;%1&lt;/code&gt;.&lt;/p&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serve</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to identify an active IPv4 address</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;p&gt;Press Close to stop the server and return.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change Remote Location</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;big&gt;Change the remote location&lt;/big&gt;&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Provide a new URL to use for push and pull actions from the current local repository.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Path does not exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;b&gt;Path does not exist: create it?&lt;/b&gt;&lt;br&gt;&lt;br&gt;You asked to open a remote repository by cloning it to &quot;%1&quot;. This folder does not exist, and neither does its parent.&lt;br&gt;&lt;br&gt;Would you like to create the parent folder as well?&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to create folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;b&gt;Failed to create folder&lt;/b&gt;&lt;br&gt;&lt;br&gt;Sorry, the path for the parent folder &quot;%1&quot; could not be created.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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 different folder name for the local repository.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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 &quot;%1&quot;, but this folder already exists and so cannot be cloned to.&lt;br&gt;&lt;br&gt;Would you like to create the new folder &quot;%2&quot; instead?&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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 &quot;%1&quot;, but this file or folder already exists and so cannot be cloned to.&lt;br&gt;Please provide a different folder name for the local repository.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;Successfully pushed to the remote repository at &lt;code&gt;%1&lt;/code&gt;.&lt;/qt&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The remote repository already contains all changes that have been committed locally.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1&lt;p&gt;You do have some uncommitted changes. If you wish to push those to the remote repository, commit them locally first.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The new changes will be highlighted in the history.&lt;br&gt;Use Update to bring these changes into your working copy.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Your local repository already contains all changes found in the remote repository.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Push failed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <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.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to run Mercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The Mercurial program either could not be found or failed to run.&lt;br&gt;Check that the Mercurial program path is correct in %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to run Mercurial with extension enabled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The Mercurial program failed to run with the EasyMercurial interaction extension enabled.&lt;br&gt;This may indicate an installation problem.&lt;br&gt;&lt;br&gt;You may be able to continue working if you switch off &amp;ldquo;Use EasyHg Mercurial Extension&amp;rdquo; in %1.  Note that remote repositories that require authentication might not work if you do this.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A Mercurial command failed to run correctly.  This may indicate an installation problem or some other problem with EasyMercurial.&lt;br&gt;&lt;br&gt;See &amp;ldquo;More Details&amp;rdquo; for the command output.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clone successful</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The remote repository was successfully cloned to the local folder &lt;code&gt;%1&lt;/code&gt;.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Summary of changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Merge successful</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remember to test and commit the result before making any further changes.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;h3&gt;Merge resolved&lt;/h3&gt;&lt;p&gt;Merge resolved successfully.&lt;br&gt;Remember to test and commit the result before making any further changes.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>EasyMercurial: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No repository open</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(Examining repository)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No working copy yet: consider updating</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>On %1.  New branch: has not yet been committed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open an existing repository or working folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change Remote Location...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change the default remote repository for pull and push actions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Quit EasyMercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh the window to show the current state of the working folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>See what changes are available in the remote repository waiting to be pulled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pull changes from the remote repository to the local repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Push changes from the local repository to the remote repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>See what has changed in the working folder compared with the last committed state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Throw away your changes and return to the last committed state</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mark the selected file(s) to be added on the next commit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mark the selected file(s) to be removed from version control on the next commit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update the working folder to the head of the current repository branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit your changes to the local repository</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Merge the two independent sets of changes in the local repository into the working folder</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit .hgignore File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit the .hgignore file, containing the names of files that should be ignored by Mercurial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serve via HTTP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;h2&gt;EasyMercurial v%1&lt;/h2&gt;&lt;font size=-1&gt;&lt;p&gt;EasyMercurial is a simple user interface for the Mercurial&lt;/a&gt; version control system.&lt;/p&gt;&lt;h4&gt;Credits and Copyright&lt;/h4&gt;&lt;p&gt;Development carried out by Chris Cannam for SoundSoftware.ac.uk at the Centre for Digital Music, Queen Mary, University of London.&lt;/p&gt;&lt;p&gt;EasyMercurial is based on HgExplorer by Jari Korhonen, with thanks.&lt;/p&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;Copyright &amp;copy; 2011 Queen Mary, University of London.&lt;br&gt;Copyright &amp;copy; 2010 Jari Korhonen.&lt;br&gt;Copyright &amp;copy; 2011 Chris Cannam.&lt;/p&gt;&lt;p style=&quot;margin-left: 2em;&quot;&gt;This program requires Mercurial, by Matt Mackall and others.&lt;br&gt;This program uses Qt by Nokia.&lt;br&gt;This program uses Nuvola icons by David Vignoni.&lt;br&gt;This program may use KDiff3 by Joachim Eibl.&lt;br&gt;This program may use PyQt by River Bank Computing.&lt;br&gt;Packaging for Mercurial and other dependencies on Windows is derived from TortoiseHg by Steve Borho and others.&lt;/p&gt;&lt;h4&gt;License&lt;/h4&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.&lt;/p&gt;&lt;/font&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message numerus="yes">
+        <source>Running temporary server at %n address(es):</source>
+        <translation type="unfinished">
+            <numerusform></numerusform>
+        </translation>
+    </message>
+</context>
+<context>
+    <name>MoreInformationDialog</name>
+    <message>
+        <source>More Details...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show Details...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hide Details...</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>MultiChoiceDialog</name>
     <message>
-        <location filename="multichoicedialog.cpp" line="55"/>
         <source>&amp;URL:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="multichoicedialog.cpp" line="65"/>
-        <location filename="multichoicedialog.cpp" line="292"/>
         <source>&amp;File:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="multichoicedialog.cpp" line="76"/>
         <source>Browse...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="multichoicedialog.cpp" line="186"/>
         <source>Open Directory</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="multichoicedialog.cpp" line="195"/>
         <source>Open File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="multichoicedialog.cpp" line="300"/>
-        <location filename="multichoicedialog.cpp" line="316"/>
         <source>&amp;Folder:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -932,7 +926,6 @@
 <context>
     <name>QApplication</name>
     <message>
-        <location filename="main.cpp" line="30"/>
         <source>EasyMercurial</source>
         <translation type="unfinished"></translation>
     </message>
@@ -940,74 +933,175 @@
 <context>
     <name>QObject</name>
     <message>
-        <location filename="changeset.cpp" line="72"/>
         <source>Identifier:</source>
-        <oldsource>Identifier</oldsource>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changeset.cpp" line="73"/>
         <source>Author:</source>
-        <oldsource>Author</oldsource>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changeset.cpp" line="74"/>
         <source>Date:</source>
-        <oldsource>Date</oldsource>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changeset.cpp" line="75"/>
         <source>Branch:</source>
-        <oldsource>Branch</oldsource>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changeset.cpp" line="76"/>
         <source>Tag:</source>
-        <oldsource>Tag</oldsource>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="changeset.cpp" line="77"/>
         <source>Comment:</source>
-        <oldsource>Comment</oldsource>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>RepositoryDialog</name>
     <message>
-        <location filename="repositorydialog.cpp" line="24"/>
         <source>Open Repository</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
+    <name>SettingsDialog</name>
+    <message>
+        <source>Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User details</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Email address:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Presentation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show labels on toolbar icons</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show long descriptions for file status headings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Place the work and history views</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>In separate tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Side-by-side in a single pane</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Label the history timeline with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ages, for example &quot;5 weeks ago&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dates, for example &quot;2010-06-23&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System application locations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mercurial (hg) program:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>External diff program:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>External file-merge program:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>External text editor:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>EasyHg Mercurial extension:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use EasyHg Mercurial extension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore defaults</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mercurial program</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>External diff program</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>External file-merge program</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>External text editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>EasyHg Mercurial extension</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore default settings?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;qt&gt;&lt;b&gt;Restore default settings?&lt;/b&gt;&lt;br&gt;&lt;br&gt;Are you sure you want to reset all settings to their default values?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>StartupDialog</name>
     <message>
-        <location filename="startupdialog.cpp" line="29"/>
         <source>About me</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="startupdialog.cpp" line="39"/>
         <source>&lt;qt&gt;&lt;big&gt;Welcome to EasyMercurial!&lt;/qt&gt;&lt;/big&gt;&lt;br&gt;How would you like to be identified in commit messages?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="startupdialog.cpp" line="42"/>
         <source>Name:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="startupdialog.cpp" line="50"/>
         <source>Email address:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="startupdialog.cpp" line="58"/>
         <source>&lt;br&gt;You will appear as:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1015,44 +1109,59 @@
 <context>
     <name>UncommittedItem</name>
     <message>
-        <location filename="uncommitteditem.cpp" line="72"/>
         <source>&lt;qt&gt;&lt;b&gt;&amp;nbsp;Uncommitted changes&lt;/b&gt;&lt;/qt&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="uncommitteditem.cpp" line="78"/>
         <source>Diff</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="uncommitteditem.cpp" line="80"/>
-        <source>Show summary</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="uncommitteditem.cpp" line="85"/>
         <source>Commit...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="uncommitteditem.cpp" line="87"/>
         <source>Revert...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="uncommitteditem.cpp" line="133"/>
         <source>Uncommitted changes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="uncommitteditem.cpp" line="138"/>
         <source>Uncommitted</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="uncommitteditem.cpp" line="142"/>
         <source>changes</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>Summarise changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start new branch...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel new branch</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>WorkStatusWidget</name>
+    <message>
+        <source>Local:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remote:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>State:</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 </TS>
--- a/mainwindow.cpp	Wed Mar 02 12:29:45 2011 +0000
+++ b/mainwindow.cpp	Wed Mar 02 12:38:17 2011 +0000
@@ -1708,6 +1708,13 @@
              tr("Push failed"),
              tr("Your local repository could not be pushed to the remote repository.<br><br>You may need to merge the changes locally first."),
              output);
+    } else if (m_hgTabs->canCommit() && m_currentParents.size() > 1) {
+        MoreInformationDialog::warning
+            (this,
+             tr("Push failed"),
+             tr("Push failed"),
+             tr("Your local repository could not be pushed to the remote repository.<br><br>You have an uncommitted merge in your local folder.  You probably need to commit it before you push."),
+             output);
     } else {
         MoreInformationDialog::warning
             (this,