eric6/UI/DiffDialog.py

changeset 8243
cc717c2ae956
parent 8235
78e6d29eb773
equal deleted inserted replaced
8242:aa713ac50c0d 8243:cc717c2ae956
7 Module implementing a dialog to compare two files. 7 Module implementing a dialog to compare two files.
8 """ 8 """
9 9
10 import os 10 import os
11 import time 11 import time
12 import contextlib
13 from difflib import unified_diff, context_diff
12 14
13 from PyQt5.QtCore import QFileInfo, QEvent, pyqtSlot 15 from PyQt5.QtCore import QFileInfo, QEvent, pyqtSlot
14 from PyQt5.QtGui import QTextCursor 16 from PyQt5.QtGui import QTextCursor
15 from PyQt5.QtWidgets import QWidget, QApplication, QDialogButtonBox 17 from PyQt5.QtWidgets import QWidget, QApplication, QDialogButtonBox
16 18
21 from .Ui_DiffDialog import Ui_DiffDialog 23 from .Ui_DiffDialog import Ui_DiffDialog
22 from .DiffHighlighter import DiffHighlighter 24 from .DiffHighlighter import DiffHighlighter
23 25
24 import Utilities 26 import Utilities
25 import Preferences 27 import Preferences
26
27 from difflib import unified_diff, context_diff
28 28
29 29
30 class DiffDialog(QWidget, Ui_DiffDialog): 30 class DiffDialog(QWidget, Ui_DiffDialog):
31 """ 31 """
32 Class implementing a dialog to compare two files. 32 Class implementing a dialog to compare two files.
130 return 130 return
131 fname = Utilities.toNativeSeparators(fname) 131 fname = Utilities.toNativeSeparators(fname)
132 132
133 txt = self.contents.toPlainText() 133 txt = self.contents.toPlainText()
134 try: 134 try:
135 with open(fname, "w", encoding="utf-8") as f: 135 with open(fname, "w", encoding="utf-8") as f, \
136 try: 136 contextlib.suppress(UnicodeError):
137 f.write(txt) 137 f.write(txt)
138 except UnicodeError:
139 pass
140 except OSError as why: 138 except OSError as why:
141 E5MessageBox.critical( 139 E5MessageBox.critical(
142 self, self.tr('Save Diff'), 140 self, self.tr('Save Diff'),
143 self.tr( 141 self.tr(
144 '<p>The patch file <b>{0}</b> could not be saved.<br />' 142 '<p>The patch file <b>{0}</b> could not be saved.<br />'

eric ide

mercurial