Defensive Null-Checks in MainWindow hinzugefügt
Ergänzt umfassende Existenzprüfungen für pdf_project, project und nodes-Attribute vor dem Zugriff, um NoneType-Fehler zu vermeiden. Verbessert die Robustheit der Anwendung bei nicht initialisierten Projekten. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
+50
-6
@@ -1199,6 +1199,11 @@ class MainWindow(QMainWindow):
|
||||
QMessageBox.warning(self, "Warnung", "Kein gültiger TreeNode gefunden.")
|
||||
return
|
||||
|
||||
# Prüfe ob Projekt verfügbar ist
|
||||
if not self.pdf_project:
|
||||
QMessageBox.warning(self, "Warnung", "Keine Projekt-Einstellungen verfügbar.")
|
||||
return
|
||||
|
||||
# Sammle Eltern-Parameter
|
||||
parent_params = self._collect_parent_params(item)
|
||||
|
||||
@@ -1520,6 +1525,10 @@ class MainWindow(QMainWindow):
|
||||
bool: True wenn die XML-Datei noch anderswo verwendet wird
|
||||
"""
|
||||
try:
|
||||
# Prüfe ob pdf_project und nodes existieren
|
||||
if not self.pdf_project or not self.pdf_project.nodes:
|
||||
return False # Keine Nodes vorhanden, also nicht verwendet
|
||||
|
||||
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}")
|
||||
@@ -1734,15 +1743,20 @@ class MainWindow(QMainWindow):
|
||||
print(f"Neue Nodes Dictionary erstellt: {len(new_nodes_dict)} Einträge")
|
||||
|
||||
# Merge mit vorhandenen Nodes
|
||||
if self.pdf_project.nodes:
|
||||
if self.pdf_project and self.pdf_project.nodes:
|
||||
self._merge_nodes_recursive(self.pdf_project.nodes, new_nodes_dict)
|
||||
|
||||
# Füge komplett neue Root-Nodes hinzu
|
||||
existing_root_ids = {node.id for node in self.pdf_project.nodes}
|
||||
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}")
|
||||
if self.pdf_project and self.pdf_project.nodes:
|
||||
existing_root_ids = {node.id for node in self.pdf_project.nodes}
|
||||
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}")
|
||||
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)")
|
||||
|
||||
print("Merge abgeschlossen")
|
||||
|
||||
@@ -1846,6 +1860,15 @@ class MainWindow(QMainWindow):
|
||||
current_project: Das aktuelle Projekt
|
||||
"""
|
||||
try:
|
||||
# Prüfe ob pdf_project und project existieren
|
||||
if not self.pdf_project:
|
||||
print("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")
|
||||
return
|
||||
|
||||
start_time = time.time()
|
||||
|
||||
# Speichere in project.yaml im Projekt-Verzeichnis
|
||||
@@ -1999,6 +2022,11 @@ class MainWindow(QMainWindow):
|
||||
QMessageBox.critical(self, "Fehler", f"Die XML-Datei existiert nicht:\n{xml_file_path}")
|
||||
return
|
||||
|
||||
# Prüfe ob Projekt-Nodes verfügbar sind
|
||||
if not self.pdf_project or not self.pdf_project.nodes:
|
||||
QMessageBox.warning(self, "Warnung", "Keine Projekt-Nodes verfügbar für die Zuordnung.")
|
||||
return
|
||||
|
||||
# Öffne den Dialog zur Zuordnung zu XSL-Knoten
|
||||
dialog = XmlToXslAssignDialog(
|
||||
parent=self,
|
||||
@@ -2075,6 +2103,11 @@ class MainWindow(QMainWindow):
|
||||
|
||||
logger.info(f"Starte Hash-Berechnung für {len(xml_files)} XML-Dateien")
|
||||
|
||||
# Prüfe ob Projekt verfügbar ist
|
||||
if not self.project or not self.project.project_dir:
|
||||
logger.warning("Kein Projekt-Verzeichnis für Hash-Berechnung verfügbar")
|
||||
return
|
||||
|
||||
# Stoppe vorherigen Thread falls noch aktiv
|
||||
if self.hash_calculator_thread and self.hash_calculator_thread.isRunning():
|
||||
self.hash_calculator_thread.quit()
|
||||
@@ -2193,6 +2226,11 @@ class MainWindow(QMainWindow):
|
||||
logger.debug(f"Hash bereits vorhanden für {xml_file.xml}: {xml_file.hashsum}")
|
||||
return
|
||||
|
||||
# Prüfe ob Projekt verfügbar ist
|
||||
if not self.project or not self.project.project_dir:
|
||||
logger.warning("Kein Projekt-Verzeichnis für Hash-Berechnung verfügbar")
|
||||
return
|
||||
|
||||
xml_file_path = Path(self.project.project_dir) / xml_file.xml
|
||||
|
||||
if not xml_file_path.exists():
|
||||
@@ -2434,6 +2472,12 @@ class MainWindow(QMainWindow):
|
||||
file_hash: Berechneter Hash der Datei
|
||||
"""
|
||||
try:
|
||||
# Prüfe ob Projekt verfügbar ist
|
||||
if not self.project or not self.project.project_dir:
|
||||
logger.error("Kein Projekt-Verzeichnis für neue XML-Datei verfügbar")
|
||||
QMessageBox.critical(self, "Fehler", "Kein Projekt-Verzeichnis verfügbar.")
|
||||
return
|
||||
|
||||
# Erstelle xml-Ordner im Projekt-Verzeichnis falls er nicht existiert
|
||||
xml_dir = Path(self.project.project_dir) / "xml"
|
||||
xml_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
Reference in New Issue
Block a user