]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/include/constructor.h
Luca, ahi va lo que hice, segui los pasos que me dijiste, esperemos que este bien
[z.facultad/75.42/plaqui.git] / Constructor / include / constructor.h
index 9e4fac2293098a0d6a783e21ae0f0493e11cd20b..5ba90be7adcb6cc7bf91d31aa3123450863faa75 100644 (file)
@@ -11,7 +11,7 @@
 #include <gtkmm/scrolledwindow.h>
 #include <gtkmm/checkbutton.h>
 #include <gtkmm/fileselection.h>
-#include <gtkmm/entry.h>
+#include <gtkmm/combo.h>
 #include "workplace.h"
 #include "item.h"
 #include "splitter.h"
 #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<Gnome::Glade::Xml>& refGlade);
@@ -42,13 +75,15 @@ class Constructor : public Gtk::Window {
        Gtk::ImageMenuItem *main_menu_quit,*main_menu_new, *edit_menu_del, *edit_menu_delete_all, *main_menu_save, *main_menu_open;
        Gtk::CheckButton *chk_btn_logica;
        Gtk::FileSelection *file_selection, *file_open_selection;
-       Gtk::Entry *combo_entry;
+       Gtk::Combo *combo_entry;
        Gtk::Dialog *dlg_connect;
        Gtk::Label *dlg_label;
+       Gtk::Statusbar *status_bar;
        Glib::RefPtr<Gdk::Pixbuf> ico_canio, ico_y, ico_codo, ico_tanque, ico_bomba, ico_exclusa, ico_drain, ico_and, ico_or, ico_not;
        Glib::RefPtr<Gdk::Pixbuf> ico_last;
        std::list<Gtk::TargetEntry> listTargets;
        std::list<CItem *> listaItems, lista_logic_Items;
+       std::list<Glib::ustring> list_pointed;
        WorkPlace *workplace;
        bool logica;
        bool can_drop(CItem *, int , int);
@@ -101,6 +136,8 @@ class Constructor : public Gtk::Window {
        virtual void on_item_drop_drag_received(const Glib::RefPtr<Gdk::DragContext>& 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);
@@ -108,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