diff options
Diffstat (limited to 'src/analysis/project.c')
-rw-r--r-- | src/analysis/project.c | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/src/analysis/project.c b/src/analysis/project.c index 8474610..4574d88 100644 --- a/src/analysis/project.c +++ b/src/analysis/project.c @@ -92,7 +92,7 @@ static void g_study_project_finalize(GStudyProject *); /* Assure l'intégration de contenus listés dans du XML. */ -static void g_study_project_recover_binary_contents(GStudyProject *, xmlDoc *, xmlXPathContext *); +static void g_study_project_recover_binary_contents(GStudyProject *, xmlDoc *, xmlXPathContext *, bool); @@ -113,6 +113,7 @@ typedef struct _GLoadingHandler GDelayedWork parent; /* A laisser en premier */ GStudyProject *project; /* Projet à compléter */ + bool cache; /* Degré d'opération à mener */ xmlDoc *xdoc; /* Structure XML chargée ? */ xmlXPathContext *context; /* Eventuel contexte XML */ @@ -152,10 +153,10 @@ static void g_loading_handler_dispose(GLoadingHandler *); static void g_loading_handler_finalize(GLoadingHandler *); /* Crée une tâche de chargement de contenu bianire. */ -static GLoadingHandler *g_loading_handler_new_discovering(GStudyProject *, GBinContent *, filter_loadable_cb, void *); +static GLoadingHandler *g_loading_handler_new_discovering(GStudyProject *, GBinContent *, bool, filter_loadable_cb, void *); /* Crée une tâche de chargement de contenu bianire. */ -static GLoadingHandler *g_loading_handler_new_recovering(GStudyProject *, xmlDoc *, xmlXPathContext *); +static GLoadingHandler *g_loading_handler_new_recovering(GStudyProject *, xmlDoc *, xmlXPathContext *, bool); /* Assure le chargement de contenus binaires en différé. */ static void g_loading_handler_process(GLoadingHandler *, GtkStatusStack *); @@ -332,6 +333,7 @@ GStudyProject *g_study_project_new(void) /****************************************************************************** * * * Paramètres : filename = chemin d'accès au fichier à charger. * +* cache = précise si la préparation d'un rendu est demandée.* * * * Description : Crée un projet à partir du contenu XML d'un fichier. * * * @@ -341,7 +343,7 @@ GStudyProject *g_study_project_new(void) * * ******************************************************************************/ -GStudyProject *g_study_project_open(const char *filename) +GStudyProject *g_study_project_open(const char *filename, bool cache) { GStudyProject *result; /* Adresse à retourner */ xmlDoc *xdoc; /* Structure XML chargée */ @@ -353,7 +355,7 @@ GStudyProject *g_study_project_open(const char *filename) result->filename = strdup(filename); - g_study_project_recover_binary_contents(result, xdoc, context); + g_study_project_recover_binary_contents(result, xdoc, context, cache); return result; @@ -530,6 +532,7 @@ const char *g_study_project_get_filename(const GStudyProject *project) * Paramètres : project = projet dont le contenu est à compléter. * * xdoc = structure XML en cours d'édition. * * context = contexte à utiliser pour les recherches. * +* cache = précise si la préparation d'un rendu est demandée. * * * * Description : Assure l'intégration de contenus listés dans du XML. * * * @@ -539,11 +542,11 @@ const char *g_study_project_get_filename(const GStudyProject *project) * * ******************************************************************************/ -static void g_study_project_recover_binary_contents(GStudyProject *project, xmlDoc *xdoc, xmlXPathContext *context) +static void g_study_project_recover_binary_contents(GStudyProject *project, xmlDoc *xdoc, xmlXPathContext *context, bool cache) { GLoadingHandler *handler; /* Encadrement du chargement */ - handler = g_loading_handler_new_recovering(project, xdoc, context); + handler = g_loading_handler_new_recovering(project, xdoc, context, cache); if (handler != NULL) g_work_queue_schedule_work(get_work_queue(), G_DELAYED_WORK(handler), LOADING_WORK_GROUP); @@ -555,6 +558,7 @@ static void g_study_project_recover_binary_contents(GStudyProject *project, xmlD * * * Paramètres : project = projet dont le contenu est à compléter. * * content = contenu binaire à mémoriser pour le projet. * +* cache = précise si la préparation d'un rendu est demandée. * * filter = procédure de filtrage de contenus chargés. * * data = données utiles à la procédure de filtre. * * * @@ -566,11 +570,11 @@ static void g_study_project_recover_binary_contents(GStudyProject *project, xmlD * * ******************************************************************************/ -void g_study_project_discover_binary_content(GStudyProject *project, GBinContent *content, filter_loadable_cb filter, void *data) +void g_study_project_discover_binary_content(GStudyProject *project, GBinContent *content, bool cache, filter_loadable_cb filter, void *data) { GLoadingHandler *handler; /* Encadrement du chargement */ - handler = g_loading_handler_new_discovering(project, content, filter, data); + handler = g_loading_handler_new_discovering(project, content, cache, filter, data); g_work_queue_schedule_work(get_work_queue(), G_DELAYED_WORK(handler), LOADING_WORK_GROUP); @@ -920,6 +924,7 @@ static void g_loading_handler_finalize(GLoadingHandler *handler) * * * Paramètres : project = projet dont le contenu est à compléter. * * content = contenu binaire à mémoriser pour le projet. * +* cache = précise si la préparation d'un rendu est demandée. * * filter = procédure de filtrage de contenus chargés. * * data = données utiles à la procédure de filtre. * * * @@ -931,7 +936,7 @@ static void g_loading_handler_finalize(GLoadingHandler *handler) * * ******************************************************************************/ -static GLoadingHandler *g_loading_handler_new_discovering(GStudyProject *project, GBinContent *content, filter_loadable_cb filter, void *data) +static GLoadingHandler *g_loading_handler_new_discovering(GStudyProject *project, GBinContent *content, bool cache, filter_loadable_cb filter, void *data) { GLoadingHandler *result; /* Tâche à retourner */ GContentExplorer *explorer; /* Explorateur de contenus */ @@ -941,6 +946,8 @@ static GLoadingHandler *g_loading_handler_new_discovering(GStudyProject *project result->project = project; g_object_ref(G_OBJECT(result->project)); + result->cache = cache; + result->xdoc = NULL; result->context = NULL; @@ -972,6 +979,7 @@ static GLoadingHandler *g_loading_handler_new_discovering(GStudyProject *project * Paramètres : project = projet dont le contenu est à compléter. * * xdoc = structure XML en cours d'édition. * * context = contexte à utiliser pour les recherches. * +* cache = précise si la préparation d'un rendu est demandée. * * * * Description : Crée une tâche de chargement de contenu bianire. * * * @@ -981,7 +989,7 @@ static GLoadingHandler *g_loading_handler_new_discovering(GStudyProject *project * * ******************************************************************************/ -static GLoadingHandler *g_loading_handler_new_recovering(GStudyProject *project, xmlDoc *xdoc, xmlXPathContext *context) +static GLoadingHandler *g_loading_handler_new_recovering(GStudyProject *project, xmlDoc *xdoc, xmlXPathContext *context, bool cache) { GLoadingHandler *result; /* Tâche à retourner */ xmlXPathObjectPtr xobject; /* Cible d'une recherche */ @@ -1003,6 +1011,8 @@ static GLoadingHandler *g_loading_handler_new_recovering(GStudyProject *project, result->project = project; g_object_ref(G_OBJECT(result->project)); + result->cache = cache; + result->xdoc = xdoc; result->context = context; @@ -1266,7 +1276,6 @@ static void on_new_content_resolved(GContentResolver *resolver, wgroup_id_t wid, if (XPATH_OBJ_NODES_COUNT(xobject) > 0) { - status = g_loaded_content_restore(available[i], handler->xdoc, handler->context, access); if (!status) @@ -1287,7 +1296,7 @@ static void on_new_content_resolved(GContentResolver *resolver, wgroup_id_t wid, g_signal_connect(available[i], "analyzed", G_CALLBACK(on_loaded_content_analyzed), handler->project); - g_loaded_content_analyze(available[i]); + g_loaded_content_analyze(available[i], handler->cache); } @@ -1329,7 +1338,7 @@ static void on_new_content_resolved(GContentResolver *resolver, wgroup_id_t wid, g_signal_connect(available[i], "analyzed", G_CALLBACK(on_loaded_content_analyzed), handler->project); - g_loaded_content_analyze(available[i]); + g_loaded_content_analyze(available[i], handler->cache); } |