pyqt_reactive.services.signal_service

Consolidated Signal Service.

Merges: - SignalBlockingService: Context managers for widget signal blocking - SignalConnectionService: Signal wiring for ParameterFormManager - CrossWindowRegistration: Context manager for cross-window registration

Key features: 1. Context manager guarantees signal unblocking 2. Supports single or multiple widgets 3. Consolidates all signal wiring logic 4. Cross-window registration with RAII cleanup

Classes

SignalService()

Consolidated service for signal blocking, connection, and cross-window registration.

class pyqt_reactive.services.signal_service.SignalService[source]

Consolidated service for signal blocking, connection, and cross-window registration.

Examples

# Block signals (context manager): with SignalService.block_signals(checkbox):

checkbox.setChecked(True)

# Multiple widgets: with SignalService.block_signals(widget1, widget2):

widget1.setValue(1) widget2.setValue(2)

# Connect all signals for a manager: SignalService.connect_all_signals(manager)

# Cross-window registration: with SignalService.cross_window_registration(manager):

dialog.exec()

static block_signals(*widgets: QWidget)[source]

Context manager for blocking widget signals.

static with_signals_blocked(widget: QWidget, operation: Callable) None[source]

Execute operation with widget signals blocked (lambda-based).

static block_signals_if(condition: bool, *widgets: QWidget)[source]

Conditionally block signals based on a condition.

static update_widget_value(widget: QWidget, value, setter: Callable | None = None) None[source]

Update widget value with signals blocked.

static connect_all_signals(manager: Any) None[source]

Wire all signals for the manager.

DISPATCHER ARCHITECTURE: Most signal handling moved to FieldChangeDispatcher. This method now only handles: - Cleanup on destroy

static register_cross_window_signals(manager: Any) None[source]

Register manager for cross-window updates (only root managers).

SIMPLIFIED: No N×N signal wiring. LiveContextService.increment_token() notifies all listeners via simple callbacks.

static cross_window_registration(manager: ParameterFormManager)[source]

Context manager for cross-window registration.

Ensures proper registration and cleanup of form managers for cross-window updates.