Skip to content

Commit 364ac78

Browse files
committed
addition updates:
- pep8 cleanup. - updated insert node logic. - added some doc strings.
1 parent 410d9b8 commit 364ac78

File tree

8 files changed

+64
-298
lines changed

8 files changed

+64
-298
lines changed

NodeGraphQt/base/graph.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from NodeGraphQt.base.factory import NodeFactory
1313
from NodeGraphQt.base.menu import NodeGraphMenu, NodesMenu
1414
from NodeGraphQt.base.model import NodeGraphModel
15-
from NodeGraphQt.base.node import NodeObject,BaseNode
15+
from NodeGraphQt.base.node import NodeObject
1616
from NodeGraphQt.base.port import Port
1717
from NodeGraphQt.constants import (DRAG_DROP_ID,
1818
PIPE_LAYOUT_CURVED,
@@ -121,21 +121,31 @@ def _wire_signals(self):
121121
self._viewer.node_selected.connect(self._on_node_selected)
122122
self._viewer.data_dropped.connect(self._on_node_data_dropped)
123123

124-
def _insert_node(self, items):
125-
pipe = items[0]
126-
node = self.get_node_by_id(items[1])
127-
if not isinstance(node,BaseNode):
128-
return
124+
def _insert_node(self, pipe, node_id, prev_node_pos):
125+
"""
126+
Slot function triggered when a selected node has collided with a pipe.
127+
128+
Args:
129+
pipe (Pipe): collided pipe item.
130+
node_id (str): selected node id to insert.
131+
prev_node_pos (dict): previous node position. {NodeItem: [prev_x, prev_y]}
132+
"""
133+
node = self.get_node_by_id(node_id)
129134

130135
disconnected = [(pipe.input_port, pipe.output_port)]
131136
connected = []
132137

133138
if node.inputs():
134-
connected.append((pipe.output_port, list(node.inputs().values())[0].view))
139+
connected.append(
140+
(pipe.output_port, list(node.inputs().values())[0].view)
141+
)
135142
if node.outputs():
136-
connected.append((list(node.outputs().values())[0].view, pipe.input_port))
143+
connected.append((node.output(0).view, pipe.input_port))
137144

145+
self._undo_stack.beginMacro('inserted node')
138146
self._on_connection_changed(disconnected, connected)
147+
self._on_nodes_moved(prev_node_pos)
148+
self._undo_stack.endMacro()
139149

140150
def _toggle_tab_search(self):
141151
"""

NodeGraphQt/base/node.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -529,7 +529,7 @@ def add_text_input(self, name, label='', text='', tab=None):
529529
widget.value_changed.connect(lambda k, v: self.set_property(k, v))
530530
self.view.add_widget(widget)
531531

532-
def add_float_input(self, name, label='', value=0, tab=None):
532+
def add_float_input(self, name, label='', value=0.0, tab=None):
533533
"""
534534
Creates a custom property with the :meth:`NodeObject.create_property`
535535
function and embeds a :class:`PySide2.QtWidgets.QLineEdit` widget

NodeGraphQt/qgraphics/pipe.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def __init__(self, input_port=None, output_port=None):
2727
super(Pipe, self).__init__()
2828
self.setZValue(Z_VAL_PIPE)
2929
self.setAcceptHoverEvents(True)
30+
self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
3031
self._color = PIPE_DEFAULT_COLOR
3132
self._style = PIPE_STYLE_DEFAULT
3233
self._active = False
@@ -38,7 +39,6 @@ def __init__(self, input_port=None, output_port=None):
3839
self._arrow.append(QtCore.QPointF(-size, size))
3940
self._arrow.append(QtCore.QPointF(0.0, -size * 1.5))
4041
self._arrow.append(QtCore.QPointF(size, size))
41-
self.setFlag(QtWidgets.QGraphicsItem.ItemIsSelectable)
4242

4343
def __repr__(self):
4444
in_name = self._input_port.name if self._input_port else ''

NodeGraphQt/widgets/node_property.py

Lines changed: 0 additions & 217 deletions
This file was deleted.

NodeGraphQt/widgets/node_widgets.py

Lines changed: 15 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/python
2-
from NodeGraphQt import QtCore, QtWidgets
2+
from NodeGraphQt import QtCore, QtWidgets, QtGui
33

44
from NodeGraphQt.constants import Z_VAL_NODE_WIDGET
55
from NodeGraphQt.widgets.stylesheet import *
@@ -251,72 +251,39 @@ def value(self, text=''):
251251
self._ledit.setText(text)
252252
self._value_changed()
253253

254+
254255
class NodeFloatEdit(NodeLineEdit):
255256
"""
256-
NodeFloatEdit widget is subclassed from :class:`NodeBaseWidget`,
257+
NodeFloatEdit widget is subclassed from :class:`NodeLineEdit`,
257258
this widget is displayed as a ``QLineEdit`` embedded in a node.
258259
259260
.. note::
260261
`To embed a ``QLineEdit`` in a node see func:`
261262
:meth:`NodeGraphQt.BaseNode.add_float_input`
262263
"""
263264

264-
def __init__(self, parent=None, name='', label='', value=0):
265+
def __init__(self, parent=None, name='', label='', value=0.0):
265266
super(NodeFloatEdit, self).__init__(parent, name, label)
266-
self.text = self._convertValue(value)
267-
self._ledit = QtWidgets.QLineEdit(self.text)
268-
self._ledit.setStyleSheet(STYLE_QLINEEDIT)
269-
self._ledit.setAlignment(QtCore.Qt.AlignCenter)
270-
self._ledit.editingFinished.connect(lambda:self._editFinished())
271-
self._ledit.clearFocus()
272-
group = _NodeGroupBox(label)
273-
group.add_node_widget(self._ledit)
274-
group.setMaximumWidth(120)
275-
self.setWidget(group)
276-
277-
278-
def _convertValue(self,value):
279-
if type(value) == float or type(value) == int:
280-
return str(value)
281-
elif type(value) == str:
282-
if value.replace(".", "").isdigit():
283-
if len(value.split(".")) > 2:
284-
return "0"
285-
return value
286-
else:
287-
return "0"
288-
else:
289-
return "0"
290-
291-
def _setValue(self,value):
292-
self._ledit.setText(self._convertValue(value))
293-
self._value_changed()
294-
295-
def _editFinished(self):
296-
self._setValue(self._ledit.text())
297-
298-
@property
299-
def type_(self):
300-
return 'FloatEditNodeWidget'
267+
regex = '\\d+|\\d+\\.\\d+'
268+
validator = QtGui.QRegExpValidator(regex, self._ledit)
269+
self._ledit.setValidator(validator)
270+
self.text = str(value)
301271

302272
@property
303273
def value(self):
304274
"""
305-
Returns the widgets current text.
275+
Returns the widgets current float value.
306276
307277
Returns:
308-
float: current value.
278+
float: float value.
309279
"""
310-
text = self._ledit.text()
311-
if text:
312-
return float(self._ledit.text())
313-
else:
314-
return 0
280+
return float(self._ledit.text() or '0')
315281

316282
@value.setter
317-
def value(self, value=0):
318-
if value != self.value:
319-
self._setValue(value)
283+
def value(self, text=0.0):
284+
if text != self.value:
285+
self._ledit.setText(str(text))
286+
self._value_changed()
320287

321288

322289
class NodeCheckBox(NodeBaseWidget):

0 commit comments

Comments
 (0)