]> git.llucax.com Git - z.facultad/75.42/plaqui.git/blobdiff - Constructor/src/and.cpp
-Se carga la lista de items al ir haciendo click sobre ellos
[z.facultad/75.42/plaqui.git] / Constructor / src / and.cpp
index fbee4121cc32b6028fd85d251997a48bc4011363..2862eaaf2b90db7ad121e0904cdb0325130bf8aa 100644 (file)
@@ -25,10 +25,14 @@ And::~And()
 bool And::on_button_press_event(GdkEventButton *event)
 {
        if ((event->type == GDK_BUTTON_PRESS) && ( event->button == 1)) {
 bool And::on_button_press_event(GdkEventButton *event)
 {
        if ((event->type == GDK_BUTTON_PRESS) && ( event->button == 1)) {
-               CItem::logic_connect = true;
-               CItem::gate_id = ID;
-               combo_entry->set_text(name);
-               WorkPlace::pointed = ID;
+               if ( CItem::logic_connect ) {
+                       CItem::gate_id = ID;
+                       WorkPlace::pointed = ID;
+               }
+               list_pointed->push_back(name);
+               combo_entry->set_popdown_strings(*list_pointed);
+               combo_entry->get_entry()->set_text (name);
+               workplace->queue_draw();
        }
        
        if ((event->type == GDK_BUTTON_PRESS) && ( event->button == 2)){
        }
        
        if ((event->type == GDK_BUTTON_PRESS) && ( event->button == 2)){
@@ -99,7 +103,7 @@ void And::save(FILE *archivo)
        dato += c_img;
        dato += c_x;
        dato += c_y;
        dato += c_img;
        dato += c_x;
        dato += c_y;
-       for ( int i=0; i<=vec_connector.size()-1; i++) {
+       for ( int i=0; i<=vec_connector.size()-1&&!vec_connector.empty(); i++) {
                if ( vec_connector[i].type == IN ) {
                        dato += "\t\t<entrada>";
                        dato += vec_connector[i].name_dest + "</entrada>\n";
                if ( vec_connector[i].type == IN ) {
                        dato += "\t\t<entrada>";
                        dato += vec_connector[i].name_dest + "</entrada>\n";
@@ -118,9 +122,9 @@ bool And::check_connection()
        t_logic_connector temp;
        std::list<t_line>::iterator i = workplace->lista_lineas_in.begin();
        while ( i != workplace->lista_lineas_in.end() ) {
        t_logic_connector temp;
        std::list<t_line>::iterator i = workplace->lista_lineas_in.begin();
        while ( i != workplace->lista_lineas_in.end() ) {
-               if ( (*i).logic->get_id() == ID ) {
+               if ( workplace->get_logic_item((*i).logic_id)->get_id() == ID ) {
                        temp.type = OUT;
                        temp.type = OUT;
-                       temp.name_dest = (*i).store->get_name();
+                       temp.name_dest = workplace->get_item((*i).store_id)->get_name();
                        vec_connector.push_back(temp);
                        cant_out++;
                }
                        vec_connector.push_back(temp);
                        cant_out++;
                }
@@ -129,9 +133,9 @@ bool And::check_connection()
 
        i = workplace->lista_lineas_out.begin();
        while ( i != workplace->lista_lineas_out.end() ) {
 
        i = workplace->lista_lineas_out.begin();
        while ( i != workplace->lista_lineas_out.end() ) {
-               if ( (*i).logic->get_id() == ID ) {
+               if ( workplace->get_logic_item((*i).logic_id)->get_id() == ID ) {
                        temp.type = IN;
                        temp.type = IN;
-                       temp.name_dest = (*i).store->get_name();
+                       temp.name_dest = workplace->get_item((*i).store_id)->get_name();
                        vec_connector.push_back(temp);
                        cant_in++;
                }
                        vec_connector.push_back(temp);
                        cant_in++;
                }