pyqt_reactive.widgets.shared.manager_list_updater

List update pipeline for AbstractManagerWidget.

Classes

ManagerListUpdateOperations(item_list, ...)

Nominal operation port consumed by ManagerListUpdater.

ManagerListUpdateSnapshot(backing_items, ...)

Current and desired list state for one manager update pass.

ManagerListUpdater()

Owns the list-widget update phases for manager widgets.

class pyqt_reactive.widgets.shared.manager_list_updater.ManagerListUpdateOperations(item_list: QListWidget, backing_items: list[ListItemT], item_id: Callable[[ListItemT], str], should_preserve_selection: Callable[[], bool], placeholder: Callable[[], tuple[str, PlaceholderDataT] | None], prepare_update: Callable[[], UpdateContextT], clear_scope_cache: Callable[[], None], subscribed_scope_ids: Callable[[], set[str]], scope_for_item: Callable[[ListItemT], str], cleanup_flash_subscriptions: Callable[[], None], clear_scope_to_list_item: Callable[[], None], format_item: Callable[[ListItemT, int, UpdateContextT], DisplayTextT], should_refresh_text_for_scope_change: Callable[[ListItemT, set[str]], bool], list_item_data_for: Callable[[ListItemT, int], ListItemDataT], tooltip_for: Callable[[ListItemT], str], extra_data_for: Callable[[ListItemT, int], dict[int, RoleValueT]], set_styling_roles: Callable[[QListWidgetItem, DisplayTextT, ListItemT], None], refresh_styling_roles: Callable[[QListWidgetItem, ListItemT], None], apply_scope_color: Callable[[QListWidgetItem, ListItemT, int], None], subscribe_flash: Callable[[ListItemT, QListWidgetItem, str], None], post_update: Callable[[], None], update_button_states: Callable[[], None])[source]

Nominal operation port consumed by ManagerListUpdater.

item_list: QListWidget
backing_items: list[ListItemT]
item_id: Callable[[ListItemT], str]
should_preserve_selection: Callable[[], bool]
placeholder: Callable[[], tuple[str, PlaceholderDataT] | None]
prepare_update: Callable[[], UpdateContextT]
clear_scope_cache: Callable[[], None]
subscribed_scope_ids: Callable[[], set[str]]
scope_for_item: Callable[[ListItemT], str]
cleanup_flash_subscriptions: Callable[[], None]
clear_scope_to_list_item: Callable[[], None]
format_item: Callable[[ListItemT, int, UpdateContextT], DisplayTextT]
should_refresh_text_for_scope_change: Callable[[ListItemT, set[str]], bool]
list_item_data_for: Callable[[ListItemT, int], ListItemDataT]
tooltip_for: Callable[[ListItemT], str]
extra_data_for: Callable[[ListItemT, int], dict[int, RoleValueT]]
set_styling_roles: Callable[[QListWidgetItem, DisplayTextT, ListItemT], None]
refresh_styling_roles: Callable[[QListWidgetItem, ListItemT], None]
apply_scope_color: Callable[[QListWidgetItem, ListItemT, int], None]
subscribe_flash: Callable[[ListItemT, QListWidgetItem, str], None]
post_update: Callable[[], None]
update_button_states: Callable[[], None]
__init__(item_list: QListWidget, backing_items: list[ListItemT], item_id: Callable[[ListItemT], str], should_preserve_selection: Callable[[], bool], placeholder: Callable[[], tuple[str, PlaceholderDataT] | None], prepare_update: Callable[[], UpdateContextT], clear_scope_cache: Callable[[], None], subscribed_scope_ids: Callable[[], set[str]], scope_for_item: Callable[[ListItemT], str], cleanup_flash_subscriptions: Callable[[], None], clear_scope_to_list_item: Callable[[], None], format_item: Callable[[ListItemT, int, UpdateContextT], DisplayTextT], should_refresh_text_for_scope_change: Callable[[ListItemT, set[str]], bool], list_item_data_for: Callable[[ListItemT, int], ListItemDataT], tooltip_for: Callable[[ListItemT], str], extra_data_for: Callable[[ListItemT, int], dict[int, RoleValueT]], set_styling_roles: Callable[[QListWidgetItem, DisplayTextT, ListItemT], None], refresh_styling_roles: Callable[[QListWidgetItem, ListItemT], None], apply_scope_color: Callable[[QListWidgetItem, ListItemT, int], None], subscribe_flash: Callable[[ListItemT, QListWidgetItem, str], None], post_update: Callable[[], None], update_button_states: Callable[[], None]) None
class pyqt_reactive.widgets.shared.manager_list_updater.ManagerListUpdateSnapshot(backing_items: list[ListItemT], current_count: int, subscribed_scope_ids: set[str])[source]

Current and desired list state for one manager update pass.

backing_items: list[ListItemT]
current_count: int
subscribed_scope_ids: set[str]
property expected_count: int
scopes_changed(operations: ManagerListUpdateOperations[ListItemT, UpdateContextT, DisplayTextT, ListItemDataT, PlaceholderDataT, RoleValueT]) bool[source]
can_update_in_place(operations: ManagerListUpdateOperations[ListItemT, UpdateContextT, DisplayTextT, ListItemDataT, PlaceholderDataT, RoleValueT]) bool[source]
__init__(backing_items: list[ListItemT], current_count: int, subscribed_scope_ids: set[str]) None
class pyqt_reactive.widgets.shared.manager_list_updater.ManagerListUpdater[source]

Owns the list-widget update phases for manager widgets.

update(operations: ManagerListUpdateOperations[ListItemT, UpdateContextT, DisplayTextT, ListItemDataT, PlaceholderDataT, RoleValueT]) None[source]
refresh_scopes(operations: ManagerListUpdateOperations[ListItemT, UpdateContextT, DisplayTextT, ListItemDataT, PlaceholderDataT, RoleValueT], scope_ids: set[str], changed_paths_by_scope: dict[str, set[str]] | None = None) bool[source]

Refresh visual roles for existing rows addressed by ObjectState scope.