Dialog für PDF-Projekte
This commit is contained in:
+89
-11
@@ -10,7 +10,9 @@ from PySide6.QtPdfWidgets import QPdfView
|
||||
|
||||
from ui.MainWinddow_ui import Ui_MainWindow
|
||||
from ui.AppSettings import AppSettingsDlg
|
||||
from conf import app_settings
|
||||
from ui.PdfProject import PdfProjectDlg
|
||||
from conf import app_settings, PdfProject
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class MainWindow(QMainWindow):
|
||||
@@ -243,17 +245,18 @@ class MainWindow(QMainWindow):
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Laden der PDFs: {e}")
|
||||
|
||||
# Erstelle das eine Vollbild-Label für die rechte Spalte
|
||||
self.fullsize_label = QLabel()
|
||||
self.fullsize_label.setObjectName("fullsize_current_page")
|
||||
self.fullsize_label.setAlignment(Qt.AlignmentFlag.AlignHCenter)
|
||||
self.fullsize_label.setCursor(QCursor(Qt.CursorShape.OpenHandCursor))
|
||||
self.ui.verticalLayout_3.addWidget(self.fullsize_label)
|
||||
# Erstelle das eine Vollbild-Label für die rechte Spalte (immer erstellen)
|
||||
if self.fullsize_label is None:
|
||||
self.fullsize_label = QLabel()
|
||||
self.fullsize_label.setObjectName("fullsize_current_page")
|
||||
self.fullsize_label.setAlignment(Qt.AlignmentFlag.AlignHCenter)
|
||||
self.fullsize_label.setCursor(QCursor(Qt.CursorShape.OpenHandCursor))
|
||||
self.ui.verticalLayout_3.addWidget(self.fullsize_label)
|
||||
|
||||
# Drag-to-Scroll Events für das große Bild einrichten
|
||||
self.fullsize_label.mousePressEvent = lambda event: self.on_fullsize_mouse_press(event, self.fullsize_label)
|
||||
self.fullsize_label.mouseMoveEvent = lambda event: self.on_fullsize_mouse_move(event, self.fullsize_label)
|
||||
self.fullsize_label.mouseReleaseEvent = lambda event: self.on_fullsize_mouse_release(event, self.fullsize_label)
|
||||
# Drag-to-Scroll Events für das große Bild einrichten
|
||||
self.fullsize_label.mousePressEvent = lambda event: self.on_fullsize_mouse_press(event, self.fullsize_label)
|
||||
self.fullsize_label.mouseMoveEvent = lambda event: self.on_fullsize_mouse_move(event, self.fullsize_label)
|
||||
self.fullsize_label.mouseReleaseEvent = lambda event: self.on_fullsize_mouse_release(event, self.fullsize_label)
|
||||
|
||||
# Zeige die erste Seite initial an
|
||||
if self.current_pdf:
|
||||
@@ -349,6 +352,10 @@ class MainWindow(QMainWindow):
|
||||
print("Keine gerenderten Pixmaps verfügbar")
|
||||
return
|
||||
|
||||
if self.fullsize_label is None:
|
||||
print("Fullsize-Label ist nicht verfügbar")
|
||||
return
|
||||
|
||||
# Hole die gecachten Pixmaps
|
||||
ref_pixmap = self.current_rendered_pixmaps['ref']
|
||||
diff_pixmap = self.current_rendered_pixmaps['diff']
|
||||
@@ -442,6 +449,7 @@ class MainWindow(QMainWindow):
|
||||
self.ui.alpha.mouseDoubleClickEvent = lambda event: self.ui.alpha.setValue(0)
|
||||
|
||||
# Menü-Aktionen verbinden
|
||||
self.ui.actionNeu.triggered.connect(self.open_new_project_dialog)
|
||||
self.ui.actionEinstellungen.triggered.connect(self.open_settings_dialog)
|
||||
|
||||
def on_alpha_changed(self, alpha_value):
|
||||
@@ -471,6 +479,76 @@ class MainWindow(QMainWindow):
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Öffnen des Einstellungen-Dialogs: {e}")
|
||||
|
||||
def open_new_project_dialog(self):
|
||||
"""Öffnet Pdf-Projekt-Dialog."""
|
||||
try:
|
||||
# Erstelle und zeige den PdfProject-Dialog
|
||||
dialog = PdfProjectDlg(self)
|
||||
if dialog.exec() == PdfProjectDlg.DialogCode.Accepted:
|
||||
# Hole die Projektdaten aus dem Dialog
|
||||
project_data = dialog.get_project_data()
|
||||
|
||||
# Erstelle neue ID für das Projekt
|
||||
new_id = max([p.id for p in app_settings.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={}
|
||||
)
|
||||
|
||||
# Erstelle Projekt-Ordnerstruktur
|
||||
self._create_project_structure(new_project)
|
||||
|
||||
# Füge das neue Projekt zu app_settings hinzu
|
||||
app_settings.pdf_projects.append(new_project)
|
||||
|
||||
# Speichere app_settings
|
||||
app_settings.save()
|
||||
|
||||
print(f"Neues PDF-Projekt '{project_data['name']}' wurde erstellt und gespeichert")
|
||||
print(f"Projekt-ID: {new_id}")
|
||||
print(f"Projekt-Ordner: {project_data['project_dir']}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Erstellen des neuen Projekts: {e}")
|
||||
|
||||
def _create_project_structure(self, project: PdfProject):
|
||||
"""
|
||||
Erstellt die Ordnerstruktur und project.yaml-Datei für ein neues Projekt.
|
||||
|
||||
Args:
|
||||
project: Das PdfProject-Objekt
|
||||
"""
|
||||
try:
|
||||
project_dir = Path(project.project_dir)
|
||||
|
||||
# Erstelle Unterordner
|
||||
subdirs = ['xml', 'new', 'diff', 'ref', 'tmp']
|
||||
for subdir in subdirs:
|
||||
subdir_path = project_dir / subdir
|
||||
subdir_path.mkdir(parents=True, exist_ok=True)
|
||||
print(f"Ordner erstellt: {subdir_path}")
|
||||
|
||||
project_yaml_path = project_dir / 'project.yaml'
|
||||
|
||||
# Projekt-Datei erstellen, wenn nicht vorhanden
|
||||
if not project_yaml_path.exists():
|
||||
project_yaml_path.touch()
|
||||
|
||||
print(f"project.yaml erstellt: {project_yaml_path}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Erstellen der Projekt-Struktur: {e}")
|
||||
raise
|
||||
|
||||
def on_button_clicked(self):
|
||||
"""Wird ausgeführt, wenn der Button geklickt wird."""
|
||||
print("Button wurde geklickt!")
|
||||
|
||||
Reference in New Issue
Block a user