@@ -424,12 +424,13 @@ def create_node(self, node_type, name=None, selected=True, color=None, pos=None)
424424 return node
425425 raise Exception ('\n \n >> Cannot find node:\t "{}"\n ' .format (node_type ))
426426
427- def add_node (self , node ):
427+ def add_node (self , node , pos = None ):
428428 """
429429 Add a node into the node graph.
430430
431431 Args:
432432 node (NodeGraphQt.Node): node object.
433+ pos (list[float]): node x,y position. (optional)
433434 """
434435 assert isinstance (node , NodeObject ), 'node must be a Node instance.'
435436
@@ -449,7 +450,7 @@ def add_node(self, node):
449450 node .model ._graph_model = self .model
450451 node .model .name = node .NODE_NAME
451452 node .update ()
452- self ._undo_stack .push (NodeAddedCmd (self , node ))
453+ self ._undo_stack .push (NodeAddedCmd (self , node , pos ))
453454
454455 def delete_node (self , node ):
455456 """
@@ -651,27 +652,17 @@ def _deserialize(self, data, relative_pos=False, pos=None):
651652 NodeCls = self ._node_factory .create_node_instance (identifier )
652653 if NodeCls :
653654 node = NodeCls ()
654- node ._graph = self
655-
656- name = self .get_unique_name (n_data .get ('name' , node .NODE_NAME ))
657- n_data ['name' ] = name
658-
655+ node .NODE_NAME = n_data .get ('name' , node .NODE_NAME )
659656 # set properties.
660- for prop , val in node .model .properties .items ():
657+ for prop in node .model .properties .keys ():
661658 if prop in n_data .keys ():
662- setattr (node .model , prop , n_data [prop ])
663-
659+ node .model .set_property (prop , n_data [prop ])
664660 # set custom properties.
665661 for prop , val in n_data .get ('custom' , {}).items ():
666- if prop in node .model .custom_properties .keys ():
667- node .model .custom_properties [prop ] = val
668-
669- node .update ()
662+ node .model .set_property (prop , val )
670663
671- self ._undo_stack .push (
672- NodeAddedCmd (self , node , n_data .get ('pos' ))
673- )
674664 nodes [n_id ] = node
665+ self .add_node (node , n_data .get ('pos' ))
675666
676667 # build the connections.
677668 for connection in data .get ('connections' , []):
@@ -693,9 +684,10 @@ def _deserialize(self, data, relative_pos=False, pos=None):
693684 node_objs = list (nodes .values ())
694685 if relative_pos :
695686 self ._viewer .move_nodes ([n .view for n in node_objs ])
696- [setattr (n .model , 'pos' , n .view .pos ) for n in node_objs ]
687+ [setattr (n .model , 'pos' , n .view .xy_pos ) for n in node_objs ]
697688 elif pos :
698689 self ._viewer .move_nodes ([n .view for n in node_objs ], pos = pos )
690+ [setattr (n .model , 'pos' , n .view .xy_pos ) for n in node_objs ]
699691
700692 return node_objs
701693
@@ -770,14 +762,14 @@ def paste_nodes(self):
770762 Pastes nodes copied from the clipboard.
771763 """
772764 clipboard = QtWidgets .QApplication .clipboard ()
773- cb_string = clipboard .text ()
774- if not cb_string :
765+ cb_text = clipboard .text ()
766+ if not cb_text :
775767 return
776768
777769 self ._undo_stack .beginMacro ('pasted nodes' )
778- serial_data = json .loads (cb_string )
770+ serial_data = json .loads (cb_text )
779771 self .clear_selection ()
780- nodes = self ._deserialize (serial_data , True )
772+ nodes = self ._deserialize (serial_data , relative_pos = True )
781773 [n .set_selected (True ) for n in nodes ]
782774 self ._undo_stack .endMacro ()
783775
0 commit comments