Plugins/VcsPlugins/vcsMercurial/HgCommitDialog.py

Wed, 16 Nov 2016 20:03:45 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 16 Nov 2016 20:03:45 +0100
changeset 5329
ebec303b4e50
parent 5327
1bf444289f77
child 5330
381665763704
permissions
-rw-r--r--

Refactored the Mercurial commit dialog.

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
4631
5c1a96925da4 Updated copyright for 2016.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
3 # Copyright (c) 2010 - 2016 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 enter the commit message.
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: 3058
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
3656
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
12 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt
441956d8fce5 Started porting eric5 to PyQt5.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3591
diff changeset
13 from PyQt5.QtWidgets import QWidget, QDialogButtonBox
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 from .Ui_HgCommitDialog import Ui_HgCommitDialog
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
17
5327
1bf444289f77 Added some TODOs to the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5104
diff changeset
18 # TODO: add capability to set the author
1bf444289f77 Added some TODOs to the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5104
diff changeset
19 # TODO: add capability to set date and time,
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 class HgCommitDialog(QWidget, Ui_HgCommitDialog):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 Class implementing a dialog to enter the commit message.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 @signal accepted() emitted, if the dialog was accepted
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @signal rejected() emitted, if the dialog was rejected
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
496
ed1e3f654d0b Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 495
diff changeset
27 accepted = pyqtSignal()
ed1e3f654d0b Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 495
diff changeset
28 rejected = pyqtSignal()
ed1e3f654d0b Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 495
diff changeset
29
3353
ddc966a494b0 Added capability to commit a new branch directly without the need to select the commit menu entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
30 def __init__(self, vcs, msg, mq, parent=None):
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param vcs reference to the vcs object
3353
ddc966a494b0 Added capability to commit a new branch directly without the need to select the commit menu entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
35 @param msg initial message (string)
2815
53c1d1f9ec86 Started to implement support for Mercurial queue repositories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
36 @param mq flag indicating a queue commit (boolean)
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @param parent parent widget (QWidget)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 """
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
39 super(HgCommitDialog, self).__init__(parent, Qt.WindowFlags(Qt.Window))
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.setupUi(self)
1855
93bf1823466a Added support for amending commits as of Mercurial 2.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
41
5329
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
42 self.__vcs = vcs
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
43
3353
ddc966a494b0 Added capability to commit a new branch directly without the need to select the commit menu entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
44 self.logEdit.setPlainText(msg)
ddc966a494b0 Added capability to commit a new branch directly without the need to select the commit menu entry.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
45
2815
53c1d1f9ec86 Started to implement support for Mercurial queue repositories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
46 if mq:
53c1d1f9ec86 Started to implement support for Mercurial queue repositories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
47 self.amendCheckBox.setVisible(False)
53c1d1f9ec86 Started to implement support for Mercurial queue repositories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
48 self.subrepoCheckBox.setVisible(False)
53c1d1f9ec86 Started to implement support for Mercurial queue repositories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
49 else:
53c1d1f9ec86 Started to implement support for Mercurial queue repositories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
50 self.subrepoCheckBox.setVisible(vcs.hasSubrepositories())
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 def showEvent(self, evt):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
54 Protected method called when the dialog is about to be shown.
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 @param evt the event (QShowEvent)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 """
5329
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
58 commitMessages = self.__vcs.getPlugin().getPreferences('Commits')
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.recentComboBox.clear()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.recentComboBox.addItem("")
5329
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
61 for message in commitMessages:
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
62 abbrMsg = message[:60]
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
63 if len(message) > 60:
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
64 abbrMsg += "..."
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
65 self.recentComboBox.addItem(abbrMsg, message)
1906
8487f9c2533b Continued implementing support for Mercurial sub-repositories.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1855
diff changeset
66
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 def on_buttonBox_clicked(self, button):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 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
70
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @param button button that was clicked (QAbstractButton)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 if button == self.buttonBox.button(QDialogButtonBox.Cancel):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.logEdit.clear()
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 def on_buttonBox_accepted(self):
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 Private slot called by the buttonBox accepted signal.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.close()
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 178
diff changeset
81 self.accepted.emit()
178
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 def on_buttonBox_rejected(self):
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 Private slot called by the buttonBox rejected signal.
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.close()
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 178
diff changeset
88 self.rejected.emit()
178
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 @pyqtSlot(str)
dd9f0bca5e2f Added plugin for Mercurial version control system.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 def on_recentComboBox_activated(self, txt):
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 Private slot to select a commit message from recent ones.
1066
a3dd41fd9ea8 Added support for the Mercurial fetch extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
94
a3dd41fd9ea8 Added support for the Mercurial fetch extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 945
diff changeset
95 @param txt text of the selected entry (string)
178
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 if txt:
5329
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
98 self.logEdit.setPlainText(self.recentComboBox.currentData())
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
99
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
100 def getCommitData(self):
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
101 """
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
102 Public method to retrieve the entered data for the commit.
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
103
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
104 @return tuple containing the log message, a flag indicating to amend
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
105 the last commit and a flag indicating to commit subrepositories
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
106 as well
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
107 @rtype tuple of str, bool, bool
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
108 """
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
109 msg = self.logEdit.toPlainText()
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
110 if msg:
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
111 commitMessages = self.__vcs.getPlugin().getPreferences('Commits')
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
112 if msg in commitMessages:
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
113 commitMessages.remove(msg)
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
114 commitMessages.insert(0, msg)
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
115 no = self.__vcs.getPlugin().getPreferences("CommitMessages")
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
116 del commitMessages[no:]
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
117 self.__vcs.getPlugin().setPreferences(
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
118 'Commits', commitMessages)
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
119
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
120 return (
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
121 msg,
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
122 self.amendCheckBox.isChecked(),
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
123 self.subrepoCheckBox.isChecked()
ebec303b4e50 Refactored the Mercurial commit dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5327
diff changeset
124 )

eric ide

mercurial