Skip to content

Commit 28fe821

Browse files
committed
Addressing review -- Code quality
1 parent 57380e0 commit 28fe821

File tree

3 files changed

+36
-29
lines changed

3 files changed

+36
-29
lines changed

Orange/canvas/canvas/items/linkitem.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ class LinkCurveItem(QGraphicsPathItem):
2828
"""
2929
def __init__(self, parent):
3030
super().__init__(parent)
31-
self.__parent = parent
32-
3331
self.setAcceptedMouseButtons(Qt.NoButton)
3432
self.setAcceptHoverEvents(True)
3533

@@ -93,9 +91,6 @@ def setPath(self, path):
9391
self.__shape = None
9492
super().setPath(path)
9593

96-
def parent(self):
97-
return self.__parent
98-
9994
def __update(self):
10095
shadow_enabled = self.__hover
10196
if self.shadow.isEnabled() != shadow_enabled:

Orange/canvas/document/commands.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66

77
from AnyQt.QtWidgets import QUndoCommand
88

9-
from Orange.canvas.scheme import SchemeLink
10-
119

1210
class AddNodeCommand(QUndoCommand):
1311
def __init__(self, scheme, node, parent=None):
@@ -72,23 +70,12 @@ def undo(self):
7270

7371

7472
class InsertNodeCommand(QUndoCommand):
75-
def __init__(self, scheme, link, new_node, parent=None):
76-
QUndoCommand.__init__(self, "Remove link", parent)
73+
def __init__(self, scheme, new_node, old_link, new_links, parent=None):
74+
QUndoCommand.__init__(self, "Insert widget into link", parent)
7775
self.scheme = scheme
78-
self.original_link = link
7976
self.inserted_widget = new_node
80-
81-
possible_links = (self.scheme.propose_links(link.source_node, new_node),
82-
self.scheme.propose_links(new_node, link.sink_node))
83-
84-
if not possible_links[0] or not possible_links[1]:
85-
raise ValueError("Cannot insert widget: links not possible")
86-
87-
self.new_links = (
88-
SchemeLink(link.source_node, link.source_channel,
89-
new_node, possible_links[0][0][1]), # first link, first entry, output (1)
90-
SchemeLink(new_node, possible_links[1][0][0], # second link, first entry, input (0)
91-
link.sink_node, link.sink_channel))
77+
self.original_link = old_link
78+
self.new_links = new_links
9279

9380
def redo(self):
9481
self.scheme.add_node(self.inserted_widget)

Orange/canvas/document/schemeedit.py

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -878,11 +878,11 @@ def removeLink(self, link):
878878
command = commands.RemoveLinkCommand(self.__scheme, link)
879879
self.__undoStack.push(command)
880880

881-
def insertNode(self, link, new_node):
881+
def insertNode(self, new_node, old_link, new_links):
882882
"""
883883
Insert a node in-between two linked nodes.
884884
"""
885-
command = commands.InsertNodeCommand(self.__scheme, link, new_node)
885+
command = commands.InsertNodeCommand(self.__scheme, new_node, old_link, new_links)
886886
self.__undoStack.push(command)
887887

888888
def onNewLink(self, func):
@@ -1054,7 +1054,20 @@ def tryInsertNode(self, link, new_node_desc, pos):
10541054
if nodes_are_compatible(source_node.description, new_node_desc) and \
10551055
nodes_are_compatible(new_node_desc, sink_node.description):
10561056
new_node = self.newNodeHelper(new_node_desc, position=(pos.x(), pos.y()))
1057-
self.insertNode(link, new_node)
1057+
1058+
possible_links = (self.scheme().propose_links(source_node, new_node),
1059+
self.scheme().propose_links(new_node, sink_node))
1060+
1061+
if not possible_links[0] or not possible_links[1]:
1062+
raise ValueError("Cannot insert widget: links not possible")
1063+
1064+
new_links = (
1065+
SchemeLink(source_node, link.source_channel,
1066+
new_node, possible_links[0][0][1]), # first link, first entry, output
1067+
SchemeLink(new_node, possible_links[1][0][0], # second link, first entry, input
1068+
sink_node, link.sink_channel))
1069+
1070+
self.insertNode(new_node, link, new_links)
10581071
else:
10591072
self.createNewNode(new_node_desc, position=(pos.x(), pos.y()))
10601073

@@ -1083,9 +1096,9 @@ def eventFilter(self, obj, event):
10831096
log.error("Unknown qualified name '%s'", qname)
10841097
else:
10851098
pos = event.scenePos()
1086-
item = self.__scene.item_at(event.scenePos())
1087-
if item and isinstance(item, items.LinkCurveItem):
1088-
link = self.__scene.link_for_item(item.parent())
1099+
item = self.__scene.item_at(event.scenePos(), items.LinkItem)
1100+
if item:
1101+
link = self.__scene.link_for_item(item)
10891102
self.tryInsertNode(link, desc, pos)
10901103
else:
10911104
self.createNewNode(desc, position=(pos.x(), pos.y()))
@@ -1667,7 +1680,19 @@ def filterFunc(index):
16671680
else:
16681681
return
16691682

1670-
self.insertNode(original_link, new_node)
1683+
possible_links = (self.scheme().propose_links(source_node, new_node),
1684+
self.scheme().propose_links(new_node, sink_node))
1685+
1686+
if not possible_links[0] or not possible_links[1]:
1687+
raise ValueError("Cannot insert widget: links not possible")
1688+
1689+
new_links = (
1690+
SchemeLink(source_node, original_link.source_channel,
1691+
new_node, possible_links[0][0][1]), # first link, first entry, output
1692+
SchemeLink(new_node, possible_links[1][0][0], # second link, first entry, input
1693+
sink_node, original_link.sink_channel))
1694+
1695+
self.insertNode(new_node, original_link, new_links)
16711696

16721697
def __duplicateSelected(self):
16731698
"""

0 commit comments

Comments
 (0)