Example #1
0
 def on_gerar_arestas_button_clicked(self):
     self.limparInferencias()
     self.grafo.limpar()
     n_linhas = self.tabela_adjacencia.rowCount()
     n_colunas = self.tabela_adjacencia.columnCount()
     for x in xrange(n_linhas):
         for y in xrange(x,n_colunas):
             item = self.tabela_adjacencia.cellWidget(x, y)
             if item.currentText() == '1':
                 v1 = str(self.tabela_adjacencia.horizontalHeaderItem(x).text())
                 v2 = str(self.tabela_adjacencia.verticalHeaderItem(y).text())
                 valor = None
                 if self.valorar_aresta.isChecked():
                     ok = False
                     while not ok:
                         valor,ok = QInputDialog().getText(self, 'Dados para a aresta {0}-{1} (separados por ",")'.format(v1,v2), 
                                                        'Dados:', mode=QLineEdit.Normal, 
                                                        text=QString())
                         valor = str(valor)
                         if not ok:
                             sair = QMessageBox.question(self, 'Cancelar?', u'deseja cancelar a criação do grafo?',
                                                         buttons=QMessageBox.Yes | QMessageBox.No, defaultButton=QMessageBox.NoButton)
                             
                             if sair == QMessageBox.Yes:
                                 self.grafo.limpar()
                                 return
                         elif valor == '':
                             atribuir_zero = QMessageBox.question(self, 'Valor em branco!', u'Atribuit valor "0" à aresta?', 
                                                                  buttons=QMessageBox.Yes | QMessageBox.No, defaultButton=QMessageBox.NoButton)
                             if atribuir_zero:
                                 valor = '0'
                             else:
                                 valor = None
                         valor = valor.split(',')
                         valor = {string.split(':')[0]:string.split(':')[1] for string in valor}
                         for dado in valor:
                             if valor[dado].isdigit():
                                 valor[dado] = int(valor[dado])
                             else:
                                 try:
                                     valor[dado] = float(valor[dado])
                                 except ValueError:
                                     pass
                 
                 self.grafo.adicionarAresta(v1, v2, valor)
     self.eh_conexo.setChecked(self.grafo.ehConexo())
     self.eh_arvore.setChecked(self.grafo.ehArvore())
     self.eh_regular.setChecked(self.grafo.ehRegular())
     self.eh_completo.setChecked(self.grafo.ehCompleto())