summaryrefslogtreecommitdiff
path: root/src/builder.py
blob: 3c79d1bdb7d8e07965f3efdab0474724719169e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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="copy.txt")
#    graph.fromFile(False)
    graph = Graph(screen)
    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_f:
                    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 between " + node1.text + " and " + node2.text + ": ")
                            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()