From: Nicolás Dimov Date: Sun, 30 Nov 2003 19:23:36 +0000 (+0000) Subject: agregue comentarios an los .h y rich me canto que faltaba una funcion X-Git-Tag: svn_import~150 X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/commitdiff_plain/300e400e3a536be2fd747021cd0a8ea2b0dff3dd agregue comentarios an los .h y rich me canto que faltaba una funcion --- diff --git a/Constructor/include/and.h b/Constructor/include/and.h index a71b536..a6354df 100644 --- a/Constructor/include/and.h +++ b/Constructor/include/and.h @@ -5,23 +5,55 @@ class And : public CItem { public: + ///Constructor. Se puede definir la orientacion de la imagen de la compuerta. And(int orientacion=0); + + ///Destructor. virtual ~And(); + + ///Evento invocado al presionar un boton del mouse. virtual bool on_button_press_event(GdkEventButton *event); + + ///Rota la imagen 90 grados en sentido horario virtual void on_menu_popup_rotar(); + + ///La compuerta guarda su estado en el archivo en formato XML. virtual void save(FILE *archivo); + + ///Verifica con quien esta conectada. virtual bool check_connection(); + + ///Devuelve IN si el click fue en la zona de entrada, o OUT si fue en la zona de salida logica. virtual ConnectorType detect_click_position(int _a, int _b); + + ///Actualiza las posiciones de los conectores logicos ante una rotacion. virtual void update_logic_position(); + + ///Devuelve la posicion del conector de entrada en _a, _b. virtual void get_in_logic_connect_position(int& _a, int& _b); + + ///Devuelve la posicion del conector de salida en _a,_b. virtual void get_out_logic_connect_position(int& _a, int& _b); + + ///Devuelve el estado del conector logico. virtual bool get_out_logic_connect(); + + ///Setea el estado del conector logico. virtual void set_out_connected(bool _o); + + ///Dibuja los conectores logicos segun su orientacion. virtual void draw_connectors(); private: + ///posiciones de los conectores logicos. int in_x, in_y, out_x, out_y; + + ///Estado de los conectores logicos. bool out_connected; + + ///Vector de conectores utilizados para verificar con quien esta conectado. std::vector vec_connector; + + ///imagenes de la compuerta en sus 4 posiciones. Glib::RefPtr imageN; // 0 Glib::RefPtr imageS; // 1 Glib::RefPtr imageE; // 2 diff --git a/Constructor/include/cisternptywnd.h b/Constructor/include/cisternptywnd.h index 276e889..d8762dc 100644 --- a/Constructor/include/cisternptywnd.h +++ b/Constructor/include/cisternptywnd.h @@ -2,19 +2,30 @@ #define _CISTERNPTYWND_H_ #include "propertywnd.h" +/**Ventana de propiedades del TANQUE. +*/ class Cistern; class CisternPtyWnd : public PropertyWnd { public: + ///Constructor. CisternPtyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade); + + ///Destructor. virtual ~CisternPtyWnd(); + + ///Puntero al Tanque que se le modificaran sus propiedades. Cistern *cistern; + + ///Objetos de la ventana. Gtk::SpinButton *spin_inicial, *spin_capacidad; Gtk::Button *btn_select_color, *dlg_select_color_ok, *dlg_select_color_cancel; Gtk::Entry *txt_cistern_name; Gtk::ColorSelectionDialog *color_select_dlg; Gtk::DrawingArea *color_preview; + + ///Señales invocadas al presionarse algun boton. virtual void on_btn_accept_clicked(); virtual void on_btn_apply_clicked(); virtual void on_btn_select_color_clicked(); diff --git a/Constructor/include/drain.h b/Constructor/include/drain.h index a13b440..d45a8fe 100644 --- a/Constructor/include/drain.h +++ b/Constructor/include/drain.h @@ -3,22 +3,45 @@ #include #include "item.h" - +/**Definicion del DRENAJE. +*/ class Drain : public CItem { public: + ///Constructor. Drain(int orientacion=0); + + ///Destructor. virtual ~Drain(); + + ///Metodo invocado al presionar un boton del mouse. virtual bool on_button_press_event(GdkEventButton *event); + + ///Rota la imagen 90 grados en sentido horario. virtual void on_menu_popup_rotar(); + + ///Muestra la ventana de propiedades. virtual void on_menu_popup_propiedades(); + + ///Devuelve el valor del atributo "contenido_inicial". double get_contenido_inicial(); + + ///Devuelve el valor del atributo "capacidad". double get_capacidad(); + + ///El item guarda su estado en el archivo en formato XML. virtual void save(FILE *archivo); + + ///Verifica su conexion con los items adyacentes. virtual bool check_connection(); + + ///Resetea sus conectores a su estado de desconexion. virtual void set_default_connector(); + + ///Devuelve el tipo de conector que posee en las coordenadas _a,_b, devuelve UNDEF si no es area de conexion. virtual ConnectorType get_connector_type(int _a, int _b); protected: + ///Imagenes del drenaje en sus 4 posiciones. Glib::RefPtr imageE; // 0 Glib::RefPtr imageO; // 1 Glib::RefPtr imageN; // 1 diff --git a/Constructor/include/exclusaptywnd.h b/Constructor/include/exclusaptywnd.h index 11419ff..af8c3ab 100644 --- a/Constructor/include/exclusaptywnd.h +++ b/Constructor/include/exclusaptywnd.h @@ -3,16 +3,27 @@ #include "propertywnd.h" +/**Ventana de propiedades de la EXCLUSA. +*/ class Exclusa; class ExclusaPtyWnd : public PropertyWnd { public: + ///Constructor. ExclusaPtyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade); + + ///Destructor. virtual ~ExclusaPtyWnd(); + + ///Puntero a la exclusa que se le modifican las propiedades. Exclusa *exclusa; + + ///Objetos de la ventana. Gtk::Entry *txt_exclusa_name; Gtk::RadioButton *rd_btn_close, *rd_btn_open; Gtk::RadioButton::Group group; + + ///Señales que se invocan al presionar los botones. virtual void on_btn_accept_clicked(); virtual void on_btn_apply_clicked(); virtual void on_rd_btn_close_clicked(); diff --git a/Constructor/include/itemptywnd.h b/Constructor/include/itemptywnd.h index c8f4dd1..cf14c25 100644 --- a/Constructor/include/itemptywnd.h +++ b/Constructor/include/itemptywnd.h @@ -1,17 +1,24 @@ #ifndef _ITEMPTYWND_H_ #define _ITEMPTYWND_H_ - #include "propertywnd.h" +/**Ventana de propiedades de los items: CODO, TUBO y EMPALME. + */ class ItemPtyWnd : public PropertyWnd { public: + ///Constructor. ItemPtyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade); + + ///Destructor. virtual ~ItemPtyWnd(); + + ///Objetos de la ventana. Gtk::SpinButton *spin_caudal; Gtk::RadioButton *rd_btn_union, *rd_btn_division; Gtk::Label *lb_type, *lb_max_fluid; Gtk::Entry *txt_item_name; protected: + ///Señales que se invocan al presionar los botones. virtual void on_btn_cancel_clicked(); virtual void on_btn_accept_clicked(); virtual void on_btn_apply_clicked(); diff --git a/Constructor/include/not.h b/Constructor/include/not.h index 02b2bb4..ee1efcf 100644 --- a/Constructor/include/not.h +++ b/Constructor/include/not.h @@ -2,27 +2,62 @@ #define _NOT_H_ #include "item.h" +/** Clase que implementa la compuerta logica NOT. +*/ class Not : public CItem { public: + ///Constructor. Se puede definir la orientacion de la imagen de la compuerta. Not(int orientacion=0); + + ///Destructor. virtual ~Not(); + + ///Evento invocado al presionar un boton del mouse. virtual bool on_button_press_event(GdkEventButton *event); + + ///Rota la imagen 90 grados en sentido horario virtual void on_menu_popup_rotar(); + + ///La compuerta guarda su estado en el archivo en formato XML. virtual void save(FILE *archivo); + + ///Verifica con quien esta conectada. virtual bool check_connection(); + + ///Devuelve IN si el click fue en la zona de entrada, o OUT si fue en la zona de salida logica. virtual ConnectorType detect_click_position(int _a, int _b); + + ///Actualiza las posiciones de los conectores logicos ante una rotacion. virtual void update_logic_position(); + + ///Devuelve la posicion del conector de entrada en _a, _b. virtual void get_in_logic_connect_position(int& _a, int& _b); + + ///Devuelve la posicion del conector de salida en _a,_b. virtual void get_out_logic_connect_position(int& _a, int& _b); + + ///Devuelve el estado del conector logico. + virtual bool get_out_logic_connect(); + virtual bool get_in_logic_connect(); + + ///Setea el estado del conector logico. virtual void set_out_connected(bool _o); virtual void set_in_connected(bool _o); - virtual bool get_out_logic_connect(); + + ///Dibuja los conectores logicos segun su orientacion. virtual void draw_connectors(); private: + ///posiciones de los conectores logicos. int in_x, in_y, out_x, out_y; + + ///Estado de los conectores logicos. bool in_connected, out_connected; + + ///Vector de conectores utilizados para verificar con quien esta conectado. std::vector vec_connector; + + ///imagenes de la compuerta en sus 4 posiciones. Glib::RefPtr imageN; // 0 Glib::RefPtr imageS; // 1 Glib::RefPtr imageE; // 2 diff --git a/Constructor/include/or.h b/Constructor/include/or.h index 0691903..77d996f 100644 --- a/Constructor/include/or.h +++ b/Constructor/include/or.h @@ -5,23 +5,55 @@ class Or : public CItem { public: + ///Constructor. Se puede definir la orientacion de la imagen de la compuerta. Or(int orientacion=0); + + ///Destructor. virtual ~Or(); + + ///Evento invocado al presionar un boton del mouse. virtual bool on_button_press_event(GdkEventButton *event); + + ///Rota la imagen 90 grados en sentido horario virtual void on_menu_popup_rotar(); + + ///La compuerta guarda su estado en el archivo en formato XML. virtual void save(FILE *archivo); + + ///Verifica con quien esta conectada. virtual bool check_connection(); + + ///Devuelve IN si el click fue en la zona de entrada, o OUT si fue en la zona de salida logica. virtual ConnectorType detect_click_position(int _a, int _b); + + ///Actualiza las posiciones de los conectores logicos ante una rotacion. virtual void update_logic_position(); + + ///Devuelve la posicion del conector de entrada en _a, _b. virtual void get_in_logic_connect_position(int& _a, int& _b); + + ///Devuelve la posicion del conector de salida en _a,_b. virtual void get_out_logic_connect_position(int& _a, int& _b); + + ///Devuelve el estado del conector logico. virtual bool get_out_logic_connect(); + + ///Setea el estado del conector logico. virtual void set_out_connected(bool _o); + + ///Dibuja los conectores logicos segun su orientacion. virtual void draw_connectors(); private: + ///posiciones de los conectores logicos. int in_x, in_y, out_x, out_y; + + ///Estado de los conectores logicos. bool out_connected; + + ///Vector de conectores utilizados para verificar con quien esta conectado. std::vector vec_connector; + + ///imagenes de la compuerta en sus 4 posiciones. Glib::RefPtr imageN; // 0 Glib::RefPtr imageS; // 1 Glib::RefPtr imageE; // 2 diff --git a/Constructor/include/propertywnd.h b/Constructor/include/propertywnd.h index b510a21..98cf475 100644 --- a/Constructor/include/propertywnd.h +++ b/Constructor/include/propertywnd.h @@ -10,14 +10,27 @@ #include #include +/**Prototipo de ventana de propiedades, la cual tiene en comun con todas sus herederas los botones + * Aceptar, Cancelar y Aplicar, donde la accion Cancelar es igual en todas. + */ + class CItem; class PropertyWnd : public Gtk::Window{ public: + ///Constructor. PropertyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade); + + ///Destructor. virtual ~PropertyWnd(); + + ///Puntero al item que se le modifican las propiedades. CItem *item; + + ///Objetos de la ventana. Gtk::Button *btn_cancel, *btn_accept, *btn_apply; + + ///Señales que se invocan al presionar los botones. virtual void on_btn_cancel_clicked(); virtual void on_btn_accept_clicked(); virtual void on_btn_apply_clicked(); diff --git a/Constructor/include/pumpptywnd.h b/Constructor/include/pumpptywnd.h index 296cddd..877dff0 100644 --- a/Constructor/include/pumpptywnd.h +++ b/Constructor/include/pumpptywnd.h @@ -2,19 +2,31 @@ #define _PUMPPTYWND_H_ #include "propertywnd.h" +/**Ventana de propiedades de la BOMBA. +*/ class Pump; class PumpPtyWnd : public PropertyWnd{ public: + ///Constructor. PumpPtyWnd(BaseObjectType* cobject, const Glib::RefPtr& refGlade); + + ///Destructor. virtual ~PumpPtyWnd(); + + ///Puntero al item al cual se le modifcan las propiedades. Pump *pump; + + ///Botones y objetos de la ventana. Gtk::SpinButton *spin_fluid; Gtk::Entry *txt_pump_name; Gtk::Button *btn_select_color, *dlg_select_color_cancel, *dlg_select_color_ok; Gtk::ColorSelectionDialog *color_select_dlg; Gtk::DrawingArea *color_preview; + + ///Señales que se invocan al presionar los botones. + ///Almacena los valores seteados en la ventana en el item apuntado. virtual void on_btn_accept_clicked(); virtual void on_btn_apply_clicked(); virtual void on_btn_select_color_clicked(); diff --git a/Constructor/include/splitter.h b/Constructor/include/splitter.h index 362d5de..af5366b 100644 --- a/Constructor/include/splitter.h +++ b/Constructor/include/splitter.h @@ -2,6 +2,8 @@ #define _SPLITTER_H_ #include "item.h" +/**Define el CODO. +*/ class Splitter : public CItem { public: diff --git a/Constructor/include/union.h b/Constructor/include/union.h index f0f1e9a..7e12046 100644 --- a/Constructor/include/union.h +++ b/Constructor/include/union.h @@ -1,8 +1,9 @@ -// Union.h #ifndef _UNION_H_ #define _UNION_H_ #include "item.h" +/**Define un empalme de flujo, que puede ser una UNION, o una DIVISION. +*/ class Union : public CItem { public: diff --git a/Constructor/include/workplace.h b/Constructor/include/workplace.h index 8a533e2..a559f37 100644 --- a/Constructor/include/workplace.h +++ b/Constructor/include/workplace.h @@ -15,6 +15,7 @@ class CItem; ///Esta estructura define una linea entre un item logico y uno de transporte. typedef struct { int logic_id, store_id; + bool cistern_out1; }t_line; class WorkPlace:public Gtk::Fixed { diff --git a/Constructor/src/cistern.cpp b/Constructor/src/cistern.cpp index 3240c3d..2db315f 100644 --- a/Constructor/src/cistern.cpp +++ b/Constructor/src/cistern.cpp @@ -54,7 +54,8 @@ bool Cistern::on_button_press_event(GdkEventButton *event) if (CItem::logic_connect && CItem::gate_id != -1) { if ( detect_click_position((int)event->x, (int)event->y) == IN && !workplace->get_logic_item(CItem::gate_id)->get_out_logic_connect()){ tmp_line.logic_id = workplace->get_logic_item(CItem::gate_id)->get_id(); - workplace->get_logic_item(CItem::gate_id)->set_out_connected(true); + tmp_line.cistern_out1 = true; + //workplace->get_logic_item(CItem::gate_id)->set_out_connected(true); tmp_line.store_id = ID; workplace->lista_lineas_out.push_back(tmp_line); workplace->queue_draw(); @@ -64,6 +65,7 @@ bool Cistern::on_button_press_event(GdkEventButton *event) workplace->get_logic_item(CItem::gate_id)->set_in_connected(true); tmp_line.logic_id = CItem::gate_id; tmp_line.store_id = ID; + tmp_line.cistern_out1 = false; workplace->lista_lineas_out.push_back(tmp_line); workplace->queue_draw(); } diff --git a/Constructor/src/workplace.cpp b/Constructor/src/workplace.cpp index 2dccaa3..6759989 100644 --- a/Constructor/src/workplace.cpp +++ b/Constructor/src/workplace.cpp @@ -113,7 +113,10 @@ bool WorkPlace::on_expose_event(GdkEventExpose *event) case 3: y_offset = 15; } - get_item(temp.store_id)->get_out_logic_connect_position(w,z); + if ( temp.cistern_out1 ) + get_item(temp.store_id)->get_in_logic_connect_position(w,z); + else + get_item(temp.store_id)->get_out_logic_connect_position(w,z); get_logic_item(temp.logic_id)->get_in_logic_connect_position(a, b); draw_line(w+item_y_offset, z+item_y_offset, a+x_offset, b+y_offset,color_out); get_window()->draw_line(gc, a, b, a+x_offset, b+y_offset); @@ -206,6 +209,8 @@ int WorkPlace::get_item_id(const std::string &_s) void WorkPlace::delete_line(int _id) { + /* LINEAS A LAS ENTRADAS DE LOS ITEMS */ + /* Borro la linea desde el item eliminado hasta el que este conectado */ std::list::iterator i = lista_lineas_in.begin(); while ( i != lista_lineas_in.end() ){ if (get_item( (*i).store_id ) != NULL) @@ -216,7 +221,8 @@ void WorkPlace::delete_line(int _id) } i++; } - + + /* Borra la linea desde la compuerta eliminada hasta el item conectado a ella */ i = lista_lineas_in.begin(); while ( i != lista_lineas_in.end() ){ if ( get_logic_item((*i).logic_id) != NULL) @@ -226,7 +232,9 @@ void WorkPlace::delete_line(int _id) } i++; } - + + /* LINEAS A LAS SALIDAS DE LOS ITEMS */ + /* Borro la linea desde el item eliminado hasta el que este conectado */ std::list::iterator j = lista_lineas_out.begin(); while ( j != lista_lineas_out.end() ){ if ( get_item((*j).store_id) != NULL ) @@ -238,7 +246,8 @@ void WorkPlace::delete_line(int _id) } j++; } - + + /* Borra la linea desde la compuerta eliminada hasta el item conectado a ella */ j = lista_lineas_out.begin(); while ( j != lista_lineas_out.end() ){ if ( get_logic_item((*j).logic_id) != NULL ) @@ -249,6 +258,8 @@ void WorkPlace::delete_line(int _id) j++; } + /* LINEAS ENTRE COMPUERTAS */ + /* Borra la linea entre al compuerta eliminada y la que esta conectada a ella en su entrada */ std::list::iterator k = lista_lineas_logic.begin(); while ( k != lista_lineas_logic.end() ){ if ( get_logic_item((*k).store_id) != NULL ) @@ -260,7 +271,8 @@ void WorkPlace::delete_line(int _id) } k++; } - + + /* Borra la linea entre al compuerta eliminada y la que esta conectada a ella en su salida*/ k = lista_lineas_logic.begin(); while ( k != lista_lineas_logic.end() ){ if ( get_logic_item((*k).logic_id) != NULL )