Skip to content

Commit 4e02569

Browse files
committed
Merge branch 'master' of https://github.com/jchanvfx/NodeGraphQt
2 parents 08e3688 + 70bd396 commit 4e02569

29 files changed

+3060
-266
lines changed

NodeGraphQt/__init__.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,23 @@
3434
__status__ = 'Work in Progress'
3535
__license__ = 'MIT'
3636

37-
3837
__author__ = 'Johnny Chan'
3938
__email__ = 'http://chantasticvfx.com/contact'
4039

41-
4240
__module_name__ = 'NodeGraphQt'
4341
__url__ = 'https://github.com/jchanvfx/NodeGraphQt'
4442

4543

44+
try:
45+
from Qt import QtWidgets, QtGui, QtCore, QtCompat
46+
from Qt import __version__ as qtpy_ver
47+
except ImportError as ie:
48+
print('Cannot import "Qt.py" shim falling back on "NodeGraphQt.vendor.Qt"')
49+
from .vendor.Qt import __version__ as qtpy_ver
50+
from .vendor.Qt import QtWidgets, QtGui, QtCore, QtCompat
51+
52+
print('Qt.py version: {}'.format(qtpy_ver))
53+
4654
from .base.actions import setup_context_menu
4755
from .base.graph import NodeGraph
4856
from .base.node import NodeObject, Node, Backdrop

NodeGraphQt/base/actions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/python
22
from distutils.version import LooseVersion
33

4-
from PySide2 import QtGui, QtCore
4+
from NodeGraphQt import QtGui, QtCore
55

66

77
def setup_context_menu(graph):

NodeGraphQt/base/commands.py

Lines changed: 45 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#!/usr/bin/python
2-
from PySide2.QtWidgets import QUndoCommand
2+
from NodeGraphQt import QtWidgets
33

44
from NodeGraphQt.constants import IN_PORT, OUT_PORT
55

66

7-
class PropertyChangedCmd(QUndoCommand):
7+
class PropertyChangedCmd(QtWidgets.QUndoCommand):
88
"""
99
Node property changed command.
1010
@@ -15,29 +15,33 @@ class PropertyChangedCmd(QUndoCommand):
1515
"""
1616

1717
def __init__(self, node, name, value):
18-
QUndoCommand.__init__(self)
19-
self.setText('set {} ({})'.format(name, node.name()))
18+
QtWidgets.QUndoCommand.__init__(self)
19+
if name == 'name':
20+
self.setText('renamed "{}" to "{}"'.format(node.name(), value))
21+
else:
22+
self.setText('property "{}:{}"'.format(node.name(), name))
2023
self.node = node
2124
self.name = name
2225
self.old_val = node.get_property(name)
2326
self.new_val = value
2427

2528
def set_node_prop(self, name, value):
29+
"""
30+
updates the node view and model.
31+
"""
2632
# set model data.
2733
model = self.node.model
28-
if name in model.properties.keys():
29-
setattr(model, name, value)
30-
elif name in model.custom_properties.keys():
31-
model.custom_properties[name] = value
32-
else:
33-
raise KeyError('No property "{}"'.format(name))
34+
model.set_property(name, value)
3435

3536
# set view data.
3637
view = self.node.view
3738

3839
# view widgets.
3940
if hasattr(view, 'widgets') and name in view.widgets.keys():
40-
view.widgets[name].value = value
41+
# check if previous value is identical to current value,
42+
# prevent signals from causing a infinite loop.
43+
if view.widgets[name].value != value:
44+
view.widgets[name].value = value
4145

4246
# view properties.
4347
if name in view.properties.keys():
@@ -46,16 +50,32 @@ def set_node_prop(self, name, value):
4650
name = 'xy_pos'
4751
setattr(view, name, value)
4852

53+
def update_prop_bin(self, name, value):
54+
"""
55+
updates the property bin widget.
56+
"""
57+
graph = self.node.graph
58+
prop_bin = graph.properties_bin()
59+
properties_wgt = prop_bin.prop_widget(self.node)
60+
if properties_wgt:
61+
prop_wgt = properties_wgt.get_widget(name)
62+
# check if previous value is identical to current value,
63+
# prevent signals from causing a infinite loop.
64+
if prop_wgt.get_value() != value:
65+
prop_wgt.set_value(value)
66+
4967
def undo(self):
5068
if self.old_val != self.new_val:
5169
self.set_node_prop(self.name, self.old_val)
70+
self.update_prop_bin(self.name, self.old_val)
5271

5372
def redo(self):
5473
if self.old_val != self.new_val:
5574
self.set_node_prop(self.name, self.new_val)
75+
self.update_prop_bin(self.name, self.new_val)
5676

5777

58-
class NodeMovedCmd(QUndoCommand):
78+
class NodeMovedCmd(QtWidgets.QUndoCommand):
5979
"""
6080
Node moved command.
6181
@@ -66,7 +86,7 @@ class NodeMovedCmd(QUndoCommand):
6686
"""
6787

6888
def __init__(self, node, pos, prev_pos):
69-
QUndoCommand.__init__(self)
89+
QtWidgets.QUndoCommand.__init__(self)
7090
self.node = node
7191
self.pos = pos
7292
self.prev_pos = prev_pos
@@ -82,7 +102,7 @@ def redo(self):
82102
self.node.model.pos = self.pos
83103

84104

85-
class NodeAddedCmd(QUndoCommand):
105+
class NodeAddedCmd(QtWidgets.QUndoCommand):
86106
"""
87107
Node added command.
88108
@@ -93,7 +113,7 @@ class NodeAddedCmd(QUndoCommand):
93113
"""
94114

95115
def __init__(self, graph, node, pos=None):
96-
QUndoCommand.__init__(self)
116+
QtWidgets.QUndoCommand.__init__(self)
97117
self.setText('added node')
98118
self.graph = graph
99119
self.node = node
@@ -109,7 +129,7 @@ def redo(self):
109129
self.graph.viewer().add_node(self.node.view, self.pos)
110130

111131

112-
class NodeRemovedCmd(QUndoCommand):
132+
class NodeRemovedCmd(QtWidgets.QUndoCommand):
113133
"""
114134
Node deleted command.
115135
@@ -119,7 +139,7 @@ class NodeRemovedCmd(QUndoCommand):
119139
"""
120140

121141
def __init__(self, graph, node):
122-
QUndoCommand.__init__(self)
142+
QtWidgets.QUndoCommand.__init__(self)
123143
self.setText('deleted node')
124144
self.graph = graph
125145
self.node = node
@@ -149,7 +169,7 @@ def redo(self):
149169
self.node.view.delete()
150170

151171

152-
class PortConnectedCmd(QUndoCommand):
172+
class PortConnectedCmd(QtWidgets.QUndoCommand):
153173
"""
154174
Port connected command.
155175
@@ -159,7 +179,7 @@ class PortConnectedCmd(QUndoCommand):
159179
"""
160180

161181
def __init__(self, src_port, trg_port):
162-
QUndoCommand.__init__(self)
182+
QtWidgets.QUndoCommand.__init__(self)
163183
self.source = src_port
164184
self.target = trg_port
165185

@@ -195,7 +215,7 @@ def redo(self):
195215
self.source.view.connect_to(self.target.view)
196216

197217

198-
class PortDisconnectedCmd(QUndoCommand):
218+
class PortDisconnectedCmd(QtWidgets.QUndoCommand):
199219
"""
200220
Port disconnected command.
201221
@@ -205,7 +225,7 @@ class PortDisconnectedCmd(QUndoCommand):
205225
"""
206226

207227
def __init__(self, src_port, trg_port):
208-
QUndoCommand.__init__(self)
228+
QtWidgets.QUndoCommand.__init__(self)
209229
self.source = src_port
210230
self.target = trg_port
211231

@@ -241,7 +261,7 @@ def redo(self):
241261
self.source.view.disconnect_from(self.target.view)
242262

243263

244-
class PortVisibleCmd(QUndoCommand):
264+
class PortVisibleCmd(QtWidgets.QUndoCommand):
245265
"""
246266
Port visibility command.
247267
@@ -250,7 +270,7 @@ class PortVisibleCmd(QUndoCommand):
250270
"""
251271

252272
def __init__(self, port):
253-
QUndoCommand.__init__(self)
273+
QtWidgets.QUndoCommand.__init__(self)
254274
self.port = port
255275
self.visible = port.visible()
256276

@@ -259,9 +279,9 @@ def set_visible(self, visible):
259279
self.port.view.setVisible(visible)
260280
node_view = self.port.node().view
261281
text_item = None
262-
if self.port.type() == IN_PORT:
282+
if self.port.type_() == IN_PORT:
263283
text_item = node_view.get_input_text_item(self.port.view)
264-
elif self.port.type() == OUT_PORT:
284+
elif self.port.type_() == OUT_PORT:
265285
text_item = node_view.get_output_text_item(self.port.view)
266286
if text_item:
267287
text_item.setVisible(visible)

NodeGraphQt/base/vendor.py renamed to NodeGraphQt/base/factory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/python
22

33

4-
class NodeVendor(object):
4+
class NodeFactory(object):
55
"""
66
Node factory that stores all the node types.
77
"""
@@ -54,7 +54,7 @@ def register_node(self, node, alias=None):
5454
return
5555

5656
name = node.NODE_NAME
57-
node_type = node.type
57+
node_type = node.type_
5858

5959
if self._nodes.get(node_type):
6060
raise AssertionError(

0 commit comments

Comments
 (0)