geo2france / idg-qgis-plugin

Plugin QGIS pour la consultation des données des différentes Infrastructure de Données Géographiques en France
GNU General Public License v2.0
14 stars 4 forks source link

L'explorateur ne se charge pas correctement #50

Closed jbdesbas closed 9 months ago

jbdesbas commented 1 year ago

Remonté par @Doctor-Who Version QGIS : 3.32.0-Lima Version plugin : 0.2.2

Quand l'explorateur QGIS est chargé dans une fenêtre de processing, le spinner de l'onglet IDG tourne indéfiniment.

image

jbdesbas commented 1 year ago

Piste : L'explorateur attend le signal de fin de téléchargement des fichiers, mais rien ne déclenche le téléchargement.

Jibede commented 11 months ago

J'ai le même problème.

bchartier commented 9 months ago

Piste : L'explorateur attend le signal de fin de téléchargement des fichiers, mais rien ne déclenche le téléchargement.

@jbdesbas : Est-ce que tu saurais pointer le bout de code qui attend le signal ?

bchartier commented 9 months ago

Piste : L'explorateur attend le signal de fin de téléchargement des fichiers, mais rien ne déclenche le téléchargement.

@jbdesbas : Est-ce que tu saurais pointer le bout de code qui attend le signal ?

J'imagine que le souci est localisé là : https://github.com/geo2france/idg-qgis-plugin/blob/v0.2.2/plugin/idg/plugin_main.py#L72 C'est ça ?

jbdesbas commented 9 months ago

Salut @bchartier C'est bien ça. Aujourd'hui la méthode populate_browser (qui affiche les couches dans le navigateur) est lancée à la fin de DownloadAllConfigFilesAsync. DownloadAllConfigFilesAsync n'est exécuté qu'à l'émission du signal initializationCompleted https://github.com/geo2france/idg-qgis-plugin/blob/03a0aaf4a1c3d7132c3d9778243f7b0a88f63e9b/plugin/idg/plugin_main.py#L64 c'est à dire à la fin du chargement de l'interface de QGIS. Ceci permet que le plugin ne ralentisse pas le chargement de QGIS.

Ce principe fonctionne dans le cas classique où le plugin est initialisé au lancement de QGIS. Mais il y a (au moins) 2 cas où ca pose problème :

Dans les 2 cas _post_uiinit n'est pas appelé car l'interface de QGIS est déjà chargée depuis longtemps. Je pense qu'il faudrait identifier d'autres signaux adaptés et/ou ajouter un check pour voir si l'interface principale est chargée.

IGNF-Xavier commented 9 months ago

Bonjour @jbdesbas et @bchartier Probablement le même problème mais une autre façon de le déclencher. Lorsque l'utilisateur décoche une ou plusieurs plateformes dans les paramètres du plugin, le menu du plugin dans l'explorateur ne propose plus rien. Un redémarrage de Qgis permet d'obtenir la configuration limitée aux plateformes précédemment choisies d'être conservées

jbdesbas commented 9 months ago

@IGNF-Xavier C'est curieux, celui là je ne le reproduit pas. Le menu explorateur se met correctement à jour avec les bonnes plateformes un fois que les paramètres sont validés (sur QGIS 3.34).

Tu es sur quelle version ? @bchartier ca donne quoi de ton côté ?

IGNF-Xavier commented 9 months ago

3.28.12. j'aurai dû préciser. Je vais tester sur la 3.28.13 LTR dans la journée (je n'avais pas vu la LTR sortie récemment)

IGNF-Xavier commented 9 months ago

Je confirme avec la 3.28.13

bchartier commented 9 months ago

Dans les 2 cas _post_uiinit n'est pas appelé car l'interface de QGIS est déjà chargée depuis longtemps. Je pense qu'il faudrait identifier d'autres signaux adaptés et/ou ajouter un check pour voir si l'interface principale est chargée.

On pourrait poser la question sur la liste QGIS dev. Je suis abonné. Je pourrais faire un message (si une recherche raisonnable de notre côté ne donne rien).

bchartier commented 9 months ago

@bchartier ca donne quoi de ton côté ?

Ah, désolé, je n'ai pas encore regardé. J'essaie de faire cela demain ou après-demain.

jbdesbas commented 9 months ago

Résolu 6e8fa34eb8aa84e6ba6c937123335fdf78359b9b et dd5adc93a7eaac325a782caa28a8afa29cb3bf4e On n'attend plus que l'interface graphique soit chargée avant de commencer le téléchargement des fichiers, mais on s'assure qu'aucune opération bloquant n'est effectuée dans le thread principal.