From c79c851e4d46c450fdb0f774181119e5fe507b3f Mon Sep 17 00:00:00 2001 From: David Vierra Date: Sat, 6 Jun 2015 21:23:47 -1000 Subject: [PATCH] Catch errors while calling generator's getPreviewNode TODO: better error dialog! --- src/mcedit2/editortools/generate.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/mcedit2/editortools/generate.py b/src/mcedit2/editortools/generate.py index f52818c..4692187 100644 --- a/src/mcedit2/editortools/generate.py +++ b/src/mcedit2/editortools/generate.py @@ -6,7 +6,6 @@ import logging import traceback from PySide import QtCore, QtGui -from PySide.QtGui import qApp from mcedit2.command import SimpleRevisionCommand from mcedit2.editortools import EditorTool @@ -16,7 +15,6 @@ from mcedit2.rendering.worldscene import WorldScene from mcedit2.util.showprogress import showProgress from mcedit2.util.worldloader import WorldLoader from mcedit2.widgets.layout import Column -from mcedit2.widgets.spinslider import SpinSlider from mceditlib.schematic import createSchematic from mceditlib.util import exhaust @@ -355,18 +353,22 @@ class GenerateTool(EditorTool): return if bounds is not None and bounds.volume > 0: - node = self.currentGenerator.getPreviewNode(bounds) - if node is not None: - self.clearNode() + try: + node = self.currentGenerator.getPreviewNode(bounds) + except Exception: + log.exception("Error while getting scene nodes from generator:") + else: + if node is not None: + self.clearNode() - if isinstance(node, list): - nodes = node - node = scenegraph.Node() - for c in nodes: - node.addChild(c) + if isinstance(node, list): + nodes = node + node = scenegraph.Node() + for c in nodes: + node.addChild(c) - self.overlayNode.addChild(node) - self.previewNode = node + self.overlayNode.addChild(node) + self.previewNode = node def generateNextSchematic(self, bounds): if bounds is None: @@ -381,7 +383,7 @@ class GenerateTool(EditorTool): self.displaySchematic(schematic, bounds.origin) except Exception as e: log.exception("Error while running generator %s: %s", self.currentGenerator, e) - QtGui.QMessageBox.warning(qApp.mainWindow, "Error while running generator", + QtGui.QMessageBox.warning(QtGui.qApp.mainWindow, "Error while running generator", "An error occurred while running the generator: \n %s.\n\n" "Traceback: %s" % (e, traceback.format_exc())) self.livePreview = False