diff --git a/src/QuiltiX/mx_node.py b/src/QuiltiX/mx_node.py index 3e9ac2d..39dc5db 100644 --- a/src/QuiltiX/mx_node.py +++ b/src/QuiltiX/mx_node.py @@ -102,13 +102,13 @@ def get_mx_node_group_dict(mx_node_defs): mx_node_group_dict.setdefault(mx_node_group, {}) mx_node_group_key = mx_node_group_dict[mx_node_group] - mx_node_def_type = get_mx_node_def_type(mx_node_def) + mx_node_def_type = get_displaytype_from_mx_def(mx_node_def) mx_node_group_key.setdefault(mx_node_def_name, {})[mx_node_def_type] = mx_node_def return mx_node_group_dict -def get_mx_node_def_type(mx_node_def): +def get_displaytype_from_mx_def(mx_node_def): # return mx_node_def.getType() mx_node_def_string = mx_node_def.getNodeString() @@ -127,4 +127,5 @@ def get_mx_node_def_type(mx_node_def): else "ND_" ) mx_node_def_type = mx_node_def_full_name.replace(all_but_type_string, "") + return mx_node_def_type diff --git a/src/QuiltiX/qx_node.py b/src/QuiltiX/qx_node.py index 609a2b3..d820cc4 100644 --- a/src/QuiltiX/qx_node.py +++ b/src/QuiltiX/qx_node.py @@ -101,38 +101,26 @@ def __init__(self, node_type=None, node_graph=None): @classmethod def from_mx_node(cls, mx_node, node_graph=None): - mx_def_type = cls.get_mx_def_type_from_mx_node(cls, mx_node) + mx_def_type = cls.get_displaytype_from_mx_node(cls, mx_node) qx_node = cls(node_type=mx_def_type, node_graph=node_graph) return qx_node - def get_mx_def_type_from_mx_node(self, mx_node): - def match_inputs(mx_node): - mx_node_input_types = [o.getType() for o in mx_node.getActiveInputs()] - for mx_def in self.possible_mx_defs.values(): - mx_def_input_types = [o.getType() for o in mx_def.getActiveInputs()] - if mx_node_input_types == mx_def_input_types: - # TODO reverse lookup from dict instead - from QuiltiX.mx_node import get_mx_node_def_type - return get_mx_node_def_type(mx_def) - return None - - # TODO: is matching inputs enough? - if matched_def := match_inputs(mx_node): - return matched_def - elif (mx_node_type := mx_node.getType()) in self.possible_mx_defs: - return mx_node_type - # return self.possible_mx_defs[mx_node.getType()] - elif (mx_node_category := mx_node.getCategory()) in self.possible_mx_defs: - return mx_node_category - else: - # TODO: log error, definition can't be found - logger.warning( - f"Could not find matching definition for type '{mx_node.getType()}' of node '{mx_node.getName()}'." - ) - return None + def get_displaytype_from_mx_node(self, mx_node): + from QuiltiX.mx_node import get_displaytype_from_mx_def + mx_def = mx_node.getNodeDef() + if mx_def: + return get_displaytype_from_mx_def(mx_def) + + mx_category = mx_node.getCategory() + if mx_category in self.possible_mx_defs: + return mx_category + + logger.warning( + f"Could not find matching definition for type '{mx_node.getType()}' of node '{mx_node.getName()}'." + ) def update_from_mx_node(self, mx_node): - mx_def_type = self.get_mx_def_type_from_mx_node(mx_node) + mx_def_type = self.get_displaytype_from_mx_node(mx_node) if not mx_def_type: return diff --git a/src/QuiltiX/qx_nodegraph.py b/src/QuiltiX/qx_nodegraph.py index 344c0ec..aae1bdf 100644 --- a/src/QuiltiX/qx_nodegraph.py +++ b/src/QuiltiX/qx_nodegraph.py @@ -780,8 +780,12 @@ def load_graph_from_mx_doc(self, doc): had_pos = False qx_node_to_mx_node = {} + mx_nodes = doc.getNodes() + mx_graphs = doc.getNodeGraphs() + doc.importLibrary(self.mx_library_doc) + # Create Nodes - for cur_mx_node in doc.getNodes(): + for cur_mx_node in mx_nodes: if cur_mx_node.hasAttribute("xpos") and cur_mx_node.hasAttribute("ypos"): had_pos = True @@ -789,7 +793,7 @@ def load_graph_from_mx_doc(self, doc): qx_node_to_mx_node[cur_qx_node] = cur_mx_node - for mx_graph in doc.getNodeGraphs(): + for mx_graph in mx_graphs: ng_node = self.create_nodegraph_from_mx_nodegraph(mx_graph) for cur_mx_node in mx_graph.getNodes(): if cur_mx_node.hasAttribute("xpos") and cur_mx_node.hasAttribute("ypos"):