X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/9a265fbb2d775edde6d17211c9791bcc995c20f7..4341c033f13578b5b3aeb3e08e20d3889cb2d7c7:/Client/include/principal.h diff --git a/Client/include/principal.h b/Client/include/principal.h index 7dbf3e7..4653404 100644 --- a/Client/include/principal.h +++ b/Client/include/principal.h @@ -6,6 +6,7 @@ #include #include #include "dlg_conectar.h" +#include "dlg_property.h" #include "plaqui/server/controlclient.h" #include #include @@ -16,16 +17,24 @@ public: Principal(BaseObjectType *co, const Glib::RefPtr &rg); virtual ~Principal(); + virtual void on_realize(); protected: + Gdk::Color color_low, color_high; PlaQui::Server::ControlClient *conexion; // Utilizo un map para no tener que buscar un item // en una lista cada vez que quiero actualizar su propiedad. // Simplemente lo busco como map["nombre"] std::map mapItems; + // Actualiza el estado de una planta + void read_status_xml(const std::string &frame); + float get_float_from_xml(xmlNodePtr nodo); + bool get_bool_from_xml(xmlNodePtr nodo); + Gdk::Color get_rgb_from_xml(xmlNodePtr nodo); + // Funciones de carga del XML bool is_xml_loaded; - void loadXML(const std::string &s); + void loadXML(); void loadBomba(xmlNodePtr nodo); void loadCodo(xmlNodePtr nodo); void loadConduct(xmlNodePtr nodo); @@ -33,33 +42,58 @@ protected: void loadTank(xmlNodePtr nodo); void loadUnion(xmlNodePtr nodo); void loadDrain(xmlNodePtr nodo); + void loadOr(xmlNodePtr nodo); + void loadNot(xmlNodePtr nodo); + void loadAnd(xmlNodePtr nodo); + + Glib::Dispatcher load_xml_dispatch, update_ui; + std::string xml_body; // Archivo XML del Padre Glib::RefPtr refXml; + Glib::RefPtr anim_frames[8]; + int current_frame; + Gtk::Image *anim; + bool paused; - // Dialogo de Conectar + // Para la actualizacion automatica + ViewItem *last_selected; + Gtk::Dialog *dlg_about; DlgConectar *dlg_conectar; - Gtk::Entry *txt_target, *txt_command, *txt_args; + DlgProperty *dlg_property; Gtk::TextView *txt_view; Gtk::Fixed *work_place; - Gtk::Label *lbl_nombre, *lbl_color, *lbl_flujo; + Gtk::Label *lbl_nombre, *lbl_color, *lbl_flujo, *lbl_extra, *lbl_cap_flujo, *lbl_cap_extra; Gtk::Image *ico_conected; + Gtk::Button *btn_activar, *btn_simulate, *btn_pause; + Gtk::DrawingArea *color_preview; + Glib::RefPtr gc; + + // Actualiza las propiedades en la ventana del item actual + void update_items_prop(); + ViewItem *find_item(std::string &_name); // Callbacks del menu y la barra virtual void on_mnu_file_exit(); virtual void on_mnu_file_connect(); virtual void on_mnu_file_disconnect(); virtual void on_mnu_help_about(); + virtual void on_mnu_property(); + virtual void on_dlg_property_ok(); virtual void on_dlg_connect_ok(); - virtual void on_get_clicked(); - + virtual void on_btn_activar_clicked(); + virtual void on_btn_simulate_clicked(); + virtual void on_btn_pause_clicked(); virtual bool on_item_clicked(GdkEventButton *, ViewItem *); + virtual bool on_workplace_expose_event(GdkEventExpose *); + virtual bool on_delete_event(GdkEventAny *); + virtual void on_mnu_server_stop_activate(); // Callbacks para las conexiones - void on_conexion_connected(); void on_conexion_finished(); void on_conexion_ok(const std::string &body); - void on_conexion_error(unsigned code); + void on_conexion_fatal_error(const PlaQui::Server::ControlClient::Error& code, const std::string& desc); + void on_conexion_error(unsigned code, const std::string& desc); void on_conexion_frame(const std::string &frame); };