X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/ea7708f0d91b00a54cc5f136a67e9f9bd272329d..26a40f607344c63baa4b00f41fc88e02d5084817:/Constructor/include/constructor.h diff --git a/Constructor/include/constructor.h b/Constructor/include/constructor.h index a9c1cbf..5ba90be 100644 --- a/Constructor/include/constructor.h +++ b/Constructor/include/constructor.h @@ -25,7 +25,40 @@ #include "or.h" #include "not.h" #include "libxml/parser.h" - +/**La clase principal de esta aplicación es la clase + * Constructor. Ella es la encargada de obtener e + * inicializar todos los elementos de la ventana + * principal, ya sean botones, cuadros de diálogo, barras + * de herramientas, etc. + * + * Para cada botón referenciado por esta clase, es + * conectado a ellos una señal, que será el método que + * deben invocar al ser presionados. + * + * Uno de los métodos mas importantes de esta clase es + * on_item_drop_drag_recived() que es la encargada de + * crear un nuevo elemento si es arrastrado desde la barra + * de elementos, o de moverlo dentro del área de trabajo + * si este ya estaba creado. + * + * Para facilitar el diseño y disminuir la complejidad, la + * grilla fue dividida en sectores de 32x32 pixels, lo que + * permite que el usuario no tenga que ser muy preciso a + * la hora de soltar un item en el área de trabajo. + * + * Cada nuevo elemento creado es almacenado en una lista + * de elementos ( listaItems ) de transporte o + * almacenamiento de fluido, o de elementos lógicos, según + * cual sea ( lista_logic_items). + * + * Otra de las funciones principales es "check_connection()" + * que recorre todos los items de ambas listas y verifica + * que se haya formado en el momento del diseño un + * circuito posible. + * + * Esta clase contiene los métodos necesarios para guardar + * y cargar un archivo XML cuyo formato se explica mas adelante. + */ class Constructor : public Gtk::Window { public: Constructor(BaseObjectType* cobject, const Glib::RefPtr& refGlade); @@ -45,6 +78,7 @@ class Constructor : public Gtk::Window { Gtk::Combo *combo_entry; Gtk::Dialog *dlg_connect; Gtk::Label *dlg_label; + Gtk::Statusbar *status_bar; Glib::RefPtr ico_canio, ico_y, ico_codo, ico_tanque, ico_bomba, ico_exclusa, ico_drain, ico_and, ico_or, ico_not; Glib::RefPtr ico_last; std::list listTargets; @@ -102,6 +136,8 @@ class Constructor : public Gtk::Window { virtual void on_item_drop_drag_received(const Glib::RefPtr& context, int x, int y, GtkSelectionData* selection_data, guint info, guint time); // Carga desde un XML + void create_lines(xmlNodePtr nodo); + void create_line(xmlNodePtr nodo, int logic_id); Pump *loadBomba(xmlNodePtr nodo); Conduct *loadConduct(xmlNodePtr nodo); Exclusa *loadExclusa(xmlNodePtr nodo); @@ -109,5 +145,9 @@ class Constructor : public Gtk::Window { Union *loadUnion(xmlNodePtr nodo); Drain *loadDrain(xmlNodePtr nodo); Splitter *loadCodo(xmlNodePtr nodo); + And *loadAnd(xmlNodePtr nodo); + Not *loadNot(xmlNodePtr nodo); + Or *loadOr(xmlNodePtr nodo); + Gdk::Color loadColor(xmlNodePtr nodo); }; #endif