@@ -89,6 +89,8 @@ def __init__(self, parent=None):
8989 layout .setAlignment (QtCore .Qt .AlignTop )
9090 layout .addLayout (self .__layout )
9191
92+ self .__property_widgets = {}
93+
9294 def __repr__ (self ):
9395 return '<{} object at {}>' .format (
9496 self .__class__ .__name__ , hex (id (self ))
@@ -124,6 +126,7 @@ def add_widget(self, name, widget, value, label=None, tooltip=None):
124126
125127 self .__layout .addWidget (label_widget , row , 0 , label_flags )
126128 self .__layout .addWidget (widget , row , 1 )
129+ self .__property_widgets [name ] = widget
127130
128131 def get_widget (self , name ):
129132 """
@@ -135,10 +138,7 @@ def get_widget(self, name):
135138 Returns:
136139 QtWidgets.QWidget: property widget.
137140 """
138- for row in range (self .__layout .rowCount ()):
139- item = self .__layout .itemAtPosition (row , 1 )
140- if item and name == item .widget ().toolTip ():
141- return item .widget ()
141+ return self .__property_widgets .get (name )
142142
143143 def get_all_widgets (self ):
144144 """
@@ -147,14 +147,7 @@ def get_all_widgets(self):
147147 Returns:
148148 dict: {name: widget}
149149 """
150- widgets = {}
151- for row in range (self .__layout .rowCount ()):
152- item = self .__layout .itemAtPosition (row , 1 )
153- if not item :
154- continue
155- name = item .widget ().toolTip ()
156- widgets [name ] = item .widget ()
157- return widgets
150+ return self .__property_widgets
158151
159152
160153class _PortConnectionsContainer (QtWidgets .QWidget ):
@@ -558,11 +551,24 @@ def get_widget(self, name):
558551 """
559552 if name == 'name' :
560553 return self .name_wgt
561- for tab_name , prop_win in self .__tab_windows .items ():
554+ for prop_win in self .__tab_windows .values ():
562555 widget = prop_win .get_widget (name )
563556 if widget :
564557 return widget
565558
559+ def get_all_property_widgets (self ):
560+ """
561+ get all the node property widgets.
562+
563+ Returns:
564+ list[BaseProperty]: property widgets.
565+ """
566+ widgets = [self .name_wgt ]
567+ for prop_win in self .__tab_windows .values ():
568+ for widget in prop_win .get_all_widgets ().values ():
569+ widgets .append (widget )
570+ return widgets
571+
566572 def get_port_connection_widget (self ):
567573 """
568574 Returns the ports connections container widget.
0 commit comments