src/eric7/EricNetwork/EricIPv4InputWidget.py

branch
eric7
changeset 10024
3bbf6dbec0bd
parent 9830
6c91fdb0e55b
child 10439
21c28b0f9e41
--- a/src/eric7/EricNetwork/EricIPv4InputWidget.py	Sat May 06 19:23:10 2023 +0200
+++ b/src/eric7/EricNetwork/EricIPv4InputWidget.py	Thu May 11 10:20:10 2023 +0200
@@ -117,26 +117,31 @@
         @return IPv4 address
         @rtype str
         """
-        return "{0}.{1}.{2}.{3}".format(
-            self.ip1Edit.text(),
-            self.ip2Edit.text(),
-            self.ip3Edit.text(),
-            self.ip4Edit.text(),
-        )
+        ip1 = self.ip1Edit.text()
+        ip2 = self.ip2Edit.text()
+        ip3 = self.ip3Edit.text()
+        ip4 = self.ip4Edit.text()
+
+        if not all(bool(ip) for ip in (ip1, ip2, ip3, ip4)):
+            return ""
+
+        return "{0}.{1}.{2}.{3}".format(ip1, ip2, ip3, ip4)
 
     def setText(self, address):
         """
         Public method to set the IPv4 address given a string.
 
+        Note: If an invalid address is given, the input is cleared.
+
         @param address IPv4 address
         @type str
-        @exception ValueError raised to indicate an invalid IPv4 address
         """
-        if address:
+        if address and address != "...":  # '...' is empty as well
             try:
                 ipaddress.IPv4Address(address)
-            except ipaddress.AddressValueError as err:
-                raise ValueError(str(err))
+            except ipaddress.AddressValueError:
+                self.clear()
+                return
 
             addressParts = address.split(".")
             self.ip1Edit.setText(addressParts[0])
@@ -165,8 +170,14 @@
 
         @param address IPv4 address
         @type ipaddress.IPv4Address
+        @exception ValueError raised to indicate an invalid IPv4 address
         """
-        if address:
+        if address and address != "...":  # '...' is empty as well
+            try:
+                ipaddress.IPv4Address(address)
+            except ipaddress.AddressValueError as err:
+                raise ValueError(str(err))
+
             self.setText(str(address))
         else:
             self.clear()

eric ide

mercurial