src/eric7/EricNetwork/EricIPv4InputWidget.py

Thu, 11 May 2023 10:20:10 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 11 May 2023 10:20:10 +0200
branch
eric7
changeset 10024
3bbf6dbec0bd
parent 9830
6c91fdb0e55b
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Fixed an issue related to the IPv4 address widget.

9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de>
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a widget to enter an IPv4 address.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import ipaddress
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
9830
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
12 from PyQt6.QtCore import QEvent, QRegularExpression, Qt, pyqtSignal, pyqtSlot
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtGui import QRegularExpressionValidator
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from PyQt6.QtWidgets import QWidget
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 from eric7.EricGui import EricPixmapCache
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from .Ui_EricIPv4InputWidget import Ui_EricIPv4InputWidget
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 class EricIPv4InputWidget(QWidget, Ui_EricIPv4InputWidget):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Class implementing a widget to enter an IPv4 address.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 @signal addressChanged() emitted to indicate a change of the entered IPv4 address
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
9830
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
27
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 addressChanged = pyqtSignal()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 def __init__(self, parent=None):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 Constructor
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param parent reference to the parent widget (defaults to None)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @type QWidget (optional)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 super().__init__(parent)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 self.setupUi(self)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.clearButton.setIcon(EricPixmapCache.getIcon("clearLeft"))
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 self.clearButton.clicked.connect(self.__clear)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 ipRange = r"(?:[0-1]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])"
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.ip1Edit.setValidator(
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 QRegularExpressionValidator(QRegularExpression(ipRange))
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 )
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.ip2Edit.setValidator(
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 QRegularExpressionValidator(QRegularExpression(ipRange))
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 )
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.ip3Edit.setValidator(
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 QRegularExpressionValidator(QRegularExpression(ipRange))
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 )
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.ip4Edit.setValidator(
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 QRegularExpressionValidator(QRegularExpression(ipRange))
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 )
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.ip1Edit.installEventFilter(self)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.ip2Edit.installEventFilter(self)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.ip3Edit.installEventFilter(self)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.ip1Edit.textChanged.connect(self.addressChanged)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.ip2Edit.textChanged.connect(self.addressChanged)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.ip3Edit.textChanged.connect(self.addressChanged)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.ip4Edit.textChanged.connect(self.addressChanged)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 def eventFilter(self, obj, evt):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 Public method to filter pressing '.' to give focus to the next input field.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @param obj reference to the object
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 @type QObject
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 @param evt reference to the event object
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 @type QEvent
9830
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
75 @return flag indicating, that the event was handled
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
76 @rtype bool
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 """
9830
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
78 if evt.type() == QEvent.Type.KeyPress and evt.text() == ".":
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
79 if obj is self.ip1Edit:
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
80 nextWidget = self.ip2Edit
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
81 elif obj is self.ip2Edit:
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
82 nextWidget = self.ip3Edit
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
83 elif obj is self.ip3Edit:
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
84 nextWidget = self.ip4Edit
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
85 else:
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
86 nextWidget = None
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
87 if nextWidget:
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
88 nextWidget.setFocus(Qt.FocusReason.TabFocusReason)
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
89 return True
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 return super().eventFilter(obj, evt)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 def hasAcceptableInput(self):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 Public method to check, if the input is acceptable.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 @return flag indicating acceptable input
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @rtype bool
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 try:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 ipaddress.IPv4Address(self.text())
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 except ipaddress.AddressValueError:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 # leading zeros are not allowed
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 return False
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 return (
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.ip1Edit.hasAcceptableInput()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 and self.ip2Edit.hasAcceptableInput()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 and self.ip3Edit.hasAcceptableInput()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 and self.ip4Edit.hasAcceptableInput()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 )
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 def text(self):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 Public method to get the IPv4 address as a string.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 @return IPv4 address
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 @rtype str
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 """
10024
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
120 ip1 = self.ip1Edit.text()
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
121 ip2 = self.ip2Edit.text()
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
122 ip3 = self.ip3Edit.text()
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
123 ip4 = self.ip4Edit.text()
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
124
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
125 if not all(bool(ip) for ip in (ip1, ip2, ip3, ip4)):
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
126 return ""
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
127
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
128 return "{0}.{1}.{2}.{3}".format(ip1, ip2, ip3, ip4)
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 def setText(self, address):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 Public method to set the IPv4 address given a string.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133
10024
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
134 Note: If an invalid address is given, the input is cleared.
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
135
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @param address IPv4 address
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 @type str
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
10024
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
139 if address and address != "...": # '...' is empty as well
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 try:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 ipaddress.IPv4Address(address)
10024
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
142 except ipaddress.AddressValueError:
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
143 self.clear()
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
144 return
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 addressParts = address.split(".")
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 self.ip1Edit.setText(addressParts[0])
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.ip2Edit.setText(addressParts[1])
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 self.ip3Edit.setText(addressParts[2])
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 self.ip4Edit.setText(addressParts[3])
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 else:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 self.clear()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 def address(self):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 Public method to get the IPv4 address as an ipaddress.IPv4Address object.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 @return IPv4 address
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 @rtype ipaddress.IPv4Address
9830
6c91fdb0e55b Fixed some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
160 @exception ValueError raised to indicate an invalid IPv4 address
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 try:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 return ipaddress.IPv4Address(self.text())
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 except ipaddress.AddressValueError as err:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 raise ValueError(str(err))
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 def setAddress(self, address):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 Public method to set the IPv4 address given an ipaddress.IPv4Address object.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 @param address IPv4 address
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 @type ipaddress.IPv4Address
10024
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
173 @exception ValueError raised to indicate an invalid IPv4 address
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 """
10024
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
175 if address and address != "...": # '...' is empty as well
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
176 try:
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
177 ipaddress.IPv4Address(address)
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
178 except ipaddress.AddressValueError as err:
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
179 raise ValueError(str(err))
3bbf6dbec0bd Fixed an issue related to the IPv4 address widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9830
diff changeset
180
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.setText(str(address))
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 else:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self.clear()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 @pyqtSlot()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 def clear(self):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 Public slot to clear the input fields.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.ip1Edit.clear()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 self.ip2Edit.clear()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 self.ip3Edit.clear()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 self.ip4Edit.clear()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 @pyqtSlot()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 def __clear(self):
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 Private slot to handle the clear button press.
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 """
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 self.clear()
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 self.ip1Edit.setFocus(Qt.FocusReason.OtherFocusReason)

eric ide

mercurial