diff --git a/src/main.py b/src/main.py
index 6afcf4a..18b292b 100644
--- a/src/main.py
+++ b/src/main.py
@@ -28,6 +28,7 @@ def main():
or len(app_settings.diff_pdfs) == 0
or len(app_settings.java_vms) == 0
or len(app_settings.saxon_jars) == 0
+ or len(app_settings.xsl_dirs) == 0
):
# Als Modal Dialog öffnen!
dlg = AppSettingsDlg(window, app_settings)
diff --git a/src/ui/AppSettings.py b/src/ui/AppSettings.py
index 43bd206..846d239 100644
--- a/src/ui/AppSettings.py
+++ b/src/ui/AppSettings.py
@@ -33,6 +33,12 @@ class JavaVmConfigDialog(QDialog):
if file_path:
self.ui.pathEdit.setText(file_path)
+ def set_data(self, data):
+ """Setzt die Daten in den Dialog."""
+ if data:
+ self.ui.versionEdit.setText(data.get('version', ''))
+ self.ui.pathEdit.setText(str(data.get('path_to_binary_file', '')))
+
def get_data(self):
"""Gibt die eingegebenen Daten zurück."""
if not self.ui.versionEdit.text().strip() or not self.ui.pathEdit.text().strip():
@@ -66,6 +72,14 @@ class DiffPdfConfigDialog(QDialog):
if file_path:
self.ui.pathEdit.setText(file_path)
+ def set_data(self, data):
+ """Setzt die Daten in den Dialog."""
+ if data:
+ self.ui.versionEdit.setText(data.get('version', ''))
+ self.ui.pathEdit.setText(str(data.get('path_to_binary_file', '')))
+ self.ui.paramsEdit.setPlainText('\n'.join(data.get('default_params', [])))
+ self.ui.extensionEdit.setText(data.get('output_file_extension', 'pdf'))
+
def get_data(self):
"""Gibt die eingegebenen Daten zurück."""
if not self.ui.versionEdit.text().strip() or not self.ui.pathEdit.text().strip():
@@ -105,6 +119,13 @@ class SaxonJarConfigDialog(QDialog):
if file_path:
self.ui.pathEdit.setText(file_path)
+ def set_data(self, data):
+ """Setzt die Daten in den Dialog."""
+ if data:
+ self.ui.versionEdit.setText(data.get('version', ''))
+ self.ui.pathEdit.setText(str(data.get('path_to_jar_file', '')))
+ self.ui.extensionEdit.setText(data.get('output_file_extension', 'fo'))
+
def get_data(self):
"""Gibt die eingegebenen Daten zurück."""
if not self.ui.versionEdit.text().strip() or not self.ui.pathEdit.text().strip():
@@ -138,6 +159,13 @@ class ApacheFopConfigDialog(QDialog):
if dir_path:
self.ui.pathEdit.setText(dir_path)
+ def set_data(self, data):
+ """Setzt die Daten in den Dialog."""
+ if data:
+ self.ui.versionEdit.setText(data.get('version', ''))
+ self.ui.pathEdit.setText(str(data.get('path_to_dir', '')))
+ self.ui.extensionEdit.setText(data.get('output_file_extension', 'pdf'))
+
def get_data(self):
"""Gibt die eingegebenen Daten zurück."""
if not self.ui.versionEdit.text().strip() or not self.ui.pathEdit.text().strip():
@@ -171,6 +199,12 @@ class XslDirConfigDialog(QDialog):
if dir_path:
self.ui.pathEdit.setText(dir_path)
+ def set_data(self, data):
+ """Setzt die Daten in den Dialog."""
+ if data:
+ self.ui.nameEdit.setText(data.get('name', ''))
+ self.ui.pathEdit.setText(str(data.get('path_to_root_dir', '')))
+
def get_data(self):
"""Gibt die eingegebenen Daten zurück."""
if not self.ui.nameEdit.text().strip() or not self.ui.pathEdit.text().strip():
@@ -239,21 +273,33 @@ class AppSettingsDlg(QDialog):
self.ui.tableDiffPdfs.itemSelectionChanged.connect(self._update_diff_pdf_buttons)
def _setup_tables(self):
- """Richtet die Tabellen-Header ein."""
+ """Richtet die Tabellen-Header ein und macht sie unveränderbar."""
+ from PySide6.QtWidgets import QAbstractItemView
+
# XSL-Ordner Tabelle
self.ui.tableXsls.setHorizontalHeaderLabels(["Name", "Pfad"])
+ self.ui.tableXsls.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
+ self.ui.tableXsls.doubleClicked.connect(self._edit_xsl_dir)
# Java VM Tabelle
self.ui.tableJavaVms.setHorizontalHeaderLabels(["Version", "Pfad"])
+ self.ui.tableJavaVms.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
+ self.ui.tableJavaVms.doubleClicked.connect(self._edit_java_vm)
# Saxon Tabelle
self.ui.tableSaxons.setHorizontalHeaderLabels(["Version", "JAR-Pfad", "Extension"])
+ self.ui.tableSaxons.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
+ self.ui.tableSaxons.doubleClicked.connect(self._edit_saxon)
# Apache FOP Tabelle
self.ui.tableApacheFops.setHorizontalHeaderLabels(["Version", "Verzeichnis", "Extension"])
+ self.ui.tableApacheFops.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
+ self.ui.tableApacheFops.doubleClicked.connect(self._edit_apache_fop)
# Diff PDF Tabelle
self.ui.tableDiffPdfs.setHorizontalHeaderLabels(["Version", "Binary-Pfad", "Parameter", "Extension"])
+ self.ui.tableDiffPdfs.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
+ self.ui.tableDiffPdfs.doubleClicked.connect(self._edit_diff_pdf)
def _populate_tables(self):
"""Füllt alle Tabellen mit den aktuellen Einstellungen."""
@@ -441,6 +487,125 @@ class AppSettingsDlg(QDialog):
has_selection = self.ui.tableDiffPdfs.currentRow() >= 0
self.ui.removeDiffPdf.setEnabled(has_selection)
+ # Bearbeitungsmethoden für Doppelklick-Events
+ def _edit_xsl_dir(self, index):
+ """Bearbeitet einen XSL-Ordner per Doppelklick."""
+ row = index.row()
+ if 0 <= row < len(self.temp_xsl_dirs):
+ xsl_dir = self.temp_xsl_dirs[row]
+ dialog = XslDirConfigDialog(self)
+
+ # Vorhandene Daten setzen
+ data = {
+ 'name': xsl_dir.name,
+ 'path_to_root_dir': xsl_dir.path_to_root_dir
+ }
+ dialog.set_data(data)
+
+ if dialog.exec() == QDialog.DialogCode.Accepted:
+ new_data = dialog.get_data()
+ if new_data:
+ # Daten aktualisieren
+ xsl_dir.name = new_data['name']
+ xsl_dir.path_to_root_dir = new_data['path_to_root_dir']
+ self._populate_xsl_table()
+
+ def _edit_java_vm(self, index):
+ """Bearbeitet eine Java VM per Doppelklick."""
+ row = index.row()
+ if 0 <= row < len(self.temp_java_vms):
+ java_vm = self.temp_java_vms[row]
+ dialog = JavaVmConfigDialog(self)
+
+ # Vorhandene Daten setzen
+ data = {
+ 'version': java_vm.version,
+ 'path_to_binary_file': java_vm.path_to_binary_file
+ }
+ dialog.set_data(data)
+
+ if dialog.exec() == QDialog.DialogCode.Accepted:
+ new_data = dialog.get_data()
+ if new_data:
+ # Daten aktualisieren
+ java_vm.version = new_data['version']
+ java_vm.path_to_binary_file = new_data['path_to_binary_file']
+ self._populate_java_vm_table()
+
+ def _edit_saxon(self, index):
+ """Bearbeitet eine Saxon JAR per Doppelklick."""
+ row = index.row()
+ if 0 <= row < len(self.temp_saxon_jars):
+ saxon = self.temp_saxon_jars[row]
+ dialog = SaxonJarConfigDialog(self)
+
+ # Vorhandene Daten setzen
+ data = {
+ 'version': saxon.version,
+ 'path_to_jar_file': saxon.path_to_jar_file,
+ 'output_file_extension': saxon.output_file_extension
+ }
+ dialog.set_data(data)
+
+ if dialog.exec() == QDialog.DialogCode.Accepted:
+ new_data = dialog.get_data()
+ if new_data:
+ # Daten aktualisieren
+ saxon.version = new_data['version']
+ saxon.path_to_jar_file = new_data['path_to_jar_file']
+ saxon.output_file_extension = new_data['output_file_extension']
+ self._populate_saxon_table()
+
+ def _edit_apache_fop(self, index):
+ """Bearbeitet eine Apache FOP Konfiguration per Doppelklick."""
+ row = index.row()
+ if 0 <= row < len(self.temp_apache_fops):
+ fop = self.temp_apache_fops[row]
+ dialog = ApacheFopConfigDialog(self)
+
+ # Vorhandene Daten setzen
+ data = {
+ 'version': fop.version,
+ 'path_to_dir': fop.path_to_dir,
+ 'output_file_extension': fop.output_file_extension
+ }
+ dialog.set_data(data)
+
+ if dialog.exec() == QDialog.DialogCode.Accepted:
+ new_data = dialog.get_data()
+ if new_data:
+ # Daten aktualisieren
+ fop.version = new_data['version']
+ fop.path_to_dir = new_data['path_to_dir']
+ fop.output_file_extension = new_data['output_file_extension']
+ self._populate_apache_fop_table()
+
+ def _edit_diff_pdf(self, index):
+ """Bearbeitet eine Diff PDF Konfiguration per Doppelklick."""
+ row = index.row()
+ if 0 <= row < len(self.temp_diff_pdfs):
+ diff_pdf = self.temp_diff_pdfs[row]
+ dialog = DiffPdfConfigDialog(self)
+
+ # Vorhandene Daten setzen
+ data = {
+ 'version': diff_pdf.version,
+ 'path_to_binary_file': diff_pdf.path_to_binary_file,
+ 'default_params': diff_pdf.default_params,
+ 'output_file_extension': diff_pdf.output_file_extension
+ }
+ dialog.set_data(data)
+
+ if dialog.exec() == QDialog.DialogCode.Accepted:
+ new_data = dialog.get_data()
+ if new_data:
+ # Daten aktualisieren
+ diff_pdf.version = new_data['version']
+ diff_pdf.path_to_binary_file = new_data['path_to_binary_file']
+ diff_pdf.default_params = new_data['default_params']
+ diff_pdf.output_file_extension = new_data['output_file_extension']
+ self._populate_diff_pdf_table()
+
def accept(self):
"""Übernimmt die Änderungen und schließt den Dialog."""
# Aktualisiere die ursprünglichen Einstellungen
diff --git a/src/ui/AppSettings.ui b/src/ui/AppSettings.ui
index b17b47b..6db3f24 100644
--- a/src/ui/AppSettings.ui
+++ b/src/ui/AppSettings.ui
@@ -20,7 +20,7 @@
true
- 5
+ 0
diff --git a/src/ui/AppSettings_ui.py b/src/ui/AppSettings_ui.py
index c15b045..daf4eaf 100644
--- a/src/ui/AppSettings_ui.py
+++ b/src/ui/AppSettings_ui.py
@@ -280,7 +280,7 @@ class Ui_Dialog(object):
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
- self.tabSettings.setCurrentIndex(5)
+ self.tabSettings.setCurrentIndex(0)
QMetaObject.connectSlotsByName(Dialog)