L 'extension est disponible ici (choisir la version du fichier oxt la plus récente, c’est celle qui est en cours de développement), la documentation en français ici. Dans la documentation, il y a la plupart des fonctions accessibles par l’extension avec un exemple de programmation en Basic.
Je me propose de vous présenter quelques unes des fonctions les plus intéressantes.
1 – CallMacro : L’appel de macro
La fonction callMacro permet d’appeler tout type de macro de n’importe quel langage se situant n’importe où.
Syntaxe d’interface :
Macro est une structure uno :any callMacro([in] org::universolibre::EasyDev::Macro macro, [in] sequence< any > args);
sequence< any > args représente un tableau (sequence) de variants (any) .published struct Macro
{
string Library;
string Module;
string Dialog;
string Name;
string Language;
string Location;
boolean Thread;
};
Exemples : Array() pas d’arguments . Array(cell) la variable cell est passée en argument à la macro.
La macro peut retourner quelque chose qui est de type variant.
Voici un exemple pour appeler la macro HelloWord qui se trouve dans le module Examples dans la bibliothèque Basic EasyDevLib (installée avec l’installation de EasyDev).
Code : Tout sélectionner
util = createUnoService("org.universolibre.EasyDev")
macro = createUnoStruct("org.universolibre.EasyDev.Macro")
macro.Library = "EasyDevLib"
macro.Module = "Examples"
macro.Name = "HelloWorld"
macro.Language = "Basic"
macro.Thread = False
util.callMacro(macro, Array())
2 – Timer : La fonction Timer
Cette fonction permet de programmer un timer qui appelle une macro tous les x secondes.
Syntaxe d’interface :
name est le nom du timer. Très important pour pouvoir le stopper par stopTimer.void timer([in] string name, [in] unsigned short wait, [in] org::universolibre::EasyDev::Macro macro, [in] sequence< any > args);
Wait est le temps en secondes qui sépare chaque exécution de la macro .
Macro est la macro appelée (voir syntaxe de callMacro)
Exemple dans fichier exemple.
Attention cette fonction peut se révéler dangereuse si vous l’utilisez mal. Le timer est lancé dans un thread et donc le seul moyen de l’arrêter est de le stopper par la commande stopTimer avec le nom du timer. Si vous avez un timer « fou » que vous n’arrivez plus à arrêter (erreur de code, lancer deux fois un timer avec un même nom) la seule façon de s’en sortir est de tuer LibreOffice ou OpenOffice par le gestionnaire de tâche.
3 – Execute : La fonction execute
Cette fonction permet d’exécuter une commande système et surtout de récupérer ce qui s’affiche à l’écran pendant l’exécution de la commande.
Syntaxe d’interface :
args est un tableau qui contient l’exécutable à lancer et ses options.any execute([in] sequence< string > args, [in] boolean wait);
wait permet d’attendre la fin d’exécution (dans le cas où il y a un résultat par exemple) ou pas de ce qui est lancé.
Voici un exemple pour lancer la commande ls -la et afficher le résultat .
Code : Tout sélectionner
util = createUnoService("org.universolibre.EasyDev")
res = util.execute(Array("ls","-la"), True)
util.msgbox(res)
Syntaxe d’interface :
Cette fonction permet de transférer (en une seule fois) un tableau de données du Basic dans des cellules d’une feuille Calc.void setData([in] any cell, [in] any data);
Exemple dans fichier exemple.
5 – Requests : Récupérer des données d’un site web.
Cette fonction permet de récupérer du contenu de sites Web.
Syntaxe d’interface :
Response et Requests sont des structures.Response requests([in] org::universolibre::EasyDev::Requests data);
any correspond au type Variant en Basic.
Exemple dans fichier exemple.
Pour illustrer mes propos j’ai mis en pièce jointe un fichier calc qui utilise des macros se servant de EasyDev.
J’ai testé les macros qui se trouvent dans le fichier avec LibreOffice 5.2.7.2 et OpenOffice 4.1.3 sous Windows 7 et LibreOffice 5.4.2.2 sous Ubuntu 16.04
Dans le fichier calc joint :
Quand vous appuyez sur le bouton StartTimers il y a deux timers qui se mettent en route, un qui incrémente (toutes les secondes) et un qui décrémente (toutes les deux secondes). Quand le timer qui incrémente arrive à 10 il est arrêté. Quand celui qui décrémente arrive à 0 il est arrêté. On peut arrêter les timers en cours d’exécution par le bouton StopTimers. On peut faire des choses sur la feuille pendant l’exécution des deux timers.
Le bouton Execute va vous lancer une commande qui retourne la version de l’O.S (attention pour linux la commande utilisée peut ne pas fonctionner sur tous les systèmes (testé avec une distrib Debian).
Le bouton SetData va vous envoyer un tableau dans la feuille à partir de la cellule A7.
Il y a d’autres macros à lancer par exécuter la macro.
Voilà j’espère ne pas avoir été trop long. Pour explorer toutes les possibilités de l’extension je vous invite à lire la documentation. Si vous avez des succès ou des échecs sur l’installation ou sur l’utilisation sous d’autres O.S (par exemple MAC O.S) ou d’autres versions n’hésitez pas à le faire savoir.
Si vous avez des questions, des suggestions, des bugs rencontrés, des remarques à faire n’hésitez pas à le faire, je suis en contact avec l’auteur de l’extension et il est dans un forum voisin. Je ne parle pas espagnol mais nous arrivons à nous comprendre en anglais.
Ami calmant, J.P