src/eric7/MicroPython/WifiDialogs/WifiStatusDialog.py

branch
eric7
changeset 11263
28f0ead11a82
parent 11236
75c26fe1d1c7
diff -r 07d9cc8d773c -r 28f0ead11a82 src/eric7/MicroPython/WifiDialogs/WifiStatusDialog.py
--- a/src/eric7/MicroPython/WifiDialogs/WifiStatusDialog.py	Mon May 05 10:17:49 2025 +0200
+++ b/src/eric7/MicroPython/WifiDialogs/WifiStatusDialog.py	Mon May 05 17:40:08 2025 +0200
@@ -13,6 +13,7 @@
 from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem
 
 from eric7.EricGui import EricPixmapCache
+from eric7.SystemUtilities.NetworkUtilities import ipv6AddressScope
 
 from .Ui_WifiStatusDialog import Ui_WifiStatusDialog
 
@@ -75,6 +76,11 @@
             QTreeWidgetItem(
                 self.statusTree, [self.tr("Country"), overallStatus["country"]]
             )
+        with contextlib.suppress(KeyError):
+            QTreeWidgetItem(
+                self.statusTree,
+                [self.tr("Preferred IP Version"), str(overallStatus["prefer"])],
+            )
 
         # populate status of client interface
         if clientStatus:
@@ -96,17 +102,8 @@
                 )
                 with contextlib.suppress(KeyError):
                     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"]])
+                with contextlib.suppress(KeyError):
+                    QTreeWidgetItem(header, [self.tr("SSID"), clientStatus["essid"]])
                 with contextlib.suppress(KeyError):
                     QTreeWidgetItem(
                         header, [self.tr("Channel"), str(clientStatus["channel"])]
@@ -123,7 +120,35 @@
                             self.tr("{0} dBm").format(clientStatus["txpower"]),
                         ],
                     )
+                QTreeWidgetItem(header, [self.tr("MAC-Address"), clientStatus["mac"]])
 
+                # IPv4 specific data
+                ip4Header = self.__createSubheader(header, self.tr("IPv4"))
+                QTreeWidgetItem(
+                    ip4Header, [self.tr("Address"), clientStatus["ifconfig"][0]]
+                )
+                QTreeWidgetItem(
+                    ip4Header, [self.tr("Netmask"), clientStatus["ifconfig"][1]]
+                )
+                QTreeWidgetItem(
+                    ip4Header, [self.tr("Gateway"), clientStatus["ifconfig"][2]]
+                )
+                QTreeWidgetItem(
+                    ip4Header, [self.tr("DNS"), clientStatus["ifconfig"][3]]
+                )
+
+                # IPv6 specific data
+                if clientStatus["ipv6_addr"]:
+                    ip6Header = self.__createSubheader(header, self.tr("IPv6"))
+                    ip6AddrHeader = self.__createSubheader(
+                        ip6Header, self.tr("Addresses"), underlined=False
+                    )
+                    for addr in sorted(clientStatus["ipv6_addr"]):
+                        QTreeWidgetItem(
+                            ip6AddrHeader, [addr.lower(), ipv6AddressScope(addr)]
+                        )
+
+                # data about the connected access point
                 if "ap_ssid" in clientStatus:
                     apHeader = self.__createSubheader(
                         header, self.tr("Connected Access Point")
@@ -171,23 +196,11 @@
                 with contextlib.suppress(KeyError):
                     QTreeWidgetItem(header, [self.tr("Status"), apStatus["status"]])
                 with contextlib.suppress(KeyError):
-                    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]])
-                with contextlib.suppress(KeyError):
                     QTreeWidgetItem(header, [self.tr("SSID"), apStatus["essid"]])
                 with contextlib.suppress(KeyError):
                     QTreeWidgetItem(
                         header, [self.tr("Security"), apStatus["ap_security"]]
                     )
-                QTreeWidgetItem(header, [self.tr("MAC-Address"), apStatus["mac"]])
                 with contextlib.suppress(KeyError):
                     QTreeWidgetItem(
                         header, [self.tr("Channel"), str(apStatus["channel"])]
@@ -202,6 +215,34 @@
                             self.tr("{0} dBm").format(apStatus["txpower"]),
                         ],
                     )
+                QTreeWidgetItem(header, [self.tr("MAC-Address"), apStatus["mac"]])
+
+                # IPv4 specific data
+                ip4Header = self.__createSubheader(header, self.tr("IPv4"))
+                with contextlib.suppress(KeyError):
+                    QTreeWidgetItem(
+                        ip4Header, [self.tr("Address"), apStatus["ifconfig"][0]]
+                    )
+                    QTreeWidgetItem(
+                        ip4Header, [self.tr("Netmask"), apStatus["ifconfig"][1]]
+                    )
+                    QTreeWidgetItem(
+                        ip4Header, [self.tr("Gateway"), apStatus["ifconfig"][2]]
+                    )
+                    QTreeWidgetItem(
+                        ip4Header, [self.tr("DNS"), apStatus["ifconfig"][3]]
+                    )
+
+                # IPv6 specific data
+                if clientStatus["ipv6_addr"]:
+                    ip6Header = self.__createSubheader(header, self.tr("IPv6"))
+                    ip6AddrHeader = self.__createSubheader(
+                        ip6Header, self.tr("Addresses"), underlined=False
+                    )
+                    for addr in sorted(apStatus["ipv6_addr"]):
+                        QTreeWidgetItem(
+                            ip6AddrHeader, [addr.lower(), ipv6AddressScope(addr)]
+                        )
 
         for col in range(self.statusTree.columnCount()):
             self.statusTree.resizeColumnToContents(col)
@@ -224,12 +265,11 @@
 
         font = headerItem.font(0)
         font.setBold(True)
-
         headerItem.setFont(0, font)
 
         return headerItem
 
-    def __createSubheader(self, parent, text):
+    def __createSubheader(self, parent, text, underlined=True):
         """
         Private method to create a subheader item.
 
@@ -237,6 +277,8 @@
         @type QTreeWidgetItem
         @param text text for the header item
         @type str
+        @param underlined flag indicating an underlined header (defaults to True)
+        @type bool (optional)
         @return reference to the created header item
         @rtype QTreeWidgetItem
         """
@@ -244,8 +286,9 @@
         headerItem.setExpanded(True)
         headerItem.setFirstColumnSpanned(True)
 
-        font = headerItem.font(0)
-        font.setUnderline(True)
-        headerItem.setFont(0, font)
+        if underlined:
+            font = headerItem.font(0)
+            font.setUnderline(True)
+            headerItem.setFont(0, font)
 
         return headerItem

eric ide

mercurial