Logging: print()-Aufrufe durch strukturierte Logger-Ausgaben ersetzen
Alle print()-Statements in MainWindow.py (~88) und XmlToXslAssignDialog.py (5) wurden durch passende Logger-Aufrufe ersetzt. Die Log-Level (debug, info, warning, error) wurden entsprechend der Nachrichtenart gewählt. XmlToXslAssignDialog.py erhielt zudem einen Logger-Import. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
+125
-125
@@ -295,8 +295,8 @@ class MainWindow(QMainWindow):
|
|||||||
available_themes = QStyleFactory.keys()
|
available_themes = QStyleFactory.keys()
|
||||||
current_theme = QApplication.style().objectName()
|
current_theme = QApplication.style().objectName()
|
||||||
|
|
||||||
print(f"Verfügbare Themes: {available_themes}")
|
logger.debug(f"Verfügbare Themes: {available_themes}")
|
||||||
print(f"Aktuelles Theme: {current_theme}")
|
logger.debug(f"Aktuelles Theme: {current_theme}")
|
||||||
|
|
||||||
# Füge Theme-Aktionen zum Menü hinzu
|
# Füge Theme-Aktionen zum Menü hinzu
|
||||||
for theme_name in available_themes:
|
for theme_name in available_themes:
|
||||||
@@ -342,7 +342,7 @@ class MainWindow(QMainWindow):
|
|||||||
# Setze das Untermenü für die Aktion
|
# Setze das Untermenü für die Aktion
|
||||||
self.ui.actionVorhandene_Projekte.setMenu(projects_menu)
|
self.ui.actionVorhandene_Projekte.setMenu(projects_menu)
|
||||||
|
|
||||||
print(f"Projekte-Menü initialisiert mit {len(app_settings.pdf_projects)} Projekten")
|
logger.info(f"Projekte-Menü initialisiert mit {len(app_settings.pdf_projects)} Projekten")
|
||||||
|
|
||||||
def open_existing_project(self, project: Project):
|
def open_existing_project(self, project: Project):
|
||||||
"""
|
"""
|
||||||
@@ -351,8 +351,8 @@ class MainWindow(QMainWindow):
|
|||||||
Args:
|
Args:
|
||||||
project: Das zu öffnende PdfProject-Objekt
|
project: Das zu öffnende PdfProject-Objekt
|
||||||
"""
|
"""
|
||||||
print(f"Öffne Projekt: {project.name}")
|
logger.info(f"Öffne Projekt: {project.name}")
|
||||||
print(f"Projekt-Ordner: {project.project_dir}")
|
logger.debug(f"Projekt-Ordner: {project.project_dir}")
|
||||||
|
|
||||||
self.project = project
|
self.project = project
|
||||||
|
|
||||||
@@ -363,15 +363,15 @@ class MainWindow(QMainWindow):
|
|||||||
if project_yaml_path.exists() and project_yaml_path.stat().st_size > 0:
|
if project_yaml_path.exists() and project_yaml_path.stat().st_size > 0:
|
||||||
# Versuche die Projekt-Einstellungen zu laden
|
# Versuche die Projekt-Einstellungen zu laden
|
||||||
self.pdf_project = ProjectData.readSettings(project_dir=project.project_dir)
|
self.pdf_project = ProjectData.readSettings(project_dir=project.project_dir)
|
||||||
print(f"Projekt-Einstellungen aus {project_yaml_path} geladen!")
|
logger.info(f"Projekt-Einstellungen aus {project_yaml_path} geladen!")
|
||||||
else:
|
else:
|
||||||
# Erstelle Standard-Projekt-Einstellungen wenn Datei leer oder nicht vorhanden
|
# Erstelle Standard-Projekt-Einstellungen wenn Datei leer oder nicht vorhanden
|
||||||
print("project.yaml ist leer oder nicht vorhanden, erstelle Standard-Einstellungen")
|
logger.warning("project.yaml ist leer oder nicht vorhanden, erstelle Standard-Einstellungen")
|
||||||
self.pdf_project = ProjectData()
|
self.pdf_project = ProjectData()
|
||||||
|
|
||||||
# Speichere die Standard-Einstellungen in die project.yaml
|
# Speichere die Standard-Einstellungen in die project.yaml
|
||||||
self.pdf_project.writeSettings(project_dir=project.project_dir)
|
self.pdf_project.writeSettings(project_dir=project.project_dir)
|
||||||
print(f"Standard-Projekt-Einstellungen in {project_yaml_path} gespeichert")
|
logger.info(f"Standard-Projekt-Einstellungen in {project_yaml_path} gespeichert")
|
||||||
|
|
||||||
# Lade die Nodes in das TreeWidget (inkl. Diff-PDF-Counts und Icons)
|
# Lade die Nodes in das TreeWidget (inkl. Diff-PDF-Counts und Icons)
|
||||||
self._load_nodes_to_tree()
|
self._load_nodes_to_tree()
|
||||||
@@ -380,15 +380,15 @@ class MainWindow(QMainWindow):
|
|||||||
self._start_xml_hash_calculation()
|
self._start_xml_hash_calculation()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Laden des Projekts '{project.name}': {e}")
|
logger.error(f"Fehler beim Laden des Projekts '{project.name}': {e}")
|
||||||
# Fallback: Erstelle Standard-Einstellungen
|
# Fallback: Erstelle Standard-Einstellungen
|
||||||
try:
|
try:
|
||||||
self.pdf_project = ProjectData()
|
self.pdf_project = ProjectData()
|
||||||
print("Fallback: Standard-Projekt-Einstellungen erstellt")
|
logger.info("Fallback: Standard-Projekt-Einstellungen erstellt")
|
||||||
# Auch bei Fallback die Nodes laden
|
# Auch bei Fallback die Nodes laden
|
||||||
self._load_nodes_to_tree()
|
self._load_nodes_to_tree()
|
||||||
except Exception as fallback_error:
|
except Exception as fallback_error:
|
||||||
print(f"Fehler beim Erstellen der Fallback-Einstellungen: {fallback_error}")
|
logger.error(f"Fehler beim Erstellen der Fallback-Einstellungen: {fallback_error}")
|
||||||
|
|
||||||
def change_theme(self, theme_name):
|
def change_theme(self, theme_name):
|
||||||
"""
|
"""
|
||||||
@@ -397,7 +397,7 @@ class MainWindow(QMainWindow):
|
|||||||
Args:
|
Args:
|
||||||
theme_name: Name des zu verwendenden Themes
|
theme_name: Name des zu verwendenden Themes
|
||||||
"""
|
"""
|
||||||
print(f"Wechsle zu Theme: {theme_name}")
|
logger.info(f"Wechsle zu Theme: {theme_name}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Erstelle den neuen Style
|
# Erstelle den neuen Style
|
||||||
@@ -410,14 +410,14 @@ class MainWindow(QMainWindow):
|
|||||||
for action in self.ui.menuThema.actions():
|
for action in self.ui.menuThema.actions():
|
||||||
action.setChecked(action.text() == theme_name)
|
action.setChecked(action.text() == theme_name)
|
||||||
|
|
||||||
print(f"Theme erfolgreich gewechselt zu: {theme_name}")
|
logger.info(f"Theme erfolgreich gewechselt zu: {theme_name}")
|
||||||
app_settings.theme = theme_name
|
app_settings.theme = theme_name
|
||||||
app_settings.save()
|
app_settings.save()
|
||||||
else:
|
else:
|
||||||
print(f"Fehler: Theme '{theme_name}' konnte nicht erstellt werden")
|
logger.error(f"Fehler: Theme '{theme_name}' konnte nicht erstellt werden")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Wechseln des Themes: {e}")
|
logger.error(f"Fehler beim Wechseln des Themes: {e}")
|
||||||
|
|
||||||
def _load_images(self):
|
def _load_images(self):
|
||||||
"""Lädt PDF-Thumbnails und bereitet On-Demand-Rendering vor."""
|
"""Lädt PDF-Thumbnails und bereitet On-Demand-Rendering vor."""
|
||||||
@@ -440,16 +440,16 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# Prüfe ob diff-Ordner existiert und PDF-Dateien enthält
|
# Prüfe ob diff-Ordner existiert und PDF-Dateien enthält
|
||||||
if not os.path.exists(diff_dir):
|
if not os.path.exists(diff_dir):
|
||||||
print(f"Diff-Ordner nicht gefunden: {diff_dir}")
|
logger.warning(f"Diff-Ordner nicht gefunden: {diff_dir}")
|
||||||
return
|
return
|
||||||
|
|
||||||
# Finde alle PDF-Dateien im diff-Ordner
|
# Finde alle PDF-Dateien im diff-Ordner
|
||||||
diff_pdfs = glob.glob(os.path.join(diff_dir, "*.pdf"))
|
diff_pdfs = glob.glob(os.path.join(diff_dir, "*.pdf"))
|
||||||
if not diff_pdfs:
|
if not diff_pdfs:
|
||||||
print("Keine PDF-Dateien im diff-Ordner gefunden")
|
logger.warning("Keine PDF-Dateien im diff-Ordner gefunden")
|
||||||
return
|
return
|
||||||
|
|
||||||
print(f"Gefundene PDF-Dateien im diff-Ordner: {diff_pdfs}")
|
logger.debug(f"Gefundene PDF-Dateien im diff-Ordner: {diff_pdfs}")
|
||||||
|
|
||||||
# Für jede PDF-Datei im diff-Ordner
|
# Für jede PDF-Datei im diff-Ordner
|
||||||
for diff_pdf_path in diff_pdfs:
|
for diff_pdf_path in diff_pdfs:
|
||||||
@@ -459,10 +459,10 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# Prüfe ob gleichnamige PDFs in ref und new existieren
|
# Prüfe ob gleichnamige PDFs in ref und new existieren
|
||||||
if not os.path.exists(ref_pdf_path):
|
if not os.path.exists(ref_pdf_path):
|
||||||
print(f"Referenz-PDF nicht gefunden: {ref_pdf_path}")
|
logger.warning(f"Referenz-PDF nicht gefunden: {ref_pdf_path}")
|
||||||
continue
|
continue
|
||||||
if not os.path.exists(new_pdf_path):
|
if not os.path.exists(new_pdf_path):
|
||||||
print(f"New-PDF nicht gefunden: {new_pdf_path}")
|
logger.warning(f"New-PDF nicht gefunden: {new_pdf_path}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -482,16 +482,16 @@ class MainWindow(QMainWindow):
|
|||||||
or ref_doc.status() != QPdfDocument.Status.Ready
|
or ref_doc.status() != QPdfDocument.Status.Ready
|
||||||
or new_doc.status() != QPdfDocument.Status.Ready
|
or new_doc.status() != QPdfDocument.Status.Ready
|
||||||
):
|
):
|
||||||
print(f"Fehler beim Laden der PDFs für {pdf_filename}")
|
logger.error(f"Fehler beim Laden der PDFs für {pdf_filename}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# PDF-Dokumente für später speichern
|
# PDF-Dokumente für später speichern
|
||||||
self.pdf_documents[pdf_filename] = {"diff": diff_doc, "ref": ref_doc, "new": new_doc}
|
self.pdf_documents[pdf_filename] = {"diff": diff_doc, "ref": ref_doc, "new": new_doc}
|
||||||
|
|
||||||
print(f"PDFs geladen: {pdf_filename}")
|
logger.info(f"PDFs geladen: {pdf_filename}")
|
||||||
print(f" diff: {diff_doc.pageCount()} Seiten")
|
logger.debug(f" diff: {diff_doc.pageCount()} Seiten")
|
||||||
print(f" ref: {ref_doc.pageCount()} Seiten")
|
logger.debug(f" ref: {ref_doc.pageCount()} Seiten")
|
||||||
print(f" new: {new_doc.pageCount()} Seiten")
|
logger.debug(f" new: {new_doc.pageCount()} Seiten")
|
||||||
|
|
||||||
# Nehme die Seitenzahl der diff-PDF als Basis
|
# Nehme die Seitenzahl der diff-PDF als Basis
|
||||||
max_pages = diff_doc.pageCount()
|
max_pages = diff_doc.pageCount()
|
||||||
@@ -533,17 +533,17 @@ class MainWindow(QMainWindow):
|
|||||||
# Click-Event für das Thumbnail einrichten
|
# Click-Event für das Thumbnail einrichten
|
||||||
thumbnail.mousePressEvent = lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t)
|
thumbnail.mousePressEvent = lambda event, t=thumbnail: self.on_thumbnail_clicked(event, t)
|
||||||
|
|
||||||
print(f"Thumbnail für Seite {page_num + 1} erstellt")
|
logger.debug(f"Thumbnail für Seite {page_num + 1} erstellt")
|
||||||
|
|
||||||
thumbnail_time = time.time() - start_time
|
thumbnail_time = time.time() - start_time
|
||||||
print(f"Performance: {max_pages} Thumbnails in {thumbnail_time:.3f}s")
|
logger.debug(f"Performance: {max_pages} Thumbnails in {thumbnail_time:.3f}s")
|
||||||
|
|
||||||
# Setze die erste PDF als aktuelle PDF
|
# Setze die erste PDF als aktuelle PDF
|
||||||
if self.current_pdf is None:
|
if self.current_pdf is None:
|
||||||
self.current_pdf = pdf_filename
|
self.current_pdf = pdf_filename
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Laden der PDFs: {e}")
|
logger.error(f"Fehler beim Laden der PDFs: {e}")
|
||||||
|
|
||||||
# Erstelle das eine Vollbild-Label für die rechte Spalte (immer erstellen)
|
# Erstelle das eine Vollbild-Label für die rechte Spalte (immer erstellen)
|
||||||
if self.fullsize_label is None:
|
if self.fullsize_label is None:
|
||||||
@@ -573,10 +573,10 @@ class MainWindow(QMainWindow):
|
|||||||
pdf_filename: Name der PDF-Datei
|
pdf_filename: Name der PDF-Datei
|
||||||
page_num: Seitennummer (0-basiert)
|
page_num: Seitennummer (0-basiert)
|
||||||
"""
|
"""
|
||||||
print(f"Rendere Seite {page_num + 1} von {pdf_filename}")
|
logger.debug(f"Rendere Seite {page_num + 1} von {pdf_filename}")
|
||||||
|
|
||||||
if pdf_filename not in self.pdf_documents:
|
if pdf_filename not in self.pdf_documents:
|
||||||
print(f"PDF-Dokument {pdf_filename} nicht gefunden")
|
logger.warning(f"PDF-Dokument {pdf_filename} nicht gefunden")
|
||||||
return
|
return
|
||||||
|
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
@@ -605,24 +605,24 @@ class MainWindow(QMainWindow):
|
|||||||
if page_num < ref_doc.pageCount():
|
if page_num < ref_doc.pageCount():
|
||||||
ref_image = ref_doc.render(page_num, render_size)
|
ref_image = ref_doc.render(page_num, render_size)
|
||||||
ref_pixmap = QPixmap.fromImage(ref_image)
|
ref_pixmap = QPixmap.fromImage(ref_image)
|
||||||
print(f"Ref-Seite {page_num + 1} gerendert")
|
logger.debug(f"Ref-Seite {page_num + 1} gerendert")
|
||||||
else:
|
else:
|
||||||
# Erstelle weiße Seite mit gleichen Abmessungen wie Diff-Seite
|
# Erstelle weiße Seite mit gleichen Abmessungen wie Diff-Seite
|
||||||
ref_pixmap = QPixmap(diff_width, diff_height)
|
ref_pixmap = QPixmap(diff_width, diff_height)
|
||||||
ref_pixmap.fill(Qt.GlobalColor.white)
|
ref_pixmap.fill(Qt.GlobalColor.white)
|
||||||
print(f"Weiße Ref-Seite {page_num + 1} erstellt")
|
logger.debug(f"Weiße Ref-Seite {page_num + 1} erstellt")
|
||||||
|
|
||||||
# New-Seite prüfen und rendern oder weiße Seite erstellen
|
# New-Seite prüfen und rendern oder weiße Seite erstellen
|
||||||
new_doc = docs["new"]
|
new_doc = docs["new"]
|
||||||
if page_num < new_doc.pageCount():
|
if page_num < new_doc.pageCount():
|
||||||
new_image = new_doc.render(page_num, render_size)
|
new_image = new_doc.render(page_num, render_size)
|
||||||
new_pixmap = QPixmap.fromImage(new_image)
|
new_pixmap = QPixmap.fromImage(new_image)
|
||||||
print(f"New-Seite {page_num + 1} gerendert")
|
logger.debug(f"New-Seite {page_num + 1} gerendert")
|
||||||
else:
|
else:
|
||||||
# Erstelle weiße Seite mit gleichen Abmessungen wie Diff-Seite
|
# Erstelle weiße Seite mit gleichen Abmessungen wie Diff-Seite
|
||||||
new_pixmap = QPixmap(diff_width, diff_height)
|
new_pixmap = QPixmap(diff_width, diff_height)
|
||||||
new_pixmap.fill(Qt.GlobalColor.white)
|
new_pixmap.fill(Qt.GlobalColor.white)
|
||||||
print(f"Weiße New-Seite {page_num + 1} erstellt")
|
logger.debug(f"Weiße New-Seite {page_num + 1} erstellt")
|
||||||
|
|
||||||
# Cache die gerenderten Pixmaps für schnelle Alpha/Zoom-Operationen
|
# Cache die gerenderten Pixmaps für schnelle Alpha/Zoom-Operationen
|
||||||
self.current_rendered_pixmaps = {"ref": ref_pixmap, "diff": diff_pixmap, "new": new_pixmap}
|
self.current_rendered_pixmaps = {"ref": ref_pixmap, "diff": diff_pixmap, "new": new_pixmap}
|
||||||
@@ -635,7 +635,7 @@ class MainWindow(QMainWindow):
|
|||||||
self.update_current_display()
|
self.update_current_display()
|
||||||
|
|
||||||
render_time = time.time() - start_time
|
render_time = time.time() - start_time
|
||||||
print(f"Performance: Seite {page_num + 1} gerendert in {render_time:.3f}s")
|
logger.debug(f"Performance: Seite {page_num + 1} gerendert in {render_time:.3f}s")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Fehler beim Rendern der Seite {page_num + 1}: {e}", exc_info=True)
|
logger.error(f"Fehler beim Rendern der Seite {page_num + 1}: {e}", exc_info=True)
|
||||||
@@ -646,11 +646,11 @@ class MainWindow(QMainWindow):
|
|||||||
Verwendet für Alpha- und Zoom-Änderungen ohne erneutes PDF-Rendering.
|
Verwendet für Alpha- und Zoom-Änderungen ohne erneutes PDF-Rendering.
|
||||||
"""
|
"""
|
||||||
if not self.current_rendered_pixmaps:
|
if not self.current_rendered_pixmaps:
|
||||||
print("Keine gerenderten Pixmaps verfügbar")
|
logger.warning("Keine gerenderten Pixmaps verfügbar")
|
||||||
return
|
return
|
||||||
|
|
||||||
if self.fullsize_label is None:
|
if self.fullsize_label is None:
|
||||||
print("Fullsize-Label ist nicht verfügbar")
|
logger.warning("Fullsize-Label ist nicht verfügbar")
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -764,7 +764,7 @@ class MainWindow(QMainWindow):
|
|||||||
# Aktiviere Kontextmenü für das TreeWidget
|
# Aktiviere Kontextmenü für das TreeWidget
|
||||||
self.ui.treeWidget.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
self.ui.treeWidget.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||||
self.ui.treeWidget.customContextMenuRequested.connect(self._show_tree_context_menu)
|
self.ui.treeWidget.customContextMenuRequested.connect(self._show_tree_context_menu)
|
||||||
print("Kontextmenü für TreeWidget eingerichtet")
|
logger.debug("Kontextmenü für TreeWidget eingerichtet")
|
||||||
|
|
||||||
def _setup_tree_widget_styling(self):
|
def _setup_tree_widget_styling(self):
|
||||||
"""Richtet das Styling für das TreeWidget ein, um den vertikalen Abstand zu vergrößern."""
|
"""Richtet das Styling für das TreeWidget ein, um den vertikalen Abstand zu vergrößern."""
|
||||||
@@ -791,10 +791,10 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# Wende das Stylesheet auf das TreeWidget an
|
# Wende das Stylesheet auf das TreeWidget an
|
||||||
self.ui.treeWidget.setStyleSheet(tree_stylesheet)
|
self.ui.treeWidget.setStyleSheet(tree_stylesheet)
|
||||||
print("TreeWidget Styling für größeren vertikalen Abstand angewendet")
|
logger.debug("TreeWidget Styling für größeren vertikalen Abstand angewendet")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Anwenden des TreeWidget-Stylings: {e}")
|
logger.error(f"Fehler beim Anwenden des TreeWidget-Stylings: {e}")
|
||||||
|
|
||||||
def _show_tree_context_menu(self, position):
|
def _show_tree_context_menu(self, position):
|
||||||
"""
|
"""
|
||||||
@@ -854,7 +854,7 @@ class MainWindow(QMainWindow):
|
|||||||
return self._determine_node_type_from_data(item)
|
return self._determine_node_type_from_data(item)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Bestimmen des Node-Typs: {e}")
|
logger.error(f"Fehler beim Bestimmen des Node-Typs: {e}")
|
||||||
return "Unknown"
|
return "Unknown"
|
||||||
|
|
||||||
def _determine_node_type_from_data(self, item):
|
def _determine_node_type_from_data(self, item):
|
||||||
@@ -884,7 +884,7 @@ class MainWindow(QMainWindow):
|
|||||||
return "Unknown"
|
return "Unknown"
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Bestimmen des Node-Typs aus Daten: {e}")
|
logger.error(f"Fehler beim Bestimmen des Node-Typs aus Daten: {e}")
|
||||||
return "Unknown"
|
return "Unknown"
|
||||||
|
|
||||||
def _find_item_by_node(self, node_obj):
|
def _find_item_by_node(self, node_obj):
|
||||||
@@ -1095,7 +1095,7 @@ class MainWindow(QMainWindow):
|
|||||||
return menu
|
return menu
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Erstellen des Kontextmenüs: {e}")
|
logger.error(f"Fehler beim Erstellen des Kontextmenüs: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def on_alpha_changed(self, alpha_value):
|
def on_alpha_changed(self, alpha_value):
|
||||||
@@ -1106,13 +1106,13 @@ class MainWindow(QMainWindow):
|
|||||||
Args:
|
Args:
|
||||||
alpha_value: Der neue Alpha-Wert (-100 bis 100)
|
alpha_value: Der neue Alpha-Wert (-100 bis 100)
|
||||||
"""
|
"""
|
||||||
print(f"Alpha geändert auf {alpha_value}")
|
logger.debug(f"Alpha geändert auf {alpha_value}")
|
||||||
|
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
# Verwende gecachte Pixmaps für schnelle Alpha-Änderungen
|
# Verwende gecachte Pixmaps für schnelle Alpha-Änderungen
|
||||||
self.update_current_display()
|
self.update_current_display()
|
||||||
alpha_time = time.time() - start_time
|
alpha_time = time.time() - start_time
|
||||||
print(f"Alpha-Update in {alpha_time:.6f}s")
|
logger.debug(f"Alpha-Update in {alpha_time:.6f}s")
|
||||||
|
|
||||||
def open_settings_dialog(self):
|
def open_settings_dialog(self):
|
||||||
"""Öffnet den Einstellungen-Dialog."""
|
"""Öffnet den Einstellungen-Dialog."""
|
||||||
@@ -1121,9 +1121,9 @@ class MainWindow(QMainWindow):
|
|||||||
dialog = AppSettingsDlg(self, app_settings)
|
dialog = AppSettingsDlg(self, app_settings)
|
||||||
if dialog.exec() == AppSettingsDlg.DialogCode.Accepted:
|
if dialog.exec() == AppSettingsDlg.DialogCode.Accepted:
|
||||||
# Einstellungen wurden gespeichert, hier könnten weitere Aktionen folgen
|
# Einstellungen wurden gespeichert, hier könnten weitere Aktionen folgen
|
||||||
print("Einstellungen wurden gespeichert")
|
logger.info("Einstellungen wurden gespeichert")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Öffnen des Einstellungen-Dialogs: {e}")
|
logger.error(f"Fehler beim Öffnen des Einstellungen-Dialogs: {e}")
|
||||||
|
|
||||||
def open_new_project_dialog(self):
|
def open_new_project_dialog(self):
|
||||||
"""Öffnet Pdf-Projekt-Dialog."""
|
"""Öffnet Pdf-Projekt-Dialog."""
|
||||||
@@ -1161,15 +1161,15 @@ class MainWindow(QMainWindow):
|
|||||||
# Speichere app_settings
|
# Speichere app_settings
|
||||||
app_settings.save()
|
app_settings.save()
|
||||||
|
|
||||||
print(f"Neues PDF-Projekt '{project_data['name']}' wurde erstellt und gespeichert")
|
logger.info(f"Neues PDF-Projekt '{project_data['name']}' wurde erstellt und gespeichert")
|
||||||
print(f"Projekt-ID: {new_id}")
|
logger.debug(f"Projekt-ID: {new_id}")
|
||||||
print(f"Projekt-Ordner: {project_data['project_dir']}")
|
logger.debug(f"Projekt-Ordner: {project_data['project_dir']}")
|
||||||
|
|
||||||
# Aktualisiere das Projekte-Menü
|
# Aktualisiere das Projekte-Menü
|
||||||
self._setup_projects_menu()
|
self._setup_projects_menu()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Erstellen des neuen Projekts: {e}")
|
logger.error(f"Fehler beim Erstellen des neuen Projekts: {e}")
|
||||||
|
|
||||||
def _create_project_structure(self, project: Project):
|
def _create_project_structure(self, project: Project):
|
||||||
"""
|
"""
|
||||||
@@ -1186,7 +1186,7 @@ class MainWindow(QMainWindow):
|
|||||||
for subdir in subdirs:
|
for subdir in subdirs:
|
||||||
subdir_path = project_dir / subdir
|
subdir_path = project_dir / subdir
|
||||||
subdir_path.mkdir(parents=True, exist_ok=True)
|
subdir_path.mkdir(parents=True, exist_ok=True)
|
||||||
print(f"Ordner erstellt: {subdir_path}")
|
logger.debug(f"Ordner erstellt: {subdir_path}")
|
||||||
|
|
||||||
project_yaml_path = project_dir / "project.yaml"
|
project_yaml_path = project_dir / "project.yaml"
|
||||||
|
|
||||||
@@ -1197,17 +1197,17 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# Speichere die Standard-Einstellungen in die project.yaml
|
# Speichere die Standard-Einstellungen in die project.yaml
|
||||||
default_settings.writeSettings(project_dir=project_dir)
|
default_settings.writeSettings(project_dir=project_dir)
|
||||||
print(f"project.yaml mit Standard-Einstellungen erstellt: {project_yaml_path}")
|
logger.info(f"project.yaml mit Standard-Einstellungen erstellt: {project_yaml_path}")
|
||||||
else:
|
else:
|
||||||
print(f"project.yaml existiert bereits: {project_yaml_path}")
|
logger.debug(f"project.yaml existiert bereits: {project_yaml_path}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Erstellen der Projekt-Struktur: {e}")
|
logger.error(f"Fehler beim Erstellen der Projekt-Struktur: {e}")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def on_button_clicked(self):
|
def on_button_clicked(self):
|
||||||
"""Wird ausgeführt, wenn der Button geklickt wird."""
|
"""Wird ausgeführt, wenn der Button geklickt wird."""
|
||||||
print("Button wurde geklickt!")
|
logger.debug("Button wurde geklickt!")
|
||||||
|
|
||||||
def on_thumbnail_clicked(self, event, thumbnail):
|
def on_thumbnail_clicked(self, event, thumbnail):
|
||||||
"""
|
"""
|
||||||
@@ -1222,7 +1222,7 @@ class MainWindow(QMainWindow):
|
|||||||
pdf_filename = page_info["pdf_filename"]
|
pdf_filename = page_info["pdf_filename"]
|
||||||
page_num = page_info["page_num"]
|
page_num = page_info["page_num"]
|
||||||
|
|
||||||
print(f"Thumbnail für Seite {page_num + 1} von {pdf_filename} wurde angeklickt")
|
logger.debug(f"Thumbnail für Seite {page_num + 1} von {pdf_filename} wurde angeklickt")
|
||||||
|
|
||||||
# Rendere und zeige die gewählte Seite an
|
# Rendere und zeige die gewählte Seite an
|
||||||
self.render_and_display_page(pdf_filename, page_num)
|
self.render_and_display_page(pdf_filename, page_num)
|
||||||
@@ -1236,7 +1236,7 @@ class MainWindow(QMainWindow):
|
|||||||
zoom_value: Der neue Zoom-Wert (in Prozent)
|
zoom_value: Der neue Zoom-Wert (in Prozent)
|
||||||
"""
|
"""
|
||||||
self.current_zoom = zoom_value
|
self.current_zoom = zoom_value
|
||||||
print(f"Zoom geändert auf {zoom_value}%")
|
logger.debug(f"Zoom geändert auf {zoom_value}%")
|
||||||
|
|
||||||
# Verwende gecachte Pixmaps für schnelle Zoom-Änderungen
|
# Verwende gecachte Pixmaps für schnelle Zoom-Änderungen
|
||||||
self.update_current_display()
|
self.update_current_display()
|
||||||
@@ -1281,7 +1281,7 @@ class MainWindow(QMainWindow):
|
|||||||
Lädt die Nodes aus den Projekt-Einstellungen in das TreeWidget.
|
Lädt die Nodes aus den Projekt-Einstellungen in das TreeWidget.
|
||||||
Sortiert die Items alphabetisch nach ihrer ID.
|
Sortiert die Items alphabetisch nach ihrer ID.
|
||||||
"""
|
"""
|
||||||
print("Lade Nodes in TreeWidget...")
|
logger.info("Lade Nodes in TreeWidget...")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# TreeWidget leeren
|
# TreeWidget leeren
|
||||||
@@ -1292,11 +1292,11 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# Prüfe ob pdf_project existiert und Nodes hat
|
# Prüfe ob pdf_project existiert und Nodes hat
|
||||||
if not hasattr(self, "pdf_project") or not self.pdf_project:
|
if not hasattr(self, "pdf_project") or not self.pdf_project:
|
||||||
print("Keine Projekt-Einstellungen verfügbar")
|
logger.warning("Keine Projekt-Einstellungen verfügbar")
|
||||||
return
|
return
|
||||||
|
|
||||||
if not self.pdf_project.nodes:
|
if not self.pdf_project.nodes:
|
||||||
print("Keine Nodes in den Projekt-Einstellungen gefunden")
|
logger.warning("Keine Nodes in den Projekt-Einstellungen gefunden")
|
||||||
return
|
return
|
||||||
|
|
||||||
# Sortiere Root-Nodes alphabetisch nach ID
|
# Sortiere Root-Nodes alphabetisch nach ID
|
||||||
@@ -1307,14 +1307,14 @@ class MainWindow(QMainWindow):
|
|||||||
tree_item = self._create_tree_item_from_node(node)
|
tree_item = self._create_tree_item_from_node(node)
|
||||||
self.ui.treeWidget.addTopLevelItem(tree_item)
|
self.ui.treeWidget.addTopLevelItem(tree_item)
|
||||||
|
|
||||||
print(f"{len(self.pdf_project.nodes)} Root-Nodes in TreeWidget geladen (alphabetisch sortiert)")
|
logger.info(f"{len(self.pdf_project.nodes)} Root-Nodes in TreeWidget geladen (alphabetisch sortiert)")
|
||||||
|
|
||||||
# Aktualisiere Diff-PDF-Anzahl und Icons nach dem Laden
|
# Aktualisiere Diff-PDF-Anzahl und Icons nach dem Laden
|
||||||
self._update_all_diff_pdf_counts()
|
self._update_all_diff_pdf_counts()
|
||||||
self._update_diff_icons_for_existing_pdfs()
|
self._update_diff_icons_for_existing_pdfs()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Laden der Nodes in TreeWidget: {e}")
|
logger.error(f"Fehler beim Laden der Nodes in TreeWidget: {e}")
|
||||||
|
|
||||||
def _create_tree_item_from_node(self, node):
|
def _create_tree_item_from_node(self, node):
|
||||||
"""
|
"""
|
||||||
@@ -1396,7 +1396,7 @@ class MainWindow(QMainWindow):
|
|||||||
return item
|
return item
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Erstellen des Tree-Items: {e}")
|
logger.error(f"Fehler beim Erstellen des Tree-Items: {e}")
|
||||||
# Fallback: Erstelle einfaches Item
|
# Fallback: Erstelle einfaches Item
|
||||||
fallback_item = QTreeWidgetItem()
|
fallback_item = QTreeWidgetItem()
|
||||||
fallback_item.setText(0, "Fehler beim Laden")
|
fallback_item.setText(0, "Fehler beim Laden")
|
||||||
@@ -1662,12 +1662,12 @@ class MainWindow(QMainWindow):
|
|||||||
# Kontextmenü-Aktionen für TreeNode
|
# Kontextmenü-Aktionen für TreeNode
|
||||||
def _add_tree_node_child(self, parent_item):
|
def _add_tree_node_child(self, parent_item):
|
||||||
"""Fügt einen Unterknoten zu einem TreeNode hinzu."""
|
"""Fügt einen Unterknoten zu einem TreeNode hinzu."""
|
||||||
print(f"Unterknoten zu TreeNode hinzufügen: {parent_item.text(0)}")
|
logger.debug(f"Unterknoten zu TreeNode hinzufügen: {parent_item.text(0)}")
|
||||||
# TODO: Dialog zum Eingeben der Node-Daten öffnen
|
# TODO: Dialog zum Eingeben der Node-Daten öffnen
|
||||||
|
|
||||||
def _add_xsl_file_to_node(self, parent_item):
|
def _add_xsl_file_to_node(self, parent_item):
|
||||||
"""Fügt eine XSL-Datei zu einem TreeNode hinzu."""
|
"""Fügt eine XSL-Datei zu einem TreeNode hinzu."""
|
||||||
print(f"XSL-Datei zu TreeNode hinzufügen: {parent_item.text(0)}")
|
logger.debug(f"XSL-Datei zu TreeNode hinzufügen: {parent_item.text(0)}")
|
||||||
# TODO: Dialog zum Auswählen der XSL-Datei öffnen
|
# TODO: Dialog zum Auswählen der XSL-Datei öffnen
|
||||||
|
|
||||||
def _edit_tree_node(self, item):
|
def _edit_tree_node(self, item):
|
||||||
@@ -1677,7 +1677,7 @@ class MainWindow(QMainWindow):
|
|||||||
Args:
|
Args:
|
||||||
item: Das TreeWidgetItem des TreeNode
|
item: Das TreeWidgetItem des TreeNode
|
||||||
"""
|
"""
|
||||||
print(f"TreeNode bearbeiten: {item.text(0)}")
|
logger.debug(f"TreeNode bearbeiten: {item.text(0)}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Hole das Node-Objekt aus dem TreeWidgetItem
|
# Hole das Node-Objekt aus dem TreeWidgetItem
|
||||||
@@ -1704,8 +1704,8 @@ class MainWindow(QMainWindow):
|
|||||||
node.bez = data["bez"]
|
node.bez = data["bez"]
|
||||||
node.xslt_params = data["xslt_params"]
|
node.xslt_params = data["xslt_params"]
|
||||||
|
|
||||||
print(f"TreeNode '{node.bez}' wurde aktualisiert")
|
logger.info(f"TreeNode '{node.bez}' wurde aktualisiert")
|
||||||
print(f"XSLT-Parameter: {node.xslt_params}")
|
logger.debug(f"XSLT-Parameter: {node.xslt_params}")
|
||||||
|
|
||||||
# Speichere die Änderungen
|
# Speichere die Änderungen
|
||||||
self._save_project_settings()
|
self._save_project_settings()
|
||||||
@@ -1727,12 +1727,12 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_msg = f"Fehler beim Bearbeiten des TreeNode: {str(e)}"
|
error_msg = f"Fehler beim Bearbeiten des TreeNode: {str(e)}"
|
||||||
print(error_msg)
|
logger.error(error_msg)
|
||||||
QMessageBox.critical(self, "Fehler", error_msg)
|
QMessageBox.critical(self, "Fehler", error_msg)
|
||||||
|
|
||||||
def _delete_tree_node(self, item):
|
def _delete_tree_node(self, item):
|
||||||
"""Löscht einen TreeNode."""
|
"""Löscht einen TreeNode."""
|
||||||
print(f"TreeNode löschen: {item.text(0)}")
|
logger.debug(f"TreeNode löschen: {item.text(0)}")
|
||||||
# TODO: Bestätigungsdialog und Löschung implementieren
|
# TODO: Bestätigungsdialog und Löschung implementieren
|
||||||
|
|
||||||
# Kontextmenü-Aktionen für XslFile
|
# Kontextmenü-Aktionen für XslFile
|
||||||
@@ -1743,7 +1743,7 @@ class MainWindow(QMainWindow):
|
|||||||
Args:
|
Args:
|
||||||
parent_item: Das TreeWidgetItem des XslFile-Nodes
|
parent_item: Das TreeWidgetItem des XslFile-Nodes
|
||||||
"""
|
"""
|
||||||
print(f"XML-Datei zu XslFile hinzufügen: {parent_item.text(0)}")
|
logger.debug(f"XML-Datei zu XslFile hinzufügen: {parent_item.text(0)}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Prüfe ob ein Projekt geladen ist
|
# Prüfe ob ein Projekt geladen ist
|
||||||
@@ -1800,7 +1800,7 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# Kopiere die XML-Datei in den xml-Ordner
|
# Kopiere die XML-Datei in den xml-Ordner
|
||||||
shutil.copy2(xml_file_path, target_xml_path)
|
shutil.copy2(xml_file_path, target_xml_path)
|
||||||
print(f"XML-Datei kopiert: {xml_file_path} -> {target_xml_path}")
|
logger.info(f"XML-Datei kopiert: {xml_file_path} -> {target_xml_path}")
|
||||||
|
|
||||||
# Erstelle relatives Path zur XML-Datei (relativ zum xml-Ordner)
|
# Erstelle relatives Path zur XML-Datei (relativ zum xml-Ordner)
|
||||||
relative_xml_path = Path("xml") / xml_file_path.name
|
relative_xml_path = Path("xml") / xml_file_path.name
|
||||||
@@ -1824,7 +1824,7 @@ class MainWindow(QMainWindow):
|
|||||||
new_xml_file = XmlFile(xml=relative_xml_path)
|
new_xml_file = XmlFile(xml=relative_xml_path)
|
||||||
xsl_node.xmls.append(new_xml_file)
|
xsl_node.xmls.append(new_xml_file)
|
||||||
|
|
||||||
print(f"XML-Datei '{xml_file_path.name}' zu XslFile-Node '{xsl_node.bez}' hinzugefügt")
|
logger.info(f"XML-Datei '{xml_file_path.name}' zu XslFile-Node '{xsl_node.bez}' hinzugefügt")
|
||||||
|
|
||||||
# Berechne Hash für die neue XML-Datei
|
# Berechne Hash für die neue XML-Datei
|
||||||
self._calculate_hash_for_xml_file(new_xml_file)
|
self._calculate_hash_for_xml_file(new_xml_file)
|
||||||
@@ -1843,7 +1843,7 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_msg = f"Fehler beim Hinzufügen der XML-Datei: {str(e)}"
|
error_msg = f"Fehler beim Hinzufügen der XML-Datei: {str(e)}"
|
||||||
print(error_msg)
|
logger.error(error_msg)
|
||||||
QMessageBox.critical(self, "Fehler", error_msg)
|
QMessageBox.critical(self, "Fehler", error_msg)
|
||||||
|
|
||||||
def _edit_xsl_file(self, item):
|
def _edit_xsl_file(self, item):
|
||||||
@@ -1853,7 +1853,7 @@ class MainWindow(QMainWindow):
|
|||||||
Args:
|
Args:
|
||||||
item: Das TreeWidgetItem des XslFile
|
item: Das TreeWidgetItem des XslFile
|
||||||
"""
|
"""
|
||||||
print(f"XslFile bearbeiten: {item.text(0)}")
|
logger.debug(f"XslFile bearbeiten: {item.text(0)}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Hole das Node-Objekt aus dem TreeWidgetItem
|
# Hole das Node-Objekt aus dem TreeWidgetItem
|
||||||
@@ -1875,8 +1875,8 @@ class MainWindow(QMainWindow):
|
|||||||
node.bez = data["bez"]
|
node.bez = data["bez"]
|
||||||
node.xslt_params = data["xslt_params"]
|
node.xslt_params = data["xslt_params"]
|
||||||
|
|
||||||
print(f"XslFile '{node.bez}' wurde aktualisiert")
|
logger.info(f"XslFile '{node.bez}' wurde aktualisiert")
|
||||||
print(f"XSLT-Parameter: {node.xslt_params}")
|
logger.debug(f"XSLT-Parameter: {node.xslt_params}")
|
||||||
|
|
||||||
# Speichere die Änderungen
|
# Speichere die Änderungen
|
||||||
self._save_project_settings()
|
self._save_project_settings()
|
||||||
@@ -1898,18 +1898,18 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_msg = f"Fehler beim Bearbeiten der XSL-Datei: {str(e)}"
|
error_msg = f"Fehler beim Bearbeiten der XSL-Datei: {str(e)}"
|
||||||
print(error_msg)
|
logger.error(error_msg)
|
||||||
QMessageBox.critical(self, "Fehler", error_msg)
|
QMessageBox.critical(self, "Fehler", error_msg)
|
||||||
|
|
||||||
def _delete_xsl_file(self, item):
|
def _delete_xsl_file(self, item):
|
||||||
"""Löscht eine XSL-Datei."""
|
"""Löscht eine XSL-Datei."""
|
||||||
print(f"XslFile löschen: {item.text(0)}")
|
logger.debug(f"XslFile löschen: {item.text(0)}")
|
||||||
# TODO: Bestätigungsdialog und Löschung implementieren
|
# TODO: Bestätigungsdialog und Löschung implementieren
|
||||||
|
|
||||||
# Kontextmenü-Aktionen für XmlFile
|
# Kontextmenü-Aktionen für XmlFile
|
||||||
def _edit_xml_file(self, item):
|
def _edit_xml_file(self, item):
|
||||||
"""Bearbeitet eine XML-Datei."""
|
"""Bearbeitet eine XML-Datei."""
|
||||||
print(f"XmlFile bearbeiten: {item.text(0)}")
|
logger.debug(f"XmlFile bearbeiten: {item.text(0)}")
|
||||||
# TODO: Dialog zum Bearbeiten der XML-Datei öffnen
|
# TODO: Dialog zum Bearbeiten der XML-Datei öffnen
|
||||||
|
|
||||||
def _delete_xml_file(self, item):
|
def _delete_xml_file(self, item):
|
||||||
@@ -1919,7 +1919,7 @@ class MainWindow(QMainWindow):
|
|||||||
Args:
|
Args:
|
||||||
item: Das TreeWidgetItem der XML-Datei
|
item: Das TreeWidgetItem der XML-Datei
|
||||||
"""
|
"""
|
||||||
print(f"XmlFile löschen: {item.text(0)}")
|
logger.debug(f"XmlFile löschen: {item.text(0)}")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Prüfe ob ein Projekt geladen ist
|
# Prüfe ob ein Projekt geladen ist
|
||||||
@@ -1961,7 +1961,7 @@ class MainWindow(QMainWindow):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if reply != QMessageBox.StandardButton.Yes:
|
if reply != QMessageBox.StandardButton.Yes:
|
||||||
print("Löschung abgebrochen")
|
logger.debug("Löschung abgebrochen")
|
||||||
return
|
return
|
||||||
|
|
||||||
# Entferne die XML-Datei aus der XslFile-Node
|
# Entferne die XML-Datei aus der XslFile-Node
|
||||||
@@ -1973,7 +1973,7 @@ class MainWindow(QMainWindow):
|
|||||||
QMessageBox.warning(self, "Warnung", "XML-Datei konnte nicht aus der XSL-Datei entfernt werden.")
|
QMessageBox.warning(self, "Warnung", "XML-Datei konnte nicht aus der XSL-Datei entfernt werden.")
|
||||||
return
|
return
|
||||||
|
|
||||||
print(f"XML-Datei '{xml_filename}' aus XSL-Datei '{xsl_file_obj.bez}' entfernt")
|
logger.info(f"XML-Datei '{xml_filename}' aus XSL-Datei '{xsl_file_obj.bez}' entfernt")
|
||||||
|
|
||||||
# Frage ob die physische Datei auch gelöscht werden soll
|
# Frage ob die physische Datei auch gelöscht werden soll
|
||||||
xml_file_path = Path(self.project.project_dir) / xml_file_obj.xml
|
xml_file_path = Path(self.project.project_dir) / xml_file_obj.xml
|
||||||
@@ -1994,11 +1994,11 @@ class MainWindow(QMainWindow):
|
|||||||
if delete_reply == QMessageBox.StandardButton.Yes:
|
if delete_reply == QMessageBox.StandardButton.Yes:
|
||||||
try:
|
try:
|
||||||
xml_file_path.unlink()
|
xml_file_path.unlink()
|
||||||
print(f"Physische XML-Datei gelöscht: {xml_file_path}")
|
logger.info(f"Physische XML-Datei gelöscht: {xml_file_path}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
QMessageBox.warning(self, "Warnung", f"Fehler beim Löschen der physischen Datei:\n{str(e)}")
|
QMessageBox.warning(self, "Warnung", f"Fehler beim Löschen der physischen Datei:\n{str(e)}")
|
||||||
else:
|
else:
|
||||||
print(
|
logger.info(
|
||||||
f"XML-Datei '{xml_filename}' wird noch in anderen XSL-Dateien verwendet - physische Datei nicht gelöscht"
|
f"XML-Datei '{xml_filename}' wird noch in anderen XSL-Dateien verwendet - physische Datei nicht gelöscht"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2008,11 +2008,11 @@ class MainWindow(QMainWindow):
|
|||||||
# Aktualisiere das TreeWidget
|
# Aktualisiere das TreeWidget
|
||||||
self._load_nodes_to_tree()
|
self._load_nodes_to_tree()
|
||||||
|
|
||||||
print(f"XML-Datei '{xml_filename}' erfolgreich entfernt")
|
logger.info(f"XML-Datei '{xml_filename}' erfolgreich entfernt")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_msg = f"Fehler beim Löschen der XML-Datei: {str(e)}"
|
error_msg = f"Fehler beim Löschen der XML-Datei: {str(e)}"
|
||||||
print(error_msg)
|
logger.error(error_msg)
|
||||||
QMessageBox.critical(self, "Fehler", error_msg)
|
QMessageBox.critical(self, "Fehler", error_msg)
|
||||||
|
|
||||||
def _is_xml_file_used_elsewhere(self, xml_path, exclude_xsl_file):
|
def _is_xml_file_used_elsewhere(self, xml_path, exclude_xsl_file):
|
||||||
@@ -2033,7 +2033,7 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
return self._check_xml_usage_recursive(self.pdf_project.nodes, xml_path, exclude_xsl_file)
|
return self._check_xml_usage_recursive(self.pdf_project.nodes, xml_path, exclude_xsl_file)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Prüfen der XML-Datei-Verwendung: {e}")
|
logger.error(f"Fehler beim Prüfen der XML-Datei-Verwendung: {e}")
|
||||||
return True # Im Zweifelsfall annehmen, dass sie verwendet wird
|
return True # Im Zweifelsfall annehmen, dass sie verwendet wird
|
||||||
|
|
||||||
def _check_xml_usage_recursive(self, nodes, xml_path, exclude_xsl_file):
|
def _check_xml_usage_recursive(self, nodes, xml_path, exclude_xsl_file):
|
||||||
@@ -2064,7 +2064,7 @@ class MainWindow(QMainWindow):
|
|||||||
# Kontextmenü-Aktionen für Root-Elemente (Unbekannter Typ)
|
# Kontextmenü-Aktionen für Root-Elemente (Unbekannter Typ)
|
||||||
def _add_root_tree_node(self):
|
def _add_root_tree_node(self):
|
||||||
"""Fügt einen neuen TreeNode als Root-Element hinzu."""
|
"""Fügt einen neuen TreeNode als Root-Element hinzu."""
|
||||||
print("Neuen TreeNode als Root-Element hinzufügen")
|
logger.debug("Neuen TreeNode als Root-Element hinzufügen")
|
||||||
# TODO: Dialog zum Eingeben der TreeNode-Daten öffnen
|
# TODO: Dialog zum Eingeben der TreeNode-Daten öffnen
|
||||||
|
|
||||||
def on_load_from_fn2_clicked(self):
|
def on_load_from_fn2_clicked(self):
|
||||||
@@ -2072,7 +2072,7 @@ class MainWindow(QMainWindow):
|
|||||||
Wird ausgeführt, wenn der Button "lade aus FN2" geklickt wird.
|
Wird ausgeführt, wenn der Button "lade aus FN2" geklickt wird.
|
||||||
Führt SQL-Abfrage aus und aktualisiert die Projekt-Nodes.
|
Führt SQL-Abfrage aus und aktualisiert die Projekt-Nodes.
|
||||||
"""
|
"""
|
||||||
print("Button 'lade aus FN2' wurde geklickt!")
|
logger.debug("Button 'lade aus FN2' wurde geklickt!")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Prüfe ob ein Projekt geladen ist
|
# Prüfe ob ein Projekt geladen ist
|
||||||
@@ -2111,7 +2111,7 @@ class MainWindow(QMainWindow):
|
|||||||
# QMessageBox.information(self, "Erfolg", "Daten erfolgreich aus FN2 geladen und Projekt aktualisiert!")
|
# QMessageBox.information(self, "Erfolg", "Daten erfolgreich aus FN2 geladen und Projekt aktualisiert!")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Laden aus FN2: {e}")
|
logger.error(f"Fehler beim Laden aus FN2: {e}")
|
||||||
QMessageBox.critical(self, "Fehler", f"Fehler beim Laden aus FN2:\n{str(e)}")
|
QMessageBox.critical(self, "Fehler", f"Fehler beim Laden aus FN2:\n{str(e)}")
|
||||||
|
|
||||||
def _get_database_config(self, db_id):
|
def _get_database_config(self, db_id):
|
||||||
@@ -2149,7 +2149,7 @@ class MainWindow(QMainWindow):
|
|||||||
with open(sql_file_path, "r", encoding="utf-8") as f:
|
with open(sql_file_path, "r", encoding="utf-8") as f:
|
||||||
sql_query = f.read()
|
sql_query = f.read()
|
||||||
|
|
||||||
print(f"SQL-Abfrage geladen: {len(sql_query)} Zeichen")
|
logger.debug(f"SQL-Abfrage geladen: {len(sql_query)} Zeichen")
|
||||||
|
|
||||||
# Verbindung zur PostgreSQL-Datenbank herstellen
|
# Verbindung zur PostgreSQL-Datenbank herstellen
|
||||||
connection_string = (
|
connection_string = (
|
||||||
@@ -2162,7 +2162,7 @@ class MainWindow(QMainWindow):
|
|||||||
f"sslmode={db_config.ssl_mode.value}"
|
f"sslmode={db_config.ssl_mode.value}"
|
||||||
)
|
)
|
||||||
|
|
||||||
print(f"Verbinde zu PostgreSQL: {db_config.host}:{db_config.port}/{db_config.database}")
|
logger.info(f"Verbinde zu PostgreSQL: {db_config.host}:{db_config.port}/{db_config.database}")
|
||||||
|
|
||||||
df = pl.read_database_uri(sql_query, connection_string, engine="connectorx").sort(
|
df = pl.read_database_uri(sql_query, connection_string, engine="connectorx").sort(
|
||||||
["reporttyp_bez", "report_bez", "repfile_bez"]
|
["reporttyp_bez", "report_bez", "repfile_bez"]
|
||||||
@@ -2170,7 +2170,7 @@ class MainWindow(QMainWindow):
|
|||||||
return df
|
return df
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_msg = f"Fehler beim Ausführen der SQL-Abfrage: {str(e)}"
|
error_msg = f"Fehler beim Ausführen der SQL-Abfrage: {str(e)}"
|
||||||
print(error_msg)
|
logger.error(error_msg)
|
||||||
QMessageBox.critical(self, "Fehler", error_msg)
|
QMessageBox.critical(self, "Fehler", error_msg)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -2193,7 +2193,7 @@ class MainWindow(QMainWindow):
|
|||||||
ebene_3 = df.group_by(["reporttyp", "report", "repfile", "repfile_bez", "xsl_datei"]).len()
|
ebene_3 = df.group_by(["reporttyp", "report", "repfile", "repfile_bez", "xsl_datei"]).len()
|
||||||
|
|
||||||
group_time = time.time() - start_time
|
group_time = time.time() - start_time
|
||||||
print(f"Performance: Gruppierung in {group_time:.3f}s")
|
logger.debug(f"Performance: Gruppierung in {group_time:.3f}s")
|
||||||
|
|
||||||
new_nodes = []
|
new_nodes = []
|
||||||
|
|
||||||
@@ -2223,13 +2223,13 @@ class MainWindow(QMainWindow):
|
|||||||
new_nodes.append(tn_1)
|
new_nodes.append(tn_1)
|
||||||
|
|
||||||
nodes_time = time.time() - start_time
|
nodes_time = time.time() - start_time
|
||||||
print(f"Performance: Node-Erstellung in {nodes_time:.3f}s")
|
logger.debug(f"Performance: Node-Erstellung in {nodes_time:.3f}s")
|
||||||
print(f"Erstellt: {len(new_nodes)} Root-Nodes")
|
logger.info(f"Erstellt: {len(new_nodes)} Root-Nodes")
|
||||||
|
|
||||||
return new_nodes
|
return new_nodes
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Verarbeiten der SQL-Daten: {e}")
|
logger.error(f"Fehler beim Verarbeiten der SQL-Daten: {e}")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def _merge_nodes_with_existing(self, new_nodes):
|
def _merge_nodes_with_existing(self, new_nodes):
|
||||||
@@ -2241,13 +2241,13 @@ class MainWindow(QMainWindow):
|
|||||||
new_nodes: Liste der neuen Nodes
|
new_nodes: Liste der neuen Nodes
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
print("Merge neue Nodes mit vorhandenen...")
|
logger.info("Merge neue Nodes mit vorhandenen...")
|
||||||
|
|
||||||
# Erstelle ein Dictionary der neuen Nodes für schnellen Zugriff
|
# Erstelle ein Dictionary der neuen Nodes für schnellen Zugriff
|
||||||
new_nodes_dict = {}
|
new_nodes_dict = {}
|
||||||
self._build_nodes_dict(new_nodes, new_nodes_dict)
|
self._build_nodes_dict(new_nodes, new_nodes_dict)
|
||||||
|
|
||||||
print(f"Neue Nodes Dictionary erstellt: {len(new_nodes_dict)} Einträge")
|
logger.debug(f"Neue Nodes Dictionary erstellt: {len(new_nodes_dict)} Einträge")
|
||||||
|
|
||||||
# Merge mit vorhandenen Nodes
|
# Merge mit vorhandenen Nodes
|
||||||
if self.pdf_project and self.pdf_project.nodes:
|
if self.pdf_project and self.pdf_project.nodes:
|
||||||
@@ -2259,16 +2259,16 @@ class MainWindow(QMainWindow):
|
|||||||
for new_node in new_nodes:
|
for new_node in new_nodes:
|
||||||
if new_node.id not in existing_root_ids:
|
if new_node.id not in existing_root_ids:
|
||||||
self.pdf_project.nodes.append(new_node)
|
self.pdf_project.nodes.append(new_node)
|
||||||
print(f"Neue Root-Node hinzugefügt: {new_node.bez}")
|
logger.info(f"Neue Root-Node hinzugefügt: {new_node.bez}")
|
||||||
elif self.pdf_project:
|
elif self.pdf_project:
|
||||||
# Wenn keine Nodes vorhanden sind, füge alle neuen Nodes hinzu
|
# Wenn keine Nodes vorhanden sind, füge alle neuen Nodes hinzu
|
||||||
self.pdf_project.nodes = new_nodes
|
self.pdf_project.nodes = new_nodes
|
||||||
print(f"Alle {len(new_nodes)} Root-Nodes hinzugefügt (keine vorhandenen Nodes)")
|
logger.info(f"Alle {len(new_nodes)} Root-Nodes hinzugefügt (keine vorhandenen Nodes)")
|
||||||
|
|
||||||
print("Merge abgeschlossen")
|
logger.info("Merge abgeschlossen")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Mergen der Nodes: {e}")
|
logger.error(f"Fehler beim Mergen der Nodes: {e}")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def _build_nodes_dict(self, nodes, nodes_dict):
|
def _build_nodes_dict(self, nodes, nodes_dict):
|
||||||
@@ -2299,7 +2299,7 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# Aktualisiere nur die Bezeichnung, falls sie sich geändert hat
|
# Aktualisiere nur die Bezeichnung, falls sie sich geändert hat
|
||||||
if existing_node.bez != new_node.bez:
|
if existing_node.bez != new_node.bez:
|
||||||
print(
|
logger.info(
|
||||||
f"Aktualisiere Bezeichnung für Node {existing_node.id}: '{existing_node.bez}' -> '{new_node.bez}'"
|
f"Aktualisiere Bezeichnung für Node {existing_node.id}: '{existing_node.bez}' -> '{new_node.bez}'"
|
||||||
)
|
)
|
||||||
existing_node.bez = new_node.bez
|
existing_node.bez = new_node.bez
|
||||||
@@ -2307,7 +2307,7 @@ class MainWindow(QMainWindow):
|
|||||||
# Für XslFile: Aktualisiere xsl_file Pfad
|
# Für XslFile: Aktualisiere xsl_file Pfad
|
||||||
if isinstance(existing_node, XslFile) and isinstance(new_node, XslFile):
|
if isinstance(existing_node, XslFile) and isinstance(new_node, XslFile):
|
||||||
if existing_node.xsl_file != new_node.xsl_file:
|
if existing_node.xsl_file != new_node.xsl_file:
|
||||||
print(
|
logger.info(
|
||||||
f"Aktualisiere XSL-Datei für Node {existing_node.id}: '{existing_node.xsl_file}' -> '{new_node.xsl_file}'"
|
f"Aktualisiere XSL-Datei für Node {existing_node.id}: '{existing_node.xsl_file}' -> '{new_node.xsl_file}'"
|
||||||
)
|
)
|
||||||
existing_node.xsl_file = new_node.xsl_file
|
existing_node.xsl_file = new_node.xsl_file
|
||||||
@@ -2324,7 +2324,7 @@ class MainWindow(QMainWindow):
|
|||||||
for new_child in new_node.children:
|
for new_child in new_node.children:
|
||||||
if new_child.id not in existing_child_ids:
|
if new_child.id not in existing_child_ids:
|
||||||
existing_node.children.append(new_child)
|
existing_node.children.append(new_child)
|
||||||
print(f"Neues Kind hinzugefügt zu Node {existing_node.id}: {new_child.bez}")
|
logger.info(f"Neues Kind hinzugefügt zu Node {existing_node.id}: {new_child.bez}")
|
||||||
|
|
||||||
def _collect_parent_params(self, item):
|
def _collect_parent_params(self, item):
|
||||||
"""
|
"""
|
||||||
@@ -2377,11 +2377,11 @@ class MainWindow(QMainWindow):
|
|||||||
try:
|
try:
|
||||||
# Prüfe ob pdf_project und project existieren
|
# Prüfe ob pdf_project und project existieren
|
||||||
if not self.pdf_project:
|
if not self.pdf_project:
|
||||||
print("Keine Projekt-Einstellungen zum Speichern verfügbar")
|
logger.warning("Keine Projekt-Einstellungen zum Speichern verfügbar")
|
||||||
return
|
return
|
||||||
|
|
||||||
if not self.project or not self.project.project_dir:
|
if not self.project or not self.project.project_dir:
|
||||||
print("Kein Projekt-Verzeichnis zum Speichern verfügbar")
|
logger.warning("Kein Projekt-Verzeichnis zum Speichern verfügbar")
|
||||||
return
|
return
|
||||||
|
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
@@ -2390,10 +2390,10 @@ class MainWindow(QMainWindow):
|
|||||||
self.pdf_project.writeSettings(project_dir=self.project.project_dir)
|
self.pdf_project.writeSettings(project_dir=self.project.project_dir)
|
||||||
|
|
||||||
dump_time = time.time() - start_time
|
dump_time = time.time() - start_time
|
||||||
print(f"Performance: Projekt-Einstellungen gespeichert in {dump_time:.3f}s")
|
logger.debug(f"Performance: Projekt-Einstellungen gespeichert in {dump_time:.3f}s")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Speichern der Projekt-Einstellungen: {e}")
|
logger.error(f"Fehler beim Speichern der Projekt-Einstellungen: {e}")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def _setup_drag_drop(self):
|
def _setup_drag_drop(self):
|
||||||
@@ -2408,10 +2408,10 @@ class MainWindow(QMainWindow):
|
|||||||
self.ui.treeWidget.dragMoveEvent = self.tree_drag_move_event
|
self.ui.treeWidget.dragMoveEvent = self.tree_drag_move_event
|
||||||
self.ui.treeWidget.dropEvent = self.tree_drop_event
|
self.ui.treeWidget.dropEvent = self.tree_drop_event
|
||||||
|
|
||||||
print("Drag&Drop für TreeWidget aktiviert")
|
logger.debug("Drag&Drop für TreeWidget aktiviert")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Aktivieren von Drag&Drop: {e}")
|
logger.error(f"Fehler beim Aktivieren von Drag&Drop: {e}")
|
||||||
|
|
||||||
def tree_drag_enter_event(self, event: QDragEnterEvent):
|
def tree_drag_enter_event(self, event: QDragEnterEvent):
|
||||||
"""
|
"""
|
||||||
@@ -2430,16 +2430,16 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
if xml_files:
|
if xml_files:
|
||||||
event.acceptProposedAction()
|
event.acceptProposedAction()
|
||||||
print(f"Drag-Enter akzeptiert: {len(xml_files)} XML-Dateien")
|
logger.debug(f"Drag-Enter akzeptiert: {len(xml_files)} XML-Dateien")
|
||||||
else:
|
else:
|
||||||
event.ignore()
|
event.ignore()
|
||||||
print("Drag-Enter ignoriert: Keine XML-Dateien")
|
logger.debug("Drag-Enter ignoriert: Keine XML-Dateien")
|
||||||
else:
|
else:
|
||||||
event.ignore()
|
event.ignore()
|
||||||
print("Drag-Enter ignoriert: Keine URLs")
|
logger.debug("Drag-Enter ignoriert: Keine URLs")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler in tree_drag_enter_event: {e}")
|
logger.error(f"Fehler in tree_drag_enter_event: {e}")
|
||||||
event.ignore()
|
event.ignore()
|
||||||
|
|
||||||
def tree_drag_move_event(self, event):
|
def tree_drag_move_event(self, event):
|
||||||
@@ -2465,7 +2465,7 @@ class MainWindow(QMainWindow):
|
|||||||
event.ignore()
|
event.ignore()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler in tree_drag_move_event: {e}")
|
logger.error(f"Fehler in tree_drag_move_event: {e}")
|
||||||
event.ignore()
|
event.ignore()
|
||||||
|
|
||||||
def tree_drop_event(self, event: QDropEvent):
|
def tree_drop_event(self, event: QDropEvent):
|
||||||
@@ -2506,7 +2506,7 @@ class MainWindow(QMainWindow):
|
|||||||
event.ignore()
|
event.ignore()
|
||||||
return
|
return
|
||||||
|
|
||||||
print(f"Drop-Event: {len(xml_files)} XML-Dateien erkannt")
|
logger.info(f"Drop-Event: {len(xml_files)} XML-Dateien erkannt")
|
||||||
|
|
||||||
# Verarbeite jede XML-Datei einzeln
|
# Verarbeite jede XML-Datei einzeln
|
||||||
for xml_file_path in xml_files:
|
for xml_file_path in xml_files:
|
||||||
@@ -2516,7 +2516,7 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_msg = f"Fehler beim Verarbeiten des Drop-Events: {str(e)}"
|
error_msg = f"Fehler beim Verarbeiten des Drop-Events: {str(e)}"
|
||||||
print(error_msg)
|
logger.error(error_msg)
|
||||||
QMessageBox.critical(self, "Fehler", error_msg)
|
QMessageBox.critical(self, "Fehler", error_msg)
|
||||||
event.ignore()
|
event.ignore()
|
||||||
|
|
||||||
@@ -2528,7 +2528,7 @@ class MainWindow(QMainWindow):
|
|||||||
xml_file_path: Pfad zur XML-Datei
|
xml_file_path: Pfad zur XML-Datei
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
print(f"Verarbeite XML-Datei: {xml_file_path}")
|
logger.debug(f"Verarbeite XML-Datei: {xml_file_path}")
|
||||||
|
|
||||||
# Prüfe ob die Datei existiert
|
# Prüfe ob die Datei existiert
|
||||||
if not xml_file_path.exists():
|
if not xml_file_path.exists():
|
||||||
@@ -2553,13 +2553,13 @@ class MainWindow(QMainWindow):
|
|||||||
# Verarbeite die Zuordnung
|
# Verarbeite die Zuordnung
|
||||||
self._assign_xml_to_xsl_nodes(xml_file_path, selected_xsl_nodes)
|
self._assign_xml_to_xsl_nodes(xml_file_path, selected_xsl_nodes)
|
||||||
else:
|
else:
|
||||||
print("Keine XSL-Knoten ausgewählt")
|
logger.warning("Keine XSL-Knoten ausgewählt")
|
||||||
else:
|
else:
|
||||||
print("Dialog abgebrochen")
|
logger.debug("Dialog abgebrochen")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_msg = f"Fehler beim Verarbeiten der XML-Datei '{xml_file_path}': {str(e)}"
|
error_msg = f"Fehler beim Verarbeiten der XML-Datei '{xml_file_path}': {str(e)}"
|
||||||
print(error_msg)
|
logger.error(error_msg)
|
||||||
QMessageBox.critical(self, "Fehler", error_msg)
|
QMessageBox.critical(self, "Fehler", error_msg)
|
||||||
|
|
||||||
def _assign_xml_to_xsl_nodes(self, xml_file_path: Path, selected_xsl_nodes: list):
|
def _assign_xml_to_xsl_nodes(self, xml_file_path: Path, selected_xsl_nodes: list):
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import logging
|
||||||
from PySide6.QtWidgets import QDialog, QTreeWidgetItem, QCheckBox, QMessageBox, QWidget, QHBoxLayout
|
from PySide6.QtWidgets import QDialog, QTreeWidgetItem, QCheckBox, QMessageBox, QWidget, QHBoxLayout
|
||||||
from PySide6.QtCore import Qt
|
from PySide6.QtCore import Qt
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@@ -6,6 +7,9 @@ from ui.XmlToXslAssignDialog_ui import Ui_XmlToXslAssignDialog
|
|||||||
from conf import TreeNode, XslFile
|
from conf import TreeNode, XslFile
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class XmlToXslAssignDialog(QDialog):
|
class XmlToXslAssignDialog(QDialog):
|
||||||
"""Dialog zur Zuordnung einer XML-Datei zu XSL-Knoten."""
|
"""Dialog zur Zuordnung einer XML-Datei zu XSL-Knoten."""
|
||||||
|
|
||||||
@@ -85,10 +89,10 @@ class XmlToXslAssignDialog(QDialog):
|
|||||||
root = self.ui.xslNodesTree.invisibleRootItem()
|
root = self.ui.xslNodesTree.invisibleRootItem()
|
||||||
self._add_checkboxes_recursive(root)
|
self._add_checkboxes_recursive(root)
|
||||||
|
|
||||||
print(f"Checkboxen zu {len(self.xsl_checkboxes)} XSL-Knoten hinzugefügt")
|
logger.debug(f"Checkboxen zu {len(self.xsl_checkboxes)} XSL-Knoten hinzugefügt")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Hinzufügen der Checkboxen: {e}")
|
logger.error(f"Fehler beim Hinzufügen der Checkboxen: {e}")
|
||||||
|
|
||||||
def _add_checkboxes_recursive(self, parent_item):
|
def _add_checkboxes_recursive(self, parent_item):
|
||||||
"""
|
"""
|
||||||
@@ -113,7 +117,7 @@ class XmlToXslAssignDialog(QDialog):
|
|||||||
# Speichere Checkbox-Referenz
|
# Speichere Checkbox-Referenz
|
||||||
self.xsl_checkboxes[id(node)] = checkbox
|
self.xsl_checkboxes[id(node)] = checkbox
|
||||||
|
|
||||||
print(f"Checkbox für XSL-Knoten '{node.bez}' hinzugefügt")
|
logger.debug(f"Checkbox für XSL-Knoten '{node.bez}' hinzugefügt")
|
||||||
|
|
||||||
# Rekursiv für Kinder
|
# Rekursiv für Kinder
|
||||||
if item.childCount() > 0:
|
if item.childCount() > 0:
|
||||||
@@ -201,7 +205,7 @@ class XmlToXslAssignDialog(QDialog):
|
|||||||
return item
|
return item
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Erstellen des Tree-Items: {e}")
|
logger.error(f"Fehler beim Erstellen des Tree-Items: {e}")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def select_all(self):
|
def select_all(self):
|
||||||
@@ -235,7 +239,7 @@ class XmlToXslAssignDialog(QDialog):
|
|||||||
return selected_nodes
|
return selected_nodes
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Sammeln der ausgewählten XSL-Knoten: {e}")
|
logger.error(f"Fehler beim Sammeln der ausgewählten XSL-Knoten: {e}")
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def _find_xsl_node_by_id(self, node_id):
|
def _find_xsl_node_by_id(self, node_id):
|
||||||
|
|||||||
Reference in New Issue
Block a user