Skip to content

Commit e0aa12a

Browse files
committed
implemented text edit property widget
1 parent 1f5c704 commit e0aa12a

File tree

2 files changed

+66
-6
lines changed

2 files changed

+66
-6
lines changed

NodeGraphQt/widgets/properties.py

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
192233
class PropComboBox(QtWidgets.QComboBox):
193234

194235
value_changed = QtCore.Signal(str, object)
@@ -261,7 +302,7 @@ def set_value(self, value):
261302
WIDGET_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):

NodeGraphQt/widgets/stylesheet.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,16 @@
3636
}
3737
'''
3838

39+
STYLE_QTEXTEDIT = '''
40+
QTextEdit {
41+
border: 1px solid rgba(255, 255, 255, 50);
42+
border-radius: 0px;
43+
color: rgba(255, 255, 255, 150);
44+
background: rgba(0, 0, 0, 80);
45+
selection-background-color: rgba(255, 198, 10, 155);
46+
}
47+
'''
48+
3949
STYLE_TABSEARCH = '''
4050
QLineEdit {
4151
border: 2px solid rgba(170, 140, 0, 255);

0 commit comments

Comments
 (0)