Mercurial > hg > easyhg
changeset 583:e40e3ebe9f2e fswatcher
Merge from default branch
author | Chris Cannam |
---|---|
date | Mon, 12 Mar 2012 14:58:40 +0000 |
parents | 9f91d1b2ed51 (current diff) f3a61f28896e (diff) |
children | 09b9849b9800 |
files | easyhg-icon.ico help/topics/34.txt images/crappy-icon-design.xcf images/crappy-icon.png |
diffstat | 114 files changed, 1120 insertions(+), 297 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Tue Feb 14 17:53:29 2012 +0000 +++ b/.hgtags Mon Mar 12 14:58:40 2012 +0000 @@ -15,3 +15,4 @@ 319f920a51ee61df29701db8ad9bdb413c66a399 easyhg_v0.9.8 6bb2a1f3087cd57d5a3296bbb82a494b7fa609c6 easyhg_v1.0 06507a59f2b8f5db9ae37e0dcd37a320e03ae8b8 easyhg_v1.1 +ca943d5147697d8a63d835e1227315fefee0691b easyhg_v1.2
--- a/CHANGELOG Tue Feb 14 17:53:29 2012 +0000 +++ b/CHANGELOG Mon Mar 12 14:58:40 2012 +0000 @@ -1,3 +1,20 @@ +Changes in v1.2 since v1.1: + + * Add a Find function to both My Work and History tabs + * Add a Cancel button to the progress bar in the status line when + carrying out network operations + * Remove Refresh button from the toolbar. This button was found to be + causing significant confusion, as some users interpreted it as + meaning resynchronise with the server, while in fact all it did was + re-read the local working copy. The function is still present, but + has been relegated to File -> Re-Read Working Folder + * Rework the filesystem watcher code, making it generally more + reliable (a requirement for removing the Refresh button) + * Fix problem with return codes in Mercurial 2.1 causing push and + pull to be reported as failing + * Make it possible to clear the remote repository URL + * Switch the Windows installer from InstallJammer to WiX + Changes in v1.1 since v1.0.1: * Closed branches are now supported: you can close a branch in EasyMercurial
--- a/README.txt Tue Feb 14 17:53:29 2012 +0000 +++ b/README.txt Mon Mar 12 14:58:40 2012 +0000 @@ -44,8 +44,8 @@ EasyMercurial is Copyright 2010 Jari Korhonen -Copyright 2010-2011 Chris Cannam -Copyright 2010-2011 Queen Mary, University of London +Copyright 2010-2012 Chris Cannam +Copyright 2010-2012 Queen Mary, University of London
--- a/deploy/osx/deploy.sh Tue Feb 14 17:53:29 2012 +0000 +++ b/deploy/osx/deploy.sh Mon Mar 12 14:58:40 2012 +0000 @@ -30,6 +30,7 @@ mkdir "$volume" || exit 1 ln -s /Applications "$volume"/Applications +cp COPYING "$volume/COPYING.txt" cp -RPp "$source" "$target" echo "Done"
--- a/easyhg.pro Tue Feb 14 17:53:29 2012 +0000 +++ b/easyhg.pro Mon Mar 12 14:58:40 2012 +0000 @@ -65,7 +65,8 @@ src/hgignoredialog.h \ src/versiontester.h \ src/squeezedlabel.h \ - src/fswatcher.h + src/fswatcher.h \ + src/findwidget.h SOURCES = \ src/main.cpp \ src/mainwindow.cpp \ @@ -103,7 +104,8 @@ src/hgignoredialog.cpp \ src/versiontester.cpp \ src/squeezedlabel.cpp \ - src/fswatcher.cpp + src/fswatcher.cpp \ + src/findwidget.cpp macx-* { SOURCES += src/common_osx.mm
--- a/easyhg.py Tue Feb 14 17:53:29 2012 +0000 +++ b/easyhg.py Mon Mar 12 14:58:40 2012 +0000 @@ -4,8 +4,8 @@ # # Based on hgExplorer by Jari Korhonen # Copyright (c) 2010 Jari Korhonen -# Copyright (c) 2010-2011 Chris Cannam -# Copyright (c) 2010-2011 Queen Mary, University of London +# Copyright (c) 2010-2012 Chris Cannam +# Copyright (c) 2010-2012 Queen Mary, University of London # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as
--- a/easyhg.qrc Tue Feb 14 17:53:29 2012 +0000 +++ b/easyhg.qrc Mon Mar 12 14:58:40 2012 +0000 @@ -27,6 +27,7 @@ <file>images/home.png</file> <file>images/back.png</file> <file>images/forward.png</file> + <file>images/cancel-small.png</file> <file>help/topics.html</file> <file>help/help.css</file> <file>help/a-04.html</file> @@ -43,6 +44,7 @@ <file>help/a-32.html</file> <file>help/a-33.html</file> <file>help/a-34.html</file> + <file>help/a-35.html</file> <file>help/a-40.html</file> <file>help/images/openremote50.png</file> <file>help/images/openfolder50.png</file>
--- a/easyhg.rc Tue Feb 14 17:53:29 2012 +0000 +++ b/easyhg.rc Mon Mar 12 14:58:40 2012 +0000 @@ -1,1 +1,1 @@ -IDI_ICON1 ICON DISCARDABLE "easyhg-icon.ico" +IDI_ICON1 ICON DISCARDABLE "easyhg.ico"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/easyhg.wxs Mon Mar 12 14:58:40 2012 +0000 @@ -0,0 +1,232 @@ +<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> + + <Product + Name="EasyMercurial" + Id="CDD72D35-518B-49E2-A389-B3F7C1AE289D" + Language="1033" + Codepage="1252" + Version="1.2.0" + UpgradeCode="B82DFDA9-B9DE-49BC-93E5-0B96F9DEB04B" + Manufacturer="Queen Mary, University of London"> + + <Package + Id="*" + Keywords="Installer" + Description="EasyMercurial Installer" + Comments="Copyright (c) 2012 Queen Mary, University of London and others." + Manufacturer="Queen Mary, University of London" + InstallerVersion="100" + Languages="1033" + Compressed="yes" + SummaryCodepage="1252"/> + + <Media Id="1" Cabinet="easyhg.cab" EmbedCab="yes" DiskPrompt="CD-ROM #1"/> + <Property Id="DiskPrompt" Value="EasyMercurial Installation [1]"/> + + <Directory Id="TARGETDIR" Name="SourceDir"> + <Directory Id="ProgramFilesFolder" Name="PFiles"> + <Directory Id="EasyHg" Name="EasyMercurial"> + <Directory Id="INSTALLDIR" Name="EasyMercurial 1.2.0"> + + <Component + Id="MainExecutable" + Guid="DC128BA9-25A8-431E-8A88-7E0445E850B9"> + + <File + Id="EasyHg" + Name="EasyMercurial.exe" + DiskId="1" + Source="release\EasyMercurial.exe" + KeyPath="yes"> + + <Shortcut + Id="EasyHgStartEntry" + Directory="ProgramMenuDir" + Name="EasyMercurial" + WorkingDirectory="INSTALLDIR" + Icon="easyhg.ico" + IconIndex="0" + Advertise="yes"/> + + <Shortcut + Id="EasyHgDesktop" + Directory="DesktopFolder" + Name="EasyMercurial" + WorkingDirectory="INSTALLDIR" + Icon="easyhg.ico" + IconIndex="0" + Advertise="yes"/> + </File> + + <File + Id="COPYING" + Name="COPYING" + DiskId="1" + Source="COPYING"/> + </Component> + + <Component + Id="HelperScripts" + Guid="971EA788-347E-4CDE-9899-69EEBE117BDD"> + + <File + Id="mergebat" + Name="easyhg-merge.bat" + DiskId="1" + Source="easyhg-merge.bat" + KeyPath="yes"/> + </Component> + + <Component + Id="VCLIBS" + Guid="2566C8F0-A2AD-40E9-A356-94E887CC1222"> + <File + Id="MSVCP100" + Name="MSVCP100.dll" + DiskId="1" + Source="c:\windows\system32\MSVCP100.DLL" + KeyPath="yes"/> + <File + Id="MSVCR100" + Name="MSVCR100.dll" + DiskId="1" + Source="c:\windows\system32\MSVCR100.DLL"/> + </Component> + + <Component + Id="Qt4" + Guid="04F730AC-B361-45A2-B1CC-9CEB55256117"> + <File + Id="QtCore" + Name="QtCore4.dll" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\QtCore4.dll" + KeyPath="yes"/> + <File + Id="QtGui" + Name="QtGui4.dll" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\QtGui4.dll"/> + <File + Id="QtNetwork" + Name="QtNetwork4.dll" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\QtNetwork4.dll"/> + </Component> + + <Component + Id="hg" + Guid="5BBC4080-2EDF-4616-A8CB-F96B9C942C1A"> + + <File + Id="hg" + Name="hg.exe" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\hg.exe" + KeyPath="yes"/> + <File + Id="pydll" + Name="python26.dll" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\python26.dll"/> + <File + Id="hglib" + Name="library.zip" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\library.zip"/> + <File + Id="plink" + Name="TortoisePlink.exe" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\TortoisePlink.exe"/> + </Component> + + <Component + Id="sip" + Guid="DCCE0979-A0A6-475D-B6CD-3173740593F9"> + <File + Id="sip" + Name="sip.pyd" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\sip.pyd" /> + </Component> + + <Component + Id="kdiff3" + Guid="6BA0CB20-F426-42AB-A95A-615A4FF87752"> + <File + Id="kdiff3" + Name="kdiff3.exe" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\kdiff3.exe" + KeyPath="yes"/> + </Component> + + <Directory Id="PyQt4" Name="PyQt4"> + <Component + Id="PyQt4" + Guid="5EE2BE01-3D91-44C5-869A-5E8167079AA0"> + <File + Id="init" + Name="__init__.py" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\PyQt4\__init__.py" + KeyPath="yes"/> + <File + Id="inito" + Name="__init__.pyo" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\PyQt4\__init__.pyo" /> + <File + Id="Qtpy" + Name="Qt.pyd" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\PyQt4\Qt.pyd" /> + <File + Id="QtCorepy" + Name="QtCore.pyd" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\PyQt4\QtCore.pyd" /> + <File + Id="QtGuipy" + Name="QtGui.pyd" + DiskId="1" + Source="d:\easyhg-bundle-dependencies\PyQt4\QtGui.pyd" /> + </Component> + </Directory> + + </Directory> + </Directory> + </Directory> + + <Directory Id="ProgramMenuFolder" Name="Programs"> + <Directory Id="ProgramMenuDir" Name="EasyMercurial"> + <Component Id="ProgramMenuDir" Guid="2E8BDEA0-A6E4-4607-854D-E317A23A535B"> + <RemoveFolder Id="ProgramMenuDir" On="uninstall"/> + <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes"/> + </Component> + </Directory> + </Directory> + + <Directory Id="DesktopFolder" Name="Desktop"/> + + </Directory> + + <Feature Id="Complete" Level="1"> + <ComponentRef Id="MainExecutable"/> + <ComponentRef Id="VCLIBS"/> + <ComponentRef Id="HelperScripts"/> + <ComponentRef Id="Qt4"/> + <ComponentRef Id="hg"/> + <ComponentRef Id="sip"/> + <ComponentRef Id="kdiff3"/> + <ComponentRef Id="PyQt4"/> + <ComponentRef Id="ProgramMenuDir"/> + </Feature> + + <Icon + Id="easyhg.ico" + SourceFile="easyhg.ico"/> + + </Product> +</Wix>
--- a/easyhg_en.ts Tue Feb 14 17:53:29 2012 +0000 +++ b/easyhg_en.ts Mon Mar 12 14:58:40 2012 +0000 @@ -868,7 +868,7 @@ <translation type="unfinished"></translation> </message> <message> - <source><qt><h2>EasyMercurial v%1</h2><font size=-1><p>EasyMercurial is a simple user interface for the Mercurial</a> version control system.</p><h4>Credits and Copyright</h4><p>Development carried out by Chris Cannam for SoundSoftware.ac.uk at the Centre for Digital Music, Queen Mary, University of London.</p><p>EasyMercurial is based on HgExplorer by Jari Korhonen, with thanks.</p><p style="margin-left: 2em;">Copyright &copy; 2011 Queen Mary, University of London.<br>Copyright &copy; 2010 Jari Korhonen.<br>Copyright &copy; 2011 Chris Cannam.</p><p style="margin-left: 2em;">This program requires Mercurial, by Matt Mackall and others.<br>This program uses Qt by Nokia.<br>This program uses Nuvola icons by David Vignoni.<br>This program may use KDiff3 by Joachim Eibl.<br>This program may use PyQt by River Bank Computing.<br>Packaging for Mercurial and other dependencies on Windows is derived from TortoiseHg by Steve Borho and others.</p><h4>License</h4><p>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.</p></font></source> + <source><qt><h2>EasyMercurial v%1</h2><font size=-1><p>EasyMercurial is a simple user interface for the Mercurial</a> version control system.</p><h4>Credits and Copyright</h4><p>Development carried out by Chris Cannam for SoundSoftware.ac.uk at the Centre for Digital Music, Queen Mary, University of London.</p><p>EasyMercurial is based on HgExplorer by Jari Korhonen, with thanks.</p><p style="margin-left: 2em;">Copyright &copy; 2012 Queen Mary, University of London.<br>Copyright &copy; 2010 Jari Korhonen.<br>Copyright &copy; 2012 Chris Cannam.</p><p style="margin-left: 2em;">This program requires Mercurial, by Matt Mackall and others.<br>This program uses Qt by Nokia.<br>This program uses Nuvola icons by David Vignoni.<br>This program may use KDiff3 by Joachim Eibl.<br>This program may use PyQt by River Bank Computing.<br>Packaging for Mercurial and other dependencies on Windows is derived from TortoiseHg by Steve Borho and others.</p><h4>License</h4><p>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.</p></font></source> <translation type="unfinished"></translation> </message> <message>
--- a/help/a-34.html Tue Feb 14 17:53:29 2012 +0000 +++ b/help/a-34.html Mon Mar 12 14:58:40 2012 +0000 @@ -1,57 +1,30 @@ <link rel="stylesheet" type="text/css" href="help.css"/> -<h2>How do I use the Merge window?</h2> +<h2>Every time I push some changes, I have to type my password again</h2> -<p>If you are working with other people on a project, it is likely that -at some point you'll find that more than one of you have edited the -same lines in the same file, in different ways.</p> +<p>When you push to a remote repository with an “https:" prefix on its +URL, EasyMercurial's password dialog should ask whether you want to +remember your login details.</p> -<p>When that happens and you try to merge the two versions, EasyMercurial -will pop up a merge window that looks a bit like this.</p> +<p>If you say yes, the details will be stored until EasyMercurial +exits—so you won't have to enter them if you push or pull again +while the present EasyMercurial session is running. Your password will +be stored, encrypted with a session key, in a file which is deleted +when EasyMercurial exits.</p> -<p><center><img src="images/merge50.png"></center></p> +<p><b>If this option does not appear</b></p> -<p>(This is actually a separate program, not part of EasyMercurial: it's -a merge tool called kdiff3.)</p> +<p>... and if you're using OS/X, then you need to install the PyCrypto +library before EasyMercurial will be able to store encrypted passwords +for you.</p> -<p>This looks a bit complicated, but it is there to help you pick which -of the changes from each of the two “rival” versions of the file you -want to use in your merged version.</p> +<p>Try running <code>sudo easy_install pycrypto</code> in a terminal window.</p> -<p> <b>The top middle one is <i>your current version</i>.</b> That's - the one you had before you decided to merge the other version into - it.</p> +<p><b>Not using an https repository?</b></p> -<p> <b>At top right is <i>the version you're merging</i>.</b> That's the other - rival version – the one that the other person can see in their copy - of the repository.</p> +<p>If your remote repository uses ssh or some other protocol, then +EasyMercurial won't be able to help. You might consider using ssh +public key authentication and an ssh agent—talk to the admin of your +remote repository for more details.</p> -<p> <b>At top left is <i>the common ancestor</i>.</b> That's the version that both - of you had, before you started editing it in different ways.</p> - -<p> <b>At the bottom is the output.</b></p> - -<p>Each <i>conflict</i> (a line which you have both changed in different ways) -is shown with <b>Merge Conflict</b> in the output at the bottom. To sort -out the conflicts and get the right output, you need to go through -them one by one, for each one pressing the A, B, or C button to say -whether for this line you want the top-left, top-middle, or top-right -version to “win”. (You can choose more than one, if you want both -versions of a line to appear.)</p> - -<p>Then having resolved a conflict, press the three-arrows-down toolbar -button to go to the next one – and when you've done them all, save -and exit.</p> - -<p>The most important thing to remember is that <i>whatever appears in the -bottom pane is what you'll get as a result</i>.</p> - -<p>No matter how confusing the process, just remember that if it looks -correct in the bottom pane, it will be correct when you save and -exit. You can even edit the file directly in the bottom pane if you -aren't happy with the way the merge is going.</p> - - - -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/help/a-35.html Mon Mar 12 14:58:40 2012 +0000 @@ -0,0 +1,57 @@ +<link rel="stylesheet" type="text/css" href="help.css"/> + + +<h2>How do I use the Merge window?</h2> + +<p>If you are working with other people on a project, it is likely that +at some point you'll find that more than one of you have edited the +same lines in the same file, in different ways.</p> + +<p>When that happens and you try to merge the two versions, EasyMercurial +will pop up a merge window that looks a bit like this.</p> + +<p><center><img src="images/merge50.png"></center></p> + +<p>(This is actually a separate program, not part of EasyMercurial: it's +a merge tool called kdiff3.)</p> + +<p>This looks a bit complicated, but it is there to help you pick which +of the changes from each of the two “rival” versions of the file you +want to use in your merged version.</p> + +<p> <b>The top middle one is <i>your current version</i>.</b> That's + the one you had before you decided to merge the other version into + it.</p> + +<p> <b>At top right is <i>the version you're merging</i>.</b> That's the other + rival version – the one that the other person can see in their copy + of the repository.</p> + +<p> <b>At top left is <i>the common ancestor</i>.</b> That's the version that both + of you had, before you started editing it in different ways.</p> + +<p> <b>At the bottom is the output.</b></p> + +<p>Each <i>conflict</i> (a line which you have both changed in different ways) +is shown with <b>Merge Conflict</b> in the output at the bottom. To sort +out the conflicts and get the right output, you need to go through +them one by one, for each one pressing the A, B, or C button to say +whether for this line you want the top-left, top-middle, or top-right +version to “win”. (You can choose more than one, if you want both +versions of a line to appear.)</p> + +<p>Then having resolved a conflict, press the three-arrows-down toolbar +button to go to the next one – and when you've done them all, save +and exit.</p> + +<p>The most important thing to remember is that <i>whatever appears in the +bottom pane is what you'll get as a result</i>.</p> + +<p>No matter how confusing the process, just remember that if it looks +correct in the bottom pane, it will be correct when you save and +exit. You can even edit the file directly in the bottom pane if you +aren't happy with the way the merge is going.</p> + + + +
--- a/help/topics.html Tue Feb 14 17:53:29 2012 +0000 +++ b/help/topics.html Mon Mar 12 14:58:40 2012 +0000 @@ -20,6 +20,7 @@ <p><a href="a-31.html">I want to let my colleagues pull changes directly from my local repository</a></p> <p><a href="a-32.html">I want to put my changes into a master repository shared with my colleagues</a></p> <p><a href="a-33.html">I tried to push my changes, but it told me “the remote repository may have been changed by someone else” and refused</a></p> -<p><a href="a-34.html">How do I use the Merge window?</a></p> +<p><a href="a-34.html">Every time I push some changes, I have to type my password again</a></p> +<p><a href="a-35.html">How do I use the Merge window?</a></p> <h3>See also</h3> <p><a href="a-40.html">Video tutorials</a></p>
--- a/help/topics/34.txt Tue Feb 14 17:53:29 2012 +0000 +++ b/help/topics/34.txt Mon Mar 12 14:58:40 2012 +0000 @@ -1,56 +1,28 @@ {Sharing changes} -How do I use the Merge window? +Every time I push some changes, I have to type my password again -If you are working with other people on a project, it is likely that -at some point you'll find that more than one of you have edited the -same lines in the same file, in different ways. +When you push to a remote repository with an "https:" prefix on its +URL, EasyMercurial's password dialog should ask whether you want to +remember your login details. -When that happens and you try to merge the two versions, EasyMercurial -will pop up a merge window that looks a bit like this. +If you say yes, the details will be stored until EasyMercurial +exits---so you won't have to enter them if you push or pull again +while the present EasyMercurial session is running. Your password will +be stored, encrypted with a session key, in a file which is deleted +when EasyMercurial exits. -#merge50 +*If this option does not appear* -(This is actually a separate program, not part of EasyMercurial: it's -a merge tool called kdiff3.) +... and if you're using OS/X, then you need to install the PyCrypto +library before EasyMercurial will be able to store encrypted passwords +for you. -This looks a bit complicated, but it is there to help you pick which -of the changes from each of the two "rival" versions of the file you -want to use in your merged version. +Try running @sudo easy_install pycrypto@ in a terminal window. - *The top middle one is _your current version_.* That's - the one you had before you decided to merge the other version into - it. +*Not using an https repository?* - *At top right is _the version you're merging_.* That's the other - rival version -- the one that the other person can see in their copy - of the repository. - - *At top left is _the common ancestor_.* That's the version that both - of you had, before you started editing it in different ways. - - *At the bottom is the output.* - -Each _conflict_ (a line which you have both changed in different ways) -is shown with *Merge Conflict* in the output at the bottom. To sort -out the conflicts and get the right output, you need to go through -them one by one, for each one pressing the A, B, or C button to say -whether for this line you want the top-left, top-middle, or top-right -version to "win". (You can choose more than one, if you want both -versions of a line to appear.) - -Then having resolved a conflict, press the three-arrows-down toolbar -button to go to the next one -- and when you've done them all, save -and exit. - -The most important thing to remember is that _whatever appears in the -bottom pane is what you'll get as a result_. - -No matter how confusing the process, just remember that if it looks -correct in the bottom pane, it will be correct when you save and -exit. You can even edit the file directly in the bottom pane if you -aren't happy with the way the merge is going. - - - - +If your remote repository uses ssh or some other protocol, then +EasyMercurial won't be able to help. You might consider using ssh +public key authentication and an ssh agent---talk to the admin of your +remote repository for more details.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/help/topics/35.txt Mon Mar 12 14:58:40 2012 +0000 @@ -0,0 +1,56 @@ +{Sharing changes} + +How do I use the Merge window? + +If you are working with other people on a project, it is likely that +at some point you'll find that more than one of you have edited the +same lines in the same file, in different ways. + +When that happens and you try to merge the two versions, EasyMercurial +will pop up a merge window that looks a bit like this. + +#merge50 + +(This is actually a separate program, not part of EasyMercurial: it's +a merge tool called kdiff3.) + +This looks a bit complicated, but it is there to help you pick which +of the changes from each of the two "rival" versions of the file you +want to use in your merged version. + + *The top middle one is _your current version_.* That's + the one you had before you decided to merge the other version into + it. + + *At top right is _the version you're merging_.* That's the other + rival version -- the one that the other person can see in their copy + of the repository. + + *At top left is _the common ancestor_.* That's the version that both + of you had, before you started editing it in different ways. + + *At the bottom is the output.* + +Each _conflict_ (a line which you have both changed in different ways) +is shown with *Merge Conflict* in the output at the bottom. To sort +out the conflicts and get the right output, you need to go through +them one by one, for each one pressing the A, B, or C button to say +whether for this line you want the top-left, top-middle, or top-right +version to "win". (You can choose more than one, if you want both +versions of a line to appear.) + +Then having resolved a conflict, press the three-arrows-down toolbar +button to go to the next one -- and when you've done them all, save +and exit. + +The most important thing to remember is that _whatever appears in the +bottom pane is what you'll get as a result_. + +No matter how confusing the process, just remember that if it looks +correct in the bottom pane, it will be correct when you save and +exit. You can even edit the file directly in the bottom pane if you +aren't happy with the way the merge is going. + + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/help/topics/40.txt Mon Mar 12 14:58:40 2012 +0000 @@ -0,0 +1,8 @@ +{See also} + +Video tutorials + +There are some very simple video tutorials available on the EasyMercurial website. + +Please see [[http://easyhg.org/videos.html]]. +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/images/easyhg-icon.svg Mon Mar 12 14:58:40 2012 +0000 @@ -0,0 +1,140 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="64px" + height="64px" + id="svg2985" + version="1.1" + inkscape:version="0.48.3.1 r9886" + sodipodi:docname="test-new-icon.svg" + inkscape:export-filename="/work/easyhg/test-new-icon-256.png" + inkscape:export-xdpi="360" + inkscape:export-ydpi="360"> + <defs + id="defs2987"> + <linearGradient + id="linearGradient3793"> + <stop + id="stop3795" + offset="0" + style="stop-color:#b4b4b4;stop-opacity:1;" /> + <stop + id="stop3797" + offset="1" + style="stop-color:#ffffff;stop-opacity:1;" /> + </linearGradient> + <linearGradient + id="linearGradient3785"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop3787" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop3789" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient3793" + id="linearGradient3791" + x1="12.287697" + y1="34.172951" + x2="51.994736" + y2="34.172951" + gradientUnits="userSpaceOnUse" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="7.7781746" + inkscape:cx="32.570025" + inkscape:cy="32.596202" + inkscape:current-layer="layer1" + showgrid="true" + inkscape:document-units="px" + inkscape:grid-bbox="true" + inkscape:snap-global="true" + inkscape:window-width="1030" + inkscape:window-height="759" + inkscape:window-x="775" + inkscape:window-y="345" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid2997" + empspacing="2" + visible="true" + enabled="true" + snapvisiblegridlinesonly="false" + dotted="false" /> + </sodipodi:namedview> + <metadata + id="metadata2990"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer"> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.08466768;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="path2995" + sodipodi:cx="32.141216" + sodipodi:cy="34.172951" + sodipodi:rx="19.156166" + sodipodi:ry="19.284731" + d="m 51.297382,34.172951 a 19.156166,19.284731 0 1 1 -38.312332,0 19.156166,19.284731 0 1 1 38.312332,0 z" + transform="matrix(1.017949,0,0,1.0111627,-2.2181191,1.4455869)" /> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient3791);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.01503563;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="path2995-1" + sodipodi:cx="32.141216" + sodipodi:cy="34.172951" + sodipodi:rx="19.156166" + sodipodi:ry="19.284731" + d="m 51.297382,34.172951 a 19.156166,19.284731 0 1 1 -38.312332,0 19.156166,19.284731 0 1 1 38.312332,0 z" + transform="matrix(0,0.80913895,-0.80374471,0,57.778828,9.9932907)" /> + <path + sodipodi:type="star" + style="fill:#acacac;fill-opacity:1;stroke:#000000;stroke-width:1.60000002;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + id="path3805" + sodipodi:sides="5" + sodipodi:cx="36" + sodipodi:cy="6" + sodipodi:r1="10.630146" + sodipodi:r2="4.3201118" + sodipodi:arg1="0.85196633" + sodipodi:arg2="1.4802849" + inkscape:flatsided="false" + inkscape:rounded="0" + inkscape:randomized="0" + d="m 43,14 -6.609514,-3.697572 -5.835819,4.827104 1.474148,-7.4286344 -6.394216,-4.0585369 7.520588,-0.8935761 1.883976,-7.3354175 3.173831,6.8763737 7.558577,-0.4750005 -5.559052,5.1434088 z" + inkscape:transform-center-x="-0.073740988" + inkscape:transform-center-y="-0.94470063" + transform="matrix(0.99362658,0.11272187,-0.11272187,0.99362658,12.137363,6.1314664)" /> + </g> +</svg>
--- a/src/annotatedialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/annotatedialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/annotatedialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/annotatedialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/changeset.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changeset.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/changeset.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changeset.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/changesetdetailitem.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changesetdetailitem.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/changesetdetailitem.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changesetdetailitem.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/changesetitem.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changesetitem.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -38,7 +38,7 @@ ChangesetItem::ChangesetItem(Changeset *cs) : m_changeset(cs), m_detail(0), m_showBranch(false), m_column(0), m_row(0), m_wide(false), - m_current(false), m_closing(false), m_new(false) + m_current(false), m_closing(false), m_new(false), m_searchMatches(false) { m_font = QFont(); m_font.setPixelSize(11); @@ -91,6 +91,22 @@ emit detailHidden(); } +bool +ChangesetItem::matchSearchText(QString text) +{ + m_searchText = text; + m_searchMatches = false; + if (m_showBranch) { + m_searchMatches = (m_changeset->branch().contains + (text, Qt::CaseInsensitive)); + } + if (!m_searchMatches) { + m_searchMatches = (m_changeset->comment().contains + (text, Qt::CaseInsensitive)); + } + return m_searchMatches; +} + void ChangesetItem::mousePressEvent(QGraphicsSceneMouseEvent *e) { @@ -296,6 +312,17 @@ bool showText = (scale >= 0.2); bool showProperLines = (scale >= 0.1); + if (m_searchText != "") { + if (m_searchMatches) { + userColour = QColor("#008400"); + showProperLines = true; + showText = true; + } else { + branchColour = Qt::gray; + userColour = Qt::gray; + } + } + if (!showProperLines) { paint->setPen(QPen(branchColour, 0)); } else { @@ -452,6 +479,8 @@ paint->setFont(f); + if (m_searchMatches) paint->setPen(userColour); + for (int i = 0; i < lines.size(); ++i) { paint->drawText(x0 + 3, i * fh + fh + fm.ascent(), lines[i].trimmed()); }
--- a/src/changesetitem.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changesetitem.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -65,6 +65,8 @@ bool showBranch() const { return m_showBranch; } void setShowBranch(bool s) { m_showBranch = s; } + bool matchSearchText(QString text); // return true and records the match if it matches + signals: void detailShown(); void detailHidden(); @@ -110,6 +112,8 @@ bool m_current; bool m_closing; bool m_new; + QString m_searchText; + bool m_searchMatches; QMap<QAction *, QString> m_parentDiffActions; QMap<QAction *, QString> m_summaryActions;
--- a/src/changesetscene.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changesetscene.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/changesetscene.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changesetscene.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/changesetview.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changesetview.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/changesetview.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/changesetview.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/clickablelabel.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/clickablelabel.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/colourset.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/colourset.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/colourset.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/colourset.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/common.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/common.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/common.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/common.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/confirmcommentdialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/confirmcommentdialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/confirmcommentdialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/confirmcommentdialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/connectionitem.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/connectionitem.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/connectionitem.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/connectionitem.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/debug.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/debug.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/debug.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/debug.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/filestates.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/filestates.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/filestates.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/filestates.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/filestatuswidget.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/filestatuswidget.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -18,6 +18,7 @@ #include "filestatuswidget.h" #include "debug.h" #include "multichoicedialog.h" +#include "findwidget.h" #include <QLabel> #include <QListWidget> @@ -154,9 +155,19 @@ layout->addItem(new QSpacerItem(8, 8), ++row, 0); - m_showAllFiles = new QCheckBox(tr("Show all files"), this); + QWidget *opts = new QWidget; + QGridLayout *optLayout = new QGridLayout(opts); + optLayout->setMargin(0); + layout->addWidget(opts, ++row, 0); + + m_findWidget = new FindWidget(this); + optLayout->addWidget(m_findWidget, 0, 0, Qt::AlignLeft); + connect(m_findWidget, SIGNAL(findTextChanged(QString)), + this, SLOT(setSearchText(QString))); + + m_showAllFiles = new QCheckBox(tr("Show all file states"), this); m_showAllFiles->setEnabled(false); - layout->addWidget(m_showAllFiles, ++row, 0, Qt::AlignLeft); + optLayout->addWidget(m_showAllFiles, 0, 1, Qt::AlignRight); QSettings settings; m_showAllFiles->setChecked(settings.value("showall", false).toBool()); @@ -209,7 +220,16 @@ { QSettings settings; settings.beginGroup("Presentation"); - if (settings.value("showhelpfultext", true).toBool()) { + + if (m_searchText != "") { + if (!m_showAllFiles->isChecked()) { + m_noModificationsLabel->setText + (tr("<qt><b>Nothing found</b><br>None of the modified files have matching filenames.<br>Select <b>Show all file states</b> to find matches among unmodified and untracked files as well.</qt>")); + } else { + m_noModificationsLabel->setText + (tr("<qt><b>Nothing found</b><br>No files have matching filenames.</qt>")); + } + } else if (settings.value("showhelpfultext", true).toBool()) { m_noModificationsLabel->setText (tr("<qt>This area will list files in your working folder that you have changed.<br><br>At the moment you have no uncommitted changes.<br><br>To see changes previously made to the repository,<br>switch to the History tab.<br><br>%1</qt>") #if defined Q_OS_MAC @@ -413,6 +433,14 @@ } void +FileStatusWidget::setSearchText(QString text) +{ + if (m_searchText == text) return; + m_searchText = text; + updateWidgets(); +} + +void FileStatusWidget::updateWidgets() { QDateTime lastInteractionTime; @@ -425,6 +453,7 @@ foreach (QString f, m_selectedFiles) selectedFiles.insert(f); int visibleCount = 0; + bool finding = (m_searchText != ""); foreach (FileStates::State s, m_stateListMap.keys()) { @@ -437,11 +466,22 @@ } QStringList files = m_fileStates.filesInState(s); + bool foundSomething = false; QStringList highPriority, lowPriority; foreach (QString file, files) { + if (finding) { + if (file.contains(m_searchText, Qt::CaseInsensitive)) { + highPriority.push_back(file); + foundSomething = true; + } + continue; + } else { + foundSomething = true; + } + bool highlighted = false; if (s == FileStates::Unknown) { @@ -467,7 +507,11 @@ foreach (QString file, highPriority) { QListWidgetItem *item = new QListWidgetItem(file); w->addItem(item); - item->setForeground(QColor("#d40000")); + if (finding) { + item->setForeground(QColor("#008400")); + } else { + item->setForeground(QColor("#d40000")); + } item->setSelected(selectedFiles.contains(file)); } @@ -479,7 +523,7 @@ setLabelFor(w, s, !highPriority.empty()); - if (files.empty()) { + if (!foundSomething) { w->parentWidget()->hide(); } else { w->parentWidget()->show();
--- a/src/filestatuswidget.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/filestatuswidget.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -29,6 +29,7 @@ class QPushButton; class QFileInfo; class QCheckBox; +class FindWidget; class FileStatusWidget : public QWidget { @@ -78,6 +79,8 @@ void clearSelections(); void updateWidgets(); + void setSearchText(QString text); + private slots: void menuActionActivated(); void itemSelectionChanged(); @@ -87,6 +90,7 @@ QString m_localPath; QLabel *m_noModificationsLabel; + FindWidget *m_findWidget; QCheckBox *m_showAllFiles; FileStates m_fileStates; @@ -104,6 +108,8 @@ QList<QWidget *> m_boxes; QWidget *m_boxesParent; + QString m_searchText; + void layoutBoxesGridly(int count); void layoutBoxesLinearly(); void setNoModificationsLabelText();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/findwidget.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -0,0 +1,76 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + EasyMercurial + + Based on HgExplorer by Jari Korhonen + Copyright (c) 2010 Jari Korhonen + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London + + 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. +*/ + +#include "findwidget.h" + +#include <QGridLayout> +#include <QLabel> +#include <QLineEdit> +#include <QToolButton> + +FindWidget::FindWidget(QWidget *parent) : + QWidget(parent) +{ + QGridLayout *layout = new QGridLayout; + layout->setMargin(0); + setLayout(layout); + + QToolButton *button = new QToolButton(); + layout->addWidget(button, 0, 0); + button->setText(tr("Find...")); + button->setToolButtonStyle(Qt::ToolButtonTextOnly); + connect(button, SIGNAL(clicked()), this, SLOT(buttonPressed())); + + m_lineEdit = new QLineEdit(); + layout->addWidget(m_lineEdit, 0, 1); + + m_lineEdit->setFixedWidth(100); + m_lineEdit->hide(); + + int h = m_lineEdit->sizeHint().height(); + int h0 = button->sizeHint().height(); + if (h > h0) button->setFixedHeight(h); + + connect(m_lineEdit, SIGNAL(textChanged(const QString &)), + this, SIGNAL(findTextChanged(QString))); +} + +FindWidget::~FindWidget() +{ +} + +void +FindWidget::buttonPressed() +{ + QAbstractButton *button = qobject_cast<QAbstractButton *>(sender()); + if (!button) return; + if (m_lineEdit->isVisible()) { + m_lineEdit->hide(); + button->setText(tr("Find...")); + if (m_lineEdit->text() != "") { + emit findTextChanged(""); + } + } else { + m_lineEdit->show(); + m_lineEdit->setFocus(Qt::OtherFocusReason); + button->setText(tr("Find:")); + if (m_lineEdit->text() != "") { + emit findTextChanged(m_lineEdit->text()); + } + } +} +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/findwidget.h Mon Mar 12 14:58:40 2012 +0000 @@ -0,0 +1,43 @@ +/* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ + +/* + EasyMercurial + + Based on HgExplorer by Jari Korhonen + Copyright (c) 2010 Jari Korhonen + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London + + 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. +*/ + +#ifndef FINDWIDGET_H +#define FINDWIDGET_H + +#include <QWidget> + +class QLineEdit; + +class FindWidget : public QWidget +{ + Q_OBJECT + +public: + FindWidget(QWidget *parent = 0); + ~FindWidget(); + +signals: + void findTextChanged(QString); + +private slots: + void buttonPressed(); + +private: + QLineEdit *m_lineEdit; +}; + +#endif
--- a/src/fswatcher.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/fswatcher.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -23,7 +23,7 @@ #include <deque> -#define DEBUG_FSWATCHER 1 +//#define DEBUG_FSWATCHER 1 /* * Watching the filesystem is trickier than it seems at first glance. @@ -66,8 +66,13 @@ { QMutexLocker locker(&m_mutex); if (m_workDirPath == path) return; - m_watcher.removePaths(m_watcher.directories()); - m_watcher.removePaths(m_watcher.files()); + // annoyingly, removePaths prints a warning if given an empty list + if (!m_watcher.directories().empty()) { + m_watcher.removePaths(m_watcher.directories()); + } + if (!m_watcher.files().empty()) { + m_watcher.removePaths(m_watcher.files()); + } m_workDirPath = path; addWorkDirectory(path); debugPrint(); @@ -212,7 +217,9 @@ // watching the file explicitly, i.e. the file is in the // tracked file paths list. So we never want to ignore them +#ifdef DEBUG_FSWATCHER std::cerr << "FsWatcher: Tracked file " << path << " has changed" << std::endl; +#endif size_t counter = ++m_lastCounter; m_changes[path] = counter; @@ -228,13 +235,17 @@ QString fn(fi.fileName()); foreach (QString pfx, m_ignoredPrefixes) { if (fn.startsWith(pfx)) { +#ifdef DEBUG_FSWATCHER std::cerr << "(ignoring: " << path << ")" << std::endl; +#endif return true; } } foreach (QString sfx, m_ignoredSuffixes) { if (fn.endsWith(sfx)) { +#ifdef DEBUG_FSWATCHER std::cerr << "(ignoring: " << path << ")" << std::endl; +#endif return true; } }
--- a/src/fswatcher.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/fswatcher.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/grapher.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/grapher.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/grapher.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/grapher.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/hgaction.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/hgaction.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -118,6 +118,20 @@ return false; } } + + bool makesSenseToCancel() const { + switch (action) { + case ACT_INCOMING: + case ACT_PUSH: + case ACT_PULL: + case ACT_CLONEFROMREMOTE: + case ACT_FOLDERDIFF: + case ACT_CHGSETDIFF: + return true; + default: + return false; + } + } }; #endif
--- a/src/hgignoredialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/hgignoredialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/hgignoredialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/hgignoredialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/hgrunner.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/hgrunner.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -20,16 +20,14 @@ #include "debug.h" #include "settingsdialog.h" -#include <QPushButton> -#include <QListWidget> -#include <QDialog> -#include <QLabel> -#include <QVBoxLayout> #include <QSettings> #include <QInputDialog> #include <QDesktopServices> #include <QTemporaryFile> #include <QDir> +#include <QProgressBar> +#include <QPushButton> +#include <QGridLayout> #include <iostream> #include <errno.h> @@ -44,10 +42,24 @@ #include <process.h> #endif -HgRunner::HgRunner(QString myDirPath, QWidget * parent) : - QProgressBar(parent), +HgRunner::HgRunner(QString myDirPath, QWidget *parent) : + QWidget(parent), m_myDirPath(myDirPath) { + QGridLayout *layout = new QGridLayout(this); + layout->setMargin(0); + + m_progress = new QProgressBar; + layout->addWidget(m_progress, 0, 0); + + m_cancel = new QPushButton; + m_cancel->setIcon(QIcon(":images/cancel-small.png")); + m_cancel->setFlat(true); + m_cancel->setFixedHeight(m_progress->sizeHint().height()); + m_cancel->setFixedWidth(m_progress->sizeHint().height()); + connect(m_cancel, SIGNAL(clicked()), this, SLOT(killCurrentActions())); + layout->addWidget(m_cancel, 0, 1); + m_proc = 0; // Always unbundle the extension: even if it already exists (in @@ -59,8 +71,8 @@ // unbundling failed unbundleExtension(); - setTextVisible(false); - setVisible(false); + m_progress->setTextVisible(false); + hide(); m_isRunning = false; } @@ -328,9 +340,9 @@ void HgRunner::finished(int procExitCode, QProcess::ExitStatus procExitStatus) { - if (!m_proc) return; + if (!m_proc) return; - // Save the current action and reset m_currentAction before we + // Save the current action and reset m_currentAction before we // emit a signal to mark the completion; otherwise we may be // resetting the action after a slot has already tried to set it // to something else to start a new action @@ -366,8 +378,10 @@ void HgRunner::killCurrentActions() { + HgAction current = m_currentAction; m_queue.clear(); killCurrentCommand(); + emit commandCancelled(current); } void HgRunner::killCurrentCommand() @@ -524,8 +538,11 @@ } m_isRunning = true; - setRange(0, 0); - if (!action.shouldBeFast()) show(); + m_progress->setRange(0, 0); + if (!action.shouldBeFast()) { + show(); + m_cancel->setVisible(action.makesSenseToCancel()); + } m_stdout.clear(); m_stderr.clear(); m_realm = "";
--- a/src/hgrunner.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/hgrunner.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -20,22 +20,24 @@ #include "hgaction.h" -#include <QProgressBar> +#include <QWidget> #include <QProcess> -#include <QByteArray> -#include <QRect> -#include <QFile> + +class QProgressBar; +class QPushButton; +class QFile; #include <deque> -class HgRunner : public QProgressBar +class HgRunner : public QWidget { Q_OBJECT public: - HgRunner(QString myDirPath, QWidget * parent = 0); + HgRunner(QString myDirPath, QWidget *parent = 0); ~HgRunner(); +public slots: void requestAction(HgAction action); void killCurrentActions(); // kill anything running; clear the queue @@ -44,6 +46,13 @@ void commandCompleted(HgAction action, QString stdOut); void commandFailed(HgAction action, QString stdErr, QString stdOut); + /** + * Emitted when the currently executing command is cancelled. Note + * that this clears the queue completely, so all subsequent + * commands are also discarded. + */ + void commandCancelled(HgAction action); + private slots: void started(); void error(QProcess::ProcessError); @@ -78,6 +87,9 @@ QString getUnbundledFileName(); QString unbundleExtension(); + QProgressBar *m_progress; + QPushButton *m_cancel; + QStringList addExtensionOptions(QStringList); int m_ptyMasterFd;
--- a/src/hgtabwidget.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/hgtabwidget.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -154,6 +154,12 @@ m_historyWidget->update(); } +void HgTabWidget::setSearchText(QString text) +{ + m_fileStatusWidget->setSearchText(text); + m_historyWidget->setSearchText(text); +} + bool HgTabWidget::canDiff() const { return canRevert();
--- a/src/hgtabwidget.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/hgtabwidget.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -113,6 +113,8 @@ void showWorkTab(); void showHistoryTab(); + void setSearchText(QString text); + private: FileStatusWidget *m_fileStatusWidget; HistoryWidget *m_historyWidget;
--- a/src/historywidget.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/historywidget.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -23,6 +23,7 @@ #include "grapher.h" #include "debug.h" #include "uncommitteditem.h" +#include "findwidget.h" #include <iostream> @@ -55,11 +56,21 @@ settings.beginGroup("Presentation"); bool showClosed = (settings.value("showclosedbranches", false).toBool()); + QWidget *opts = new QWidget; + QGridLayout *optLayout = new QGridLayout(opts); + optLayout->setMargin(0); + layout->addWidget(opts, ++row, 0, 1, 2); + + m_findWidget = new FindWidget(this); + optLayout->addWidget(m_findWidget, 0, 0, Qt::AlignLeft); + connect(m_findWidget, SIGNAL(findTextChanged(QString)), + this, SLOT(setSearchText(QString))); + m_showClosedBranches = new QCheckBox(tr("Show closed branches"), this); m_showClosedBranches->setChecked(showClosed); connect(m_showClosedBranches, SIGNAL(toggled(bool)), this, SLOT(showClosedChanged(bool))); - layout->addWidget(m_showClosedBranches, ++row, 0, Qt::AlignLeft); + optLayout->addWidget(m_showClosedBranches, 0, 1, Qt::AlignRight); m_showClosedBranches->hide(); setLayout(layout); @@ -241,6 +252,9 @@ toFocus->ensureVisible(); } + if (m_searchText != "") { + updateSearchStatus(); + } connectSceneSignals(); } @@ -294,6 +308,38 @@ } } +void HistoryWidget::setSearchText(QString text) +{ + if (m_searchText == text) return; + m_searchText = text; + updateSearchStatus(); +} + +void HistoryWidget::updateSearchStatus() +{ + QGraphicsScene *scene = m_panned->scene(); + if (!scene) return; + + ChangesetItem *toFocus = 0; + + QList<QGraphicsItem *> items = scene->items(); + foreach (QGraphicsItem *it, items) { + + ChangesetItem *csit = dynamic_cast<ChangesetItem *>(it); + if (!csit) continue; + + bool matched = csit->matchSearchText(m_searchText); + if (matched && (!toFocus || csit->row() < toFocus->row())) { + toFocus = csit; + } + csit->update(); + } + + if (toFocus) { + toFocus->ensureVisible(); + } +} + void HistoryWidget::connectSceneSignals() { ChangesetScene *scene = qobject_cast<ChangesetScene *>(m_panned->scene());
--- a/src/historywidget.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/historywidget.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -28,6 +28,7 @@ class Panner; class UncommittedItem; class QGraphicsScene; +class FindWidget; class HistoryWidget : public QWidget { @@ -68,6 +69,9 @@ private slots: void showClosedChanged(bool); + +public slots: + void setSearchText(QString); private: Changesets m_changesets; @@ -78,10 +82,13 @@ bool m_showUncommitted; bool m_refreshNeeded; + FindWidget *m_findWidget; Panned *m_panned; Panner *m_panner; QCheckBox *m_showClosedBranches; + QString m_searchText; + QGraphicsScene *scene(); void clearChangesets(); void replaceChangesets(Changesets); @@ -90,6 +97,7 @@ void setChangesetParents(); void updateNewAndCurrentItems(); void connectSceneSignals(); + void updateSearchStatus(); }; #endif
--- a/src/incomingdialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/incomingdialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/incomingdialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/incomingdialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/logparser.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/logparser.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/logparser.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/logparser.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/main.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/main.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/mainwindow.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/mainwindow.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -85,6 +85,8 @@ this, SLOT(commandCompleted(HgAction, QString))); connect(m_runner, SIGNAL(commandFailed(HgAction, QString, QString)), this, SLOT(commandFailed(HgAction, QString, QString))); + connect(m_runner, SIGNAL(commandCancelled(HgAction)), + this, SLOT(commandCancelled(HgAction))); statusBar()->addPermanentWidget(m_runner); setWindowTitle(tr("EasyMercurial")); @@ -112,7 +114,7 @@ m_hgTabs = new HgTabWidget(central, m_workFolderPath); connectTabsSignals(); - cl->addWidget(m_hgTabs, row++, 0); + cl->addWidget(m_hgTabs, row++, 0, 1, 2); connect(m_hgTabs, SIGNAL(selectionChanged()), this, SLOT(enableDisableActions())); @@ -153,6 +155,11 @@ } +void MainWindow::resizeEvent(QResizeEvent *) +{ +} + + QString MainWindow::getUserInfo() const { QSettings settings; @@ -187,9 +194,9 @@ "<p>EasyMercurial is based on HgExplorer by " "Jari Korhonen, with thanks.</p>" "<p style=\"margin-left: 2em;\">" - "Copyright © 2011 Queen Mary, University of London.<br>" + "Copyright © 2012 Queen Mary, University of London.<br>" "Copyright © 2010 Jari Korhonen.<br>" - "Copyright © 2011 Chris Cannam." + "Copyright © 2012 Chris Cannam." "</p>" "<p style=\"margin-left: 2em;\">" "This program requires Mercurial, by Matt Mackall and others.<br>" @@ -282,6 +289,8 @@ path = s.value("default").toString(); } +// std::cerr << "hgQueryPaths: setting m_remoteRepoPath to " << m_remoteRepoPath << " from file " << hgrc.absoluteFilePath() << std::endl; + m_remoteRepoPath = path; // We have to do this here, because commandCompleted won't be called @@ -1484,7 +1493,8 @@ d->addChoice("remote", tr("<qt><center><img src=\":images/browser-64.png\"><br>Remote repository</center></qt>"), explanation, - MultiChoiceDialog::UrlArg); + MultiChoiceDialog::UrlArg, + true); // default empty if (d->exec() == QDialog::Accepted) { @@ -1779,6 +1789,7 @@ if (status == FolderHasRepo) { if (!askToOpenInsteadOfInit(local)) return false; + return openLocal(local); } if (containing != "") { @@ -1831,8 +1842,8 @@ hgRefresh(); return; } + updateFsWatcher(); } - updateFsWatcher(); } QString MainWindow::format1(QString head) @@ -2519,6 +2530,19 @@ } } +void MainWindow::commandCancelled(HgAction cancelledAction) +{ + // Originally I had this checking whether the cancelled action was + // a network one and, if so, calling hgQueryPaths to update the + // local view in case it had changed anything. But that doesn't + // work properly -- because at this point, although the command + // has been cancelled and a kill signal sent, it hasn't actually + // exited yet. If we request another command now, it will go on + // the stack and be associated with the failed exit forthcoming + // from the cancelled command -- giving the user a disturbing + // command-failed dialog +} + void MainWindow::connectActions() { connect(m_exitAct, SIGNAL(triggered()), this, SLOT(close())); @@ -3007,8 +3031,13 @@ int sz = 32; bool spacingReqd = false; + QString spacer = ""; #ifndef Q_OS_MAC spacingReqd = true; + spacer = " "; +#ifdef Q_OS_WIN32 + spacer = " "; +#endif #endif m_workFolderToolBar = addToolBar(tr("Work")); @@ -3032,9 +3061,13 @@ m_repoToolBar = addToolBar(tr("Remote")); m_repoToolBar->setIconSize(QSize(sz, sz)); - if (spacingReqd) m_repoToolBar->addWidget(new QLabel(" ")); + if (spacingReqd) { + m_repoToolBar->addWidget(new QLabel(spacer)); + } m_repoToolBar->addAction(m_openAct); - if (spacingReqd) m_repoToolBar->addWidget(new QLabel(" ")); + if (spacingReqd) { + m_repoToolBar->addWidget(new QLabel(spacer)); + } m_repoToolBar->addSeparator(); m_repoToolBar->addAction(m_hgIncomingAct); m_repoToolBar->addAction(m_hgPullAct); @@ -3077,10 +3110,8 @@ QSettings settings; - m_remoteRepoPath = settings.value("remoterepopath", "").toString(); m_workFolderPath = settings.value("workfolderpath", "").toString(); - if (!workFolder.exists(m_workFolderPath)) - { + if (!workFolder.exists(m_workFolderPath)) { m_workFolderPath = ""; }
--- a/src/mainwindow.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/mainwindow.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -46,6 +46,7 @@ protected: void closeEvent(QCloseEvent *event); + void resizeEvent(QResizeEvent *event); public slots: void open(QString local); @@ -53,6 +54,7 @@ void commandStarting(HgAction); void commandCompleted(HgAction action, QString stdOut); void commandFailed(HgAction action, QString stdErr, QString stdOut); + void commandCancelled(HgAction action); void enableDisableActions(); private slots:
--- a/src/moreinformationdialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/moreinformationdialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/moreinformationdialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/moreinformationdialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/multichoicedialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/multichoicedialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -136,13 +136,15 @@ void MultiChoiceDialog::addChoice(QString id, QString text, - QString description, ArgType arg) + QString description, ArgType arg, + bool defaultEmpty) { bool first = (m_texts.empty()); m_texts[id] = text; m_descriptions[id] = description; m_argTypes[id] = arg; + m_defaultEmpty[id] = defaultEmpty; if (arg != NoArg) { m_recentFiles[id] = QSharedPointer<RecentFiles> @@ -263,7 +265,9 @@ void MultiChoiceDialog::updateOkButton() { - if (m_argTypes[m_currentChoice] == UrlToDirectoryArg) { + if (m_defaultEmpty[m_currentChoice]) { + m_okButton->setEnabled(true); + } else if (m_argTypes[m_currentChoice] == UrlToDirectoryArg) { m_okButton->setEnabled(getArgument() != "" && getAdditionalArgument() != ""); } else { @@ -326,6 +330,7 @@ m_fileLabel->show(); m_fileCombo->show(); m_fileCombo->addItems(rf->getRecent()); + if (m_defaultEmpty[id]) m_fileCombo->lineEdit()->setText(""); m_browseButton->show(); break; @@ -334,6 +339,7 @@ m_fileLabel->show(); m_fileCombo->show(); m_fileCombo->addItems(rf->getRecent()); + if (m_defaultEmpty[id]) m_fileCombo->lineEdit()->setText(""); m_browseButton->show(); break; @@ -341,12 +347,14 @@ m_urlLabel->show(); m_urlCombo->show(); m_urlCombo->addItems(rf->getRecent()); + if (m_defaultEmpty[id]) m_urlCombo->lineEdit()->setText(""); break; case UrlToDirectoryArg: m_urlLabel->show(); m_urlCombo->show(); m_urlCombo->addItems(rf->getRecent()); + if (m_defaultEmpty[id]) m_urlCombo->lineEdit()->setText(""); m_fileLabel->setText(tr("&Folder:")); m_fileLabel->show(); m_fileCombo->show();
--- a/src/multichoicedialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/multichoicedialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -48,7 +48,8 @@ }; void addChoice(QString identifier, QString text, - QString description, ArgType arg); + QString description, ArgType arg, + bool defaultEmpty = false); void setCurrentChoice(QString); QString getCurrentChoice(); @@ -71,6 +72,7 @@ QMap<QString, QString> m_texts; QMap<QString, QString> m_descriptions; QMap<QString, ArgType> m_argTypes; + QMap<QString, bool> m_defaultEmpty; QMap<QString, QSharedPointer<RecentFiles> > m_recentFiles; QString m_currentChoice;
--- a/src/panned.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/panned.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/panned.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/panned.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/panner.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/panner.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/panner.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/panner.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/recentfiles.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/recentfiles.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/recentfiles.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/recentfiles.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/repositorydialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/repositorydialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/repositorydialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/repositorydialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/selectablelabel.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/selectablelabel.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/selectablelabel.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/selectablelabel.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/settingsdialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/settingsdialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/settingsdialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/settingsdialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/squeezedlabel.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/squeezedlabel.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -17,7 +17,7 @@ /* This file adapted from Rosegarden, a sequencer and musical - notation editor. Copyright 2000-2011 the Rosegarden development + notation editor. Copyright 2000-2012 the Rosegarden development team. Adapted from KDE 4.2.0, this code originally Copyright (c) 2000
--- a/src/squeezedlabel.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/squeezedlabel.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -17,7 +17,7 @@ /* This file adapted from Rosegarden, a sequencer and musical - notation editor. Copyright 2000-2011 the Rosegarden development + notation editor. Copyright 2000-2012 the Rosegarden development team. Adapted from KDE 4.2.0, this code originally Copyright (c) 2000
--- a/src/startupdialog.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/startupdialog.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/startupdialog.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/startupdialog.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/textabbrev.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/textabbrev.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/textabbrev.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/textabbrev.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/uncommitteditem.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/uncommitteditem.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/uncommitteditem.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/uncommitteditem.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/version.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/version.h Mon Mar 12 14:58:40 2012 +0000 @@ -1,1 +1,1 @@ -#define EASYHG_VERSION "1.1" +#define EASYHG_VERSION "1.2"
--- a/src/versiontester.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/versiontester.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/versiontester.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/versiontester.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on hgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/workstatuswidget.cpp Tue Feb 14 17:53:29 2012 +0000 +++ b/src/workstatuswidget.cpp Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
--- a/src/workstatuswidget.h Tue Feb 14 17:53:29 2012 +0000 +++ b/src/workstatuswidget.h Mon Mar 12 14:58:40 2012 +0000 @@ -5,8 +5,8 @@ Based on HgExplorer by Jari Korhonen Copyright (c) 2010 Jari Korhonen - Copyright (c) 2011 Chris Cannam - Copyright (c) 2011 Queen Mary, University of London + Copyright (c) 2012 Chris Cannam + Copyright (c) 2012 Queen Mary, University of London This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as