Added the Adafruit Feather nRF52840 to the list of known NRF52 boards and changed the list of known CircuitPython boards to be more explicit with respect to Adafruit boards (i.e. VID 0x239A).
9878
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1
|
# -*- coding: utf-8 -*- |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2
|
|
11090
|
3
|
# Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
9878
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4
|
# |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7
|
Module implementing a dialog to enter an IPv4 address. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10
|
from PyQt6.QtCore import pyqtSlot |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11
|
from PyQt6.QtWidgets import QDialog, QDialogButtonBox |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13
|
from .Ui_IPv4AddressDialog import Ui_IPv4AddressDialog |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16
|
class IPv4AddressDialog(QDialog, Ui_IPv4AddressDialog): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18
|
Class implementing a dialog to enter an IPv4 address. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21
|
def __init__(self, withDhcp=False, parent=None): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23
|
Constructor |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25
|
@param withDhcp flag indicating to allow the DHCP selection |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26
|
@type bool |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27
|
@param parent reference to the parent widget (defaults to None) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28
|
@type QWidget (optional) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30
|
super().__init__(parent) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31
|
self.setupUi(self) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33
|
self.__withDhcp = withDhcp |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34
|
self.dhcpCheckBox.setVisible(withDhcp) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35
|
if withDhcp: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36
|
self.dhcpCheckBox.clicked.connect(self.__updateOk) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37
|
self.dhcpCheckBox.clicked.connect(self.ipAddressGroup.setDisabled) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39
|
self.addressEdit.addressChanged.connect(self.__updateOk) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40
|
self.netmaskEdit.addressChanged.connect(self.__updateOk) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41
|
self.gatewayEdit.addressChanged.connect(self.__updateOk) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42
|
self.dnsEdit.addressChanged.connect(self.__updateOk) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44
|
self.__updateOk() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46
|
msh = self.minimumSizeHint() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47
|
self.resize(max(self.width(), msh.width()), msh.height()) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49
|
@pyqtSlot() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50
|
def __updateOk(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52
|
Private method to update the enabled state of the OK button. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54
|
enable = (self.__withDhcp and self.dhcpCheckBox.isChecked()) or ( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55
|
self.addressEdit.hasAcceptableInput() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56
|
and self.netmaskEdit.hasAcceptableInput() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57
|
and self.gatewayEdit.hasAcceptableInput() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58
|
and self.dnsEdit.hasAcceptableInput() |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59
|
) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61
|
self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(enable) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63
|
def getIPv4Address(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65
|
Public method to get the entered IPv4 address. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66
|
|
10153
|
67
|
@return tuple containing a tuple of the IPv4 address, the netmask, the gateway |
|
68
|
address and the resolver address or the string 'dhcp' if dynamic addressing |
|
69
|
was selected and the hostname for the device |
|
70
|
@rtype tuple of ((str, str, str, str), str) or (str, str) |
9878
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72
|
if self.dhcpCheckBox.isChecked(): |
10153
|
73
|
return "dhcp", self.hostnameEdit.text() |
9878
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74
|
else: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75
|
return ( |
10153
|
76
|
( |
|
77
|
self.addressEdit.text(), |
|
78
|
self.netmaskEdit.text(), |
|
79
|
self.gatewayEdit.text(), |
|
80
|
self.dnsEdit.text(), |
|
81
|
), |
|
82
|
self.hostnameEdit.text(), |
9878
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83
|
) |