autocell.h 4.26 KB
Newer Older
Victor Blanchet's avatar
Victor Blanchet committed
1
2
3
#ifndef AUTOCELL_H
#define AUTOCELL_H

Romain De Laage De Bellefaye's avatar
Romain De Laage De Bellefaye committed
4
#include <reseau_cellule_etats.h>
Victor Blanchet's avatar
Victor Blanchet committed
5

6
#include <memory>
Victor Blanchet's avatar
Victor Blanchet committed
7
#include <QObject>
Victor Blanchet's avatar
Victor Blanchet committed
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <QApplication>
#include <QPushButton>
#include <QWidget>
#include <QLineEdit>
#include <QLabel>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QComboBox>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QHeaderView>
#include <QLayoutItem>
#include <QFont>
#include <QPushButton>
#include <QCheckBox>
#include <QFormLayout>
Victor Blanchet's avatar
Victor Blanchet committed
24
#include <QSpinBox>
Victor Blanchet's avatar
Victor Blanchet committed
25

Victor Blanchet's avatar
Victor Blanchet committed
26
27
using namespace std;

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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/// Classe représentant l'interface principale de l'application
class AutoCell : public QWidget {
		static std::unique_ptr<AutoCell> instance;

		unique_ptr<Reseau> Grille = nullptr;
		std::vector<QString> listeGrille;

		Q_OBJECT
		QGridLayout* general;

		//définition de la frame choix du modèle
		QWidget* win_model_choice;
		QLabel* lab_model_choice;
		QComboBox* liste;
		QGridLayout* grid_model_choice;
		QPushButton* button_add_model;

		//définition de la frame initialisation
		QWidget* win_init;
		QLabel* lab_init;
		QGridLayout* form_init;

		QFormLayout* form_saved_grids;
		QFormLayout* form_config;

		QComboBox *list_grids;
		QCheckBox* check_load_grid;

		QLineEdit* edit_largeur;
		QLineEdit* edit_hauteur;
		QCheckBox* check_aleatoire;
		QPushButton* button_valide_init;

		//définition de la frame "panneau de contrôle de l'exécution"
		QWidget* win_run_ctrl;
		QLabel* lab_run_crtl;

		QGridLayout* grid_run_control;

		QCheckBox* matriceTorique;
		QLabel* lab_time_step;
		QSpinBox* spin_time_step;
		QPushButton* button_prev;
		QPushButton* button_run;
		QPushButton* button_next;
		QPushButton* button_reinitialiser;

		QLabel* lab_nb_step;
		QLineEdit* edit_nb_step;
		QLabel* lab_periode;
		QLineEdit* edit_periode;

		QLabel* lab_sauv_grille;
		QLineEdit* edit_nom_grille;
		QPushButton* button_save_grid;

		//définition de la frame affichage de la grille
		QWidget* win_grid;
		QTableWidget* grid;

		//notice
		std::unique_ptr<QWidget> fenetre_notice;
		std::unique_ptr<QLabel> lab_notice;

		explicit AutoCell(QWidget* parent=nullptr);
		friend class NouveauModele;

	public:
		/// Obtenir une référence vers l'instance unique du singleton AutoCell
		static AutoCell& getInstance() {
			if(instance == nullptr) {
				instance.reset(new AutoCell);
			}
			return *instance;
		}

	public slots:
		//void chargerModele();
		//void listerModele(); //à faire en dernier
		/// slot pour charger les Reseau disponibles pour le modèle sélectionné
		void chargerGrilles();
		//void listerGrille(); //déjà réfléchir à la recopie
		//Reseau initialiserGrille(); //méthode à implémenter qui récupère les données du formulaire - penser à réinitialiser les données annexes
		//void afficherGrille(Reseau&); //affiche une grille
		//void chargerGrilles(const QString &text);
		/// Afficher un Reseau dans l'espace dédié
		/// @param[in] Grille pointeur vers le Reseau à afficher
		void afficherGrille(const Reseau* Grille);
		/// Initialiser un Reseau
		void initialiserGrille();
		/// Remettre à 0 la simulation
		void RAZ();
		/// Gérer la mise en route automatique ou non
		void gererSimulation();
		//void sauvegarderGrille();
		//Reseau& modifierCellule(const QModelIndex&, Reseau& Grille);//à implémenter
		/// Modifier l'état d'une cellule de la grille affichée (par clic par exemple)
		/// @param[in] index localisation de la cellule à modifier
		void modifierCellule(const QModelIndex& index);
		/// Sauvegarder le Reseau courant dans la BDD
		void sauvegarderGrille();
		/// Créer un nouveau modèle
		void defNouveauModele();
		/// Afficher une boîte d'erreur
		/// @param[in] msg Message à afficher
		void afficherErreur(QString& msg);
		/// Initialiser un Automate par son nom
		/// @param[in] nom de l'Automate à initialiser
		void initAutomate(const QString& name);
		/// Changer le délai de l'Automate
		void changeDelai();
		/// Aller en arrière dans la simulation
		void previous();
		/// Aller en avant dans la simulation
		void next();
		/// Changer le comportement de la matrice aux frontières
		/// @param[in] val comportement à avoir (true = matrice torique, false = ignorer)
		void setMatriceTorique(int val);
		/// Revenir au réseau initial
		void reinitialiserSimulation();
		///Afficher la notice d'utilisation
		void afficherNotice();
Victor Blanchet's avatar
Victor Blanchet committed
150
151
152
};

#endif // AUTOCELL_H