Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py

changeset 235
7cb9905b0cf9
parent 215
e8978dca44af
child 236
d03ae0227f1c
diff -r caed45a134f8 -r 7cb9905b0cf9 Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Sun May 09 17:05:33 2010 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Sun May 09 18:13:43 2010 +0200
@@ -711,6 +711,29 @@
             self.cancelled = True
             self.__finish()
     
+    def __updateDiffButtons(self):
+        """
+        Private slot to update the enabled status of the diff buttons.
+        """
+        selectionLength = len(self.logTree.selectedItems())
+        if selectionLength <= 1:
+            current = self.logTree.currentItem()
+            parents = current.data(0, self.__parentsRole)
+            self.diffP1Button.setEnabled(len(parents) > 0)
+            self.diffP2Button.setEnabled(len(parents) > 1)
+            
+            self.diffRevisionsButton.setEnabled(False)
+        elif selectionLength == 2:
+            self.diffP1Button.setEnabled(False)
+            self.diffP2Button.setEnabled(False)
+            
+            self.diffRevisionsButton.setEnabled(True)
+        else:
+            self.diffP1Button.setEnabled(False)
+            self.diffP2Button.setEnabled(False)
+            
+            self.diffRevisionsButton.setEnabled(False)
+    
     @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
     def on_logTree_currentItemChanged(self, current, previous):
         """
@@ -732,9 +755,22 @@
             self.__resizeColumnsFiles()
             self.__resortFiles()
         
-        parents = current.data(0, self.__parentsRole)
-        self.diffP1Button.setEnabled(len(parents) > 0)
-        self.diffP2Button.setEnabled(len(parents) > 1)
+        self.__updateDiffButtons()
+##        
+##        parents = current.data(0, self.__parentsRole)
+##        self.diffP1Button.setEnabled(len(parents) > 0)
+##        self.diffP2Button.setEnabled(len(parents) > 1)
+    
+    @pyqtSlot()
+    def on_logTree_itemSelectionChanged(self):
+        """
+        Private slot called, when the selection has changed.
+        """
+##        self.diffRevisionsButton.setEnabled(len(self.logTree.selectedItems()) == 2)
+        if len(self.logTree.selectedItems()) == 1:
+            self.logTree.setCurrentItem(self.logTree.selectedItems()[0])
+        
+        self.__updateDiffButtons()
     
     @pyqtSlot()
     def on_nextButton_clicked(self):
@@ -780,6 +816,18 @@
         
         self.__diffRevisions(rev1, rev2)
     
+    @pyqtSlot()
+    def on_diffRevisionsButton_clicked(self):
+        """
+        Private slot to handle the Compare Revisions button.
+        """
+        items = self.logTree.selectedItems()
+        
+        rev2 = int(items[0].text(self.RevisionColumn).split(":")[0])
+        rev1 = int(items[1].text(self.RevisionColumn).split(":")[0])
+        
+        self.__diffRevisions(min(rev1, rev2), max(rev1, rev2))
+    
     @pyqtSlot(QDate)
     def on_fromDate_dateChanged(self, date):
         """

eric ide

mercurial