graph-explorer/builder.py

77 lines
3.0 KiB
Python
Raw Normal View History

2020-12-10 17:32:34 -05:00
import pygame
from Graph import Graph
from Node import Node
from globals import *
def main():
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()
running = True
graph = Graph(screen, file="finalGraph.txt")
graph.fromFile(False)
isNodeUnderMouse = False
node1 = None
node2 = None
while (running):
isNodeUnderMouse = False
for event in pygame.event.get():
if event.type == pygame.QUIT:
file = open(input("Where would you like to save the graph: "),"w")
for i in graph.links:
file.write(i[0].text + " " + i[1].text + " " + str(i[2]) + " " + i[3] + "\n")
file.close()
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
find = input("Name of node: ")
for i in graph.nodes:
if i.text == find:
i.color = BLUE
if event.type == pygame.MOUSEBUTTONUP:
mouseX, mouseY = pygame.mouse.get_pos()
for i in graph.nodes:
if(mouseX > i.pos[0] - i.radius and \
mouseY > i.pos[1] - i.radius and \
mouseX < i.pos[0] + i.radius and \
mouseY < i.pos[1] + i.radius):
graph.drawLinks(i)
if (node1):
node2 = i
description = input("Description of link: ")
if (description != "no"):
graph.links.append([node1, node2, 1.0, description])
node2 = None
node1 = None
elif (not node1 and not node2):
node1 = i
isNodeUnderMouse = True
if (not isNodeUnderMouse):
newNode = Node(pos=(mouseX, mouseY), vel=(0,0), text = input("New node text: "))
graph.nodes.append(newNode)
node1 , node2 = (None, None)
screen.fill(BLACK)
graph.draw()
mouseX, mouseY = pygame.mouse.get_pos()
for i in graph.nodes:
if(mouseX > i.pos[0] - i.radius and \
mouseY > i.pos[1] - i.radius and \
mouseX < i.pos[0] + i.radius and \
mouseY < i.pos[1] + i.radius):
i.color = GREEN
if (i not in graph.nodesUnderMouse):
graph.nodesUnderMouse.append(i)
graph.drawLinks(i)
else:
if i in graph.nodesUnderMouse:
graph.nodesUnderMouse.remove(i)
if (i.color != BLUE):
i.color = RED
pygame.display.flip()
clock.tick(60)
if __name__ == "__main__":
main()