""" Script DAT Callbacks me - this DAT scriptOp - the OP which is cooking """ def onSetupParameters(scriptOp: scriptDAT): """ Called to setup custom parameters for the Script DAT. """ page = scriptOp.appendCustomPage('Custom') page.appendFloat('Valuea', label='Value A') page.appendFloat('Valueb', label='Value B') return def onPulse(par: Par): """ Called when a custom pulse parameter is pushed. """ return def onCook(scriptOp: scriptDAT): """ Called when the Script DAT needs to cook. """ scriptOp.clear() # Safely get the selection ID from the operator 'SelectId' # We convert to int immediately to use in the loop comparison target_op = op('SelectId') select_id=target_op['id'] # try: # select_id = int(target_op['id', 0].val) if target_op else -1 # except (ValueError, TypeError, AttributeError): # select_id = -1 # Check if there is an input connected to the Script DAT if len(scriptOp.inputs) > 0: input_dat = scriptOp.inputs[0] for i in range(input_dat.numRows): # Access the string value of the cell in the second column (index 1) raw_text = input_dat[i, 1].val trimmed_text = raw_text.replace(" ", "") # If this row matches our selection ID (offset by 1 as per original logic) if i == select_id + 1 and select_id!= -1: display_text = f"({trimmed_text})" else: display_text = trimmed_text scriptOp.appendRow([input_dat[i, 0].val, display_text, select_id]) return def onGetCookLevel(scriptOp: scriptDAT): """ CookLevel.AUTOMATIC - inputs changed and output being used. CookLevel.ON_CHANGE - inputs changed, output used or not. CookLevel.WHEN_USED - every frame when output is being used CookLevel.ALWAYS - every frame """ return CookLevel.AUTOMATIC