Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py

Mon, 26 Dec 2011 19:31:22 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 26 Dec 2011 19:31:22 +0100
changeset 1509
c0b5e693b0eb
parent 1503
4e48604157a4
child 1746
6c74208f22a2
child 1827
ecf5de426b82
permissions
-rw-r--r--

Updated copyright for 2012.

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
1509
c0b5e693b0eb Updated copyright for 2012.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1503
diff changeset
3 # Copyright (c) 2010 - 2012 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
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
786
06290d4db8ab Fixed an issue with the focus button of the Mercurial diff dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 564
diff changeset
12 from PyQt4.QtCore import pyqtSlot, QProcess, QTimer, QFileInfo, Qt
546
c3e7bf5648be Continued replacing QMessageBox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
13 from PyQt4.QtGui import QWidget, QDialogButtonBox, QBrush, QColor, \
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
14 QTextCursor, QLineEdit, QApplication, QCursor
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
882
34b86be88bf0 Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 880
diff changeset
16 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
17 from E5Gui.E5Application import e5App
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 470
diff changeset
18
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from .Ui_HgDiffDialog import Ui_HgDiffDialog
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 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 Class 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
28 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
29 def __init__(self, vcs, parent=None):
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Constructor
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @param vcs reference to the vcs object
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param parent parent widget (QWidget)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
1131
7781e396c903 Changed the code to use super() to access the superclass.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1034
diff changeset
36 super().__init__(parent)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 self.setupUi(self)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.buttonBox.button(QDialogButtonBox.Save).setEnabled(False)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.process = QProcess()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.vcs = vcs
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
44 self.__hgClient = self.vcs.getClient()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 if Utilities.isWindowsPlatform():
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.contents.setFontFamily("Lucida Console")
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.contents.setFontFamily("Monospace")
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.cNormalFormat = self.contents.currentCharFormat()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.cAddedFormat = self.contents.currentCharFormat()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.cAddedFormat.setBackground(QBrush(QColor(190, 237, 190)))
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.cRemovedFormat = self.contents.currentCharFormat()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.cRemovedFormat.setBackground(QBrush(QColor(237, 190, 190)))
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.cLineNoFormat = self.contents.currentCharFormat()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.cLineNoFormat.setBackground(QBrush(QColor(255, 220, 168)))
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
464
a2b1d1770ef0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 417
diff changeset
59 self.process.finished.connect(self.__procFinished)
a2b1d1770ef0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 417
diff changeset
60 self.process.readyReadStandardOutput.connect(self.__readStdout)
470
99d8c50ba42f Fixed some bugs introduced by signal/slot API conversion.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 464
diff changeset
61 self.process.readyReadStandardError.connect(self.__readStderr)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 def closeEvent(self, e):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 Private slot implementing a close event handler.
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 @param e close event (QCloseEvent)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
69 if self.__hgClient:
1256
885706dbb69f Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1246
diff changeset
70 if self.__hgClient.isExecuting():
885706dbb69f Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1246
diff changeset
71 self.__hgClient.cancel()
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
72 else:
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
73 if self.process is not None and \
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
74 self.process.state() != QProcess.NotRunning:
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
75 self.process.terminate()
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
76 QTimer.singleShot(2000, self.process.kill)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
77 self.process.waitForFinished(3000)
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 e.accept()
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 def __getVersionArg(self, version):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 Private method to get a hg revision argument for the given revision.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 @param version revision (integer or string)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @return version argument (string)
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 if version == "WORKING":
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 return None
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 return str(version)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92
1034
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
93 def start(self, fn, versions=None, bundle=None, qdiff=False):
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 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
96
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 @param fn filename to be diffed (string)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @param versions list of versions to be diffed (list of up to 2 strings or None)
213
42bb97ff0bbb Added code to preview a changegroup file.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 207
diff changeset
99 @param bundle name of a bundle file (string)
1034
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
100 @param qdiff flag indicating qdiff command shall be used (boolean)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.errorGroup.hide()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.inputGroup.show()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.intercept = False
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.filename = fn
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.contents.clear()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.paras = 0
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109
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
110 self.filesCombo.clear()
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
111
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 args = []
1034
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
113 if qdiff:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
114 args.append('qdiff')
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
115 self.setWindowTitle(self.trUtf8("Patch Contents"))
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
116 else:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
117 args.append('diff')
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
118 self.vcs.addArguments(args, self.vcs.options['global'])
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
119 self.vcs.addArguments(args, self.vcs.options['diff'])
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
120
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
121 if bundle:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
122 args.append('--repository')
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
123 args.append(bundle)
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
124 elif self.vcs.bundleFile and os.path.exists(self.vcs.bundleFile):
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
125 args.append('--repository')
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
126 args.append(self.vcs.bundleFile)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127
1034
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
128 if versions is not None:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
129 self.raise_()
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
130 self.activateWindow()
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
131
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
132 rev1 = self.__getVersionArg(versions[0])
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
133 rev2 = None
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
134 if len(versions) == 2:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
135 rev2 = self.__getVersionArg(versions[1])
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
136
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
137 if rev1 is not None or rev2 is not None:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
138 args.append('-r')
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
139 if rev1 is not None and rev2 is not None:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
140 args.append('{0}:{1}'.format(rev1, rev2))
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
141 elif rev2 is None:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
142 args.append(rev1)
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
143 elif rev1 is None:
8a7fa049e9d3 Started with support for Mercurial queues extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
144 args.append(':{0}'.format(rev2))
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 if isinstance(fn, list):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 dname, fnames = self.vcs.splitPathList(fn)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.vcs.addArguments(args, fn)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 dname, fname = self.vcs.splitPath(fn)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 args.append(fn)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
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
153 self.__oldFile = ""
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 self.__oldFileLine = -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
155 self.__fileSeparators = []
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
156
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
157 QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
158 if self.__hgClient:
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 self.inputGroup.setEnabled(False)
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
160 self.inputGroup.hide()
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
161
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
162 out, err = self.__hgClient.runcommand(args)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
163
1326
bf3fcb446da5 Reordered the output of some Mercurial dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1318
diff changeset
164 if err:
bf3fcb446da5 Reordered the output of some Mercurial dialogs.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1318
diff changeset
165 self.__showError(err)
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
166 if out:
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
167 for line in out.splitlines(True):
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
168 self.__processOutputLine(line)
1256
885706dbb69f Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1246
diff changeset
169 if self.__hgClient.wasCanceled():
885706dbb69f Refined the Mercurial command server interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1246
diff changeset
170 break
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
171
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
172 self.__finish()
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
173 else:
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
174 # find the root of the repo
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
175 repodir = dname
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
176 while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)):
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
177 repodir = os.path.dirname(repodir)
1318
6fa303bd65d6 Fixed issues in various Mercurial files that could cause infinite loops on Windows systems.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1300
diff changeset
178 if os.path.splitdrive(repodir)[1] == os.sep:
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
179 return
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
180
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
181 self.process.kill()
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
182
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
183 self.process.setWorkingDirectory(repodir)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
184
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
185 self.process.start('hg', args)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
186 procStarted = self.process.waitForStarted()
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
187 if not procStarted:
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
188 QApplication.restoreOverrideCursor()
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
189 self.inputGroup.setEnabled(False)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
190 E5MessageBox.critical(self,
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
191 self.trUtf8('Process Generation Error'),
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
192 self.trUtf8(
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
193 'The process {0} could not be started. '
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
194 'Ensure, that it is in the search path.'
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
195 ).format('hg'))
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 def __procFinished(self, exitCode, exitStatus):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 Private slot connected to the finished signal.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 @param exitCode exit code of the process (integer)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 @param exitStatus exit status of the process (QProcess.ExitStatus)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
204 self.__finish()
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
205
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
206 def __finish(self):
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
207 """
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
208 Private slot called when the process finished or the user pressed the button.
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
209 """
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
210 QApplication.restoreOverrideCursor()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 self.inputGroup.setEnabled(False)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 self.inputGroup.hide()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 if self.paras == 0:
564
b3d966393ba9 Did some code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 553
diff changeset
215 self.contents.insertPlainText(
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 self.trUtf8('There is no difference.'))
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 return
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 self.buttonBox.button(QDialogButtonBox.Save).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
220 self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
06290d4db8ab Fixed an issue with the focus button of the Mercurial diff dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 564
diff changeset
221 self.buttonBox.button(QDialogButtonBox.Close).setFocus(Qt.OtherFocusReason)
06290d4db8ab Fixed an issue with the focus button of the Mercurial diff dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 564
diff changeset
222
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 tc = self.contents.textCursor()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 tc.movePosition(QTextCursor.Start)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 self.contents.setTextCursor(tc)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 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
227
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
228 self.filesCombo.addItem(self.trUtf8("<Start>"), 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
229 self.filesCombo.addItem(self.trUtf8("<End>"), -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
230 for oldFile, newFile, pos in sorted(self.__fileSeparators):
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
231 if oldFile != newFile:
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
232 self.filesCombo.addItem("{0}\n{1}".format(oldFile, newFile), pos)
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
233 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
234 self.filesCombo.addItem(oldFile, pos)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 def __appendText(self, txt, format):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 Private method to append text to the end of the contents pane.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 @param txt text to insert (string)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 @param format text format to be used (QTextCharFormat)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 tc = self.contents.textCursor()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 tc.movePosition(QTextCursor.End)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 self.contents.setTextCursor(tc)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 self.contents.setCurrentCharFormat(format)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 self.contents.insertPlainText(txt)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248
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
249 def __extractFileName(self, 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
250 """
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
251 Private method to extract the file name out of a file separator 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
252
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
253 @param line line to be processed (string)
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
254 @return extracted file name (string)
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
255 """
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
256 f = line.split(None, 1)[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
257 f = f.rsplit(None, 6)[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
258 f = f.split("/", 1)[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
259 return f
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
260
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
261 def __processFileLine(self, 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
262 """
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
263 Private slot to process a line giving the old/new 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
264
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
265 @param line line to be processed (string)
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
266 """
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
267 if line.startswith('---'):
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
268 self.__oldFileLine = self.paras
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
269 self.__oldFile = self.__extractFileName(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
270 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
271 self.__fileSeparators.append(
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
272 (self.__oldFile, self.__extractFileName(line), self.__oldFileLine))
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
273
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
274 def __processOutputLine(self, line):
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
275 """
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
276 Private method to process the lines of output.
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
277
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
278 @param line output line to be processed (string)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
279 """
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
280 if line.startswith("---") or \
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
281 line.startswith("+++"):
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
282 self.__processFileLine(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
283
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
284 if line.startswith('+'):
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
285 format = self.cAddedFormat
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
286 elif line.startswith('-'):
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
287 format = self.cRemovedFormat
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
288 elif line.startswith('@@'):
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
289 format = self.cLineNoFormat
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
290 else:
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
291 format = self.cNormalFormat
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
292 self.__appendText(line, format)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
293 self.paras += 1
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
294
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 def __readStdout(self):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 """
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
297 Private slot to handle the readyReadStandardOutput signal.
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 It reads the output of the process, formats it and inserts it into
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 the contents pane.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 self.process.setReadChannel(QProcess.StandardOutput)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 while self.process.canReadLine():
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
305 line = str(self.process.readLine(),
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
306 Preferences.getSystem("IOEncoding"),
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 'replace')
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
308 self.__processOutputLine(line)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 def __readStderr(self):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 Private slot to handle the readyReadStandardError signal.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 It reads the error output of the process and inserts it into the
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 error pane.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 if self.process is not None:
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
318 s = str(self.process.readAllStandardError(),
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 882
diff changeset
319 Preferences.getSystem("IOEncoding"),
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 'replace')
1246
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
321 self.__showError(s)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
322
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
323 def __showError(self, out):
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
324 """
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
325 Private slot to show some error.
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
326
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
327 @param out error to be shown (string)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
328 """
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
329 self.errorGroup.show()
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
330 self.errors.insertPlainText(out)
5e9f6df3d1fc Continued implementing an interface to the Mercurial command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1131
diff changeset
331 self.errors.ensureCursorVisible()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 def on_buttonBox_clicked(self, button):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 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
336
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 @param button button that was clicked (QAbstractButton)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 if button == self.buttonBox.button(QDialogButtonBox.Save):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 self.on_saveButton_clicked()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341
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
342 @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
343 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
344 """
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
345 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
346
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
347 @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
348 """
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
349 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
350
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
351 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
352 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
353 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
354 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
355 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
356 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
357 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
358 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
359 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
360 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
361 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
362 # 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
363 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
364 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
365 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
366 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
367
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
368 # 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
369 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
370 delta = tc.blockNumber() - para
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
371 tc.movePosition(QTextCursor.PreviousBlock, QTextCursor.MoveAnchor, delta)
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
372 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
373 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
374
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 @pyqtSlot()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 def on_saveButton_clicked(self):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 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
379
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 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
381 filesystem.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 if isinstance(self.filename, list):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
384 if len(self.filename) > 1:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 fname = self.vcs.splitPathList(self.filename)[0]
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 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
388 if fname != '.':
417
459855d3066e Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 215
diff changeset
389 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
390 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 fname = dname
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 fname = self.vcs.splitPath(self.filename)[0]
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394
882
34b86be88bf0 Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 880
diff changeset
395 fname, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 self,
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 self.trUtf8("Save Diff"),
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 fname,
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 self.trUtf8("Patch Files (*.diff)"),
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 None,
882
34b86be88bf0 Redid the native file dialog code to be future proof.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 880
diff changeset
401 E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 if not fname:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 return # user aborted
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 ext = QFileInfo(fname).suffix()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 if not ext:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 ex = selectedFilter.split("(*")[1].split(")")[0]
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 if ex:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 fname += ex
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 if QFileInfo(fname).exists():
546
c3e7bf5648be Continued replacing QMessageBox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
412 res = E5MessageBox.yesNo(self,
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 self.trUtf8("Save Diff"),
546
c3e7bf5648be Continued replacing QMessageBox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
414 self.trUtf8("<p>The patch file <b>{0}</b> already exists."
c3e7bf5648be Continued replacing QMessageBox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
415 " 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
416 icon=E5MessageBox.Warning)
546
c3e7bf5648be Continued replacing QMessageBox.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 539
diff changeset
417 if not res:
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 return
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 fname = Utilities.toNativeSeparators(fname)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420
1297
6347cf782036 Fixed an issue in the various diff dialogs writing the patch.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1256
diff changeset
421 eol = e5App().getObject("Project").getEolString()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 try:
1300
9083f6b7ea3b Fixed an issue in the various diff dialogs writing the patch (this time properly).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1297
diff changeset
423 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
424 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
425 f.close()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 except IOError as why:
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 470
diff changeset
427 E5MessageBox.critical(self, self.trUtf8('Save Diff'),
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 self.trUtf8('<p>The patch file <b>{0}</b> could not be saved.'
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 '<br>Reason: {1}</p>')
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 .format(fname, str(why)))
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 def on_passwordCheckBox_toggled(self, isOn):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 Private slot to handle the password checkbox toggled.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 @param isOn flag indicating the status of the check box (boolean)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 if isOn:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 self.input.setEchoMode(QLineEdit.Password)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 self.input.setEchoMode(QLineEdit.Normal)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 @pyqtSlot()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 def on_sendButton_clicked(self):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 Private slot to send the input to the subversion process.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 input = self.input.text()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
449 input += os.linesep
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 if self.passwordCheckBox.isChecked():
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 self.errors.insertPlainText(os.linesep)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 self.errors.ensureCursorVisible()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 else:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 self.errors.insertPlainText(input)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
456 self.errors.ensureCursorVisible()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 self.process.write(input)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 self.passwordCheckBox.setChecked(False)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 self.input.clear()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 def on_input_returnPressed(self):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 Private slot to handle the press of the return key in the input field.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 self.intercept = True
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 self.on_sendButton_clicked()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
469
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 def keyPressEvent(self, evt):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 Protected slot to handle a key press event.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 @param evt the key press event (QKeyEvent)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 if self.intercept:
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 self.intercept = False
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 evt.accept()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
479 return
1131
7781e396c903 Changed the code to use super() to access the superclass.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1034
diff changeset
480 super().keyPressEvent(evt)

eric ide

mercurial