Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py

changeset 2815
53c1d1f9ec86
parent 2771
281c9b30dd91
child 2838
0f1423054184
--- a/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Mon Jul 22 19:02:37 2013 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Mon Jul 22 20:08:29 2013 +0200
@@ -25,11 +25,12 @@
     """
     Class implementing a dialog to show the output of the hg status command process.
     """
-    def __init__(self, vcs, parent=None):
+    def __init__(self, vcs, mq=False, parent=None):
         """
         Constructor
         
         @param vcs reference to the vcs object
+        @param mq flag indicating to show a queue repo status (boolean)
         @param parent parent widget (QWidget)
         """
         super().__init__(parent)
@@ -52,37 +53,47 @@
         self.vcs = vcs
         self.vcs.committed.connect(self.__committed)
         self.__hgClient = self.vcs.getClient()
+        self.__mq = mq
         
         self.statusList.headerItem().setText(self.__lastColumn, "")
         self.statusList.header().setSortIndicator(self.__pathColumn, Qt.AscendingOrder)
         
+        if mq:
+            self.buttonsLine.setVisible(False)
+            self.addButton.setVisible(False)
+            self.diffButton.setVisible(False)
+            self.revertButton.setVisible(False)
+            self.forgetButton.setVisible(False)
+            self.restoreButton.setVisible(False)
+        
         self.menuactions = []
         self.menu = QMenu()
-        self.menuactions.append(self.menu.addAction(
-            self.trUtf8("Commit changes to repository..."), self.__commit))
-        self.menuactions.append(self.menu.addAction(
-            self.trUtf8("Select all for commit"), self.__commitSelectAll))
-        self.menuactions.append(self.menu.addAction(
-            self.trUtf8("Deselect all from commit"), self.__commitDeselectAll))
-        self.menu.addSeparator()
-        self.menuactions.append(self.menu.addAction(
-            self.trUtf8("Add to repository"), self.__add))
-        self.menuactions.append(self.menu.addAction(
-            self.trUtf8("Show differences"), self.__diff))
-        self.menuactions.append(self.menu.addAction(
-            self.trUtf8("Remove from repository"), self.__forget))
-        self.menuactions.append(self.menu.addAction(
-            self.trUtf8("Revert changes"), self.__revert))
-        self.menuactions.append(self.menu.addAction(
-            self.trUtf8("Restore missing"), self.__restoreMissing))
-        self.menu.addSeparator()
-        self.menuactions.append(self.menu.addAction(self.trUtf8("Adjust column sizes"),
-            self.__resizeColumns))
-        for act in self.menuactions:
-            act.setEnabled(False)
-        
-        self.statusList.setContextMenuPolicy(Qt.CustomContextMenu)
-        self.statusList.customContextMenuRequested.connect(self.__showContextMenu)
+        if not mq:
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Commit changes to repository..."), self.__commit))
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Select all for commit"), self.__commitSelectAll))
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Deselect all from commit"), self.__commitDeselectAll))
+            self.menu.addSeparator()
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Add to repository"), self.__add))
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Show differences"), self.__diff))
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Remove from repository"), self.__forget))
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Revert changes"), self.__revert))
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Restore missing"), self.__restoreMissing))
+            self.menu.addSeparator()
+            self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Adjust column sizes"), self.__resizeColumns))
+            for act in self.menuactions:
+                act.setEnabled(False)
+            
+            self.statusList.setContextMenuPolicy(Qt.CustomContextMenu)
+            self.statusList.customContextMenuRequested.connect(self.__showContextMenu)
         
         self.modifiedIndicators = [
             self.trUtf8('added'),
@@ -190,22 +201,32 @@
         self.statusFilterCombo.clear()
         self.__statusFilters = []
         
-        self.setWindowTitle(self.trUtf8('Mercurial Status'))
+        if self.__mq:
+            self.setWindowTitle(self.trUtf8("Mercurial Queue Repository Status"))
+        else:
+            self.setWindowTitle(self.trUtf8('Mercurial Status'))
         
         args = []
         args.append('status')
         self.vcs.addArguments(args, self.vcs.options['global'])
-        self.vcs.addArguments(args, self.vcs.options['status'])
-        
-        if self.vcs.hasSubrepositories():
-            args.append("--subrepos")
-        
-        if isinstance(fn, list):
-            self.dname, fnames = self.vcs.splitPathList(fn)
-            self.vcs.addArguments(args, fn)
+        if self.__mq:
+            args.append('--mq')
+            if isinstance(fn, list):
+                self.dname, fnames = self.vcs.splitPathList(fn)
+            else:
+                self.dname, fname = self.vcs.splitPath(fn)
         else:
-            self.dname, fname = self.vcs.splitPath(fn)
-            args.append(fn)
+            self.vcs.addArguments(args, self.vcs.options['status'])
+            
+            if self.vcs.hasSubrepositories():
+                args.append("--subrepos")
+            
+            if isinstance(fn, list):
+                self.dname, fnames = self.vcs.splitPathList(fn)
+                self.vcs.addArguments(args, fn)
+            else:
+                self.dname, fname = self.vcs.splitPath(fn)
+                args.append(fn)
         
         # find the root of the repo
         repodir = self.dname
@@ -541,20 +562,23 @@
         """
         Private slot to handle the Commit context menu entry.
         """
-        names = [os.path.join(self.dname, itm.text(self.__pathColumn)) \
-                 for itm in self.__getCommitableItems()]
-        if not names:
-            E5MessageBox.information(self,
-                self.trUtf8("Commit"),
-                self.trUtf8("""There are no entries selected to be"""
-                            """ committed."""))
-            return
-        
-        if Preferences.getVCS("AutoSaveFiles"):
-            vm = e5App().getObject("ViewManager")
-            for name in names:
-                vm.saveEditor(name)
-        self.vcs.vcsCommit(names, '')
+        if self.__mq:
+            self.vcs.vcsCommit(self.dname, "", mq=True)
+        else:
+            names = [os.path.join(self.dname, itm.text(self.__pathColumn)) \
+                     for itm in self.__getCommitableItems()]
+            if not names:
+                E5MessageBox.information(self,
+                    self.trUtf8("Commit"),
+                    self.trUtf8("""There are no entries selected to be"""
+                                """ committed."""))
+                return
+            
+            if Preferences.getVCS("AutoSaveFiles"):
+                vm = e5App().getObject("ViewManager")
+                for name in names:
+                    vm.saveEditor(name)
+            self.vcs.vcsCommit(names, '')
     
     def __committed(self):
         """

eric ide

mercurial