Source code for pyqt_reactive.forms.ui_utils

"""
UI utilities for pyqt-reactor.

Simple formatting and debug utilities used across the forms layer.
"""

import logging
from dataclasses import dataclass
from enum import Enum
from typing import Any


[docs] @dataclass(frozen=True) class FieldDisplayText: """Canonical display strings derived from a parameter field name.""" display_name: str field_label: str checkbox_label: str group_title: str
[docs] @classmethod def from_field_name(cls, name: str) -> "FieldDisplayText": display_name = name.replace('_', ' ').title() return cls( display_name=display_name, field_label=f"{display_name}:", checkbox_label=f"Enable {display_name}", group_title=display_name, )
[docs] def format_field_id(parent: str, param: str) -> str: """Generate field ID: 'parent', 'param' -> 'parent_param'""" return f"{parent}_{param}"
[docs] def debug_param(param_name: str, value: Any, context: str = "") -> None: """Simple parameter debug logging""" context_str = f" [{context}]" if context else "" logging.debug(f"PARAM: {param_name} = {value}{context_str}")
[docs] def format_enum_display(enum_value: Enum) -> str: """Get enum display text, including nested enum-valued members.""" if isinstance(enum_value.value, Enum): return str(enum_value.value.value) if isinstance(enum_value.value, str): return enum_value.value return enum_value.name.upper()
[docs] def format_enum_placeholder(enum_value: Enum, prefix: str = "Pipeline default: ") -> str: """Get enum placeholder: Enum.VALUE -> 'Pipeline default: VALUE'""" return f"{prefix}{format_enum_display(enum_value)}"