exlab_wizard.ui.pages.settings#
Settings dialog (Frontend Spec §7).
Two-pane modal with a left vertical-nav and a right content area. Nine sections; setup-incomplete mode auto-selects the first incomplete one.
Functions
|
Return the first section ID in canonical order that's incomplete. |
|
Render the settings dialog. |
|
Compute the Save all button label, including the badge count. |
|
Return |
|
Return |
Classes
|
Mutable state for the dialog. |
- class exlab_wizard.ui.pages.settings.SettingsState(active_section='paths', incomplete_sections=(), dirty_sections=<factory>, pending_change_count=0)[source]#
Bases:
objectMutable state for the dialog.
- Parameters:
- exlab_wizard.ui.pages.settings.first_incomplete_section(incomplete)[source]#
Return the first section ID in canonical order that’s incomplete.
- exlab_wizard.ui.pages.settings.render_settings_page(*, state=None, on_save=None, on_discard=None, on_select_section=None)[source]#
Render the settings dialog.
on_select_sectionis invoked when the operator clicks a sidebar nav row. The Phase 12 cut bound this to a no-op (the selection cycle is handled by the host page); the e2e harness wires it to a navigation hook so each section’s body becomes assertable.- Parameters:
state (
SettingsState|None)on_save (
Callable[[SettingsState],None] |None)on_discard (
Callable[[SettingsState],None] |None)
- Return type:
- exlab_wizard.ui.pages.settings.save_button_label(state)[source]#
Compute the Save all button label, including the badge count.
- Parameters:
state (
SettingsState)- Return type:
- exlab_wizard.ui.pages.settings.section_has_warning(state, section)[source]#
Return
Truewhen the sidebar should decoratesection.- Parameters:
state (
SettingsState)section (
str)
- Return type:
- exlab_wizard.ui.pages.settings.section_is_dirty(state, section)[source]#
Return
Truewhensectionhas uncommitted edits.- Parameters:
state (
SettingsState)section (
str)
- Return type: