From 7f099f6374e9606735fb9766b51b5e86d83de815 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicol=C3=A1s=20Dimov?= Date: Tue, 11 Nov 2003 20:37:30 +0000 Subject: [PATCH] agrege todos los items con sus respectivas ventanas pero falta arreglar el tema del conexionado,que es mi proxima tarea --- Constructor/bomba_null.png | Bin 0 -> 7033 bytes Constructor/cistern.cpp | 7 +- Constructor/conduct.cpp | 1 + Constructor/constructor.cpp | 59 +++++-- Constructor/constructor.glade | 298 +++++++++++++++++++++++++++++++++- Constructor/constructor.h | 10 +- Constructor/exclusa.cpp | 121 ++++++++++++++ Constructor/exclusa.h | 26 +++ Constructor/exclusaptywnd.cpp | 38 +++++ Constructor/exclusaptywnd.h | 22 +++ Constructor/ico_bomba.png | Bin 0 -> 2633 bytes Constructor/ico_canio.png | Bin 1724 -> 2337 bytes Constructor/ico_codo.png | Bin 2784 -> 1671 bytes Constructor/ico_exclusa.png | Bin 0 -> 2081 bytes Constructor/ico_tanque.png | Bin 1069 -> 2970 bytes Constructor/ico_y.png | Bin 2758 -> 2052 bytes Constructor/propertywnd.h | 1 - Constructor/pump.cpp | 116 +++++++++++++ Constructor/pump.h | 27 +++ Constructor/pumpptywnd.cpp | 26 +++ Constructor/pumpptywnd.h | 18 ++ Constructor/splitter.cpp | 1 + Constructor/union.cpp | 1 + 23 files changed, 751 insertions(+), 21 deletions(-) create mode 100644 Constructor/bomba_null.png create mode 100644 Constructor/exclusa.cpp create mode 100644 Constructor/exclusa.h create mode 100644 Constructor/exclusaptywnd.cpp create mode 100644 Constructor/exclusaptywnd.h create mode 100644 Constructor/ico_bomba.png create mode 100644 Constructor/ico_exclusa.png create mode 100644 Constructor/pump.cpp create mode 100644 Constructor/pump.h create mode 100644 Constructor/pumpptywnd.cpp create mode 100644 Constructor/pumpptywnd.h diff --git a/Constructor/bomba_null.png b/Constructor/bomba_null.png new file mode 100644 index 0000000000000000000000000000000000000000..39e576109c3d72f62981e8abfd1c89a01b1cc1aa GIT binary patch literal 7033 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 X?GoL4oxRdq00000NkvXXu0mjfmKu1O literal 0 HcmV?d00001 diff --git a/Constructor/cistern.cpp b/Constructor/cistern.cpp index fe0e5dd..71d8cce 100644 --- a/Constructor/cistern.cpp +++ b/Constructor/cistern.cpp @@ -14,6 +14,7 @@ Cistern::Cistern() ref->get_widget_derived("cistern_pty_wnd",cistern_pty_wnd); cistern_pty_wnd->cistern = this; cistern_pty_wnd->set_title("Propiedades del Tanque"); + name = "tanque"; } Cistern::~Cistern() @@ -117,11 +118,13 @@ bool Cistern::check_connection() { switch (get_img_actual()) { case 0: - if ( is_other_occupied_area( get_position_x()+get_image()->get_width()+10 , get_position_y()+get_image()->get_height() -10) ) + if ( is_other_occupied_area( get_position_x()+get_image()->get_width()+10 , get_position_y()+get_image()->get_height() -10) && + is_other_occupied_area( get_position_x() + 10, get_position_y() - 10) ) return true; break; case 1: - if ( is_other_occupied_area( get_position_x() -10, get_position_y()+get_image()->get_height()-10) ) + if ( is_other_occupied_area( get_position_x() -10, get_position_y()+get_image()->get_height()-10) && + is_other_occupied_area( get_position_x()+get_image()->get_width() - 10, get_position_y() - 10) ) return true; } return false; diff --git a/Constructor/conduct.cpp b/Constructor/conduct.cpp index 2a582fb..e02cae0 100644 --- a/Constructor/conduct.cpp +++ b/Constructor/conduct.cpp @@ -9,6 +9,7 @@ Conduct::Conduct() image = imageN; set_size_request(image->get_width(), image->get_height()); property_wnd->set_title("Propiedades del Tubo"); + name="tubo"; } Conduct::~Conduct() diff --git a/Constructor/constructor.cpp b/Constructor/constructor.cpp index aa27c53..81a9c37 100644 --- a/Constructor/constructor.cpp +++ b/Constructor/constructor.cpp @@ -10,11 +10,15 @@ Constructor::Constructor(BaseObjectType* cobject, const Glib::RefPtrget_widget("btn_canio", btn_canio); refGlade->get_widget("btn_codo", btn_codo); refGlade->get_widget("btn_y", btn_y); refGlade->get_widget("btn_tanque",btn_tanque); + refGlade->get_widget("btn_bomba", btn_bomba); + refGlade->get_widget("btn_exclusa", btn_exclusa); refGlade->get_widget("main_menu_quit",main_menu_quit); refGlade->get_widget("main_menu_save",main_menu_save); refGlade->get_widget("edit_menu_del",edit_menu_del); @@ -38,8 +42,12 @@ Constructor::Constructor(BaseObjectType* cobject, const Glib::RefPtrdrag_source_set(listTargets); btn_codo->drag_source_set(listTargets); btn_tanque->drag_source_set(listTargets); + btn_bomba->drag_source_set(listTargets); + btn_exclusa->drag_source_set(listTargets); btn_canio->signal_drag_data_get().connect( SigC::slot(*this, &Constructor::on_btn_canio_drag_get)); + btn_bomba->signal_drag_data_get().connect( SigC::slot(*this, &Constructor::on_btn_bomba_drag_get)); + btn_exclusa->signal_drag_data_get().connect( SigC::slot(*this, &Constructor::on_btn_exclusa_drag_get)); btn_y->signal_drag_data_get().connect( SigC::slot(*this, &Constructor::on_btn_y_drag_get)); btn_codo->signal_drag_data_get().connect( SigC::slot(*this, &Constructor::on_btn_codo_drag_get)); btn_tanque->signal_drag_data_get().connect( SigC::slot(*this, &Constructor::on_btn_tanque_drag_get)); @@ -61,6 +69,8 @@ Constructor::Constructor(BaseObjectType* cobject, const Glib::RefPtrsignal_drag_begin().connect( SigC::slot(*this, &Constructor::on_y_drag_begin)); btn_codo->signal_drag_begin().connect( SigC::slot(*this, &Constructor::on_codo_drag_begin)); btn_tanque->signal_drag_begin().connect( SigC::slot(*this, &Constructor::on_tanque_drag_begin)); + btn_bomba->signal_drag_begin().connect( SigC::slot(*this, &Constructor::on_bomba_drag_begin)); + btn_exclusa->signal_drag_begin().connect( SigC::slot(*this, &Constructor::on_exclusa_drag_begin)); workplace->drag_dest_set(listTargets); workplace->signal_drag_data_received().connect( SigC::slot(*this, &Constructor::on_item_drop_drag_received) ); @@ -83,22 +93,32 @@ Constructor::~Constructor() void Constructor::on_btn_canio_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time) { - gtk_selection_data_set (selection_data, selection_data->target, 8, (const guchar*)"item_canio.png", 14); + gtk_selection_data_set (selection_data, selection_data->target, 8, (const guchar*)"canio_n.png", 14); } void Constructor::on_btn_y_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time) { - gtk_selection_data_set(selection_data, selection_data->target, 8,(const guchar*)"item_y.png",10); + gtk_selection_data_set(selection_data, selection_data->target, 8,(const guchar*)"y_n.png",10); } void Constructor::on_btn_codo_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time) { - gtk_selection_data_set(selection_data, selection_data->target, 8 ,(const guchar*)"item_codo.png",13); + gtk_selection_data_set(selection_data, selection_data->target, 8 ,(const guchar*)"codo_o.png",13); } void Constructor::on_btn_tanque_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time) { - gtk_selection_data_set(selection_data, selection_data->target, 8,(const guchar*)"item_tanque.png",15); + gtk_selection_data_set(selection_data, selection_data->target, 8,(const guchar*)"tanque_e.png",15); +} + +void Constructor::on_btn_bomba_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time) +{ + gtk_selection_data_set(selection_data, selection_data->target, 8,(const guchar*)"bomba_e.png",15); +} + +void Constructor::on_btn_exclusa_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time) +{ + gtk_selection_data_set(selection_data, selection_data->target, 8,(const guchar*)"exclusa_h.png",15); } void Constructor::on_main_menu_quit() @@ -171,6 +191,16 @@ void Constructor::on_tanque_drag_begin(const Glib::RefPtr& con context->set_icon(ico_tanque, 5, 5); } +void Constructor::on_bomba_drag_begin(const Glib::RefPtr& context) +{ + context->set_icon(ico_bomba, 5, 5); +} + +void Constructor::on_exclusa_drag_begin(const Glib::RefPtr& context) +{ + context->set_icon(ico_exclusa, 5, 5); +} + void Constructor::on_item_drag_begin(const Glib::RefPtr& context, CItem *item) { context->set_icon(item->get_image(), 5, 5); @@ -219,22 +249,24 @@ void Constructor::on_item_drop_drag_received(const Glib::RefPtrlength >= 0) && (selection_data->format == 8)) { CItem *a; - if (strcmp((const char *)selection_data->data, "item_codo.png")==0) + if (strcmp((const char *)selection_data->data, "codo_o.png")==0) a = new Splitter(); - else if (strcmp((const char *)selection_data->data, "item_canio.png")==0) + else if (strcmp((const char *)selection_data->data, "canio_n.png")==0) a = new Conduct(); - else if (strcmp((const char *)selection_data->data, "item_y.png")==0) + else if (strcmp((const char *)selection_data->data, "y_n.png")==0) a = new Union(); - else if (strcmp((const char *)selection_data->data, "item_tanque.png")==0) + else if (strcmp((const char *)selection_data->data, "tanque_e.png")==0) a = new Cistern(); - - //Seteo el ID del item - Glib::ustring name("item"); - // FIXME + else if (strcmp((const char *)selection_data->data, "bomba_e.png")==0) + a =new Pump(); + else if (strcmp((const char *)selection_data->data, "exclusa_h.png")==0) + a = new Exclusa(); + + char char_id[10]; sprintf(char_id," %d",id); a->set_id(++id); - a->set_name( name+char_id ); + a->set_name( a->get_name()+char_id ); if ( can_drop(a, i*32, j*32) ) { workplace->put(*a, i*32, j*32); //Apunto al workplace @@ -249,7 +281,6 @@ void Constructor::on_item_drop_drag_received(const Glib::RefPtrdrag_source_set(listTargets); // Conecto las señales a->signal_drag_data_get().connect( SigC::slot(*this, &Constructor::on_item_drag_data_get)); - // Utilizo el SigC::bind para que el callback on_drag_begin acepte un // parametro extra, en este caso un CItem *. Esto se hace para // que cuando el usuario quiera mover un item, saber que item es diff --git a/Constructor/constructor.glade b/Constructor/constructor.glade index ffbab64..28c0ac4 100644 --- a/Constructor/constructor.glade +++ b/Constructor/constructor.glade @@ -5,7 +5,7 @@ 640 - 480 + 573 True window1 GTK_WINDOW_TOPLEVEL @@ -372,6 +372,92 @@ + + + + True + True + True + GTK_RELIEF_NORMAL + + + + True + 0.5 + 0.5 + 0 + 0 + + + + True + False + 2 + + + + True + ico_bomba.png + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + + + + + + + True + True + True + GTK_RELIEF_NORMAL + + + + True + 0.5 + 0.5 + 0 + 0 + + + + True + False + 2 + + + + True + ico_exclusa.png + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + + + + 0 @@ -791,7 +877,7 @@ - + True Flujo Máximo False @@ -964,4 +1050,212 @@ + + 273 + 143 + Propiedades de la Exclusa + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_CENTER + False + False + False + True + + + + True + False + 0 + + + + True + GTK_BUTTONBOX_SPREAD + + + + True + True + True + gtk-cancel + True + GTK_RELIEF_NORMAL + -6 + + + + + + True + True + True + gtk-apply + True + GTK_RELIEF_NORMAL + -10 + + + + + + True + True + True + gtk-ok + True + GTK_RELIEF_NORMAL + -5 + + + + + 0 + False + True + GTK_PACK_END + + + + + + True + 2 + 2 + True + 0 + 0 + + + + True + Capacidad Máxima + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + Estado + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + False + 0 + + + + True + True + Abierto + True + GTK_RELIEF_NORMAL + False + False + True + + + 0 + False + False + + + + + + True + True + Cerrado + True + GTK_RELIEF_NORMAL + False + False + True + rd_btn_open + + + 0 + False + False + + + + + 1 + 2 + 0 + 1 + fill + fill + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 1 + 2 + + + + + + 0 + True + False + GTK_PACK_END + + + + + + diff --git a/Constructor/constructor.h b/Constructor/constructor.h index 55d3149..12e1712 100644 --- a/Constructor/constructor.h +++ b/Constructor/constructor.h @@ -19,6 +19,8 @@ #include "conduct.h" #include "union.h" #include "cistern.h" +#include "exclusa.h" +#include "pump.h" class Constructor : public Gtk::Window { public: @@ -29,14 +31,14 @@ class Constructor : public Gtk::Window { protected: int id; // / defino los elementos de la ventana. - Gtk::Button *btn_canio, *btn_codo, *btn_y, *btn_tanque, *btn_file_ok, *btn_file_cancel, *btn_check, *btn_dlg_close; + Gtk::Button *btn_canio, *btn_codo, *btn_y, *btn_tanque, *btn_bomba, *btn_exclusa, *btn_file_ok, *btn_file_cancel, *btn_check, *btn_dlg_close; Gtk::ImageMenuItem *main_menu_quit, *edit_menu_del, *main_menu_save; Gtk::CheckButton *chk_btn_logica; Gtk::FileSelection *file_selection; Gtk::Entry *combo_entry; Gtk::Dialog *dlg_connect; Gtk::Label *dlg_label; - Glib::RefPtr ico_canio, ico_y, ico_codo, ico_tanque; + Glib::RefPtr ico_canio, ico_y, ico_codo, ico_tanque, ico_bomba, ico_exclusa; Glib::RefPtr ico_last; std::list listTargets; std::list listaItems; @@ -49,6 +51,8 @@ class Constructor : public Gtk::Window { virtual void on_btn_y_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time); virtual void on_btn_codo_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time); virtual void on_btn_tanque_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time); + virtual void on_btn_bomba_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time); + virtual void on_btn_exclusa_drag_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time); virtual void on_main_menu_quit(); virtual void on_main_menu_save(); virtual void on_edit_menu_del(); @@ -63,6 +67,8 @@ class Constructor : public Gtk::Window { virtual void on_y_drag_begin(const Glib::RefPtr& context); virtual void on_codo_drag_begin(const Glib::RefPtr& context); virtual void on_tanque_drag_begin(const Glib::RefPtr& context); + virtual void on_bomba_drag_begin(const Glib::RefPtr& context); + virtual void on_exclusa_drag_begin(const Glib::RefPtr& context); virtual void on_item_drag_begin(const Glib::RefPtr& context, CItem *); virtual void on_item_drag_data_get(const Glib::RefPtr& context, GtkSelectionData* selection_data, guint info, guint time); diff --git a/Constructor/exclusa.cpp b/Constructor/exclusa.cpp new file mode 100644 index 0000000..516f689 --- /dev/null +++ b/Constructor/exclusa.cpp @@ -0,0 +1,121 @@ +#include "exclusa.h" +#include "exclusaptywnd.h" + +Exclusa::Exclusa() +{ + imageN = Gdk::Pixbuf::create_from_file("exclusa_h.png"); + imageS = Gdk::Pixbuf::create_from_file("exclusa_s.png"); + null = Gdk::Pixbuf::create_from_file("null.png"); + imgActual = 0; + image = imageN; + set_size_request(image->get_width(), image->get_height()); + + Glib::RefPtr ref = Gnome::Glade::Xml::create("constructor.glade", "exclusa_pty_wnd"); + ref->get_widget_derived("exclusa_pty_wnd",exclusa_pty_wnd); + exclusa_pty_wnd->exclusa = this; + name = "exclusa"; +} + +Exclusa::~Exclusa() +{ +} + +bool Exclusa::on_button_press_event(GdkEventButton *event) +{ + int w, h; + if ((event->type == GDK_BUTTON_PRESS) && ( event->button == 1)) + combo_entry->set_text(name); + + if ((event->type == GDK_BUTTON_PRESS) && ( event->button ==2)){ + image = null; + image->render_to_drawable(get_window(),get_style()->get_black_gc(),0,0,0,0,image->get_width(),image->get_height(),Gdk::RGB_DITHER_NONE,0,0); + imgActual++; + switch (imgActual) { + case 1: + image = imageS; + break; + default: + imgActual = 0; + image = imageN; + } + get_size_request(w, h); + set_size_request(h, w); + image->render_to_drawable(get_window(),get_style()->get_black_gc(),0,0,0,0,image->get_width(),image->get_height(),Gdk::RGB_DITHER_NONE,0,0); + } + if ((event->type == GDK_BUTTON_PRESS) && ( event->button == 3)){ + menu_popup.popup(event->button, event->time); + return true; //It has been handled. + } + + if ((event->type == GDK_2BUTTON_PRESS) && (event->button ==1)){ + exclusa_pty_wnd->txt_exclusa_name->set_text( name); + if (estado) exclusa_pty_wnd->rd_btn_open->set_active(true); + exclusa_pty_wnd->show(); + } + return true; +} + +void Exclusa::on_menu_popup_rotar() +{ + GdkEventButton event; + event.type = GDK_BUTTON_PRESS; + event.button = 2; + Exclusa::on_button_press_event(&event); +} + +void Exclusa::on_menu_popup_propiedades() +{ + GdkEventButton event; + event.type = GDK_2BUTTON_PRESS; + event.button = 1; + Exclusa::on_button_press_event(&event); +} + +void Exclusa::save(FILE *archivo) +{ + char c_id[50], c_est[50], c_x[50], c_y[50], c_img[50]; + int est; + sprintf(c_x,"\t\t%d\n",x); + sprintf(c_y,"\t\t%d\n",y); + sprintf(c_id,"%d",ID); + if (estado) est = 1; + else est = 0; + sprintf(c_est,"\t\t%d\n", est); + sprintf(c_img,"\t\t%d\n",imgActual); + Glib::ustring dato; + dato = "\t\n"; + dato += c_img; + dato += c_est; + dato += c_x; + dato += c_y; + dato += "\t\n"; + fprintf(archivo,dato.c_str()); +} + +bool Exclusa::check_connection() +{ + switch (get_img_actual()) { + case 0: + if ( is_other_occupied_area( get_position_x()+get_image()->get_width()/2, get_position_y()+get_image()->get_height()+10) && + is_other_occupied_area( get_position_x()+get_image()->get_width()/2, get_position_y() - 10) ) + return true; + break; + case 1: + if ( is_other_occupied_area( get_position_x()-10, get_position_y()+get_image()->get_height()/2) && + is_other_occupied_area( get_position_x()+get_image()->get_width()+10, get_position_y()+get_image()->get_height()/2) ) + return true; + } + return false; +} + +void Exclusa::set_estado(bool _state) +{ + estado = _state; +} + +bool Exclusa::get_estado() +{ + return estado; +} diff --git a/Constructor/exclusa.h b/Constructor/exclusa.h new file mode 100644 index 0000000..31e21a4 --- /dev/null +++ b/Constructor/exclusa.h @@ -0,0 +1,26 @@ +#ifndef _EXCLUSA_H_ +#define _EXCLUSA_H_ + +#include "item.h" + +class ExclusaPtyWnd; + +class Exclusa : public CItem { + public: + Exclusa(); + virtual ~Exclusa(); + virtual bool on_button_press_event(GdkEventButton *event); + virtual void on_menu_popup_rotar(); + virtual void on_menu_popup_propiedades(); + virtual void save(FILE *archivo); + virtual bool check_connection(); + void set_estado(bool _state); + bool get_estado(); + private: + Glib::RefPtr imageN; // 0 + Glib::RefPtr imageS; // 1 + Glib::RefPtr null; + ExclusaPtyWnd *exclusa_pty_wnd; + bool estado; +}; +#endif diff --git a/Constructor/exclusaptywnd.cpp b/Constructor/exclusaptywnd.cpp new file mode 100644 index 0000000..f1c6025 --- /dev/null +++ b/Constructor/exclusaptywnd.cpp @@ -0,0 +1,38 @@ +#include "exclusaptywnd.h" +#include "exclusa.h" + +ExclusaPtyWnd::ExclusaPtyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade):PropertyWnd(cobject, refGlade) +{ + refGlade->get_widget("rd_btn_close", rd_btn_close); + refGlade->get_widget("rd_btn_open", rd_btn_open); + rd_btn_close->set_group(group); + rd_btn_open->set_group(group); + rd_btn_close->signal_clicked().connect(SigC::slot(*this,&ExclusaPtyWnd::on_rd_btn_close_clicked)); + rd_btn_open->signal_clicked().connect(SigC::slot(*this,&ExclusaPtyWnd::on_rd_btn_open_clicked)); + refGlade->get_widget("txt_exclusa_name", txt_exclusa_name); +} + +ExclusaPtyWnd::~ExclusaPtyWnd() +{ +} + +void ExclusaPtyWnd::on_btn_accept_clicked() +{ + exclusa->set_name( txt_exclusa_name->get_text() ); + hide(); +} + +void ExclusaPtyWnd::on_btn_apply_clicked() +{ + exclusa->set_name( txt_exclusa_name->get_text() ); +} + +void ExclusaPtyWnd::on_rd_btn_close_clicked() +{ + exclusa->set_estado(false); +} + +void ExclusaPtyWnd::on_rd_btn_open_clicked() +{ + exclusa->set_estado(true); +} diff --git a/Constructor/exclusaptywnd.h b/Constructor/exclusaptywnd.h new file mode 100644 index 0000000..11419ff --- /dev/null +++ b/Constructor/exclusaptywnd.h @@ -0,0 +1,22 @@ +#ifndef _EXCLUSAPTYWND_H_ +#define _EXCLUSAPTYWND_H_ + +#include "propertywnd.h" + +class Exclusa; + +class ExclusaPtyWnd : public PropertyWnd { + public: + ExclusaPtyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade); + virtual ~ExclusaPtyWnd(); + Exclusa *exclusa; + Gtk::Entry *txt_exclusa_name; + Gtk::RadioButton *rd_btn_close, *rd_btn_open; + Gtk::RadioButton::Group group; + virtual void on_btn_accept_clicked(); + virtual void on_btn_apply_clicked(); + virtual void on_rd_btn_close_clicked(); + virtual void on_rd_btn_open_clicked(); +}; + +#endif diff --git a/Constructor/ico_bomba.png b/Constructor/ico_bomba.png new file mode 100644 index 0000000000000000000000000000000000000000..83224ba65a62de75da5dd829c92233ce7a82cf3c GIT binary patch literal 2633 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 literal 0 HcmV?d00001 diff --git a/Constructor/ico_canio.png b/Constructor/ico_canio.png index 8bcc89d3369277c52d50599476e97ec152accf66..ad590a0f07fa8b3d3fb16f55430b51cd28f8db1b 100644 GIT binary patch delta 2276 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 LNkvXXu0mjfdS>o; literal 0 HcmV?d00001 diff --git a/Constructor/ico_tanque.png b/Constructor/ico_tanque.png index 17bdf6bd76ec05a7793d0a6b63db76e60d8ccec2..405ed8b509853d32e0c945535e57e8da9a2c85a1 100644 GIT binary patch delta 2958 zcmV;93vu+V2$~mLiBL{Q4GJ0x0000DNk~Le0000f0000f2nGNE0H|O9_5c6?24YJ` zL;(K){{a7>y{D4^000SaNLh0L0B*AY0B*AZAQM}b00007bV*G`2h$4+3o{@)|JW#z zSu1}E{z*hZRCwC8nO&%^=TU~QnR%Y~`_|uHd++R@>@*3LD5Vwcsd(Z+4SG^*)dsbV zX;Y*MRq#X)#DqkOP}H7?7)3D9gGfAxsA-51TM{W)Fj!4&OC-UBs@v=&d#|;=pZ9rY z#)J1;+a@Mycajb)SbwZ{-kG`Yx$jx>uEBrux+3fqW7`VbDijGclQXk9x9slm?(JRX zR=K!30y01A}3-l$I7FU1h zz2lLLtuqLO7|E2VXOhS}pQHc^s3TyQ|^t(|>giVtKR3U{i znxrKAQZXGUrLa59xDdkSTp(H*>KuPjW0tV&BMNCE2=a~>v_$6po`GjzGDuH9bKw2~ zGUkpTs;m+Wc&Qr)6qX^#IFbnK3=TbFgm0+G(}w)ZJDsF_&))XglLdCH+Oqjghi&|% zNBn|hY?%r(RjL>Q^b9&lq>v;Y6IcS$GoMG~VMHGqX2X-$U%27rU%C4;{oH?r8{T%3 z_Ryn$zuek8x%`JOKXLwOYRy_4=2|_yoy$CB-)LFMz31RIZ}_c<7E_qDRm+ z1Zk$Jq6Z0IZxMeNqJO=8V*h{1KYs8pmv1@ATlThZ?&JE?5_!8wo+na{Y3b@O38;XI zP|Yy4O%HJMMKl=NB@@MTkMz?2te9$`Vl)_wZZ$rn^tTi0l&`lE|5=LLKSUc-TURf+TSS?xfq!Y}mqiQ%pOQ(g? zV**!-UeyTKyt_g0OqzEL#WE?P(>_;00S`x1siKgO1 z(518L9gjdZOpzq<|A_3{B&i|{W(+DQL4;!pRgJ+4RRohnh^e{>fl{=9G%`m#k}5*2 z1+{?|N#aCy!aD$i*~A&)*Q`W}h+wKzD^wEAjtLZp;*CF$aINo-QCCHqG(~Jic+w2RCE$+YE*=ZGRqaa znw%_(m=P$>9@lkeT&*gMA%jsyrCIfk^{)Z%AA!?FR7}ua8^FD7)Lyl!5~Euk{&)W$m@vX-@fCv?Za2D z+?w$I%#`Mxb#M5_A(Tw;=&bt$by3B=6WQ^cP%9~n0=tsT1=eF@WrxfNnhPyDCSE1+BVw;qd#A}k=F{K)iKAA#;nHXIKkC@P1 zv`|!WoYotK1XGGt22sqM*p$CkB*&4eon2n8S9Vh82h$yBL?Vx3v@tl;@j+L9vnf+e2*3ugZ99fy| zZ*717;7+O1d}Qn+K~B`Dg`zUaGD8?Pil>BtB+9ghMUa(pAw+R(*w}Q^clrLt-Q* ziix7C_y&!#@j0~^TQ)~kIcjUR%ZgP9V>Ew8A6fQJN=#K3L9JkFbPwDoVpoJyChSQ< zQD$N+V#H%a(xH<` z$il%?nAJ+Hb5;>7d#6Wd*&01T&A5MIKIi*)Dm|veRg9hrS(%Bj#hN2ulYJyJ=sM9> z$teR>D_AN?$AQ4;D2P%e5eX*WD0GxHhShCOZ6~={vP=lAgcL-kzp-$qZB7qG3xf^p z)JjcZ(MQ&iY?sQQHVF}d?dWtBnt_|JKN#gG@?YE7-&=ds0tm-vmPEx-nHYb65E#VS z*2Yfhs4DA#g(p`!97ST$QJDI0_@?3AN4C&u3UQVxo4m1-JgNn z2W|w0w{vxvtMKmmj8jF4=o~iZ&~vhgA~cL;3S$Z_nEX^u%75X`GLnB)BuC-M7r*#~ z09?FykkKg&%hJUjlw)GY0l;l1pGE!q*3p=c`Po>f?22 z8`qZ`$0;HcKoP3SaN~b$c;BAMO~)6$g0Q(Tynd1ZpZe4%%QMeB^PY(KaAtl4c<&p{ z>LxA$kE-gQo7qzeukwWQ2EYP1Q_HFAi~WX?KNacXF_FD&R`eS_^uGK4wBL2tZ~og? zzVeU%wO+6PDI$Ij_;KL$YudjCo)M8hFtab6Idk^e2OfBEeJy|U`)fb_!86O%@?iSs zz@*-Fv*{$_O)JB__kJdTOZVJ!*CS6n@%T4-?@wjs$AMcm9Xtdc5z)`zeDlp;_}Is8 z@3-FiW7mA?y|`Y}#__5zmjsan0u_1lB#-0nyYG$9eeQSv{jtaX_79iK<%e<} z2hHq{&Ye5|wfidX|9pF^OmNwgu?H#;DO@#^nTRC+3p*CU88q%B1poj507*qoM6N<$ Eg6kuMasU7T delta 1042 zcmV+t1nv8p7p(|ciBL{Q4GJ0x0000DNk~Le0000V0000l2nGNE02|a1lmGw#1ZP1_ zK>z@;j|==^1poj532;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^RO3K#@4Bi3dgZjoCn ze*=?AL_t(|+P#?1iyTE1$3JhJ?wM01GXzYs(gje;S1*@FrrtY*7=w!3wohw0hr>YnZ%cDpSYrn;u4 zUcc}6Tklmp06paADhF&sfU~czapt8{e^^5s%d)X;2ivl-Y#V?yP06y9G)>5|lvqxW(R{awy}cPrt~eOYh;i0lpjHc|M*W;Q0XnaTpTCA#ofM#}UzPNEAohxN#f! z_rS&n?)MMd2Gu2nIv@p5p)>P?qR+GMx}}wZ%(^qKn84N;-iJWDe}=sQ z^o~4j6r9xADhO^$JUwwPO>&YZW)5R~3b<;M+O-eZ)gZW0?R|0H)?`7iQ?)lOtQ})e z5uE%Vc-IA)y4b!ys@k>jg1^$jr$`Tin{D$N&!j)tTUOUO8PdJlTeKxI553x>+FP@l zbhiTrRVVASni#_DIJQ@Il9aQWe|Ea*2aRmc4>ui~t?_&jnkwZ7>6&wGOep(DOzDO5 z_SREk(E_)v=a@cXyEGo5RC^Pgw&zdj6!Eg>x*WJ2Vn1Bw?671Ce;NpYhxzjhz{g7% z*T#$Dk}3Qn;7#D|{P`5{?y+Z9aYrL#;`a7mjK_b@j7vFk9~ALpz<0%ge=AombK=DF zhD%?3{uS%%8z$`9@Cr*_RDJ_K$onUO&qj`eJ93RlmSvSWZ@;D1h~in`b>Mqot57Z2 z18_$kfp;XoTuxoEZKuk)G?;Gi`osLQuz4e&AXqULa4f_4vdKa!3cPsn9nPPBqcZc+ zqhGjo?NeOW$M=sQxs(OLe|APy&sDVLKBg5MR##VfWo@mJ28T~fd3Ak{U}eSl*>RjI z=TZxKy$+5ZeUjtHpQ|eG_b~vr<1ljF!UaGXT6WpE)XGhAJQls&c>D)HKYUOb-`e^W zfMhZujv|B7EJ@0o&p4@u88v2@>brUKHh1oPSuvhv*|dxnM?^c1e~rRRk|uQ#uIgW9 zj~6C{VR%0b!_5VZJOx~sOk%?D@m!<|X|h}Pym?bK?ESmIC%|>!HQ;PMeh#=W*^LR~ z9V0C!S&irIg#oRb6#y>-+r_*wnM8!qj^Tv?`{w2k3}k>cwDX#)lhR$N;{sz`(yAXK)Fy7bSaQ|B)-1FmupA1*Js5-v|TrSu+*Y@B40DrM!tm|B%k^lez M07*qoM6N<$f=kNrM*si- diff --git a/Constructor/ico_y.png b/Constructor/ico_y.png index bcc082cfe64abf8cb71003abe562ea2a0b32ffa9..1b685d585af4d8568fdbcae4d1c7b3ce9d09c80b 100644 GIT binary patch delta 1987 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

dK=_M zWioSm2O@%afp@;A9PzRS3Bu-?O>9gzdVG`g@0^q99wOld0>g&Qi7EUN^$D)Sw$f*u z6goZD?>;8dXZCK^ptS;{?5M~dkx2mB%M=gDC|yN^)`roCpB-W}8bO@Exjo=(h99@ zQPmZ!vmgpF8r@wW$g&Jt>BPp)IymQGtwmK;XxkQAYvg&3K{ys^LtuZWzsOk!{f5i-oYdG(aXE}F7 z*cfhLSuMkhv<-|l*xKF-mcz=jD?(DNLSAGArBt#~+^}^mTHB&^ZFpuyR9a~iMS(M? z&S1PbMxN!ky?+}!yE~|xdd>1HSy3(sJ%;z<(b$l6oOg*Um>EWy;AJ3eZf;_CcNb+| z!h4UZsnE0ycJdwQo40Ple|ryRhI0-^88ohea}GPZJ1HiJLZuYJcfl%F$@0-%V-eBV zU`^*8%A&-jXD(qno#MrpUc_WP!L@&0!{MDn92^{AzL+NHJYZur#C-EYui4n0=;T1ewG+~ z)%tbI&*5;0mtTAte??X#Fy*j>SV69H06>|Sn2x9T@cM_C&*wcCj#(gioOIIH1JVXl zP}Y^pS75Y3krk+#D)5xE&`Jl3iwKImz_MO~D8y*BteP92-1tvj*RI!~NT*IF>gQ3B zUYrsUj4{QlFTHv>Gnw(?;k<+Q9`(G2QVNX?RtzO&4iDa$zTLP+fI@2`nu1){Yr znAwj<Vq7K#=0t?gUah(ijpHZ&^Udl2Z;!EoRn$26qd zki@)9hElPkSqIW12IKKeefAIbW$V_~HW6K8#i3^)q%v3k>4U#~U;2dnj%jFa9U4Of78&d(Q)CFu)V!4 zP1_uP|IIg>FEsEE|Ml<9(O~pL@p2U&e|Y8UD?RX?4%|_H9t5wcniSaztF&)cbP!GN^N5P-sA54F6yd=HX3D7qR5KWm}ELbVTx4I z#i`AS0N$OS$77~=0@B)Wx;YpQR3Kh3o6XR=Hhp=(dW*WPd*8%34p)EdF`mw!S8>Y3 z>1<9Zg;6m=rZXJPkJ8yY6T^##^)_9dxb)q$<8bx=0X0t-iPlgECjbBd07*qoM6N<$ Ef;87FS^xk5 diff --git a/Constructor/propertywnd.h b/Constructor/propertywnd.h index fa488af..3c5062c 100644 --- a/Constructor/propertywnd.h +++ b/Constructor/propertywnd.h @@ -14,7 +14,6 @@ class PropertyWnd : public Gtk::Window{ PropertyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade); virtual ~PropertyWnd(); CItem *item; - protected: Gtk::Button *btn_cancel, *btn_accept, *btn_apply; virtual void on_btn_cancel_clicked(); virtual void on_btn_accept_clicked(); diff --git a/Constructor/pump.cpp b/Constructor/pump.cpp new file mode 100644 index 0000000..51993a2 --- /dev/null +++ b/Constructor/pump.cpp @@ -0,0 +1,116 @@ +#include "pump.h" +#include "pumpptywnd.h" + +Pump::Pump() +{ + imageE = Gdk::Pixbuf::create_from_file("bomba_e.png"); + imageO = Gdk::Pixbuf::create_from_file("bomba_o.png"); + null = Gdk::Pixbuf::create_from_file("bomba_null.png"); + imgActual = 0; + image = imageE; + set_size_request(image->get_width(), image->get_height()); + + Glib::RefPtr ref = Gnome::Glade::Xml::create("constructor.glade", "item_pty_wnd"); + ref->get_widget_derived("item_pty_wnd",pump_pty_wnd); + pump_pty_wnd->pump = this; + pump_pty_wnd->set_title("Propiedades de la Bomba"); + name = "bomba"; +} + +Pump::~Pump() +{ +} + +bool Pump::on_button_press_event(GdkEventButton *event) +{ + if ((event->type == GDK_BUTTON_PRESS) && ( event->button == 1)) + combo_entry->set_text(name); + + if ((event->type == GDK_BUTTON_PRESS) && ( event->button ==2)){ + image = null; + image->render_to_drawable(get_window(),get_style()->get_black_gc(),0,0,0,0,image->get_width(),image->get_height(),Gdk::RGB_DITHER_NONE,0,0); + imgActual++; + switch (imgActual) { + case 1: + image = imageO; + break; + default: + imgActual = 0; + image = imageE; + } + set_size_request(image->get_width(),image->get_height()); + image->render_to_drawable(get_window(),get_style()->get_black_gc(),0,0,0,0,image->get_width(),image->get_height(),Gdk::RGB_DITHER_NONE,0,0); + } + + if ((event->type == GDK_BUTTON_PRESS) && ( event->button == 3)){ + menu_popup.popup(event->button, event->time); + return true; //It has been handled. + } + + if ((event->type == GDK_2BUTTON_PRESS) && (event->button ==1)){ + pump_pty_wnd->spin_caudal->set_value( entrega ); + pump_pty_wnd->txt_item_name->set_text( name ); + pump_pty_wnd->show(); + } + return true; +} + +void Pump::on_menu_popup_rotar() +{ + GdkEventButton event; + event.type = GDK_BUTTON_PRESS; + event.button = 2; + Pump::on_button_press_event(&event); +} + +void Pump::on_menu_popup_propiedades() +{ + GdkEventButton event; + event.type = GDK_2BUTTON_PRESS; + event.button = 1; + Pump::on_button_press_event(&event); +} + +void Pump::set_entrega(double _ent) +{ + entrega = _ent; +} + +double Pump::get_entrega() +{ + return entrega; +} + +void Pump::save(FILE *archivo) +{ + char c_id[50], c_entrega[50], c_x[50], c_y[50], c_img[50]; + sprintf(c_x,"\t\t%d\n",x); + sprintf(c_y,"\t\t%d\n",y); + sprintf(c_id,"%d",ID); + sprintf(c_entrega,"\t\t%.2f\n", entrega); + sprintf(c_img,"\t\t%d\n",imgActual); + Glib::ustring dato; + dato = "\t\n"; + dato += c_entrega; + dato += c_img; + dato += c_x; + dato += c_y; + dato += "\t\n"; + fprintf(archivo,dato.c_str()); +} + +bool Pump::check_connection() +{ + switch (get_img_actual()) { + case 0: + if ( is_other_occupied_area( get_position_x()+get_image()->get_width()+10 , get_position_y()+get_image()->get_height() +10) ) + return true; + break; + case 1: + if ( is_other_occupied_area( get_position_x() -10, get_position_y() -10) ) + return true; + } + return false; +} diff --git a/Constructor/pump.h b/Constructor/pump.h new file mode 100644 index 0000000..6c47b1a --- /dev/null +++ b/Constructor/pump.h @@ -0,0 +1,27 @@ +#ifndef _PUMP_H_ +#define _PUMP_H_ + +#include +#include "item.h" + +class PumpPtyWnd; + +class Pump : public CItem { + public: + Pump(); + virtual ~Pump(); + virtual bool on_button_press_event(GdkEventButton *event); + virtual void on_menu_popup_rotar(); + virtual void on_menu_popup_propiedades(); + void set_entrega(double _cap); + double get_entrega(); + virtual void save(FILE *archivo); + virtual bool check_connection(); + protected: + double entrega; + Glib::RefPtr imageE; // 0 + Glib::RefPtr imageO; // 1 + Glib::RefPtr null; + PumpPtyWnd *pump_pty_wnd; +}; +#endif diff --git a/Constructor/pumpptywnd.cpp b/Constructor/pumpptywnd.cpp new file mode 100644 index 0000000..7b150d1 --- /dev/null +++ b/Constructor/pumpptywnd.cpp @@ -0,0 +1,26 @@ +#include "pumpptywnd.h" +#include "pump.h" + +PumpPtyWnd::PumpPtyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade):ItemPtyWnd(cobject, refGlade) +{ + refGlade->get_widget("lbl_property", lbl_property); + refGlade->get_widget("txt_item_name", txt_item_name); + lbl_property->set_text("Entrega Maxima"); +} + +PumpPtyWnd::~PumpPtyWnd() +{ +} + +void PumpPtyWnd::on_btn_accept_clicked() +{ + pump->set_entrega( spin_caudal->get_value() ); + pump->set_name( txt_item_name->get_text() ); + hide(); +} + +void PumpPtyWnd::on_btn_apply_clicked() +{ + pump->set_entrega( spin_caudal->get_value() ); + pump->set_name( txt_item_name->get_text() ); +} diff --git a/Constructor/pumpptywnd.h b/Constructor/pumpptywnd.h new file mode 100644 index 0000000..502240b --- /dev/null +++ b/Constructor/pumpptywnd.h @@ -0,0 +1,18 @@ +#ifndef _PUMPPTYWND_H_ +#define _PUMPPTYWND_H_ + +#include "itemptywnd.h" + +class Pump; + +class PumpPtyWnd : public ItemPtyWnd { + public: + PumpPtyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade); + virtual ~PumpPtyWnd(); + Pump *pump; + Gtk::Label *lbl_property; + virtual void on_btn_accept_clicked(); + virtual void on_btn_apply_clicked(); +}; + +#endif diff --git a/Constructor/splitter.cpp b/Constructor/splitter.cpp index 5e61abd..3e17b49 100644 --- a/Constructor/splitter.cpp +++ b/Constructor/splitter.cpp @@ -11,6 +11,7 @@ Splitter::Splitter() image = imageO; set_size_request(image->get_width(), image->get_height()); property_wnd->set_title("Propiedades del Codo"); + name = "codo"; } Splitter::~Splitter() diff --git a/Constructor/union.cpp b/Constructor/union.cpp index 3de8b90..cb0a6c4 100644 --- a/Constructor/union.cpp +++ b/Constructor/union.cpp @@ -11,6 +11,7 @@ Union::Union() image = imageN; set_size_request(image->get_width(), image->get_height()); property_wnd->set_title("Propiedades del Empalme"); + name = "union"; } Union::~Union() -- 2.43.0