def __init__(self, canvas): self.canvas = canvas self.startVertex = None self.endVertex = None self.startFound = False self.algorithmHandler = AlgorithmHandler(self.canvas) self.nextKey = 0
class EventHandler: def __init__(self, canvas): self.canvas = canvas self.startVertex = None self.endVertex = None self.startFound = False self.algorithmHandler = AlgorithmHandler(self.canvas) self.nextKey = 0 # Create a new vertex, add to graph, draw graph. def newVertex(self, event, graph): vertex = DrawableVertex((event.x, event.y), self.nextKey) graph.addDrawableVertex(vertex) graph.drawGraph(self.canvas) self.nextKey += 1 # Add edge, draw graph def newEdge(self, event, graph): for v in graph: if (v.clickedOn((event.x, event.y)) and not self.startFound): self.startFound = True self.startVertex = v elif(v.clickedOn((event.x, event.y)) and self.startFound): self.endVertex = v graph.addEdge(self.startVertex, self.endVertex, random.randint(0, 10)) graph.drawGraph(self.canvas) self.startFound = False # Find start vertex, then call BFS in algHandler def handleDFS(self, graph, event): for v in graph: if(v.clickedOn((event.x, event.y))): startVertex = v for v in graph: v.setVisited(False) self.algorithmHandler.DFS(graph, startVertex, self.canvas) return # Find start vertex, then call DFS in algHandler def handleBFS(self, graph, event): for v in graph: if(v.clickedOn((event.x, event.y))): self.algorithmHandler.BFS(graph, v, self.canvas) return # Find start vertex, then call Prims in algHandler def handlePrims(self, graph, event): for v in graph: if(v.clickedOn((event.x, event.y))): self.algorithmHandler.prims(graph, v, self.canvas) return # Find start vertex, then call Dijkstras in algHandler def handleDijkstra(self, graph, event): for v in graph: if(v.clickedOn((event.x, event.y))): self.algorithmHandler.dijkstras(graph, v, self.canvas) return # Call properties function in algHandler def handleProperties(self, graph): return self.algorithmHandler.computeProperties(graph)