source: mmcs/mainwindow.H @ dfabbb4

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

Agregada librería para los reportes, modificados los encadenamientos para funcionar por CW(en An) y Rassmusen(Ma)

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