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
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
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
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
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)
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()
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)
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)