]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blob - Client/include/principal.h
Mini bugfix.
[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         Glib::RefPtr<Gdk::Pixbuf> anim_frames[8];
55         int current_frame;
56         Gtk::Image *anim;
57         bool paused;
58
59         // Para la actualizacion automatica
60         ViewItem *last_selected;
61         Gtk::Dialog *dlg_about;
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;
71
72         // Actualiza las propiedades en la ventana del item actual
73         void update_items_prop();
74         ViewItem *find_item(std::string &_name);        
75
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();
91         
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);
98 };
99
100 #endif // _PRINCIPAL_H_
101