Diese Seite wurde maschinell aus dem Englischen übersetzt und kann Fehler enthalten. Englisches Original

QGIS Plugin

Das Plugin lebt in qgis_plugin/axqua/ und ist kompatibel mit QGIS 3.44 und QGIS 4. Es enthält keinen numerischen Code. Jede Aufgabe wird an das Programm axqua (Allgemeine Struktur & UML) übergeben.

Modul

Inhalt

plugin.py

Das Objekt, das QGIS lädt: das Panel, die Menüeinträge, die Symbolleiste Schaltfläche und der Verarbeitungsanbieter und deren Entfernung beim Entladen des Plugins.

compat.py

Das einzige Modul, das QGIS 3 von QGIS 4 unterscheidet. Alle anderen Module importieren Qt-Klassen über qgis.PyQt und nehmen Auszählungswerte aus diesem Modul.

core/runner_client.py

Sucht das Programm axqua, ruft es mit einer Argumentenliste auf und liest seine JSON-Ausgabe.

core/tasks.py

Führt Aufrufe des Programms im Hintergrund aus, so dass QGIS reagiert.

core/job_model.py

Der Arbeitstisch und die Regeln für die Auffrischung.

core/result_loader.py

Findet die Ergebnisdateien eines Jobs und fügt sie dem QGIS-Projekt als Layer hinzu.

core/styles.py

Die vordefinierten Kartenstile für Wassertiefe und Fließgeschwindigkeit.

core/project.py

Die Liste der Fälle des Panels, die in den Einstellungen von QGIS gespeichert ist, und der Leser der Projektdateien früherer Versionen.

core/batch.py

Die Schritte eines Batches und das Shell-Skript, das sie ohne QGIS ausführt.

gui/sections.py

Die Tabelle der Registerkarten und Unterregisterkarten: ihre Reihenfolge, die Fähigkeiten, die jeder zeigt, und die Dokumentationsseite und das Label, das Help dafür öffnet.

gui/dock.py

Das Panel: die festen Registerkarten, die Jobliste darunter, Clean Up und Help.

gui/configuration_tab.py, gui/profile_editor.py

Die Registerkarte Configuration und der Editor des Profils dieses Computers.

gui/install_wizard.py, gui/report_issue.py

Die Installationsassistenten für TELEMAC, OpenFOAM und die Postprozessoren: die Registerkarteneinstellungen, die Überprüfung und die laufende Installation, ein Fenster um axqua install und der Bericht über ein Problem, das die Überprüfungen und Korrekturen nicht gelöst haben.

gui/case_editor.py, gui/editor_base.py

Die Fall-Einstellungen: die Seiten und Frames einer Fall-Datei, die aus axqua schema mit den Einstellungen generiert werden, die in fettem Dunkellila erforderlich sind, und was beide Editoren teilen: Save, Cancel und Exit.

gui/case_tab.py, gui/section_pages.py

Die Registerkarte Case Setup und die Seiten der Workflow-Tabs.

gui/findings.py, gui/help.py

Die Warndreiecke und die Adressen der Dokumentation, die das Plugin öffnet (eine lokale Kopie oder die veröffentlichte in der Sprache von QGIS). gui/style.py hält die Farben: das dunkle Lila des aXqua-Symbols für das, was benötigt wird, dunkelgrün für das, was gefunden wurde.

gui/cleanup_dialog.py

Das Fenster von Clean Up, um axqua cleanup: worauf ein Fall verzichten kann, angekreuzt nach Kategorie und seiner Entfernung.

gui/ (andere Dateien)

Die Jobtabelle, der Log Viewer, der Einstellungsdialog, das Drucklayout und der Filmexport.

processing/

Die Algorithmen für das QGIS Processing Toolbox.

Verknüpfen Sie für die Entwicklung den Plugin-Ordner mit dem Plugin-Ordner eines QGIS-Benutzerprofils, anstatt das Archiv zu installieren:

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

Wenn das installierte QGIS älter als Version 3.44 ist, startet das Skript scripts/qgis_dev.sh das QGIS einer Conda-Umgebung mit einem eigenen Benutzerprofil, in dem es das Plugin verknüpft und aktiviert. Bestehende Profile werden nicht geändert:

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

QGIS listet ein Plugin nur dann auf, wenn es metadata.txt lesen kann. Der Befehl python scripts/build_plugin_zip.py --check liest die Datei auf die gleiche Weise wie QGIS.

Help Im Plugin öffnet sich die Dokumentation im Abschnitt des Tabs, der angezeigt wird. Das Plugin-Archiv trägt keine Kopie der Dokumentation: axqua docs benennt eine Kopie, die auf diesem Computer aufgebaut ist ($AXQUA_DOCS, sonst docs/_build/site oder docs/_build/html der Quellauscheckung) und ob der Standardbrowser sie lesen kann, und das Plugin öffnet die veröffentlichte Dokumentation ansonsten. Eine lokale Seite wird durch eine kleine Weiterleitungsseite (_help/open.html neben der Kopie) geöffnet, da xdg-open und Chrom den Abschnittsteil (#...) einer Dateiadresse ablegen.

Die Tests des Plugins sind in qgis_plugin/tests/. Die Tests, die QGIS erfordern, werden übersprungen, wenn das Python-Modul qgis nicht verfügbar ist. Das Skript scripts/build_plugin_zip.py erstellt das Plugin-Archiv und überprüft die Anforderungen des QGIS-Plugin-Repository.

Freigaben. Das Plugin und das Programm werden zusammen unter einer Versionsnummer veröffentlicht, die pyproject.toml, src/axqua/__init__.py (_FALLBACK_VERSION), qgis_plugin/axqua/metadata.txt und docs/conf.py tragen. Ein Tag v<version>, der auf GitHub geschoben wird, erstellt das Plugin-Archiv und fügt es dem Release hinzu. Das Programm wird von Hand auf PyPI hochgeladen, von einer sauberen Kopie des getaggten Commits. twine fragt nach einem API-Token von pypi.org (Account settings > API tokens; ein auf das Projekt axqua begrenztes Token genügt):

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 bestätigt, dass das Rad genau die verfolgten Dateien von src/axqua und die Lizenzdateien enthält, die pyproject.toml Namen. PyPI akzeptiert eine Versionsnummer nur einmal, auch nachdem die Dateien gelöscht wurden, so dass ein Fehler eine neue Version erfordert. twine upload --repository testpypi dist/pypi/* wird zu TestPyPI für eine Probe hochgeladen. Der Job pypi des Release-Workflows kann den Upload mit Trusted Publishing übernehmen, in dem kein Token gespeichert ist; der Kommentar über dem Job in .github/workflows/plugin-release.yml erklärt, wie man ihn einschaltet.