Skip to content

Stage Sign Widgets

Stage-specific widgets injected into the SignProjectDialog based on which project stage the user is signing.

Architecture

SignProjectDialog uses lazy imports via _STAGE_WIDGET_MAP to load the correct widget for the current stage. All widgets extend BaseStageSignWidget, which defines the shared signal contract:

  • validation_changed(bool) - controls whether the sign button is enabled
  • sign_button_text_requested(str) - dynamically updates the sign button label

Widgets

Widget Stage Purpose
CPStageSignWidget Vorplanung Optional DP release with keyword validation ("Freigeben")
DPStageSignWidget Detailplanung Optional versioned release with minor/major bump and keyword validation ("Bestaetigen")
EPlanStageSignWidget E-Planung Placeholder (no additional options)
SoftwareStageSignWidget Software Placeholder (no additional options)
ComServStageSignWidget IBWartung Placeholder (no additional options)

Adding a New Stage Widget

  1. Create a .ui file in ui/ and generate the pyui file in pyui/
  2. Create a widget class extending BaseStageSignWidget
  3. Override get_stage_data() to return stage-specific data
  4. Emit validation_changed / sign_button_text_requested as needed
  5. Register the widget in _STAGE_WIDGET_MAP in sign_project_dialog.py
  6. Add a Stylesheets PathDef in startup_system/constants/paths.py