# sn_basis/ui/tabs/settings_tab.py from sn_basis.functions.qgisqt_wrapper import ( QWidget, QGridLayout, QLabel, QLineEdit, QGroupBox, QVBoxLayout, QPushButton, info, warning, error ) from sn_basis.functions.settings_logic import SettingsLogic class SettingsTab(QWidget): """ Tab für benutzer- und projektspezifische Einstellungen. Nutzt SettingsLogic für das Laden/Speichern und den Wrapper für Meldungen. """ tab_title = "Projekteigenschaften" def __init__(self, parent=None): super().__init__(parent) self.logic = SettingsLogic() main_layout = QVBoxLayout() # ----------------------------------------------------- # Definition der Felder # ----------------------------------------------------- self.user_fields = { "amt": "Amt:", "behoerde": "Behörde:", "landkreis_user": "Landkreis:", "sachgebiet": "Sachgebiet:" } self.project_fields = { "bezeichnung": "Bezeichnung:", "verfahrensnummer": "Verfahrensnummer:", "gemeinden": "Gemeinde(n):", "landkreise_proj": "Landkreis(e):" } # ----------------------------------------------------- # Benutzer-Felder # ----------------------------------------------------- user_group = QGroupBox("Benutzerspezifische Festlegungen") user_layout = QGridLayout() self.user_inputs = {} for row, (key, label) in enumerate(self.user_fields.items()): line_edit = QLineEdit() self.user_inputs[key] = line_edit user_layout.addWidget(QLabel(label), row, 0) user_layout.addWidget(line_edit, row, 1) user_group.setLayout(user_layout) # ----------------------------------------------------- # Projekt-Felder # ----------------------------------------------------- project_group = QGroupBox("Projektspezifische Festlegungen") project_layout = QGridLayout() self.project_inputs = {} for row, (key, label) in enumerate(self.project_fields.items()): line_edit = QLineEdit() self.project_inputs[key] = line_edit project_layout.addWidget(QLabel(label), row, 0) project_layout.addWidget(line_edit, row, 1) project_group.setLayout(project_layout) # ----------------------------------------------------- # Speichern-Button # ----------------------------------------------------- save_button = QPushButton("Speichern") save_button.clicked.connect(self.save_data) # ----------------------------------------------------- # Layout zusammenfügen # ----------------------------------------------------- main_layout.addWidget(user_group) main_layout.addWidget(project_group) main_layout.addStretch() main_layout.addWidget(save_button) self.setLayout(main_layout) # Daten laden self.load_data() # --------------------------------------------------------- # Speichern # --------------------------------------------------------- def save_data(self): """ Speichert alle Eingaben über SettingsLogic. Fehler werden über den Wrapper gemeldet. """ try: fields = { key: widget.text() for key, widget in {**self.user_inputs, **self.project_inputs}.items() } self.logic.save(fields) info("Gespeichert", "Die Einstellungen wurden erfolgreich gespeichert.") except Exception as e: error("Fehler beim Speichern", str(e)) # --------------------------------------------------------- # Laden # --------------------------------------------------------- def load_data(self): """ Lädt gespeicherte Einstellungen und füllt die Felder. Fehler werden über den Wrapper gemeldet. """ try: data = self.logic.load() for key, widget in {**self.user_inputs, **self.project_inputs}.items(): widget.setText(data.get(key, "")) except Exception as e: warning("Einstellungen konnten nicht geladen werden", str(e))