]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Client/include/principal.h
63b93ae550b52dd0a3aa9aa24d35dcc0722c20b2
[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         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;
28
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);
34
35         // Funciones de carga del XML
36         bool is_xml_loaded;
37         void loadXML();
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);
48         
49         Glib::Dispatcher load_xml_dispatch, update_ui;
50         std::string xml_body;
51
52         // Archivo XML del Padre
53         Glib::RefPtr<Gnome::Glade::Xml> refXml;
54
55         // Para la actualizacion automatica
56         ViewItem *last_selected;
57         // Dialogo de Conectar
58         DlgConectar *dlg_conectar;
59         DlgProperty *dlg_property;
60         Gtk::Entry *txt_target, *txt_command, *txt_args;
61         Gtk::TextView *txt_view;
62         Gtk::Fixed *work_place;
63         Gtk::Label *lbl_nombre, *lbl_color, *lbl_flujo, *lbl_extra, *lbl_cap_flujo, *lbl_cap_extra;
64         Gtk::Image *ico_conected;
65         Gtk::Button *btn_activar, *btn_simulate, *btn_pause;
66         Gtk::DrawingArea *color_preview;
67         Glib::RefPtr<Gdk::GC> gc;
68
69         // Actualiza las propiedades en la ventana del item actual
70         void update_items_prop();
71         ViewItem *find_item(std::string &_name);        
72
73         // Callbacks del menu y la barra
74         virtual void on_mnu_file_exit();
75         virtual void on_mnu_file_connect();
76         virtual void on_mnu_file_disconnect();
77         virtual void on_mnu_help_about();
78         virtual void on_mnu_property();
79         virtual void on_dlg_property_ok();
80         virtual void on_dlg_connect_ok();
81         virtual void on_get_clicked();
82         virtual void on_btn_activar_clicked();
83         virtual void on_btn_simulate_clicked();
84         virtual void on_btn_pause_clicked();
85         virtual bool on_item_clicked(GdkEventButton *, ViewItem *);
86         virtual bool on_workplace_expose_event(GdkEventExpose *);
87         virtual bool on_delete_event(GdkEventAny *);
88         
89         // Callbacks para las conexiones
90         void on_conexion_finished();
91         void on_conexion_ok(const std::string &body);
92         void on_conexion_fatal_error(const PlaQui::Server::ControlClient::Error& code, const std::string& desc);
93         void on_conexion_error(unsigned code, const std::string& desc);
94         void on_conexion_frame(const std::string &frame);
95 };
96
97 #endif // _PRINCIPAL_H_
98