コード例 #1
0
ファイル: EventHandler.py プロジェクト: KarlParkinson/Graphs
 def __init__(self, canvas):
     self.canvas = canvas
     self.startVertex = None
     self.endVertex = None
     self.startFound = False
     self.algorithmHandler = AlgorithmHandler(self.canvas)
     self.nextKey = 0
コード例 #2
0
ファイル: EventHandler.py プロジェクト: KarlParkinson/Graphs
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)