Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py

changeset 4072
46fb585f60f2
parent 4065
8e81259fb739
child 4110
5a106c734527
diff -r 5d46da4c2ce5 -r 46fb585f60f2 Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py
--- a/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py	Wed Jan 28 19:40:01 2015 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py	Wed Jan 28 19:48:55 2015 +0100
@@ -43,6 +43,11 @@
         super(HgDiffDialog, self).__init__(parent)
         self.setupUi(self)
         
+        self.refreshButton = self.buttonBox.addButton(
+            self.tr("Refresh"), QDialogButtonBox.ActionRole)
+        self.refreshButton.setToolTip(
+            self.tr("Press to refresh the display"))
+        self.refreshButton.setEnabled(False)
         self.buttonBox.button(QDialogButtonBox.Save).setEnabled(False)
         self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
         
@@ -98,18 +103,23 @@
         else:
             return str(version)
     
-    def start(self, fn, versions=None, bundle=None, qdiff=False):
+    def start(self, fn, versions=None, bundle=None, qdiff=False,
+              refreshable=False):
         """
         Public slot to start the hg diff command.
         
         @param fn filename to be diffed (string)
-        @param versions list of versions to be diffed (list of up to 2 strings
-            or None)
-        @param bundle name of a bundle file (string)
-        @param qdiff flag indicating qdiff command shall be used (boolean)
+        @keyparam versions list of versions to be diffed (list of up to
+            2 strings or None)
+        @keyparam bundle name of a bundle file (string)
+        @keyparam qdiff flag indicating qdiff command shall be used (boolean)
+        @keyparam refreshable flag indicating a refreshable diff (boolean)
         """
+        self.refreshButton.setVisible(refreshable)
+        
         self.errorGroup.hide()
         self.inputGroup.show()
+        self.inputGroup.setEnabled(True)
         self.intercept = False
         self.filename = fn
         
@@ -222,6 +232,7 @@
         QApplication.restoreOverrideCursor()
         self.inputGroup.setEnabled(False)
         self.inputGroup.hide()
+        self.refreshButton.setEnabled(True)
         
         if self.paras == 0:
             self.contents.setCurrentCharFormat(self.cNormalFormat)
@@ -229,6 +240,7 @@
                 self.tr('There is no difference.'))
         
         self.buttonBox.button(QDialogButtonBox.Save).setEnabled(self.paras > 0)
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
         self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
         self.buttonBox.button(QDialogButtonBox.Close).setFocus(
             Qt.OtherFocusReason)
@@ -351,6 +363,8 @@
         """
         if button == self.buttonBox.button(QDialogButtonBox.Save):
             self.on_saveButton_clicked()
+        elif button == self.refreshButton:
+            self.on_refreshButton_clicked()
     
     @pyqtSlot(int)
     def on_filesCombo_activated(self, index):
@@ -446,6 +460,18 @@
                     '<br>Reason: {1}</p>')
                 .format(fname, str(why)))
     
+    @pyqtSlot()
+    def on_refreshButton_clicked(self):
+        """
+        Private slot to refresh the display.
+        """
+        self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
+        
+        self.buttonBox.button(QDialogButtonBox.Save).setEnabled(False)
+        self.refreshButton.setEnabled(False)
+        
+        self.start(self.filename, refreshable=True)
+    
     def on_passwordCheckBox_toggled(self, isOn):
         """
         Private slot to handle the password checkbox toggled.

eric ide

mercurial