Die Inhalte der Tabellen in der Datei „AppSettings.py” können nun nur noch über die entsprechenden Dialoge verändert werden

This commit is contained in:
2025-06-14 21:07:55 +02:00
parent 7dc77cb310
commit 110cd3f950
4 changed files with 169 additions and 3 deletions
+1
View File
@@ -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)
+166 -1
View File
@@ -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
+1 -1
View File
@@ -20,7 +20,7 @@
<bool>true</bool>
</property>
<property name="currentIndex">
<number>5</number>
<number>0</number>
</property>
<widget class="QWidget" name="tabXsls">
<attribute name="title">
+1 -1
View File
@@ -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)