diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2025-10-24 20:08:06 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-24 20:08:06 +0200 |
| commit | 7b3ae71ad94e2f8b0db51be40a764751015671f1 (patch) | |
| tree | dedd2c4da9811a543c0cd697a6ea85a8ccb5e93e /lib/extensions/troubleshoot.py | |
| parent | 280a04289fbcf30d0ef6509a7738d99e64ae288b (diff) | |
Troubleshoot: add display options (errors, warnings, type warnings) (#3969)
* troubleshoot: add display options (errors, warnings, type warnings)
* add checked for errortype message when valid
Diffstat (limited to 'lib/extensions/troubleshoot.py')
| -rw-r--r-- | lib/extensions/troubleshoot.py | 58 |
1 files changed, 42 insertions, 16 deletions
diff --git a/lib/extensions/troubleshoot.py b/lib/extensions/troubleshoot.py index c3be31b9..9ecae7b6 100644 --- a/lib/extensions/troubleshoot.py +++ b/lib/extensions/troubleshoot.py @@ -26,21 +26,19 @@ class Troubleshoot(InkstitchExtension): self.arg_parser.add_argument("-p", "--pointer-size", type=float, default=5, dest="pointer_size_mm") self.arg_parser.add_argument("-f", "--font-size", type=float, default=2, dest="font_size_mm") + self.arg_parser.add_argument("-e", "--show-errors", type=inkex.Boolean, default=True, dest="show_errors") + self.arg_parser.add_argument("-w", "--show-warnings", type=inkex.Boolean, default=True, dest="show_warnings") + self.arg_parser.add_argument("-o", "--show-type-warning", type=inkex.Boolean, default=True, dest="show_type_warning") + def effect(self): self.create_troubleshoot_layer() - problem_types = {'error': set(), 'warning': set(), 'type_warning': set()} - if self.get_elements(True): - for element in self.elements: - for problem in element.validation_errors(): - problem_types['error'].add(type(problem)) - self.insert_pointer(problem) - for problem in element.validation_warnings(): - if isinstance(problem, ObjectTypeWarning): - problem_types['type_warning'].add(type(problem)) - else: - problem_types['warning'].add(type(problem)) - self.insert_pointer(problem) + if not any([self.options.show_errors, self.options.show_warnings, self.options.show_type_warning]): + # There is nothing left to show + self.troubleshoot_layer.delete() + return + + problem_types = self._get_and_insert_problems() if any(problem_types.values()): self.add_descriptions(problem_types) @@ -48,12 +46,40 @@ class Troubleshoot(InkstitchExtension): else: self.troubleshoot_layer.delete() - message = _("All selected shapes are valid! ") - message += "\n\n" - message += _("If you are still having trouble with a shape not being embroidered, " - "check if it is in a layer with an ignore command.") + if self.options.show_errors: + message = _("All selected shapes are valid!") + message += "\n\n" + message += _("Checked for:\n") + if self.options.show_errors: + message += _("* errors\n") + if self.options.show_warnings: + message += _("* warnings\n") + if self.options.show_type_warning: + message += _("* type_warnings") + message += "\n\n" + message += _("If you are still having trouble with a shape not being embroidered, " + "check if it is in a layer with an ignore command.") + else: + message = _("No warnings found for selected shapes!") inkex.errormsg(message) + def _get_and_insert_problems(self): + problem_types = {'error': set(), 'warning': set(), 'type_warning': set()} + if self.get_elements(True): + for element in self.elements: + if self.options.show_errors: + for problem in element.validation_errors(): + problem_types['error'].add(type(problem)) + self.insert_pointer(problem) + for problem in element.validation_warnings(): + if isinstance(problem, ObjectTypeWarning) and self.options.show_type_warning: + problem_types['type_warning'].add(type(problem)) + self.insert_pointer(problem) + if isinstance(problem, ValidationWarning) and self.options.show_warnings: + problem_types['warning'].add(type(problem)) + self.insert_pointer(problem) + return problem_types + def insert_pointer(self, problem): correction_transform = get_correction_transform(self.troubleshoot_layer) pointer_size = self.options.pointer_size_mm * PIXELS_PER_MM |
