Aller au contenu

Plugin QGIS : rediriger facilement vers l'aide en ligne#

📆 Date de publication initiale : 09 mars 2021

Mots-clés : QGIS | PyQGIS | développement | plugin | documentation

Pré-requis :

  • des notions en PyQGIS (Python + Qt + API QGIS)

Introduction#

icône PyQT

Plutôt que de stocker toute la documentation au format HTML et les fichiers associés (CSS, JS, images...) dans le plugin QGIS qui est téléchargé par vos millions d'utilisateur/ices, je vous propose une méthode plus simple que j'ai utilisée dans différents plugins comme GMLAS Toolbox, Menu Layers from Project ou Land Survey Codes Import.

Si vous n'avez pas d'aide en ligne, de documentation, de wiki sur le dépôt GitHub ou GitLab ou même de README, alors je ne peux rien pour vous et il est temps d'aller consulter un autre article du site 😉.

Documentation Le Chat

Pour la suite de ce tutoriel, considérons que l'aide en ligne de notre plugin est disponibe en français et en anglais, dont les adresses URLs seraient :

  • 🇫🇷 la fiche métier "M1808 Information Géographique" du registre ROME1 :

    1
    https://candidat.pole-emploi.fr/marche-du-travail/fichemetierrome?codeRome=M1808
    
  • 🇬🇧 la fiche Wikipédia GIS :

    1
    https://en.wikipedia.org/wiki/Geographic_information_system
    

Créer la redirection 301#

icône HTML5

Le multilinguisme est géré en utilisant le code de langue (locale), renvoyé par l'application Qt (en l'occurrencee QGIS) comme suffixe. Par exemple : index-fr.html sera ouvert en priorité si QGIS est défini en français. En dernier recours, si présent, c'est le fichier sans suffixe qui est ouvert index.html.

A l'intérieur de l'arborescence de notre plugin, on crée donc un fichier docs/index-fr.html dans lequel on écrit simplement une redirection HTTP :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<!doctype html>
<html lang="fr">

<head>
    <meta charset="utf-8">
    <title>Redirection en cours...</title>
    <script>var anchor = window.location.hash.substr(1); location.href = "https://candidat.pole-emploi.fr/marche-du-travail/fichemetierrome?codeRome=M1808/"</script>
</head>

<body>

    <p>Redirection vers la documentation en ligne...</p>

</body>

</html>

Et un fichier doc/index-en.html :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<!doctype html>
<html lang="fr">

<head>
    <meta charset="utf-8">
    <title>Redirecting...</title>
    <script>var anchor = window.location.hash.substr(1); location.href = "https://en.wikipedia.org/wiki/Geographic_information_system/"</script>
</head>

<body>

    <p>Redirection to the online documentation...</p>

</body>

</html>

Appeler la page depuis le plugin#

icône Edit Help Content - QGIS

Une fois que tout cela est en place, il reste à brancher notre menu d'aide sur cette redirection. Pour cela, on utilise la fonction showPluginHelp.

Quelque part dans les imports :

1
2
3
4
# imports
from qgis.core import QgsApplication
from qgis.PyQt.QtGui import QIcon
from qgis.utils import showPluginHelp

Quelque part dans la définition du menu défini dans un précédent tuto :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[...]

class PluginGeotribu:

    [...]

    # quelque part dans la fonction de définition du menu de notre plugin
    def initGui(self):

        [...]

        # ici on définit notre bouton de menu
        self.action_menu_help = QAction(
            QIcon(QgsApplication.iconPath("mActionHelpContents.svg")),
            self.tr("Help") + "...",
            self.iface.mainWindow(),
        )

        # on ajoute le bouton au menu de notre plugin
        self.iface.addPluginToMenu("Le nom du plugin", self.action_menu_help)

        # on connecte notre bouton à la fonction d'ouverture de l'aide
        self.action_menu_help.triggered.connect(
                lambda: showPluginHelp(filename="doc/index")
            )

Au clic sur le menu, QGIS ouvre le fichier index-fr.html (si son interface est en français ou index-en.html si elle est en anglais dans le navigateur par défaut du système, qui va rediriger vers votre documentation en ligne 🎇.


Conclusion#

Ce que j'aime bien dans cette façon de faire c'est que ça tient en un seul fichier HTML et 2 lignes de Python.
C'est pas cher payé pour orienter facilement vos utilisateur/ices vers la documentation que vous avez mis tant de soin à rédiger (et qu'ils/elles prendront bien soin de survoler) !

Tip

A noter que la fonction showPluginHelp est aussi valable si la documentation est stockée dans le plugin.


Auteur#

Julien Moura#

Portrait Julien Moura

Géographe "sigiste" de formation, j'ai d'abord travaillé sur différentes thématiques et types de structures : la gestion des déchets en milieu urbain à Madagascar, le foncier d'intérêt général auprès de l'EPF de La Réunion, l'organisation et la résilience urbaine face aux risques naturels à Lima pour l'IRD.

C'est en m'intéressant à la gouvernance et à l'ouverture des données géographiques que je travaille à Isogeo quelques années. L'occasion d'asseoir mes compétences en développement et gestion de produit informatique. En 2020, je deviens indépendant (In Geo Veritas) puis rejoins les rangs d'Oslandia.

Féru des dynamiques de contributions, je participe activement à Geotribu depuis fin 2011 et, comme ça me manquait trop, j'ai décidé de lancer sa renaissance en 2020.


  1. Répertoire Opérationnel des Métiers et des Emplois. En savoir plus sur l'historique de création de cette fiche pour le domaine de la géomatique, voir la démarche métier sur GeoRezo


Dernière mise à jour: 3 juin 2021
Contributions à cette page : TestGTR

Commentaires

Une version minimale de la syntaxe markdown est acceptée pour la mise en forme des commentaires.
Propulsé par Isso.