source: mmcs/mainwindow.H @ 4c71262

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

Arreglado bug en los encadenamientos

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