Skip to content

Commit d52ba54

Browse files
committed
upgrade value eidt
1 parent 5813e25 commit d52ba54

File tree

3 files changed

+154
-117
lines changed

3 files changed

+154
-117
lines changed

NodeGraphQt/base/graph.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import json
44
import os
55
import re
6+
import copy
67

78
from NodeGraphQt import QtCore, QtWidgets
89
from NodeGraphQt.base.commands import (NodeAddedCmd,
@@ -179,8 +180,13 @@ def _on_property_bin_changed(self, node_id, prop_name, prop_value):
179180
node = self.get_node_by_id(node_id)
180181

181182
# prevent signals from causing a infinite loop.
183+
_exc = [float, int , str, bool, None]
182184
if node.get_property(prop_name) != prop_value:
183-
node.set_property(prop_name, prop_value)
185+
if type(node.get_property(prop_name)) in _exc:
186+
value = prop_value
187+
else:
188+
value = copy.deepcopy(prop_value)
189+
node.set_property(prop_name, value)
184190

185191
def _on_node_double_clicked(self, node_id):
186192
"""

NodeGraphQt/widgets/node_widgets.py

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from NodeGraphQt.constants import Z_VAL_NODE_WIDGET
55
from NodeGraphQt.widgets.stylesheet import *
66
from NodeGraphQt.widgets.file_dialog import file_dialog
7-
7+
from NodeGraphQt.widgets.properties import _valueEdit
88

99
class _NodeGroupBox(QtWidgets.QGroupBox):
1010

@@ -262,73 +262,68 @@ def value(self, text=''):
262262
self._value_changed()
263263

264264

265-
class NodeFloatEdit(NodeLineEdit):
265+
class NodeFloatEdit(NodeBaseWidget):
266266
"""
267-
NodeFloatEdit widget is subclassed from :class:`NodeLineEdit`,
267+
NodeFloatEdit widget is subclassed from :class:`NodeBaseWidget`,
268268
this widget is displayed as a ``QLineEdit`` embedded in a node.
269269
270270
.. note::
271271
`To embed a ``QLineEdit`` in a node see func:`
272272
:meth:`NodeGraphQt.BaseNode.add_float_input`
273273
"""
274274

275-
def __init__(self, parent=None, name='', label='', value=0.0):
275+
def __init__(self, parent=None, name='', label='', value = 0.0):
276276
super(NodeFloatEdit, self).__init__(parent, name, label)
277-
self._ledit.setValidator(QtGui.QDoubleValidator())
278-
self.text = str(value)
279-
self._ledit.setText(self.text)
277+
self._ledit = _valueEdit()
278+
self._ledit.setStyleSheet(STYLE_QLINEEDIT)
279+
self._ledit.setAlignment(QtCore.Qt.AlignCenter)
280+
self._ledit.valueChanged.connect(self._value_changed)
281+
self._ledit.clearFocus()
282+
self._ledit.setValue(value)
283+
group = _NodeGroupBox(label)
284+
group.add_node_widget(self._ledit)
285+
group.setMaximumWidth(120)
286+
self.setWidget(group)
287+
288+
@property
289+
def type_(self):
290+
return 'FloatEditNodeWidget'
291+
292+
@property
293+
def widget(self):
294+
return self._ledit
280295

281296
@property
282297
def value(self):
283298
"""
284-
Returns the widgets current float value.
299+
Returns the widgets current text.
285300
286301
Returns:
287-
float: float value.
302+
float: current value.
288303
"""
289-
value = float(self._ledit.text())
290-
return value
304+
return self._ledit.value()
291305

292306
@value.setter
293-
def value(self, text=0.0):
294-
if text != self.value:
295-
self._ledit.setText(str(text))
307+
def value(self, value):
308+
if value != self.value:
309+
self._ledit.setValue(value)
296310
self._value_changed()
297311

298312

299-
class NodeIntEdit(NodeLineEdit):
313+
class NodeIntEdit(NodeFloatEdit):
300314
"""
301-
NodeIntEdit widget is subclassed from :class:`NodeLineEdit`,
315+
NodeIntEdit widget is subclassed from :class:`NodeFloatEdit`,
302316
this widget is displayed as a ``QLineEdit`` embedded in a node.
303317
304318
.. note::
305319
`To embed a ``QLineEdit`` in a node see func:`
306-
:meth:`NodeGraphQt.BaseNode.add_float_input`
320+
:meth:`NodeGraphQt.BaseNode.add_int_input`
307321
"""
308322

309-
def __init__(self, parent=None, name='', label='', value=0.0):
323+
def __init__(self, parent=None, name='', label='', value=0):
310324
super(NodeIntEdit, self).__init__(parent, name, label)
311-
self._ledit.setValidator(QtGui.QIntValidator())
312-
self.text = str(value)
313-
self._ledit.setText(self.text)
314-
315-
@property
316-
def value(self):
317-
"""
318-
Returns the widgets current int value.
319-
320-
Returns:
321-
int: int value.
322-
"""
323-
value = int(self._ledit.text())
324-
return value
325-
326-
@value.setter
327-
def value(self, text=0.0):
328-
if text != self.value:
329-
self._ledit.setText(str(text))
330-
self._value_changed()
331-
325+
self._ledit.set_data_type(int)
326+
self._ledit.setValue(value)
332327

333328
class NodeCheckBox(NodeBaseWidget):
334329
"""

0 commit comments

Comments
 (0)