eric7/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py

Sat, 22 May 2021 18:51:46 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 22 May 2021 18:51:46 +0200
branch
eric7
changeset 8356
68ec9c3d4de5
parent 8322
b422b4e77d19
child 8358
144a6b854f70
permissions
-rw-r--r--

Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.

178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7900
diff changeset
3 # Copyright (c) 2010 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to show the output of the hg diff command process.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
10 from PyQt6.QtCore import pyqtSlot, QFileInfo, Qt
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
11 from PyQt6.QtGui import QTextCursor
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
12 from PyQt6.QtWidgets import QWidget, QDialogButtonBox
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
14 from E5Gui import EricMessageBox, EricFileDialog
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
15 from E5Gui.EricApplication import ericApp
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 470
diff changeset
16
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from .Ui_HgDiffDialog import Ui_HgDiffDialog
4110
5a106c734527 Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4072
diff changeset
18 from .HgDiffHighlighter import HgDiffHighlighter
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
19 from .HgDiffGenerator import HgDiffGenerator
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 import Utilities
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 import Preferences
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
24
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 class HgDiffDialog(QWidget, Ui_HgDiffDialog):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
3008
7848489bcb92 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2771
diff changeset
27 Class implementing a dialog to show the output of the hg diff command
7848489bcb92 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2771
diff changeset
28 process.
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
30 def __init__(self, vcs, parent=None):
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param vcs reference to the vcs object
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @param parent parent widget (QWidget)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
37 super().__init__(parent)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.setupUi(self)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
40 self.refreshButton = self.buttonBox.addButton(
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
41 self.tr("Refresh"), QDialogButtonBox.ButtonRole.ActionRole)
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
42 self.refreshButton.setToolTip(
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
43 self.tr("Press to refresh the display"))
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
44 self.refreshButton.setEnabled(False)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
45 self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
46 QDialogButtonBox.StandardButton.Save).setEnabled(False)
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
47 self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
48 QDialogButtonBox.StandardButton.Close).setDefault(True)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
4052
17d8069de085 Added capability to search in the output of Diff dialogs of the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4037
diff changeset
50 self.searchWidget.attachTextEdit(self.contents)
17d8069de085 Added capability to search in the output of Diff dialogs of the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4037
diff changeset
51
4152
d90464d2ccaa Fixed an issue in the Mercurial diff dialog causing it to throw an exception when saving the diff to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4130
diff changeset
52 self.vcs = vcs
d90464d2ccaa Fixed an issue in the Mercurial diff dialog causing it to throw an exception when saving the diff to a file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4130
diff changeset
53
2580
7403bc14ea26 Changed the various diff dialogs to use the mono spaced font selected for the editor.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
54 font = Preferences.getEditorOtherFonts("MonospacedFont")
7779
757334671130 Optimized the various diff panes by using QPlainTextEdit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7771
diff changeset
55 self.contents.document().setDefaultFont(font)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56
4110
5a106c734527 Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4072
diff changeset
57 self.highlighter = HgDiffHighlighter(self.contents.document())
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
59 self.__diffGenerator = HgDiffGenerator(vcs, self)
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
60 self.__diffGenerator.finished.connect(self.__generatorFinished)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 def closeEvent(self, e):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3550
diff changeset
64 Protected slot implementing a close event handler.
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 @param e close event (QCloseEvent)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 """
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
68 self.__diffGenerator.stopProcess()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 e.accept()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
71 def start(self, fn, versions=None, bundle=None, qdiff=False,
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
72 refreshable=False):
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 Public slot to start the hg diff command.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 @param fn filename to be diffed (string)
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
77 @param versions list of versions to be diffed (list of up to
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
78 2 strings or None)
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
79 @param bundle name of a bundle file (string)
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
80 @param qdiff flag indicating qdiff command shall be used (boolean)
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
81 @param refreshable flag indicating a refreshable diff (boolean)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
83 self.refreshButton.setVisible(refreshable)
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
84
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.errorGroup.hide()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.filename = fn
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.contents.clear()
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
89 self.filesCombo.clear()
5765
39d8b26ff557 Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5624
diff changeset
90 self.highlighter.regenerateRules()
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
91
1034
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
92 if qdiff:
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
93 self.setWindowTitle(self.tr("Patch Contents"))
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
95 self.raise_()
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
96 self.activateWindow()
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
97
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
98 procStarted = self.__diffGenerator.start(
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
99 fn, versions=versions, bundle=bundle, qdiff=qdiff)
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
100 if not procStarted:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
101 EricMessageBox.critical(
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
102 self,
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
103 self.tr('Process Generation Error'),
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
104 self.tr(
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
105 'The process {0} could not be started. '
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
106 'Ensure, that it is in the search path.'
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
107 ).format('hg'))
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
109 def __generatorFinished(self):
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 Private slot connected to the finished signal.
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
112 """
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
113 self.refreshButton.setEnabled(True)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
115 diff, errors, fileSeparators = self.__diffGenerator.getResult()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
117 if diff:
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
118 self.contents.setPlainText("".join(diff))
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
119 else:
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
120 self.contents.setPlainText(
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
121 self.tr('There is no difference.'))
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
122
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
123 if errors:
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
124 self.errorGroup.show()
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
125 self.errors.setPlainText("".join(errors))
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
126 self.errors.ensureCursorVisible()
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
127
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
128 self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
129 QDialogButtonBox.StandardButton.Save).setEnabled(bool(diff))
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
130 self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
131 QDialogButtonBox.StandardButton.Close).setEnabled(True)
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
132 self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
133 QDialogButtonBox.StandardButton.Close).setDefault(True)
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
134 self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
135 QDialogButtonBox.StandardButton.Close).setFocus(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
136 Qt.FocusReason.OtherFocusReason)
786
06290d4db8ab Fixed an issue with the focus button of the Mercurial diff dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 564
diff changeset
137
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 tc = self.contents.textCursor()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
139 tc.movePosition(QTextCursor.MoveOperation.Start)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.contents.setTextCursor(tc)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.contents.ensureCursorVisible()
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
142
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
143 self.filesCombo.addItem(self.tr("<Start>"), 0)
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
144 self.filesCombo.addItem(self.tr("<End>"), -1)
4130
c5af9f10a061 Moved logic to generate a Mercurial diff to a separate module in order to reuse it.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4111
diff changeset
145 for oldFile, newFile, pos in sorted(fileSeparators):
4110
5a106c734527 Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4072
diff changeset
146 if not oldFile:
5a106c734527 Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4072
diff changeset
147 self.filesCombo.addItem(newFile, pos)
5a106c734527 Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4072
diff changeset
148 elif oldFile != newFile:
3008
7848489bcb92 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2771
diff changeset
149 self.filesCombo.addItem(
7848489bcb92 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2771
diff changeset
150 "{0}\n{1}".format(oldFile, newFile), pos)
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
151 else:
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
152 self.filesCombo.addItem(oldFile, pos)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 def on_buttonBox_clicked(self, button):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 Private slot called by a button of the button box clicked.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 @param button button that was clicked (QAbstractButton)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 """
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
160 if button == self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
161 QDialogButtonBox.StandardButton.Save
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
162 ):
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 self.on_saveButton_clicked()
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
164 elif button == self.refreshButton:
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
165 self.on_refreshButton_clicked()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
167 @pyqtSlot(int)
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
168 def on_filesCombo_activated(self, index):
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
169 """
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
170 Private slot to handle the selection of a file.
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
171
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
172 @param index activated row (integer)
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
173 """
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
174 para = self.filesCombo.itemData(index)
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
175
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
176 if para == 0:
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
177 tc = self.contents.textCursor()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
178 tc.movePosition(QTextCursor.MoveOperation.Start)
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
179 self.contents.setTextCursor(tc)
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
180 self.contents.ensureCursorVisible()
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
181 elif para == -1:
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
182 tc = self.contents.textCursor()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
183 tc.movePosition(QTextCursor.MoveOperation.End)
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
184 self.contents.setTextCursor(tc)
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
185 self.contents.ensureCursorVisible()
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
186 else:
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
187 # step 1: move cursor to end
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
188 tc = self.contents.textCursor()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
189 tc.movePosition(QTextCursor.MoveOperation.End)
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
190 self.contents.setTextCursor(tc)
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
191 self.contents.ensureCursorVisible()
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
192
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
193 # step 2: move cursor to desired line
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
194 tc = self.contents.textCursor()
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
195 delta = tc.blockNumber() - para
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
196 tc.movePosition(QTextCursor.MoveOperation.PreviousBlock,
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
197 QTextCursor.MoveMode.MoveAnchor,
3008
7848489bcb92 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2771
diff changeset
198 delta)
1503
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
199 self.contents.setTextCursor(tc)
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
200 self.contents.ensureCursorVisible()
4e48604157a4 Added a file selector to the top of the diff dialogs to quickly jump to the diff for the selected file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1326
diff changeset
201
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 @pyqtSlot()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 def on_saveButton_clicked(self):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 Private slot to handle the Save button press.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 It saves the diff shown in the dialog to a file in the local
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 filesystem.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 if isinstance(self.filename, list):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 if len(self.filename) > 1:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 fname = self.vcs.splitPathList(self.filename)[0]
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 dname, fname = self.vcs.splitPath(self.filename[0])
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 if fname != '.':
417
459855d3066e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 215
diff changeset
216 fname = "{0}.diff".format(self.filename[0])
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 fname = dname
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 fname = self.vcs.splitPath(self.filename)[0]
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
222 fname, selectedFilter = EricFileDialog.getSaveFileNameAndFilter(
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
224 self.tr("Save Diff"),
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 fname,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
226 self.tr("Patch Files (*.diff)"),
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 None,
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
228 EricFileDialog.DontConfirmOverwrite)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 if not fname:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 return # user aborted
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 ext = QFileInfo(fname).suffix()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 if not ext:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 ex = selectedFilter.split("(*")[1].split(")")[0]
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 if ex:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 fname += ex
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 if QFileInfo(fname).exists():
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
239 res = EricMessageBox.yesNo(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3008
diff changeset
240 self,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
241 self.tr("Save Diff"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
242 self.tr("<p>The patch file <b>{0}</b> already exists."
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
243 " Overwrite it?</p>").format(fname),
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
244 icon=EricMessageBox.Warning)
546
c3e7bf5648be Continued replacing QMessageBox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
245 if not res:
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 return
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 fname = Utilities.toNativeSeparators(fname)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
249 eol = ericApp().getObject("Project").getEolString()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7779
diff changeset
251 with open(fname, "w", encoding="utf-8", newline="") as f:
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7779
diff changeset
252 f.write(eol.join(self.contents.toPlainText().splitlines()))
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
253 except OSError as why:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8322
diff changeset
254 EricMessageBox.critical(
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
255 self, self.tr('Save Diff'),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
256 self.tr(
3023
34ce20603bf7 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
257 '<p>The patch file <b>{0}</b> could not be saved.'
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 '<br>Reason: {1}</p>')
3036
30c81c9e88b8 Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3023
diff changeset
259 .format(fname, str(why)))
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
261 @pyqtSlot()
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
262 def on_refreshButton_clicked(self):
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
263 """
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
264 Private slot to refresh the display.
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
265 """
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
266 self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
267 QDialogButtonBox.StandardButton.Close).setEnabled(False)
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
268
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
269 self.buttonBox.button(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
270 QDialogButtonBox.StandardButton.Save).setEnabled(False)
4072
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
271 self.refreshButton.setEnabled(False)
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
272
46fb585f60f2 Extended the diff dialogs of the various VCS interfaces to allow a refresh in certain situations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4065
diff changeset
273 self.start(self.filename, refreshable=True)

eric ide

mercurial