@@ -16,14 +16,15 @@ def paint(self, painter, option, index):
1616 painter .save ()
1717 painter .setRenderHint (QtGui .QPainter .Antialiasing , False )
1818 painter .setPen (QtCore .Qt .NoPen )
19- painter .setBrush (option .palette .midlight ())
19+
20+ painter .setBrush (QtCore .Qt .NoBrush )
2021 painter .drawRect (option .rect )
2122
2223 if option .state & QtWidgets .QStyle .State_Selected :
2324 bdr_clr = option .palette .highlight ().color ()
2425 painter .setPen (QtGui .QPen (bdr_clr , 1.5 ))
2526 else :
26- bdr_clr = option . palette . alternateBase (). color ( )
27+ bdr_clr = QtGui . QColor ( 100 , 100 , 100 )
2728 painter .setPen (QtGui .QPen (bdr_clr , 1 ))
2829
2930 painter .setBrush (QtCore .Qt .NoBrush )
@@ -69,19 +70,27 @@ def __init__(self, parent=None, node_graph=None):
6970 self ._limit .setToolTip ('Set display nodes limit.' )
7071 self ._limit .setMaximum (10 )
7172 self ._limit .setMinimum (0 )
72- self ._limit .setValue (5 )
73+ self ._limit .setValue (2 )
7374 self ._limit .valueChanged .connect (self .__on_limit_changed )
74- self .resize (400 , 400 )
75+ self .resize (450 , 400 )
7576
7677 self ._block_signal = False
7778
79+ self ._lock = False
80+ self .btn_lock = QtWidgets .QPushButton ('lock' )
81+ self .btn_lock .setToolTip (
82+ 'Lock the properties bin prevent nodes from being loaded.' )
83+ self .btn_lock .clicked .connect (self .lock_bin )
84+
7885 btn_clr = QtWidgets .QPushButton ('clear' )
7986 btn_clr .setToolTip ('Clear the properties bin.' )
8087 btn_clr .clicked .connect (self .clear_bin )
8188
8289 top_layout = QtWidgets .QHBoxLayout ()
90+ top_layout .setSpacing (2 )
8391 top_layout .addWidget (self ._limit )
8492 top_layout .addStretch (1 )
93+ top_layout .addWidget (self .btn_lock )
8594 top_layout .addWidget (btn_clr )
8695
8796 layout = QtWidgets .QVBoxLayout (self )
@@ -129,7 +138,8 @@ def __on_graph_property_changed(self, node, prop_name, prop_value):
129138 return
130139
131140 property_window = properties_widget .get_widget (prop_name )
132- if prop_value != property_window .get_value ():
141+
142+ if property_window and prop_value != property_window .get_value ():
133143 self ._block_signal = True
134144 property_window .set_value (prop_value )
135145 self ._block_signal = False
@@ -173,13 +183,14 @@ def add_node(self, node):
173183 """
174184 if self .limit () == 0 :
175185 return
176-
177- rows = self ._prop_list .rowCount ()
178- if rows >= self .limit ():
179- self ._prop_list .removeRow (rows - 1 )
186+ if self ._lock :
187+ return
180188
181189 itm_find = self ._prop_list .findItems (node .id , QtCore .Qt .MatchExactly )
190+
182191 if itm_find :
192+ if itm_find [0 ].row () == 0 :
193+ return
183194 self ._prop_list .removeRow (itm_find [0 ].row ())
184195
185196 self ._prop_list .insertRow (0 )
@@ -192,6 +203,10 @@ def add_node(self, node):
192203 self ._prop_list .setItem (0 , 0 , item )
193204 self ._prop_list .selectRow (0 )
194205
206+ rows = self ._prop_list .rowCount ()
207+ if rows > self .limit ():
208+ self ._prop_list .removeRow (rows - 1 )
209+
195210 def remove_node (self , node ):
196211 """
197212 Remove node from the properties bin.
@@ -202,6 +217,16 @@ def remove_node(self, node):
202217 node_id = node if isinstance (node , str ) else node .id
203218 self .__on_prop_close (node_id )
204219
220+ def lock_bin (self ):
221+ """
222+ Lock/UnLock the properties bin.
223+ """
224+ self ._lock = not self ._lock
225+ if self ._lock :
226+ self .btn_lock .setText ('UnLock' )
227+ else :
228+ self .btn_lock .setText ('Lock' )
229+
205230 def clear_bin (self ):
206231 """
207232 Clear the properties bin.
@@ -266,7 +291,7 @@ def prop_changed(node_id, prop_name, prop_value):
266291 graph = NodeGraph ()
267292 graph .register_node (TestNode )
268293
269- prop_bin = PropertiesBinWidget ()
294+ prop_bin = PropertiesBinWidget (node_graph = graph )
270295 prop_bin .property_changed .connect (prop_changed )
271296
272297 node = graph .create_node ('nodeGraphQt.nodes.TestNode' )
0 commit comments