src/eric7/MicroPython/EthernetDialogs/IPv4AddressDialog.py

Sun, 16 Mar 2025 12:53:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 16 Mar 2025 12:53:12 +0100
branch
eric7
changeset 11170
6d6199d668fb
parent 11090
f5f5f5803935
permissions
-rw-r--r--

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

eric ide

mercurial