-
Notifications
You must be signed in to change notification settings - Fork 0
/
selection.cpp
121 lines (115 loc) · 3.44 KB
/
selection.cpp
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include "selection.h"
#include "ui_selection.h"
#include "graphwidget.h"
#include "simulation.h"
#include <QApplication>
#include <QTime>
#include <QMainWindow>
#include <QStringList>
#include <QMessageBox>
FenTable::FenTable(int num,bool oriented, QWidget *parent) :
QWidget(parent),oriented(oriented),nodes(num),
ui(new Ui::Selection)
{
tab=ui->Table;
ui->setupUi(this);
ui->Table->setColumnCount(nodes);
ui->Table->setRowCount(nodes);
QStringList headers;
for (int i=0; i<nodes; i++)
{
QString q=QString::number(i);
headers<<q;
}
ui->Table->setVerticalHeaderLabels(headers);
ui->Table->setHorizontalHeaderLabels(headers);
for(int i=0; i<nodes; i++)
{
QTableWidgetItem* item = new QTableWidgetItem();
item->setText("0");
item->setBackgroundColor(Qt::gray);
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
ui->Table->setItem(i,i,item);
}
if (!oriented)
{
for (int i=0; i<nodes; i++)
{
for (int j=i+1; j<nodes; j++)
{
QTableWidgetItem* item = new QTableWidgetItem();
item->setText("-");
ui->Table->setItem(i,j,item);
}
for (int k=0; k<i; k++)
{
QTableWidgetItem* item = new QTableWidgetItem();
item->setBackgroundColor(Qt::darkGray);
item->setFlags(item->flags() ^ Qt::ItemIsEditable);
ui->Table->setItem(i,k,item);
}
}
}
else
{
for (int i=0; i<nodes; i++)
{
for (int j=0; j<nodes; j++)
{
if (i != j){
QTableWidgetItem* item = new QTableWidgetItem();
item->setText("-");
ui->Table->setItem(i,j,item);
}
}
}
}
for (int i=0; i<nodes; i++)
{
ui->startNodeBox->addItem(QString::number(i));
ui->finishNodeBox->addItem(QString::number(i));
}
}
FenTable::~FenTable()
{
delete ui;
}
void FenTable::on_Go_clicked()
{
bool neg = false;
if (!oriented)
{
for (int i=0; i<nodes; i++)
{
for (int j=0; j<i; j++)
{
QTableWidgetItem* item = new QTableWidgetItem();
item->setText(ui->Table->item(j,i)->text());
ui->Table->setItem(i,j,item);
}
}
}
if (ui->algorithmsBox->currentText() == "Plus Court Chemin")
{
for (int i=0; i<nodes; i++)
{
for (int j=0; j<nodes; j++)
{
if (ui->Table->item(i,j)->text().toInt() < 0)
{
QMessageBox::critical(this, "Valeur négative", "La recherche du plus court chemin implémente l'algorithme de Dijktra qui nécessite des valeurs positives de tout les arcs");
neg = true;
}
if (neg) break;
}
if (neg) break;
}
}
if (!neg)
{
GraphWidget *widget = new GraphWidget(ui->Table,nodes);
Simulation *sim = new Simulation(widget,ui->algorithmsBox->currentText(), ui->startNodeBox->currentText().toInt(), ui->finishNodeBox->currentText().toInt(), ui->fullSearch->isChecked());
sim->show();
this->showMinimized();
}
}