diff --git a/src/conf.py b/src/conf.py
index da0d8b9..5e33071 100644
--- a/src/conf.py
+++ b/src/conf.py
@@ -3,7 +3,6 @@ from pathlib import Path
from sys import platform
from typing import Tuple, Type
from pydantic_yaml import to_yaml_str, parse_yaml_file_as
-import polars as pl
from pydantic import BaseModel
from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict, JsonConfigSettingsSource
@@ -77,7 +76,7 @@ class PdfProject(BaseModel):
saxon_jar_id: int
apache_fop_id: int
xsl_dir_id: int
- default_xslt_params: dict[str, str] = {}
+ postgre_sql_db_id: int
def getXsl(self) -> str:
global app_settings
@@ -109,6 +108,12 @@ class PdfProject(BaseModel):
return value[0] if len(value) else ""
+ def getPostgreSqlDb(self) -> str:
+ global app_settings
+ value = [x.name for x in app_settings.postgresql_dbs if x.id == self.postgre_sql_db_id]
+
+ return value[0] if len(value) else ""
+
class AppSettings(BaseSettings):
java_vms: list[JavaVm] = []
@@ -155,18 +160,20 @@ class XslFile(BaseModel):
id: tuple
bez: str
xsl_file: Path
+ xslt_params: dict[str, str] = {}
xmls: list[Xml] = []
class TreeNode(BaseModel):
id: tuple
bez: str
+ xslt_params: dict[str, str] = {}
children: list["TreeNode|XslFile"]
class PdfProjectSettings(BaseModel):
"""
- Speichert Projekt-Einstellungen direkt im Ordner des Projekts in einer Klartextdatei YAML
+ Speichert die Projekteinstellungen direkt im Projektordner in einer .yaml-Datei.
"""
nodes: list[TreeNode] = []
diff --git a/src/ui/MainWindow.py b/src/ui/MainWindow.py
index 97ac741..586d8e1 100644
--- a/src/ui/MainWindow.py
+++ b/src/ui/MainWindow.py
@@ -580,7 +580,7 @@ class MainWindow(QMainWindow):
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={}
+ postgre_sql_db_id=project_data['postgre_sql_db_id'] if project_data['postgre_sql_db_id'] != -1 else 1,
)
# Erstelle Projekt-Ordnerstruktur
diff --git a/src/ui/PdfProject.py b/src/ui/PdfProject.py
index 60fafba..1cd004f 100644
--- a/src/ui/PdfProject.py
+++ b/src/ui/PdfProject.py
@@ -70,34 +70,37 @@ class PdfProjectDlg(QDialog):
# Java VM ComboBox
self.ui.cB_JavaVm.clear()
for java_vm in app_settings.java_vms:
- display_text = f"Java VM {java_vm.version}"
- self.ui.cB_JavaVm.addItem(display_text, java_vm.id)
+ self.ui.cB_JavaVm.addItem(java_vm.version, java_vm.id)
if not app_settings.java_vms:
self.ui.cB_JavaVm.addItem("Keine Java VMs konfiguriert", -1)
# Saxon Jar ComboBox
self.ui.cB_SaxonJar.clear()
for saxon_jar in app_settings.saxon_jars:
- display_text = f"Saxon {saxon_jar.version}"
- self.ui.cB_SaxonJar.addItem(display_text, saxon_jar.id)
+ self.ui.cB_SaxonJar.addItem(saxon_jar.version, saxon_jar.id)
if not app_settings.saxon_jars:
self.ui.cB_SaxonJar.addItem("Keine Saxon JARs konfiguriert", -1)
# Apache FOP ComboBox
self.ui.cB_ApacheFop.clear()
for apache_fop in app_settings.apache_fops:
- display_text = f"Apache FOP {apache_fop.version}"
- self.ui.cB_ApacheFop.addItem(display_text, apache_fop.id)
+ self.ui.cB_ApacheFop.addItem(apache_fop.version, apache_fop.id)
if not app_settings.apache_fops:
self.ui.cB_ApacheFop.addItem("Keine Apache FOP-Instanzen konfiguriert", -1)
# diff-pdf ComboBox
- self.ui.comboBox.clear()
- for diff_pdf in app_settings.diff_pdfs:
- display_text = f"diff-pdf {diff_pdf.version}"
- self.ui.comboBox.addItem(display_text, diff_pdf.id)
+ self.ui.cB_Diff_Pdf.clear()
+ for postgres_db in app_settings.diff_pdfs:
+ self.ui.cB_Diff_Pdf.addItem(postgres_db.version, postgres_db.id)
if not app_settings.diff_pdfs:
- self.ui.comboBox.addItem("Keine diff-pdf-Instanzen konfiguriert", -1)
+ self.ui.cB_Diff_Pdf.addItem("Keine diff-pdf-Instanzen konfiguriert", -1)
+
+ # Postgres ComboBox
+ self.ui.cB_Postgres.clear()
+ for postgres_db in app_settings.postgresql_dbs:
+ self.ui.cB_Postgres.addItem(postgres_db.name, postgres_db.id)
+ if not app_settings.postgresql_dbs:
+ self.ui.cB_Postgres.addItem("Keine Postgres-Datenbanken konfiguriert", -1)
def _load_project_data(self):
"""Lädt bestehende Projektdaten in die Eingabefelder."""
@@ -125,7 +128,10 @@ class PdfProjectDlg(QDialog):
self._select_combo_by_data(self.ui.cB_ApacheFop, self.project_data['apache_fop_id'])
if 'diff_pdf_id' in self.project_data:
- self._select_combo_by_data(self.ui.comboBox, self.project_data['diff_pdf_id'])
+ self._select_combo_by_data(self.ui.cB_Diff_Pdf, self.project_data['diff_pdf_id'])
+
+ if 'postgre_sql_db_id' in self.project_data:
+ self._select_combo_by_data(self.ui.cB_Postgres, self.project_data['postgre_sql_db_id'])
def _select_combo_by_data(self, combo_box, data_value):
"""
@@ -219,6 +225,7 @@ class PdfProjectDlg(QDialog):
)
return
+
# Alle Validierungen bestanden
self.accept()
@@ -236,7 +243,8 @@ class PdfProjectDlg(QDialog):
'java_vm_id': self.ui.cB_JavaVm.currentData(),
'saxon_jar_id': self.ui.cB_SaxonJar.currentData(),
'apache_fop_id': self.ui.cB_ApacheFop.currentData(),
- 'diff_pdf_id': self.ui.comboBox.currentData()
+ 'diff_pdf_id': self.ui.cB_Diff_Pdf.currentData(),
+ 'postgre_sql_db_id': self.ui.cB_Postgres.currentData()
}
def _configure_edit_mode(self):
diff --git a/src/ui/PdfProject.ui b/src/ui/PdfProject.ui
index a5b4613..a9a8f7f 100644
--- a/src/ui/PdfProject.ui
+++ b/src/ui/PdfProject.ui
@@ -7,7 +7,7 @@
0
0
608
- 269
+ 299
@@ -116,7 +116,17 @@
-
-
+
+
+ -
+
+
+ Postgres:
+
+
+
+ -
+
diff --git a/src/ui/PdfProject_ui.py b/src/ui/PdfProject_ui.py
index d4fe35c..9054cfc 100644
--- a/src/ui/PdfProject_ui.py
+++ b/src/ui/PdfProject_ui.py
@@ -24,7 +24,7 @@ class Ui_projectDlg(object):
def setupUi(self, projectDlg):
if not projectDlg.objectName():
projectDlg.setObjectName(u"projectDlg")
- projectDlg.resize(608, 269)
+ projectDlg.resize(608, 299)
self.verticalLayout = QVBoxLayout(projectDlg)
self.verticalLayout.setObjectName(u"verticalLayout")
self.widget = QWidget(projectDlg)
@@ -111,10 +111,20 @@ class Ui_projectDlg(object):
self.formLayout.setWidget(6, QFormLayout.ItemRole.LabelRole, self.label_7)
- self.comboBox = QComboBox(self.widget)
- self.comboBox.setObjectName(u"comboBox")
+ self.cB_Diff_Pdf = QComboBox(self.widget)
+ self.cB_Diff_Pdf.setObjectName(u"cB_Diff_Pdf")
- self.formLayout.setWidget(6, QFormLayout.ItemRole.FieldRole, self.comboBox)
+ self.formLayout.setWidget(6, QFormLayout.ItemRole.FieldRole, self.cB_Diff_Pdf)
+
+ self.label_8 = QLabel(self.widget)
+ self.label_8.setObjectName(u"label_8")
+
+ self.formLayout.setWidget(7, QFormLayout.ItemRole.LabelRole, self.label_8)
+
+ self.cB_Postgres = QComboBox(self.widget)
+ self.cB_Postgres.setObjectName(u"cB_Postgres")
+
+ self.formLayout.setWidget(7, QFormLayout.ItemRole.FieldRole, self.cB_Postgres)
self.verticalLayout.addWidget(self.widget)
@@ -145,5 +155,6 @@ class Ui_projectDlg(object):
self.label_5.setText(QCoreApplication.translate("projectDlg", u"Saxon Jar:", None))
self.label_6.setText(QCoreApplication.translate("projectDlg", u"Apache FOP:", None))
self.label_7.setText(QCoreApplication.translate("projectDlg", u"diff-pdf:", None))
+ self.label_8.setText(QCoreApplication.translate("projectDlg", u"Postgres:", None))
# retranslateUi