Continued implementing support for the Mercurial Shelve extension.

Sat, 22 Feb 2014 19:57:46 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 22 Feb 2014 19:57:46 +0100
changeset 3297
7b7e8124fb51
parent 3294
3aabaf28817b
child 3298
5d42d66cec75

Continued implementing support for the Mercurial Shelve extension.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
APIs/Python3/eric5.bas file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html file | annotate | diff | comparison | revisions
Documentation/Source/index-eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.html file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveBrowserDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveBrowserDialog.ui file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.ui file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelvesSelectionDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelvesSelectionDialog.ui file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgUnshelveDataDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgUnshelveDataDialog.ui file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectHelper.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/ShelveExtension/shelve.py file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Fri Feb 21 19:13:43 2014 +0100
+++ b/APIs/Python3/eric5.api	Sat Feb 22 19:57:46 2014 +0100
@@ -4851,13 +4851,39 @@
 eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.Rebase.hgRebaseAbort?4(path)
 eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.Rebase.hgRebaseContinue?4(path)
 eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.Rebase?1(vcs)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.AgeColumn?7
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.MessageColumn?7
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.NameColumn?7
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.closeEvent?4(e)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.keyPressEvent?4(evt)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.on_buttonBox_clicked?4(button)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.on_input_returnPressed?4()
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.on_passwordCheckBox_toggled?4(isOn)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.on_refreshButton_clicked?4()
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.on_sendButton_clicked?4()
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.on_shelveList_currentItemChanged?4(current, previous)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.on_shelveList_customContextMenuRequested?4(pos)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.show?4()
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog.start?4(projectDir)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.HgShelveBrowserDialog?1(vcs, parent=None)
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.HgShelveDataDialog.getData?4()
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.HgShelveDataDialog?1(parent=None)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.HgShelvesSelectionDialog.getSelectedShelves?4()
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged?4()
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.HgShelvesSelectionDialog?1(message, shelveNames, parent=None)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.HgUnshelveDataDialog.getData?4()
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.HgUnshelveDataDialog?1(shelveNames, shelveName="", parent=None)
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.ShelveProjectHelper.initActions?4()
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.ShelveProjectHelper.initMenu?4(mainMenu)
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.ShelveProjectHelper.menuTitle?4()
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.ShelveProjectHelper?1()
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.hgCleanupShelves?4(name)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.hgDeleteShelves?4(name, shelveNames=None)
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.hgShelve?4(name)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.hgShelveBrowser?4(projectDir)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.hgUnshelve?4(name, shelveName="")
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.hgUnshelveAbort?4(name)
+eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.hgUnshelveContinue?4(name)
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve.shutdown?4()
 eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.Shelve?1(vcs)
 eric5.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.ProjectHelper.TransplantProjectHelper.initActions?4()
--- a/APIs/Python3/eric5.bas	Fri Feb 21 19:13:43 2014 +0100
+++ b/APIs/Python3/eric5.bas	Sat Feb 22 19:57:46 2014 +0100
@@ -345,12 +345,15 @@
 HgRevisionSelectionDialog QDialog Ui_HgRevisionSelectionDialog
 HgRevisionsSelectionDialog QDialog Ui_HgRevisionsSelectionDialog
 HgServeDialog E5MainWindow
+HgShelveBrowserDialog QWidget Ui_HgShelveBrowserDialog
 HgShelveDataDialog QDialog Ui_HgShelveDataDialog
+HgShelvesSelectionDialog QDialog Ui_HgShelvesSelectionDialog
 HgStatusDialog QWidget Ui_HgStatusDialog
 HgStatusMonitorThread VcsStatusMonitorThread
 HgSummaryDialog QDialog Ui_HgSummaryDialog
 HgTagBranchListDialog QDialog Ui_HgTagBranchListDialog
 HgTagDialog QDialog Ui_HgTagDialog
+HgUnshelveDataDialog QDialog Ui_HgUnshelveDataDialog
 HgUserConfigDataDialog QDialog Ui_HgUserConfigDataDialog
 HighlightingStylesReader XMLStreamReaderBase
 HighlightingStylesWriter XMLStreamWriterBase
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Fri Feb 21 19:13:43 2014 +0100
+++ b/Documentation/Help/source.qhp	Sat Feb 22 19:57:46 2014 +0100
@@ -530,7 +530,10 @@
                   <section title="eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase" ref="eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html" />
                 </section>
                 <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension" ref="index-eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.html">
+                  <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html" />
                   <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html" />
+                  <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html" />
+                  <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html" />
                   <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html" />
                   <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html" />
                 </section>
@@ -6479,10 +6482,42 @@
       <keyword name="HgServeDialog.__startServer" id="HgServeDialog.__startServer" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgServeDialog.html#HgServeDialog.__startServer" />
       <keyword name="HgServeDialog.__stopServer" id="HgServeDialog.__stopServer" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgServeDialog.html#HgServeDialog.__stopServer" />
       <keyword name="HgServeDialog.closeEvent" id="HgServeDialog.closeEvent" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgServeDialog.html#HgServeDialog.closeEvent" />
+      <keyword name="HgShelveBrowserDialog" id="HgShelveBrowserDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog" />
+      <keyword name="HgShelveBrowserDialog (Constructor)" id="HgShelveBrowserDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__init__" />
+      <keyword name="HgShelveBrowserDialog (Module)" id="HgShelveBrowserDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html" />
+      <keyword name="HgShelveBrowserDialog.__cleanupShelves" id="HgShelveBrowserDialog.__cleanupShelves" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__cleanupShelves" />
+      <keyword name="HgShelveBrowserDialog.__deleteShelves" id="HgShelveBrowserDialog.__deleteShelves" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__deleteShelves" />
+      <keyword name="HgShelveBrowserDialog.__finish" id="HgShelveBrowserDialog.__finish" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__finish" />
+      <keyword name="HgShelveBrowserDialog.__generateShelveEntry" id="HgShelveBrowserDialog.__generateShelveEntry" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__generateShelveEntry" />
+      <keyword name="HgShelveBrowserDialog.__getShelveEntries" id="HgShelveBrowserDialog.__getShelveEntries" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__getShelveEntries" />
+      <keyword name="HgShelveBrowserDialog.__procFinished" id="HgShelveBrowserDialog.__procFinished" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__procFinished" />
+      <keyword name="HgShelveBrowserDialog.__processBuffer" id="HgShelveBrowserDialog.__processBuffer" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__processBuffer" />
+      <keyword name="HgShelveBrowserDialog.__readStderr" id="HgShelveBrowserDialog.__readStderr" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__readStderr" />
+      <keyword name="HgShelveBrowserDialog.__readStdout" id="HgShelveBrowserDialog.__readStdout" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__readStdout" />
+      <keyword name="HgShelveBrowserDialog.__resetUI" id="HgShelveBrowserDialog.__resetUI" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__resetUI" />
+      <keyword name="HgShelveBrowserDialog.__resizeColumnsShelves" id="HgShelveBrowserDialog.__resizeColumnsShelves" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__resizeColumnsShelves" />
+      <keyword name="HgShelveBrowserDialog.__showError" id="HgShelveBrowserDialog.__showError" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__showError" />
+      <keyword name="HgShelveBrowserDialog.__unshelve" id="HgShelveBrowserDialog.__unshelve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.__unshelve" />
+      <keyword name="HgShelveBrowserDialog.closeEvent" id="HgShelveBrowserDialog.closeEvent" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.closeEvent" />
+      <keyword name="HgShelveBrowserDialog.keyPressEvent" id="HgShelveBrowserDialog.keyPressEvent" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.keyPressEvent" />
+      <keyword name="HgShelveBrowserDialog.on_buttonBox_clicked" id="HgShelveBrowserDialog.on_buttonBox_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.on_buttonBox_clicked" />
+      <keyword name="HgShelveBrowserDialog.on_input_returnPressed" id="HgShelveBrowserDialog.on_input_returnPressed" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.on_input_returnPressed" />
+      <keyword name="HgShelveBrowserDialog.on_passwordCheckBox_toggled" id="HgShelveBrowserDialog.on_passwordCheckBox_toggled" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.on_passwordCheckBox_toggled" />
+      <keyword name="HgShelveBrowserDialog.on_refreshButton_clicked" id="HgShelveBrowserDialog.on_refreshButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.on_refreshButton_clicked" />
+      <keyword name="HgShelveBrowserDialog.on_sendButton_clicked" id="HgShelveBrowserDialog.on_sendButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.on_sendButton_clicked" />
+      <keyword name="HgShelveBrowserDialog.on_shelveList_currentItemChanged" id="HgShelveBrowserDialog.on_shelveList_currentItemChanged" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.on_shelveList_currentItemChanged" />
+      <keyword name="HgShelveBrowserDialog.on_shelveList_customContextMenuRequested" id="HgShelveBrowserDialog.on_shelveList_customContextMenuRequested" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.on_shelveList_customContextMenuRequested" />
+      <keyword name="HgShelveBrowserDialog.show" id="HgShelveBrowserDialog.show" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.show" />
+      <keyword name="HgShelveBrowserDialog.start" id="HgShelveBrowserDialog.start" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html#HgShelveBrowserDialog.start" />
       <keyword name="HgShelveDataDialog" id="HgShelveDataDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html#HgShelveDataDialog" />
       <keyword name="HgShelveDataDialog (Constructor)" id="HgShelveDataDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html#HgShelveDataDialog.__init__" />
       <keyword name="HgShelveDataDialog (Module)" id="HgShelveDataDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html" />
       <keyword name="HgShelveDataDialog.getData" id="HgShelveDataDialog.getData" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html#HgShelveDataDialog.getData" />
+      <keyword name="HgShelvesSelectionDialog" id="HgShelvesSelectionDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html#HgShelvesSelectionDialog" />
+      <keyword name="HgShelvesSelectionDialog (Constructor)" id="HgShelvesSelectionDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html#HgShelvesSelectionDialog.__init__" />
+      <keyword name="HgShelvesSelectionDialog (Module)" id="HgShelvesSelectionDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html" />
+      <keyword name="HgShelvesSelectionDialog.getSelectedShelves" id="HgShelvesSelectionDialog.getSelectedShelves" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html#HgShelvesSelectionDialog.getSelectedShelves" />
+      <keyword name="HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged" id="HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html#HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged" />
       <keyword name="HgStatusDialog" id="HgStatusDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog" />
       <keyword name="HgStatusDialog (Constructor)" id="HgStatusDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.__init__" />
       <keyword name="HgStatusDialog (Module)" id="HgStatusDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html" />
@@ -6575,6 +6610,10 @@
       <keyword name="HgTagDialog.getParameters" id="HgTagDialog.getParameters" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagDialog.html#HgTagDialog.getParameters" />
       <keyword name="HgTagDialog.on_tagCombo_currentIndexChanged" id="HgTagDialog.on_tagCombo_currentIndexChanged" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagDialog.html#HgTagDialog.on_tagCombo_currentIndexChanged" />
       <keyword name="HgTagDialog.on_tagCombo_editTextChanged" id="HgTagDialog.on_tagCombo_editTextChanged" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagDialog.html#HgTagDialog.on_tagCombo_editTextChanged" />
+      <keyword name="HgUnshelveDataDialog" id="HgUnshelveDataDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html#HgUnshelveDataDialog" />
+      <keyword name="HgUnshelveDataDialog (Constructor)" id="HgUnshelveDataDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html#HgUnshelveDataDialog.__init__" />
+      <keyword name="HgUnshelveDataDialog (Module)" id="HgUnshelveDataDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html" />
+      <keyword name="HgUnshelveDataDialog.getData" id="HgUnshelveDataDialog.getData" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html#HgUnshelveDataDialog.getData" />
       <keyword name="HgUserConfigDataDialog" id="HgUserConfigDataDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgUserConfigDataDialog.html#HgUserConfigDataDialog" />
       <keyword name="HgUserConfigDataDialog (Constructor)" id="HgUserConfigDataDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgUserConfigDataDialog.html#HgUserConfigDataDialog.__init__" />
       <keyword name="HgUserConfigDataDialog (Module)" id="HgUserConfigDataDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgUserConfigDataDialog.html" />
@@ -9933,12 +9972,26 @@
       <keyword name="ShellPage.save" id="ShellPage.save" ref="eric5.Preferences.ConfigurationPages.ShellPage.html#ShellPage.save" />
       <keyword name="Shelve" id="Shelve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve" />
       <keyword name="Shelve (Constructor)" id="Shelve (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.__init__" />
+      <keyword name="Shelve.__hgGetShelveNamesList" id="Shelve.__hgGetShelveNamesList" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.__hgGetShelveNamesList" />
+      <keyword name="Shelve.hgCleanupShelves" id="Shelve.hgCleanupShelves" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.hgCleanupShelves" />
+      <keyword name="Shelve.hgDeleteShelves" id="Shelve.hgDeleteShelves" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.hgDeleteShelves" />
       <keyword name="Shelve.hgShelve" id="Shelve.hgShelve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.hgShelve" />
+      <keyword name="Shelve.hgShelveBrowser" id="Shelve.hgShelveBrowser" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.hgShelveBrowser" />
+      <keyword name="Shelve.hgUnshelve" id="Shelve.hgUnshelve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.hgUnshelve" />
+      <keyword name="Shelve.hgUnshelveAbort" id="Shelve.hgUnshelveAbort" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.hgUnshelveAbort" />
+      <keyword name="Shelve.hgUnshelveContinue" id="Shelve.hgUnshelveContinue" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.hgUnshelveContinue" />
       <keyword name="Shelve.shutdown" id="Shelve.shutdown" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.shutdown" />
       <keyword name="ShelveExtension (Package)" id="ShelveExtension (Package)" ref="index-eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.html" />
       <keyword name="ShelveProjectHelper" id="ShelveProjectHelper" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper" />
       <keyword name="ShelveProjectHelper (Constructor)" id="ShelveProjectHelper (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__init__" />
+      <keyword name="ShelveProjectHelper.__hgCleanupShelves" id="ShelveProjectHelper.__hgCleanupShelves" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__hgCleanupShelves" />
+      <keyword name="ShelveProjectHelper.__hgDeleteShelves" id="ShelveProjectHelper.__hgDeleteShelves" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__hgDeleteShelves" />
       <keyword name="ShelveProjectHelper.__hgShelve" id="ShelveProjectHelper.__hgShelve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__hgShelve" />
+      <keyword name="ShelveProjectHelper.__hgShelveBrowser" id="ShelveProjectHelper.__hgShelveBrowser" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__hgShelveBrowser" />
+      <keyword name="ShelveProjectHelper.__hgUnshelve" id="ShelveProjectHelper.__hgUnshelve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__hgUnshelve" />
+      <keyword name="ShelveProjectHelper.__hgUnshelveAbort" id="ShelveProjectHelper.__hgUnshelveAbort" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__hgUnshelveAbort" />
+      <keyword name="ShelveProjectHelper.__hgUnshelveContinue" id="ShelveProjectHelper.__hgUnshelveContinue" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__hgUnshelveContinue" />
+      <keyword name="ShelveProjectHelper.__reopenProject" id="ShelveProjectHelper.__reopenProject" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.__reopenProject" />
       <keyword name="ShelveProjectHelper.initActions" id="ShelveProjectHelper.initActions" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.initActions" />
       <keyword name="ShelveProjectHelper.initMenu" id="ShelveProjectHelper.initMenu" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.initMenu" />
       <keyword name="ShelveProjectHelper.menuTitle" id="ShelveProjectHelper.menuTitle" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html#ShelveProjectHelper.menuTitle" />
@@ -14016,7 +14069,10 @@
       <file>eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.HgRebaseDialog.html</file>
       <file>eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.ProjectHelper.html</file>
       <file>eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html</file>
+      <file>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html</file>
       <file>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html</file>
+      <file>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html</file>
+      <file>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html</file>
       <file>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html</file>
       <file>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html</file>
       <file>eric5.Plugins.VcsPlugins.vcsMercurial.TransplantExtension.ProjectHelper.html</file>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,354 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog</h1>
+<p>
+Module implementing Mercurial shelve browser dialog.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#HgShelveBrowserDialog">HgShelveBrowserDialog</a></td>
+<td>Class implementing Mercurial shelve browser dialog.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="HgShelveBrowserDialog" ID="HgShelveBrowserDialog"></a>
+<h2>HgShelveBrowserDialog</h2>
+<p>
+    Class implementing Mercurial shelve browser dialog.
+</p>
+<h3>Derived from</h3>
+QWidget, Ui_HgShelveBrowserDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>AgeColumn</td></tr><tr><td>MessageColumn</td></tr><tr><td>NameColumn</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#HgShelveBrowserDialog.__init__">HgShelveBrowserDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__cleanupShelves">__cleanupShelves</a></td>
+<td>Private slot to delete all shelves.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__deleteShelves">__deleteShelves</a></td>
+<td>Private slot to delete the selected shelves.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__finish">__finish</a></td>
+<td>Private slot called when the process finished or the user pressed the button.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__generateShelveEntry">__generateShelveEntry</a></td>
+<td>Private method to generate the shelve items.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__getShelveEntries">__getShelveEntries</a></td>
+<td>Private method to retrieve the list of shelves.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__procFinished">__procFinished</a></td>
+<td>Private slot connected to the finished signal.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__processBuffer">__processBuffer</a></td>
+<td>Private method to process the buffered output of the hg shelve command.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__readStderr">__readStderr</a></td>
+<td>Private slot to handle the readyReadStandardError signal.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__readStdout">__readStdout</a></td>
+<td>Private slot to handle the readyReadStandardOutput signal.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__resetUI">__resetUI</a></td>
+<td>Private method to reset the user interface.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__resizeColumnsShelves">__resizeColumnsShelves</a></td>
+<td>Private method to resize the shelve list columns.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__showError">__showError</a></td>
+<td>Private slot to show some error.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.__unshelve">__unshelve</a></td>
+<td>Private slot to restore the selected shelve of changes.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.closeEvent">closeEvent</a></td>
+<td>Private slot implementing a close event handler.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.keyPressEvent">keyPressEvent</a></td>
+<td>Protected slot to handle a key press event.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td>
+<td>Private slot called by a button of the button box clicked.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.on_input_returnPressed">on_input_returnPressed</a></td>
+<td>Private slot to handle the press of the return key in the input field.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.on_passwordCheckBox_toggled">on_passwordCheckBox_toggled</a></td>
+<td>Private slot to handle the password checkbox toggled.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.on_refreshButton_clicked">on_refreshButton_clicked</a></td>
+<td>Private slot to refresh the list of shelves.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.on_sendButton_clicked">on_sendButton_clicked</a></td>
+<td>Private slot to send the input to the merurial process.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.on_shelveList_currentItemChanged">on_shelveList_currentItemChanged</a></td>
+<td>Private slot called, when the current item of the shelve list changes.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.on_shelveList_customContextMenuRequested">on_shelveList_customContextMenuRequested</a></td>
+<td>Protected slot to show the context menu of the shelve list.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.show">show</a></td>
+<td>Public slot to show the dialog.</td>
+</tr><tr>
+<td><a href="#HgShelveBrowserDialog.start">start</a></td>
+<td>Public slot to start the hg shelve command.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="HgShelveBrowserDialog.__init__" ID="HgShelveBrowserDialog.__init__"></a>
+<h4>HgShelveBrowserDialog (Constructor)</h4>
+<b>HgShelveBrowserDialog</b>(<i>vcs, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>vcs</i></dt>
+<dd>
+reference to the vcs object
+</dd><dt><i>parent</i></dt>
+<dd>
+parent widget (QWidget)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.__cleanupShelves" ID="HgShelveBrowserDialog.__cleanupShelves"></a>
+<h4>HgShelveBrowserDialog.__cleanupShelves</h4>
+<b>__cleanupShelves</b>(<i></i>)
+<p>
+        Private slot to delete all shelves.
+</p><a NAME="HgShelveBrowserDialog.__deleteShelves" ID="HgShelveBrowserDialog.__deleteShelves"></a>
+<h4>HgShelveBrowserDialog.__deleteShelves</h4>
+<b>__deleteShelves</b>(<i></i>)
+<p>
+        Private slot to delete the selected shelves.
+</p><a NAME="HgShelveBrowserDialog.__finish" ID="HgShelveBrowserDialog.__finish"></a>
+<h4>HgShelveBrowserDialog.__finish</h4>
+<b>__finish</b>(<i></i>)
+<p>
+        Private slot called when the process finished or the user pressed
+        the button.
+</p><a NAME="HgShelveBrowserDialog.__generateShelveEntry" ID="HgShelveBrowserDialog.__generateShelveEntry"></a>
+<h4>HgShelveBrowserDialog.__generateShelveEntry</h4>
+<b>__generateShelveEntry</b>(<i>name, age, message, fileStatistics, totals</i>)
+<p>
+        Private method to generate the shelve items.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+name of the shelve (string)
+</dd><dt><i>age</i></dt>
+<dd>
+age of the shelve (string)
+</dd><dt><i>message</i></dt>
+<dd>
+shelve message (string)
+</dd><dt><i>fileStatistics</i></dt>
+<dd>
+per file change statistics (tuple of
+            four strings with file name, number of changes, number of
+            added lines and number of deleted lines)
+</dd><dt><i>totals</i></dt>
+<dd>
+overall statistics (tuple of three strings with
+            number of changed files, number of added lines and number
+            of deleted lines)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.__getShelveEntries" ID="HgShelveBrowserDialog.__getShelveEntries"></a>
+<h4>HgShelveBrowserDialog.__getShelveEntries</h4>
+<b>__getShelveEntries</b>(<i></i>)
+<p>
+        Private method to retrieve the list of shelves.
+</p><a NAME="HgShelveBrowserDialog.__procFinished" ID="HgShelveBrowserDialog.__procFinished"></a>
+<h4>HgShelveBrowserDialog.__procFinished</h4>
+<b>__procFinished</b>(<i>exitCode, exitStatus</i>)
+<p>
+        Private slot connected to the finished signal.
+</p><dl>
+<dt><i>exitCode</i></dt>
+<dd>
+exit code of the process (integer)
+</dd><dt><i>exitStatus</i></dt>
+<dd>
+exit status of the process (QProcess.ExitStatus)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.__processBuffer" ID="HgShelveBrowserDialog.__processBuffer"></a>
+<h4>HgShelveBrowserDialog.__processBuffer</h4>
+<b>__processBuffer</b>(<i></i>)
+<p>
+        Private method to process the buffered output of the hg shelve command.
+</p><a NAME="HgShelveBrowserDialog.__readStderr" ID="HgShelveBrowserDialog.__readStderr"></a>
+<h4>HgShelveBrowserDialog.__readStderr</h4>
+<b>__readStderr</b>(<i></i>)
+<p>
+        Private slot to handle the readyReadStandardError signal.
+</p><p>
+        It reads the error output of the process and inserts it into the
+        error pane.
+</p><a NAME="HgShelveBrowserDialog.__readStdout" ID="HgShelveBrowserDialog.__readStdout"></a>
+<h4>HgShelveBrowserDialog.__readStdout</h4>
+<b>__readStdout</b>(<i></i>)
+<p>
+        Private slot to handle the readyReadStandardOutput signal.
+</p><p>
+        It reads the output of the process and inserts it into a buffer.
+</p><a NAME="HgShelveBrowserDialog.__resetUI" ID="HgShelveBrowserDialog.__resetUI"></a>
+<h4>HgShelveBrowserDialog.__resetUI</h4>
+<b>__resetUI</b>(<i></i>)
+<p>
+        Private method to reset the user interface.
+</p><a NAME="HgShelveBrowserDialog.__resizeColumnsShelves" ID="HgShelveBrowserDialog.__resizeColumnsShelves"></a>
+<h4>HgShelveBrowserDialog.__resizeColumnsShelves</h4>
+<b>__resizeColumnsShelves</b>(<i></i>)
+<p>
+        Private method to resize the shelve list columns.
+</p><a NAME="HgShelveBrowserDialog.__showError" ID="HgShelveBrowserDialog.__showError"></a>
+<h4>HgShelveBrowserDialog.__showError</h4>
+<b>__showError</b>(<i>out</i>)
+<p>
+        Private slot to show some error.
+</p><dl>
+<dt><i>out</i></dt>
+<dd>
+error to be shown (string)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.__unshelve" ID="HgShelveBrowserDialog.__unshelve"></a>
+<h4>HgShelveBrowserDialog.__unshelve</h4>
+<b>__unshelve</b>(<i></i>)
+<p>
+        Private slot to restore the selected shelve of changes.
+</p><a NAME="HgShelveBrowserDialog.closeEvent" ID="HgShelveBrowserDialog.closeEvent"></a>
+<h4>HgShelveBrowserDialog.closeEvent</h4>
+<b>closeEvent</b>(<i>e</i>)
+<p>
+        Private slot implementing a close event handler.
+</p><dl>
+<dt><i>e</i></dt>
+<dd>
+close event (QCloseEvent)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.keyPressEvent" ID="HgShelveBrowserDialog.keyPressEvent"></a>
+<h4>HgShelveBrowserDialog.keyPressEvent</h4>
+<b>keyPressEvent</b>(<i>evt</i>)
+<p>
+        Protected slot to handle a key press event.
+</p><dl>
+<dt><i>evt</i></dt>
+<dd>
+the key press event (QKeyEvent)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.on_buttonBox_clicked" ID="HgShelveBrowserDialog.on_buttonBox_clicked"></a>
+<h4>HgShelveBrowserDialog.on_buttonBox_clicked</h4>
+<b>on_buttonBox_clicked</b>(<i>button</i>)
+<p>
+        Private slot called by a button of the button box clicked.
+</p><dl>
+<dt><i>button</i></dt>
+<dd>
+button that was clicked (QAbstractButton)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.on_input_returnPressed" ID="HgShelveBrowserDialog.on_input_returnPressed"></a>
+<h4>HgShelveBrowserDialog.on_input_returnPressed</h4>
+<b>on_input_returnPressed</b>(<i></i>)
+<p>
+        Private slot to handle the press of the return key in the input field.
+</p><a NAME="HgShelveBrowserDialog.on_passwordCheckBox_toggled" ID="HgShelveBrowserDialog.on_passwordCheckBox_toggled"></a>
+<h4>HgShelveBrowserDialog.on_passwordCheckBox_toggled</h4>
+<b>on_passwordCheckBox_toggled</b>(<i>isOn</i>)
+<p>
+        Private slot to handle the password checkbox toggled.
+</p><dl>
+<dt><i>isOn</i></dt>
+<dd>
+flag indicating the status of the check box (boolean)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.on_refreshButton_clicked" ID="HgShelveBrowserDialog.on_refreshButton_clicked"></a>
+<h4>HgShelveBrowserDialog.on_refreshButton_clicked</h4>
+<b>on_refreshButton_clicked</b>(<i></i>)
+<p>
+        Private slot to refresh the list of shelves.
+</p><a NAME="HgShelveBrowserDialog.on_sendButton_clicked" ID="HgShelveBrowserDialog.on_sendButton_clicked"></a>
+<h4>HgShelveBrowserDialog.on_sendButton_clicked</h4>
+<b>on_sendButton_clicked</b>(<i></i>)
+<p>
+        Private slot to send the input to the merurial process.
+</p><a NAME="HgShelveBrowserDialog.on_shelveList_currentItemChanged" ID="HgShelveBrowserDialog.on_shelveList_currentItemChanged"></a>
+<h4>HgShelveBrowserDialog.on_shelveList_currentItemChanged</h4>
+<b>on_shelveList_currentItemChanged</b>(<i>current, previous</i>)
+<p>
+        Private slot called, when the current item of the shelve list changes.
+</p><dl>
+<dt><i>current</i></dt>
+<dd>
+reference to the new current item (QTreeWidgetItem)
+</dd><dt><i>previous</i></dt>
+<dd>
+reference to the old current item (QTreeWidgetItem)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.on_shelveList_customContextMenuRequested" ID="HgShelveBrowserDialog.on_shelveList_customContextMenuRequested"></a>
+<h4>HgShelveBrowserDialog.on_shelveList_customContextMenuRequested</h4>
+<b>on_shelveList_customContextMenuRequested</b>(<i>pos</i>)
+<p>
+        Protected slot to show the context menu of the shelve list.
+</p><dl>
+<dt><i>pos</i></dt>
+<dd>
+position of the mouse pointer (QPoint)
+</dd>
+</dl><a NAME="HgShelveBrowserDialog.show" ID="HgShelveBrowserDialog.show"></a>
+<h4>HgShelveBrowserDialog.show</h4>
+<b>show</b>(<i></i>)
+<p>
+        Public slot to show the dialog.
+</p><a NAME="HgShelveBrowserDialog.start" ID="HgShelveBrowserDialog.start"></a>
+<h4>HgShelveBrowserDialog.start</h4>
+<b>start</b>(<i>projectDir</i>)
+<p>
+        Public slot to start the hg shelve command.
+</p><dl>
+<dt><i>projectDir</i></dt>
+<dd>
+name of the project directory (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog</h1>
+<p>
+Module implementing a dialog to enter the data for a shelve operation.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#HgShelveDataDialog">HgShelveDataDialog</a></td>
+<td>Class implementing a dialog to enter the data for a shelve operation.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="HgShelveDataDialog" ID="HgShelveDataDialog"></a>
+<h2>HgShelveDataDialog</h2>
+<p>
+    Class implementing a dialog to enter the data for a shelve operation.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_HgShelveDataDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#HgShelveDataDialog.__init__">HgShelveDataDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#HgShelveDataDialog.getData">getData</a></td>
+<td>Public method to get the user data.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="HgShelveDataDialog.__init__" ID="HgShelveDataDialog.__init__"></a>
+<h4>HgShelveDataDialog (Constructor)</h4>
+<b>HgShelveDataDialog</b>(<i>parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>parent</i></dt>
+<dd>
+reference to the parent widget (QWidget)
+</dd>
+</dl><a NAME="HgShelveDataDialog.getData" ID="HgShelveDataDialog.getData"></a>
+<h4>HgShelveDataDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to get the user data.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the name (string), date (QDateTime),
+            message (string) and a flag indicating to add/remove
+            new/missing files (boolean)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog</h1>
+<p>
+Module implementing a dialog to select multiple shelve names.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#HgShelvesSelectionDialog">HgShelvesSelectionDialog</a></td>
+<td>Class implementing a dialog to select multiple shelve names.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="HgShelvesSelectionDialog" ID="HgShelvesSelectionDialog"></a>
+<h2>HgShelvesSelectionDialog</h2>
+<p>
+    Class implementing a dialog to select multiple shelve names.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_HgShelvesSelectionDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#HgShelvesSelectionDialog.__init__">HgShelvesSelectionDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#HgShelvesSelectionDialog.getSelectedShelves">getSelectedShelves</a></td>
+<td>Public method to retrieve the selected shelve names.</td>
+</tr><tr>
+<td><a href="#HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged">on_shelvesList_itemSelectionChanged</a></td>
+<td>Private slot to enabled the OK button if items have been selected.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="HgShelvesSelectionDialog.__init__" ID="HgShelvesSelectionDialog.__init__"></a>
+<h4>HgShelvesSelectionDialog (Constructor)</h4>
+<b>HgShelvesSelectionDialog</b>(<i>message, shelveNames, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>parent</i></dt>
+<dd>
+reference to the parent widget (QWidget)
+</dd>
+</dl><a NAME="HgShelvesSelectionDialog.getSelectedShelves" ID="HgShelvesSelectionDialog.getSelectedShelves"></a>
+<h4>HgShelvesSelectionDialog.getSelectedShelves</h4>
+<b>getSelectedShelves</b>(<i></i>)
+<p>
+        Public method to retrieve the selected shelve names.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+selected shelve names (list of string)
+</dd>
+</dl><a NAME="HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged" ID="HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged"></a>
+<h4>HgShelvesSelectionDialog.on_shelvesList_itemSelectionChanged</h4>
+<b>on_shelvesList_itemSelectionChanged</b>(<i></i>)
+<p>
+        Private slot to enabled the OK button if items have been selected.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog</h1>
+<p>
+Module implementing a dialog to enter the data for an unshelve operation.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#HgUnshelveDataDialog">HgUnshelveDataDialog</a></td>
+<td>Class implementing a dialog to enter the data for an unshelve operation.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="HgUnshelveDataDialog" ID="HgUnshelveDataDialog"></a>
+<h2>HgUnshelveDataDialog</h2>
+<p>
+    Class implementing a dialog to enter the data for an unshelve operation.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_HgUnshelveDataDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#HgUnshelveDataDialog.__init__">HgUnshelveDataDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#HgUnshelveDataDialog.getData">getData</a></td>
+<td>Public method to get the user data.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="HgUnshelveDataDialog.__init__" ID="HgUnshelveDataDialog.__init__"></a>
+<h4>HgUnshelveDataDialog (Constructor)</h4>
+<b>HgUnshelveDataDialog</b>(<i>shelveNames, shelveName="", parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>shelveNames</i></dt>
+<dd>
+list of available shelves (list of string)
+</dd><dt><i>shelveName</i></dt>
+<dd>
+name of the shelve to restore (string)
+</dd><dt><i>parent</i></dt>
+<dd>
+reference to the parent widget (QWidget)
+</dd>
+</dl><a NAME="HgUnshelveDataDialog.getData" ID="HgUnshelveDataDialog.getData"></a>
+<h4>HgUnshelveDataDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to get the user data.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the name (string) and a flag indicating
+            to keep the shelved change (boolean)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper</h1>
+<p>
+Module implementing the shelve extension project helper.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#ShelveProjectHelper">ShelveProjectHelper</a></td>
+<td>Class implementing the queues extension project helper.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="ShelveProjectHelper" ID="ShelveProjectHelper"></a>
+<h2>ShelveProjectHelper</h2>
+<p>
+    Class implementing the queues extension project helper.
+</p>
+<h3>Derived from</h3>
+HgExtensionProjectHelper
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#ShelveProjectHelper.__init__">ShelveProjectHelper</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.__hgCleanupShelves">__hgCleanupShelves</a></td>
+<td>Private slot to delete all shelves.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.__hgDeleteShelves">__hgDeleteShelves</a></td>
+<td>Private slot to delete selected shelves.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.__hgShelve">__hgShelve</a></td>
+<td>Private slot used to shelve all current changes.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.__hgShelveBrowser">__hgShelveBrowser</a></td>
+<td>Private slot to show the shelve browser dialog.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.__hgUnshelve">__hgUnshelve</a></td>
+<td>Private slot used to restore a shelved change.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.__hgUnshelveAbort">__hgUnshelveAbort</a></td>
+<td>Private slot used to abort an ongoing restore operation.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.__hgUnshelveContinue">__hgUnshelveContinue</a></td>
+<td>Private slot used to continue an ongoing restore operation.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.__reopenProject">__reopenProject</a></td>
+<td>Private method to reopen the project if needed and wanted.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.initActions">initActions</a></td>
+<td>Public method to generate the action objects.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.initMenu">initMenu</a></td>
+<td>Public method to generate the extension menu.</td>
+</tr><tr>
+<td><a href="#ShelveProjectHelper.menuTitle">menuTitle</a></td>
+<td>Public method to get the menu title.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="ShelveProjectHelper.__init__" ID="ShelveProjectHelper.__init__"></a>
+<h4>ShelveProjectHelper (Constructor)</h4>
+<b>ShelveProjectHelper</b>(<i></i>)
+<p>
+        Constructor
+</p><a NAME="ShelveProjectHelper.__hgCleanupShelves" ID="ShelveProjectHelper.__hgCleanupShelves"></a>
+<h4>ShelveProjectHelper.__hgCleanupShelves</h4>
+<b>__hgCleanupShelves</b>(<i></i>)
+<p>
+        Private slot to delete all shelves.
+</p><a NAME="ShelveProjectHelper.__hgDeleteShelves" ID="ShelveProjectHelper.__hgDeleteShelves"></a>
+<h4>ShelveProjectHelper.__hgDeleteShelves</h4>
+<b>__hgDeleteShelves</b>(<i></i>)
+<p>
+        Private slot to delete selected shelves.
+</p><a NAME="ShelveProjectHelper.__hgShelve" ID="ShelveProjectHelper.__hgShelve"></a>
+<h4>ShelveProjectHelper.__hgShelve</h4>
+<b>__hgShelve</b>(<i></i>)
+<p>
+        Private slot used to shelve all current changes.
+</p><a NAME="ShelveProjectHelper.__hgShelveBrowser" ID="ShelveProjectHelper.__hgShelveBrowser"></a>
+<h4>ShelveProjectHelper.__hgShelveBrowser</h4>
+<b>__hgShelveBrowser</b>(<i></i>)
+<p>
+        Private slot to show the shelve browser dialog.
+</p><a NAME="ShelveProjectHelper.__hgUnshelve" ID="ShelveProjectHelper.__hgUnshelve"></a>
+<h4>ShelveProjectHelper.__hgUnshelve</h4>
+<b>__hgUnshelve</b>(<i></i>)
+<p>
+        Private slot used to restore a shelved change.
+</p><a NAME="ShelveProjectHelper.__hgUnshelveAbort" ID="ShelveProjectHelper.__hgUnshelveAbort"></a>
+<h4>ShelveProjectHelper.__hgUnshelveAbort</h4>
+<b>__hgUnshelveAbort</b>(<i></i>)
+<p>
+        Private slot used to abort an ongoing restore operation.
+</p><a NAME="ShelveProjectHelper.__hgUnshelveContinue" ID="ShelveProjectHelper.__hgUnshelveContinue"></a>
+<h4>ShelveProjectHelper.__hgUnshelveContinue</h4>
+<b>__hgUnshelveContinue</b>(<i></i>)
+<p>
+        Private slot used to continue an ongoing restore operation.
+</p><a NAME="ShelveProjectHelper.__reopenProject" ID="ShelveProjectHelper.__reopenProject"></a>
+<h4>ShelveProjectHelper.__reopenProject</h4>
+<b>__reopenProject</b>(<i>shouldReopen, title</i>)
+<p>
+        Private method to reopen the project if needed and wanted.
+</p><dl>
+<dt><i>shouldReopen</i></dt>
+<dd>
+flag indicating that the project should
+            be reopened (boolean)
+</dd><dt><i>title</i></dt>
+<dd>
+title of the message box (string)
+</dd>
+</dl><a NAME="ShelveProjectHelper.initActions" ID="ShelveProjectHelper.initActions"></a>
+<h4>ShelveProjectHelper.initActions</h4>
+<b>initActions</b>(<i></i>)
+<p>
+        Public method to generate the action objects.
+</p><a NAME="ShelveProjectHelper.initMenu" ID="ShelveProjectHelper.initMenu"></a>
+<h4>ShelveProjectHelper.initMenu</h4>
+<b>initMenu</b>(<i>mainMenu</i>)
+<p>
+        Public method to generate the extension menu.
+</p><dl>
+<dt><i>mainMenu</i></dt>
+<dd>
+reference to the main menu (QMenu)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+populated menu (QMenu)
+</dd>
+</dl><a NAME="ShelveProjectHelper.menuTitle" ID="ShelveProjectHelper.menuTitle"></a>
+<h4>ShelveProjectHelper.menuTitle</h4>
+<b>menuTitle</b>(<i></i>)
+<p>
+        Public method to get the menu title.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+title of the menu (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve</h1>
+<p>
+Module implementing the shelve extension interface.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#Shelve">Shelve</a></td>
+<td>Class implementing the shelve extension interface.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="Shelve" ID="Shelve"></a>
+<h2>Shelve</h2>
+<p>
+    Class implementing the shelve extension interface.
+</p>
+<h3>Derived from</h3>
+HgExtension
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#Shelve.__init__">Shelve</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#Shelve.__hgGetShelveNamesList">__hgGetShelveNamesList</a></td>
+<td>Private method to get the list of shelved changes.</td>
+</tr><tr>
+<td><a href="#Shelve.hgCleanupShelves">hgCleanupShelves</a></td>
+<td>Public method to delete all shelves.</td>
+</tr><tr>
+<td><a href="#Shelve.hgDeleteShelves">hgDeleteShelves</a></td>
+<td>Public method to delete named shelves.</td>
+</tr><tr>
+<td><a href="#Shelve.hgShelve">hgShelve</a></td>
+<td>Public method to shelve current changes of files or directories.</td>
+</tr><tr>
+<td><a href="#Shelve.hgShelveBrowser">hgShelveBrowser</a></td>
+<td>Public method to show the shelve browser dialog.</td>
+</tr><tr>
+<td><a href="#Shelve.hgUnshelve">hgUnshelve</a></td>
+<td>Public method to restore shelved changes to the project directory.</td>
+</tr><tr>
+<td><a href="#Shelve.hgUnshelveAbort">hgUnshelveAbort</a></td>
+<td>Public method to abort the ongoing restore operation.</td>
+</tr><tr>
+<td><a href="#Shelve.hgUnshelveContinue">hgUnshelveContinue</a></td>
+<td>Public method to continue the ongoing restore operation.</td>
+</tr><tr>
+<td><a href="#Shelve.shutdown">shutdown</a></td>
+<td>Public method used to shutdown the shelve interface.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="Shelve.__init__" ID="Shelve.__init__"></a>
+<h4>Shelve (Constructor)</h4>
+<b>Shelve</b>(<i>vcs</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>vcs</i></dt>
+<dd>
+reference to the Mercurial vcs object
+</dd>
+</dl><a NAME="Shelve.__hgGetShelveNamesList" ID="Shelve.__hgGetShelveNamesList"></a>
+<h4>Shelve.__hgGetShelveNamesList</h4>
+<b>__hgGetShelveNamesList</b>(<i>repodir</i>)
+<p>
+        Private method to get the list of shelved changes.
+</p><dl>
+<dt><i>repodir</i></dt>
+<dd>
+directory name of the repository (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+list of shelved changes (list of string)
+</dd>
+</dl><a NAME="Shelve.hgCleanupShelves" ID="Shelve.hgCleanupShelves"></a>
+<h4>Shelve.hgCleanupShelves</h4>
+<b>hgCleanupShelves</b>(<i>name</i>)
+<p>
+        Public method to delete all shelves.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+name of the project directory (string)
+</dd>
+</dl><a NAME="Shelve.hgDeleteShelves" ID="Shelve.hgDeleteShelves"></a>
+<h4>Shelve.hgDeleteShelves</h4>
+<b>hgDeleteShelves</b>(<i>name, shelveNames=None</i>)
+<p>
+        Public method to delete named shelves.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+name of the project directory (string)
+</dd><dt><i>shelveNames</i></dt>
+<dd>
+name of shelves to delete (list of string)
+</dd>
+</dl><a NAME="Shelve.hgShelve" ID="Shelve.hgShelve"></a>
+<h4>Shelve.hgShelve</h4>
+<b>hgShelve</b>(<i>name</i>)
+<p>
+        Public method to shelve current changes of files or directories.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+directory or file name (string) or list of directory
+            or file names (list of string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that the project should be reread (boolean)
+</dd>
+</dl><a NAME="Shelve.hgShelveBrowser" ID="Shelve.hgShelveBrowser"></a>
+<h4>Shelve.hgShelveBrowser</h4>
+<b>hgShelveBrowser</b>(<i>projectDir</i>)
+<p>
+        Public method to show the shelve browser dialog.
+</p><dl>
+<dt><i>projectDir</i></dt>
+<dd>
+name of the project directory (string)
+</dd>
+</dl><a NAME="Shelve.hgUnshelve" ID="Shelve.hgUnshelve"></a>
+<h4>Shelve.hgUnshelve</h4>
+<b>hgUnshelve</b>(<i>name, shelveName=""</i>)
+<p>
+        Public method to restore shelved changes to the project directory.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+name of the project directory (string)
+</dd><dt><i>shelveName=</i></dt>
+<dd>
+name of the shelve to restore (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that the project should be reread (boolean)
+</dd>
+</dl><a NAME="Shelve.hgUnshelveAbort" ID="Shelve.hgUnshelveAbort"></a>
+<h4>Shelve.hgUnshelveAbort</h4>
+<b>hgUnshelveAbort</b>(<i>name</i>)
+<p>
+        Public method to abort the ongoing restore operation.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+name of the project directory (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that the project should be reread (boolean)
+</dd>
+</dl><a NAME="Shelve.hgUnshelveContinue" ID="Shelve.hgUnshelveContinue"></a>
+<h4>Shelve.hgUnshelveContinue</h4>
+<b>hgUnshelveContinue</b>(<i>name</i>)
+<p>
+        Public method to continue the ongoing restore operation.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+name of the project directory (string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that the project should be reread (boolean)
+</dd>
+</dl><a NAME="Shelve.shutdown" ID="Shelve.shutdown"></a>
+<h4>Shelve.shutdown</h4>
+<b>shutdown</b>(<i></i>)
+<p>
+        Public method used to shutdown the shelve interface.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/index-eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.html	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body>
+<h1>eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension</h1>
+<p>
+Package implementing the shelve extension support interface.
+</p>
+
+
+<h3>Modules</h3>
+<table>
+<tr>
+<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveBrowserDialog.html">HgShelveBrowserDialog</a></td>
+<td>Module implementing Mercurial shelve browser dialog.</td>
+</tr><tr>
+<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelveDataDialog.html">HgShelveDataDialog</a></td>
+<td>Module implementing a dialog to enter the data for a shelve operation.</td>
+</tr><tr>
+<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgShelvesSelectionDialog.html">HgShelvesSelectionDialog</a></td>
+<td>Module implementing a dialog to select multiple shelve names.</td>
+</tr><tr>
+<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.HgUnshelveDataDialog.html">HgUnshelveDataDialog</a></td>
+<td>Module implementing a dialog to enter the data for an unshelve operation.</td>
+</tr><tr>
+<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.ProjectHelper.html">ProjectHelper</a></td>
+<td>Module implementing the shelve extension project helper.</td>
+</tr><tr>
+<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html">shelve</a></td>
+<td>Module implementing the shelve extension interface.</td>
+</tr>
+</table>
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveBrowserDialog.py	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,480 @@
+# -*- coding: utf-8 -*-
+
+"""
+Module implementing Mercurial shelve browser dialog.
+"""
+
+import os
+
+from PyQt4.QtCore import pyqtSlot, Qt, QPoint, QProcess, QTimer
+from PyQt4.QtGui import QWidget, QDialogButtonBox, QTreeWidgetItem, \
+    QAbstractButton, QMenu, QHeaderView, QApplication, QCursor, \
+    QLineEdit
+
+from E5Gui import E5MessageBox
+
+from .Ui_HgShelveBrowserDialog import Ui_HgShelveBrowserDialog
+
+import Preferences
+
+
+class HgShelveBrowserDialog(QWidget, Ui_HgShelveBrowserDialog):
+    """
+    Class implementing Mercurial shelve browser dialog.
+    """
+    NameColumn = 0
+    AgeColumn = 1
+    MessageColumn = 2
+    
+    def __init__(self, vcs, parent=None):
+        """
+        Constructor
+        
+        @param vcs reference to the vcs object
+        @param parent parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
+        
+        self.__position = QPoint()
+        
+        self.__fileStatisticsRole = Qt.UserRole
+        self.__totalStatisticsRole = Qt.UserRole + 1
+        
+        self.shelveList.header().setSortIndicator(0, Qt.AscendingOrder)
+        
+        self.refreshButton = self.buttonBox.addButton(
+            self.tr("&Refresh"), QDialogButtonBox.ActionRole)
+        self.refreshButton.setToolTip(
+            self.tr("Press to refresh the list of shelves"))
+        self.refreshButton.setEnabled(False)
+        
+        self.vcs = vcs
+        self.__hgClient = vcs.getClient()
+        self.__resetUI()
+        
+        if self.__hgClient:
+            self.process = None
+        else:
+            self.process = QProcess()
+            self.process.finished.connect(self.__procFinished)
+            self.process.readyReadStandardOutput.connect(self.__readStdout)
+            self.process.readyReadStandardError.connect(self.__readStderr)
+        
+        self.__contextMenu = QMenu()
+        self.__unshelveAct = self.__contextMenu.addAction(
+            self.tr("Restore selected shelve"), self.__unshelve)
+        self.__deleteAct = self.__contextMenu.addAction(
+            self.tr("Delete selected shelves"), self.__deleteShelves)
+        self.__contextMenu.addAction(
+            self.tr("Delete all shelves"), self.__cleanupShelves)
+    
+    def closeEvent(self, e):
+        """
+        Private slot implementing a close event handler.
+        
+        @param e close event (QCloseEvent)
+        """
+        if self.__hgClient:
+            if self.__hgClient.isExecuting():
+                self.__hgClient.cancel()
+        else:
+            if self.process is not None and \
+               self.process.state() != QProcess.NotRunning:
+                self.process.terminate()
+                QTimer.singleShot(2000, self.process.kill)
+                self.process.waitForFinished(3000)
+        
+        self.__position = self.pos()
+        
+        e.accept()
+    
+    def show(self):
+        """
+        Public slot to show the dialog.
+        """
+        if not self.__position.isNull():
+            self.move(self.__position)
+        self.__resetUI()
+        
+        super().show()
+    
+    def __resetUI(self):
+        """
+        Private method to reset the user interface.
+        """
+        self.shelveList.clear()
+    
+    def __resizeColumnsShelves(self):
+        """
+        Private method to resize the shelve list columns.
+        """
+        self.shelveList.header().resizeSections(QHeaderView.ResizeToContents)
+        self.shelveList.header().setStretchLastSection(True)
+    
+    def __generateShelveEntry(self, name, age, message, fileStatistics,
+                              totals):
+        """
+        Private method to generate the shelve items.
+        
+        @param name name of the shelve (string)
+        @param age age of the shelve (string)
+        @param message shelve message (string)
+        @param fileStatistics per file change statistics (tuple of
+            four strings with file name, number of changes, number of
+            added lines and number of deleted lines)
+        @param totals overall statistics (tuple of three strings with
+            number of changed files, number of added lines and number
+            of deleted lines)
+        """
+        itm = QTreeWidgetItem(self.shelveList, [name, age, message])
+        itm.setData(0, self.__fileStatisticsRole, fileStatistics)
+        itm.setData(0, self.__totalStatisticsRole, totals)
+    
+    def __getShelveEntries(self):
+        """
+        Private method to retrieve the list of shelves.
+        """
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
+        QApplication.processEvents()
+        
+        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
+        QApplication.processEvents()
+        
+        self.buf = []
+        self.errors.clear()
+        self.intercept = False
+        
+        args = []
+        args.append("shelve")
+        args.append("--list")
+        args.append("--stat")
+        
+        if self.__hgClient:
+            self.inputGroup.setEnabled(False)
+            self.inputGroup.hide()
+            
+            out, err = self.__hgClient.runcommand(args)
+            self.buf = out.splitlines(True)
+            if err:
+                self.__showError(err)
+            self.__processBuffer()
+            self.__finish()
+        else:
+            self.process.kill()
+            
+            self.process.setWorkingDirectory(self.repodir)
+            
+            self.inputGroup.setEnabled(True)
+            self.inputGroup.show()
+            
+            self.process.start('hg', args)
+            procStarted = self.process.waitForStarted(5000)
+            if not procStarted:
+                self.inputGroup.setEnabled(False)
+                self.inputGroup.hide()
+                E5MessageBox.critical(
+                    self,
+                    self.tr('Process Generation Error'),
+                    self.tr(
+                        'The process {0} could not be started. '
+                        'Ensure, that it is in the search path.'
+                    ).format('hg'))
+    
+    def start(self, projectDir):
+        """
+        Public slot to start the hg shelve command.
+        
+        @param projectDir name of the project directory (string)
+        """
+        self.errorGroup.hide()
+        QApplication.processEvents()
+        
+        self.__projectDir = projectDir
+        
+        # find the root of the repo
+        self.repodir = self.__projectDir
+        while not os.path.isdir(os.path.join(self.repodir, self.vcs.adminDir)):
+            self.repodir = os.path.dirname(self.repodir)
+            if os.path.splitdrive(self.repodir)[1] == os.sep:
+                return
+        
+        self.activateWindow()
+        self.raise_()
+        
+        self.shelveList.clear()
+        self.__started = True
+        self.__getShelveEntries()
+    
+    def __procFinished(self, exitCode, exitStatus):
+        """
+        Private slot connected to the finished signal.
+        
+        @param exitCode exit code of the process (integer)
+        @param exitStatus exit status of the process (QProcess.ExitStatus)
+        """
+        self.__processBuffer()
+        self.__finish()
+    
+    def __finish(self):
+        """
+        Private slot called when the process finished or the user pressed
+        the button.
+        """
+        if self.process is not None and \
+           self.process.state() != QProcess.NotRunning:
+            self.process.terminate()
+            QTimer.singleShot(2000, self.process.kill)
+            self.process.waitForFinished(3000)
+        
+        QApplication.restoreOverrideCursor()
+        
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
+        self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
+        
+        self.inputGroup.setEnabled(False)
+        self.inputGroup.hide()
+        self.refreshButton.setEnabled(True)
+    
+    def __processBuffer(self):
+        """
+        Private method to process the buffered output of the hg shelve command.
+        """
+        lastWasFileStats = False
+        firstLine = True
+        itemData = {}
+        for line in self.buf:
+            if firstLine:
+                name, line = line.split("(", 1)
+                age, message = line.split(")", 1)
+                itemData["name"] = name.strip()
+                itemData["age"] = age.strip()
+                itemData["message"] = message.strip()
+                itemData["files"] = []
+                firstLine = False
+            elif '|' in line:
+                # file stats: foo.py |  3 ++-
+                file, changes = line.strip().split("|", 1)
+                total, addDelete = changes.strip().split(None, 1)
+                additions = str(addDelete.count("+"))
+                deletions = str(addDelete.count("-"))
+                itemData["files"].append((file, total, additions, deletions))
+                lastWasFileStats = True
+            elif lastWasFileStats:
+                # summary line
+                # 2 files changed, 15 insertions(+), 1 deletions(-)
+                total, added, deleted = line.strip().split(",", 2)
+                total = total.split()[0]
+                added = added.split()[0]
+                deleted = deleted.split()[0]
+                itemData["summary"] = (total, added, deleted)
+                
+                self.__generateShelveEntry(
+                    itemData["name"], itemData["age"], itemData["message"],
+                    itemData["files"], itemData["summary"])
+                
+                lastWasFileStats = False
+                firstLine = True
+                itemData = {}
+        
+        self.__resizeColumnsShelves()
+        
+        if self.__started:
+            self.shelveList.setCurrentItem(self.shelveList.topLevelItem(0))
+            self.__started = False
+    
+    def __readStdout(self):
+        """
+        Private slot to handle the readyReadStandardOutput signal.
+        
+        It reads the output of the process and inserts it into a buffer.
+        """
+        self.process.setReadChannel(QProcess.StandardOutput)
+        
+        while self.process.canReadLine():
+            line = str(self.process.readLine(),
+                       Preferences.getSystem("IOEncoding"),
+                       'replace')
+            self.buf.append(line)
+    
+    def __readStderr(self):
+        """
+        Private slot to handle the readyReadStandardError signal.
+        
+        It reads the error output of the process and inserts it into the
+        error pane.
+        """
+        if self.process is not None:
+            s = str(self.process.readAllStandardError(),
+                    Preferences.getSystem("IOEncoding"),
+                    'replace')
+            self.__showError(s)
+    
+    def __showError(self, out):
+        """
+        Private slot to show some error.
+        
+        @param out error to be shown (string)
+        """
+        self.errorGroup.show()
+        self.errors.insertPlainText(out)
+        self.errors.ensureCursorVisible()
+    
+    @pyqtSlot(QAbstractButton)
+    def on_buttonBox_clicked(self, button):
+        """
+        Private slot called by a button of the button box clicked.
+        
+        @param button button that was clicked (QAbstractButton)
+        """
+        if button == self.buttonBox.button(QDialogButtonBox.Close):
+            self.close()
+        elif button == self.buttonBox.button(QDialogButtonBox.Cancel):
+            self.cancelled = True
+            if self.__hgClient:
+                self.__hgClient.cancel()
+            else:
+                self.__finish()
+        elif button == self.refreshButton:
+            self.on_refreshButton_clicked()
+    
+    @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
+    def on_shelveList_currentItemChanged(self, current, previous):
+        """
+        Private slot called, when the current item of the shelve list changes.
+        
+        @param current reference to the new current item (QTreeWidgetItem)
+        @param previous reference to the old current item (QTreeWidgetItem)
+        """
+        self.statisticsList.clear()
+        if current:
+            for dataSet in current.data(0, self.__fileStatisticsRole):
+                QTreeWidgetItem(self.statisticsList, list(dataSet))
+            
+            totals = current.data(0, self.__totalStatisticsRole)
+            self.filesLabel.setText(
+                self.tr("%n file(s) changed", None, int(totals[0])))
+            self.insertionsLabel.setText(
+                self.tr("%n line(s) inserted", None, int(totals[1])))
+            self.deletionsLabel.setText(
+                self.tr("%n line(s) deleted", None, int(totals[2])))
+        else:
+            self.filesLabel.setText("")
+            self.insertionsLabel.setText("")
+            self.deletionsLabel.setText("")
+    
+    @pyqtSlot(QPoint)
+    def on_shelveList_customContextMenuRequested(self, pos):
+        """
+        Protected slot to show the context menu of the shelve list.
+        
+        @param pos position of the mouse pointer (QPoint)
+        """
+        selectedItemsCount = len(self.shelveList.selectedItems())
+        self.__unshelveAct.setEnabled(selectedItemsCount == 1)
+        self.__deleteAct.setEnabled(selectedItemsCount > 0)
+        
+        self.__contextMenu.popup(self.mapToGlobal(pos))
+    
+    @pyqtSlot()
+    def on_refreshButton_clicked(self):
+        """
+        Private slot to refresh the list of shelves.
+        """
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True)
+        self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
+        
+        self.inputGroup.setEnabled(True)
+        self.inputGroup.show()
+        self.refreshButton.setEnabled(False)
+        
+        self.start(self.__projectDir)
+    
+    def on_passwordCheckBox_toggled(self, isOn):
+        """
+        Private slot to handle the password checkbox toggled.
+        
+        @param isOn flag indicating the status of the check box (boolean)
+        """
+        if isOn:
+            self.input.setEchoMode(QLineEdit.Password)
+        else:
+            self.input.setEchoMode(QLineEdit.Normal)
+    
+    @pyqtSlot()
+    def on_sendButton_clicked(self):
+        """
+        Private slot to send the input to the merurial process.
+        """
+        input = self.input.text()
+        input += os.linesep
+        
+        if self.passwordCheckBox.isChecked():
+            self.errors.insertPlainText(os.linesep)
+            self.errors.ensureCursorVisible()
+        else:
+            self.errors.insertPlainText(input)
+            self.errors.ensureCursorVisible()
+        self.errorGroup.show()
+        
+        self.process.write(input)
+        
+        self.passwordCheckBox.setChecked(False)
+        self.input.clear()
+    
+    def on_input_returnPressed(self):
+        """
+        Private slot to handle the press of the return key in the input field.
+        """
+        self.intercept = True
+        self.on_sendButton_clicked()
+    
+    def keyPressEvent(self, evt):
+        """
+        Protected slot to handle a key press event.
+        
+        @param evt the key press event (QKeyEvent)
+        """
+        if self.intercept:
+            self.intercept = False
+            evt.accept()
+            return
+        super().keyPressEvent(evt)
+    
+    def __unshelve(self):
+        """
+        Private slot to restore the selected shelve of changes.
+        """
+        itm = self.shelveList.selectedItems()[0]
+        if itm is not None:
+            name = itm.text(self.NameColumn)
+            self.vcs.getExtensionObject("shelve")\
+                .hgUnshelve(self.__projectDir, shelveName=name)
+            self.on_refreshButton_clicked()
+    
+    def __deleteShelves(self):
+        """
+        Private slot to delete the selected shelves.
+        """
+        shelveNames = []
+        for itm in self.shelveList.selectedItems():
+            shelveNames.append(itm.text(self.NameColumn))
+        if shelveNames:
+            self.vcs.getExtensionObject("shelve")\
+                .hgDeleteShelves(self.__projectDir, shelveNames=shelveNames)
+            self.on_refreshButton_clicked()
+    
+    def __cleanupShelves(self):
+        """
+        Private slot to delete all shelves.
+        """
+        self.vcs.getExtensionObject("shelve")\
+            .hgCleanupShelves(self.__projectDir)
+        self.on_refreshButton_clicked()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveBrowserDialog.ui	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>HgShelveBrowserDialog</class>
+ <widget class="QWidget" name="HgShelveBrowserDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>650</width>
+    <height>574</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Mercurial Shelve Browser</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="QTreeWidget" name="shelveList">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>5</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="contextMenuPolicy">
+      <enum>Qt::CustomContextMenu</enum>
+     </property>
+     <property name="alternatingRowColors">
+      <bool>true</bool>
+     </property>
+     <property name="selectionMode">
+      <enum>QAbstractItemView::ExtendedSelection</enum>
+     </property>
+     <property name="rootIsDecorated">
+      <bool>false</bool>
+     </property>
+     <property name="itemsExpandable">
+      <bool>false</bool>
+     </property>
+     <property name="sortingEnabled">
+      <bool>true</bool>
+     </property>
+     <column>
+      <property name="text">
+       <string>Name</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Age</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Message</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>4</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title">
+      <string>Statistics</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <item>
+       <widget class="QTreeWidget" name="statisticsList">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+          <horstretch>0</horstretch>
+          <verstretch>2</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="alternatingRowColors">
+         <bool>true</bool>
+        </property>
+        <property name="selectionMode">
+         <enum>QAbstractItemView::NoSelection</enum>
+        </property>
+        <property name="rootIsDecorated">
+         <bool>false</bool>
+        </property>
+        <property name="itemsExpandable">
+         <bool>false</bool>
+        </property>
+        <column>
+         <property name="text">
+          <string>File</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Changes</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Lines added</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Lines deleted</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string/>
+         </property>
+        </column>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <item>
+         <widget class="QLabel" name="filesLabel">
+          <property name="text">
+           <string/>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="insertionsLabel">
+          <property name="text">
+           <string/>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="deletionsLabel">
+          <property name="text">
+           <string/>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="errorGroup">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>1</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title">
+      <string>Errors</string>
+     </property>
+     <layout class="QVBoxLayout">
+      <item>
+       <widget class="QTextEdit" name="errors">
+        <property name="whatsThis">
+         <string>&lt;b&gt;Mercurial log errors&lt;/b&gt;&lt;p&gt;This shows possible error messages of the hg log command.&lt;/p&gt;</string>
+        </property>
+        <property name="readOnly">
+         <bool>true</bool>
+        </property>
+        <property name="acceptRichText">
+         <bool>false</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="inputGroup">
+     <property name="title">
+      <string>Input</string>
+     </property>
+     <layout class="QGridLayout" name="_2">
+      <item row="1" column="1">
+       <spacer>
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Expanding</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>327</width>
+          <height>29</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item row="1" column="2">
+       <widget class="QPushButton" name="sendButton">
+        <property name="toolTip">
+         <string>Press to send the input to the hg process</string>
+        </property>
+        <property name="text">
+         <string>&amp;Send</string>
+        </property>
+        <property name="shortcut">
+         <string>Alt+S</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="0" colspan="3">
+       <widget class="QLineEdit" name="input">
+        <property name="toolTip">
+         <string>Enter data to be sent to the hg process</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QCheckBox" name="passwordCheckBox">
+        <property name="toolTip">
+         <string>Select to switch the input field to password mode</string>
+        </property>
+        <property name="text">
+         <string>&amp;Password Mode</string>
+        </property>
+        <property name="shortcut">
+         <string>Alt+P</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+  <zorder>buttonBox</zorder>
+  <zorder>shelveList</zorder>
+  <zorder>errorGroup</zorder>
+  <zorder>inputGroup</zorder>
+  <zorder>groupBox</zorder>
+ </widget>
+ <tabstops>
+  <tabstop>shelveList</tabstop>
+  <tabstop>statisticsList</tabstop>
+  <tabstop>errors</tabstop>
+  <tabstop>input</tabstop>
+  <tabstop>passwordCheckBox</tabstop>
+  <tabstop>sendButton</tabstop>
+  <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
--- a/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.py	Fri Feb 21 19:13:43 2014 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.py	Sat Feb 22 19:57:46 2014 +0100
@@ -28,6 +28,8 @@
         
         self.__initialDateTime = QDateTime.currentDateTime()
         self.dateTimeEdit.setDateTime(self.__initialDateTime)
+        
+        self.resize(self.width(), self.minimumSizeHint().height())
     
     def getData(self):
         """
@@ -44,6 +46,6 @@
         return (
             self.nameEdit.text(),
             dateTime,
-            self.messageEdit.toPlainText(),
+            self.messageEdit.text(),
             self.addRemoveCheckBox.isChecked(),
         )
--- a/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.ui	Fri Feb 21 19:13:43 2014 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.ui	Sat Feb 22 19:57:46 2014 +0100
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>500</width>
-    <height>250</height>
+    <height>170</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -79,12 +79,9 @@
     </widget>
    </item>
    <item row="2" column="1">
-    <widget class="QPlainTextEdit" name="messageEdit">
+    <widget class="QLineEdit" name="messageEdit">
      <property name="toolTip">
-      <string>Enter message for the shelve</string>
-     </property>
-     <property name="tabChangesFocus">
-      <bool>true</bool>
+      <string>Enter a message for the shelve</string>
      </property>
     </widget>
    </item>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelvesSelectionDialog.py	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+
+"""
+Module implementing a dialog to select multiple shelve names.
+"""
+
+from PyQt4.QtCore import pyqtSlot
+from PyQt4.QtGui import QDialog, QDialogButtonBox
+
+from .Ui_HgShelvesSelectionDialog import Ui_HgShelvesSelectionDialog
+
+
+class HgShelvesSelectionDialog(QDialog, Ui_HgShelvesSelectionDialog):
+    """
+    Class implementing a dialog to select multiple shelve names.
+    """
+    def __init__(self, message, shelveNames, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.message.setText(message)
+        self.shelvesList.addItems(shelveNames)
+        
+        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
+    
+    @pyqtSlot()
+    def on_shelvesList_itemSelectionChanged(self):
+        """
+        Private slot to enabled the OK button if items have been selected.
+        """
+        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(
+            len(self.shelvesList.selectedItems()) > 0)
+    
+    def getSelectedShelves(self):
+        """
+        Public method to retrieve the selected shelve names.
+        
+        @return selected shelve names (list of string)
+        """
+        names = []
+        for itm in self.shelvesList.selectedItems():
+            names.append(itm.text())
+        
+        return names
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelvesSelectionDialog.ui	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>HgShelvesSelectionDialog</class>
+ <widget class="QDialog" name="HgShelvesSelectionDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Mercurial Shelve Selection</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="message">
+     <property name="text">
+      <string/>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QListWidget" name="shelvesList">
+     <property name="alternatingRowColors">
+      <bool>true</bool>
+     </property>
+     <property name="selectionMode">
+      <enum>QAbstractItemView::ExtendedSelection</enum>
+     </property>
+     <property name="sortingEnabled">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>shelvesList</tabstop>
+  <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>HgShelvesSelectionDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>HgShelvesSelectionDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgUnshelveDataDialog.py	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,49 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2014 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter the data for an unshelve operation.
+"""
+
+from PyQt4.QtGui import QDialog
+
+from .Ui_HgUnshelveDataDialog import Ui_HgUnshelveDataDialog
+
+
+class HgUnshelveDataDialog(QDialog, Ui_HgUnshelveDataDialog):
+    """
+    Class implementing a dialog to enter the data for an unshelve operation.
+    """
+    def __init__(self, shelveNames, shelveName="", parent=None):
+        """
+        Constructor
+        
+        @param shelveNames list of available shelves (list of string)
+        @param shelveName name of the shelve to restore (string)
+        @param parent reference to the parent widget (QWidget)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        
+        self.nameComboBox.addItem("")
+        self.nameComboBox.addItems(sorted(shelveNames))
+        
+        if shelveName and shelveName in shelveNames:
+            self.nameComboBox.setCurrentIndex(
+                self.nameComboBox.findText(shelveName))
+        
+        self.resize(self.width(), self.minimumSizeHint().height())
+    
+    def getData(self):
+        """
+        Public method to get the user data.
+        
+        @return tuple containing the name (string) and a flag indicating
+            to keep the shelved change (boolean)
+        """
+        return (
+            self.nameComboBox.currentText(),
+            self.keepCheckBox.isChecked()
+        )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgUnshelveDataDialog.ui	Sat Feb 22 19:57:46 2014 +0100
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>HgUnshelveDataDialog</class>
+ <widget class="QDialog" name="HgUnshelveDataDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>108</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QComboBox" name="nameComboBox">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="toolTip">
+      <string>Enter the name of the shelve</string>
+     </property>
+     <property name="editable">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0" colspan="2">
+    <widget class="QCheckBox" name="keepCheckBox">
+     <property name="toolTip">
+      <string>Select to keep the shelved change</string>
+     </property>
+     <property name="text">
+      <string>Keep shelved change</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>nameComboBox</tabstop>
+  <tabstop>keepCheckBox</tabstop>
+  <tabstop>buttonBox</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>HgUnshelveDataDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>HgUnshelveDataDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- a/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectHelper.py	Fri Feb 21 19:13:43 2014 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectHelper.py	Sat Feb 22 19:57:46 2014 +0100
@@ -42,6 +42,93 @@
         ))
         self.hgShelveAct.triggered[()].connect(self.__hgShelve)
         self.actions.append(self.hgShelveAct)
+        
+        self.hgShelveBrowserAct = E5Action(
+            self.tr('Show shelve browser'),
+            self.tr('Show shelve browser...'),
+            0, 0, self, 'mercurial_shelve_browser')
+        self.hgShelveBrowserAct.setStatusTip(self.tr(
+            'Show a dialog with all shelves'
+        ))
+        self.hgShelveBrowserAct.setWhatsThis(self.tr(
+            """<b>Show shelve browser...</b>"""
+            """<p>This shows a dialog listing all available shelves."""
+            """ Actions on these shelves may be executed via the"""
+            """ context menu.</p>"""
+        ))
+        self.hgShelveBrowserAct.triggered[()].connect(
+            self.__hgShelveBrowser)
+        self.actions.append(self.hgShelveBrowserAct)
+        
+        self.hgUnshelveAct = E5Action(
+            self.tr('Restore shelved change'),
+            self.tr('Restore shelved change...'),
+            0, 0, self, 'mercurial_unshelve')
+        self.hgUnshelveAct.setStatusTip(self.tr(
+            'Restore a shelved change to the project directory'
+        ))
+        self.hgUnshelveAct.setWhatsThis(self.tr(
+            """<b>Restore shelved change</b>"""
+            """<p>This restore a shelved change to the project directory."""
+            """</p>"""
+        ))
+        self.hgUnshelveAct.triggered[()].connect(self.__hgUnshelve)
+        self.actions.append(self.hgUnshelveAct)
+        
+        self.hgUnshelveAbortAct = E5Action(
+            self.tr('Abort restore'),
+            self.tr('Abort restore...'),
+            0, 0, self, 'mercurial_unshelve_abort')
+        self.hgUnshelveAbortAct.setStatusTip(self.tr(
+            'Abort the restore operation in progress'
+        ))
+        self.hgUnshelveAbortAct.setWhatsThis(self.tr(
+            """<b>Abort restore</b>"""
+            """<p>This aborts the restore operation in progress and reverts"""
+            """ already applied changes.</p>"""
+        ))
+        self.hgUnshelveAbortAct.triggered[()].connect(self.__hgUnshelveAbort)
+        self.actions.append(self.hgUnshelveAbortAct)
+        
+        self.hgUnshelveContinueAct = E5Action(
+            self.tr('Continue restore'),
+            self.tr('Continue restore...'),
+            0, 0, self, 'mercurial_unshelve_continue')
+        self.hgUnshelveContinueAct.setStatusTip(self.tr(
+            'Continue the restore operation in progress'
+        ))
+        self.hgUnshelveContinueAct.setWhatsThis(self.tr(
+            """<b>Continue restore</b>"""
+            """<p>This continues the restore operation in progress.</p>"""
+        ))
+        self.hgUnshelveContinueAct.triggered[()].connect(
+            self.__hgUnshelveContinue)
+        self.actions.append(self.hgUnshelveContinueAct)
+        
+        self.hgShelveDeleteAct = E5Action(
+            self.tr('Delete shelved changes'),
+            self.tr('Delete shelved changes...'),
+            0, 0, self, 'mercurial_shelve_delete')
+        self.hgShelveDeleteAct.setWhatsThis(self.tr(
+            """<b>Delete shelved changes...</b>"""
+            """<p>This opens a dialog to select the shelved changes to"""
+            """ delete and deletes the selected ones.</p>"""
+        ))
+        self.hgShelveDeleteAct.triggered[()].connect(
+            self.__hgDeleteShelves)
+        self.actions.append(self.hgShelveDeleteAct)
+        
+        self.hgShelveCleanupAct = E5Action(
+            self.tr('Delete ALL shelved changes'),
+            self.tr('Delete ALL shelved changes'),
+            0, 0, self, 'mercurial_shelve_cleanup')
+        self.hgShelveCleanupAct.setWhatsThis(self.tr(
+            """<b>Delete ALL shelved changes</b>"""
+            """<p>This deletes all shelved changes.</p>"""
+        ))
+        self.hgShelveCleanupAct.triggered[()].connect(
+            self.__hgCleanupShelves)
+        self.actions.append(self.hgShelveCleanupAct)
     
     def initMenu(self, mainMenu):
         """
@@ -54,6 +141,15 @@
         menu.setTearOffEnabled(True)
         
         menu.addAction(self.hgShelveAct)
+        menu.addSeparator()
+        menu.addAction(self.hgShelveBrowserAct)
+        menu.addSeparator()
+        menu.addAction(self.hgUnshelveAct)
+        menu.addAction(self.hgUnshelveContinueAct)
+        menu.addAction(self.hgUnshelveAbortAct)
+        menu.addSeparator()
+        menu.addAction(self.hgShelveDeleteAct)
+        menu.addAction(self.hgShelveCleanupAct)
         
         return menu
     
@@ -65,17 +161,72 @@
         """
         return self.tr("Shelve")
     
+    def __reopenProject(self, shouldReopen, title):
+        """
+        Private method to reopen the project if needed and wanted.
+        
+        @param shouldReopen flag indicating that the project should
+            be reopened (boolean)
+        @param title title of the message box (string)
+        """
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                None,
+                title,
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()
+    
     def __hgShelve(self):
         """
         Private slot used to shelve all current changes.
         """
         shouldReopen = self.vcs.getExtensionObject("shelve")\
             .hgShelve(self.project.getProjectPath())
-        if shouldReopen:
-            res = E5MessageBox.yesNo(
-                None,
-                self.tr("Shelve"),
-                self.tr("""The project should be reread. Do this now?"""),
-                yesDefault=True)
-            if res:
-                self.project.reopenProject()
+        self.__reopenProject(shouldReopen, self.tr("Shelve"))
+    
+    def __hgShelveBrowser(self):
+        """
+        Private slot to show the shelve browser dialog.
+        """
+        self.vcs.getExtensionObject("shelve")\
+            .hgShelveBrowser(self.project.getProjectPath())
+    
+    def __hgUnshelve(self):
+        """
+        Private slot used to restore a shelved change.
+        """
+        shouldReopen = self.vcs.getExtensionObject("shelve")\
+            .hgUnshelve(self.project.getProjectPath())
+        self.__reopenProject(shouldReopen, self.tr("Unshelve"))
+    
+    def __hgUnshelveAbort(self):
+        """
+        Private slot used to abort an ongoing restore operation.
+        """
+        shouldReopen = self.vcs.getExtensionObject("shelve")\
+            .hgUnshelveAbort(self.project.getProjectPath())
+        self.__reopenProject(shouldReopen, self.tr("Abort Unshelve"))
+    
+    def __hgUnshelveContinue(self):
+        """
+        Private slot used to continue an ongoing restore operation.
+        """
+        shouldReopen = self.vcs.getExtensionObject("shelve")\
+            .hgUnshelveContinue(self.project.getProjectPath())
+        self.__reopenProject(shouldReopen, self.tr("Continue Unshelve"))
+    
+    def __hgDeleteShelves(self):
+        """
+        Private slot to delete selected shelves.
+        """
+        self.vcs.getExtensionObject("shelve").hgDeleteShelves(
+            self.project.getProjectPath())
+    
+    def __hgCleanupShelves(self):
+        """
+        Private slot to delete all shelves.
+        """
+        self.vcs.getExtensionObject("shelve").hgCleanupShelves(
+            self.project.getProjectPath())
--- a/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/shelve.py	Fri Feb 21 19:13:43 2014 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/shelve.py	Sat Feb 22 19:57:46 2014 +0100
@@ -9,12 +9,16 @@
 
 import os
 
-##from PyQt4.QtCore import QDateTime
+from PyQt4.QtCore import QProcess
 from PyQt4.QtGui import QDialog
 
+from E5Gui import E5MessageBox
+
 from ..HgExtension import HgExtension
 from ..HgDialog import HgDialog
 
+import Preferences
+
 
 class Shelve(HgExtension):
     """
@@ -27,11 +31,52 @@
         @param vcs reference to the Mercurial vcs object
         """
         super().__init__(vcs)
+        
+        self.__unshelveKeep = False
+        
+        self.__shelveBrowserDialog = None
     
     def shutdown(self):
         """
         Public method used to shutdown the shelve interface.
         """
+        if self.__shelveBrowserDialog is not None:
+            self.__shelveBrowserDialog.close()
+    
+    def __hgGetShelveNamesList(self, repodir):
+        """
+        Private method to get the list of shelved changes.
+        
+        @param repodir directory name of the repository (string)
+        @return list of shelved changes (list of string)
+        """
+        args = []
+        args.append('shelve')
+        args.append('--list')
+        args.append('--quiet')
+        
+        client = self.vcs.getClient()
+        output = ""
+        if client:
+            output = client.runcommand(args)[0]
+        else:
+            ioEncoding = Preferences.getSystem("IOEncoding")
+            process = QProcess()
+            process.setWorkingDirectory(repodir)
+            process.start('hg', args)
+            procStarted = process.waitForStarted(5000)
+            if procStarted:
+                finished = process.waitForFinished(30000)
+                if finished and process.exitCode() == 0:
+                    output = str(
+                        process.readAllStandardOutput(), ioEncoding,
+                        'replace')
+        
+        shelveNamesList = []
+        for line in output.splitlines():
+            shelveNamesList.append(line.strip())
+        
+        return shelveNamesList[:]
     
     def hgShelve(self, name):
         """
@@ -86,3 +131,177 @@
                 res = dia.hasAddOrDelete()
                 self.vcs.checkVCSStatus()
         return res
+    
+    def hgShelveBrowser(self, projectDir):
+        """
+        Public method to show the shelve browser dialog.
+        
+        @param projectDir name of the project directory (string)
+        """
+        if self.__shelveBrowserDialog is None:
+            from .HgShelveBrowserDialog import HgShelveBrowserDialog
+            self.__shelveBrowserDialog = HgShelveBrowserDialog(
+                self.vcs)
+        self.__shelveBrowserDialog.show()
+        self.__shelveBrowserDialog.start(projectDir)
+    
+    def hgUnshelve(self, name, shelveName=""):
+        """
+        Public method to restore shelved changes to the project directory.
+        
+        @param name name of the project directory (string)
+        @keyparam shelveName name of the shelve to restore (string)
+        @return flag indicating that the project should be reread (boolean)
+        """
+        # find the root of the repo
+        repodir = name
+        while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
+            repodir = os.path.dirname(repodir)
+            if os.path.splitdrive(repodir)[1] == os.sep:
+                return False
+        
+        res = False
+        from .HgUnshelveDataDialog import HgUnshelveDataDialog
+        dlg = HgUnshelveDataDialog(self.__hgGetShelveNamesList(repodir),
+                                   shelveName=shelveName)
+        if dlg.exec_() == QDialog.Accepted:
+            shelveName, keep = dlg.getData()
+            self.__unshelveKeep = keep  # store for potential continue
+            
+            args = []
+            args.append("unshelve")
+            if keep:
+                args.append("--keep")
+            if shelveName:
+                args.append(shelveName)
+            
+            dia = HgDialog(self.tr('Restore shelved changes'), self.vcs)
+            res = dia.startProcess(args, repodir)
+            if res:
+                dia.exec_()
+                res = dia.hasAddOrDelete()
+                self.vcs.checkVCSStatus()
+        return res
+    
+    def hgUnshelveAbort(self, name):
+        """
+        Public method to abort the ongoing restore operation.
+        
+        @param name name of the project directory (string)
+        @return flag indicating that the project should be reread (boolean)
+        """
+        # find the root of the repo
+        repodir = name
+        while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
+            repodir = os.path.dirname(repodir)
+            if os.path.splitdrive(repodir)[1] == os.sep:
+                return False
+        
+        args = []
+        args.append("unshelve")
+        args.append("--abort")
+        
+        dia = HgDialog(self.tr('Abort restore operation'), self.vcs)
+        res = dia.startProcess(args, repodir)
+        if res:
+            dia.exec_()
+            res = dia.hasAddOrDelete()
+            self.vcs.checkVCSStatus()
+        return res
+    
+    def hgUnshelveContinue(self, name):
+        """
+        Public method to continue the ongoing restore operation.
+        
+        @param name name of the project directory (string)
+        @return flag indicating that the project should be reread (boolean)
+        """
+        # find the root of the repo
+        repodir = name
+        while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
+            repodir = os.path.dirname(repodir)
+            if os.path.splitdrive(repodir)[1] == os.sep:
+                return False
+        
+        args = []
+        args.append("unshelve")
+        if self.__unshelveKeep:
+            args.append("--keep")
+        args.append("--continue")
+        
+        dia = HgDialog(self.tr('Continue restore operation'), self.vcs)
+        res = dia.startProcess(args, repodir)
+        if res:
+            dia.exec_()
+            res = dia.hasAddOrDelete()
+            self.vcs.checkVCSStatus()
+        return res
+    
+    def hgDeleteShelves(self, name, shelveNames=None):
+        """
+        Public method to delete named shelves.
+        
+        @param name name of the project directory (string)
+        @param shelveNames name of shelves to delete (list of string)
+        """
+        # find the root of the repo
+        repodir = name
+        while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
+            repodir = os.path.dirname(repodir)
+            if os.path.splitdrive(repodir)[1] == os.sep:
+                return
+        
+        if not shelveNames:
+            from .HgShelvesSelectionDialog import HgShelvesSelectionDialog
+            dlg = HgShelvesSelectionDialog(
+                self.tr("Select the shelves to be deleted:"),
+                self.__hgGetShelveNamesList(repodir))
+            if dlg.exec_() == QDialog.Accepted:
+                shelveNames = dlg.getSelectedShelves()
+            else:
+                return
+        
+        from UI.DeleteFilesConfirmationDialog import \
+            DeleteFilesConfirmationDialog
+        dlg = DeleteFilesConfirmationDialog(
+            None,
+            self.tr("Delete shelves"),
+            self.tr("Do you really want to delete these shelves?"),
+            shelveNames)
+        if dlg.exec_() == QDialog.Accepted:
+            args = []
+            args.append("shelve")
+            args.append("--delete")
+            args.extend(shelveNames)
+            
+            dia = HgDialog(self.tr('Delete shelves'), self.vcs)
+            res = dia.startProcess(args, repodir)
+            if res:
+                dia.exec_()
+    
+    def hgCleanupShelves(self, name):
+        """
+        Public method to delete all shelves.
+        
+        @param name name of the project directory (string)
+        """
+        # find the root of the repo
+        repodir = name
+        while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
+            repodir = os.path.dirname(repodir)
+            if os.path.splitdrive(repodir)[1] == os.sep:
+                return
+        
+        res = E5MessageBox.yesNo(
+            None,
+            self.tr("Delete all shelves"),
+            self.tr("""Do you really want to delete all shelved changes?"""))
+        if res:
+            args = []
+            args.append("shelve")
+            args.append("--cleanup")
+            
+            dia = HgDialog(self.tr('Delete all shelves'), self.vcs)
+            res = dia.startProcess(args, repodir)
+            if res:
+                dia.exec_()
--- a/eric5.e4p	Fri Feb 21 19:13:43 2014 +0100
+++ b/eric5.e4p	Sat Feb 22 19:57:46 2014 +0100
@@ -1116,6 +1116,9 @@
     <Source>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/shelve.py</Source>
     <Source>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectHelper.py</Source>
     <Source>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.py</Source>
+    <Source>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgUnshelveDataDialog.py</Source>
+    <Source>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveBrowserDialog.py</Source>
+    <Source>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelvesSelectionDialog.py</Source>
   </Sources>
   <Forms>
     <Form>PyUnit/UnittestDialog.ui</Form>
@@ -1438,6 +1441,9 @@
     <Form>Plugins/VcsPlugins/vcsMercurial/HgRepoConfigDataDialog.ui</Form>
     <Form>Plugins/VcsPlugins/vcsMercurial/HgUserConfigDataDialog.ui</Form>
     <Form>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveDataDialog.ui</Form>
+    <Form>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgUnshelveDataDialog.ui</Form>
+    <Form>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveBrowserDialog.ui</Form>
+    <Form>Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelvesSelectionDialog.ui</Form>
   </Forms>
   <Translations>
     <Translation>i18n/eric5_cs.ts</Translation>

eric ide

mercurial