Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py

changeset 2840
10a133f3a5e8
parent 2838
0f1423054184
child 2847
1843ef6e2656
child 3008
7848489bcb92
diff -r ae21f79512b7 -r 10a133f3a5e8 Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py
--- a/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Thu Aug 01 18:52:01 2013 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Thu Aug 01 19:12:57 2013 +0200
@@ -62,6 +62,7 @@
             self.buttonsLine.setVisible(False)
             self.addButton.setVisible(False)
             self.diffButton.setVisible(False)
+            self.sbsDiffButton.setVisible(False)
             self.revertButton.setVisible(False)
             self.forgetButton.setVisible(False)
             self.restoreButton.setVisible(False)
@@ -81,6 +82,8 @@
             self.menuactions.append(self.menu.addAction(
                 self.trUtf8("Show differences"), self.__diff))
             self.menuactions.append(self.menu.addAction(
+                self.trUtf8("Show differences side-by-side"), self.__sbsDiff))
+            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))
@@ -194,6 +197,7 @@
         self.addButton.setEnabled(False)
         self.commitButton.setEnabled(False)
         self.diffButton.setEnabled(False)
+        self.sbsDiffButton.setEnabled(False)
         self.revertButton.setEnabled(False)
         self.forgetButton.setEnabled(False)
         self.restoreButton.setEnabled(False)
@@ -459,6 +463,7 @@
 
         self.addButton.setEnabled(unversioned)
         self.diffButton.setEnabled(modified)
+        self.sbsDiffButton.setEnabled(modified == 1)
         self.revertButton.setEnabled(modified)
         self.forgetButton.setEnabled(missing)
         self.restoreButton.setEnabled(missing)
@@ -526,6 +531,13 @@
         self.__diff()
     
     @pyqtSlot()
+    def on_sbsDiffButton_clicked(self):
+        """
+        Private slot to handle the press of the Side-by-Side Diff button.
+        """
+        self.__sbsDiff()
+    
+    @pyqtSlot()
     def on_revertButton_clicked(self):
         """
         Private slot to handle the press of the Revert button.
@@ -690,13 +702,33 @@
                             """ available/selected."""))
             return
         
-        # add SBS option (file mode only)
         if self.diff is None:
             from .HgDiffDialog import HgDiffDialog
             self.diff = HgDiffDialog(self.vcs)
         self.diff.show()
         self.diff.start(names)
+    
+    def __sbsDiff(self):
+        """
+        Private slot to handle the Diff context menu entry.
+        """
+        names = [os.path.join(self.dname, itm.text(self.__pathColumn))
+                 for itm in self.__getModifiedItems()]
+        if not names:
+            E5MessageBox.information(self,
+                self.trUtf8("Side-by-Side Diff"),
+                self.trUtf8("""There are no uncommitted changes"""
+                            """ available/selected."""))
+            return
+        elif len(names) > 1:
+            E5MessageBox.information(self,
+                self.trUtf8("Side-by-Side Diff"),
+                self.trUtf8("""Only one file with uncommitted changes"""
+                            """ must be selected."""))
+            return
         
+        self.vcs.hgSbsDiff(names[0])
+    
     def __getCommitableItems(self):
         """
         Private method to retrieve all entries the user wants to commit.

eric ide

mercurial