source: mmcs/mainwindow.H @ e62517a

Last change on this file since e62517a was e62517a, checked in by rudmanmrrod <rudman22@…>, 8 years ago

Migrado el proyecto a la versión 5 de Qt, agregado primer boceto del PDF

  • Property mode set to 100755
File size: 10.9 KB
Line 
1#ifndef MAINWINDOW_H
2#define MAINWINDOW_H
3
4#include <QtWidgets>
5
6#include <formloadmatrix.H>
7#include <ui_formLoadMatrix.h>
8#include <formviewmatrix.H>
9#include <formvariablesexogenas.h>
10#include <formexportmatrix.h>
11#include <formencadenamientos.h>
12#include <ui_formcompararresultados.h>
13#include <formcompararresultados.h>
14#include <ui_formcompararmnc.h>
15#include <formcompararmnc.h>
16#include "ui_formincidenciai.h"
17#include <formincidenciai.h>
18#include <formpreciosnohomogeneos.h>
19#include <formexportreport.h>
20#include <ui_formexportreport.h>
21#include <genericFunctions.h>
22
23#include <sstream>
24#include <stackwidget.H>
25#include <stackvariablesexogenas.h>
26#include <stackencadenamientos.h>
27#include <stackpreciosnohomogeneos.h>
28
29#include <QTabWidget>
30
31#include <QMap>
32#include <QVector>
33#include <QPrinter>
34
35#include <Eigen>
36
37
38class MainWindow : public QMainWindow
39{
40    Q_OBJECT
41
42    QMenu menuFile;
43    QMenu menuTools;
44    QMenu menuViews;
45    QMenu menuHelp;
46
47    QMenu CoeficientesTecnicos;
48    QMenu Encadenamientos;
49
50    QMenu Modelos;
51    QMenu PHClasico;
52    QMenu PHClasicoIncidencia;
53    QMenu PHNoClasico;
54    QMenu PHNoClasicoIncidencia;
55    QMenu PreciosNH;
56    QMenu PreciosNHIncidencia;
57
58    QAction actionLoadMatrix;
59    QAction actionExportMatrix;
60    QAction actionQuit;
61    QAction actionNewProject;
62
63    QAction actionCH;
64    QAction actionCV;
65    QAction actionVariableExogena;
66
67    QAction actionEncadenamiento;
68    QAction actionClasificarCuentas;
69
70    QAction actionModeloClasico;
71    QAction actionCompararResultados;
72    QAction actionModeloNoClasico;
73    QAction actionCompararResultadosMNC;
74
75    QAction actionPHClasicoIncidencia100;
76    QAction actionPHCIncidenciaCuenta;
77    QAction actionPHCIncidenciaComponente;
78
79    QAction actionPHNoClasicoIncidencia100;
80    QAction actionPHNCIncidenciaCuenta;
81    QAction actionPHNCIncidenciaComponente;
82
83    QAction actionPNHIncidencia100;
84    QAction actionPNHIncidenciaCuenta;
85    QAction actionPNHIncidenciaComponente;
86
87    QAction actionSeleccionarTabla;
88
89    QAction actionManual;
90    QAction actionAcercaDe;
91
92    QTableWidget * tableWidget;
93    QTabWidget * tabWidget;
94    QMap<QString,QStringList> diccCuentasExogenas;
95    QMap<int,QVector<QString> > diccCuentasEndogenas;
96    QMap<int,QVector<QString> > espacioCuentasExogenas;
97    QMap<int, QMap<QString,QStringList> > diccCuentasComponentes;
98    QMap<int, QMap<QString,QStringList> > diccCuentasEncadenamientos;
99    QMap<QString,double> totalCuentas;
100
101    QStringList ComponentesEndogenos;
102
103    QTableWidget *MatrizExgEnd;
104
105    stackVariablesExogenas *stackVE;
106    stackEncadenamientos *stackEncadenamiento;
107    StackPreciosNoHomogeneos *stackPNH;
108
109    //Matriz con la tabla principal
110    Eigen::MatrixXd PrincipalTable;
111    //Tabla de Exogenas y Endogenas
112    Eigen::MatrixXd EndogenasyExogenas;
113    //Tabla del sector B (exogena/endogena)
114    Eigen::MatrixXd ExoEndo;
115    //Matriz del Coeficiente Técnico
116    Eigen::MatrixXd An;
117    Eigen::MatrixXd MBn;
118    //Matrices de los múltiplicadores de lontief
119    Eigen::MatrixXd MatrixMa;
120    Eigen::MatrixXd MatrixMb;
121    Eigen::MatrixXd MatrizMat;
122    Eigen::MatrixXd MatrizMbt;
123
124
125    QString csvFilePath;
126    char csvSeparator;
127    int numAccounts;
128    int matrixSize;
129    int precission;
130
131    QString componentePNH;
132
133    Eigen::MatrixXd MatrizEndogenaEndogena;
134
135    int opcionCuentaExogena;
136    int opcionVentanaExogena;
137    int opcionExportarMatriz;
138    int opcionEncadenamientos;
139    int opcionCuentaEncadenamientos;
140    int opcionMa;
141    int opcionMb;
142    int opcionFormCompararResultados;
143    int opcionFormCompararResultadosMNC;
144    int opcionMAT;
145    int opcionMBT;
146    int opcionPNHT;
147    int opcionFormPNH;
148
149    QVector<double> subtotalEnd;
150    QVector<double> subtotalExog;
151    QVector<double> subtotalExogEnd;
152    QVector<double> Vpond;
153
154    int cantidadSelecciones;
155    int cantidadEncadenamientos;
156    int cantidadEscenarios;
157    int cantidadResultados;
158    int cantidadMNC;//Cantidad de Modelos No Clasicos
159    int cantidadResultadosMNC;
160    //Cantidad de resultados de incidencia en modelo de precios homogéneos clásico
161    int cantidadPHCindidenciaiCuenta;
162    int cantidadPHCindidenciaiComponente;
163    //Cantidad de resultados de incidencia en modelo de precios homogéneos no clásico
164    int cantidadPHNCindidenciaiCuenta;
165    int cantidadPHNCindidenciaiComponente;
166    //Cantidad de resultados de incidencia en modelo de precios no homogéneos
167    int cantidadPNHincidencia100;
168    int cantidadPNHincidenciaiCuenta;
169    int cantidadPNHincidenciaiComponente;
170
171    FormLoadMatrix * formLoadMatrix;
172    FormMatrixView * formViewMatrix;
173    FormVariablesExogenas * formVariablesExogenas;
174    FormExportMatrix * formExportMatriz;
175    FormEncadenamientos * formEncadenamientos;
176    FormCompararResultados *formCompararResultados;
177    FormCompararMNC *formCompararMNC;
178    FormIncidenciaI *FI;
179    FormPreciosNoHomogeneos * formPreciosNoHomogeneos;
180
181    void initGUI();
182
183    void createCentralWidget();
184    void createMatrixCentralWidget();
185    void loadsAccounts(QTableWidget *);
186    void hideStackedWidget();
187
188    void createMenuBar();
189    void matricesMenuBar();
190    void populateTable(QTableWidget *);
191
192    void CalcularTotales(QTableWidget *, int inicio, bool &);
193    void TotalPrincipalTable(QTableWidget *, Eigen::MatrixXd & , int init);
194    bool comprobarNombreCuenta(QString, int indice);
195    void clonarTabla(QTableWidget *,QTableWidget *, int cantidad);
196    void setAccountTitle(QTableWidget *);
197    void insertremoveRowCol(QTableWidget *, int rowcol, bool opcion);
198    void crearDiccionario(QTableWidget *, bool endogena=true);
199    QStringList obtenerCuentasEndogenas(QTableWidget *,QStringList);
200    QStringList obtenerCuentasExogenas(QTableWidget *,QStringList );
201    void spanEndogenaCell(QTableWidget *, int inicio, int celda, bool endex=true);
202    void spanExogenaCell(QTableWidget *,int celda);
203
204    void TotalEndoExoTable(int elementos, int cantidad);
205
206    void setEndogenaExogenaCell(QTableWidget *, int inicioExogena, int elementos,bool condicion);
207    void CalcularAn(QTableWidget *, QTableWidget *, QTableWidget *, int count, bool endogena = false);
208    QString Separador(QTableWidgetItem *,bool quitar);
209    void EndogenaAn();
210
211    void calcularTotalCuentas(QTableWidget *);
212    void estimarVectorPonderacion();
213
214    void obtenerCuentaComponentes();
215    void crearMatrizEncadenamiento(QTableWidget *, QTableWidget *);
216    void crearMatrizEncadenamientoEndogena(QTableWidget *, QTableWidget *, Eigen::MatrixXd Matrix);
217    void calcularTotalesEncadenamientos(QTableWidget *);
218    void cuentacomponentesEncadenamiento(QTableWidget *, int count);
219    void obtenerUiUj(QTableWidget *, QVector<double> &, QVector<double> &);
220    void calcularClasificador(QTableWidget *, QVector<double>, QVector<double>, int init = 2);
221    void agregarPrimeraCelda(QTableWidget *);
222
223    void calcularSubtotal(QTableWidget *,int inicio, int fin,int exogena);
224    void llenarEscenario(QTableWidget *, bool clasico=true);
225    void calcularFinEscenario(QTableWidget *);
226    QVector<double> obtenerResultadoEscenario(QVector<double>);
227    QStringList obtenerNombreResultadoEscenario();
228    void cuentacomponentesResultado(QTableWidget *, int count, bool clasico = true);
229
230    void obtenerMatrizExgEnd();
231    void crearMatrizExgEnd(QTableWidget *,QTableWidget *,int elementos,int inicioExogena);
232    void calcularMatrizExgEnd(QTableWidget *);
233    void ctvMatrizExgEnd(QTableWidget *, QTableWidget *);
234    void titlespanMatrizExgEnd(QTableWidget *);
235    void estimarMb(QTableWidget *, QTableWidget *);
236    void calcularSubtotalEndExg();
237    QVector<double> obtenerResultadoEscenarioMNC(QVector<double>);
238    void calcularFinEscenarioMNC(QTableWidget *);
239    QStringList obtenerNombreResultadoEscenarioMNC();
240
241    void restarIdentidadAn(QTableWidget *);
242    void titleEndogena(QTableWidget *);
243
244    void calcularMaT();
245    void calcularPHCIncidencia100(QTableWidget *);
246    void calcularPHCIncidenciaI(QTableWidget *, QMap<QString, double>);
247    void calcularPHCIncidenciaIComponente(QTableWidget *,QTableWidget *);
248
249    void calcularMbT();
250    void calcularMb();
251    void calcularPHNCIncidencia100(QTableWidget *);
252    void calcularVectorSend(QString componente, QVector<double> &);
253    void multiplicarMatricesPNH(QTableWidget *, QVector<double>);
254    void calcularPNHIncidencia100(QTableWidget *, Eigen::MatrixXd Diagonal);
255    void crearFormularioPNH();
256    QStringList obtenerCuentas();
257
258    bool ComprobarCuentas();
259    int ObtenerIndice(QString );
260
261    QStringList ObtenerNombreCuenta(int contador);
262    QList<int> ObtenerLimitesCuenta(int contador,int opccion);
263
264protected:
265    void closeEvent(QCloseEvent *);
266
267private slots:
268    void slotNuevoProyecto();
269    void slotLoadMatrix();
270    void slotExportMatrix();
271
272    void slotFormLoadMatrixAccepted(const QString &, int, int);
273    void slotFormLoadMatrixClosed();
274    void slotOnlyaccount();
275    void slotOnlycomponent();
276
277    void AgregarCuenta();
278    void RestaurarCeldas();
279    void FinalizarCuentas();
280    void ModificarCuenta();
281    void slotCoeficienteHorizontal();
282    void slotCoeficienteVertical();
283    void slotAccChange();
284
285    //Slots para las variables exógenas
286    void slotVariableExogena();
287    void slotCloseExogena();
288    void slotAgregarExogena();
289    void slotFinalizarExogena();
290    void slotDeshacerExogena();
291
292    void slotMa();
293
294    //Slots para encadenamientos
295    void slotEncadenamientos();
296    void slotCloseEncadenamiento();
297    void slotAgregarEncadenamiento();
298    void slotVerEncadenamiento();
299    void slotClasificarCuentas();
300
301    //Slots para reportes
302    void slotEncadenamientoReport();
303    void slotGenerarEncadenamientoReport(QString);
304
305    //Slots para exportar
306    void slotCloseExport();
307    void slotSaveExport();
308    void slotSearchExport();
309
310    //Slots para el modelo clásico
311    void slotModeloClasico();
312    void calcularEscenario(bool clasico = true);
313    void finalizarEscenario();
314
315    //Slots para el modelo no clásico
316    void slotModeloNoClasico();
317    void calcularEscenarioNC();
318    void finalizarEscenarioNC();
319
320    void slotCompararResultadosMNC();
321    void slotVerResultadoMNC();
322
323    void slotPHCIncidencia100();
324    void slotPHCIncidenciaiCuenta();
325    void slotCalcularPHCIncidenciaiCuenta();
326    void slotPHCIncidenciaiComponente();
327    void slotCalcularPHCIncidenciaiComponente();
328
329    void slotCompararResultados();
330    void slotVerResultado();
331
332    void slotPHNCIncidencia100();
333    void slotPHNCIncidenciaiCuenta();
334    void slotCalcularPHNCIncidenciaiCuenta();
335    void slotPHNCIncidenciaiComponente();
336    void slotCalcularPHNCIncidenciaiComponente();
337
338    void slotPNHIncudencia100();
339    void slotCloseformPNH();
340    void slotSelectPNH();
341    void slotPNHIncidenciaiCuenta();
342    void slotPNHIncidenciaiComponente();
343    void slotSelectPNHi();
344    void slotCalcularPNHIncidenciaiCuenta();
345    void slotSelectPNHic();
346    void slotCalcularPNHIncidenciaiComponente();
347
348    void slotSeleccionarTabla();
349
350    //Slots del menú de ayuda
351    void abrirManual();
352    void acercaDe();
353
354public:
355    MainWindow();
356    QString numberFormat(double &);
357};
358
359#endif // MAINWINDOW_H
Note: See TracBrowser for help on using the repository browser.