]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/include/constructor.h
Mini bugfix.
[z.facultad/75.42/plaqui.git] / Constructor / include / constructor.h
index 702e79647158ace61f373fbf1f9d385db5a2862d..bf6bc4e49f5ca2be5b1f4e0b11be4f5d131ff030 100644 (file)
 #include "or.h"
 #include "not.h"
 #include "libxml/parser.h"
-
+/**
+ * Clase principal de esta aplicación.
+ * Esta clase se 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
+ * \ref WorkPlace "á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 píxels, lo que 
+ * permite que el usuario no tenga que ser muy preciso a 
+ * la hora de soltar un item en el
+ * \ref WorkPlace "área de trabajo".
+ * 
+ * Cada nuevo elemento creado es almacenado en una
+ * \ref listaItems "lista de elementos de transporte o almacenamiento de fluido",
+ * o en una \ref lista_logic_Items "lista de elementos lógicos".
+ * 
+ * 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 más adelante.
+ */
 class Constructor : public Gtk::Window {
        public: 
                Constructor(BaseObjectType* cobject, const Glib::RefPtr<Gnome::Glade::Xml>& refGlade);
                virtual ~Constructor();
        private:
+               ///Archivo donde se guarda el trabajo.
                FILE *archivo;
+       
+               ///Variable que indica si el trabajo fue guardado.
                bool saved;
+       
+               ///Ruta al archivo.
                std::string file_name;
        protected: 
+       /// Contador para los id de los items.
        int id;
-               // / defino los elementos de la ventana.
+       /// Defino los elementos de la ventana.
        Gtk::Button *btn_canio, *btn_codo, *btn_y, *btn_tanque, *btn_bomba, *btn_exclusa, *btn_drain, *btn_file_ok, *btn_file_cancel, *btn_check, *btn_dlg_close,
-                                               *btn_and, *btn_or, *btn_not, *btn_open_ok, *btn_open_cancel, *quick_btn_clear, *quick_btn_save, *quick_btn_open, *quick_btn_new, *btn_find;
+                                               *btn_and, *btn_or, *btn_not, *btn_open_ok, *btn_open_cancel, *quick_btn_clear, *quick_btn_save, *quick_btn_open, *quick_btn_new, *btn_find,
+                                               *btn_dlg_quit_ok, *btn_dlg_quit_cancel;
        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::Combo *combo_entry;
-       Gtk::Dialog *dlg_connect;
+       Gtk::Dialog *dlg_connect, *dlg_about, *dlg_quit;
        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;
@@ -54,7 +95,8 @@ class Constructor : public Gtk::Window {
        WorkPlace *workplace;
        bool logica;
        bool can_drop(CItem *, int , int);
-       
+       // Sobrecarga del evento cerrar
+       virtual bool on_delete_event(GdkEventAny *e);
        // /señales de control para los elementos de la ventana.
        virtual void on_btn_canio_drag_get(const Glib::RefPtr<Gdk::DragContext>& context, GtkSelectionData* selection_data, guint info, guint time);
        virtual void on_btn_y_drag_get(const Glib::RefPtr<Gdk::DragContext>& context, GtkSelectionData* selection_data, guint info, guint time);
@@ -82,7 +124,10 @@ class Constructor : public Gtk::Window {
        virtual void on_quick_btn_save_clicked();
        virtual void on_quick_btn_new_clicked();
        virtual void on_btn_find_clicked();
+       virtual void on_btn_dlg_quit_ok_clicked();
+       virtual void on_btn_dlg_quit_cancel_clicked();
        
+       ///Verifica la conexion de todos los items iterando en la listaItems.
        bool check_connection(Glib::ustring& name);
        
        // señales para cambiar el icono.
@@ -103,6 +148,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);
@@ -110,5 +157,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