-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcalculatricepolonaise.h
147 lines (123 loc) · 3.46 KB
/
calculatricepolonaise.h
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
#ifndef CALCULATRICEPOLONAISE_H
#define CALCULATRICEPOLONAISE_H
#include <QMainWindow>
#include <QtGui>
#include <QStack>
#include "complexereelfactory.h"
#include "complexerationnelfactory.h"
#include "rationnelfactory.h"
#include "expression.h"
#include "calculatriceexception.h"
#include "evalexception.h"
#include "trigoexception.h"
#include "divexception.h"
#include "operationbinaire.h"
#include "operationunaire.h"
#include "savedstate.h"
#include "logsystem.h"
namespace Ui {
class CalculatricePolonaise;
}
/**
* Classe principale de l'application. Comporte une pile de pointeurs sur Constante, ainsi qu'un pointeur sur ConstanteFactory instanciée selon le bon type
* Les modes sont geres a l'aide de variables de classes statiques constantes.
*/
class CalculatricePolonaise : public QMainWindow
{
Q_OBJECT
public:
const static int MODE_ENTIER = 0;
const static int MODE_RATIONNEL = 1;
const static int MODE_REEL = 2;
const static int MODE_AVEC_COMPLEXES = 3;
const static int MODE_SANS_COMPLEXES = 4;
const static int MODE_DEGRE = 5;
const static int MODE_RADIAN = 6;
explicit CalculatricePolonaise(QWidget *parent = 0);
~CalculatricePolonaise();
protected:
// Events
void closeEvent(QCloseEvent *event);
private:
Ui::CalculatricePolonaise *ui;
QStack<Constante*> pile;
QStack<SavedState> mHistoryStackPrecedent;
QStack<SavedState> mHistoryStackSuivant;
int maxAffichage;
void setShortcuts();
void setConnections();
void setContext();
void setFactory();
void buttonChiffrePressed(int valeurBouton);
void updateAffichage();
void showError(const QString& s);
bool erreurOpUnaire();
bool erreurOpBinaire();
void saveSettings();
void saveContext();
Constante *nombreCourant;
ConstanteFactory* mFactory;
int modeConstante;
int modeComplexes;
int modeDeg;
// Clavier Layout dimensions
QRect dimOperationsGenerales;
QRect dimOperationsPile;
QRect dimOperations;
// LogSystem
LogSystem* mLogSys;
// Settings
QSettings* mSettings;
private slots:
// Actions
void aPropos();
void aProposDeQt();
void quitterCalculatrice();
void undo();
void redo();
// PushButtons
void button0Pressed();
void button1Pressed();
void button2Pressed();
void button3Pressed();
void button4Pressed();
void button5Pressed();
void button6Pressed();
void button7Pressed();
void button8Pressed();
void button9Pressed();
void buttonPlusPressed();
void buttonMoinsPressed();
void buttonMultPressed();
void buttonDivPressed();
void buttonVirgulePressed();
void buttonPushPressed();
void buttonClearPressed();
void buttonDupPressed();
void buttonDropPressed();
void buttonSumPressed();
void buttonMeanPressed();
void buttonSwapPressed();
void buttonCancelPressed();
void buttonExpPressed();
void buttonDollarPressed();
void buttonEvalPressed();
void buttonCosPressed();
void buttonSinPressed();
void buttonTanPressed();
void buttonCoshPressed();
void buttonSinhPressed();
void buttonTanhPressed();
// Checkboxs
void cacherClavier(int newstate);
void modeEntier();
void modeRationnel();
void modeReel();
void modeAvecComplexes();
void modeSansComplexes();
void modeDegres();
void modeRadians();
// Spinboxs
void setMaxAffichage(int max);
};
#endif // CALCULATRICEPOLONAISE_H