parametragemodele.cpp 4.44 KB
Newer Older
1
2
3
4
5
6
7
#include"parametragemodele.h"


NouveauModele::NouveauModele(QWidget* parent) : QWidget() {
    this->setWindowTitle("Paramétrage d'un nouveau modèle");
    this->setMinimumSize(850, 550);

8
9
10
11
12
    general = new QGridLayout;
    this->setLayout(general);

    //définition de la frame paramétrage du modèle

13
    fenetre_init = new QWidget;
14
    fenetre_init->setStyleSheet("background-color: rgb(204, 209, 209)");
15
    fenetre_init->setFixedWidth(300);
16
    label_init = new QLabel("Configuration du modèle :");
17
18
19

    form_init = new QGridLayout(fenetre_init);

20
    form_choix = new QFormLayout;
21
22

    form_init->addWidget(label_init, 0, 0, 1, 2);
23
    form_init->addLayout(form_choix, 1, 0, 8, 2);
24

25
    // nb d'états
26
    nb_etats = new QSpinBox;
27
    nb_etats->setRange(1, 8);
28

29
    //choisir un voisinage
30
    liste_voisinage = new QComboBox;
Boris Cazic's avatar
Boris Cazic committed
31
    liste_voisinage->setPlaceholderText("--- select ---");
32
33
34
    liste_voisinage->setCurrentIndex(-1);

    //liste_voisinage->addItem("--- select ---");
35
36
37
38
    liste_voisinage->addItem("Voisinage de von Neumann");
    liste_voisinage->addItem("Voisinage de Moore");
    liste_voisinage->addItem("Voisinage arbitraire");

39
40
41
    connect(liste_voisinage, SIGNAL(currentTextChanged(const QString&)), this, SLOT(paramVoisinage(const QString&)));

    //choisir une règle de transition
42
43
44
45
46
47
48
49
50
    liste_regle_transition = new QComboBox;
    liste_regle_transition->addItem("Life Game");
    liste_regle_transition->addItem("Brian's brain");
    liste_regle_transition->addItem("Circulaire de Griffeath");
    liste_regle_transition->addItem("Langston's Loop");

    bouton_valide = new QPushButton("Valider");
    bouton_valide->setFixedWidth(50);

51
    //connect(bouton_valide, SIGNAL(clicked()), SLOT(affParametrage()));
52

53
54
55
56
    form_choix->addRow("Nombre d'états :", nb_etats);
    form_choix->addRow("Voisinage :", liste_voisinage);
    form_choix->addRow("Règle de transition :", liste_regle_transition);
    form_choix->addWidget(bouton_valide);
57

58
    general->addWidget(fenetre_init, 0, 0, 9, 1);
59
60

    //définition de la frame contenant la grille de sélection du voisinage
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
    fenetre_param = new QWidget;
    fenetre_param->setFixedWidth(500);
    label_param = new QLabel("Paramétrer votre choix :");

    form_param = new QGridLayout(fenetre_param);
    form_rayon = new QFormLayout;
    rayon = new QSpinBox;

    general->addWidget(label_param, 0, 1, 1, 1);
    general->addWidget(fenetre_param, 1, 1, 8, 1);

    /*
    form_param->addWidget(label_param, 0, 0, 1, 1);
    form_param->addLayout(form_rayon, 1, 0, 8, 1);

    general->addWidget(fenetre_param, 0, 1, 9, 1);
    */
78

79
80
}

81
82
83
84
85
86
87
88
89
90
91
92
93
94
void NouveauModele::paramVoisinage(const QString& choix_voisinage){
    if(choix_voisinage == "Voisinage de von Neumann" || choix_voisinage == "Voisinage de Moore"){
        delete form_rayon;
        delete grid;
        form_rayon = new QFormLayout;
        rayon = new QSpinBox;

        form_rayon->addRow("Rayon du voisinage :", rayon);
        form_param->addLayout(form_rayon, 0, 0, 1, 1);
        //form_param->addLayout(form_rayon, 1, 0, 8, 1);
    }
    else if(choix_voisinage == "Voisinage arbitraire") {
        this->affGrille();
    }
95
    else if(choix_voisinage == "--- select ---"){
96
97
        //delete form_rayon;
        //delete grid;
98
    }
99
100
101

}

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
void NouveauModele::affGrille() {
    delete grid;
    grid = new QTableWidget(5, 5);
    form_param->addWidget(grid, 0, 0, 8, 1);

    grid->horizontalHeader()->setVisible(false); //Pas de nom pour les colonnes.
    grid->verticalHeader()->setVisible(false);
    grid->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //Pas de barre pour scroller.
    grid->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

    for(unsigned int i=0; i<5; i++){
        for(unsigned int j=0; j<5; j++)
        {
            grid->setRowHeight(j,80);
            grid->setColumnWidth(j, 80);
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132

            /*
            int x = i-3;
            int y = -1*(j-2);
            std::string co = "(";
            co += x;
            co += ",";
            co += y;
            co += ")";
            QString coordonnees = co;
            */

            grid->setItem(i, j, new QTableWidgetItem);
            grid->item(i, j)->setFlags(Qt::ItemIsEnabled);


133
134
        }
    }
135
136
137
138
139
140
    connect(grid, SIGNAL(clicked(const QModelIndex&)), this, SLOT(modifGrille(const QModelIndex&)));
}

void NouveauModele::modifGrille(const QModelIndex& index){
    unsigned int i = index.row();
    unsigned int j = index.column();
141

142
143
    QColor rouge = Qt::red;
    grid->item(i,j)->setBackground(rouge);
144
145
146
}