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