RefactoringRope/ProgressHandle.py

Tue, 10 Dec 2024 15:49:01 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 10 Dec 2024 15:49:01 +0100
branch
eric7
changeset 426
7592a1c052e8
parent 412
6fa5892b9097
permissions
-rw-r--r--

Updated copyright for 2025.

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

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

"""
Module implementing a distributed TaskHandle class with a progress dialog.
"""

import rope.base.taskhandle


class ProgressHandle(rope.base.taskhandle.TaskHandle):
    """
    Class implementing distributed TaskHandle with a progress dialog.

    This is the client side.
    """

    def __init__(self, client, title, interruptable=True):
        """
        Constructor

        @param client reference to the JSON client
        @type EricJsonClient
        @param title title for the taskhandle
        @type str
        @param interruptable flag indicating, that the task may be
            interrupted
        @type bool
        """
        rope.base.taskhandle.TaskHandle.__init__(self, title, interruptable)

        self.__client = client

        self.__client.sendJson(
            "Progress",
            {
                "Subcommand": "Init",
                "Title": title,
                "Interruptable": interruptable,
            },
        )

        self.add_observer(self.__updateProgress)

    def __updateProgress(self):
        """
        Private slot to handle the task progress.
        """
        params = {
            "Subcommand": "Progress",
        }

        jobset = self.current_jobset()
        if jobset:
            text = ""
            if jobset.get_name() is not None:
                text += jobset.get_name()
            if jobset.get_active_job_name() is not None:
                text += ": " + jobset.get_active_job_name()
            params["Text"] = text
            if jobset.count is not None:
                params["Maximum"] = jobset.count
                params["Value"] = jobset.done

        self.__client.sendJson("Progress", params)
        self.__client.poll()

    def reset(self):
        """
        Public slot to reset the progress dialog.
        """
        self.__client.sendJson(
            "Progress",
            {
                "Subcommand": "Reset",
            },
        )
        self.__client.poll()

eric ide

mercurial