source: mmcs/mainwindow.H @ 04999c9

matrices
Last change on this file since 04999c9 was 04999c9, checked in by rboet <rboet@…>, 9 years ago

funcionabilidad de modelo de precios no homogéneos incorporada

  • Property mode set to 100644
File size: 10.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
19#include <sstream>
20#include <stackwidget.H>
21#include <stackvariablesexogenas.h>
22#include <stackencadenamientos.h>
23#include <stackpreciosnohomogeneos.h>
24
25#include <QTabWidget>
26
27#include <QMap>
28#include <QVector>
29
30#include <Eigen>
31
32
33class MainWindow : public QMainWindow
34{
35    Q_OBJECT
36
37    QMenu menuFile;
38    QMenu OpMatrices;
39    QMenu menuTools;
40    QMenu menuViews;
41    QMenu menuHelp;
42    QMenu EndoExo;
43
44    QMenu Modelos;
45    QMenu PHClasico;
46    QMenu PHClasicoIncidencia;
47    QMenu PHNoClasico;
48    QMenu PHNoClasicoIncidencia;
49    QMenu PreciosNH;
50    QMenu PreciosNHIncidencia;
51
52    QAction actionLoadMatrix;
53    QAction actionExportMatrix;
54    QAction actionQuit;
55    QAction actionNewProject;
56
57    QAction actionCH;
58    QAction actionCV;
59    QAction actionVariableExogena;
60    QAction actionCTVEndEx;
61    QAction actionLa;
62
63    QAction actionEncadenamiento;
64
65    QAction actionModeloClasico;
66    QAction actionCompararResultados;
67    QAction actionModeloNoClasico;
68    QAction actionCompararResultadosMNC;
69
70    QAction actionPHClasicoIncidencia100;
71    QAction actionPHCIncidenciaCuenta;
72    QAction actionPHCIncidenciaComponente;
73
74    QAction actionPHNoClasicoIncidencia100;
75    QAction actionPHNCIncidenciaCuenta;
76    QAction actionPHNCIncidenciaComponente;
77
78    QAction actionPNHIncidencia100;
79    QAction actionPNHIncidenciaCuenta;
80    QAction actionPNHIncidenciaComponente;
81
82    QTableWidget * tableWidget;
83    QTabWidget * tabWidget;
84    QMap<QString,QStringList> diccCuentasExogenas;
85    QMap<int,QVector<QString> > diccCuentasEndogenas;
86    QMap<int,QVector<QString> > espacioCuentasExogenas;
87    QMap<QString,QStringList> diccCuentasComponentes;
88    QMap<QString,QStringList> diccCuentasEncadenamientos;
89    QMap<QString,double> totalCuentas;
90
91    QStringList ComponentesEndogenos;
92
93    QTableWidget *MatrizExgEnd;
94
95    stackVariablesExogenas *stackVE;
96    stackEncadenamientos *stackEncadenamiento;
97    StackPreciosNoHomogeneos *stackPNH;
98
99    Eigen::MatrixXd MatrixMa;
100    Eigen::MatrixXd MatrixMb;
101    Eigen::MatrixXd MatrizMat;
102    Eigen::MatrixXd MatrizMbt;
103
104
105    QString csvFilePath;
106    char csvSeparator;
107    int numAccounts;
108    int matrixSize;
109    int precission;
110    double  matrix[100][100];
111
112    QString componentePNH;
113
114    double MatrizEndogenaEndogena[200][200];
115
116    int opcionCuentaExogena;
117    int opcionVentanaExogena;
118    int opcionExportarMatriz;
119    int opcionEncadenamientos;
120    int opcionCuentaEncadenamientos;
121    int opcionMa;
122    int opcionMb;
123    int opcionFormCompararResultados;
124    int opcionFormCompararResultadosMNC;
125    int opcionMAT;
126    int opcionMBT;
127    int opcionPNHT;
128    int opcionFormPNH;
129
130    QVector<double> subtotalEnd;
131    QVector<double> subtotalExog;
132    QVector<double> subtotalExogEnd;
133    QVector<double> Vpond;
134
135    int cantidadEncadenamientos;
136    int cantidadEscenarios;
137    int cantidadResultados;
138    int cantidadMNC;//Cantidad de Modelos No Clasicos
139    int cantidadResultadosMNC;
140    //Cantidad de resultados de incidencia en modelo de precios homogéneos clásico
141    int cantidadPHCindidenciaiCuenta;
142    int cantidadPHCindidenciaiComponente;
143    //Cantidad de resultados de incidencia en modelo de precios homogéneos no clásico
144    int cantidadPHNCindidenciaiCuenta;
145    int cantidadPHNCindidenciaiComponente;
146    //Cantidad de resultados de incidencia en modelo de precios no homogéneos
147    int cantidadPNHincidencia100;
148    int cantidadPNHincidenciaiCuenta;
149    int cantidadPNHincidenciaiComponente;
150
151    FormLoadMatrix * formLoadMatrix;
152    FormViewMatrix * formViewMatrix;
153    FormVariablesExogenas * formVariablesExogenas;
154    FormExportMatrix * formExportMatriz;
155    FormEncadenamientos * formEncadenamientos;
156    FormCompararResultados *formCompararResultados;
157    FormCompararMNC *formCompararMNC;
158    FormIncidenciaI *FI;
159    FormPreciosNoHomogeneos * formPreciosNoHomogeneos;
160
161    void initGUI();
162
163    void createCentralWidget();
164    void createMatrixCentralWidget();
165
166    void createMenuBar();
167    void matricesMenuBar();
168    void populateTable(QTableWidget *);
169    void CalcularTotales(QTableWidget *, int inicio);
170    void loadMatrizExogena();
171    void clonarTabla(QTableWidget *,QTableWidget *, int cantidad);
172    void noEditColZero(QTableWidget *);
173    void setAccountTitle(QTableWidget *);
174    void insertremoveRowCol(QTableWidget *, int rowcol, bool opcion);
175    void crearDiccionario(QTableWidget *, bool endogena=true);
176    QStringList obtenerCuentasEndogenas(QTableWidget *,QStringList);
177    QStringList obtenerCuentasExogenas(QTableWidget *,QStringList );
178    void spanEndogenaCell(QTableWidget *, int inicio, int celda, bool endex=true);
179    void spanExogenaCell(QTableWidget *,int celda);
180    void tableItem(QTableWidget *, int inicio, int fin, QString texto);
181
182    QList<QString> llenarLista(QList<QString>, QTableWidget *, int valor, int opcion);
183    void insertRowExogena(QList<QString>, QTableWidget *, int opcion);
184    void setEndogenaExogenaCell(QTableWidget *, int inicioExogena, int elementos,bool condicion);
185    void CalcularAn(QTableWidget *, QTableWidget *, QTableWidget *, int count, bool endogena = false);
186    QString Separador(QTableWidgetItem *,bool quitar);
187    void ItemsNoEditable(QTableWidget *, int inicio, int fin, int col=0);
188    void CellStyle(QTableWidgetItem *);
189    void CellStyleComponente(QTableWidgetItem *);
190    void CellStyleExEn(QTableWidgetItem *);
191    void EndogenaAn();
192
193    void calcularTotalCuentas(QTableWidget *);
194    void estimarVectorPonderacion(QTableWidget *);
195
196    void obtenerCuentaComponentes();
197    void crearTablaVaciaEncadenamiento(int filas, QTableWidget *, int columnas=4);
198    void crearMatrizEncadenamiento(QTableWidget *, QTableWidget *);
199    void crearMatrizEncadenamientoEndogena(QTableWidget *, QTableWidget *);
200    void calcularTotalesEncadenamientos(QTableWidget *);
201    void encademientosStyle(QTableWidgetItem *);
202
203    void calcularSubtotal(QTableWidget *,int inicio, int fin,int exogena);
204    void llenarEscenario(QTableWidget *, bool clasico=true);
205    void calcularFinEscenario(QTableWidget *);
206    QVector<double> obtenerResultadoEscenario(QVector<double>);
207    QStringList obtenerNombreResultadoEscenario();
208    void crearTablaComparar(QTableWidget *, QTableWidget *);
209    void cuentacomponentesResultado(QTableWidget *, int count, bool clasico = true);
210    void validar();
211
212    void obtenerMatrizExgEnd();
213    void crearMatrizExgEnd(QTableWidget *,QTableWidget *,int elementos,int inicioExogena);
214    void calcularMatrizExgEnd(QTableWidget *);
215    void ctvMatrizExgEnd(QTableWidget *, QTableWidget *);
216    void titlespanMatrizExgEnd(QTableWidget *);
217    void estimarMb(QTableWidget *, QTableWidget *);
218    void calcularSubtotalEndExg();
219    QVector<double> obtenerResultadoEscenarioMNC(QVector<double>);
220    void calcularFinEscenarioMNC(QTableWidget *);
221    QStringList obtenerNombreResultadoEscenarioMNC();
222
223    void crearMatrizEndogena(QTableWidget *);
224    void restarIdentidadAn(QTableWidget *);
225    void titleEndogena(QTableWidget *);
226
227    void calcularMaT();
228    void calcularPHCIncidencia100(QTableWidget *);
229    void calcularPHCIncidenciaI(QTableWidget *, QMap<QString, double>);
230    void calcularPHCIncidenciaIComponente(QTableWidget *,QTableWidget *);
231
232    void calcularMbT();
233    void calcularMb();
234    void calcularPHNCIncidencia100(QTableWidget *);
235    void calcularVectorSend(QString componente, QVector<double> &);
236    void multiplicarMatricesPNH(QTableWidget *, QVector<double>);
237    void calcularPNHIncidencia100(QTableWidget *, Eigen::MatrixXd Diagonal);
238    void crearFormularioPNH();
239
240    bool ComprobarCuentas();
241    int ObtenerIndice(QString );
242
243    QStringList ObtenerNombreCuenta(int contador);
244    QList<int> ObtenerLimitesCuenta(int contador,int opccion);
245    QStringList ObtenerComponentes(QTableWidget *);
246    void CrearTablaVacia(int contador,QTableWidget *);
247
248protected:
249    void closeEvent(QCloseEvent *);
250
251private slots:
252    void slotNuevoProyecto();
253    void slotLoadMatrix();
254    void slotExportMatrix();
255    void slotFormLoadMatrixAccepted(const QString &, int, int);
256    void slotFormLoadMatrixClosed();
257
258    void AgregarCuenta();
259    void RestaurarCeldas();
260    void FinalizarCuentas();
261    void ModificarCuenta();
262    void slotCoeficienteHorizontal();
263    void slotCoeficienteVertical();
264    void slotAccChange();
265
266    void slotVariableExogena();
267    void slotCloseExogena();
268    void slotAgregarExogena();
269    void slotFinalizarExogena();
270    void slotDeshacerExogena();
271    void AnMa();
272
273    void slotMa();
274
275    void slotEncadenamientos();
276    void slotCloseEncadenamiento();
277    void slotAgregarEncadenamiento();
278    void slotVerEncadenamiento();
279
280    void slotCloseExport();
281    void slotSaveExport();
282    void slotSearchExport();
283
284    void slotModeloClasico();
285    void calcularEscenario(bool clasico = true);
286    void finalizarEscenario();
287
288    void slotModeloNoClasico();
289    void calcularEscenarioNC();
290    void finalizarEscenarioNC();
291
292    void slotCompararResultadosMNC();
293    void slotVerResultadoMNC();
294
295    void slotPHCIncidencia100();
296    void slotPHCIncidenciaiCuenta();
297    void slotCalcularPHCIncidenciaiCuenta();
298    void slotPHCIncidenciaiComponente();
299    void slotCalcularPHCIncidenciaiComponente();
300
301    void slotCompararResultados();
302    void slotVerResultado();
303
304    void slotPHNCIncidencia100();
305    void slotPHNCIncidenciaiCuenta();
306    void slotCalcularPHNCIncidenciaiCuenta();
307    void slotPHNCIncidenciaiComponente();
308    void slotCalcularPHNCIncidenciaiComponente();
309
310    void slotPNHIncudencia100();
311    void slotCloseformPNH();
312    void slotSelectPNH();
313    void slotPNHIncidenciaiCuenta();
314    void slotPNHIncidenciaiComponente();
315    void slotSelectPNHi();
316    void slotCalcularPNHIncidenciaiCuenta();
317    void slotSelectPNHic();
318    void slotCalcularPNHIncidenciaiComponente();
319
320public:
321    MainWindow();
322    std::vector<std::string> csv_read_row(std::string , char);
323    std::vector<std::string> csv_read_row(std::istream &, char);
324    QString numberFormat(double &);
325
326    int contarElementosMap(QMap<QString, QStringList> diccionario);
327    int retornarIndiceCuenta(QString nombre_cuenta);
328};
329
330#endif // MAINWINDOW_H
Note: See TracBrowser for help on using the repository browser.