source: observatorio/simulacion/SimEscenariosEconomicos-Qtgui/mainWindow.H @ d54f38b

simulacion
Last change on this file since d54f38b was 7bbc686, checked in by Ing. Roldan Vargas <rvargas@…>, 10 years ago

Creada la rama simulacion. Se incorpora la estructura de directorios del repositorio sobre la simulación de escenarios

  • Property mode set to 100755
File size: 5.9 KB
Line 
1/*
2  Copyright (C) 2012
3  Alejandro Mujica (amujica@cenditel.gob.ve)
4  Erwin Paredes (eparedes@cenditel.gob.ve)
5  José Ruiz (jruiz@cenditel.gob.ve)
6  Rodolfo Rangel (rrangel@cenditel.gob.ve)
7  Julie Vera (jvera@cenditel.gob.ve)
8
9  CENDITEL Fundación Centro Nacional de Desarrollo e Investigación en
10  Tecnologías Libres
11
12  Este programa es software libre; Usted puede usarlo bajo los términos de la
13  licencia de software GPL versión 2.0 de la Free Software Foundation.
14
15  Este programa se distribuye con la esperanza de que sea útil, pero SIN
16  NINGUNA GARANTÍA; tampoco las implícitas garantías de MERCANTILIDAD o
17  ADECUACIÓN A UN PROPÓSITO PARTICULAR.
18  Consulte la licencia GPL para más detalles. Usted debe recibir una copia
19  de la GPL junto con este programa; si no, escriba a la Free Software
20  Foundation Inc. 51 Franklin Street,5 Piso, Boston, MA 02110-1301, USA.
21*/
22
23/*
24  Este archivo contiene la definición de la clase MainWindow
25
26  Autor: Alejandro J. Mujica
27  Fecha:
28*/
29
30# ifndef MAIN_WINDOW_H
31# define MAIN_WINDOW_H
32
33# include <svgViewer.H>
34# include <nodeInfoDock.H>
35# include <simulationDataDock.H>
36# include <simulationElementsDock.H>
37# include <configurationPanel.H>
38# include <tempFilterForm.H>
39
40/** Ventana principal de la apliación.
41  *
42  * @author Alejandro J. Mujica.
43  */
44class MainWindow : public QMainWindow {
45
46    Q_OBJECT
47
48    // Número máximo de pestañas que se muestran en la ventana.
49    static const size_t MAX_TABS = 7;
50
51    // Número de la ventana que contiene la red original.
52    static const size_t MAIN_TAB_INDEX = 0;
53
54    // Indica si la ventana está bloqueada para efectuar operaciones o no.
55    bool locked;
56
57    // Puntero al panel de configuración.
58    ConfigurationPanel * confPanel;
59
60    // Valores numéricos para indicar que tipo de simulación se va a efectuar.
61    enum SimulationOption {
62
63        INCREASE,
64
65        DECREASE,
66
67        COST,
68
69        NUM_SIMULATION_OPTIONS
70    };
71
72    // Valores (en cadena) de los tipos de simulación.
73    static const std::string SIMULATION_OPTIONS_STR[NUM_SIMULATION_OPTIONS];
74
75    // Opción de simulación seleccionada.
76    SimulationOption simulationOption;
77
78    // Widget que contiene las pestañas que se visualizan.
79    QTabWidget * tabWidget;
80
81    // Arreglos de paneles visores de redes que se van a mostrar.
82    SvgViewer * viewers[MAX_TABS];
83
84    /******** Docks *********/
85    // Dock en la cual se visualizan los valores de un nodo.
86    NodeInfoDock * nodeInfoDock;
87
88    // Dock en la cual se asigna el valor de simulación a un nodo.
89    SimulationDataDock * simulationDataDock;
90
91    /*
92      Dock en la cual se añaden loos elementos que van a ser sometidos a un
93      cambio.
94    */
95    SimulationElementsDock * simulationElementsDock;
96
97    bool isThereProjectOpen;
98
99    /*
100      Bandera para saber si el dock de valores de simulación estaba visible
101      antes de cambiar a una pestaña no principal.
102    */
103    bool wasSimulationDataDockVisible;
104
105    /*
106      Bandera para saber si el dock de elementos de simulación estaba visible
107      antes de cambiar a una pestaña no principal.
108    */
109    bool wasSimulationElementsDockVisible;
110
111    TempFilterForm * filterForm;
112
113    /******** Menus *********/
114
115    QMenu * fileMenu;
116
117    QMenu * viewMenu;
118
119    QMenu * viewDocksMenu;
120
121    QMenu * viewToolsBarsMenu;
122
123    QMenu * simulationMenu;
124
125    QMenu * toolsMenu;
126
127    QMenu * helpMenu;
128
129    /******** Tools Bars *********/
130
131    QToolBar * simulationToolsBar;
132
133    /******** Elements ********/
134
135    QRadioButton * radIncrease;
136
137    QRadioButton * radDecrease;
138
139    /******** Actions *********/
140    QAction * actionNewStudy;
141
142    QAction * actionCloseStudy;
143
144    QAction * actionExit;
145
146    QAction * actionViewNodeInfoDock;
147
148    QAction * actionViewSimulationDataDock;
149
150    QAction * actionViewSimulationElementsDock;
151
152    QAction * actionViewSimulationToolsBar;
153
154    QAction * actionAbout;
155
156    QAction * actionAboutQt;
157
158    QAction * actionRunSimulation;
159
160    QAction * actionOptionSelected;
161
162    QAction * actionConfigure;
163
164    /// Asigna valores y establece conexiones a las acciones.
165    void configureActions();
166
167    /// Construye la barra de menús.
168    void createMenuBar();
169
170    /// Construye la barra de herramientas de simulación.
171    void createSimulationToolBar();
172
173    /// Configura la ventana de pestañas.
174    void configureTabWidget();
175
176    /// Configura las "docks" y establece conexiones entre ellas.
177    void configureDockWidgets();
178
179    void initGui();
180
181    /** Crea el atributo de simulación a los nodos del grafo.
182    *
183    * El atributo de simulación es un númeoro real que se asigna al nodo
184    * con el porcentaje de incremento o decremento que se va a simular.
185    *
186    * Este valor es asignado en la "cookie" del nodo (variable que puede
187    * almacenar cualquier tipo de dato.
188    */
189    void createSimulationGraphAttribute(Graph &);
190
191    /// Libera la memoria del atributo de simulación de los nodos del grafo.
192    void destroySimulationGraphAttribute(Graph &);
193
194    /// Abre la siguiente pestaña de simulación.
195    void openSimViewer();
196
197    /// Abre la pestaña principal, es decir, la que visualiza la red original.
198    void openMainViewer();
199
200    bool closeStudy();
201
202protected:
203    /// @overload
204    void closeEvent(QCloseEvent *);
205
206public:
207    MainWindow();
208
209signals:
210
211private slots:
212    void slotNewStudy();
213
214    void slotCloseStudy();
215
216    void slotBuildSvgViewer();
217
218    void slotNodeInfoDockClosing();
219
220    void slotSimulationDataDockClosing();
221
222    void slotSimulationElementsDockClosing();
223
224    void slotViewNodeInfoDock();
225
226    void slotViewSimulationDataDock();
227
228    void slotViewSimulationElementsDock();
229
230    void slotViewSimulationToolsBar();
231
232    void slotAbout();
233
234    void slotAboutQt();
235
236    void slotRunSimulation();
237
238    void slotOptionSelected();
239
240    void slotCloseTab(int);
241
242    void slotTabChanged(int);
243
244    void slotConfigure();
245
246    void slotFormNewStudyClosed();
247
248    void slotConfigurationPanelClosed();
249};
250
251# endif // MAIN_WINDOW_H
Note: See TracBrowser for help on using the repository browser.