@@ -22,7 +22,7 @@ def __init__(self, node, name, value):
2222 self .old_val = node .get_property (name )
2323 self .new_val = value
2424
25- def set_node_prop (self , name , value ):
25+ def set_node_property (self , name , value ):
2626 """
2727 updates the node view and model.
2828 """
@@ -47,21 +47,60 @@ def set_node_prop(self, name, value):
4747 name = 'xy_pos'
4848 setattr (view , name , value )
4949
50+ # emit property changed signal.
51+ graph = self .node .graph
52+ graph .property_changed .emit (self .node , self .name , value )
53+
5054 def undo (self ):
5155 if self .old_val != self .new_val :
52- self .set_node_prop (self .name , self .old_val )
53-
54- # emit property changed signal.
55- graph = self .node .graph
56- graph .property_changed .emit (self .node , self .name , self .old_val )
56+ self .set_node_property (self .name , self .old_val )
5757
5858 def redo (self ):
5959 if self .old_val != self .new_val :
60- self .set_node_prop (self .name , self .new_val )
60+ self .set_node_property (self .name , self .new_val )
6161
62- # emit property changed signal.
63- graph = self .node .graph
64- graph .property_changed .emit (self .node , self .name , self .new_val )
62+
63+ class NodeVisibleCmd (QtWidgets .QUndoCommand ):
64+ """
65+ Node visibility changed command.
66+
67+ Args:
68+ node (NodeGraphQt.NodeObject): node.
69+ visible (bool): node visible value.
70+ """
71+
72+ def __init__ (self , node , visible ):
73+ QtWidgets .QUndoCommand .__init__ (self )
74+ self .node = node
75+ self .visible = visible
76+ self .selected = self .node .selected ()
77+
78+ def set_node_visible (self , visible ):
79+ model = self .node .model
80+ model .set_property ('visible' , visible )
81+
82+ node_view = self .node .view
83+ node_view .setVisible (visible )
84+
85+ # redraw the connected pipes in the scene.
86+ ports = node_view .inputs + node_view .outputs
87+ for port in ports :
88+ for pipe in port .connected_pipes :
89+ pipe .update ()
90+
91+ # restore the node selected state.
92+ if self .selected != node_view .isSelected ():
93+ node_view .setSelected (model .selected )
94+
95+ # emit property changed signal.
96+ graph = self .node .graph
97+ graph .property_changed .emit (self .node , 'visible' , visible )
98+
99+ def undo (self ):
100+ self .set_node_visible (not self .visible )
101+
102+ def redo (self ):
103+ self .set_node_visible (self .visible )
65104
66105
67106class NodeMovedCmd (QtWidgets .QUndoCommand ):
@@ -347,10 +386,14 @@ class PortVisibleCmd(QtWidgets.QUndoCommand):
347386 port (NodeGraphQt.Port): node port.
348387 """
349388
350- def __init__ (self , port ):
389+ def __init__ (self , port , visible ):
351390 QtWidgets .QUndoCommand .__init__ (self )
352391 self .port = port
353- self .visible = port .visible ()
392+ self .visible = visible
393+ if visible :
394+ self .setText ('show port {}' .format (self .port .name ()))
395+ else :
396+ self .setText ('hide port {}' .format (self .port .name ()))
354397
355398 def set_visible (self , visible ):
356399 self .port .model .visible = visible
@@ -363,7 +406,14 @@ def set_visible(self, visible):
363406 text_item = node_view .get_output_text_item (self .port .view )
364407 if text_item :
365408 text_item .setVisible (visible )
366- node_view .post_init ()
409+
410+ node_view .draw_node ()
411+
412+ # redraw the connected pipes in the scene.
413+ ports = node_view .inputs + node_view .outputs
414+ for port in node_view .inputs + node_view .outputs :
415+ for pipe in port .connected_pipes :
416+ pipe .update ()
367417
368418 def undo (self ):
369419 self .set_visible (not self .visible )
0 commit comments