src/eric7/MicroPython/WifiDialogs/WifiStatusDialog.py

Sun, 19 Feb 2023 14:45:16 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 19 Feb 2023 14:45:16 +0100
branch
mpy_network
changeset 9779
8d3c7c991085
parent 9776
210bf87ae5c7
child 9789
d8e0ab86ddca
permissions
-rw-r--r--

Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).

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

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

"""
Module implementing a dialog to show the WiFi status of the connected device.
"""

import contextlib

from PyQt6.QtWidgets import QDialog, QTreeWidgetItem

from .Ui_WifiStatusDialog import Ui_WifiStatusDialog


class WifiStatusDialog(QDialog, Ui_WifiStatusDialog):
    """
    Class implementing a dialog to show the WiFi status of the connected device.
    """

    def __init__(self, clientStatus, apStatus, parent=None):
        """
        Constructor

        @param clientStatus dictionary containing the WiFi status data of the
            client interface
        @type dict
        @param apStatus dictionary containing the WiFi status data of the
            access point interface
        @type dict
        @param parent reference to the parent widget (defaults to None)
        @type QWidget (optional)
        """
        super().__init__(parent)
        self.setupUi(self)

        self.statusTree.setColumnCount(2)

        # client interface
        if clientStatus:
            header = self.__createHeader(self.tr("Client"))
            QTreeWidgetItem(
                header,
                [
                    self.tr("Active"),
                    self.tr("Yes") if clientStatus["active"] else self.tr("No"),
                ],
            )
            if clientStatus["active"]:
                QTreeWidgetItem(
                    header,
                    [
                        self.tr("Connected"),
                        self.tr("Yes") if clientStatus["connected"] else self.tr("No"),
                    ],
                )
                QTreeWidgetItem(header, [self.tr("Status"), clientStatus["status"]])
                QTreeWidgetItem(
                    header, [self.tr("IPv4 Address"), clientStatus["ifconfig"][0]]
                )
                QTreeWidgetItem(
                    header, [self.tr("Netmask"), clientStatus["ifconfig"][1]]
                )
                QTreeWidgetItem(
                    header, [self.tr("Gateway"), clientStatus["ifconfig"][2]]
                )
                QTreeWidgetItem(header, [self.tr("DNS"), clientStatus["ifconfig"][3]])
                QTreeWidgetItem(header, [self.tr("MAC-Address"), clientStatus["mac"]])
                QTreeWidgetItem(
                    header, [self.tr("Channel"), str(clientStatus["channel"])]
                )
                with contextlib.suppress(KeyError):
                    QTreeWidgetItem(
                        header, [self.tr("Country"), clientStatus["country"]]
                    )
                QTreeWidgetItem(
                    header,
                    [
                        self.tr("Tx-Power"),
                        self.tr("{0} dBm").format(clientStatus["txpower"]),
                    ],
                )

        # access point interface
        if apStatus:
            header = self.__createHeader(self.tr("Access Point"))
            QTreeWidgetItem(
                header,
                [
                    self.tr("Active"),
                    self.tr("Yes") if apStatus["active"] else self.tr("No"),
                ],
            )
            if apStatus["active"]:
                QTreeWidgetItem(
                    header,
                    [
                        self.tr("Connected"),
                        self.tr("Yes") if apStatus["connected"] else self.tr("No"),
                    ],
                )
                QTreeWidgetItem(header, [self.tr("Status"), apStatus["status"]])
                QTreeWidgetItem(
                    header, [self.tr("IPv4 Address"), apStatus["ifconfig"][0]]
                )
                QTreeWidgetItem(header, [self.tr("Netmask"), apStatus["ifconfig"][1]])
                QTreeWidgetItem(header, [self.tr("Gateway"), apStatus["ifconfig"][2]])
                QTreeWidgetItem(header, [self.tr("DNS"), apStatus["ifconfig"][3]])
                QTreeWidgetItem(header, [self.tr("SSID"), apStatus["essid"]])
                QTreeWidgetItem(header, [self.tr("MAC-Address"), apStatus["mac"]])
                QTreeWidgetItem(header, [self.tr("Channel"), str(apStatus["channel"])])
                with contextlib.suppress(KeyError):
                    QTreeWidgetItem(
                        header, [self.tr("Country"), apStatus["country"]]
                    )
                QTreeWidgetItem(
                    header,
                    [
                        self.tr("Tx-Power"),
                        self.tr("{0} dBm").format(apStatus["txpower"]),
                    ],
                )

        for col in range(self.statusTree.columnCount()):
            self.statusTree.resizeColumnToContents(col)

    def __createHeader(self, headerText):
        """
        Private method to create a header item.

        @param headerText text for the header item
        @type str
        @return reference to the created header item
        @rtype QTreeWidgetItem
        """
        headerItem = QTreeWidgetItem(self.statusTree, [headerText])
        headerItem.setExpanded(True)
        headerItem.setFirstColumnSpanned(True)

        font = headerItem.font(0)
        font.setBold(True)

        headerItem.setFont(0, font)

        return headerItem

eric ide

mercurial