Dialoge in eigene Dateien ausgelagert
- `JavaVmConfigDialog` - `DiffPdfConfigDialog` - `SaxonJarConfigDialog` - `ApacheFopConfigDialog` - `XslDirConfigDialog`
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
from PySide6.QtWidgets import QDialog, QFileDialog
|
||||
from pathlib import Path
|
||||
|
||||
from ui.ApacheFopConfigDialog_ui import Ui_ApacheFopConfigDialog
|
||||
|
||||
|
||||
class ApacheFopConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration von Apache FOP ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_ApacheFopConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_directory)
|
||||
|
||||
def browse_directory(self):
|
||||
"""Öffnet einen Verzeichnisdialog."""
|
||||
dir_path = QFileDialog.getExistingDirectory(self, "Apache FOP Verzeichnis auswählen")
|
||||
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():
|
||||
return None
|
||||
|
||||
return {
|
||||
"version": self.ui.versionEdit.text().strip(),
|
||||
"path_to_dir": Path(self.ui.pathEdit.text().strip()),
|
||||
"output_file_extension": self.ui.extensionEdit.text().strip() or "pdf",
|
||||
}
|
||||
+86
-202
@@ -2,208 +2,13 @@ from PySide6.QtWidgets import QDialog, QTableWidgetItem, QFileDialog, QHeaderVie
|
||||
from pathlib import Path
|
||||
|
||||
from ui.AppSettings_ui import Ui_Dialog
|
||||
from ui.JavaVmConfigDialog_ui import Ui_JavaVmConfigDialog
|
||||
from ui.DiffPdfConfigDialog_ui import Ui_DiffPdfConfigDialog
|
||||
from ui.SaxonJarConfigDialog_ui import Ui_SaxonJarConfigDialog
|
||||
from ui.ApacheFopConfigDialog_ui import Ui_ApacheFopConfigDialog
|
||||
from ui.XslDirConfigDialog_ui import Ui_XslDirConfigDialog
|
||||
from conf import AppSettings, JavaVm, DiffPdf, SaxonJar, ApacheFop, XslDir
|
||||
|
||||
|
||||
# Dialog-Klassen für die Eingabe ohne ID
|
||||
class JavaVmConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration einer Java VM ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_JavaVmConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_binary_file)
|
||||
|
||||
def browse_binary_file(self):
|
||||
"""Öffnet einen Dateidialog für die Binary-Datei."""
|
||||
file_path, _ = QFileDialog.getOpenFileName(
|
||||
self, "Java Binary-Datei auswählen", "", "Executable Files (*.exe);;All Files (*)"
|
||||
)
|
||||
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():
|
||||
return None
|
||||
|
||||
return {
|
||||
"version": self.ui.versionEdit.text().strip(),
|
||||
"path_to_binary_file": Path(self.ui.pathEdit.text().strip()),
|
||||
}
|
||||
|
||||
|
||||
class DiffPdfConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration von DiffPdf ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_DiffPdfConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_binary_file)
|
||||
|
||||
def browse_binary_file(self):
|
||||
"""Öffnet einen Dateidialog für die Binary-Datei."""
|
||||
file_path, _ = QFileDialog.getOpenFileName(
|
||||
self, "DiffPdf Binary-Datei auswählen", "", "Executable Files (*.exe);;All Files (*)"
|
||||
)
|
||||
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():
|
||||
return None
|
||||
|
||||
# Parameter aus dem Text extrahieren
|
||||
params_text = self.ui.paramsEdit.toPlainText().strip()
|
||||
params = [line.strip() for line in params_text.split("\n") if line.strip()] if params_text else []
|
||||
|
||||
return {
|
||||
"version": self.ui.versionEdit.text().strip(),
|
||||
"path_to_binary_file": Path(self.ui.pathEdit.text().strip()),
|
||||
"default_params": params,
|
||||
"output_file_extension": self.ui.extensionEdit.text().strip() or "pdf",
|
||||
}
|
||||
|
||||
|
||||
class SaxonJarConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration von Saxon JAR ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_SaxonJarConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_jar_file)
|
||||
|
||||
def browse_jar_file(self):
|
||||
"""Öffnet einen Dateidialog für die JAR-Datei."""
|
||||
file_path, _ = QFileDialog.getOpenFileName(
|
||||
self, "Saxon JAR-Datei auswählen", "", "JAR Files (*.jar);;All Files (*)"
|
||||
)
|
||||
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():
|
||||
return None
|
||||
|
||||
return {
|
||||
"version": self.ui.versionEdit.text().strip(),
|
||||
"path_to_jar_file": Path(self.ui.pathEdit.text().strip()),
|
||||
"output_file_extension": self.ui.extensionEdit.text().strip() or "fo",
|
||||
}
|
||||
|
||||
|
||||
class ApacheFopConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration von Apache FOP ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_ApacheFopConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_directory)
|
||||
|
||||
def browse_directory(self):
|
||||
"""Öffnet einen Verzeichnisdialog."""
|
||||
dir_path = QFileDialog.getExistingDirectory(self, "Apache FOP Verzeichnis auswählen")
|
||||
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():
|
||||
return None
|
||||
|
||||
return {
|
||||
"version": self.ui.versionEdit.text().strip(),
|
||||
"path_to_dir": Path(self.ui.pathEdit.text().strip()),
|
||||
"output_file_extension": self.ui.extensionEdit.text().strip() or "pdf",
|
||||
}
|
||||
|
||||
|
||||
class XslDirConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration von XSL-Verzeichnis ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_XslDirConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_directory)
|
||||
|
||||
def browse_directory(self):
|
||||
"""Öffnet einen Verzeichnisdialog."""
|
||||
dir_path = QFileDialog.getExistingDirectory(self, "XSL Root-Verzeichnis auswählen")
|
||||
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():
|
||||
return None
|
||||
|
||||
return {"name": self.ui.nameEdit.text().strip(), "path_to_root_dir": Path(self.ui.pathEdit.text().strip())}
|
||||
from ui.JavaVmConfigDialog import JavaVmConfigDialog
|
||||
from ui.DiffPdfConfigDialog import DiffPdfConfigDialog
|
||||
from ui.SaxonJarConfigDialog import SaxonJarConfigDialog
|
||||
from ui.ApacheFopConfigDialog import ApacheFopConfigDialog
|
||||
from ui.XslDirConfigDialog import XslDirConfigDialog
|
||||
from ui.PdfProject import PdfProjectDlg
|
||||
from conf import AppSettings, JavaVm, DiffPdf, SaxonJar, ApacheFop, XslDir, PdfProject
|
||||
|
||||
|
||||
class AppSettingsDlg(QDialog):
|
||||
@@ -345,6 +150,13 @@ class AppSettingsDlg(QDialog):
|
||||
self.ui.tableDiffPdfs.setItem(row, 3, QTableWidgetItem(diff_pdf.output_file_extension))
|
||||
self.ui.tableDiffPdfs.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
|
||||
|
||||
def _populate_pdf_project_table(self):
|
||||
"""Füllt die PDF-Projekte Tabelle."""
|
||||
self.ui.tablePdfProjekts.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)
|
||||
|
||||
# XSL-Ordner Methoden
|
||||
def _add_xsl_dir(self):
|
||||
"""Fügt einen neuen XSL-Ordner hinzu."""
|
||||
@@ -602,6 +414,77 @@ 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.tablePdfProjekts.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.tablePdfProjekts.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()
|
||||
if 0 <= row < len(self.temp_pdf_projects):
|
||||
pdf_project = self.temp_pdf_projects[row]
|
||||
|
||||
# Projektdaten für Dialog vorbereiten
|
||||
project_data = {
|
||||
'name': pdf_project.name,
|
||||
'project_dir': str(pdf_project.project_dir),
|
||||
'java_vm_id': pdf_project.java_vm_id,
|
||||
'diff_pdf_id': pdf_project.diff_pdf_id,
|
||||
'saxon_jar_id': pdf_project.saxon_jar_id,
|
||||
'apache_fop_id': pdf_project.apache_fop_id,
|
||||
'xsl_dir_id': pdf_project.xsl_dir_id
|
||||
}
|
||||
|
||||
# Dialog im Edit-Modus öffnen (Projekt-Name und -Ordner deaktiviert)
|
||||
dialog = PdfProjectDlg(self, project_data, edit_mode=True)
|
||||
|
||||
if dialog.exec() == PdfProjectDlg.DialogCode.Accepted:
|
||||
new_data = dialog.get_project_data()
|
||||
|
||||
# Nur die Einstellungen aktualisieren (Name und Ordner bleiben unverändert)
|
||||
pdf_project.java_vm_id = new_data['java_vm_id'] if new_data['java_vm_id'] != -1 else pdf_project.java_vm_id
|
||||
pdf_project.diff_pdf_id = new_data['diff_pdf_id'] if new_data['diff_pdf_id'] != -1 else pdf_project.diff_pdf_id
|
||||
pdf_project.saxon_jar_id = new_data['saxon_jar_id'] if new_data['saxon_jar_id'] != -1 else pdf_project.saxon_jar_id
|
||||
pdf_project.apache_fop_id = new_data['apache_fop_id'] if new_data['apache_fop_id'] != -1 else pdf_project.apache_fop_id
|
||||
pdf_project.xsl_dir_id = new_data['xsl_dir_id'] if new_data['xsl_dir_id'] != -1 else pdf_project.xsl_dir_id
|
||||
|
||||
self._populate_pdf_project_table()
|
||||
|
||||
def accept(self):
|
||||
"""Übernimmt die Änderungen und schließt den Dialog."""
|
||||
# Aktualisiere die ursprünglichen Einstellungen
|
||||
@@ -610,6 +493,7 @@ class AppSettingsDlg(QDialog):
|
||||
self.settings.saxon_jars = self.temp_saxon_jars.copy()
|
||||
self.settings.apache_fops = self.temp_apache_fops.copy()
|
||||
self.settings.xsl_dirs = self.temp_xsl_dirs.copy()
|
||||
self.settings.pdf_projects = self.temp_pdf_projects.copy()
|
||||
|
||||
self.settings.save()
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
from PySide6.QtWidgets import QDialog, QFileDialog
|
||||
from pathlib import Path
|
||||
|
||||
from ui.DiffPdfConfigDialog_ui import Ui_DiffPdfConfigDialog
|
||||
|
||||
|
||||
class DiffPdfConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration von DiffPdf ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_DiffPdfConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_binary_file)
|
||||
|
||||
def browse_binary_file(self):
|
||||
"""Öffnet einen Dateidialog für die Binary-Datei."""
|
||||
file_path, _ = QFileDialog.getOpenFileName(
|
||||
self, "DiffPdf Binary-Datei auswählen", "", "Executable Files (*.exe);;All Files (*)"
|
||||
)
|
||||
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():
|
||||
return None
|
||||
|
||||
# Parameter aus dem Text extrahieren
|
||||
params_text = self.ui.paramsEdit.toPlainText().strip()
|
||||
params = [line.strip() for line in params_text.split("\n") if line.strip()] if params_text else []
|
||||
|
||||
return {
|
||||
"version": self.ui.versionEdit.text().strip(),
|
||||
"path_to_binary_file": Path(self.ui.pathEdit.text().strip()),
|
||||
"default_params": params,
|
||||
"output_file_extension": self.ui.extensionEdit.text().strip() or "pdf",
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
from PySide6.QtWidgets import QDialog, QFileDialog
|
||||
from pathlib import Path
|
||||
|
||||
from ui.JavaVmConfigDialog_ui import Ui_JavaVmConfigDialog
|
||||
|
||||
|
||||
class JavaVmConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration einer Java VM ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_JavaVmConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_binary_file)
|
||||
|
||||
def browse_binary_file(self):
|
||||
"""Öffnet einen Dateidialog für die Binary-Datei."""
|
||||
file_path, _ = QFileDialog.getOpenFileName(
|
||||
self, "Java Binary-Datei auswählen", "", "Executable Files (*.exe);;All Files (*)"
|
||||
)
|
||||
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():
|
||||
return None
|
||||
|
||||
return {
|
||||
"version": self.ui.versionEdit.text().strip(),
|
||||
"path_to_binary_file": Path(self.ui.pathEdit.text().strip()),
|
||||
}
|
||||
+16
-1
@@ -8,13 +8,14 @@ from ui.PdfProject_ui import Ui_projectDlg
|
||||
|
||||
|
||||
class PdfProjectDlg(QDialog):
|
||||
def __init__(self, parent=None, project_data=None):
|
||||
def __init__(self, parent=None, project_data=None, edit_mode=False):
|
||||
"""
|
||||
Konstruktor für den PDF-Projekt-Dialog.
|
||||
|
||||
Args:
|
||||
parent: Übergeordnetes Widget
|
||||
project_data: Bestehende Projektdaten zum Bearbeiten (optional)
|
||||
edit_mode: Wenn True, werden Projekt-Name und -Ordner deaktiviert (nur Einstellungen ändern)
|
||||
"""
|
||||
super().__init__(parent)
|
||||
|
||||
@@ -24,6 +25,7 @@ class PdfProjectDlg(QDialog):
|
||||
|
||||
# Projektdaten speichern
|
||||
self.project_data = project_data or {}
|
||||
self.edit_mode = edit_mode
|
||||
|
||||
# Dialog-Eigenschaften setzen
|
||||
self.setModal(True)
|
||||
@@ -35,6 +37,10 @@ class PdfProjectDlg(QDialog):
|
||||
# ComboBoxen initialisieren
|
||||
self._init_combo_boxes()
|
||||
|
||||
# Edit-Modus konfigurieren
|
||||
if self.edit_mode:
|
||||
self._configure_edit_mode()
|
||||
|
||||
# Bestehende Projektdaten laden, falls vorhanden
|
||||
if self.project_data:
|
||||
self._load_project_data()
|
||||
@@ -233,6 +239,15 @@ class PdfProjectDlg(QDialog):
|
||||
'diff_pdf_id': self.ui.comboBox.currentData()
|
||||
}
|
||||
|
||||
def _configure_edit_mode(self):
|
||||
"""Konfiguriert den Dialog für den Edit-Modus (nur Einstellungen ändern)."""
|
||||
# Projekt-Ordner und Browse-Button deaktivieren
|
||||
self.ui.lineProjectDir.setEnabled(False)
|
||||
self.ui.pushButton.setEnabled(False)
|
||||
|
||||
# Dialog-Titel ändern
|
||||
self.setWindowTitle("Projekt-Einstellungen bearbeiten")
|
||||
|
||||
def set_project_data(self, project_data):
|
||||
"""
|
||||
Setzt die Projektdaten in den Dialog.
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
from PySide6.QtWidgets import QDialog, QFileDialog
|
||||
from pathlib import Path
|
||||
|
||||
from ui.SaxonJarConfigDialog_ui import Ui_SaxonJarConfigDialog
|
||||
|
||||
|
||||
class SaxonJarConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration von Saxon JAR ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_SaxonJarConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_jar_file)
|
||||
|
||||
def browse_jar_file(self):
|
||||
"""Öffnet einen Dateidialog für die JAR-Datei."""
|
||||
file_path, _ = QFileDialog.getOpenFileName(
|
||||
self, "Saxon JAR-Datei auswählen", "", "JAR Files (*.jar);;All Files (*)"
|
||||
)
|
||||
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():
|
||||
return None
|
||||
|
||||
return {
|
||||
"version": self.ui.versionEdit.text().strip(),
|
||||
"path_to_jar_file": Path(self.ui.pathEdit.text().strip()),
|
||||
"output_file_extension": self.ui.extensionEdit.text().strip() or "fo",
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
from PySide6.QtWidgets import QDialog, QFileDialog
|
||||
from pathlib import Path
|
||||
|
||||
from ui.XslDirConfigDialog_ui import Ui_XslDirConfigDialog
|
||||
|
||||
|
||||
class XslDirConfigDialog(QDialog):
|
||||
"""Dialog zur Konfiguration von XSL-Verzeichnis ohne ID."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# UI einrichten
|
||||
self.ui = Ui_XslDirConfigDialog()
|
||||
self.ui.setupUi(self)
|
||||
|
||||
# Signale verbinden
|
||||
self.ui.browseButton.clicked.connect(self.browse_directory)
|
||||
|
||||
def browse_directory(self):
|
||||
"""Öffnet einen Verzeichnisdialog."""
|
||||
dir_path = QFileDialog.getExistingDirectory(self, "XSL Root-Verzeichnis auswählen")
|
||||
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():
|
||||
return None
|
||||
|
||||
return {"name": self.ui.nameEdit.text().strip(), "path_to_root_dir": Path(self.ui.pathEdit.text().strip())}
|
||||
Reference in New Issue
Block a user