+ /* LINEAS A LAS ENTRADAS DE LOS ITEMS */
+ /* Borro la linea desde el item eliminado hasta el que este conectado */
+ std::list<t_line>::iterator i = lista_lineas_in.begin();
+ while ( i != lista_lineas_in.end() ){
+ if (get_item( (*i).store_id ) != NULL)
+ if ( get_item( (*i).store_id )->get_id() == _id ) {
+ get_logic_item((*i).logic_id)->set_out_connected(false);
+ lista_lineas_in.erase(i);
+ i = lista_lineas_in.begin();
+ }
+ i++;
+ }
+
+ /* Borra la linea desde la compuerta eliminada hasta el item conectado a ella */
+ i = lista_lineas_in.begin();
+ while ( i != lista_lineas_in.end() ){
+ if ( get_logic_item((*i).logic_id) != NULL)
+ if ( get_logic_item((*i).logic_id)->get_id() == _id) {
+ lista_lineas_in.erase(i);
+ i = lista_lineas_in.begin();
+ }
+ i++;
+ }
+
+ /* LINEAS A LAS SALIDAS DE LOS ITEMS */
+ /* Borro la linea desde el item eliminado hasta el que este conectado */
+ std::list<t_line>::iterator j = lista_lineas_out.begin();
+ while ( j != lista_lineas_out.end() ){
+ if ( get_item((*j).store_id) != NULL )
+ if ( get_item((*j).store_id)->get_id() == _id ) {
+ if (dynamic_cast<Not *>(get_logic_item((*j).logic_id)))
+ get_logic_item((*j).logic_id)->set_in_connected(false);
+ lista_lineas_out.erase(j);
+ j = lista_lineas_out.begin();
+ }
+ j++;
+ }
+
+ /* Borra la linea desde la compuerta eliminada hasta el item conectado a ella */
+ j = lista_lineas_out.begin();
+ while ( j != lista_lineas_out.end() ){
+ if ( get_logic_item((*j).logic_id) != NULL )
+ if ( get_logic_item((*j).logic_id)->get_id() == _id ) {
+ lista_lineas_out.erase(j);
+ j = lista_lineas_out.begin();
+ }
+ j++;
+ }
+
+ /* LINEAS ENTRE COMPUERTAS */
+ /* Borra la linea entre al compuerta eliminada y la que esta conectada a ella en su entrada */
+ std::list<t_line>::iterator k = lista_lineas_logic.begin();
+ while ( k != lista_lineas_logic.end() ){
+ if ( get_logic_item((*k).store_id) != NULL )
+ if ( get_logic_item((*k).store_id)->get_id() == _id ) {
+ get_logic_item((*k).logic_id)->set_out_connected(false);
+ std::cout<< get_logic_item((*k).logic_id)->get_name() <<std::endl;
+ lista_lineas_logic.erase(k);
+ k = lista_lineas_logic.begin();
+ }
+ k++;
+ }
+
+ /* Borra la linea entre al compuerta eliminada y la que esta conectada a ella en su salida*/
+ k = lista_lineas_logic.begin();
+ while ( k != lista_lineas_logic.end() ){
+ if ( get_logic_item((*k).logic_id) != NULL )
+ if ( get_logic_item((*k).logic_id)->get_id() == _id ) {
+ if (dynamic_cast<Not *>(get_logic_item((*k).store_id)))
+ get_logic_item((*k).store_id)->set_in_connected(false);
+ lista_lineas_logic.erase(k);
+ k = lista_lineas_logic.begin();
+ }
+ k++;
+ }
+}
+
+void WorkPlace::update_logic_position()
+{
+ std::list<CItem*>::iterator i = listaItems->begin();
+ while ( i != listaItems->end() ){
+ (*i)->update_logic_position();
+ i++;
+ }
+ i = lista_logic_Items->begin();
+ while ( i != lista_logic_Items->end() ){
+ (*i)->update_logic_position();
+ i++;
+ }
+}
+
+void WorkPlace::draw_line(int x1, int y1, int x2, int y2, Gdk::Color &color)
+{
+ gc->set_foreground(color);
+ gc->set_line_attributes(3, Gdk::LINE_SOLID, Gdk::CAP_NOT_LAST, Gdk::JOIN_MITER);
+ get_window()->draw_line (gc, x1, y1, x1, y2);
+ get_window()->draw_line (gc, x1, y2, x2, y2);
+}
+
+
+bool WorkPlace::chek_name(Glib::ustring _name, int _id)
+{
+ std::list<CItem *>::iterator i;
+ i = listaItems->begin();
+ while ( i != listaItems->end() ) {
+ if ( (*i)->get_name() == _name && (*i)->get_id() != _id )
+ return true;