From: Ricardo Markiewicz Date: Wed, 19 Nov 2003 00:35:41 +0000 (+0000) Subject: Se implementa una señal entre Thread con Glib::Dispatch .. no se si soluciona el... X-Git-Tag: svn_import~253 X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/commitdiff_plain/b7d95f97d1f101d9bcb891b1421a4074822c39ce?ds=inline;hp=e4f66a8221e3f2156d89a7a358073863503b2564 Se implementa una señal entre Thread con Glib::Dispatch .. no se si soluciona el problema pero ahora se me trunca menos la aplicacion. TEST PLEASE! --- diff --git a/Client/include/principal.h b/Client/include/principal.h index 7dbf3e7..8cfe7f2 100644 --- a/Client/include/principal.h +++ b/Client/include/principal.h @@ -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 refXml; diff --git a/Client/src/principal.cpp b/Client/src/principal.cpp index 5c53e35..2b04e38 100644 --- a/Client/src/principal.cpp +++ b/Client/src/principal.cpp @@ -50,6 +50,8 @@ Principal::Principal(BaseObjectType *co, const Glib::RefPtr & 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 + void Principal::on_conexion_ok(const std::string &body) { /* lo paso a la carga del XML */ /* verifico que body este completo */ if ((body.find("")>0) && (body.find("")>0)) { - loadXML(body); + //loadXML(body); + xml_body = body; + load_xml_dispatch(); } else { txt_view->get_buffer()->insert_at_cursor("\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; } }