]> git.llucax.com Git - z.facultad/75.42/plaqui.git/commitdiff
Se implementa una señal entre Thread con Glib::Dispatch .. no se si soluciona el...
authorRicardo Markiewicz <gazer.arg@gmail.com>
Wed, 19 Nov 2003 00:35:41 +0000 (00:35 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Wed, 19 Nov 2003 00:35:41 +0000 (00:35 +0000)
 pero ahora se me trunca menos la aplicacion. TEST PLEASE!

Client/include/principal.h
Client/src/principal.cpp

index 7dbf3e75e44c8a967cc3aa3de25c1daba031efb7..8cfe7f24d8e4d32df2e1a66bd6766b428136e798 100644 (file)
@@ -25,7 +25,7 @@ protected:
 
        // Funciones de carga del XML
        bool is_xml_loaded;
-       void loadXML(const std::string &s);
+       void loadXML();
        void loadBomba(xmlNodePtr nodo);
        void loadCodo(xmlNodePtr nodo);
        void loadConduct(xmlNodePtr nodo);
@@ -34,6 +34,9 @@ protected:
        void loadUnion(xmlNodePtr nodo);
        void loadDrain(xmlNodePtr nodo);
 
+       Glib::Dispatcher load_xml_dispatch;
+       std::string xml_body;
+
        // Archivo XML del Padre
        Glib::RefPtr<Gnome::Glade::Xml> refXml;
 
index 5c53e35c56f1261597ac3bafb572c0b21394e6a1..2b04e38ed2260a4a972cdf2ddf8361365e6ee446 100644 (file)
@@ -50,6 +50,8 @@ Principal::Principal(BaseObjectType *co, const Glib::RefPtr<Gnome::Glade::Xml> &
 
        conexion = NULL;
        is_xml_loaded = false;
+
+       load_xml_dispatch.connect( SigC::slot(*this, &Principal::loadXML ) );
 }
 
 Principal::~Principal()
@@ -173,12 +175,16 @@ void Principal::on_conexion_finished()
        conexion = NULL;
 }
 
+#include <gdk/gdk.h>
+
 void Principal::on_conexion_ok(const std::string &body)
 {
        /* lo paso a la carga del XML */
        /* verifico que body este completo */
        if ((body.find("</planta>")>0) && (body.find("<planta>")>0)) {
-               loadXML(body);
+               //loadXML(body);
+               xml_body = body;
+               load_xml_dispatch();
        } else {
                txt_view->get_buffer()->insert_at_cursor("<IN>\n");
                txt_view->get_buffer()->insert_at_cursor(Glib::locale_to_utf8(body));
@@ -218,15 +224,14 @@ void Principal::on_get_clicked()
 
 }
 
-void Principal::loadXML(const std::string &s)
+void Principal::loadXML()
 {
        // ya lo cargue
        if (is_xml_loaded) return;
 
        /* Parseo de ejemplo de un XML desde archivo */
        xmlDocPtr document;
-       std::cout << s.c_str() << std::endl;
-       document = xmlParseMemory(s.c_str(),s.size());
+       document = xmlParseMemory(xml_body.c_str(),xml_body.size());
        if (document == NULL) {
                std::cout << "EEERRRRRRROOOOOOOOOO" << std::endl;
                return;
@@ -257,7 +262,6 @@ void Principal::loadXML(const std::string &s)
                                }
 
                        }
-                       sleep(2);
                        items = items->next;
                }
        }