11#!/usr/bin/python
2+ from collections import OrderedDict
3+
24from .commands import PropertyChangedCmd
35from .model import NodeModel
46from .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 """
0 commit comments