[Users-fr] Préférences d'un module externe : bouton d'action dans la session courante
Samuel Gougeon
sgougeon at free.fr
Lun 26 Fév 19:07:22 CET 2018
Le 13/02/2018 à 15:52, Samuel Gougeon a écrit :
>
> Bonjour,
>
> Je souhaite utiliser l'interface des Préférences pour gérer les
> variables de configuration du module externe "uman". L'exemple donné
> dans le module SCI/contrib/toolbox_skeleton fonctionne bien :
>
> * la construction du formulaire est assez claire et paramétrable.
> * après validation du formulaire, on récupère bien les valeurs
> actualisées dans le fichier SCIHOME/uman_preferences.xml
>
> Cependant, l'usage du fichier
> SCI/contrib/toolbox_skeleton/etc/toolbox_skeleton.xsl est assez obscur.
> Ce fichier ne semble en réalité pas utilisé. Il n'est pas non plus
> documenté (je n'ai rien trouvé).
>
Bon, je suis finalement parvenu à construire un fichier
uman_preferences.xsl qui fonctionne.
Il sera distribué et utilisé par la prochaine version de uman() sur ATOMS.
Dans le modele SCI/contrib/toolbox_skeleton de module externe distribué
dans Scilab 6,
un second exemple fonctionnel utilisant le langage .xsl (qui n'est pas
trivial..) pourra être
ajouté avec son fichier .xml associé, pour illustration d'une page
d'aide à préparer.
>
> Ce fichier ne semble en réalité pas utilisé. Il n'est pas non plus
> documenté (je n'ai rien trouvé).
>
> J'espérais y trouver un moyen de déclarer des actions (callback) liées
>
> * soit à chaque paramètre des préférences, exécutable lors de la
> modification de chaque paramètre
> * soit exécutable lors de la validation "Apply" ou "OK" (dont la
> distinction reste mystérieuse
> <http://bugzilla.scilab.org/show_bug.cgi?id=12675>...) de
> l'interface des préférences
>
> L'idée est de pouvoir actualiser dans la session Scilab _en cours_ les
> paramètres actualisés.
> Le fait de devoir redémarrer Scilab pour que ce soit le cas -- via le
> uman.start, dans lequel on peut lire le fichier uman_preferences.xml
> et faire toutes les initialisations souhaitables -- n'est vraiment pas
> pratique.
>
> Donc : existe-t-il une fonction scilab
>
> * définissable par l'auteur de chaque module externe
> * appelée lors de la validation de l'interface des préférences
>
> ou quelque chose de similaire ?
> Merci
>
> Samuel
>
> PS : j'ai aussi regardé comment les items des préférences de Scilab
> sont gérés, s'il y a des actions définies dessus, etc. J'ai cru
> comprendre que oui, mais seulement en java. Une confirmation serait
> appréciable. Un démenti encore plus :) Surtout s'il est documenté :))
Pour le module uman, on peut faire sans, car il y a une seule fonction :
uman().
Il est donc possible d'ajouter au début de celle-ci une ligne
actualisant les
variables de configuration du module, si le fichier de préférences a été
modifié
(on peut utiliser le code md5 du fichier pour détecter ses modifications).
Mais dans le cas le plus fréquent où un module a N>1 fonctions, il serait
absurde d'ajouter cela en tête de chaque fonction. Et le problème demeure.
En creusant, on peut trouver le fichier
edit SCI/modules/console/etc/Actions-Configuration.xml
Une de ses lignes se présente comme suit :
<entry type="java" action="TabifyAction" name="scinotes-tabify"/> J'ai cru comprendre que le name est utilisé
comme identifiant dans le .xsl (mais on s'y perd un peu..) En en-tête du
fichier, on lit
<!-- Map between action names and Java or Scilab action -->
Donc une entry avec type="scilab" devrait être possible, avec une
action=".."
qui serait une série d'instructions en Scilab.
Le principal problème est de mettre les choses dans l'ordre, et surtout
de faire la même chose pour un module externe. À moins que le nom de
fichier "Actions-Configuration.xml" soit générique et utilisable dans le
dossier ~/etc/ de n'importe quel module externe, ce n'est pas gagné...
Pour contribution au débroussaillage...
Samuel
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20180226/912f9390/attachment.htm>
Plus d'informations sur la liste de diffusion users-fr