def getChildrenFromPath(path): sp = path.rsplit('/', 1) if not sp[0]: # rootOnly if sp[1]: nodes = [ contextCompleterClass(x, x[len(sp[1]):]) for x in roots if x.startswith(sp[1]) ] return nodes, None else: nodes = [contextCompleterClass(x, x) for x in roots] return nodes, None # add parms else: node = hou.node(sp[0][1:]) if node: nd = list(set([x.name() for x in node.children()])) nodes = [ contextCompleterClass(x, x[len(sp[1]):]) for x in sorted(nd) if x.startswith(sp[1]) ] ch = list( set([x.name() for x in node.parms()] + [x.name() for x in node.parmTuples()])) channels = [ contextCompleterClass(x, x[len(sp[1]):]) for x in sorted(ch) if x.startswith(sp[1]) ] return nodes, channels return None, None
def completer(line): # node types p1 = r"nuke\.createNode\(['\"](\w*)$" m = re.search(p1, line)# or re.search(p2, line) if m: name = m.group(1) l = len(name) if name: auto = [x for x in nuke_nodes if x.lower().startswith(name.lower())] else: auto = nuke_nodes return [contextCompleterClass(x, x[l:], True) for x in auto], None # exists nodes p3 = r"nuke\.toNode\(['\"](\w*)$" m = re.search(p3, line) if m: name = m.group(1) nuke.tprint(name) nodes = [x.name() for x in nuke.allNodes()] #recurseGroups=True if name: result = [x for x in nodes if x.lower().startswith(name.lower())] else: result = nodes l = len(name) return [contextCompleterClass(x, x[l:], True) for x in result], None return None, None
def completer(line, ns): # create node p = r"createNode\(['\"](\w*)$" m = re.search(p, line) if m: name = m.group(1) if name: auto = [x for x in nodes if x.lower().startswith(name.lower())] l = len(name) return [contextCompleterClass(x, x[l:], True) for x in auto], None # exists nodes p = r"PyNode\(['\"](\w*)$" m = re.search(p, line) if m: name = m.group(1) existsNodes = sorted(pm.cmds.ls()) l = len(name) if name: auto = [ x for x in existsNodes if x.lower().startswith(name.lower()) ] return [contextCompleterClass(x, x[l:], True) for x in auto], None else: return [contextCompleterClass(x, x, True) for x in existsNodes], None return None, None
def completer(line): # node types p1 = r"nuke\.createNode\(['\"](\w*)$" m = re.search(p1, line) # or re.search(p2, line) if m: name = m.group(1) l = len(name) if name: auto = [ x for x in nuke_nodes if x.lower().startswith(name.lower()) ] else: auto = nuke_nodes return [contextCompleterClass(x, x[l:], True) for x in auto], None # exists nodes p3 = r"nuke\.toNode\(['\"](\w*)$" m = re.search(p3, line) if m: name = m.group(1) nuke.tprint(name) nodes = [x.name() for x in nuke.allNodes()] #recurseGroups=True if name: result = [x for x in nodes if x.lower().startswith(name.lower())] else: result = nodes l = len(name) return [contextCompleterClass(x, x[l:], True) for x in result], None return None, None
def completer(line, ns): # node types p1 = r"nuke\.createNode\(\w*['\"](\w*)$" m = re.search(p1, line) if m: name = m.group(1) l = len(name) if name: auto = [x for x in nuke_nodes if x.lower().startswith(name.lower())] else: auto = nuke_nodes return [contextCompleterClass(x, x[l:], True) for x in auto], None # p2 = r"nuke\.allNodes\(.*(filter=)*['\"](\w*)$" funcs = ['allNodes', 'selectedNodes'] for f in funcs: p2 = r"nuke\."+f+"\(\w*(filter=)*['\"]{1}(\w*)$" m = re.search(p2, line)# or re.search(p2, line) if m: name = m.group(2) l = len(name) if name: auto = [x for x in nuke_nodes if x.lower().startswith(name.lower())] else: auto = nuke_nodes return [contextCompleterClass(x, x[l:], True) for x in auto], None # exists nodes p3 = r"nuke\.toNode\(\w*['\"](\w*)$" m = re.search(p3, line) if m: name = m.group(1) # nuke.tprint(name) nodes = [x.name() for x in nuke.allNodes()] + ['preferences', 'root'] #recurseGroups=True if name: result = [x for x in nodes if x.lower().startswith(name.lower())] else: result = nodes l = len(name) return [contextCompleterClass(x, x[l:], True) for x in result], None # node knobs p4 = r"(\w+)\[['\"]{1}(\w*)$" m = re.search(p4, line) if m: node = m.group(1) name = m.group(2) if node in ns: if hasattr(ns[node], 'allKnobs'): names = [x.name() for x in ns[node].allKnobs()] if name: result = [x for x in names if x.lower().startswith(name.lower())] else: result = names l = len(name) return [contextCompleterClass(x, x[l:], True) for x in result if x], None # nuke.tprint(ns[node]) return None, None
def completer(line, ns): # node types p1 = r"nuke\.createNode\(\w*['\"](\w*)$" m = re.search(p1, line) if m: name = m.group(1) l = len(name) if name: auto = [x for x in nuke_nodes if x.lower().startswith(name.lower())] else: auto = nuke_nodes return [contextCompleterClass(x, x[l:], True) for x in auto], None # p2 = r"nuke\.allNodes\(.*(filter=)*['\"](\w*)$" funcs = ['allNodes', 'selectedNodes'] for f in funcs: p2 = r"nuke\." + f + "\(\w*(filter=)*['\"]{1}(\w*)$" m = re.search(p2, line) # or re.search(p2, line) if m: name = m.group(2) l = len(name) if name: auto = [x for x in nuke_nodes if x.lower().startswith(name.lower())] else: auto = nuke_nodes return [contextCompleterClass(x, x[l:], True) for x in auto], None # exists nodes p3 = r"nuke\.toNode\(\w*['\"](\w*)$" m = re.search(p3, line) if m: name = m.group(1) # nuke.tprint(name) nodes = [x.name() for x in nuke.allNodes()] + ['preferences', 'root'] # recurseGroups=True if name: result = [x for x in nodes if x.lower().startswith(name.lower())] else: result = nodes l = len(name) return [contextCompleterClass(x, x[l:], True) for x in result], None # node knobs p4 = r"(\w+)\[['\"]{1}(\w*)$" m = re.search(p4, line) if m: node = m.group(1) name = m.group(2) if node in ns: if hasattr(ns[node], 'allKnobs'): names = [x.name() for x in ns[node].allKnobs()] if name: result = [x for x in names if x.lower().startswith(name.lower())] else: result = names l = len(name) return [contextCompleterClass(x, x[l:], True) for x in result if x], None # nuke.tprint(ns[node]) return None, None
def getChildrenFromPath(path): sp = path.rsplit("/", 1) if not sp[0]: # rootOnly if sp[1]: nodes = [contextCompleterClass(x, x[len(sp[1]) :]) for x in roots if x.startswith(sp[1])] return nodes, None else: nodes = [contextCompleterClass(x, x) for x in roots] return nodes, None # add parms else: node = hou.node(sp[0][1:]) if node: nd = list(set([x.name() for x in node.children()])) nodes = [contextCompleterClass(x, x[len(sp[1]) :]) for x in sorted(nd) if x.startswith(sp[1])] ch = list(set([x.name() for x in node.parms()] + [x.name() for x in node.parmTuples()])) channels = [contextCompleterClass(x, x[len(sp[1]) :]) for x in sorted(ch) if x.startswith(sp[1])] return nodes, channels return None, None
def completer(line): # create node p = r"createNode\(['\"](\w*)$" m = re.search(p, line) if m: name = m.group(1) if name: auto = [x for x in nodes if x.lower().startswith(name.lower())] l = len(name) return [contextCompleterClass(x, x[l:], True) for x in auto], None # exists nodes p = r"PyNode\(['\"](\w*)$" m = re.search(p, line) if m: name = m.group(1) existsNodes = sorted(pm.cmds.ls()) l = len(name) if name: auto = [x for x in existsNodes if x.lower().startswith(name.lower())] return [contextCompleterClass(x, x[l:], True) for x in auto], None else: return [contextCompleterClass(x, x, True) for x in existsNodes], None return None, None
def completer(line): # node types func = ["createNode", "createInputNode", "createOutputNode"] for f in func: p = r"\.%s\(['\"](\w*)$" % f m = re.search(p, line) if m: name = m.group(1) if name: auto = [x for x in nodes if x.lower().startswith(name.lower())] else: auto = nodes l = len(name) return [contextCompleterClass(x, x[l:], True) for x in auto], None # absolute path p = r"(?<=['\"]{1})(/[\w/]*)$" m = re.search(p, line) if m: name = m.group(0) auto, add = getChildrenFromPath(name) if auto or add: return auto, add return None, None
def completer(line, ns): # node types func = ['createNode', 'createInputNode', 'createOutputNode'] for f in func: p = r"\.%s\(.*['\"](\w*)$" % f m = re.search(p, line) if m: name = m.group(1) if name: auto = [x for x in nodes if x.lower().startswith(name.lower())] else: auto = nodes l = len(name) return [contextCompleterClass(x, x[l:], True) for x in auto], None # absolute path p = r"(?<=['\"]{1})(/[\w/]*)$" m = re.search(p, line) if m: name = m.group(0) auto, add = getChildrenFromPath(name) if auto or add: return auto, add return None, None