From 33c390988f1ef492406df85dc8c3435694bcee56 Mon Sep 17 00:00:00 2001 From: TianlunPC Date: Sun, 11 Jul 2021 20:47:53 -0700 Subject: [PATCH] SetLabel: add Node Context --- _pkg_KuFunc/mod_SetLabel.py | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/_pkg_KuFunc/mod_SetLabel.py b/_pkg_KuFunc/mod_SetLabel.py index d8b1474..3a6a494 100644 --- a/_pkg_KuFunc/mod_SetLabel.py +++ b/_pkg_KuFunc/mod_SetLabel.py @@ -38,6 +38,7 @@ def _version_(): version 2.0 - Add preset buttons for frames and knob values + - Add Node Context support version 1.0 - Basically working, when run(), prompt a frameless popup with line edit field @@ -114,12 +115,12 @@ def __init__(self): self.setWindowTitle("Set Label") self.setWindowFlags(QtCore.Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.Popup) - self.setDefault() + # self.setDefault() def onPressed(self): """change label with enter-key is pressed""" newLabel = self.lineInput.text() - for n in nuke.selectedNodes(): + for n in self.sel_nodes: n['label'].setValue(newLabel) self.close() @@ -128,24 +129,27 @@ def onPreset(self): _sender = self.sender() if _sender is self.btn_frame: - for n in nuke.selectedNodes(): + for n in self.sel_nodes: n['label'].setValue('x%s' % nuke.frame()) elif _sender is self.btn_knob: sel_knob = self.knoblist.currentText() - n = nuke.selectedNode() + n = self.sel_nodes[0] n['label'].setValue('[value %s]' % sel_knob) self.close() def setDefault(self): """get the existing label of selected nodes""" - sel_nodes = nuke.selectedNodes() - if sel_nodes: + context = get_dag() + with context: + self.sel_nodes = nuke.selectedNodes() + + if self.sel_nodes != []: self.lineInput.show() self.title.setText("Set Label") - self.lineInput.setText(sel_nodes[0]['label'].value()) + self.lineInput.setText(self.sel_nodes[0]['label'].value()) - n = sel_nodes[0] + n = self.sel_nodes[0] knobs = filterKnobs(n.knobs()) self.knoblist.clear() @@ -190,6 +194,20 @@ def filterKnobs(knobs): return sorted(ls_filtered) +def get_dag(): + """For DAG context when selecting nodes""" + + app = QtWidgets.QApplication + pos = QtGui.QCursor.pos() + widget = app.widgetAt(pos) + + #print dir(widget) + context = widget.parent().windowTitle().split('Node Graph')[0].strip() + print(context) + + return nuke.root() if context == '' else nuke.toNode(context) + +