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

branch
eric7
changeset 11082
58838580274e
diff -r 7391035e7bc9 -r 58838580274e src/eric7/Plugins/VcsPlugins/vcsMercurial/UncommitExtension/HgUncommitDialog.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/Plugins/VcsPlugins/vcsMercurial/UncommitExtension/HgUncommitDialog.py	Wed Dec 04 10:45:31 2024 +0100
@@ -0,0 +1,108 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2025 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter the uncommit data.
+"""
+
+from PyQt6.QtCore import QDateTime, Qt, pyqtSlot
+from PyQt6.QtWidgets import QDialog
+
+from eric7.EricWidgets.EricApplication import ericApp
+
+from .Ui_HgUncommitDialog import Ui_HgUncommitDialog
+
+
+class HgUncommitDialog(QDialog, Ui_HgUncommitDialog):
+    """
+    Class implementing a dialog to enter the uncommit data.
+    """
+
+    def __init__(self, vcs, parent=None):
+        """
+        Constructor
+
+        @param vcs reference to the version control object
+        @type Hg
+        @param parent reference to the parent widget (defaults to None)
+        @type QWidget (optional)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+
+        self.__vcs = vcs
+
+        project = ericApp().getObject("Project")
+        pwl, pel = project.getProjectDictionaries()
+        language = project.getProjectSpellLanguage()
+        self.logEdit.setLanguageWithPWL(language, pwl or None, pel or None)
+
+        commitMessages = self.__vcs.vcsCommitMessages()
+        self.recentComboBox.clear()
+        self.recentComboBox.addItem("")
+        for message in commitMessages:
+            abbrMsg = message[:60]
+            if len(message) > 60:
+                abbrMsg += "..."
+            self.recentComboBox.addItem(abbrMsg, message)
+
+        commitAuthors = self.__vcs.getPlugin().getPreferences("CommitAuthors")
+        self.authorComboBox.clear()
+        self.authorComboBox.addItem("")
+        self.authorComboBox.addItems(commitAuthors)
+
+        self.dateTimeEdit.setDateTime(QDateTime.currentDateTime())
+
+        self.logEdit.setFocus(Qt.FocusReason.OtherFocusReason)
+
+    @pyqtSlot(int)
+    def on_recentComboBox_activated(self, index):
+        """
+        Private slot to select a commit message from recent ones.
+
+        @param index index of the selected entry
+        @type int
+        """
+        txt = self.recentComboBox.itemText(index)
+        if txt:
+            self.logEdit.setPlainText(self.recentComboBox.currentData())
+
+    def getUncommitData(self):
+        """
+        Public method to retrieve the entered uncommit data.
+
+        @return tuple containing the commit message, a flag indicating to
+            allow an empty commit, a flag indicating to allow an uncommit
+            with outstanding changes, name of the author and date/time of
+            the commit
+        @rtype tuple of (str, bool, bool, str, str)
+        """
+        msg = self.logEdit.toPlainText()
+        if msg:
+            self.__vcs.vcsAddCommitMessage(msg)
+
+        author = self.authorComboBox.currentText()
+        if author:
+            commitAuthors = self.__vcs.getPlugin().getPreferences("CommitAuthors")
+            if author in commitAuthors:
+                commitAuthors.remove(author)
+            commitAuthors.insert(0, author)
+            no = self.__vcs.getPlugin().getPreferences("CommitAuthorsLimit")
+            del commitAuthors[no:]
+            self.__vcs.getPlugin().setPreferences("CommitAuthors", commitAuthors)
+
+        dateTime = (
+            self.dateTimeEdit.dateTime().toString("yyyy-MM-dd hh:mm")
+            if self.dateTimeGroup.isChecked()
+            else ""
+        )
+
+        return (
+            msg,
+            self.keepCheckBox.isChecked(),
+            self.allowDirtyCheckBox.isChecked(),
+            author,
+            dateTime,
+        )

eric ide

mercurial