generated from dopt-python/py311
added info banners to initial recording
This commit is contained in:
+109
-19
@@ -2947,6 +2947,14 @@ class Page_InitRecCompany(QWidget):
|
||||
header_layout.addWidget(self.comp_profile_btn)
|
||||
vert_layout.addWidget(header_container)
|
||||
|
||||
# --- BANNER ---
|
||||
self.info_banners_container = QWidget()
|
||||
self.info_banners: list[InfoBanner] = []
|
||||
self.info_banners_layout = QVBoxLayout(self.info_banners_container)
|
||||
self.info_banners_layout.setContentsMargins(0, 0, 0, 0)
|
||||
self.info_banners_layout.setSpacing(6)
|
||||
header_layout.addWidget(self.info_banners_container)
|
||||
|
||||
# --- MAIN CONTENT ---
|
||||
container = QWidget()
|
||||
# SCROLL AREA
|
||||
@@ -2975,7 +2983,7 @@ class Page_InitRecCompany(QWidget):
|
||||
self.auto_form = AutoForm(auto_form_state)
|
||||
container_layout.addWidget(self.auto_form)
|
||||
self.auto_form.update_triggered.connect(lambda: self.update_main_page.emit())
|
||||
self.auto_form.update_triggered.connect(self._enable_company_profile)
|
||||
self.auto_form.update_triggered.connect(self._auto_form_updated)
|
||||
|
||||
container_layout.addSpacing(15)
|
||||
|
||||
@@ -2988,9 +2996,35 @@ class Page_InitRecCompany(QWidget):
|
||||
QLineEdit, search_widget.company_widgets["ma_unternehmensname"]
|
||||
)
|
||||
|
||||
def _enable_company_profile(self) -> None:
|
||||
def _clear_info_banners(self) -> None:
|
||||
while self.info_banners:
|
||||
banner = self.info_banners[0]
|
||||
self.info_banners_layout.removeWidget(banner)
|
||||
self.info_banners.remove(banner)
|
||||
banner.deleteLater()
|
||||
|
||||
def _add_info_banner(
|
||||
self,
|
||||
text: str,
|
||||
button_text: str,
|
||||
button_func: Callable[[], None] | None = None,
|
||||
) -> None:
|
||||
if button_text and button_func is None:
|
||||
raise ValueError("Can not add button without calling function")
|
||||
|
||||
banner = InfoBanner(
|
||||
text=text,
|
||||
button_text=button_text,
|
||||
)
|
||||
if button_func is not None:
|
||||
banner.btn_clicked.connect(button_func)
|
||||
self.info_banners.append(banner)
|
||||
self.info_banners_layout.addWidget(banner)
|
||||
|
||||
def _auto_form_updated(self) -> None:
|
||||
self._sync_GUI_to_state()
|
||||
self._sync_state_to_GUI("comp_profile")
|
||||
self._sync_state_to_GUI("banners")
|
||||
|
||||
def _request_company_profile(self) -> None:
|
||||
assert self.STATE.un_id is not None, (
|
||||
@@ -3008,7 +3042,7 @@ class Page_InitRecCompany(QWidget):
|
||||
|
||||
def _sync_state_to_GUI(
|
||||
self,
|
||||
section: Literal["auto_form", "comp_profile"] | None,
|
||||
section: Literal["auto_form", "comp_profile", "banners"] | None,
|
||||
) -> None:
|
||||
if section is None or section == "auto_form":
|
||||
auto_form_state = AutoForm_State(
|
||||
@@ -3026,6 +3060,14 @@ class Page_InitRecCompany(QWidget):
|
||||
else:
|
||||
self.comp_profile_btn.setEnabled(True)
|
||||
|
||||
if section is None or section == "banners":
|
||||
self._clear_info_banners()
|
||||
if self.STATE.un_id is None:
|
||||
self._add_info_banner(
|
||||
text="⚠️ Dieser Eintrag ist noch nicht gespeichert.",
|
||||
button_text="",
|
||||
)
|
||||
|
||||
def _sync_GUI_to_state(self) -> None:
|
||||
auto_form_state = self.auto_form.get_state()
|
||||
self.STATE.un_id = auto_form_state.rec_id
|
||||
@@ -3102,6 +3144,14 @@ class Page_InitRecPerson(QWidget):
|
||||
header_layout.addWidget(title)
|
||||
vert_layout.addWidget(header_container)
|
||||
|
||||
# --- BANNER ---
|
||||
self.info_banners_container = QWidget()
|
||||
self.info_banners: list[InfoBanner] = []
|
||||
self.info_banners_layout = QVBoxLayout(self.info_banners_container)
|
||||
self.info_banners_layout.setContentsMargins(0, 0, 0, 0)
|
||||
self.info_banners_layout.setSpacing(6)
|
||||
header_layout.addWidget(self.info_banners_container)
|
||||
|
||||
# --- MAIN CONTENT ---
|
||||
container = QWidget()
|
||||
# SCROLL AREA
|
||||
@@ -3130,6 +3180,7 @@ class Page_InitRecPerson(QWidget):
|
||||
self.auto_form = AutoForm(auto_form_state)
|
||||
container_layout.addWidget(self.auto_form)
|
||||
self.auto_form.update_triggered.connect(lambda: self.update_triggered.emit())
|
||||
self.auto_form.update_triggered.connect(self._auto_form_updated)
|
||||
|
||||
container_layout.addSpacing(15)
|
||||
|
||||
@@ -3168,18 +3219,59 @@ class Page_InitRecPerson(QWidget):
|
||||
self.selection_county.style().polish(self.selection_county)
|
||||
self.selection_county.update()
|
||||
|
||||
def _clear_info_banners(self) -> None:
|
||||
while self.info_banners:
|
||||
banner = self.info_banners[0]
|
||||
self.info_banners_layout.removeWidget(banner)
|
||||
self.info_banners.remove(banner)
|
||||
banner.deleteLater()
|
||||
|
||||
def _add_info_banner(
|
||||
self,
|
||||
text: str,
|
||||
button_text: str,
|
||||
button_func: Callable[[], None] | None = None,
|
||||
) -> None:
|
||||
if button_text and button_func is None:
|
||||
raise ValueError("Can not add button without calling function")
|
||||
|
||||
banner = InfoBanner(
|
||||
text=text,
|
||||
button_text=button_text,
|
||||
)
|
||||
if button_func is not None:
|
||||
banner.btn_clicked.connect(button_func)
|
||||
self.info_banners.append(banner)
|
||||
self.info_banners_layout.addWidget(banner)
|
||||
|
||||
def _auto_form_updated(self) -> None:
|
||||
self._sync_GUI_to_state()
|
||||
self._sync_state_to_GUI("banners")
|
||||
|
||||
def reset_form(self) -> None:
|
||||
self.auto_form.reset_form()
|
||||
|
||||
def _sync_state_to_GUI(self) -> None:
|
||||
auto_form_state = AutoForm_State(
|
||||
session=self.STATE.session,
|
||||
cfg=self.AUTO_FORM_CFG,
|
||||
rec_id=self.STATE.pers_id,
|
||||
form_data=None,
|
||||
locked=self.STATE.locked,
|
||||
)
|
||||
self.auto_form.load_state(auto_form_state)
|
||||
def _sync_state_to_GUI(
|
||||
self,
|
||||
section: Literal["auto_form", "banners"] | None,
|
||||
) -> None:
|
||||
if section is None or section == "auto_form":
|
||||
auto_form_state = AutoForm_State(
|
||||
session=self.STATE.session,
|
||||
cfg=self.AUTO_FORM_CFG,
|
||||
rec_id=self.STATE.pers_id,
|
||||
form_data=None,
|
||||
locked=self.STATE.locked,
|
||||
)
|
||||
self.auto_form.load_state(auto_form_state)
|
||||
|
||||
if section is None or section == "banners":
|
||||
self._clear_info_banners()
|
||||
if self.STATE.pers_id is None:
|
||||
self._add_info_banner(
|
||||
text="⚠️ Dieser Eintrag ist noch nicht gespeichert.",
|
||||
button_text="",
|
||||
)
|
||||
|
||||
def _sync_GUI_to_state(self) -> None:
|
||||
auto_form_state = self.auto_form.get_state()
|
||||
@@ -3190,7 +3282,7 @@ class Page_InitRecPerson(QWidget):
|
||||
new_state: Page_InitRecPerson_State,
|
||||
) -> None:
|
||||
set_page_state(self.STATE, new_state)
|
||||
self._sync_state_to_GUI()
|
||||
self._sync_state_to_GUI(None)
|
||||
|
||||
def get_state(self) -> Page_InitRecPerson_State:
|
||||
self._sync_GUI_to_state()
|
||||
@@ -4076,7 +4168,7 @@ class Page_Consulting(QWidget):
|
||||
self.info_banners.remove(banner)
|
||||
banner.deleteLater()
|
||||
|
||||
def _add_linking_banner(
|
||||
def _add_info_banner(
|
||||
self,
|
||||
text: str,
|
||||
button_text: str,
|
||||
@@ -4118,13 +4210,13 @@ class Page_Consulting(QWidget):
|
||||
if section is None or section == "banners":
|
||||
self._clear_info_banners()
|
||||
if self.STATE.vorgang_id is None:
|
||||
self._add_linking_banner(
|
||||
self._add_info_banner(
|
||||
text="⚠️ Dieser Eintrag ist noch nicht gespeichert.",
|
||||
button_text="",
|
||||
)
|
||||
else:
|
||||
if self.STATE.un_id is None and self.STATE.pers_id is None:
|
||||
self._add_linking_banner(
|
||||
self._add_info_banner(
|
||||
text="⚠️ Dieser Eintrag ist noch nicht mit einer Entität verknüpft.",
|
||||
button_text="Jetzt verknüpfen",
|
||||
button_func=self._open_linking_dialogue,
|
||||
@@ -4133,7 +4225,7 @@ class Page_Consulting(QWidget):
|
||||
self.STATE.beratungs_typ is ConsultingType.INDIVIDUAL
|
||||
and self.STATE.pers_id is None
|
||||
):
|
||||
self._add_linking_banner(
|
||||
self._add_info_banner(
|
||||
text=(
|
||||
"⚠️ Dies ist eine Individualberatung, aber die Verknüpfgung zu "
|
||||
"einer Person fehlt."
|
||||
@@ -4235,7 +4327,6 @@ class Page_Consulting(QWidget):
|
||||
if update_only:
|
||||
relevant_gui_states = [s for s in self.STATE.cons_sessions if not s.ist_geloescht]
|
||||
rel_cons_session_states = [s for s in data.beratungen if s.geloescht is None]
|
||||
print(f">>>>>>> {pformat(relevant_gui_states)}")
|
||||
assert len(relevant_gui_states) == len(rel_cons_session_states)
|
||||
for gui_state, pydantic_state in zip(
|
||||
relevant_gui_states, rel_cons_session_states
|
||||
@@ -5452,7 +5543,6 @@ class EditButtons(QWidget):
|
||||
self,
|
||||
enable_modification: bool,
|
||||
) -> None:
|
||||
print(f">>>>>>>>> SET modify GROUP: {enable_modification=}")
|
||||
if self.modify_button is not None:
|
||||
self.modify_button.set_modify_state(enable_modification)
|
||||
self.save_btn.setEnabled(enable_modification)
|
||||
|
||||
Reference in New Issue
Block a user