Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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