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

eric ide

mercurial