From 7da2466c746ba7483eafa40fee1fc439d79a97fc Mon Sep 17 00:00:00 2001 From: Yann Lanthony Date: Mon, 30 Oct 2017 10:30:18 +0100 Subject: [PATCH] [core] expose registerNodeType function --- meshroom/core/__init__.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/meshroom/core/__init__.py b/meshroom/core/__init__.py index b564c48e..5eebdc07 100644 --- a/meshroom/core/__init__.py +++ b/meshroom/core/__init__.py @@ -67,15 +67,25 @@ def loadNodes(folder, packageName): return nodeTypes +def registerNodeType(nodeType): + """ Register a Node Type based on a Node Description class. + + After registration, nodes of this type can be instantiated in a Graph. + """ + global nodesDesc + if nodeType.__name__ in nodesDesc: + raise RuntimeError("Node Desc {} is already registered.".format(nodeType.__name__)) + nodesDesc[nodeType.__name__] = nodeType + + def loadAllNodes(folder): global nodesDesc for f in os.listdir(folder): if os.path.isdir(os.path.join(folder, f)) and not f.startswith('__'): nodeTypes = loadNodes(folder, f) - - nodes = dict([(m.__name__, m) for m in nodeTypes]) - print('Plugins loaded: ', ', '.join(nodes.keys())) - nodesDesc.update(nodes) + for nodeType in nodeTypes: + registerNodeType(nodeType) + print('Plugins loaded: ', ', '.join([nodeType.__name__ for nodeType in nodeTypes])) # Load plugins