source: mmcs/mainwindow.H @ 95d916c

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

incorporada validacion al ingresar cuentas con nombres iguales

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