@@ -175,8 +175,19 @@ class PropLineEdit(QtWidgets.QLineEdit):
175175
176176 def __init__ (self , parent = None ):
177177 super (PropLineEdit , self ).__init__ (parent )
178+ self .__prev_text = ''
178179 self .returnPressed .connect (self ._on_return_pressed )
179180
181+ def focusInEvent (self , event ):
182+ super (PropLineEdit , self ).focusInEvent (event )
183+ self .__prev_text = self .text ()
184+
185+ def focusOutEvent (self , event ):
186+ super (PropLineEdit , self ).focusOutEvent (event )
187+ if self .__prev_text != self .text ():
188+ self .value_changed .emit (self .toolTip (), self .text ())
189+ self .__prev_text = ''
190+
180191 def _on_return_pressed (self ):
181192 self .value_changed .emit (self .toolTip (), self .get_value ())
182193
@@ -189,6 +200,36 @@ def set_value(self, value):
189200 self .value_changed .emit (self .toolTip (), value )
190201
191202
203+ class PropTextEdit (QtWidgets .QTextEdit ):
204+
205+ value_changed = QtCore .Signal (str , object )
206+
207+ def __init__ (self , parent = None ):
208+ super (PropTextEdit , self ).__init__ (parent )
209+ self .__prev_text = ''
210+
211+ def focusInEvent (self , event ):
212+ super (PropTextEdit , self ).focusInEvent (event )
213+ self .__prev_text = self .toPlainText ()
214+
215+ def focusOutEvent (self , event ):
216+ super (PropTextEdit , self ).focusOutEvent (event )
217+ if self .__prev_text != self .toPlainText ():
218+ self .value_changed .emit (self .toolTip (), self .toPlainText ())
219+ self .__prev_text = ''
220+
221+ def _on_return_pressed (self ):
222+ self .value_changed .emit (self .toolTip (), self .get_value ())
223+
224+ def get_value (self ):
225+ return self .toPlainText ()
226+
227+ def set_value (self , value ):
228+ if value != self .get_value ():
229+ self .setPlainText (value )
230+ self .value_changed .emit (self .toolTip (), value )
231+
232+
192233class PropComboBox (QtWidgets .QComboBox ):
193234
194235 value_changed = QtCore .Signal (str , object )
@@ -261,7 +302,7 @@ def set_value(self, value):
261302WIDGET_MAP = {
262303 NODE_PROP_QLABEL : PropLabel ,
263304 NODE_PROP_QLINEEDIT : PropLineEdit ,
264- NODE_PROP_QTEXTEDIT : PropLineEdit ,
305+ NODE_PROP_QTEXTEDIT : PropTextEdit ,
265306 NODE_PROP_QCOMBO : PropComboBox ,
266307 NODE_PROP_QCHECKBOX : PropCheckBox ,
267308 NODE_PROP_QSPINBOX : PropSpinBox ,
@@ -305,8 +346,12 @@ def add_widget(self, name, widget, value, label=None):
305346 row = self .__layout .rowCount ()
306347 if row > 0 :
307348 row += 1
308- self .__layout .addWidget (QtWidgets .QLabel (label ), row , 0 ,
309- QtCore .Qt .AlignCenter | QtCore .Qt .AlignRight )
349+
350+ label_flags = QtCore .Qt .AlignCenter | QtCore .Qt .AlignRight
351+ if widget .__class__ .__name__ == 'PropTextEdit' :
352+ label_flags = label_flags | QtCore .Qt .AlignTop
353+
354+ self .__layout .addWidget (QtWidgets .QLabel (label ), row , 0 , label_flags )
310355 self .__layout .addWidget (widget , row , 1 )
311356
312357 def get_widget (self , name ):
@@ -432,7 +477,8 @@ def _read_node(self, node):
432477 widget .set_min (prop_range [0 ])
433478 widget .set_max (prop_range [1 ])
434479
435- prop_window .add_widget (prop_name , widget , value )
480+ prop_window .add_widget (prop_name , widget , value ,
481+ prop_name .replace ('_' , ' ' ))
436482 widget .value_changed .connect (self ._on_property_changed )
437483
438484 # add "Node" tab properties.
@@ -446,7 +492,8 @@ def _read_node(self, node):
446492 widget = WidClass ()
447493 prop_window .add_widget (prop_name ,
448494 widget ,
449- model .get_property (prop_name ))
495+ model .get_property (prop_name ),
496+ prop_name .replace ('_' , ' ' ))
450497
451498 widget .value_changed .connect (self ._on_property_changed )
452499
@@ -523,7 +570,7 @@ def __init__(self):
523570 super (TestNode , self ).__init__ ()
524571 self .create_property ('label_test' , 'foo bar' ,
525572 widget_type = NODE_PROP_QLABEL )
526- self .create_property ('text_edit ' , 'hello' ,
573+ self .create_property ('line_edit ' , 'hello' ,
527574 widget_type = NODE_PROP_QLINEEDIT )
528575 self .create_property ('color_picker' , (0 , 0 , 255 ),
529576 widget_type = NODE_PROP_COLORPICKER )
@@ -535,6 +582,9 @@ def __init__(self):
535582 self .create_property ('range' , 50 ,
536583 range = (45 , 55 ),
537584 widget_type = NODE_PROP_SLIDER )
585+ self .create_property ('text_edit' , 'test text' ,
586+ widget_type = NODE_PROP_QTEXTEDIT ,
587+ tab = 'text' )
538588
539589
540590 def prop_changed (node_id , prop_name , prop_value ):
0 commit comments