]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/src/constructor.cpp
Se arregla bug en la union que hacia que el flujo inicial este en 0, y eso condicion...
[z.facultad/75.42/plaqui.git] / Constructor / src / constructor.cpp
index 3447a2eb441ec2118dbfe303654fdfe1f8257bdf..4ab3b19c5fe2c30a4782fd61f7942443d50af9a4 100644 (file)
@@ -274,6 +274,7 @@ void Constructor::on_load_from_xml()
        file_open_selection->hide();
        id = listaItems.size()+lista_logic_Items.size()+1;
 }
        file_open_selection->hide();
        id = listaItems.size()+lista_logic_Items.size()+1;
 }
+
 void Constructor::on_btn_file_ok_clicked()
 {
        std::list<CItem *>::iterator i = listaItems.begin();
 void Constructor::on_btn_file_ok_clicked()
 {
        std::list<CItem *>::iterator i = listaItems.begin();
@@ -282,8 +283,12 @@ void Constructor::on_btn_file_ok_clicked()
                fprintf(archivo, "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n");
                fprintf (archivo,"<planta>\n");
                while ( i != listaItems.end() ){
                fprintf(archivo, "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n");
                fprintf (archivo,"<planta>\n");
                while ( i != listaItems.end() ){
-                       CItem *temp = *i;
-                       temp->save(archivo);
+                       (*i)->save(archivo);
+                       i++;
+               }
+               i = lista_logic_Items.begin();
+               while ( i != lista_logic_Items.end() ) {
+                       (*i)->save(archivo);
                        i++;
                }
                fprintf(archivo,"</planta>\n");
                        i++;
                }
                fprintf(archivo,"</planta>\n");
@@ -360,14 +365,12 @@ void Constructor::on_not_drag_begin(const Glib::RefPtr<Gdk::DragContext>& contex
 
 void Constructor::on_item_drag_begin(const Glib::RefPtr<Gdk::DragContext>& context, CItem *item)
 {
 
 void Constructor::on_item_drag_begin(const Glib::RefPtr<Gdk::DragContext>& context, CItem *item)
 {
-       GdkEventExpose e;
        context->set_icon(item->get_image(), 5, 5);
        context->set_icon(item->get_image(), 5, 5);
-       workplace->on_expose_event(&e);
 }
 
 void Constructor::on_item_drag_data_get(const Glib::RefPtr<Gdk::DragContext>& context, GtkSelectionData* selection_data, guint info, guint time)
 {      
 }
 
 void Constructor::on_item_drag_data_get(const Glib::RefPtr<Gdk::DragContext>& context, GtkSelectionData* selection_data, guint info, guint time)
 {      
-               gtk_selection_data_set (selection_data, selection_data->target, 10, (const guchar*)"item_codo.png", 13);
+       gtk_selection_data_set (selection_data, selection_data->target, 10, (const guchar*)"item_codo.png", 13);
 }
 
 bool Constructor::can_drop(CItem *item, int _x, int _y)
 }
 
 bool Constructor::can_drop(CItem *item, int _x, int _y)
@@ -390,6 +393,8 @@ bool Constructor::can_drop(CItem *item, int _x, int _y)
 
 void Constructor::on_item_drop_drag_received(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, GtkSelectionData* selection_data, guint info, guint time)
 {
 
 void Constructor::on_item_drop_drag_received(const Glib::RefPtr<Gdk::DragContext>& context, int x, int y, GtkSelectionData* selection_data, guint info, guint time)
 {
+       workplace->update_logic_position();
+       workplace->queue_draw();
        if ( !logica ) {
                /* Ajusto coordenada x e y para que caigan en un lugar de una cuadricula de 32x32 */
                int i,j;
        if ( !logica ) {
                /* Ajusto coordenada x e y para que caigan en un lugar de una cuadricula de 32x32 */
                int i,j;
@@ -427,7 +432,7 @@ void Constructor::on_item_drop_drag_received(const Glib::RefPtr<Gdk::DragContext
                        } else if (strcmp((const char *)selection_data->data, "or_e.png")==0) {
                                a = new Or(); a->is_logic = true;
                                } else if (strcmp((const char *)selection_data->data, "not_e.png")==0) {
                        } else if (strcmp((const char *)selection_data->data, "or_e.png")==0) {
                                a = new Or(); a->is_logic = true;
                                } else if (strcmp((const char *)selection_data->data, "not_e.png")==0) {
-                                       a = new Not();  a->is_logic = true;
+                                       a = new Not(); a->is_logic = true;
                                        }
                
                        char char_id[10];
                                        }
                
                        char char_id[10];
@@ -469,6 +474,8 @@ void Constructor::on_item_drop_drag_received(const Glib::RefPtr<Gdk::DragContext
                }
                context->drag_finish(false, false, time);
        }
                }
                context->drag_finish(false, false, time);
        }
+       workplace->update_logic_position();
+       workplace->queue_draw();
 }
 
 void Constructor::on_btn_check_clicked()
 }
 
 void Constructor::on_btn_check_clicked()
@@ -497,6 +504,14 @@ void Constructor::on_btn_check_clicked()
                dlg_label->set_text("Los elementos estan conectados\n\t\tcorrectamente");
                dlg_connect->show();    
        }
                dlg_label->set_text("Los elementos estan conectados\n\t\tcorrectamente");
                dlg_connect->show();    
        }
+       std::cout<<"check_connection logic"<<std::endl;
+       std::list<CItem *>::iterator j = lista_logic_Items.begin();
+       while ( j != lista_logic_Items.end() ) {
+               (*j)->check_connection();
+               j++;
+       }
+
+
 }
 
 Pump *Constructor::loadBomba(xmlNodePtr nodo)
 }
 
 Pump *Constructor::loadBomba(xmlNodePtr nodo)