def add_edge(self, info): """ Handles adding an Edge to the graph. """ if not info.initialized: return graph = self._request_graph(info.ui.control) if graph is None: return n_nodes = len(graph.nodes) IDs = [v.ID for v in graph.nodes] if n_nodes == 0: tail_node = Node(ID=make_unique_name("node", IDs)) head_name = make_unique_name("node", IDs + [tail_node.ID]) head_node = Node(ID=head_name) elif n_nodes == 1: tail_node = graph.nodes[0] head_node = Node(ID=make_unique_name("node", IDs)) else: tail_node = graph.nodes[0] head_node = graph.nodes[1] edge = Edge(tail_node, head_node, _nodes=graph.nodes) retval = edge.edit_traits(parent=info.ui.control, kind="livemodal") if retval.result: graph.edges.append(edge)
def _save_saved_contexts_to_project(self, project_dir): """ Saving saved_contexts to a project Parameters: ----------- project_dir: Str Returns: -------- script: Str Details of the saved contexts. This script to be added to the project file script. """ # Return if there are no saved contexts. if not len(self.exec_context.saved_contexts): return '' # Prepare the directory to save pickled saved contexts. saved_contexts_dir = os.path.join(project_dir, 'saved_contexts') if not os.path.exists(saved_contexts_dir): os.mkdir(saved_contexts_dir) elif not os.path.isdir(saved_contexts_dir): try: os.remove(saved_contexts_dir) except OSError, (errno, strerror): logger.error('Error removing %s, %s' % (saved_contexts_dir, strerror)) dir_name = make_unique_name('saved_contexts', os.listdir(project_dir)) saved_contexts_dir = os.path.join(project_dir, dir_name)
def node_factory(**row_factory_kw): """ Give new nodes a unique ID. """ if "__table_editor__" in row_factory_kw: graph = row_factory_kw["__table_editor__"].object ID = make_unique_name("n", [node.ID for node in graph.nodes]) del row_factory_kw["__table_editor__"] return godot.node.Node(ID) else: return godot.node.Node(uuid.uuid4().hex[:6])
def edge_factory(**row_factory_kw): """ Give new edges a unique ID. """ if "__table_editor__" in row_factory_kw: table_editor = row_factory_kw["__table_editor__"] graph = table_editor.object ID = make_unique_name("node", [node.ID for node in graph.nodes]) n_nodes = len(graph.nodes) IDs = [v.ID for v in graph.nodes] if n_nodes == 0: tail_node = godot.Node(ID=make_unique_name("n", IDs)) head_node = godot.Node(ID=make_unique_name("n", IDs)) elif n_nodes == 1: tail_node = graph.nodes[0] head_node = godot.Node(ID=make_unique_name("n", IDs)) else: tail_node = graph.nodes[0] head_node = graph.nodes[1] return godot.edge.Edge(tail_node, head_node, _nodes=graph.nodes) else: return None
def add_node(self, info): """ Handles adding a Node to the graph. """ if not info.initialized: return graph = self._request_graph(info.ui.control) if graph is None: return IDs = [v.ID for v in graph.nodes] node = Node(ID=make_unique_name("node", IDs)) graph.nodes.append(node) retval = node.edit_traits(parent=info.ui.control, kind="livemodal") if not retval.result: graph.nodes.remove(node)