diff --git a/src/Mod/CAM/Path/Tool/docobject/ui/docobject.py b/src/Mod/CAM/Path/Tool/docobject/ui/docobject.py index d01c4f7bfb..f10beab14a 100644 --- a/src/Mod/CAM/Path/Tool/docobject/ui/docobject.py +++ b/src/Mod/CAM/Path/Tool/docobject/ui/docobject.py @@ -30,6 +30,8 @@ from .property import BasePropertyEditorWidget def _get_label_text(prop_name, keep_case=False, preserve_consecutive_caps=False): """Generate a human-readable label from a property name.""" + # First, replace underscores and hyphens with spaces + prop_name = prop_name.replace("_", " ").replace("-", " ") # Add space before capital letters (CamelCase splitting) if preserve_consecutive_caps: s1 = re.sub(r"(? Optional[str]: """Returns the alias/subtype used to instantiate this toolbit, if any.""" # Only return the subtype if it differs from the class name - if self._shape_type.lower() != self._tool_bit_shape.name.lower(): - return self._shape_type.lower() + shape_type = getattr(self, "_shape_type", None) or self._tool_bit_shape.name + if shape_type.lower() != self._tool_bit_shape.name.lower(): + return shape_type.lower() return None diff --git a/src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py b/src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py index 40018954d7..d33fe96a5a 100644 --- a/src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py +++ b/src/Mod/CAM/Path/Tool/toolbit/ui/typefilter.py @@ -48,17 +48,16 @@ class ToolBitTypeFilterMixin: Returns: List of tuples: (display_text, actual_value) """ - # Build a mapping: {ParentType: {actual_subtype: display_subtype}} + # Build a mapping: {ParentType: {subtype_value}} type_map = {} for asset in assets: parent = asset.get_shape_name() # Preserve original case (e.g., "Probe") subtype = asset.get_subtype() if subtype: - # Preserve underscores/hyphens but make displayable - subtype_disp = subtype.replace("_", " ").replace("-", " ").title() - type_map.setdefault(parent, {})[subtype] = subtype_disp + # Store the subtype value + type_map.setdefault(parent, set()).add(subtype) else: - type_map.setdefault(parent, {}) + type_map.setdefault(parent, set()) # Flatten for combo: parent, then indented subtypes # Return tuples of (display, value) @@ -66,7 +65,7 @@ class ToolBitTypeFilterMixin: for parent in sorted(type_map): parent_display = _get_label_text(parent, keep_case=True, preserve_consecutive_caps=True) result.append((parent_display, parent)) # Parent with formatted display - for subtype_val, subtype_disp in sorted(type_map[parent].items()): + for subtype_val in sorted(type_map[parent]): subtype_display = _get_label_text( subtype_val, keep_case=True, preserve_consecutive_caps=True )