-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmainwindow.h
More file actions
172 lines (151 loc) · 5.77 KB
/
mainwindow.h
File metadata and controls
172 lines (151 loc) · 5.77 KB
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
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/*!
* \file mainwindow.h
* \brief Fichier header de la classe MainWindow.
* \author Han Jia & Antoine Hars
*/
/* UV: LO21 - projet
* Sujet: Calculatrice à notation polonaise inversée
* Auteurs: Han Jia & Antoine Hars
* File: mainwindow.h
*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMessageBox>
#include <QtGui>
#include "operateur.h"
#include "pile.h"
#include "expression.h"
#include "observateurMW.h"
#include "logSystem.h"
namespace Ui {
class MainWindow;
}
/*! \class MainWindow
* \brief Classe permettant de créer une calculatrice.
* La classe MainWindow permet de créer l'interface graphique de la calculatrice et d'effectuer les opérations sur les constantes de la pile.
*/
class MainWindow : public QMainWindow, public Operateur, public ObservateurMW
{
Q_OBJECT
private:
QString type; // Radian ou degrès, initialisé à radian.
QString mode; // Entier ou rationnel ou réel, initialisé à entier.
bool com; // Utilisation des complexes ou non, initialisé à false pour les non-complexes.
Expression expPile; // Sauvegarde de l'expression.
int test; // marque si c'est une expression et si c'est deja évalué, initialisé a 0.
QString memoire; // Pour la fonction rétablir.
static MainWindow * instanceUnique;
Ui::MainWindow * ui;
// Constructeurs et Destructeurs.
/*!
* \brief Constructeur par défaut de MainWindow.
* Constructeur par défaut de la class MainWindow.
*/
MainWindow();
/*!
* \brief Constructeur par recopie de MainWindow.
* Constructeur par recopie de la classe MainWindow.
* \param Objet de la classe MainWindow.
*/
MainWindow(const MainWindow &);
/*!
* \brief Constructeur de MainWindow à partir d'un QWidget
* Constructeur à partir d'un QWidget.
* \param parent correspondant à l'adresse de l'objet parent.
*/
explicit MainWindow(QWidget * parent = 0);
/*!
* \brief Destructeur de MainWindow.
* Destructeur de la classe MainWindow.
*/
virtual ~MainWindow();
/*!
* \brief Méthode de MainWindow pour l'opérateur = entre deux objets MainWindow.
* Méthode de la classe MainWindow pour la copie avec l'opérateur = entre deux objets MainWindow.
*/
void operator=(const MainWindow &);
public:
/*!
* \brief Méthode de MainWindow du Design Pattern Singleton pour créer un objet MainWindow.
* Méthode de la classe MainWindow pour limiter le nombre d'instanciations de l'interface graphique.
* \return Objet de la classe MainWindow.
*/
// Singleton.
static MainWindow & donneInstance();
/*!
* \brief Méthode de MainWindow du Design Pattern Singleton pour détruire un objet MainWindow.
* Méthode de la classe MainWindow pour détruire une instanciation de l'interface graphique.
*/
static void libereInstance();
/*!
* \brief Méthode de MainWindow du Design Pattern Observer entre Pile et MainWindow.
* Méthode de la classe MainWindow pour afficher tous les changements de la Pile.
*/
// Observer.
void miseAJour();
/*!
* \brief Fonction qui permet de sauvegarder le contexte de la calculatrice.
* Fonction qui permet de sauvegarder le contexte de la calculatrice.
*/
void save();
/*!
* \brief Fonction qui permet de charger le contexte de la calculatrice.
* Fonction qui permet de charger le contexte de la calculatrice.
*/
void load();
private slots:
void num0Pressed();
void num1Pressed();
void num2Pressed();
void num3Pressed();
void num4Pressed();
void num5Pressed();
void num6Pressed();
void num7Pressed();
void num8Pressed();
void num9Pressed();
void pointPressed(); // .
void plusPressed(); // +
void dimPressed(); // -
void multPressed(); // *
void divPressed(); // /
void dollarPressed(); // $
void spacePressed(); // SPACE
void about(); // Information sur ce projet.
void entrerPressed(); // =
void clearPressed(); // Clear.
void annulerPressed(); // Annuler
void retablirPressed(); // Rétablir
void factPressed(); // !
void sinPressed(); // sin
void cosPressed(); // cos
void tanPressed(); // tan
void sinhPressed(); // sinh
void coshPressed(); // cosh
void tanhPressed(); // tanh
void logPressed(); // log
void lnPressed(); // ln
void swapPressed(); // SWAP num x et num y dans la pile.
void sumPressed(); // Somme des x premiers éléments de la pile.
void meanPressed(); // Moyenne des x premiers éléments de la pile.
void dupPressed(); // Duplique le premier élément de la pile.
void dropPressed(); // Supprime le premier élément de la pile.
void radSelected(); // Basculer en radian.
void degSelected(); // Basculer en degrès.
void entierPressed(); // Changer le type en entier.
void rationnelPressed(); // Changer le type en rationnel.
void reelPressed(); // Changer le type en réel.
void complexePressed(); // Changer le type en non complexe.
void nonComplexePressed(); // Changer le type en non complexe.
void expressionPressed(); // '
void evalPressed(); // Évaluation d'une expression.
void powPressed(); // POW
void modPressed(); // %
void signPressed(); // SIGN
void invPressed(); // INV
void sqrtPressed(); // SQRT
void sqrPressed(); // SQR
void cubePressed(); // CUBE
};
#endif // MAINWINDOW_H