src/eric7/Plugins/VcsPlugins/vcsMercurial/UncommitExtension/uncommit.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.

# -*- coding: utf-8 -*-

# Copyright (c) 2025 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing the uncommit extension interface.
"""

from PyQt6.QtWidgets import QDialog

from ..HgDialog import HgDialog
from ..HgExtension import HgExtension


class Uncommit(HgExtension):
    """
    Class implementing the uncommit extension interface.
    """

    def __init__(self, vcs, ui=None):
        """
        Constructor

        @param vcs reference to the Mercurial vcs object
        @type Hg
        @param ui reference to a UI widget (defaults to None)
        @type QWidget
        """
        super().__init__(vcs, ui=ui)

    def hgUncommit(self, names=None):
        """
        Public method to undo the effect of a local commit.

        @param names list of file or directory paths (defaults to None)
        @type list of str
        @return flag indicating that the project should be reread
        @rtype bool
        """
        from .HgUncommitDialog import HgUncommitDialog

        res = False
        dlg = HgUncommitDialog(vcs=self.vcs, parent=self.ui)
        if dlg.exec() == QDialog.DialogCode.Accepted:
            message, keep, dirty, author, date = dlg.getUncommitData()

            args = self.vcs.initCommand("uncommit")
            if message:
                args.extend(["--message", message])
            if keep:
                args.append("--keep")
            if dirty:
                args.append("--allow-dirty-working-copy")
            if author:
                args.extend(["--user", author])
            if date:
                args.extend(["--date", date])
            args.append("--verbose")

            if names is not None:
                self.vcs.addArguments(args, names)

            dia = HgDialog(self.tr("Undo Local Commit"), hg=self.vcs, parent=self.ui)
            res = dia.startProcess(args)
            if res:
                dia.exec()
                res = dia.hasAddOrDelete()
                self.vcs.checkVCSStatus()
        return res

eric ide

mercurial