Skip to content

Commit 9359300

Browse files
committed
backdrop wrap undo block
1 parent fe6279f commit 9359300

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

NodeGraphQt/base/node.py

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
#!/usr/bin/python
2+
from collections import OrderedDict
3+
24
from .commands import PropertyChangedCmd
35
from .model import NodeModel
46
from .port import Port
@@ -1107,7 +1109,7 @@ def connected_input_nodes(self):
11071109
Returns:
11081110
dict: {<input_port>: <node_list>}
11091111
"""
1110-
nodes = {}
1112+
nodes = OrderedDict()
11111113
for p in self.input_ports():
11121114
nodes[p] = [cp.node() for cp in p.connected_ports()]
11131115
return nodes
@@ -1119,7 +1121,7 @@ def connected_output_nodes(self):
11191121
Returns:
11201122
dict: {<output_port>: <node_list>}
11211123
"""
1122-
nodes = {}
1124+
nodes = OrderedDict()
11231125
for p in self.output_ports():
11241126
nodes[p] = [cp.node() for cp in p.connected_ports()]
11251127
return nodes
@@ -1212,20 +1214,54 @@ def __init__(self):
12121214
self.create_property('backdrop_text', '',
12131215
widget_type=NODE_PROP_QTEXTEDIT, tab='Backdrop')
12141216

1217+
def on_backdrop_updated(self, update_prop, value=None):
1218+
"""
1219+
Slot triggered by the "on_backdrop_updated" signal from
1220+
the node graph.
1221+
1222+
Args:
1223+
update_prop (str): update property type.
1224+
value (object): update value (optional)
1225+
"""
1226+
if update_prop == 'sizer_mouse_release':
1227+
self.graph.begin_undo('resized "{}"'.format(self.name()))
1228+
self.set_property('width', value['width'])
1229+
self.set_property('height', value['height'])
1230+
self.set_pos(*value['pos'])
1231+
self.graph.end_undo()
1232+
elif update_prop == 'sizer_double_clicked':
1233+
self.graph.begin_undo('"{}" auto resize'.format(self.name()))
1234+
self.set_property('width', value['width'])
1235+
self.set_property('height', value['height'])
1236+
self.set_pos(*value['pos'])
1237+
self.graph.end_undo()
1238+
12151239
def auto_size(self):
12161240
"""
12171241
Auto resize the backdrop node to fit around the intersecting nodes.
12181242
"""
1219-
self.view.auto_resize()
1243+
self.graph.begin_undo('"{}" auto resize'.format(self.name()))
1244+
size = self.view.calc_backdrop_size()
1245+
self.set_property('width', size['width'])
1246+
self.set_property('height', size['height'])
1247+
self.set_pos(*size['pos'])
1248+
self.graph.end_undo()
12201249

12211250
def wrap_nodes(self, nodes):
12221251
"""
1223-
Wrap backdrop size to fit around specified nodes.
1252+
Set the backdrop size to fit around specified nodes.
12241253
12251254
Args:
12261255
nodes (list[NodeGraphQt.NodeObject]): list of nodes.
12271256
"""
1228-
self.view.auto_resize([n.view for n in nodes])
1257+
if not nodes:
1258+
return
1259+
self.graph.begin_undo('"{}" wrap nodes'.format(self.name()))
1260+
size = self.view.calc_backdrop_size()
1261+
self.set_property('width', size['width'])
1262+
self.set_property('height', size['height'])
1263+
self.set_pos(*size['pos'])
1264+
self.graph.end_undo()
12291265

12301266
def nodes(self):
12311267
"""

NodeGraphQt/widgets/viewer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class NodeViewer(QtWidgets.QGraphicsView):
3838
insert_node = QtCore.Signal(object, str, dict)
3939
need_show_tab_search = QtCore.Signal()
4040
node_name_changed = QtCore.Signal(str, str)
41+
node_backdrop_updated = QtCore.Signal(str, str, object)
4142

4243
# pass through signals that are translated into "NodeGraph()" signals.
4344
node_selected = QtCore.Signal(str)

0 commit comments

Comments
 (0)