src/eric7/UI/DiffDialog.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
diff -r e9e7eca7efee -r bf71ee032bb4 src/eric7/UI/DiffDialog.py
--- a/src/eric7/UI/DiffDialog.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/UI/DiffDialog.py	Wed Jul 13 14:55:47 2022 +0200
@@ -32,89 +32,93 @@
     """
     Class implementing a dialog to compare two files.
     """
+
     def __init__(self, parent=None):
         """
         Constructor
-        
+
         @param parent reference to the parent widget (QWidget)
         """
         super().__init__(parent)
         self.setupUi(self)
-        
+
         self.file1Picker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
         self.file2Picker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
-        
+
         self.diffButton = self.buttonBox.addButton(
-            self.tr("Compare"), QDialogButtonBox.ButtonRole.ActionRole)
+            self.tr("Compare"), QDialogButtonBox.ButtonRole.ActionRole
+        )
         self.diffButton.setToolTip(
-            self.tr("Press to perform the comparison of the two files"))
+            self.tr("Press to perform the comparison of the two files")
+        )
         self.saveButton = self.buttonBox.addButton(
-            self.tr("Save"), QDialogButtonBox.ButtonRole.ActionRole)
-        self.saveButton.setToolTip(
-            self.tr("Save the output to a patch file"))
+            self.tr("Save"), QDialogButtonBox.ButtonRole.ActionRole
+        )
+        self.saveButton.setToolTip(self.tr("Save the output to a patch file"))
         self.diffButton.setEnabled(False)
         self.saveButton.setEnabled(False)
         self.diffButton.setDefault(True)
-        
+
         self.searchWidget.attachTextEdit(self.contents)
-        
-        self.filename1 = ''
-        self.filename2 = ''
-        
-        self.updateInterval = 20    # update every 20 lines
-        
+
+        self.filename1 = ""
+        self.filename2 = ""
+
+        self.updateInterval = 20  # update every 20 lines
+
         font = Preferences.getEditorOtherFonts("MonospacedFont")
         self.contents.document().setDefaultFont(font)
-        
+
         self.highlighter = DiffHighlighter(self.contents.document())
-        
+
         # connect some of our widgets explicitly
         self.file1Picker.textChanged.connect(self.__fileChanged)
         self.file2Picker.textChanged.connect(self.__fileChanged)
-        
+
     def show(self, filename=None):
         """
         Public slot to show the dialog.
-        
+
         @param filename name of a file to use as the first file (string)
         """
         if filename:
             self.file1Picker.setText(filename)
         super().show()
-        
+
     def on_buttonBox_clicked(self, button):
         """
         Private slot called by a button of the button box clicked.
-        
+
         @param button button that was clicked (QAbstractButton)
         """
         if button == self.diffButton:
             self.on_diffButton_clicked()
         elif button == self.saveButton:
             self.on_saveButton_clicked()
-        
+
     @pyqtSlot()
     def on_saveButton_clicked(self):
         """
         Private slot to handle the Save button press.
-        
+
         It saves the diff shown in the dialog to a file in the local
         filesystem.
         """
         dname, fname = Utilities.splitPath(self.filename2)
-        fname = "{0}.diff".format(self.filename2) if fname != '.' else dname
-            
+        fname = "{0}.diff".format(self.filename2) if fname != "." else dname
+
         fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
             self,
             self.tr("Save Diff"),
             fname,
             self.tr("Patch Files (*.diff)"),
             None,
-            EricFileDialog.DontConfirmOverwrite)
-        
+            EricFileDialog.DontConfirmOverwrite,
+        )
+
         if not fname:
             return
-        
+
         fpath = pathlib.Path(fname)
         if not fpath.suffix:
             ex = selectedFilter.split("(*")[1].split(")")[0]
@@ -124,23 +128,29 @@
             res = EricMessageBox.yesNo(
                 self,
                 self.tr("Save Diff"),
-                self.tr("<p>The patch file <b>{0}</b> already exists."
-                        " Overwrite it?</p>").format(fpath),
-                icon=EricMessageBox.Warning)
+                self.tr(
+                    "<p>The patch file <b>{0}</b> already exists." " Overwrite it?</p>"
+                ).format(fpath),
+                icon=EricMessageBox.Warning,
+            )
             if not res:
                 return
-        
+
         txt = self.contents.toPlainText()
         try:
-            with fpath.open("w", encoding="utf-8") as f, \
-                    contextlib.suppress(UnicodeError):
+            with fpath.open("w", encoding="utf-8") as f, contextlib.suppress(
+                UnicodeError
+            ):
                 f.write(txt)
         except OSError as why:
             EricMessageBox.critical(
-                self, self.tr('Save Diff'),
+                self,
+                self.tr("Save Diff"),
                 self.tr(
-                    '<p>The patch file <b>{0}</b> could not be saved.<br />'
-                    'Reason: {1}</p>').format(fpath, str(why)))
+                    "<p>The patch file <b>{0}</b> could not be saved.<br />"
+                    "Reason: {1}</p>"
+                ).format(fpath, str(why)),
+            )
 
     @pyqtSlot()
     def on_diffButton_clicked(self):
@@ -159,9 +169,10 @@
             EricMessageBox.critical(
                 self,
                 self.tr("Compare Files"),
-                self.tr(
-                    """<p>The file <b>{0}</b> could not be read.</p>""")
-                .format(self.filename1))
+                self.tr("""<p>The file <b>{0}</b> could not be read.</p>""").format(
+                    self.filename1
+                ),
+            )
             return
 
         self.filename2 = Utilities.toNativeSeparators(self.file2Picker.text())
@@ -176,47 +187,47 @@
             EricMessageBox.critical(
                 self,
                 self.tr("Compare Files"),
-                self.tr(
-                    """<p>The file <b>{0}</b> could not be read.</p>""")
-                .format(self.filename2))
+                self.tr("""<p>The file <b>{0}</b> could not be read.</p>""").format(
+                    self.filename2
+                ),
+            )
             return
-        
+
         self.contents.clear()
         self.highlighter.regenerateRules()
         self.saveButton.setEnabled(False)
-        
+
         if self.unifiedRadioButton.isChecked():
             self.__generateUnifiedDiff(
-                lines1, lines2, self.filename1, self.filename2,
-                filemtime1, filemtime2)
+                lines1, lines2, self.filename1, self.filename2, filemtime1, filemtime2
+            )
         else:
             self.__generateContextDiff(
-                lines1, lines2, self.filename1, self.filename2,
-                filemtime1, filemtime2)
-        
+                lines1, lines2, self.filename1, self.filename2, filemtime1, filemtime2
+            )
+
         tc = self.contents.textCursor()
         tc.movePosition(QTextCursor.MoveOperation.Start)
         self.contents.setTextCursor(tc)
         self.contents.ensureCursorVisible()
-        
+
         self.saveButton.setEnabled(True)
 
     def __appendText(self, txt):
         """
         Private method to append text to the end of the contents pane.
-        
+
         @param txt text to insert (string)
         """
         tc = self.contents.textCursor()
         tc.movePosition(QTextCursor.MoveOperation.End)
         self.contents.setTextCursor(tc)
         self.contents.insertPlainText(txt)
-        
-    def __generateUnifiedDiff(self, a, b, fromfile, tofile,
-                              fromfiledate, tofiledate):
+
+    def __generateUnifiedDiff(self, a, b, fromfile, tofile, fromfiledate, tofiledate):
         """
         Private slot to generate a unified diff output.
-        
+
         @param a first sequence of lines (list of strings)
         @param b second sequence of lines (list of strings)
         @param fromfile filename of the first file (string)
@@ -230,15 +241,14 @@
             self.__appendText(line)
             if not (paras % self.updateInterval):
                 QApplication.processEvents()
-            
+
         if self.contents.toPlainText().strip() == "":
-            self.__appendText(self.tr('There is no difference.'))
+            self.__appendText(self.tr("There is no difference."))
 
-    def __generateContextDiff(self, a, b, fromfile, tofile,
-                              fromfiledate, tofiledate):
+    def __generateContextDiff(self, a, b, fromfile, tofile, fromfiledate, tofiledate):
         """
         Private slot to generate a context diff output.
-        
+
         @param a first sequence of lines (list of strings)
         @param b second sequence of lines (list of strings)
         @param fromfile filename of the first file (string)
@@ -252,18 +262,15 @@
             self.__appendText(line)
             if not (paras % self.updateInterval):
                 QApplication.processEvents()
-            
+
         if self.contents.toPlainText().strip() == "":
-            self.__appendText(self.tr('There is no difference.'))
+            self.__appendText(self.tr("There is no difference."))
 
     def __fileChanged(self):
         """
         Private slot to enable/disable the Compare button.
         """
-        if (
-            not self.file1Picker.text() or
-            not self.file2Picker.text()
-        ):
+        if not self.file1Picker.text() or not self.file2Picker.text():
             self.diffButton.setEnabled(False)
         else:
             self.diffButton.setEnabled(True)
@@ -273,27 +280,27 @@
     """
     Main window class for the standalone dialog.
     """
+
     def __init__(self, parent=None):
         """
         Constructor
-        
+
         @param parent reference to the parent widget (QWidget)
         """
         super().__init__(parent)
-        
-        self.setStyle(Preferences.getUI("Style"),
-                      Preferences.getUI("StyleSheet"))
-        
+
+        self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet"))
+
         self.cw = DiffDialog(self)
         self.cw.installEventFilter(self)
         size = self.cw.size()
         self.setCentralWidget(self.cw)
         self.resize(size)
-    
+
     def eventFilter(self, obj, event):
         """
         Public method to filter events.
-        
+
         @param obj reference to the object the event is meant for (QObject)
         @param event reference to the event object (QEvent)
         @return flag indicating, whether the event was handled (boolean)
@@ -301,5 +308,5 @@
         if event.type() == QEvent.Type.Close:
             QApplication.exit()
             return True
-        
+
         return False

eric ide

mercurial