コード例 #1
0
ファイル: TDAgrafo.py プロジェクト: AsmisAlan/grafoVuelos
def inicializar():
    """ esta funcion crea y carga un grafo, luego me lo retorna"""
    a = Grafo()
    Arch = archivo.abrir(Constantes.DirVertices) #abro el arch de vertices
    cont = 0
    while (cont < len(Arch)):
        dato = archivo.leer(Arch,cont)
        if dato.estado : 
            #vertAux = NodoVertice()
            #vertAux.clave = dato.ciudad #nombre de la ciudad
            #vertAux.pos = cont # posicion en el archivo
            a.insertarVertice(dato.ciudad , cont)
        cont +=1
    archivo.cerrar(Arch)
    
    Arch2 = archivo.abrir(Constantes.DirAristas) # abro el arch de aristas
    cont = 0 # renuevo la variable de control
    while (cont < len(Arch2)):
        dato = archivo.leer(Arch2,cont)
        if dato.estado : 
            relacion = NodoArista()
            relacion.clave = dato.destino #nombre de la ciudad de destino
            relacion.pos = cont
            relacion.peso = dato.distancia # duracion de la arista
            a.insertarRelacion(dato.origen, relacion)
        cont +=1
    archivo.cerrar(Arch2)
    return a
コード例 #2
0
 def guardarRegistro(self):
     if self.grafo.existeVertice(str(self.line_origen.text())):
         if self.grafo.existeVertice(str(self.line_destino.text())):
             if not self.grafo.existeArista(str(self.line_origen.text()),
                                            str(self.line_destino.text())):
                 #crea un registro de tipo arista
                 vuelo = archivo.Arista()
                 vuelo.origen = str(self.line_origen.text())
                 vuelo.destino = str(self.line_destino.text())
                 vuelo.distancia = str(self.line_distancia.text())
                 vuelo.precio = str(self.line_precio.text())
                 vuelo.fecha = str(
                     self.line_calendario.selectedDate().toString(
                         'd/MM/yyyy'))
                 vuelo.hs = str(self.line_salida.text())
                 vuelo.ha = str(self.line_llegada.text())
                 vuelo.estado = True
                 #guarda en el archivo de aristas el registro
                 arch = archivo.abrir(Constantes.DirAristas)
                 archivo.guardar(arch, vuelo)
                 pos = len(arch)
                 archivo.cerrar(arch)
                 #actualiza el grafo
                 arista = TDAvertice.NodoArista()
                 arista.clave = vuelo.destino
                 arista.peso = vuelo.distancia
                 arista.pos = pos
                 self.grafo.insertarRelacion(vuelo.origen, arista)
                 self.close()  #cierra el dialogo
コード例 #3
0
ファイル: TDAgrafo.py プロジェクト: AsmisAlan/grafoVuelos
 def listaNombresVertices(self):
     lista = []
     Nw = self.cab
     vert = archivo.abrir(Constantes.DirVertices)
     while Nw != None:
         lista.append(str(Nw.clave)+': '+archivo.leer(vert,Nw.clave).nombre)
         Nw = Nw.siguiente_vertice
     archivo.cerrar(vert)
     return lista
コード例 #4
0
ファイル: TDAvertice.py プロジェクト: AsmisAlan/grafoVuelos
 def ListaAristasModificable(self):
     Nw = self.cab
     lista = []
     arista = archivo.abrir(Constantes.DirAristas)
     while Nw != None:
         lista.append([archivo.leer(arista, Nw.pos), Nw.pos])
         Nw = Nw.siguiente_arista
     archivo.cerrar(arista)
     return lista
コード例 #5
0
def ActulizarTabla(grafo, tabla):
    fila = 0
    if tabla.rowCount() < grafo.tamanioGrafo():
        tabla.insertRow(grafo.tamanioGrafo() - 1)
    limpiar(tabla)
    lista = grafo.ListaVertices()
    arch = archivo.abrir(Constantes.DirVertices)  #abro el arch de vertices
    for aux in lista:
        dato = archivo.leer(arch, lista[fila])
        nombre = QtGui.QTableWidgetItem(str(dato.nombre))
        tabla.setVerticalHeaderItem(fila, nombre)
        fila += 1
    archivo.cerrar(arch)
コード例 #6
0
 def guardarNuevoAeropuerto(self):
     if (self.grafo.ConsultarVertice(str(self.line_nueva.text())) != None):
         print("ya existelacudad")
     else:
         city = archivo.Vertice()
         city.ciudad = str(self.line_nueva.text())
         city.estado = True
         arch= archivo.abrir(Constantes.DirVertices)
         pos =len(arch)
         archivo.guardar(arch , city)
         archivo.cerrar(arch)
         self.grafo.insertarVertice(city.ciudad , pos)
         self.grafo.mostrar()
         self.close()
コード例 #7
0
def CargarTabla(grafo, tabla):
    fila = 0
    tabla.setRowCount(grafo.tamanioGrafo())
    arch = archivo.abrir(Constantes.DirVertices)  #abro archivo vertices
    limpiar(tabla)
    lista = grafo.ListaVertices()
    for aux in lista:
        dato = archivo.leer(arch, lista[fila])
        nombre = QtGui.QTableWidgetItem(str(aux) + ': ' + dato.nombre)
        nombre.setToolTip('Descripcion:<b>' + dato.descripcion + '</b>.')
        tabla.setVerticalHeaderItem(fila, nombre)

        dibujarRelaciones(fila, tabla, grafo, lista[fila])

        fila += 1
    archivo.cerrar(arch)
コード例 #8
0
def dibujarRelaciones(fila, tabla, grafo, nodo):
    listaArista = grafo.listaAristas(nodo)
    if tabla.columnCount() <= len(listaArista) * 2:
        tabla.setColumnCount(len(listaArista) * 2)
    cont = 0
    arch = archivo.abrir(Constantes.DirAristas)
    for arista in listaArista:
        relaciones = archivo.leer(arch, arista[1])  #leo la pos de la arista
        t = QtGui.QTableWidgetItem(relaciones.nombre.upper())
        t.setBackground(QtGui.QColor(59, 131, 189))
        t.setToolTip('Descripcion:<b>' + relaciones.descripcion +
                     '</b>. Duracion: ' + str(relaciones.duracion))
        tabla.setItem(fila, cont, t)
        tabla.setHorizontalHeaderItem(cont, QtGui.QTableWidgetItem('TAREA'))

        cont += 1
        t = QtGui.QTableWidgetItem('VERTICE: ' + str(arista[0]))
        tabla.setItem(fila, cont, t)
        tabla.setHorizontalHeaderItem(cont, QtGui.QTableWidgetItem('VERTICE'))

        cont += 1
    archivo.cerrar(arch)