Rechercher

5.11. Fonctionnalités avancées de l'interface graphique du module complémentaire

download PDF

Le paquetage pyanaconda contient plusieurs fonctions d'aide et d'utilité, ainsi que des constructions qui peuvent être utilisées par les hubs et les spokes. La plupart d'entre elles se trouvent dans le paquetage pyanaconda.ui.gui.utils.

L'exemple de module complémentaire Hello World démontre l'utilisation du gestionnaire de contenu englightbox qui Anaconda utilise également. Ce gestionnaire de contenu peut placer une fenêtre dans une boîte lumineuse pour augmenter sa visibilité et la mettre en évidence pour empêcher les utilisateurs d'interagir avec la fenêtre sous-jacente. Pour démontrer cette fonction, l'exemple de module complémentaire contient un bouton qui ouvre une nouvelle fenêtre de dialogue ; le dialogue lui-même est un HelloWorldDialog spécial héritant de la classe GUIObject, qui est définie dans pyanaconda.ui.gui.init.

La classe dialog définit la méthode run qui exécute et détruit un dialogue Gtk interne accessible par l'attribut self.window, qui est rempli à l'aide d'un attribut de classe mainWidgetName ayant la même signification. Par conséquent, le code définissant le dialogue est très simple, comme le montre l'exemple suivant :

Exemple 5.9. Définition d'un dialogue de boîte de dialogue

        # every GUIObject gets ksdata in init
        dialog = HelloWorldDialog(self.data)

        # show dialog above the lightbox
        with self.main_window.enlightbox(dialog.window):
            dialog.run()

Le code de l'exemple Defining an englightbox Dialog crée une instance du dialogue et utilise ensuite le gestionnaire de contexte enlightbox pour exécuter le dialogue dans un cadre lumineux. Le gestionnaire de contexte a une référence à la fenêtre du rayon et n'a besoin que de la fenêtre du dialogue pour instancier le cadre lumineux pour le dialogue.

Une autre fonction utile fournie par Anaconda est la possibilité de définir un rayon qui apparaîtra à la fois pendant l'installation et après le premier redémarrage. L'utilitaire Initial Setup est décrit dans Adding support for the Add-on graphical user interface (GUI). Pour qu'un rayon soit disponible à la fois dans Anaconda et dans Initial Setup, il doit hériter de la classe spéciale FirstbootSpokeMixIn, également connue sous le nom de mixin, en tant que première classe héritée définie dans le module pyanaconda.ui.common.

Pour qu'un rayon soit disponible dans Anaconda et le mode de reconfiguration de l'Initial Setup, il doit hériter de la classe spéciale FirstbootSpokeMixIn, également connue sous le nom de mixin, en tant que première classe héritée définie dans le module pyanaconda.ui.common.

Si vous souhaitez qu'un rayon donné ne soit disponible que dans la configuration initiale, ce rayon doit hériter de la classe FirstbootOnlySpokeMixIn.

Pour qu'un rayon soit toujours disponible à la fois dans Anaconda et Initial Setup, le rayon doit redéfinir la méthode should_run, comme le montre l'exemple suivant :

Exemple 5.10. Redéfinir la méthode should_run

@classmethod
    def should_run(cls, environment, data):
    """Run this spoke for Anaconda and Initial Setup"""
    return True

Le paquetage pyanaconda offre de nombreuses fonctionnalités plus avancées, telles que les décorateurs @gtk_action_wait et @gtk_action_nowait, mais elles sortent du cadre de ce guide. Pour plus d'exemples, reportez-vous aux sources du programme d'installation.

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.