(self)
| 1421 | return current_raw_clean != original_raw_clean |
| 1422 | |
| 1423 | def _collect_field_errors(self) -> dict: |
| 1424 | errors: dict[str, str] = {} |
| 1425 | self._clear_field_errors() |
| 1426 | |
| 1427 | patterns_text = self.patterns_entry.get_text().strip() |
| 1428 | if not patterns_text: |
| 1429 | errors["patterns"] = _("Host name (patterns) is required.") |
| 1430 | |
| 1431 | port_value = self.port_entry.get_value() |
| 1432 | if port_value and not (1 <= port_value <= 65535): |
| 1433 | errors["port"] = _("Port must be between 1 and 65535.") |
| 1434 | |
| 1435 | if "patterns" in errors: |
| 1436 | self.patterns_error_label.set_text(errors["patterns"]) |
| 1437 | self.patterns_error_label.set_visible(True) |
| 1438 | self.patterns_entry.add_css_class("entry-error") |
| 1439 | else: |
| 1440 | self.patterns_entry.remove_css_class("entry-error") |
| 1441 | if "port" in errors: |
| 1442 | self.port_error_label.set_text(errors["port"]) |
| 1443 | self.port_error_label.set_visible(True) |
| 1444 | else: |
| 1445 | self.port_error_label.set_visible(False) |
| 1446 | |
| 1447 | interval_value = self.serveralive_interval_entry.get_value() |
| 1448 | if interval_value and interval_value < 0: |
| 1449 | errors["sai"] = _("ServerAliveInterval must be >= 0.") |
| 1450 | |
| 1451 | count_value = self.serveralive_count_entry.get_value() |
| 1452 | if count_value and count_value < 1: |
| 1453 | errors["sacm"] = _("ServerAliveCountMax must be >= 1.") |
| 1454 | |
| 1455 | |
| 1456 | try: |
| 1457 | if self.connect_timeout_entry: |
| 1458 | ct_text = self.connect_timeout_entry.get_text().strip() |
| 1459 | if ct_text: |
| 1460 | ct_val = int(ct_text) |
| 1461 | if ct_val < 1: |
| 1462 | errors["ct"] = _("ConnectTimeout must be >= 1.") |
| 1463 | except ValueError: |
| 1464 | errors["ct"] = _("ConnectTimeout must be numeric.") |
| 1465 | if "ct" in errors and self.connect_timeout_entry: |
| 1466 | self.connect_timeout_entry.add_css_class("entry-error") |
| 1467 | else: |
| 1468 | if self.connect_timeout_entry: |
| 1469 | self.connect_timeout_entry.remove_css_class("entry-error") |
| 1470 | |
| 1471 | return errors |
| 1472 | |
| 1473 | def _clear_field_errors(self): |
| 1474 | if hasattr(self, "patterns_error_label"): |
no test coverage detected