diff -r a842dbf8c0df -r 3bbf6dbec0bd src/eric7/EricNetwork/EricIPv4InputWidget.py --- 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()