From: Ricardo Markiewicz Date: Thu, 20 Nov 2003 16:58:42 +0000 (+0000) Subject: * Se agrega el tanque la suma de color (no me gusta como esta, vere si la puedo hacer... X-Git-Tag: svn_import~223 X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/commitdiff_plain/2d7fff39ec5ab67f13b5250a60082c4bc62c1739?ds=sidebyside * Se agrega el tanque la suma de color (no me gusta como esta, vere si la puedo hacer mas linda) * El cliente ahra tiene un boton On/Off que apaga o enciende un elemento dependiendo de su estado actual. Anda para cualquier objeto, despues voy a filtrar para que solo se pueda usar en exclusa y bomba. Es muy lindo apagar la bomba de arriba a la derecha y ver como se vacia el tanque, y cuando se vuelve a encender se llena :-) --- diff --git a/Client/include/item.h b/Client/include/item.h index e4c40c0..5a374dd 100644 --- a/Client/include/item.h +++ b/Client/include/item.h @@ -16,6 +16,7 @@ public: inline Glib::ustring get_name() { return name; } void set_position(int _x, int _y); void set_name(Glib::ustring _name); + inline bool get_open() { return open; } inline void set_actual_flow(float f) { actual_flow = f; } inline void set_open(bool b) { open = b; } inline void set_extra(float f) { extra = f; } diff --git a/Client/include/item_pump.h b/Client/include/item_pump.h index 8fd4864..f426f27 100644 --- a/Client/include/item_pump.h +++ b/Client/include/item_pump.h @@ -8,6 +8,8 @@ class ViewPump:public ViewItem { public: ViewPump(Glib::ustring _name, int orientacion); virtual ~ViewPump(); + virtual std::string get_cap_extra() { return "Estado"; } + virtual std::string get_extra() { return (open)?"Encendida":"Apagada"; } }; #endif diff --git a/Client/include/principal.h b/Client/include/principal.h index 5256b1d..f166cf3 100644 --- a/Client/include/principal.h +++ b/Client/include/principal.h @@ -55,6 +55,7 @@ protected: Gtk::Fixed *work_place; Gtk::Label *lbl_nombre, *lbl_color, *lbl_flujo, *lbl_extra, *lbl_cap_flujo, *lbl_cap_extra; Gtk::Image *ico_conected; + Gtk::Button *btn_activar; Gtk::DrawingArea *color_preview; // Actualiza las propiedades en la ventana del item actual @@ -67,6 +68,7 @@ protected: virtual void on_mnu_help_about(); virtual void on_dlg_connect_ok(); virtual void on_get_clicked(); + virtual void on_btn_activar_clicked(); virtual bool on_item_clicked(GdkEventButton *, ViewItem *); diff --git a/Client/src/client.glade b/Client/src/client.glade index 10d000f..1ca5be1 100644 --- a/Client/src/client.glade +++ b/Client/src/client.glade @@ -527,7 +527,7 @@ True - 4 + 5 2 False 0 @@ -582,9 +582,9 @@ - + True - Color : + ... False False GTK_JUSTIFY_LEFT @@ -596,19 +596,18 @@ 0 - 0 - 1 - 2 - 3 - fill + 1 + 2 + 1 + 2 - + True - Extra : + ... False False GTK_JUSTIFY_LEFT @@ -620,19 +619,18 @@ 0 - 0 - 1 - 3 - 4 - fill + 1 + 2 + 0 + 1 - + True - ... + Color : False False GTK_JUSTIFY_LEFT @@ -644,18 +642,19 @@ 0 - 1 - 2 - 1 - 2 + 0 + 1 + 3 + 4 + fill - + True - ... + Extra : False False GTK_JUSTIFY_LEFT @@ -667,10 +666,11 @@ 0 - 1 - 2 - 0 - 1 + 0 + 1 + 2 + 3 + fill @@ -692,8 +692,8 @@ 1 2 - 3 - 4 + 2 + 3 @@ -705,11 +705,29 @@ 1 2 - 2 - 3 + 3 + 4 fill + + + + True + True + On/Off + True + GTK_RELIEF_NORMAL + + + 0 + 2 + 4 + 5 + fill + + + diff --git a/Client/src/principal.cpp b/Client/src/principal.cpp index 1ccf645..0b59c0b 100644 --- a/Client/src/principal.cpp +++ b/Client/src/principal.cpp @@ -22,6 +22,7 @@ Principal::Principal(BaseObjectType *co, const Glib::RefPtr & work_place = 0; lbl_cap_flujo = lbl_cap_extra = lbl_extra = lbl_nombre = lbl_color = lbl_flujo = 0; + rg->get_widget("btn_activar", btn_activar); rg->get_widget("color_preview", color_preview); rg->get_widget("lbl_nombre", lbl_nombre); rg->get_widget("lbl_extra", lbl_extra); @@ -50,6 +51,7 @@ Principal::Principal(BaseObjectType *co, const Glib::RefPtr & exit->signal_activate().connect( SigC::slot(*this, &Principal::on_mnu_file_exit)); about->signal_activate().connect( SigC::slot(*this, &Principal::on_mnu_help_about)); btn_get->signal_clicked().connect( SigC::slot(*this, &Principal::on_get_clicked) ); + btn_activar->signal_clicked().connect( SigC::slot(*this, &Principal::on_btn_activar_clicked) ); conexion = NULL; is_xml_loaded = false; @@ -97,6 +99,23 @@ void Principal::on_mnu_file_exit() Gtk::Main::quit(); } +void Principal::on_btn_activar_clicked() +{ + if ((conexion == NULL) || (last_selected == NULL)) return; + + PlaQui::Server::Command c("plant", "set"); + c.add_arg("default"); + c.add_arg(last_selected->get_name()); + c.add_arg("open"); + + if (last_selected->get_open()) + c.add_arg("false"); + else + c.add_arg("true"); + + conexion->send(c); +} + void Principal::on_mnu_file_disconnect() { if (conexion == NULL) return; @@ -168,8 +187,6 @@ void Principal::update_items_prop() color_preview->modify_bg(Gtk::STATE_NORMAL, last_selected->get_color()); color_preview->queue_draw(); - - std::cout << last_selected->get_name() << " " << last_selected->get_color().get_red() << std::endl; } void Principal::on_conexion_connected() diff --git a/Model/src/tank.cpp b/Model/src/tank.cpp index e951254..895b5ef 100644 --- a/Model/src/tank.cpp +++ b/Model/src/tank.cpp @@ -26,11 +26,29 @@ void Tank::update(int dir) void Tank::simulate() { if (!updated) return; + RGB in_color; + + std::list::iterator i = in_list.begin(); + if (i != in_list.end()) { + PlantItem *o = (PlantItem *)(*i); + in_color = o->get_color(); + } // le resto lo que entrego litros -= actual_out_flow; + + // calculo el nuevo color + int r, g, b; + float l = litros+actual_in_flow; + + r = (int)(fluid_color.r()*litros/l + in_color.r()*actual_in_flow/l); + g = (int)(fluid_color.g()*litros/l + in_color.g()*actual_in_flow/l); + b = (int)(fluid_color.b()*litros/l + in_color.b()*actual_in_flow/l); + + fluid_color = RGB(r,g,b); + // le sumo lo que recibo - litros += actual_in_flow; + litros = l; std::cout << name << "Capacidad: " << capacity; std::cout << " Litros : " << litros << std::endl; @@ -68,7 +86,8 @@ void Tank::recieve_msg(int msg, IConector *who, void *data) void Tank::get_state_as_xml(std::stringstream &out) { - // El tanque no emite flujo actual! + PlantItem::get_state_as_xml(out); + out << "\t" << std::endl; out << "\t\t" << capacity << "" << std::endl; out << "\t\t" << litros << "" << std::endl;