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",
        }
