]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Client/include/principal.h
cambio la sintaxis XML de las compuertas
[z.facultad/75.42/plaqui.git] / Client / include / principal.h
1
2
3 #ifndef _PRINCIPAL_H_
4 #define _PRINCIPAL_H_
5
6 #include <gtkmm.h>
7 #include <libglademm.h>
8 #include "dlg_conectar.h"
9 #include "dlg_property.h"
10 #include "plaqui/server/controlclient.h"
11 #include <libxml/parser.h>
12 #include <map>
13 #include "item.h"
14
15 class Principal:public Gtk::Window {
16 public:
17         Principal(BaseObjectType *co, const Glib::RefPtr<Gnome::Glade::Xml> &rg);
18         virtual ~Principal();
19
20         virtual void on_realize();
21 protected:
22         PlaQui::Server::ControlClient *conexion;
23         // Utilizo un map para no tener que buscar un item
24         // en una lista cada vez que quiero actualizar su propiedad.
25         // Simplemente lo busco como map["nombre"]
26         std::map<const std::string, ViewItem *> mapItems;
27
28         // Actualiza el estado de una planta
29         void read_status_xml(const std::string &frame);
30         float get_float_from_xml(xmlNodePtr nodo);
31         bool get_bool_from_xml(xmlNodePtr nodo);
32         Gdk::Color get_rgb_from_xml(xmlNodePtr nodo);
33
34         // Funciones de carga del XML
35         bool is_xml_loaded;
36         void loadXML();
37         void loadBomba(xmlNodePtr nodo);
38         void loadCodo(xmlNodePtr nodo);
39         void loadConduct(xmlNodePtr nodo);
40         void loadExclusa(xmlNodePtr nodo);
41         void loadTank(xmlNodePtr nodo);
42         void loadUnion(xmlNodePtr nodo);
43         void loadDrain(xmlNodePtr nodo);
44         void loadOr(xmlNodePtr nodo);
45         void loadNot(xmlNodePtr nodo);
46         void loadAnd(xmlNodePtr nodo);
47         
48         Glib::Dispatcher load_xml_dispatch, update_ui;
49         std::string xml_body;
50
51         // Archivo XML del Padre
52         Glib::RefPtr<Gnome::Glade::Xml> refXml;
53
54         // Para la actualizacion automatica
55         ViewItem *last_selected;
56         // Dialogo de Conectar
57         DlgConectar *dlg_conectar;
58         DlgProperty *dlg_property;
59         Gtk::Entry *txt_target, *txt_command, *txt_args;
60         Gtk::TextView *txt_view;
61         Gtk::Fixed *work_place;
62         Gtk::Label *lbl_nombre, *lbl_color, *lbl_flujo, *lbl_extra, *lbl_cap_flujo, *lbl_cap_extra;
63         Gtk::Image *ico_conected;
64         Gtk::Button *btn_activar, *btn_simulate, *btn_pause;
65         Gtk::DrawingArea *color_preview;
66         Glib::RefPtr<Gdk::GC> gc;
67
68         // Actualiza las propiedades en la ventana del item actual
69         void update_items_prop();
70         ViewItem *find_item(std::string &_name);        
71
72         // Callbacks del menu y la barra
73         virtual void on_mnu_file_exit();
74         virtual void on_mnu_file_connect();
75         virtual void on_mnu_file_disconnect();
76         virtual void on_mnu_help_about();
77         virtual void on_mnu_property();
78         virtual void on_dlg_property_ok();
79         virtual void on_dlg_connect_ok();
80         virtual void on_get_clicked();
81         virtual void on_btn_activar_clicked();
82         virtual void on_btn_simulate_clicked();
83         virtual void on_btn_pause_clicked();
84         virtual bool on_item_clicked(GdkEventButton *, ViewItem *);
85         virtual bool on_workplace_expose_event(GdkEventExpose *);
86         virtual bool on_delete_event(GdkEventAny *);
87         
88         // Callbacks para las conexiones
89         void on_conexion_finished();
90         void on_conexion_ok(const std::string &body);
91         void on_conexion_fatal_error(const PlaQui::Server::ControlClient::Error& code, const std::string& desc);
92         void on_conexion_error(unsigned code, const std::string& desc);
93         void on_conexion_frame(const std::string &frame);
94 };
95
96 #endif // _PRINCIPAL_H_
97