Skip to content

Commit a64e209

Browse files
committed
fix bug node deleted signal.
1 parent ad3bed2 commit a64e209

File tree

4 files changed

+25
-9
lines changed

4 files changed

+25
-9
lines changed

NodeGraphQt/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
3131
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3232

33-
__version__ = '0.0.3'
33+
__version__ = '0.0.4'
3434
__status__ = 'Work in Progress'
3535
__license__ = 'MIT'
3636

NodeGraphQt/base/graph.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ class NodeGraph(QtCore.QObject):
2323
base node graph controller.
2424
"""
2525

26-
#: signal for when a node has been created in the node graph.
26+
#: signal triggered when a node has been created in the node graph.
2727
node_created = QtCore.Signal(NodeObject)
28-
#: signal for when a node is selected.
28+
#: signal triggered when nodes has been deleted in the node graph.
29+
nodes_deleted = QtCore.Signal(list)
30+
#: signal triggered when a node is selected.
2931
node_selected = QtCore.Signal(NodeObject)
30-
#: signal for when a node is double clicked.
32+
#: signal triggered when a node is double clicked.
3133
node_double_clicked = QtCore.Signal(NodeObject)
3234
#: signal for when a node has been connected.
3335
port_connected = QtCore.Signal(Port, Port)
@@ -527,6 +529,7 @@ def delete_node(self, node):
527529
"""
528530
assert isinstance(node, NodeObject), \
529531
'node must be a instance of a NodeObject.'
532+
self.nodes_deleted.emit([node.id])
530533
self._undo_stack.push(NodeRemovedCmd(self, node))
531534

532535
def delete_nodes(self, nodes):
@@ -536,8 +539,9 @@ def delete_nodes(self, nodes):
536539
Args:
537540
nodes (list[NodeGraphQt.BaseNode]): list of node instances.
538541
"""
542+
self.nodes_deleted.emit([n.id for n in nodes])
539543
self._undo_stack.beginMacro('delete nodes')
540-
[self.delete_node(n) for n in nodes]
544+
[self._undo_stack.push(NodeRemovedCmd(self, n)) for n in nodes]
541545
self._undo_stack.endMacro()
542546

543547
def all_nodes(self):

NodeGraphQt/widgets/properties_bin.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ def __init__(self, parent=None, node_graph=None):
9191
# wire up node graph.
9292
node_graph.add_properties_bin(self)
9393
node_graph.node_double_clicked.connect(self.add_node)
94+
node_graph.nodes_deleted.connect(self.__on_nodes_deleted)
9495
node_graph.property_changed.connect(self.__on_graph_property_changed)
9596

9697
def __repr__(self):
@@ -105,6 +106,15 @@ def __on_limit_changed(self, value):
105106
if rows > value:
106107
self._prop_list.removeRow(rows - 1)
107108

109+
def __on_nodes_deleted(self, nodes):
110+
"""
111+
Slot function when a node has been deleted.
112+
113+
Args:
114+
nodes (list[str]): list of node ids.
115+
"""
116+
[self.__on_prop_close(n) for n in nodes]
117+
108118
def __on_graph_property_changed(self, node, prop_name, prop_value):
109119
"""
110120
Slot function that updates the property bin from the node graph signal.
@@ -187,9 +197,10 @@ def remove_node(self, node):
187197
Remove node from the properties bin.
188198
189199
Args:
190-
node (NodeGraphQt.BaseNode): node object.
200+
node (str or NodeGraphQt.BaseNode): node id or node object.
191201
"""
192-
self.__on_prop_close(node.id)
202+
node_id = node if isinstance(node, str) else node.id
203+
self.__on_prop_close(node_id)
193204

194205
def clear_bin(self):
195206
"""
@@ -202,12 +213,13 @@ def prop_widget(self, node):
202213
Returns the node property widget.
203214
204215
Args:
205-
node (NodeGraphQt.NodeObject): node object.
216+
node (str or NodeGraphQt.NodeObject): node id or node object.
206217
207218
Returns:
208219
NodePropWidget: node property widget.
209220
"""
210-
itm_find = self._prop_list.findItems(node.id, QtCore.Qt.MatchExactly)
221+
node_id = node if isinstance(node, str) else node.id
222+
itm_find = self._prop_list.findItems(node_id, QtCore.Qt.MatchExactly)
211223
if itm_find:
212224
item = itm_find[0]
213225
return self._prop_list.cellWidget(item.row(), 0)

docs/_images/nodes_tree.png

139 KB
Loading

0 commit comments

Comments
 (0)