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>
15 class Principal:public Gtk::Window {
17 Principal(BaseObjectType *co, const Glib::RefPtr<Gnome::Glade::Xml> &rg);
20 virtual void on_realize();
22 Gdk::Color color_low, color_high;
23 PlaQui::Server::ControlClient *conexion;
24 // Utilizo un map para no tener que buscar un item
25 // en una lista cada vez que quiero actualizar su propiedad.
26 // Simplemente lo busco como map["nombre"]
27 std::map<const std::string, ViewItem *> mapItems;
29 // Actualiza el estado de una planta
30 void read_status_xml(const std::string &frame);
31 float get_float_from_xml(xmlNodePtr nodo);
32 bool get_bool_from_xml(xmlNodePtr nodo);
33 Gdk::Color get_rgb_from_xml(xmlNodePtr nodo);
35 // Funciones de carga del XML
38 void loadBomba(xmlNodePtr nodo);
39 void loadCodo(xmlNodePtr nodo);
40 void loadConduct(xmlNodePtr nodo);
41 void loadExclusa(xmlNodePtr nodo);
42 void loadTank(xmlNodePtr nodo);
43 void loadUnion(xmlNodePtr nodo);
44 void loadDrain(xmlNodePtr nodo);
45 void loadOr(xmlNodePtr nodo);
46 void loadNot(xmlNodePtr nodo);
47 void loadAnd(xmlNodePtr nodo);
49 Glib::Dispatcher load_xml_dispatch, update_ui;
52 // Archivo XML del Padre
53 Glib::RefPtr<Gnome::Glade::Xml> refXml;
54 Glib::RefPtr<Gdk::Pixbuf> anim_frames[8];
59 // Para la actualizacion automatica
60 ViewItem *last_selected;
61 // Dialogo de Conectar
62 DlgConectar *dlg_conectar;
63 DlgProperty *dlg_property;
64 Gtk::TextView *txt_view;
65 Gtk::Fixed *work_place;
66 Gtk::Label *lbl_nombre, *lbl_color, *lbl_flujo, *lbl_extra, *lbl_cap_flujo, *lbl_cap_extra;
67 Gtk::Image *ico_conected;
68 Gtk::Button *btn_activar, *btn_simulate, *btn_pause;
69 Gtk::DrawingArea *color_preview;
70 Glib::RefPtr<Gdk::GC> gc;
72 // Actualiza las propiedades en la ventana del item actual
73 void update_items_prop();
74 ViewItem *find_item(std::string &_name);
76 // Callbacks del menu y la barra
77 virtual void on_mnu_file_exit();
78 virtual void on_mnu_file_connect();
79 virtual void on_mnu_file_disconnect();
80 virtual void on_mnu_help_about();
81 virtual void on_mnu_property();
82 virtual void on_dlg_property_ok();
83 virtual void on_dlg_connect_ok();
84 virtual void on_btn_activar_clicked();
85 virtual void on_btn_simulate_clicked();
86 virtual void on_btn_pause_clicked();
87 virtual bool on_item_clicked(GdkEventButton *, ViewItem *);
88 virtual bool on_workplace_expose_event(GdkEventExpose *);
89 virtual bool on_delete_event(GdkEventAny *);
90 virtual void on_mnu_server_stop_activate();
92 // Callbacks para las conexiones
93 void on_conexion_finished();
94 void on_conexion_ok(const std::string &body);
95 void on_conexion_fatal_error(const PlaQui::Server::ControlClient::Error& code, const std::string& desc);
96 void on_conexion_error(unsigned code, const std::string& desc);
97 void on_conexion_frame(const std::string &frame);
100 #endif // _PRINCIPAL_H_