Fri, 02 May 2025 16:19:35 +0200
Added code to suppress some output needed during development when the application is operated in release mode.
11082
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to enter the uncommit data. |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | from PyQt6.QtCore import QDateTime, Qt, pyqtSlot |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | from PyQt6.QtWidgets import QDialog |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from eric7.EricWidgets.EricApplication import ericApp |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from .Ui_HgUncommitDialog import Ui_HgUncommitDialog |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | class HgUncommitDialog(QDialog, Ui_HgUncommitDialog): |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | Class implementing a dialog to enter the uncommit data. |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | def __init__(self, vcs, parent=None): |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | Constructor |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | @param vcs reference to the version control object |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | @type Hg |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | @param parent reference to the parent widget (defaults to None) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | @type QWidget (optional) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | super().__init__(parent) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | self.setupUi(self) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | self.__vcs = vcs |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | project = ericApp().getObject("Project") |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | pwl, pel = project.getProjectDictionaries() |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | language = project.getProjectSpellLanguage() |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | self.logEdit.setLanguageWithPWL(language, pwl or None, pel or None) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | commitMessages = self.__vcs.vcsCommitMessages() |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | self.recentComboBox.clear() |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.recentComboBox.addItem("") |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | for message in commitMessages: |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | abbrMsg = message[:60] |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | if len(message) > 60: |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | abbrMsg += "..." |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | self.recentComboBox.addItem(abbrMsg, message) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | commitAuthors = self.__vcs.getPlugin().getPreferences("CommitAuthors") |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | self.authorComboBox.clear() |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.authorComboBox.addItem("") |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | self.authorComboBox.addItems(commitAuthors) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | self.dateTimeEdit.setDateTime(QDateTime.currentDateTime()) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | self.logEdit.setFocus(Qt.FocusReason.OtherFocusReason) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | @pyqtSlot(int) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | def on_recentComboBox_activated(self, index): |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | Private slot to select a commit message from recent ones. |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | @param index index of the selected entry |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | @type int |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | txt = self.recentComboBox.itemText(index) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | if txt: |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | self.logEdit.setPlainText(self.recentComboBox.currentData()) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | def getUncommitData(self): |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | Public method to retrieve the entered uncommit data. |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | @return tuple containing the commit message, a flag indicating to |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | allow an empty commit, a flag indicating to allow an uncommit |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | with outstanding changes, name of the author and date/time of |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | the commit |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | @rtype tuple of (str, bool, bool, str, str) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | """ |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | msg = self.logEdit.toPlainText() |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | if msg: |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | self.__vcs.vcsAddCommitMessage(msg) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | author = self.authorComboBox.currentText() |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | if author: |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | commitAuthors = self.__vcs.getPlugin().getPreferences("CommitAuthors") |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | if author in commitAuthors: |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | commitAuthors.remove(author) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | commitAuthors.insert(0, author) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | no = self.__vcs.getPlugin().getPreferences("CommitAuthorsLimit") |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | del commitAuthors[no:] |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | self.__vcs.getPlugin().setPreferences("CommitAuthors", commitAuthors) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | dateTime = ( |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | self.dateTimeEdit.dateTime().toString("yyyy-MM-dd hh:mm") |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | if self.dateTimeGroup.isChecked() |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | else "" |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | ) |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | return ( |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | msg, |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | self.keepCheckBox.isChecked(), |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | self.allowDirtyCheckBox.isChecked(), |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | author, |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | dateTime, |
58838580274e
Mercurial Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | ) |