Mon, 05 May 2025 17:40:08 +0200
MicroPython
- Added support for IPv6 for WiFi and Ethernet enabled devices (MPy ≥ 1.24.0).
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
11090
f5f5f5803935
Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
3 | # Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a dialog to show the WiFi status of the connected device. |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
9779
8d3c7c991085
Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9776
diff
changeset
|
10 | import contextlib |
8d3c7c991085
Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9776
diff
changeset
|
11 | |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
12 | from PyQt6.QtCore import Qt, pyqtSlot |
9856 | 13 | from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QTreeWidgetItem |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
15 | from eric7.EricGui import EricPixmapCache |
11263 | 16 | from eric7.SystemUtilities.NetworkUtilities import ipv6AddressScope |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
17 | |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | from .Ui_WifiStatusDialog import Ui_WifiStatusDialog |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | class WifiStatusDialog(QDialog, Ui_WifiStatusDialog): |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | Class implementing a dialog to show the WiFi status of the connected device. |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
26 | def __init__(self, microPython, parent=None): |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | Constructor |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
30 | @param microPython reference to the MicroPython widget |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
31 | @type MicroPythonWidget |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | @param parent reference to the parent widget (defaults to None) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | @type QWidget (optional) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | """ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | super().__init__(parent) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | self.setupUi(self) |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
37 | self.setWindowFlags(Qt.WindowType.Window) |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | self.statusTree.setColumnCount(2) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
41 | self.refreshButton.setIcon(EricPixmapCache.getIcon("reload")) |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
42 | self.refreshButton.clicked.connect(self.__showStatus) |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
43 | |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
44 | self.__mpy = microPython |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
45 | |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
46 | self.__showStatus() |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
47 | |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
48 | @pyqtSlot() |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
49 | def __showStatus(self): |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
50 | """ |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
51 | Private slot to show the current WiFi status. |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
52 | """ |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
53 | # clear old data |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
54 | self.statusTree.clear() |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
55 | |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
56 | # get the status |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
57 | try: |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
58 | clientStatus, apStatus, overallStatus = self.__mpy.getDevice().getWifiData() |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
59 | except Exception as exc: |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
60 | self.__mpy.showError("getWifiData()", str(exc)) |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
61 | return |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
62 | |
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
63 | # populate overall status |
9798 | 64 | QTreeWidgetItem( |
65 | self.statusTree, | |
66 | [ | |
67 | self.tr("Active"), | |
68 | self.tr("Yes") if overallStatus["active"] else self.tr("No"), | |
69 | ], | |
70 | ) | |
10153 | 71 | with contextlib.suppress(KeyError): |
72 | QTreeWidgetItem( | |
73 | self.statusTree, [self.tr("Hostname"), overallStatus["hostname"]] | |
74 | ) | |
75 | with contextlib.suppress(KeyError): | |
76 | QTreeWidgetItem( | |
77 | self.statusTree, [self.tr("Country"), overallStatus["country"]] | |
78 | ) | |
11263 | 79 | with contextlib.suppress(KeyError): |
80 | QTreeWidgetItem( | |
81 | self.statusTree, | |
82 | [self.tr("Preferred IP Version"), str(overallStatus["prefer"])], | |
83 | ) | |
9798 | 84 | |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
85 | # populate status of client interface |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | if clientStatus: |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | header = self.__createHeader(self.tr("Client")) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | QTreeWidgetItem( |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | header, |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | [ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | self.tr("Active"), |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | self.tr("Yes") if clientStatus["active"] else self.tr("No"), |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | ], |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | ) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | if clientStatus["active"]: |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | QTreeWidgetItem( |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | header, |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | [ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | self.tr("Connected"), |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | self.tr("Yes") if clientStatus["connected"] else self.tr("No"), |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | ], |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | ) |
9798 | 103 | with contextlib.suppress(KeyError): |
104 | QTreeWidgetItem(header, [self.tr("Status"), clientStatus["status"]]) | |
11263 | 105 | with contextlib.suppress(KeyError): |
106 | QTreeWidgetItem(header, [self.tr("SSID"), clientStatus["essid"]]) | |
9795 | 107 | with contextlib.suppress(KeyError): |
108 | QTreeWidgetItem( | |
109 | header, [self.tr("Channel"), str(clientStatus["channel"])] | |
110 | ) | |
9779
8d3c7c991085
Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9776
diff
changeset
|
111 | with contextlib.suppress(KeyError): |
8d3c7c991085
Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9776
diff
changeset
|
112 | QTreeWidgetItem( |
8d3c7c991085
Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9776
diff
changeset
|
113 | header, [self.tr("Country"), clientStatus["country"]] |
8d3c7c991085
Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9776
diff
changeset
|
114 | ) |
9797 | 115 | with contextlib.suppress(KeyError): |
116 | QTreeWidgetItem( | |
117 | header, | |
118 | [ | |
119 | self.tr("Tx-Power"), | |
120 | self.tr("{0} dBm").format(clientStatus["txpower"]), | |
121 | ], | |
122 | ) | |
11263 | 123 | QTreeWidgetItem(header, [self.tr("MAC-Address"), clientStatus["mac"]]) |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | |
11263 | 125 | # IPv4 specific data |
126 | ip4Header = self.__createSubheader(header, self.tr("IPv4")) | |
127 | QTreeWidgetItem( | |
128 | ip4Header, [self.tr("Address"), clientStatus["ifconfig"][0]] | |
129 | ) | |
130 | QTreeWidgetItem( | |
131 | ip4Header, [self.tr("Netmask"), clientStatus["ifconfig"][1]] | |
132 | ) | |
133 | QTreeWidgetItem( | |
134 | ip4Header, [self.tr("Gateway"), clientStatus["ifconfig"][2]] | |
135 | ) | |
136 | QTreeWidgetItem( | |
137 | ip4Header, [self.tr("DNS"), clientStatus["ifconfig"][3]] | |
138 | ) | |
139 | ||
140 | # IPv6 specific data | |
141 | if clientStatus["ipv6_addr"]: | |
142 | ip6Header = self.__createSubheader(header, self.tr("IPv6")) | |
143 | ip6AddrHeader = self.__createSubheader( | |
144 | ip6Header, self.tr("Addresses"), underlined=False | |
145 | ) | |
146 | for addr in sorted(clientStatus["ipv6_addr"]): | |
147 | QTreeWidgetItem( | |
148 | ip6AddrHeader, [addr.lower(), ipv6AddressScope(addr)] | |
149 | ) | |
150 | ||
151 | # data about the connected access point | |
9828 | 152 | if "ap_ssid" in clientStatus: |
153 | apHeader = self.__createSubheader( | |
154 | header, self.tr("Connected Access Point") | |
155 | ) | |
156 | QTreeWidgetItem( | |
157 | apHeader, [self.tr("Name"), clientStatus["ap_ssid"]] | |
158 | ) | |
9835 | 159 | with contextlib.suppress(KeyError): |
160 | QTreeWidgetItem( | |
9837
b1d925ecda15
Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9835
diff
changeset
|
161 | apHeader, |
b1d925ecda15
Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9835
diff
changeset
|
162 | [self.tr("Channel"), str(clientStatus["ap_channel"])], |
9835 | 163 | ) |
9828 | 164 | QTreeWidgetItem( |
165 | apHeader, [self.tr("MAC-Address"), clientStatus["ap_bssid"]] | |
166 | ) | |
167 | QTreeWidgetItem( | |
168 | apHeader, [self.tr("RSSI [dBm]"), str(clientStatus["ap_rssi"])] | |
169 | ) | |
170 | QTreeWidgetItem( | |
171 | apHeader, [self.tr("Security"), clientStatus["ap_security"]] | |
172 | ) | |
9835 | 173 | with contextlib.suppress(KeyError): |
174 | QTreeWidgetItem( | |
175 | apHeader, [self.tr("Country"), clientStatus["ap_country"]] | |
176 | ) | |
9828 | 177 | |
11166
fd914f897dcf
MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
178 | # populate status of access point interface |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | if apStatus: |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | header = self.__createHeader(self.tr("Access Point")) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | QTreeWidgetItem( |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | header, |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | [ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | self.tr("Active"), |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | self.tr("Yes") if apStatus["active"] else self.tr("No"), |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | ], |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | ) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | if apStatus["active"]: |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | QTreeWidgetItem( |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | header, |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | [ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | self.tr("Connected"), |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | self.tr("Yes") if apStatus["connected"] else self.tr("No"), |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | ], |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | ) |
9798 | 196 | with contextlib.suppress(KeyError): |
197 | QTreeWidgetItem(header, [self.tr("Status"), apStatus["status"]]) | |
198 | with contextlib.suppress(KeyError): | |
199 | QTreeWidgetItem(header, [self.tr("SSID"), apStatus["essid"]]) | |
11236 | 200 | with contextlib.suppress(KeyError): |
201 | QTreeWidgetItem( | |
202 | header, [self.tr("Security"), apStatus["ap_security"]] | |
203 | ) | |
9798 | 204 | with contextlib.suppress(KeyError): |
205 | QTreeWidgetItem( | |
206 | header, [self.tr("Channel"), str(apStatus["channel"])] | |
207 | ) | |
9779
8d3c7c991085
Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9776
diff
changeset
|
208 | with contextlib.suppress(KeyError): |
9789
d8e0ab86ddca
Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9779
diff
changeset
|
209 | QTreeWidgetItem(header, [self.tr("Country"), apStatus["country"]]) |
9797 | 210 | with contextlib.suppress(KeyError): |
211 | QTreeWidgetItem( | |
212 | header, | |
213 | [ | |
214 | self.tr("Tx-Power"), | |
215 | self.tr("{0} dBm").format(apStatus["txpower"]), | |
216 | ], | |
217 | ) | |
11263 | 218 | QTreeWidgetItem(header, [self.tr("MAC-Address"), apStatus["mac"]]) |
219 | ||
220 | # IPv4 specific data | |
221 | ip4Header = self.__createSubheader(header, self.tr("IPv4")) | |
222 | with contextlib.suppress(KeyError): | |
223 | QTreeWidgetItem( | |
224 | ip4Header, [self.tr("Address"), apStatus["ifconfig"][0]] | |
225 | ) | |
226 | QTreeWidgetItem( | |
227 | ip4Header, [self.tr("Netmask"), apStatus["ifconfig"][1]] | |
228 | ) | |
229 | QTreeWidgetItem( | |
230 | ip4Header, [self.tr("Gateway"), apStatus["ifconfig"][2]] | |
231 | ) | |
232 | QTreeWidgetItem( | |
233 | ip4Header, [self.tr("DNS"), apStatus["ifconfig"][3]] | |
234 | ) | |
235 | ||
236 | # IPv6 specific data | |
237 | if clientStatus["ipv6_addr"]: | |
238 | ip6Header = self.__createSubheader(header, self.tr("IPv6")) | |
239 | ip6AddrHeader = self.__createSubheader( | |
240 | ip6Header, self.tr("Addresses"), underlined=False | |
241 | ) | |
242 | for addr in sorted(apStatus["ipv6_addr"]): | |
243 | QTreeWidgetItem( | |
244 | ip6AddrHeader, [addr.lower(), ipv6AddressScope(addr)] | |
245 | ) | |
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | for col in range(self.statusTree.columnCount()): |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | self.statusTree.resizeColumnToContents(col) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | |
9856 | 250 | self.buttonBox.button(QDialogButtonBox.StandardButton.Close).setDefault(True) |
251 | self.buttonBox.setFocus(Qt.FocusReason.OtherFocusReason) | |
252 | ||
9775
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | def __createHeader(self, headerText): |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | """ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | Private method to create a header item. |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | @param headerText text for the header item |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | @type str |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | @return reference to the created header item |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | @rtype QTreeWidgetItem |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | """ |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | headerItem = QTreeWidgetItem(self.statusTree, [headerText]) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | headerItem.setExpanded(True) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | headerItem.setFirstColumnSpanned(True) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | font = headerItem.font(0) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | font.setBold(True) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | headerItem.setFont(0, font) |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | |
c6806d24468b
Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | return headerItem |
9828 | 271 | |
11263 | 272 | def __createSubheader(self, parent, text, underlined=True): |
9828 | 273 | """ |
274 | Private method to create a subheader item. | |
275 | ||
276 | @param parent reference to the parent item | |
277 | @type QTreeWidgetItem | |
278 | @param text text for the header item | |
279 | @type str | |
11263 | 280 | @param underlined flag indicating an underlined header (defaults to True) |
281 | @type bool (optional) | |
9828 | 282 | @return reference to the created header item |
283 | @rtype QTreeWidgetItem | |
284 | """ | |
285 | headerItem = QTreeWidgetItem(parent, [text]) | |
286 | headerItem.setExpanded(True) | |
287 | headerItem.setFirstColumnSpanned(True) | |
288 | ||
11263 | 289 | if underlined: |
290 | font = headerItem.font(0) | |
291 | font.setUnderline(True) | |
292 | headerItem.setFont(0, font) | |
9828 | 293 | |
294 | return headerItem |