Macros

    From The Document Foundation Wiki


    Comment utiliser les icônes de LibreOffice ?

    On souhaite utiliser les icônes de LibreOffice, par exemple pour homogénéiser la présentation des boutons de commande dans un formulaire.


    On peut utiliser pour cela le service GraphicProvider[1] qui est le service de l'API[2] donnant accès aux éléments graphiques de toutes sortes.

    Ce service permet de charger ou enregistrer des éléments graphiques quel que soit leur emplacement. En l'occurrence nous utiliserons sa méthode queryGraphic[3] qui attend un paramètre de type PropertyValues contenant l'Url[4] de l'image, l'icône, etc.

    Les icônes utilisées par le logiciel figurent dans des fichiers compressés qui peuvent être trouvés dans un sous-répertoire du dossier "programme".

    Exemple de chemin Windows :

    C:\Program Files\LibreOffice 3.5\share\config\images.zip

    Il serait limitatif de devoir utiliser l'Url absolu d'une image puisqu'on voit que ce dernier peut changer notamment en fonction de la version ou du système sur lequel va tourner le programme.

    Heureusement nous pouvons utiliser la ressource "relative" : private:graphicrepository

    Exemples pour l'icône Ouvrir :

    sub LibOIcone
    
    dim LibOFeuille as object
    dim LibOForm as object
    dim LibOIcone as object
    dim LibOBtn as object
    dim LibOGraphicProvider as object
    dim LibOProps(0) As New com.sun.star.beans.PropertyValue
    
    LibOFeuille = thiscomponent.sheets.getByName("Feuille1")
    LibOForm = LibOFeuille.DrawPage.Forms.getByName("Formulaire")
    
    LibOProps(0).Name = "URL"
    LibOProps(0).Value = "private:graphicrepository/res/dir-open.png"
    
    LibOGraphicProvider = CreateUnoService("com.sun.star.graphic.GraphicProvider")
    LibOIcone = LibOGraphicProvider.queryGraphic(LibOProps)
    
    LibOBtn = LibOForm.getByName("BtnOuvrir")
    LibOBtn.ImagePosition = com.sun.star.awt.ImagePosition.Centered
    LibOBtn.Graphic = LibOIcone
    
    end sub

    Ce code est associé à l'événement Ouvrir le document du classeur en pièce jointe.

    sub LibOIcone(LibOEvent)
    
    dim LibOIcone as object
    dim LibOBtn as object
    dim LibOGraphicProvider as object
    dim LibOProps(0) As New com.sun.star.beans.PropertyValue
    
    LibOProps(0).Name = "URL"
    LibOProps(0).Value = "private:graphicrepository/res/dir-open.png"
    
    LibOGraphicProvider = CreateUnoService("com.sun.star.graphic.GraphicProvider")
    LibOIcone = LibOGraphicProvider.queryGraphic(LibOProps)
    
    LibOBtn = LibOEvent.source.getByName("BtnOuvrir")
    LibOBtn.ImagePosition = com.sun.star.awt.ImagePosition.Centered
    LibOBtn.Graphic = LibOIcone
    
    end sub

    Ce code est associé à l'événement Lors du chargement du formulaire figugant dans la base en pièce jointe.

    Nota : l'Url donné dans cet exemple peut évoluer selon la version. Par exemple pour la version 4.4 le bouton Ouvrir pourra être situé :

    private:graphicrepository/cmd/sc_open.png

    . Notes :

    1. Voir la documentation de l'API
    2. Application Programming Interface, interface de programmation applicative
    3. Voir la documentation de l'API
    4. Un URL (Uniform Resource Locators) indique l'adresse d'un document ou d'un serveur sur Internet, sur un réseau ou un disque. La structure générale d'un URL varie selon son type et se présente généralement sous la forme : Service://nom_hôte:Port/Chemin/Page#Marque (parfois, certains éléments ne sont pas nécessaires). Un URL peut être une adresse FTP, une adresse Internet (HTTP), une adresse de fichier ou une adresse e-mail.