Commit 94580040 authored by Maxime Perrotin's avatar Maxime Perrotin
Browse files

Catch exceptions when statechart can't be rendered

parent c0c8ecd9
......@@ -442,10 +442,14 @@ def render_statechart(scene, graphtree=None, keep_pos=False, dump_gfx=''):
# Harmonize the size of states to avoid having huge composite state(s)
# next to single, small states. Rule: there can't be a state with a size
# that is less than a third of the biggest state.
min_width = float(max(node.attr.get('width', 0.0) or 0.0
for node in graphtree['graph'].iternodes()))
min_height = float(max(node.attr.get('height', 0.0) or 0.0
for node in graphtree['graph'].iternodes()))
try:
min_width = float(max(node.attr.get('width', 0.0) or 0.0
for node in graphtree['graph'].iternodes()))
min_height = float(max(node.attr.get('height', 0.0) or 0.0
for node in graphtree['graph'].iternodes()))
except ValueError as err:
LOG.debug(str(err))
min_width, min_height = 0, 0
if min_width and min_height:
for node in graphtree['graph'].iternodes():
if node.attr['shape'] != 'record':
......
......@@ -2010,15 +2010,15 @@ class OG_MainWindow(QtGui.QMainWindow, object):
scene = self.view.parent_scene[0][0]
else:
scene = self.view.scene()
graph = scene.sdl_to_statechart()
try:
graph = scene.sdl_to_statechart()
Statechart.render_statechart(self.statechart_scene,
graph)
self.statechart_view.refresh()
self.statechart_view.fitInView(
self.statechart_scene.itemsBoundingRect(),
Qt.KeepAspectRatioByExpanding)
except (IOError, TypeError) as err:
except (AttributeError, IOError, TypeError) as err:
LOG.debug(str(err))
@QtCore.Slot(ogAST.AST)
......@@ -2298,12 +2298,12 @@ def export(ast, options):
# Also save the statechart view of the current scene
LOG.info('Saving statechart sc_{}.png'.format(process.processName))
sc_scene = SDL_Scene(context='statechart')
graph = diagram.sdl_to_statechart()
try:
graph = diagram.sdl_to_statechart()
Statechart.render_statechart(sc_scene, graph,
dump_gfx=process.processName)
sc_scene.refresh()
except (IOError, TypeError) as err:
except (AttributeError, IOError, TypeError) as err:
LOG.debug(str(err))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment