source: mmcs/mainwindow.H @ 07b8f66

Last change on this file since 07b8f66 was 07b8f66, checked in by rboet <rboet@…>, 9 years ago

solucionado bug al generar tabla de componentes en modelo de precios no homogeneo

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