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

# Copyright (c) 2014 - 2023 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


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(
            self.__ui.BottomSide,
            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)
