From 6901333213b5927a5b7f6ffc8d4b25d3072a8a33 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Wed, 18 Jun 2025 19:49:31 +0200 Subject: [PATCH] Die Werte der PdfProjects werden in Tabelle eingetragen --- src/conf.py | 30 ++++++++++++++++++++++++++++++ src/ui/AppSettings.py | 28 +++++++++++++++++++++++----- src/ui/AppSettings.ui | 16 +++++++++++----- src/ui/AppSettings_ui.py | 10 +++++----- 4 files changed, 69 insertions(+), 15 deletions(-) diff --git a/src/conf.py b/src/conf.py index 0df0c90..306feec 100644 --- a/src/conf.py +++ b/src/conf.py @@ -66,6 +66,36 @@ class PdfProject(BaseModel): xsl_dir_id: int default_xslt_params: dict[str, str] = {} + def getXsl(self) -> str: + global app_settings + value = [x.name for x in app_settings.xsl_dirs if x.id == self.xsl_dir_id] + + return value[0] if len(value) else "" + + def getJavaVm(self) -> str: + global app_settings + value = [x.version for x in app_settings.java_vms if x.id == self.java_vm_id] + + return value[0] if len(value) else "" + + def getSaxon(self) -> str: + global app_settings + value = [x.version for x in app_settings.saxon_jars if x.id == self.saxon_jar_id] + + return value[0] if len(value) else "" + + def getApacheFop(self) -> str: + global app_settings + value = [x.version for x in app_settings.apache_fops if x.id == self.apache_fop_id] + + return value[0] if len(value) else "" + + def getDiffPdf(self) -> str: + global app_settings + value = [x.version for x in app_settings.diff_pdfs if x.id == self.diff_pdf_id] + + return value[0] if len(value) else "" + class AppSettings(BaseSettings): java_vms: list[JavaVm] = [] diff --git a/src/ui/AppSettings.py b/src/ui/AppSettings.py index 8926da3..32e04cd 100644 --- a/src/ui/AppSettings.py +++ b/src/ui/AppSettings.py @@ -34,6 +34,7 @@ class AppSettingsDlg(QDialog): self.temp_saxon_jars = self.settings.saxon_jars.copy() self.temp_apache_fops = self.settings.apache_fops.copy() self.temp_xsl_dirs = self.settings.xsl_dirs.copy() + self.temp_pdf_projects = self.settings.pdf_projects.copy() # Signale verbinden self._connect_signals() @@ -69,6 +70,11 @@ class AppSettingsDlg(QDialog): self.ui.removeDiffPdf.clicked.connect(self._remove_diff_pdf) 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.tablePdfProjects.itemSelectionChanged.connect(self._update_pdf_project_buttons) + def _setup_tables(self): """Richtet die Tabellen-Header ein und macht sie unveränderbar.""" from PySide6.QtWidgets import QAbstractItemView @@ -98,6 +104,11 @@ class AppSettingsDlg(QDialog): self.ui.tableDiffPdfs.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) 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.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers) + self.ui.tablePdfProjects.doubleClicked.connect(self._edit_pdf_project) + def _populate_tables(self): """Füllt alle Tabellen mit den aktuellen Einstellungen.""" self._populate_xsl_table() @@ -105,6 +116,7 @@ class AppSettingsDlg(QDialog): self._populate_saxon_table() self._populate_apache_fop_table() self._populate_diff_pdf_table() + self._populate_pdf_project_table() def _populate_xsl_table(self): """Füllt die XSL-Ordner Tabelle.""" @@ -152,10 +164,16 @@ class AppSettingsDlg(QDialog): def _populate_pdf_project_table(self): """Füllt die PDF-Projekte Tabelle.""" - self.ui.tablePdfProjekts.setRowCount(len(self.temp_pdf_projects)) + self.ui.tablePdfProjects.setRowCount(len(self.temp_pdf_projects)) for row, pdf_project in enumerate(self.temp_pdf_projects): - self.ui.tablePdfProjekts.setItem(row, 0, QTableWidgetItem(pdf_project.name)) - self.ui.tablePdfProjekts.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents) + self.ui.tablePdfProjects.setItem(row, 0, QTableWidgetItem(pdf_project.name)) + self.ui.tablePdfProjects.setItem(row, 1, QTableWidgetItem(str(pdf_project.project_dir))) + self.ui.tablePdfProjects.setItem(row, 2, QTableWidgetItem(pdf_project.getXsl())) + self.ui.tablePdfProjects.setItem(row, 3, QTableWidgetItem(pdf_project.getJavaVm())) + self.ui.tablePdfProjects.setItem(row, 4, QTableWidgetItem(pdf_project.getSaxon())) + self.ui.tablePdfProjects.setItem(row, 5, QTableWidgetItem(pdf_project.getApacheFop())) + self.ui.tablePdfProjects.setItem(row, 6, QTableWidgetItem(pdf_project.getDiffPdf())) + self.ui.tablePdfProjects.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents) # XSL-Ordner Methoden def _add_xsl_dir(self): @@ -442,7 +460,7 @@ class AppSettingsDlg(QDialog): def _remove_pdf_project(self): """Entfernt das ausgewählte PDF-Projekt.""" - current_row = self.ui.tablePdfProjekts.currentRow() + current_row = self.ui.tablePdfProjects.currentRow() if current_row >= 0: del self.temp_pdf_projects[current_row] self._populate_pdf_project_table() @@ -450,7 +468,7 @@ class AppSettingsDlg(QDialog): def _update_pdf_project_buttons(self): """Aktualisiert den Status der PDF-Projekt-Buttons.""" - has_selection = self.ui.tablePdfProjekts.currentRow() >= 0 + has_selection = self.ui.tablePdfProjects.currentRow() >= 0 self.ui.removeProject.setEnabled(has_selection) def _edit_pdf_project(self, index): diff --git a/src/ui/AppSettings.ui b/src/ui/AppSettings.ui index 21ba05b..9724fa6 100644 --- a/src/ui/AppSettings.ui +++ b/src/ui/AppSettings.ui @@ -22,6 +22,9 @@ 0 + + Qt::TextElideMode::ElideRight + XSL-Ordner @@ -84,9 +87,6 @@ - - true - @@ -382,9 +382,15 @@ - 1 + 7 + + + + + + @@ -396,7 +402,7 @@ - QFrame::Shape::StyledPanel + QFrame::Shape::NoFrame QFrame::Shadow::Raised diff --git a/src/ui/AppSettings_ui.py b/src/ui/AppSettings_ui.py index decf755..4074e2c 100644 --- a/src/ui/AppSettings_ui.py +++ b/src/ui/AppSettings_ui.py @@ -30,6 +30,7 @@ class Ui_Dialog(object): self.tabSettings = QTabWidget(Dialog) self.tabSettings.setObjectName(u"tabSettings") self.tabSettings.setEnabled(True) + self.tabSettings.setElideMode(Qt.TextElideMode.ElideRight) self.tabXsls = QWidget() self.tabXsls.setObjectName(u"tabXsls") self.verticalLayout_5 = QVBoxLayout(self.tabXsls) @@ -66,7 +67,6 @@ class Ui_Dialog(object): self.removeXsl.setEnabled(False) icon1 = QIcon(QIcon.fromTheme(QIcon.ThemeIcon.ListRemove)) self.removeXsl.setIcon(icon1) - self.removeXsl.setFlat(True) self.horizontalLayout_2.addWidget(self.removeXsl) @@ -231,10 +231,10 @@ class Ui_Dialog(object): self.verticalLayout_7 = QVBoxLayout(self.tabPdfProject) self.verticalLayout_7.setObjectName(u"verticalLayout_7") self.tablePdfProjects = QTableWidget(self.tabPdfProject) - if (self.tablePdfProjects.columnCount() < 1): - self.tablePdfProjects.setColumnCount(1) + if (self.tablePdfProjects.columnCount() < 7): + self.tablePdfProjects.setColumnCount(7) self.tablePdfProjects.setObjectName(u"tablePdfProjects") - self.tablePdfProjects.setColumnCount(1) + self.tablePdfProjects.setColumnCount(7) self.verticalLayout_7.addWidget(self.tablePdfProjects) @@ -242,7 +242,7 @@ class Ui_Dialog(object): self.frame_6.setObjectName(u"frame_6") sizePolicy.setHeightForWidth(self.frame_6.sizePolicy().hasHeightForWidth()) self.frame_6.setSizePolicy(sizePolicy) - self.frame_6.setFrameShape(QFrame.Shape.StyledPanel) + self.frame_6.setFrameShape(QFrame.Shape.NoFrame) self.frame_6.setFrameShadow(QFrame.Shadow.Raised) self.horizontalLayout_6 = QHBoxLayout(self.frame_6) self.horizontalLayout_6.setObjectName(u"horizontalLayout_6")