Skip to content

Commit cc21a53

Browse files
committed
Bug fix:
* Parse knob names that has dots in the name. Changes: * Add spinning wheel when loading nk (nkview) and add icon.
1 parent 77aceaf commit cc21a53

10 files changed

Lines changed: 63 additions & 14 deletions

File tree

docs/parser.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,11 @@ root = parseNk("../test_scenes/nested_group.nk")
1212
# iterate over all nodes.
1313
for node in root.allNodes():
1414
...
15-
# Important note.
16-
# `node.name()` Will not return the file path but rather the name of the node (Root).
17-
root.name()
18-
# out: "Root"
1915

20-
root.knob("name")
21-
# out: "/path/to/nested_group.nk"
16+
# Get knob values
17+
print(root.knob("first_frame"))
18+
# out: 1001
19+
2220

2321
```
2422

nkview/nuke_parser/nkview/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "0.1.0"
15+
__version__ = "0.1.1"

nkview/nuke_parser/nkview/graph_view.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from nuke_parser.nkview.gui_nodes import GroupNode, GuiNode
2020
from nuke_parser.nkview.navbar import NavigationBar
2121
from nuke_parser.nkview.qt import QtCore, QtGui, QtWidgets
22+
from nuke_parser.nkview.utils import qt_cursor
2223
from nuke_parser.parser import parseNk
2324

2425
INT_MIN = -21474836
@@ -182,6 +183,7 @@ def frameSelected(self) -> None:
182183

183184
self.fitInView(box, QtCore.Qt.KeepAspectRatio)
184185

186+
@qt_cursor
185187
def loadNk(self, file_path: str) -> None:
186188
"""Load nuke script in graph view.
187189

nkview/nuke_parser/nkview/gui_nodes.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ def paint(
349349
painter.drawText(
350350
name_rect,
351351
QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter,
352-
self.nk_node.name(),
352+
self.nk_node.nodeName(),
353353
)
354354

355355
font = QtGui.QFont()
@@ -506,7 +506,7 @@ def getScene(self) -> QtWidgets.QGraphicsScene:
506506

507507
def name(self) -> str:
508508
"""Get node name."""
509-
return self.nk_node.name()
509+
return self.nk_node.nodeName()
510510

511511

512512
GuiNode = Union[DagNode, BackdropNode, StickyNoteNode]
1.15 KB
Loading

nkview/nuke_parser/nkview/outliner.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def data(self, role: int = ...) -> Any:
4545
4646
"""
4747
if role == QtCore.Qt.ItemDataRole.DisplayRole:
48-
return self.node.name()
48+
return self.node.nodeName()
4949
elif role == NodePathRole:
5050
return self.node.path()
5151
elif role == NodeClassRole:

nkview/nuke_parser/nkview/utils.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@
1111
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
14+
from __future__ import annotations
15+
1416
import copy
1517
import json
1618
import logging
1719
import os
18-
from typing import List
20+
from typing import Any, Callable, List
21+
22+
from nuke_parser.nkview.qt import QtCore, QtWidgets
1923

2024
LOG = logging.getLogger(__name__)
2125

@@ -61,3 +65,34 @@ def recentlyOpened() -> List[str]:
6165
return []
6266
with open(_NKVIEW_SETTINGS, "r") as f:
6367
return copy.deepcopy(json.load(f).get("recently_opened", []))
68+
69+
70+
class WaitCursorContext(object):
71+
"""Qt working cursor context."""
72+
73+
def __enter__(self) -> WaitCursorContext:
74+
"""Start Working cursor."""
75+
QtWidgets.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor)
76+
return self
77+
78+
def __exit__(self, exc_type, exc_val, exc_tb):
79+
"""Restore cursor."""
80+
QtWidgets.QApplication.restoreOverrideCursor()
81+
82+
83+
def qt_cursor(func: Callable[[Any], Any]) -> Callable[[Any], Any]:
84+
"""Decorator to add Qt cursor wheel on function call.
85+
86+
Args:
87+
func: Function to decorate.
88+
89+
Returns:
90+
Wrapper function.
91+
92+
"""
93+
# pylint: disable=missing-return-doc
94+
def wrapper(*args, **kwargs) -> Any:
95+
with WaitCursorContext():
96+
return func(*args, **kwargs)
97+
98+
return wrapper

parser/nuke_parser/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414
__import__("pkg_resources").declare_namespace(__name__)
15-
__version__ = "0.1.0"
15+
__version__ = "0.1.1"

parser/nuke_parser/parser.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
_PUSH_RE = re.compile(r"push \$(?P<key>\w+)")
3333
_VERSION_RE = re.compile(r"version[ ]+(?P<version>[\d\.]+([ ]v\d)?)")
3434
_CLONE_RE = re.compile(r"clone \$(?P<key>\w+)\s\{")
35-
_NODE_KNOB_RE = re.compile(r"^\s*(?P<key>[\w_]+)[ ]+(?P<value>(:?\"|\w|\{|-|/).*)")
35+
_NODE_KNOB_RE = re.compile(r"^\s*(?P<key>[\w_\.]+)[ ]+(?P<value>(:?\"|\w|\{|-|/).*)")
3636

3737

3838
class Node:
@@ -94,6 +94,10 @@ def name(self) -> str:
9494
Node name.
9595
9696
"""
97+
return self._knobs.get("name", "")
98+
99+
def nodeName(self) -> str:
100+
"""Name of node. Used in gui."""
97101
return self._knobs.get("name", "") if self.Class() != "Root" else "Root"
98102

99103
def fullName(self) -> str:
@@ -257,7 +261,7 @@ def path(self) -> str:
257261
path = ""
258262
while node:
259263
# The name of Root is the file path. We don't want that.
260-
name = node.name() if node.Class() != "Root" else "Root"
264+
name = node.nodeName()
261265
path = "/" + name + path
262266
node = node.parent()
263267
return path + self._clone_suffix

test_scenes/nested_group.nk

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,4 +189,14 @@ Merge2 {
189189
name Merge1
190190
xpos -587
191191
ypos -62
192+
}
193+
ColorCorrect {
194+
inputs 0
195+
saturation 0.9
196+
gamma {1.58 1.18 1.18 1.18}
197+
gain {4.9 2.9 2 2.9}
198+
shadows.gamma 1.02
199+
midtones.gamma 1.44
200+
midtones.gain {0.8999999762 0.6299999952 0.25 1}
201+
name ColorCorrect20
192202
}

0 commit comments

Comments
 (0)