Cette page a été traduite automatiquement de l’anglais et peut contenir des erreurs. Original en anglais

Extension de QGIS

L’extension vit à qgis_plugin/axqua/ et est compatible avec QGIS 3.44 et QGIS 4. Il ne contient aucun code numérique. Chaque tâche est transmise au programme axqua (Structure générale et UML).

Module

Contenu

plugin.py

L’objet que QGIS charge : le panneau, les entrées de menu, la barre d’outils bouton et le fournisseur de traitement, et leur suppression lorsque l’extension est déchargée.

compat.py

Le seul module qui distingue QGIS 3 de QGIS 4. Tous les autres modules importent des classes Qt par qgis.PyQt et prennent des valeurs de dénombrement à partir de ce module.

core/runner_client.py

Localise le programme axqua, l’appelle avec une liste d’arguments et lit sa sortie JSON.

core/tasks.py

Exécute les appels du programme en arrière-plan, de sorte que QGIS reste réactif.

core/job_model.py

La table tâche et les règles pour la rafraîchir.

core/result_loader.py

Trouver les fichiers de résultat d’une tâche et les ajouter au projet QGIS sous forme de couches.

core/styles.py

Les styles de cartes prédéfinis pour hauteur d’eau et vitesse d’écoulement.

core/project.py

La liste des cas du panneau, conservés dans les paramètres de QGIS, et le lecteur des fichiers de projet des versions antérieures.

core/batch.py

Les étapes d’un lot et le script shell qui les exécute sans QGIS.

gui/sections.py

Le tableau des onglets et sous-onglets : leur ordre, les capacités que chacun affiche, la page de documentation et l’étiquette que Help ouvre pour elle.

gui/dock.py

Le panneau : les onglets fixes, la liste tâche ci-dessous, Clean Up et Help.

gui/configuration_tab.py, gui/profile_editor.py

L’onglet Configuration et l’éditeur du profil de cet ordinateur.

gui/install_wizard.py, gui/report_issue.py

Les assistants d’installation pour TELEMAC, OpenFOAM et les postprocesseurs : les paramètres des onglets, vérifier, et l’installation en cours, une fenêtre autour de axqua install; et le rapport d’un problème que les vérifications et les corrections n’ont pas résolu.

gui/case_editor.py, gui/editor_base.py

Les paramètres cas : les pages et les cadres d’un fichier de cas, générés à partir de axqua schema avec les paramètres qui sont requis en gras violet foncé, et ce que les deux éditeurs partagent : Save, Cancel et Exit.

gui/case_tab.py, gui/section_pages.py

L’onglet Case Setup et les pages de l’onglet workflow.

gui/findings.py, gui/help.py

Les triangles d’avertissement, et les adresses de la documentation que l’extension ouvre (une copie locale ou publiée, dans la langue de QGIS). gui/style.py tient les couleurs : le violet foncé de l’icône aXqua pour ce qui est requis, vert foncé pour ce qui a été trouvé.

gui/cleanup_dialog.py

La fenêtre de Clean Up, autour de axqua cleanup: ce qu’un cas peut faire sans, coché par catégorie, et son retrait.

gui/ (autres fichiers)

La table tâche, le visionneur de journaux, la boîte de dialogue des paramètres, la mise en page et l’exportation de films.

processing/

Les algorithmes pour le QGIS Processing Toolbox.

Pour le développement, liez le dossier extension dans le dossier extension d’un profil utilisateur QGIS au lieu d’installer l’archive :

ln -s /path/to/aXqua/qgis_plugin/axqua ~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/axqua

Lorsque le QGIS installé est plus ancien que la version 3.44, le script scripts/qgis_dev.sh démarre le QGIS d’un environnement conda avec un profil utilisateur propre, dans lequel il relie et permet l’extension. Les profils existants ne sont pas modifiés :

conda create -n qgis-dev -c conda-forge "qgis>=3.44"
scripts/qgis_dev.sh

QGIS liste une extension seulement si elle peut lire metadata.txt. La commande python scripts/build_plugin_zip.py --check lit le fichier de la même manière que QGIS.

Help dans l’extension ouvre la documentation à la section de l’onglet qui s’affiche. L’archive extension ne contient aucune copie de la documentation : axqua docs noms une copie construite sur cet ordinateur ($AXQUA_DOCS, sinon docs/_build/site ou docs/_build/html de la caisse source) et si le navigateur par défaut peut la lire, et l’extension ouvre la documentation publiée autrement. Une page locale est ouverte par une petite page d’envoi (_help/open.html à côté de la copie), parce que xdg-open et Chrome déposent la partie de section (#...) d’une adresse de fichier.

Les tests de l’extension sont à qgis_plugin/tests/. Les tests qui nécessitent QGIS sont ignorés lorsque le module Python qgis n’est pas disponible. Le script scripts/build_plugin_zip.py construit l’archive extension et vérifie les exigences du dépôt QGIS extension.

Sorties. L’extension et le programme sont publiés ensemble sous un numéro de version, qui pyproject.toml, src/axqua/__init__.py (_FALLBACK_VERSION), qgis_plugin/axqua/metadata.txt et docs/conf.py carry. Une balise v<version> poussée vers GitHub construit l’archive extension et la joint à la version. Le programme est téléchargé à PyPI à la main, à partir d’une copie propre du commit étiqueté. twine demande un jeton API de pypi.org (Account settings > API tokens; un jeton limité au projet axqua suffit) :

rm -rf build dist/pypi
python -m pip install --upgrade build twine
python -m build --outdir dist/pypi
twine check --strict dist/pypi/*
python scripts/check_wheel.py dist/pypi/*.whl
twine upload dist/pypi/*

scripts/check_wheel.py confirme que la roue contient exactement les fichiers suivis de src/axqua et les fichiers de licence qui pyproject.toml noms. PyPI n’accepte un numéro de version qu’une seule fois, aussi après la suppression des fichiers, donc une erreur nécessite une nouvelle version. twine upload --repository testpypi dist/pypi/* télécharge à TestPyPI pour une répétition. La tâche pypi du workflow de publication peut reprendre le téléchargement avec une publication fiable, qui ne stocke pas de jeton ; le commentaire ci-dessus la tâche .github/workflows/plugin-release.yml explique comment l’activer.