Source code for nukescripts.searchreplace

# Copyright (c) 2009 The Foundry Visionmongers Ltd.  All Rights Reserved.

import nuke_internal as nuke
import re

def __NodeHasKnobWithName(node, name):
    try:
        node[name]
    except NameError:
        return False
    else:
        return True

def __NodeHasFileKnob(node):
    return __NodeHasKnobWithName(node, 'file')

def __NodeHasProxyKnob(node):
    return __NodeHasKnobWithName(node, 'proxy')

def __ReplaceKnobValue(searchstr, replacestr, knob):
    v = knob.value()
    if v:
        repl = re.sub(searchstr, replacestr, v)
        knob.setValue(repl)

[docs] def search_replace(): """ Search/Replace in Reads and Writes. """ fileKnobNodes = [i for i in nuke.selectedNodes(recursive=True) if __NodeHasFileKnob(i)] proxyKnobNodes = [i for i in nuke.selectedNodes(recursive=True) if __NodeHasProxyKnob(i)] if not fileKnobNodes and not proxyKnobNodes: raise ValueError("No nodes selected") p = nuke.Panel("Search/Replace in Reads and Writes") p.addSingleLineInput("Search for:", "rgbea") p.addSingleLineInput("Replace with:", "rgbea") success = p.show() if success == 1: searchstr = p.value("Search for:") replacestr = p.value("Replace with:") for i in fileKnobNodes: __ReplaceKnobValue(searchstr, replacestr, i['file']) for i in proxyKnobNodes: __ReplaceKnobValue(searchstr, replacestr, i['proxy'])