diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/editorui.py | 37 | 
1 files changed, 21 insertions, 16 deletions
| diff --git a/src/editorui.py b/src/editorui.py index b05cbe2..73eaa18 100644 --- a/src/editorui.py +++ b/src/editorui.py @@ -558,16 +558,27 @@ class KPEditorNode(KPEditorItem):  			else:  				end = start2 - -			joinedPath = KPPath(start, end, pathOne) -			layer.paths.append(joinedPath) -			item = KPEditorPath(joinedPath) -			self.scene().addItem(item) - - -		# whatever happened, delete the old paths anyway -		for exit in node.exits: -			exit.qtItem.remove(True) +			# make sure no path already exists between these nodes +			nope = False + +			for pathToCheck in start.exits: +				if pathToCheck._startNodeRef() == end: +					nope = True +				elif pathToCheck._endNodeRef() == end: +					nope = True + +			if not nope: +				joinedPath = KPPath(start, end, pathOne) +				layer.paths.append(joinedPath) +				item = KPEditorPath(joinedPath) +				self.scene().addItem(item) + +			for path in (pathOne, pathTwo): +				path.qtItem.remove(True) +		else: +			# we can't join them so just nuke them +			for exit in node.exits[:]: +				exit.qtItem.remove(True)  		if withItem:  			self.scene().removeItem(self) @@ -820,8 +831,6 @@ class KPEditorWidget(QtGui.QGraphicsView):  			self.paintBeginPosition = (x, y)  		elif isinstance(layer, KPPathLayer): -			print "Going to paint something related to paths" -  			# decide what's under the mouse  			clicked = self.mapToScene(event.x(), event.y())  			x, y = clicked.x(), clicked.y() @@ -829,7 +838,6 @@ class KPEditorWidget(QtGui.QGraphicsView):  			for item in itemsUnder:  				if isinstance(item, KPEditorNode): -					print "Trying a line"  					# Paint a path to this node (if one is selected)  					sourceItem, sourceNode = None, None  					selected = self.scene().selectedItems() @@ -838,7 +846,6 @@ class KPEditorWidget(QtGui.QGraphicsView):  						if isinstance(item, KPEditorNode) and selItem != item:  							sourceItem = selItem  							sourceNode = selItem._nodeRef() -							print "Got source"  							break  					if sourceItem is None: return @@ -855,7 +862,6 @@ class KPEditorWidget(QtGui.QGraphicsView):  					path = KPPath(sourceNode, destNode)  					KP.map.pathLayer.paths.append(path) -					print "Done!"  					item = KPEditorPath(path)  					self.scene().addItem(item) @@ -899,7 +905,6 @@ class KPEditorWidget(QtGui.QGraphicsView):  			node.position = (x - 12, y - 12)  			KP.map.pathLayer.nodes.append(node) -			print "Painting a node at %r" % (node.position,)  			item = KPEditorNode(node)  			self.scene().addItem(item) | 
