Skip to content

Commit e6d3f40

Browse files
committed
refactor: Simplify styling service and widget creation
- Remove ProvenanceButton from widget_creation_config - Simplify enabled_field_styling_service
1 parent 423debe commit e6d3f40

2 files changed

Lines changed: 20 additions & 22 deletions

File tree

src/pyqt_reactive/forms/widget_creation_config.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -292,14 +292,14 @@ def on_title_click(e):
292292
logger.debug(f"🔍 _move_enabled_widget_to_title: dotted_path={dotted_path}, has_provenance={has_provenance}")
293293
provenance_button.update_visibility_based_on_provenance()
294294

295-
# Underline title label if enabled field's value differs from signature
295+
# Underline checkbox if enabled field's value differs from signature
296296
should_underline = dotted_path in nested_manager.state.signature_diff_fields
297297
logger.debug(f"🔍 _move_enabled_widget_to_title: should_underline={should_underline}, signature_diff_fields={nested_manager.state.signature_diff_fields}")
298-
if should_underline and title_label:
299-
font = title_label.font()
298+
if should_underline and isinstance(checkbox_widget, NoneAwareCheckBox):
299+
font = checkbox_widget.font()
300300
font.setUnderline(True)
301-
title_label.setFont(font)
302-
logger.debug(f"🔍 _move_enabled_widget_to_title: underlined title_label for signature diff")
301+
checkbox_widget.setFont(font)
302+
logger.debug(f"🔍 _move_enabled_widget_to_title: underlined checkbox_widget for signature diff")
303303

304304
container.addEnableableWidgets(enabled_widget, enabled_reset_button, provenance_button)
305305
logger.debug(f"🔍 _move_enabled_widget_to_title: added widgets to container, provenance_button visible={provenance_button.isVisible()}")

src/pyqt_reactive/services/enabled_field_styling_service.py

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -295,16 +295,16 @@ def _apply_nested_config_styling(self, manager, resolved_value: bool) -> None:
295295
effect.setOpacity(0.4)
296296
widget.setGraphicsEffect(effect)
297297

298-
# Update provenance button visibility and title label underline
299-
self._update_title_label_styling(manager)
298+
# Update provenance button visibility and checkbox underline
299+
self._update_enabled_field_title_styling(manager)
300300

301-
def _update_title_label_styling(self, manager) -> None:
301+
def _update_enabled_field_title_styling(self, manager) -> None:
302302
"""
303-
Update title label styling for nested configs with enabled fields.
303+
Update title styling for nested configs with enabled fields.
304304
305305
This handles:
306306
- Provenance button visibility (only show when provenance source available)
307-
- Title label underline (when enabled field's value differs from signature)
307+
- Checkbox underline (when enabled field's value differs from signature)
308308
309309
Args:
310310
manager: ParameterFormManager instance (nested manager)
@@ -325,11 +325,6 @@ def _update_title_label_styling(self, manager) -> None:
325325
if not group_box:
326326
return
327327

328-
# Get title label from GroupBox
329-
title_label = getattr(group_box, '_title_label', None)
330-
if not title_label:
331-
return
332-
333328
# Update provenance button visibility
334329
# The button is in the title layout, we need to find it
335330
from pyqt_reactive.widgets.shared.clickable_help_components import ProvenanceButton
@@ -339,13 +334,16 @@ def _update_title_label_styling(self, manager) -> None:
339334
logger.debug(f"[TITLE_STYLING] Updated provenance button visibility for {param_name}")
340335
break
341336

342-
# Update title label underline based on signature diff
343-
dotted_path = f'{manager.field_id}.{param_name}' if manager.field_id else param_name
344-
should_underline = dotted_path in manager.state.signature_diff_fields
345-
font = title_label.font()
346-
font.setUnderline(should_underline)
347-
title_label.setFont(font)
348-
logger.debug(f"[TITLE_STYLING] field_id={param_name}, should_underline={should_underline}")
337+
# Update checkbox underline based on signature diff
338+
# The checkbox is the enabled widget, we need to find it
339+
enabled_widget = manager.widgets.get('enabled')
340+
if enabled_widget:
341+
dotted_path = f'{manager.field_id}.{param_name}' if manager.field_id else param_name
342+
should_underline = dotted_path in manager.state.signature_diff_fields
343+
font = enabled_widget.font()
344+
font.setUnderline(should_underline)
345+
enabled_widget.setFont(font)
346+
logger.debug(f"[TITLE_STYLING] field_id={param_name}, should_underline={should_underline}")
349347

350348
# CRITICAL: Trigger a visual update so opacity effects are rendered
351349
# Qt doesn't automatically render QGraphicsOpacityEffect changes

0 commit comments

Comments
 (0)