src/eric7/Plugins/VcsPlugins/vcsMercurial/UncommitExtension/HgUncommitDialog.py

Fri, 02 May 2025 16:19:35 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 02 May 2025 16:19:35 +0200
branch
eric7
changeset 11255
1c2bd52f2002
parent 11082
58838580274e
permissions
-rw-r--r--

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 )

eric ide

mercurial