#sn_basis/ui/tabs/settings_tab.py from sn_basis.functions.qt_wrapper import ( QWidget, QGridLayout, QLabel, QLineEdit, QGroupBox, QVBoxLayout, QPushButton, ) from sn_basis.functions.settings_logic import SettingsLogic class SettingsTab(QWidget): 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):", } # ----------------------------- # Benutzerspezifische Festlegungen # ----------------------------- user_group = QGroupBox("Benutzerspezifische Festlegungen") user_layout = QGridLayout() self.user_inputs = {} for row, (key, label) in enumerate(self.user_fields.items()): input_widget = QLineEdit() self.user_inputs[key] = input_widget user_layout.addWidget(QLabel(label), row, 0) user_layout.addWidget(input_widget, row, 1) user_group.setLayout(user_layout) # ----------------------------- # Projektspezifische Festlegungen # ----------------------------- project_group = QGroupBox("Projektspezifische Festlegungen") project_layout = QGridLayout() self.project_inputs = {} for row, (key, label) in enumerate(self.project_fields.items()): input_widget = QLineEdit() self.project_inputs[key] = input_widget project_layout.addWidget(QLabel(label), row, 0) project_layout.addWidget(input_widget, 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): fields = { key: widget.text() for key, widget in {**self.user_inputs, **self.project_inputs}.items() } self.logic.save(fields) # --------------------------------------------------------- # Laden # --------------------------------------------------------- def load_data(self): data = self.logic.load() for key, widget in {**self.user_inputs, **self.project_inputs}.items(): widget.setText(data.get(key, ""))