Created
February 20, 2020 20:13
-
-
Save santosh/12c01ed273a7a335fbfa3a6bf1622690 to your computer and use it in GitHub Desktop.
disable nuke callbacks for debugging
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CALLBACKS = ( | |
'beforeRenders', | |
'beforeFrameRenders', | |
'afterRenders', | |
'afterFrameRenders', | |
'updateUIs', | |
'autolabels', | |
'filenameFilters', | |
'onCreates', | |
'onDestroys', | |
'onScriptCloses', | |
'onScriptLoads', | |
'onScriptSaves', | |
'onUserCreates', | |
'knobChangeds', | |
) | |
class CallbackSwitch(object): | |
"""Temporarily disable callbacks to avoid them getting called recursively.""" | |
__instance = None | |
def __new__(self): | |
"""Make object a singleton.""" | |
if self.__instance is None: | |
self.__instance = super(CallbackSwitch, self).__new__(self) | |
self.__instance.initialized = False | |
return self.__instance | |
def __init__(self): | |
"""Temporarily disable callbacks to avoid them getting called recursively.""" | |
if self.initialized: | |
return | |
self.initialized = True | |
self.cleared = False | |
self.knob_callbacks = {} | |
self.callback_data = {} | |
self.callbacks = [] | |
def clear(self, callbacks=None): | |
"""Clear callbacks. | |
Args: | |
callbacks (list of str): list of callbacks to clear. | |
Clears all if not specified.""" | |
self.callbacks = callbacks or CALLBACKS | |
# Make a backup and clear registered callbacks | |
for callback in self.callbacks: | |
self.callback_data[callback] = getattr(nuke.callbacks, callback) | |
setattr(nuke.callbacks, callback, {}) | |
self.cleared = True | |
def restore(self): | |
"""Restore callbacks. Opposite of CallbackSwitch.clear()""" | |
if not self.cleared: | |
return | |
for callback in self.callbacks: | |
setattr(nuke.callbacks, callback, self.callabck_data[callback]) | |
self.cleared |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment