]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/src/constructor.cpp
Se pasa la conexion suicida al finish del TCPServer para que sea 'transparente'.
[z.facultad/75.42/plaqui.git] / Constructor / src / constructor.cpp
index 87a943bb72e924fcc54aab2949dc7b1f104e8f62..2318a4405d57b71b14ba1bc07c98163ecdc68945 100644 (file)
@@ -189,7 +189,13 @@ void Constructor::on_main_menu_open()
 void Constructor::on_main_menu_save()
 {
        // Conecto el boton OK para llamar al salvar
-       file_selection->show();
+       Glib::ustring name;
+       if ( ! check_connection(name) ) {
+               dlg_connect->set_title("Error");
+               dlg_label->set_text("El elemento "+name+" no esta conectado\n\t\tcorrectamente");
+               dlg_connect->show();
+       } else  
+               file_selection->show();
 }
 
 void Constructor::on_edit_menu_del()
@@ -292,7 +298,8 @@ void Constructor::on_btn_file_ok_clicked()
 {
        std::list<CItem *>::iterator i = listaItems.begin();
        file_name = file_selection->get_filename();
-       if ( (archivo = fopen( file_name.c_str(), "w+")) != NULL ){
+       Glib::ustring name;
+       if ( (archivo = fopen( file_name.c_str(), "w+")) != NULL ){
                fprintf(archivo, "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n");
                fprintf (archivo,"<planta>\n");
                while ( i != listaItems.end() ){
@@ -306,9 +313,9 @@ void Constructor::on_btn_file_ok_clicked()
                }
                fprintf(archivo,"</planta>\n");
                saved = true;
+               fclose(archivo);
        } else 
                std::cout<<"NO SE ABRIO EL ARCHIVO"<<std::endl;
-       fclose(archivo);
        file_selection->hide();
 }
 
@@ -527,6 +534,21 @@ void Constructor::on_item_drop_drag_received(const Glib::RefPtr<Gdk::DragContext
 }
 
 void Constructor::on_btn_check_clicked()
+{
+       Glib::ustring name;
+       if ( ! check_connection(name) ) {
+               dlg_connect->set_title("Error");
+               dlg_label->set_text("El elemento "+name+" no esta conectado\n\t\tcorrectamente");
+               dlg_connect->show();
+       } else {
+               dlg_connect->set_title("Conexion");
+               dlg_label->set_text("Los elementos estan conectados\n\t\tcorrectamente");
+               dlg_connect->show();
+       }
+}
+
+
+bool Constructor::check_connection(Glib::ustring& name)
 {
        std::list<CItem *>::iterator i = listaItems.begin();
        while ( i != listaItems.end() ){
@@ -534,33 +556,29 @@ void Constructor::on_btn_check_clicked()
                (*i)->is_connected = false;
                i++;
        }
-       
        i = listaItems.begin();
        if ( !listaItems.empty() ) {
                while ( i != listaItems.end() ) {
                        CItem *temp = *i;
                        std::cout<< "item="<<temp->get_name()<<" "<<"check= "<<temp->check_connection()<<std::endl;
                        if ( !temp->check_connection() ) {
-                               dlg_connect->set_title("Error");
-                               dlg_label->set_text("El elemento "+temp->get_name()+" no esta conectado\n\t\tcorrectamente");
-                               dlg_connect->show();
-                               return;
+                               name = temp->get_name();
+                               return false;
                        }       
                i++;
                }
-               dlg_connect->set_title("Conexion");
-               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();
+               if ( !(*j)->check_connection() ) {
+                       name = (*j)->get_name();
+                       return false;
+               }
                j++;
        }
-
-
-}
+       return true;
+}      
 
 Pump *Constructor::loadBomba(xmlNodePtr nodo)
 {