src/eric7/Preferences/ConfigurationPages/WebBrowserVirusTotalPage.py

Fri, 04 Nov 2022 13:52:26 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 04 Nov 2022 13:52:26 +0100
branch
eric7
changeset 9473
3f23dbf37dbe
parent 9413
80c06d472826
child 9482
a2bc06a54d9d
permissions
-rw-r--r--

Resorted the import statements using isort.

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

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

"""
Module implementing VirusTotal configuration page (web browser variant).
"""

from PyQt6.QtCore import pyqtSlot

from eric7 import Preferences

from .ConfigurationPageBase import ConfigurationPageBase
from .Ui_WebBrowserVirusTotalPage import Ui_WebBrowserVirusTotalPage


class WebBrowserVirusTotalPage(ConfigurationPageBase, Ui_WebBrowserVirusTotalPage):
    """
    Class implementing VirusTotal configuration page (web browser variant).
    """

    def __init__(self):
        """
        Constructor
        """
        super().__init__()
        self.setupUi(self)
        self.setObjectName("HelpVirusTotalPage")

        self.testResultLabel.setHidden(True)

        from eric7.WebBrowser.VirusTotal.VirusTotalApi import VirusTotalAPI

        self.__vt = VirusTotalAPI(self)
        self.__vt.checkServiceKeyFinished.connect(self.__checkServiceKeyFinished)

        # set initial values
        self.vtEnabledCheckBox.setChecked(
            Preferences.getWebBrowser("VirusTotalEnabled")
        )
        self.vtSecureCheckBox.setChecked(Preferences.getWebBrowser("VirusTotalSecure"))
        self.vtServiceKeyEdit.setText(Preferences.getWebBrowser("VirusTotalServiceKey"))

    def save(self):
        """
        Public slot to save the VirusTotal configuration.
        """
        Preferences.setWebBrowser(
            "VirusTotalEnabled", self.vtEnabledCheckBox.isChecked()
        )
        Preferences.setWebBrowser("VirusTotalSecure", self.vtSecureCheckBox.isChecked())
        Preferences.setWebBrowser("VirusTotalServiceKey", self.vtServiceKeyEdit.text())

    @pyqtSlot(str)
    def on_vtServiceKeyEdit_textChanged(self, txt):
        """
        Private slot to handle changes of the service key.

        @param txt entered service key (string)
        """
        self.testButton.setEnabled(txt != "")

    @pyqtSlot()
    def on_testButton_clicked(self):
        """
        Private slot to test the entered service key.
        """
        self.testResultLabel.setHidden(False)
        self.testResultLabel.setText(self.tr("Checking validity of the service key..."))
        protocol = "https" if self.vtSecureCheckBox.isChecked() else "http"
        self.__vt.checkServiceKeyValidity(self.vtServiceKeyEdit.text(), protocol)

    @pyqtSlot(bool, str)
    def __checkServiceKeyFinished(self, result, msg):
        """
        Private slot to receive the result of the service key check.

        @param result flag indicating a successful check (boolean)
        @param msg network error message (str)
        """
        if result:
            self.testResultLabel.setText(self.tr("The service key is valid."))
        else:
            if msg == "":
                self.testResultLabel.setText(
                    self.tr(
                        '<font color="#FF0000">The service key is' " not valid.</font>"
                    )
                )
            else:
                self.testResultLabel.setText(
                    self.tr('<font color="#FF0000"><b>Error:</b> {0}</font>').format(
                        msg
                    )
                )


def create(dlg):
    """
    Module function to create the configuration page.

    @param dlg reference to the configuration dialog
    @return reference to the instantiated page (ConfigurationPageBase)
    """
    page = WebBrowserVirusTotalPage()
    return page

eric ide

mercurial