#include <gtkmm.h>
#include <libglademm.h>
#include "dlg_conectar.h"
+#include "dlg_property.h"
#include "plaqui/server/controlclient.h"
#include <libxml/parser.h>
#include <map>
Principal(BaseObjectType *co, const Glib::RefPtr<Gnome::Glade::Xml> &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<const std::string, ViewItem *> 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();
void loadTank(xmlNodePtr nodo);
void loadUnion(xmlNodePtr nodo);
void loadDrain(xmlNodePtr nodo);
-
- Glib::Dispatcher load_xml_dispatch;
+ 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<Gnome::Glade::Xml> refXml;
+ Glib::RefPtr<Gdk::Pixbuf> anim_frames[5];
+ int current_frame;
+ Gtk::Image *anim;
+ bool paused;
+ // Para la actualizacion automatica
+ ViewItem *last_selected;
// Dialogo de Conectar
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<Gdk::GC> 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 *);
// 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);
};