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()
|
||||
current_theme = QApplication.style().objectName()
|
||||
|
||||
print(f"Verfügbare Themes: {available_themes}")
|
||||
print(f"Aktuelles Theme: {current_theme}")
|
||||
logger.debug(f"Verfügbare Themes: {available_themes}")
|
||||
logger.debug(f"Aktuelles Theme: {current_theme}")
|
||||
|
||||
# Füge Theme-Aktionen zum Menü hinzu
|
||||
for theme_name in available_themes:
|
||||
@@ -342,7 +342,7 @@ class MainWindow(QMainWindow):
|
||||
# Setze das Untermenü für die Aktion
|
||||
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):
|
||||
"""
|
||||
@@ -351,8 +351,8 @@ class MainWindow(QMainWindow):
|
||||
Args:
|
||||
project: Das zu öffnende PdfProject-Objekt
|
||||
"""
|
||||
print(f"Öffne Projekt: {project.name}")
|
||||
print(f"Projekt-Ordner: {project.project_dir}")
|
||||
logger.info(f"Öffne Projekt: {project.name}")
|
||||
logger.debug(f"Projekt-Ordner: {project.project_dir}")
|
||||
|
||||
self.project = project
|
||||
|
||||
@@ -363,15 +363,15 @@ class MainWindow(QMainWindow):
|
||||
if project_yaml_path.exists() and project_yaml_path.stat().st_size > 0:
|
||||
# Versuche die Projekt-Einstellungen zu laden
|
||||
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:
|
||||
# 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()
|
||||
|
||||
# Speichere die Standard-Einstellungen in die project.yaml
|
||||
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)
|
||||
self._load_nodes_to_tree()
|
||||
@@ -380,15 +380,15 @@ class MainWindow(QMainWindow):
|
||||
self._start_xml_hash_calculation()
|
||||
|
||||
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
|
||||
try:
|
||||
self.pdf_project = ProjectData()
|
||||
print("Fallback: Standard-Projekt-Einstellungen erstellt")
|
||||
logger.info("Fallback: Standard-Projekt-Einstellungen erstellt")
|
||||
# Auch bei Fallback die Nodes laden
|
||||
self._load_nodes_to_tree()
|
||||
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):
|
||||
"""
|
||||
@@ -397,7 +397,7 @@ class MainWindow(QMainWindow):
|
||||
Args:
|
||||
theme_name: Name des zu verwendenden Themes
|
||||
"""
|
||||
print(f"Wechsle zu Theme: {theme_name}")
|
||||
logger.info(f"Wechsle zu Theme: {theme_name}")
|
||||
|
||||
try:
|
||||
# Erstelle den neuen Style
|
||||
@@ -410,14 +410,14 @@ class MainWindow(QMainWindow):
|
||||
for action in self.ui.menuThema.actions():
|
||||
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.save()
|
||||
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:
|
||||
print(f"Fehler beim Wechseln des Themes: {e}")
|
||||
logger.error(f"Fehler beim Wechseln des Themes: {e}")
|
||||
|
||||
def _load_images(self):
|
||||
"""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
|
||||
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
|
||||
|
||||
# Finde alle PDF-Dateien im diff-Ordner
|
||||
diff_pdfs = glob.glob(os.path.join(diff_dir, "*.pdf"))
|
||||
if not diff_pdfs:
|
||||
print("Keine PDF-Dateien im diff-Ordner gefunden")
|
||||
logger.warning("Keine PDF-Dateien im diff-Ordner gefunden")
|
||||
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
|
||||
for diff_pdf_path in diff_pdfs:
|
||||
@@ -459,10 +459,10 @@ class MainWindow(QMainWindow):
|
||||
|
||||
# Prüfe ob gleichnamige PDFs in ref und new existieren
|
||||
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
|
||||
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
|
||||
|
||||
try:
|
||||
@@ -482,16 +482,16 @@ class MainWindow(QMainWindow):
|
||||
or ref_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
|
||||
|
||||
# PDF-Dokumente für später speichern
|
||||
self.pdf_documents[pdf_filename] = {"diff": diff_doc, "ref": ref_doc, "new": new_doc}
|
||||
|
||||
print(f"PDFs geladen: {pdf_filename}")
|
||||
print(f" diff: {diff_doc.pageCount()} Seiten")
|
||||
print(f" ref: {ref_doc.pageCount()} Seiten")
|
||||
print(f" new: {new_doc.pageCount()} Seiten")
|
||||
logger.info(f"PDFs geladen: {pdf_filename}")
|
||||
logger.debug(f" diff: {diff_doc.pageCount()} Seiten")
|
||||
logger.debug(f" ref: {ref_doc.pageCount()} Seiten")
|
||||
logger.debug(f" new: {new_doc.pageCount()} Seiten")
|
||||
|
||||
# Nehme die Seitenzahl der diff-PDF als Basis
|
||||
max_pages = diff_doc.pageCount()
|
||||
@@ -533,17 +533,17 @@ class MainWindow(QMainWindow):
|
||||
# Click-Event für das Thumbnail einrichten
|
||||
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
|
||||
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
|
||||
if self.current_pdf is None:
|
||||
self.current_pdf = pdf_filename
|
||||
|
||||
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)
|
||||
if self.fullsize_label is None:
|
||||
@@ -573,10 +573,10 @@ class MainWindow(QMainWindow):
|
||||
pdf_filename: Name der PDF-Datei
|
||||
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:
|
||||
print(f"PDF-Dokument {pdf_filename} nicht gefunden")
|
||||
logger.warning(f"PDF-Dokument {pdf_filename} nicht gefunden")
|
||||
return
|
||||
|
||||
start_time = time.time()
|
||||
@@ -605,24 +605,24 @@ class MainWindow(QMainWindow):
|
||||
if page_num < ref_doc.pageCount():
|
||||
ref_image = ref_doc.render(page_num, render_size)
|
||||
ref_pixmap = QPixmap.fromImage(ref_image)
|
||||
print(f"Ref-Seite {page_num + 1} gerendert")
|
||||
logger.debug(f"Ref-Seite {page_num + 1} gerendert")
|
||||
else:
|
||||
# Erstelle weiße Seite mit gleichen Abmessungen wie Diff-Seite
|
||||
ref_pixmap = QPixmap(diff_width, diff_height)
|
||||
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_doc = docs["new"]
|
||||
if page_num < new_doc.pageCount():
|
||||
new_image = new_doc.render(page_num, render_size)
|
||||
new_pixmap = QPixmap.fromImage(new_image)
|
||||
print(f"New-Seite {page_num + 1} gerendert")
|
||||
logger.debug(f"New-Seite {page_num + 1} gerendert")
|
||||
else:
|
||||
# Erstelle weiße Seite mit gleichen Abmessungen wie Diff-Seite
|
||||
new_pixmap = QPixmap(diff_width, diff_height)
|
||||
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
|
||||
self.current_rendered_pixmaps = {"ref": ref_pixmap, "diff": diff_pixmap, "new": new_pixmap}
|
||||
@@ -635,7 +635,7 @@ class MainWindow(QMainWindow):
|
||||
self.update_current_display()
|
||||
|
||||
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:
|
||||
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.
|
||||
"""
|
||||
if not self.current_rendered_pixmaps:
|
||||
print("Keine gerenderten Pixmaps verfügbar")
|
||||
logger.warning("Keine gerenderten Pixmaps verfügbar")
|
||||
return
|
||||
|
||||
if self.fullsize_label is None:
|
||||
print("Fullsize-Label ist nicht verfügbar")
|
||||
logger.warning("Fullsize-Label ist nicht verfügbar")
|
||||
return
|
||||
|
||||
try:
|
||||
@@ -764,7 +764,7 @@ class MainWindow(QMainWindow):
|
||||
# Aktiviere Kontextmenü für das TreeWidget
|
||||
self.ui.treeWidget.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
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):
|
||||
"""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
|
||||
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:
|
||||
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):
|
||||
"""
|
||||
@@ -854,7 +854,7 @@ class MainWindow(QMainWindow):
|
||||
return self._determine_node_type_from_data(item)
|
||||
|
||||
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"
|
||||
|
||||
def _determine_node_type_from_data(self, item):
|
||||
@@ -884,7 +884,7 @@ class MainWindow(QMainWindow):
|
||||
return "Unknown"
|
||||
|
||||
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"
|
||||
|
||||
def _find_item_by_node(self, node_obj):
|
||||
@@ -1095,7 +1095,7 @@ class MainWindow(QMainWindow):
|
||||
return menu
|
||||
|
||||
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
|
||||
|
||||
def on_alpha_changed(self, alpha_value):
|
||||
@@ -1106,13 +1106,13 @@ class MainWindow(QMainWindow):
|
||||
Args:
|
||||
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()
|
||||
# Verwende gecachte Pixmaps für schnelle Alpha-Änderungen
|
||||
self.update_current_display()
|
||||
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):
|
||||
"""Öffnet den Einstellungen-Dialog."""
|
||||
@@ -1121,9 +1121,9 @@ class MainWindow(QMainWindow):
|
||||
dialog = AppSettingsDlg(self, app_settings)
|
||||
if dialog.exec() == AppSettingsDlg.DialogCode.Accepted:
|
||||
# Einstellungen wurden gespeichert, hier könnten weitere Aktionen folgen
|
||||
print("Einstellungen wurden gespeichert")
|
||||
logger.info("Einstellungen wurden gespeichert")
|
||||
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):
|
||||
"""Öffnet Pdf-Projekt-Dialog."""
|
||||
@@ -1161,15 +1161,15 @@ class MainWindow(QMainWindow):
|
||||
# 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']}")
|
||||
logger.info(f"Neues PDF-Projekt '{project_data['name']}' wurde erstellt und gespeichert")
|
||||
logger.debug(f"Projekt-ID: {new_id}")
|
||||
logger.debug(f"Projekt-Ordner: {project_data['project_dir']}")
|
||||
|
||||
# Aktualisiere das Projekte-Menü
|
||||
self._setup_projects_menu()
|
||||
|
||||
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):
|
||||
"""
|
||||
@@ -1186,7 +1186,7 @@ class MainWindow(QMainWindow):
|
||||
for subdir in subdirs:
|
||||
subdir_path = project_dir / subdir
|
||||
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"
|
||||
|
||||
@@ -1197,17 +1197,17 @@ class MainWindow(QMainWindow):
|
||||
|
||||
# Speichere die Standard-Einstellungen in die project.yaml
|
||||
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:
|
||||
print(f"project.yaml existiert bereits: {project_yaml_path}")
|
||||
logger.debug(f"project.yaml existiert bereits: {project_yaml_path}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Erstellen der Projekt-Struktur: {e}")
|
||||
logger.error(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!")
|
||||
logger.debug("Button wurde geklickt!")
|
||||
|
||||
def on_thumbnail_clicked(self, event, thumbnail):
|
||||
"""
|
||||
@@ -1222,7 +1222,7 @@ class MainWindow(QMainWindow):
|
||||
pdf_filename = page_info["pdf_filename"]
|
||||
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
|
||||
self.render_and_display_page(pdf_filename, page_num)
|
||||
@@ -1236,7 +1236,7 @@ class MainWindow(QMainWindow):
|
||||
zoom_value: Der neue Zoom-Wert (in Prozent)
|
||||
"""
|
||||
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
|
||||
self.update_current_display()
|
||||
@@ -1281,7 +1281,7 @@ class MainWindow(QMainWindow):
|
||||
Lädt die Nodes aus den Projekt-Einstellungen in das TreeWidget.
|
||||
Sortiert die Items alphabetisch nach ihrer ID.
|
||||
"""
|
||||
print("Lade Nodes in TreeWidget...")
|
||||
logger.info("Lade Nodes in TreeWidget...")
|
||||
|
||||
try:
|
||||
# TreeWidget leeren
|
||||
@@ -1292,11 +1292,11 @@ class MainWindow(QMainWindow):
|
||||
|
||||
# Prüfe ob pdf_project existiert und Nodes hat
|
||||
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
|
||||
|
||||
if not self.pdf_project.nodes:
|
||||
print("Keine Nodes in den Projekt-Einstellungen gefunden")
|
||||
logger.warning("Keine Nodes in den Projekt-Einstellungen gefunden")
|
||||
return
|
||||
|
||||
# Sortiere Root-Nodes alphabetisch nach ID
|
||||
@@ -1307,14 +1307,14 @@ class MainWindow(QMainWindow):
|
||||
tree_item = self._create_tree_item_from_node(node)
|
||||
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
|
||||
self._update_all_diff_pdf_counts()
|
||||
self._update_diff_icons_for_existing_pdfs()
|
||||
|
||||
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):
|
||||
"""
|
||||
@@ -1396,7 +1396,7 @@ class MainWindow(QMainWindow):
|
||||
return item
|
||||
|
||||
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_item = QTreeWidgetItem()
|
||||
fallback_item.setText(0, "Fehler beim Laden")
|
||||
@@ -1662,12 +1662,12 @@ class MainWindow(QMainWindow):
|
||||
# Kontextmenü-Aktionen für TreeNode
|
||||
def _add_tree_node_child(self, parent_item):
|
||||
"""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
|
||||
|
||||
def _add_xsl_file_to_node(self, parent_item):
|
||||
"""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
|
||||
|
||||
def _edit_tree_node(self, item):
|
||||
@@ -1677,7 +1677,7 @@ class MainWindow(QMainWindow):
|
||||
Args:
|
||||
item: Das TreeWidgetItem des TreeNode
|
||||
"""
|
||||
print(f"TreeNode bearbeiten: {item.text(0)}")
|
||||
logger.debug(f"TreeNode bearbeiten: {item.text(0)}")
|
||||
|
||||
try:
|
||||
# Hole das Node-Objekt aus dem TreeWidgetItem
|
||||
@@ -1704,8 +1704,8 @@ class MainWindow(QMainWindow):
|
||||
node.bez = data["bez"]
|
||||
node.xslt_params = data["xslt_params"]
|
||||
|
||||
print(f"TreeNode '{node.bez}' wurde aktualisiert")
|
||||
print(f"XSLT-Parameter: {node.xslt_params}")
|
||||
logger.info(f"TreeNode '{node.bez}' wurde aktualisiert")
|
||||
logger.debug(f"XSLT-Parameter: {node.xslt_params}")
|
||||
|
||||
# Speichere die Änderungen
|
||||
self._save_project_settings()
|
||||
@@ -1727,12 +1727,12 @@ class MainWindow(QMainWindow):
|
||||
|
||||
except Exception as e:
|
||||
error_msg = f"Fehler beim Bearbeiten des TreeNode: {str(e)}"
|
||||
print(error_msg)
|
||||
logger.error(error_msg)
|
||||
QMessageBox.critical(self, "Fehler", error_msg)
|
||||
|
||||
def _delete_tree_node(self, item):
|
||||
"""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
|
||||
|
||||
# Kontextmenü-Aktionen für XslFile
|
||||
@@ -1743,7 +1743,7 @@ class MainWindow(QMainWindow):
|
||||
Args:
|
||||
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:
|
||||
# Prüfe ob ein Projekt geladen ist
|
||||
@@ -1800,7 +1800,7 @@ class MainWindow(QMainWindow):
|
||||
|
||||
# Kopiere die XML-Datei in den xml-Ordner
|
||||
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)
|
||||
relative_xml_path = Path("xml") / xml_file_path.name
|
||||
@@ -1824,7 +1824,7 @@ class MainWindow(QMainWindow):
|
||||
new_xml_file = XmlFile(xml=relative_xml_path)
|
||||
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
|
||||
self._calculate_hash_for_xml_file(new_xml_file)
|
||||
@@ -1843,7 +1843,7 @@ class MainWindow(QMainWindow):
|
||||
|
||||
except Exception as 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)
|
||||
|
||||
def _edit_xsl_file(self, item):
|
||||
@@ -1853,7 +1853,7 @@ class MainWindow(QMainWindow):
|
||||
Args:
|
||||
item: Das TreeWidgetItem des XslFile
|
||||
"""
|
||||
print(f"XslFile bearbeiten: {item.text(0)}")
|
||||
logger.debug(f"XslFile bearbeiten: {item.text(0)}")
|
||||
|
||||
try:
|
||||
# Hole das Node-Objekt aus dem TreeWidgetItem
|
||||
@@ -1875,8 +1875,8 @@ class MainWindow(QMainWindow):
|
||||
node.bez = data["bez"]
|
||||
node.xslt_params = data["xslt_params"]
|
||||
|
||||
print(f"XslFile '{node.bez}' wurde aktualisiert")
|
||||
print(f"XSLT-Parameter: {node.xslt_params}")
|
||||
logger.info(f"XslFile '{node.bez}' wurde aktualisiert")
|
||||
logger.debug(f"XSLT-Parameter: {node.xslt_params}")
|
||||
|
||||
# Speichere die Änderungen
|
||||
self._save_project_settings()
|
||||
@@ -1898,18 +1898,18 @@ class MainWindow(QMainWindow):
|
||||
|
||||
except Exception as 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)
|
||||
|
||||
def _delete_xsl_file(self, item):
|
||||
"""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
|
||||
|
||||
# Kontextmenü-Aktionen für XmlFile
|
||||
def _edit_xml_file(self, item):
|
||||
"""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
|
||||
|
||||
def _delete_xml_file(self, item):
|
||||
@@ -1919,7 +1919,7 @@ class MainWindow(QMainWindow):
|
||||
Args:
|
||||
item: Das TreeWidgetItem der XML-Datei
|
||||
"""
|
||||
print(f"XmlFile löschen: {item.text(0)}")
|
||||
logger.debug(f"XmlFile löschen: {item.text(0)}")
|
||||
|
||||
try:
|
||||
# Prüfe ob ein Projekt geladen ist
|
||||
@@ -1961,7 +1961,7 @@ class MainWindow(QMainWindow):
|
||||
)
|
||||
|
||||
if reply != QMessageBox.StandardButton.Yes:
|
||||
print("Löschung abgebrochen")
|
||||
logger.debug("Löschung abgebrochen")
|
||||
return
|
||||
|
||||
# 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.")
|
||||
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
|
||||
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:
|
||||
try:
|
||||
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:
|
||||
QMessageBox.warning(self, "Warnung", f"Fehler beim Löschen der physischen Datei:\n{str(e)}")
|
||||
else:
|
||||
print(
|
||||
logger.info(
|
||||
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
|
||||
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:
|
||||
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)
|
||||
|
||||
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)
|
||||
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
|
||||
|
||||
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)
|
||||
def _add_root_tree_node(self):
|
||||
"""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
|
||||
|
||||
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.
|
||||
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:
|
||||
# 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!")
|
||||
|
||||
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)}")
|
||||
|
||||
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:
|
||||
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
|
||||
connection_string = (
|
||||
@@ -2162,7 +2162,7 @@ class MainWindow(QMainWindow):
|
||||
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(
|
||||
["reporttyp_bez", "report_bez", "repfile_bez"]
|
||||
@@ -2170,7 +2170,7 @@ class MainWindow(QMainWindow):
|
||||
return df
|
||||
except Exception as 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)
|
||||
return None
|
||||
|
||||
@@ -2193,7 +2193,7 @@ class MainWindow(QMainWindow):
|
||||
ebene_3 = df.group_by(["reporttyp", "report", "repfile", "repfile_bez", "xsl_datei"]).len()
|
||||
|
||||
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 = []
|
||||
|
||||
@@ -2223,13 +2223,13 @@ class MainWindow(QMainWindow):
|
||||
new_nodes.append(tn_1)
|
||||
|
||||
nodes_time = time.time() - start_time
|
||||
print(f"Performance: Node-Erstellung in {nodes_time:.3f}s")
|
||||
print(f"Erstellt: {len(new_nodes)} Root-Nodes")
|
||||
logger.debug(f"Performance: Node-Erstellung in {nodes_time:.3f}s")
|
||||
logger.info(f"Erstellt: {len(new_nodes)} Root-Nodes")
|
||||
|
||||
return new_nodes
|
||||
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Verarbeiten der SQL-Daten: {e}")
|
||||
logger.error(f"Fehler beim Verarbeiten der SQL-Daten: {e}")
|
||||
raise
|
||||
|
||||
def _merge_nodes_with_existing(self, new_nodes):
|
||||
@@ -2241,13 +2241,13 @@ class MainWindow(QMainWindow):
|
||||
new_nodes: Liste der neuen Nodes
|
||||
"""
|
||||
try:
|
||||
print("Merge neue Nodes mit vorhandenen...")
|
||||
logger.info("Merge neue Nodes mit vorhandenen...")
|
||||
|
||||
# Erstelle ein Dictionary der neuen Nodes für schnellen Zugriff
|
||||
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
|
||||
if self.pdf_project and self.pdf_project.nodes:
|
||||
@@ -2259,16 +2259,16 @@ class MainWindow(QMainWindow):
|
||||
for new_node in new_nodes:
|
||||
if new_node.id not in existing_root_ids:
|
||||
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:
|
||||
# Wenn keine Nodes vorhanden sind, füge alle neuen Nodes hinzu
|
||||
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:
|
||||
print(f"Fehler beim Mergen der Nodes: {e}")
|
||||
logger.error(f"Fehler beim Mergen der Nodes: {e}")
|
||||
raise
|
||||
|
||||
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
|
||||
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}'"
|
||||
)
|
||||
existing_node.bez = new_node.bez
|
||||
@@ -2307,7 +2307,7 @@ class MainWindow(QMainWindow):
|
||||
# Für XslFile: Aktualisiere xsl_file Pfad
|
||||
if isinstance(existing_node, XslFile) and isinstance(new_node, XslFile):
|
||||
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}'"
|
||||
)
|
||||
existing_node.xsl_file = new_node.xsl_file
|
||||
@@ -2324,7 +2324,7 @@ class MainWindow(QMainWindow):
|
||||
for new_child in new_node.children:
|
||||
if new_child.id not in existing_child_ids:
|
||||
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):
|
||||
"""
|
||||
@@ -2377,11 +2377,11 @@ class MainWindow(QMainWindow):
|
||||
try:
|
||||
# Prüfe ob pdf_project und project existieren
|
||||
if not self.pdf_project:
|
||||
print("Keine Projekt-Einstellungen zum Speichern verfügbar")
|
||||
logger.warning("Keine Projekt-Einstellungen zum Speichern verfügbar")
|
||||
return
|
||||
|
||||
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
|
||||
|
||||
start_time = time.time()
|
||||
@@ -2390,10 +2390,10 @@ class MainWindow(QMainWindow):
|
||||
self.pdf_project.writeSettings(project_dir=self.project.project_dir)
|
||||
|
||||
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:
|
||||
print(f"Fehler beim Speichern der Projekt-Einstellungen: {e}")
|
||||
logger.error(f"Fehler beim Speichern der Projekt-Einstellungen: {e}")
|
||||
raise
|
||||
|
||||
def _setup_drag_drop(self):
|
||||
@@ -2408,10 +2408,10 @@ class MainWindow(QMainWindow):
|
||||
self.ui.treeWidget.dragMoveEvent = self.tree_drag_move_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:
|
||||
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):
|
||||
"""
|
||||
@@ -2430,16 +2430,16 @@ class MainWindow(QMainWindow):
|
||||
|
||||
if xml_files:
|
||||
event.acceptProposedAction()
|
||||
print(f"Drag-Enter akzeptiert: {len(xml_files)} XML-Dateien")
|
||||
logger.debug(f"Drag-Enter akzeptiert: {len(xml_files)} XML-Dateien")
|
||||
else:
|
||||
event.ignore()
|
||||
print("Drag-Enter ignoriert: Keine XML-Dateien")
|
||||
logger.debug("Drag-Enter ignoriert: Keine XML-Dateien")
|
||||
else:
|
||||
event.ignore()
|
||||
print("Drag-Enter ignoriert: Keine URLs")
|
||||
logger.debug("Drag-Enter ignoriert: Keine URLs")
|
||||
|
||||
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()
|
||||
|
||||
def tree_drag_move_event(self, event):
|
||||
@@ -2465,7 +2465,7 @@ class MainWindow(QMainWindow):
|
||||
event.ignore()
|
||||
|
||||
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()
|
||||
|
||||
def tree_drop_event(self, event: QDropEvent):
|
||||
@@ -2506,7 +2506,7 @@ class MainWindow(QMainWindow):
|
||||
event.ignore()
|
||||
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
|
||||
for xml_file_path in xml_files:
|
||||
@@ -2516,7 +2516,7 @@ class MainWindow(QMainWindow):
|
||||
|
||||
except Exception as 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)
|
||||
event.ignore()
|
||||
|
||||
@@ -2528,7 +2528,7 @@ class MainWindow(QMainWindow):
|
||||
xml_file_path: Pfad zur XML-Datei
|
||||
"""
|
||||
try:
|
||||
print(f"Verarbeite XML-Datei: {xml_file_path}")
|
||||
logger.debug(f"Verarbeite XML-Datei: {xml_file_path}")
|
||||
|
||||
# Prüfe ob die Datei existiert
|
||||
if not xml_file_path.exists():
|
||||
@@ -2553,13 +2553,13 @@ class MainWindow(QMainWindow):
|
||||
# Verarbeite die Zuordnung
|
||||
self._assign_xml_to_xsl_nodes(xml_file_path, selected_xsl_nodes)
|
||||
else:
|
||||
print("Keine XSL-Knoten ausgewählt")
|
||||
logger.warning("Keine XSL-Knoten ausgewählt")
|
||||
else:
|
||||
print("Dialog abgebrochen")
|
||||
logger.debug("Dialog abgebrochen")
|
||||
|
||||
except Exception as 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)
|
||||
|
||||
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.QtCore import Qt
|
||||
from pathlib import Path
|
||||
@@ -6,6 +7,9 @@ from ui.XmlToXslAssignDialog_ui import Ui_XmlToXslAssignDialog
|
||||
from conf import TreeNode, XslFile
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class XmlToXslAssignDialog(QDialog):
|
||||
"""Dialog zur Zuordnung einer XML-Datei zu XSL-Knoten."""
|
||||
|
||||
@@ -85,10 +89,10 @@ class XmlToXslAssignDialog(QDialog):
|
||||
root = self.ui.xslNodesTree.invisibleRootItem()
|
||||
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:
|
||||
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):
|
||||
"""
|
||||
@@ -113,7 +117,7 @@ class XmlToXslAssignDialog(QDialog):
|
||||
# Speichere Checkbox-Referenz
|
||||
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
|
||||
if item.childCount() > 0:
|
||||
@@ -201,7 +205,7 @@ class XmlToXslAssignDialog(QDialog):
|
||||
return item
|
||||
|
||||
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
|
||||
|
||||
def select_all(self):
|
||||
@@ -235,7 +239,7 @@ class XmlToXslAssignDialog(QDialog):
|
||||
return selected_nodes
|
||||
|
||||
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 []
|
||||
|
||||
def _find_xsl_node_by_id(self, node_id):
|
||||
|
||||
Reference in New Issue
Block a user