def _render_dotgraph(self, dotgraph): """ Render the specified dotgraph on canvas :type dotgraph: pydot.Dot """ # Only redraw when the graph differs from the previous one if self._prev_dotgraph == dotgraph: return else: self._prev_dotgraph = dotgraph self._scene.clear() if self._widget.highlight_connections_check_box.isChecked(): highlight_level = 3 else: highlight_level = 1 # Generate qt items from dotcode dotcode = PydotFactory().create_dot(dotgraph) nodes, edges = DotToQtGenerator().dotcode_to_qt_items( dotcode, highlight_level, same_label_siblings=False) # Add generated items to scene for node_item in nodes: self._scene.addItem(nodes.get(node_item)) for edge_items in edges: for edge_item in edges.get(edge_items): edge_item.add_to_scene(self._scene) self._scene.setSceneRect(self._scene.itemsBoundingRect())