Sat, 31 Aug 2019 12:18:44 +0200
HgStatusDialog: backed out the disabling of the status list for merges because it prevents to review the individual changes and to inspect the list for long lists of changed files.
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 | |
6645
ad476851d7e0
Updated copyright for 2019.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
3 | # Copyright (c) 2010 - 2019 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 | |
3145
a9de05d4a22f
# __IGNORE_WARNING__ added/ removed.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3060
diff
changeset
|
10 | from __future__ import unicode_literals |
2525
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2302
diff
changeset
|
11 | try: |
5624
cdd346d8858b
Removed a bunch of __IGNORE_WARNING_M131__ markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5587
diff
changeset
|
12 | str = unicode |
3484 | 13 | except NameError: |
2525
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2302
diff
changeset
|
14 | pass |
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2302
diff
changeset
|
15 | |
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
|
16 | from PyQt5.QtCore import pyqtSlot, QFileInfo, Qt |
4110
5a106c734527
Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4072
diff
changeset
|
17 | from PyQt5.QtGui import QTextCursor, QCursor |
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
|
18 | from PyQt5.QtWidgets import QWidget, QDialogButtonBox, QApplication |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
20 | from E5Gui import E5MessageBox, E5FileDialog |
1297
6347cf782036
Fixed an issue in the various diff dialogs writing the patch.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1256
diff
changeset
|
21 | from E5Gui.E5Application import e5App |
537
72b32daeb8d6
Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
470
diff
changeset
|
22 | |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | 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
|
24 | 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
|
25 | from .HgDiffGenerator import HgDiffGenerator |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | import Utilities |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | import Preferences |
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 | |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | class HgDiffDialog(QWidget, Ui_HgDiffDialog): |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | """ |
3008
7848489bcb92
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
33 | 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
|
34 | process. |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | """ |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
882
diff
changeset
|
36 | def __init__(self, vcs, parent=None): |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | """ |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | Constructor |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | @param vcs reference to the vcs object |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | @param parent parent widget (QWidget) |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | """ |
2525
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2302
diff
changeset
|
43 | super(HgDiffDialog, self).__init__(parent) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.setupUi(self) |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | |
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
|
46 | self.refreshButton = self.buttonBox.addButton( |
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
|
47 | self.tr("Refresh"), QDialogButtonBox.ActionRole) |
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
|
48 | 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
|
49 | 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
|
50 | self.refreshButton.setEnabled(False) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | self.buttonBox.button(QDialogButtonBox.Save).setEnabled(False) |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | self.buttonBox.button(QDialogButtonBox.Close).setDefault(True) |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
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
|
54 | 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
|
55 | |
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
|
56 | 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
|
57 | |
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
|
58 | font = Preferences.getEditorOtherFonts("MonospacedFont") |
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
|
59 | self.contents.setFontFamily(font.family()) |
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
|
60 | self.contents.setFontPointSize(font.pointSize()) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
4110
5a106c734527
Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4072
diff
changeset
|
62 | self.highlighter = HgDiffHighlighter(self.contents.document()) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | |
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
|
64 | 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
|
65 | self.__diffGenerator.finished.connect(self.__generatorFinished) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | def closeEvent(self, e): |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | """ |
3591
2f2a4a76dd22
Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3550
diff
changeset
|
69 | 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
|
70 | |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | @param e close event (QCloseEvent) |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | """ |
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
|
73 | self.__diffGenerator.stopProcess() |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | e.accept() |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
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
|
76 | 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
|
77 | refreshable=False): |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """ |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | 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
|
80 | |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | @param fn filename to be diffed (string) |
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
|
82 | @keyparam versions list of versions to be diffed (list of up to |
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 | 2 strings or None) |
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 | @keyparam bundle name of a bundle file (string) |
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
|
85 | @keyparam qdiff flag indicating qdiff command shall be used (boolean) |
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
|
86 | @keyparam 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
|
87 | """ |
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
|
88 | 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
|
89 | |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | self.errorGroup.hide() |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | self.filename = fn |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | 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
|
94 | self.filesCombo.clear() |
5765
39d8b26ff557
Made the colors of the diff dialogs configurable.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5624
diff
changeset
|
95 | 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
|
96 | |
1034
8a7fa049e9d3
Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
97 | 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
|
98 | self.setWindowTitle(self.tr("Patch Contents")) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | |
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
|
100 | 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
|
101 | 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
|
102 | |
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
|
103 | QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) |
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
|
104 | 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
|
105 | 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
|
106 | if not procStarted: |
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 | E5MessageBox.critical( |
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
|
108 | 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
|
109 | 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
|
110 | 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
|
111 | '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
|
112 | '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
|
113 | ).format('hg')) |
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 | def __generatorFinished(self): |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | """ |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | 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
|
118 | """ |
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
|
119 | QApplication.restoreOverrideCursor() |
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
|
120 | self.refreshButton.setEnabled(True) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | |
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
|
122 | diff, errors, fileSeparators = self.__diffGenerator.getResult() |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | |
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
|
124 | 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
|
125 | 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
|
126 | 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
|
127 | 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
|
128 | 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
|
129 | |
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
|
130 | 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
|
131 | 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
|
132 | 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
|
133 | 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
|
134 | |
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
|
135 | self.buttonBox.button(QDialogButtonBox.Save).setEnabled(bool(diff)) |
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
|
136 | self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True) |
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 | self.buttonBox.button(QDialogButtonBox.Close).setDefault(True) |
3008
7848489bcb92
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
138 | self.buttonBox.button(QDialogButtonBox.Close).setFocus( |
7848489bcb92
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
139 | Qt.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
|
140 | |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | tc = self.contents.textCursor() |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | tc.movePosition(QTextCursor.Start) |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | self.contents.setTextCursor(tc) |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | 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
|
145 | |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
146 | 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
|
147 | 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
|
148 | 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
|
149 | if not oldFile: |
5a106c734527
Added diff syntax highlighters to the various VCS interfaces.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4072
diff
changeset
|
150 | 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
|
151 | 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
|
152 | self.filesCombo.addItem( |
7848489bcb92
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
153 | "{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
|
154 | 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
|
155 | self.filesCombo.addItem(oldFile, pos) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | def on_buttonBox_clicked(self, button): |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | """ |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | 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
|
160 | |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | @param button button that was clicked (QAbstractButton) |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | """ |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | if button == self.buttonBox.button(QDialogButtonBox.Save): |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | 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
|
165 | 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
|
166 | self.on_refreshButton_clicked() |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | |
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
|
168 | @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
|
169 | 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
|
170 | """ |
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 | 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
|
172 | |
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 | @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
|
174 | """ |
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 | 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
|
176 | |
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 | 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
|
178 | 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
|
179 | tc.movePosition(QTextCursor.Start) |
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.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
|
181 | 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
|
182 | 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
|
183 | 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
|
184 | tc.movePosition(QTextCursor.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
|
185 | 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
|
186 | 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
|
187 | 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
|
188 | # 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
|
189 | 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
|
190 | tc.movePosition(QTextCursor.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
|
191 | 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
|
192 | 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
|
193 | |
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 | # 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
|
195 | 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
|
196 | delta = tc.blockNumber() - para |
3008
7848489bcb92
Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
2771
diff
changeset
|
197 | tc.movePosition(QTextCursor.PreviousBlock, QTextCursor.MoveAnchor, |
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 | |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
222 | fname, selectedFilter = E5FileDialog.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, |
882
34b86be88bf0
Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
880
diff
changeset
|
228 | E5FileDialog.Options(E5FileDialog.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(): |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3008
diff
changeset
|
239 | res = E5MessageBox.yesNo( |
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), |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
882
diff
changeset
|
244 | icon=E5MessageBox.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 | |
1297
6347cf782036
Fixed an issue in the various diff dialogs writing the patch.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1256
diff
changeset
|
249 | eol = e5App().getObject("Project").getEolString() |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | try: |
3550
8019baa33b0c
Corrected the Save function of the Mercurial Diff Dialog so that the patches can be applied using the import function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3484
diff
changeset
|
251 | f = open(fname, "w", encoding="utf-8", newline="") |
1297
6347cf782036
Fixed an issue in the various diff dialogs writing the patch.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1256
diff
changeset
|
252 | f.write(eol.join(self.contents.toPlainText().splitlines())) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | f.close() |
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | except IOError as why: |
3020
542e97d4ecb3
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3008
diff
changeset
|
255 | E5MessageBox.critical( |
3190
a9a94491c4fd
Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3160
diff
changeset
|
256 | 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
|
257 | self.tr( |
3023
34ce20603bf7
Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3020
diff
changeset
|
258 | '<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
|
259 | '<br>Reason: {1}</p>') |
3036
30c81c9e88b8
Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
3023
diff
changeset
|
260 | .format(fname, str(why))) |
178
dd9f0bca5e2f
Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | |
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
|
262 | @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
|
263 | 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
|
264 | """ |
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 | 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
|
266 | """ |
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
|
267 | self.buttonBox.button(QDialogButtonBox.Close).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
|
268 | |
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
|
269 | self.buttonBox.button(QDialogButtonBox.Save).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
|
270 | 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
|
271 | |
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 | self.start(self.filename, refreshable=True) |