Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.py

branch
Py2 comp.
changeset 2847
1843ef6e2656
parent 2791
a9577f248f04
parent 2845
7e55c6268c35
child 3057
10516539f238
--- a/Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.py	Mon Aug 12 19:41:53 2013 +0200
+++ b/Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.py	Mon Aug 12 22:21:53 2013 +0200
@@ -89,6 +89,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("Revert changes"), self.__revert))
         self.menuactions.append(self.menu.addAction(
             self.trUtf8("Restore missing"), self.__restoreMissing))
@@ -339,6 +341,7 @@
         self.addButton.setEnabled(False)
         self.commitButton.setEnabled(False)
         self.diffButton.setEnabled(False)
+        self.sbsDiffButton.setEnabled(False)
         self.revertButton.setEnabled(False)
         self.restoreButton.setEnabled(False)
         
@@ -601,6 +604,7 @@
 
         self.addButton.setEnabled(unversioned)
         self.diffButton.setEnabled(modified)
+        self.sbsDiffButton.setEnabled(modified == 1)
         self.revertButton.setEnabled(modified)
         self.restoreButton.setEnabled(missing)
     
@@ -667,6 +671,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.
@@ -811,7 +822,28 @@
         self.diff.show()
         QApplication.processEvents()
         self.diff.start(names)
+    
+    def __sbsDiff(self):
+        """
+        Private slot to handle the Side-by-Side 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.svnSbsDiff(names[0])
+    
     def __lock(self):
         """
         Private slot to handle the Lock context menu entry.

eric ide

mercurial