From 4529157348e416594f870ede15d925ba2da8e4b0 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Thu, 19 Jun 2025 19:49:27 +0200 Subject: [PATCH] Fehler in der Variablennamen behoben MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Es wird unmittelbar beim löschen und entfernen der Einstellungen gespeichert --- src/ui/AppSettings.py | 120 +++++++++++++++++++++++++-------------- src/ui/AppSettings.ui | 4 +- src/ui/AppSettings_ui.py | 20 +++---- 3 files changed, 90 insertions(+), 54 deletions(-) diff --git a/src/ui/AppSettings.py b/src/ui/AppSettings.py index 91313ce..e25da29 100644 --- a/src/ui/AppSettings.py +++ b/src/ui/AppSettings.py @@ -72,8 +72,8 @@ class AppSettingsDlg(QDialog): self.ui.tableDiffPdfs.itemSelectionChanged.connect(self._update_diff_pdf_buttons) # PDF-Projekte Tab - self.ui.removeProject.clicked.connect(self._add_pdf_project) - self.ui.addProject.clicked.connect(self._remove_pdf_project) + self.ui.removeProject.clicked.connect(self._remove_pdf_project) + self.ui.addProject.clicked.connect(self._add_pdf_project) self.ui.tablePdfProjects.itemSelectionChanged.connect(self._update_pdf_project_buttons) def _setup_tables(self): @@ -106,7 +106,7 @@ class AppSettingsDlg(QDialog): self.ui.tableDiffPdfs.doubleClicked.connect(self._edit_diff_pdf) # PDF-Projekte Tabelle - self.ui.tablePdfProjects.setHorizontalHeaderLabels(["Name", "Projekt-Ordner", "XSL-Ordner", "Java-VM", "Saxon", "Apache FOP", "Diff-PDF", ""]) + self.ui.tablePdfProjects.setHorizontalHeaderLabels(["Name", "Projekt-Ordner", "XSL-Ordner", "Java-VM", "Saxon", "Apache FOP", "Diff-PDF"]) self.ui.tablePdfProjects.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) self.ui.tablePdfProjects.doubleClicked.connect(self._edit_pdf_project) @@ -245,6 +245,9 @@ class AppSettingsDlg(QDialog): new_xsl_dir = XslDir(id=new_id, name=data["name"], path_to_root_dir=data["path_to_root_dir"]) self.temp_xsl_dirs.append(new_xsl_dir) self._populate_xsl_table() + + self.settings.xsl_dirs = self.temp_xsl_dirs.copy() + self.settings.save() def _remove_xsl_dir(self): """Entfernt den ausgewählten XSL-Ordner.""" @@ -253,6 +256,9 @@ class AppSettingsDlg(QDialog): del self.temp_xsl_dirs[current_row] self._populate_xsl_table() self._update_xsl_buttons() + + self.settings.xsl_dirs = self.temp_xsl_dirs.copy() + self.settings.save() def _update_xsl_buttons(self): """Aktualisiert den Status der XSL-Buttons.""" @@ -272,6 +278,9 @@ class AppSettingsDlg(QDialog): ) self.temp_java_vms.append(new_java_vm) self._populate_java_vm_table() + + self.settings.java_vms = self.temp_java_vms.copy() + self.settings.save() def _remove_java_vm(self): """Entfernt die ausgewählte Java VM.""" @@ -280,6 +289,9 @@ class AppSettingsDlg(QDialog): del self.temp_java_vms[current_row] self._populate_java_vm_table() self._update_java_vm_buttons() + + self.settings.java_vms = self.temp_java_vms.copy() + self.settings.save() def _update_java_vm_buttons(self): """Aktualisiert den Status der Java VM-Buttons.""" @@ -302,6 +314,9 @@ class AppSettingsDlg(QDialog): ) self.temp_saxon_jars.append(new_saxon) self._populate_saxon_table() + + self.settings.saxon_jars = self.temp_saxon_jars.copy() + self.settings.save() def _remove_saxon(self): """Entfernt die ausgewählte Saxon JAR.""" @@ -310,6 +325,9 @@ class AppSettingsDlg(QDialog): del self.temp_saxon_jars[current_row] self._populate_saxon_table() self._update_saxon_buttons() + + self.settings.saxon_jars = self.temp_saxon_jars.copy() + self.settings.save() def _update_saxon_buttons(self): """Aktualisiert den Status der Saxon-Buttons.""" @@ -332,6 +350,9 @@ class AppSettingsDlg(QDialog): ) self.temp_apache_fops.append(new_fop) self._populate_apache_fop_table() + + self.settings.apache_fops = self.temp_apache_fops.copy() + self.settings.save() def _remove_apache_fop(self): """Entfernt die ausgewählte Apache FOP Konfiguration.""" @@ -340,6 +361,9 @@ class AppSettingsDlg(QDialog): del self.temp_apache_fops[current_row] self._populate_apache_fop_table() self._update_apache_fop_buttons() + + self.settings.apache_fops = self.temp_apache_fops.copy() + self.settings.save() def _update_apache_fop_buttons(self): """Aktualisiert den Status der Apache FOP-Buttons.""" @@ -363,6 +387,9 @@ class AppSettingsDlg(QDialog): ) self.temp_diff_pdfs.append(new_diff_pdf) self._populate_diff_pdf_table() + + self.settings.diff_pdfs = self.temp_diff_pdfs.copy() + self.settings.save() def _remove_diff_pdf(self): """Entfernt die ausgewählte Diff PDF Konfiguration.""" @@ -371,12 +398,60 @@ class AppSettingsDlg(QDialog): del self.temp_diff_pdfs[current_row] self._populate_diff_pdf_table() self._update_diff_pdf_buttons() + + self.settings.diff_pdfs = self.temp_diff_pdfs.copy() + self.settings.save() def _update_diff_pdf_buttons(self): """Aktualisiert den Status der Diff PDF-Buttons.""" has_selection = self.ui.tableDiffPdfs.currentRow() >= 0 self.ui.removeDiffPdf.setEnabled(has_selection) + # PDF-Projekt Methoden + def _add_pdf_project(self): + """Fügt ein neues PDF-Projekt hinzu.""" + dialog = PdfProjectDlg(self) + if dialog.exec() == PdfProjectDlg.DialogCode.Accepted: + project_data = dialog.get_project_data() + + # Neue ID generieren + new_id = max([p.id for p in self.temp_pdf_projects], default=0) + 1 + + # Erstelle PdfProject-Objekt + new_project = PdfProject( + id=new_id, + name=project_data['name'], + project_dir=Path(project_data['project_dir']), + java_vm_id=project_data['java_vm_id'] if project_data['java_vm_id'] != -1 else 1, + diff_pdf_id=project_data['diff_pdf_id'] if project_data['diff_pdf_id'] != -1 else 1, + saxon_jar_id=project_data['saxon_jar_id'] if project_data['saxon_jar_id'] != -1 else 1, + apache_fop_id=project_data['apache_fop_id'] if project_data['apache_fop_id'] != -1 else 1, + xsl_dir_id=project_data['xsl_dir_id'] if project_data['xsl_dir_id'] != -1 else 1, + default_xslt_params={} + ) + + self.temp_pdf_projects.append(new_project) + self._populate_pdf_project_table() + + self.settings.pdf_projects = self.temp_pdf_projects.copy() + self.settings.save() + + def _remove_pdf_project(self): + """Entfernt das ausgewählte PDF-Projekt.""" + current_row = self.ui.tablePdfProjects.currentRow() + if current_row >= 0: + del self.temp_pdf_projects[current_row] + self._populate_pdf_project_table() + self._update_pdf_project_buttons() + + self.settings.pdf_projects = self.temp_pdf_projects.copy() + self.settings.save() + + def _update_pdf_project_buttons(self): + """Aktualisiert den Status der PDF-Projekt-Buttons.""" + has_selection = self.ui.tablePdfProjects.currentRow() >= 0 + self.ui.removeProject.setEnabled(has_selection) + # Bearbeitungsmethoden für Doppelklick-Events def _edit_xsl_dir(self, index): """Bearbeitet einen XSL-Ordner per Doppelklick.""" @@ -490,45 +565,6 @@ class AppSettingsDlg(QDialog): diff_pdf.output_file_extension = new_data["output_file_extension"] self._populate_diff_pdf_table() - # PDF-Projekt Methoden - def _add_pdf_project(self): - """Fügt ein neues PDF-Projekt hinzu.""" - dialog = PdfProjectDlg(self) - if dialog.exec() == PdfProjectDlg.DialogCode.Accepted: - project_data = dialog.get_project_data() - - # Neue ID generieren - new_id = max([p.id for p in self.temp_pdf_projects], default=0) + 1 - - # Erstelle PdfProject-Objekt - new_project = PdfProject( - id=new_id, - name=project_data['name'], - project_dir=Path(project_data['project_dir']), - java_vm_id=project_data['java_vm_id'] if project_data['java_vm_id'] != -1 else 1, - diff_pdf_id=project_data['diff_pdf_id'] if project_data['diff_pdf_id'] != -1 else 1, - saxon_jar_id=project_data['saxon_jar_id'] if project_data['saxon_jar_id'] != -1 else 1, - apache_fop_id=project_data['apache_fop_id'] if project_data['apache_fop_id'] != -1 else 1, - xsl_dir_id=project_data['xsl_dir_id'] if project_data['xsl_dir_id'] != -1 else 1, - default_xslt_params={} - ) - - self.temp_pdf_projects.append(new_project) - self._populate_pdf_project_table() - - def _remove_pdf_project(self): - """Entfernt das ausgewählte PDF-Projekt.""" - current_row = self.ui.tablePdfProjects.currentRow() - if current_row >= 0: - del self.temp_pdf_projects[current_row] - self._populate_pdf_project_table() - self._update_pdf_project_buttons() - - def _update_pdf_project_buttons(self): - """Aktualisiert den Status der PDF-Projekt-Buttons.""" - has_selection = self.ui.tablePdfProjects.currentRow() >= 0 - self.ui.removeProject.setEnabled(has_selection) - def _edit_pdf_project(self, index): """Bearbeitet ein PDF-Projekt per Doppelklick (nur Einstellungen).""" row = index.row() diff --git a/src/ui/AppSettings.ui b/src/ui/AppSettings.ui index 9724fa6..287c40a 100644 --- a/src/ui/AppSettings.ui +++ b/src/ui/AppSettings.ui @@ -421,7 +421,7 @@ 0 - + Hinzufügen @@ -431,7 +431,7 @@ - + false diff --git a/src/ui/AppSettings_ui.py b/src/ui/AppSettings_ui.py index 4074e2c..ea0c5e5 100644 --- a/src/ui/AppSettings_ui.py +++ b/src/ui/AppSettings_ui.py @@ -247,19 +247,19 @@ class Ui_Dialog(object): self.horizontalLayout_6 = QHBoxLayout(self.frame_6) self.horizontalLayout_6.setObjectName(u"horizontalLayout_6") self.horizontalLayout_6.setContentsMargins(0, 0, 0, 0) - self.removeProject = QPushButton(self.frame_6) - self.removeProject.setObjectName(u"removeProject") - self.removeProject.setIcon(icon) - - self.horizontalLayout_6.addWidget(self.removeProject) - self.addProject = QPushButton(self.frame_6) self.addProject.setObjectName(u"addProject") - self.addProject.setEnabled(False) - self.addProject.setIcon(icon1) + self.addProject.setIcon(icon) self.horizontalLayout_6.addWidget(self.addProject) + self.removeProject = QPushButton(self.frame_6) + self.removeProject.setObjectName(u"removeProject") + self.removeProject.setEnabled(False) + self.removeProject.setIcon(icon1) + + self.horizontalLayout_6.addWidget(self.removeProject) + self.verticalLayout_7.addWidget(self.frame_6) @@ -303,8 +303,8 @@ class Ui_Dialog(object): self.addDiffPdf.setText(QCoreApplication.translate("Dialog", u"Hinzuf\u00fcgen", None)) self.removeDiffPdf.setText(QCoreApplication.translate("Dialog", u"Entfernen", None)) self.tabSettings.setTabText(self.tabSettings.indexOf(self.tabDiffPdf), QCoreApplication.translate("Dialog", u"Diff-PDF", None)) - self.removeProject.setText(QCoreApplication.translate("Dialog", u"Hinzuf\u00fcgen", None)) - self.addProject.setText(QCoreApplication.translate("Dialog", u"Entfernen", None)) + self.addProject.setText(QCoreApplication.translate("Dialog", u"Hinzuf\u00fcgen", None)) + self.removeProject.setText(QCoreApplication.translate("Dialog", u"Entfernen", None)) self.tabSettings.setTabText(self.tabSettings.indexOf(self.tabPdfProject), QCoreApplication.translate("Dialog", u"PDF-Projekte", None)) # retranslateUi