src/eric7/Plugins/UiExtensionPlugins/Translator/Translator.py

Sat, 06 Jan 2024 15:21:02 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 06 Jan 2024 15:21:02 +0100
branch
eric7
changeset 10482
72d9b5ea39b4
parent 10439
21c28b0f9e41
child 11090
f5f5f5803935
permissions
-rw-r--r--

Changed some state/mode definitiuons to an enum.Enum class and corrected some code style and formatting issues.

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

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

"""
Module implementing the translator object.
"""

import os

from PyQt6.QtCore import QObject, Qt
from PyQt6.QtGui import QKeySequence

from eric7.EricGui import EricPixmapCache
from eric7.EricGui.EricAction import EricAction
from eric7.UI.UserInterface import UserInterfaceSide


class Translator(QObject):
    """
    Class implementing the translator object.
    """

    def __init__(self, plugin, usesDarkPalette, parent=None):
        """
        Constructor

        @param plugin reference to the plugin object
        @type TranslatorPlugin
        @param usesDarkPalette flag indicating that the platform uses a palette
            with a dark background
        @type bool
        @param parent parent
        @type QObject
        """
        QObject.__init__(self, parent)

        self.__plugin = plugin
        self.__ui = parent

        self.__widget = None

        if usesDarkPalette:
            self.__iconSuffix = "dark"
        else:
            self.__iconSuffix = "light"

    def activate(self):
        """
        Public method to activate the translator.
        """
        from .TranslatorWidget import TranslatorWidget

        self.__widget = TranslatorWidget(self.__plugin, self)
        iconName = (
            "sbTranslator96"
            if self.__ui.getLayoutType() == "Sidebars"
            else "flag-{0}".format(self.__iconSuffix)
        )
        self.__ui.addSideWidget(
            UserInterfaceSide.Bottom,
            self.__widget,
            EricPixmapCache.getIcon(
                os.path.join(os.path.dirname(__file__), "icons", iconName)
            ),
            self.tr("Translator"),
        )

        self.__activateAct = EricAction(
            self.tr("Translator"),
            self.tr("T&ranslator"),
            QKeySequence(self.tr("Alt+Shift+R")),
            0,
            self,
            "translator_activate",
        )
        self.__activateAct.setStatusTip(
            self.tr("Switch the input focus to the Translator window.")
        )
        self.__activateAct.setWhatsThis(
            self.tr(
                """<b>Activate Translator</b>"""
                """<p>This switches the input focus to the Translator"""
                """ window.</p>"""
            )
        )
        self.__activateAct.triggered.connect(self.__activateWidget)

        self.__ui.addEricActions([self.__activateAct], "ui")
        menu = self.__ui.getMenu("subwindow")
        menu.addAction(self.__activateAct)

    def deactivate(self):
        """
        Public method to deactivate the time tracker.
        """
        menu = self.__ui.getMenu("subwindow")
        menu.removeAction(self.__activateAct)
        self.__ui.removeEricActions([self.__activateAct], "ui")
        self.__ui.removeSideWidget(self.__widget)

    def getAppIcon(self, name):
        """
        Public method to get an icon.

        @param name name of the icon file
        @type str
        @return icon
        @rtype QIcon
        """
        return EricPixmapCache.getIcon(
            os.path.join(
                os.path.dirname(__file__),
                "icons",
                "{0}-{1}".format(name, self.__iconSuffix),
            )
        )

    def __activateWidget(self):
        """
        Private slot to handle the activation of the project browser.
        """
        uiLayoutType = self.__ui.getLayoutType()
        if uiLayoutType == "Toolboxes":
            self.__ui.hToolboxDock.show()
            self.__ui.hToolbox.setCurrentWidget(self.__widget)
        elif uiLayoutType == "Sidebars":
            self.__ui.bottomSidebar.show()
            self.__ui.bottomSidebar.setCurrentWidget(self.__widget)
        else:
            self.__widget.show()
        self.__widget.setFocus(Qt.FocusReason.ActiveWindowFocusReason)

eric ide

mercurial