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