source: mmcs/mainwindow.H @ b23848e

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

Agregada la funcionalidad para exportar el gráfico de encadenamientos

  • 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
230    void calcularSubtotal(QTableWidget *,int inicio, int fin,int exogena);
231    void llenarEscenario(QTableWidget *, bool clasico=true);
232    void calcularFinEscenario(QTableWidget *);
233    QVector<double> obtenerResultadoEscenario(QVector<double>);
234    QStringList obtenerNombreResultadoEscenario();
235    void cuentacomponentesResultado(QTableWidget *, int count, bool clasico = true);
236
237    void obtenerMatrizExgEnd();
238    void crearMatrizExgEnd(QTableWidget *,QTableWidget *,int elementos,int inicioExogena);
239    void calcularMatrizExgEnd(QTableWidget *);
240    void ctvMatrizExgEnd(QTableWidget *, QTableWidget *);
241    void titlespanMatrizExgEnd(QTableWidget *);
242    void estimarMb(QTableWidget *, QTableWidget *);
243    void calcularSubtotalEndExg();
244    QVector<double> obtenerResultadoEscenarioMNC(QVector<double>);
245    void calcularFinEscenarioMNC(QTableWidget *);
246    QStringList obtenerNombreResultadoEscenarioMNC();
247
248    void restarIdentidadAn(QTableWidget *);
249    void titleEndogena(QTableWidget *);
250
251    void calcularMaT();
252    void calcularPHCIncidencia100(QTableWidget *);
253    void calcularPHCIncidenciaI(QTableWidget *, QMap<QString, double>);
254    void calcularPHCIncidenciaIComponente(QTableWidget *,QTableWidget *);
255
256    void calcularMbT();
257    void calcularMb();
258    void calcularPHNCIncidencia100(QTableWidget *);
259    void calcularVectorSend(QString componente, QVector<double> &);
260    void multiplicarMatricesPNH(QTableWidget *, QVector<double>);
261    void calcularPNHIncidencia100(QTableWidget *, Eigen::MatrixXd Diagonal);
262    void crearFormularioPNH();
263    QStringList obtenerCuentas();
264
265    //Función estimar los vectores fila y columna para la clasificación en los encadenamientos
266    void estimarVIFVC();
267    //Función para estimar la clasificación de las cuentas por CW o Rassmusen
268    void estimarClasificador(double &, double &, int index, int total = 0);
269    //Función para determinar los clasificadores
270    void determinarClasificador(QTableWidget *, int index_table, int element, int total = 0);
271
272    bool ComprobarCuentas();
273    int ObtenerIndice(QString );
274
275    QStringList ObtenerNombreCuenta(int contador);
276    QList<int> ObtenerLimitesCuenta(int contador,int opccion);
277
278protected:
279    void closeEvent(QCloseEvent *);
280
281private slots:
282    void slotNuevoProyecto();
283    void slotLoadMatrix();
284    void slotExportMatrix();
285
286    void slotFormLoadMatrixAccepted(const QString &, int, int);
287    void slotFormLoadMatrixClosed();
288    void slotOnlyaccount();
289    void slotOnlycomponent();
290
291    void AgregarCuenta();
292    void RestaurarCeldas();
293    void FinalizarCuentas();
294    void ModificarCuenta();
295    void slotCoeficienteHorizontal();
296    void slotCoeficienteVertical();
297    void slotAccChange();
298
299    //Slots para las variables exógenas
300    void slotVariableExogena();
301    void slotCloseExogena();
302    void slotAgregarExogena();
303    void slotFinalizarExogena();
304    void slotDeshacerExogena();
305
306    void slotMa();
307
308    //Slots para encadenamientos
309    void slotEncadenamientos();
310    void slotCloseEncadenamiento();
311    void slotAgregarEncadenamiento();
312    void slotVerEncadenamiento();
313
314    //Slots para reportes
315    void slotEncadenamientoReport();
316    void slotGenerarEncadenamientoReport(QString,bool);
317
318    //Slots para gráfico
319    void slotEncadenamientoGraphic();
320
321    //Slots para exportar
322    void slotCloseExport();
323    void slotSaveExport();
324    void slotSearchExport();
325
326    //Slots para el modelo clásico
327    void slotModeloClasico();
328    void calcularEscenario(bool clasico = true);
329    void finalizarEscenario();
330
331    //Slots para el modelo no clásico
332    void slotModeloNoClasico();
333    void calcularEscenarioNC();
334    void finalizarEscenarioNC();
335
336    void slotCompararResultadosMNC();
337    void slotVerResultadoMNC();
338
339    void slotPHCIncidencia100();
340    void slotPHCIncidenciaiCuenta();
341    void slotCalcularPHCIncidenciaiCuenta();
342    void slotPHCIncidenciaiComponente();
343    void slotCalcularPHCIncidenciaiComponente();
344
345    void slotCompararResultados();
346    void slotVerResultado();
347
348    void slotPHNCIncidencia100();
349    void slotPHNCIncidenciaiCuenta();
350    void slotCalcularPHNCIncidenciaiCuenta();
351    void slotPHNCIncidenciaiComponente();
352    void slotCalcularPHNCIncidenciaiComponente();
353
354    void slotPNHIncudencia100();
355    void slotCloseformPNH();
356    void slotSelectPNH();
357    void slotPNHIncidenciaiCuenta();
358    void slotPNHIncidenciaiComponente();
359    void slotSelectPNHi();
360    void slotCalcularPNHIncidenciaiCuenta();
361    void slotSelectPNHic();
362    void slotCalcularPNHIncidenciaiComponente();
363
364    void slotSeleccionarTabla();
365
366    //Slots del menú de ayuda
367    void abrirManual();
368    void acercaDe();
369
370public:
371    MainWindow();
372    QString numberFormat(double &);
373};
374
375#endif // MAINWINDOW_H
Note: See TracBrowser for help on using the repository browser.