from graph_tool.all import *

import gtk_graph_draw

g = Graph()                                     # Cria grafo

names = []
criterioContaminacao = []
ocorrencia = []
count = 0

dataFile = open("dados_animais.txt", "r", encoding='utf-8')
for line in dataFile:
    if count != 0:
        names.append(line[:line.index('\t')])
        line = line[line.index('\t')+1:]
        criterioContaminacao.append(line[:line.index('\t')])
        line = line[line.index('\t')+1:]
        if line[len(line)-1] == '\n':
            ocorrencia.append(line[:len(line)-1])
        else:
            ocorrencia.append(line)
    count = count+1

g.add_vertex(count-1)                                 # Adiciona vértices

vprop_name = g.new_vertex_property("string")     # Adiciona a propriedade aos vértices

count = 0
for name in names:                               # Nomeia os vértices
    vprop_name[count] = name
    count = count+1

g.vertex_properties["name"] = vprop_name        # Internaliza a propriedade "name"

vprop_criterio = g.new_vertex_property("double")     # Adiciona a propriedade aos vértices

count = 0
for value in criterioContaminacao:                               # Define critérios de contaminação dos vértices
    vprop_criterio[count] = float(value)
    count = count+1

g.vertex_properties["criterioContaminacao"] = vprop_criterio        # Internaliza a propriedade "criterioContaminacao"

# Cria arestas entre os vértices

eprop_criterio = g.new_edge_property("double")     # Adiciona a propriedade à arestas

for i in range(1,8):
    g.add_edge(0,i)
    eprop_criterio[(0,i)] = vprop_criterio.a[0]/10

for i in range(1,4):
    g.add_edge(6,i)
    eprop_criterio[(6,i)] = vprop_criterio.a[i]/10
    g.add_edge(7,i)
    eprop_criterio[(7,i)] = vprop_criterio.a[i]/10

g.edge_properties["criterioContaminacao"] = eprop_criterio


#Gera visualização do grafo

# graph_draw(g, vertex_text=g.vertex_properties["name"], vertex_font_size=12, vertex_text_position=-10.0,
#            edge_pen_width=g.edge_properties["criterioContaminacao"], edge_marker_size=30,
#            output_size=(1000, 1000), output="contamination.png")

gtk_graph_draw.interactive_window(g,
                                   vertex_size=80,
                                   vertex_text=g.vertex_properties["name"],
                                   vertex_text_position=-5,
                                   vertex_font_size=12,
                                   edge_pen_width=g.edge_properties["criterioContaminacao"],
                                   geometry=(1440, 1024),
                                   edge_marker_size=30,
                                   bg_color=[1, 1, 1, 0],
                                   bg_image="terrain.png")

# g.save("inicial_graph.gt")

    # def get_graph(self):
    #     v_pos = g.new_vertex_property("vector<int32_t>")
    #     for i in range(0,7,1):
    #         x = randint(0, 400)
    #         y = randint(0, 200)
    #         v_pos[g.vertex(i)] = [x, y]
    #     g.vertex_properties["posicao"] = v_pos
    #
    #     return g