eric7/Plugins/VcsPlugins/vcsPySvn/SvnCommitDialog.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2003 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to enter the commit message.
8 """
9
10 import pysvn
11
12 from PyQt5.QtCore import pyqtSignal, Qt, pyqtSlot
13 from PyQt5.QtWidgets import QWidget, QDialogButtonBox
14
15 from .Ui_SvnCommitDialog import Ui_SvnCommitDialog
16
17 import Preferences
18
19
20 class SvnCommitDialog(QWidget, Ui_SvnCommitDialog):
21 """
22 Class implementing a dialog to enter the commit message.
23
24 @signal accepted() emitted, if the dialog was accepted
25 @signal rejected() emitted, if the dialog was rejected
26 """
27 accepted = pyqtSignal()
28 rejected = pyqtSignal()
29
30 def __init__(self, changelists, parent=None):
31 """
32 Constructor
33
34 @param changelists list of available change lists (list of strings)
35 @param parent parent widget (QWidget)
36 """
37 super().__init__(
38 parent, Qt.WindowFlags(Qt.WindowType.Window))
39 self.setupUi(self)
40
41 if pysvn.svn_version < (1, 5, 0) or pysvn.version < (1, 6, 0):
42 self.changeListsGroup.hide()
43 else:
44 self.changeLists.addItems(sorted(changelists))
45
46 def showEvent(self, evt):
47 """
48 Protected method called when the dialog is about to be shown.
49
50 @param evt the event (QShowEvent)
51 """
52 self.recentCommitMessages = Preferences.toList(
53 Preferences.Prefs.settings.value('Subversion/Commits'))
54 self.recentComboBox.clear()
55 self.recentComboBox.addItem("")
56 self.recentComboBox.addItems(self.recentCommitMessages)
57
58 self.logEdit.setFocus(Qt.FocusReason.OtherFocusReason)
59
60 def logMessage(self):
61 """
62 Public method to retrieve the log message.
63
64 This method has the side effect of saving the 20 most recent
65 commit messages for reuse.
66
67 @return the log message (string)
68 """
69 msg = self.logEdit.toPlainText()
70 if msg:
71 if msg in self.recentCommitMessages:
72 self.recentCommitMessages.remove(msg)
73 self.recentCommitMessages.insert(0, msg)
74 no = int(Preferences.Prefs.settings.value(
75 'Subversion/CommitMessages', 20))
76 del self.recentCommitMessages[no:]
77 Preferences.Prefs.settings.setValue(
78 'Subversion/Commits', self.recentCommitMessages)
79 return msg
80
81 def hasChangelists(self):
82 """
83 Public method to check, if the user entered some changelists.
84
85 @return flag indicating availability of changelists (boolean)
86 """
87 return len(self.changeLists.selectedItems()) > 0
88
89 def changelistsData(self):
90 """
91 Public method to retrieve the changelists data.
92
93 @return tuple containing the changelists (list of strings) and a flag
94 indicating to keep changelists (boolean)
95 """
96 slists = [line.text().strip()
97 for line in self.changeLists.selectedItems()
98 if line.text().strip() != ""]
99
100 if len(slists) == 0:
101 return [], False
102
103 return slists, self.keepChangeListsCheckBox.isChecked()
104
105 def on_buttonBox_clicked(self, button):
106 """
107 Private slot called by a button of the button box clicked.
108
109 @param button button that was clicked (QAbstractButton)
110 """
111 if button == self.buttonBox.button(
112 QDialogButtonBox.StandardButton.Cancel
113 ):
114 self.logEdit.clear()
115
116 def on_buttonBox_accepted(self):
117 """
118 Private slot called by the buttonBox accepted signal.
119 """
120 self.close()
121 self.accepted.emit()
122
123 def on_buttonBox_rejected(self):
124 """
125 Private slot called by the buttonBox rejected signal.
126 """
127 self.close()
128 self.rejected.emit()
129
130 @pyqtSlot(int)
131 def on_recentComboBox_activated(self, index):
132 """
133 Private slot to select a commit message from recent ones.
134
135 @param index index of the selected entry
136 @type int
137 """
138 txt = self.recentComboBox.itemText(index)
139 if txt:
140 self.logEdit.setPlainText(txt)

eric ide

mercurial