[Users-fr] Préférences d'un module externe : bouton d'action dans la session courante

classic Classic list List threaded Threaded
2 messages Options
Samuel GOUGEON Samuel GOUGEON
Reply | Threaded
Open this post in threaded view
|

[Users-fr] Préférences d'un module externe : bouton d'action dans la session courante

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é).

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...) 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é :))


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
Samuel GOUGEON Samuel GOUGEON
Reply | Threaded
Open this post in threaded view
|

Re: Préférences d'un module externe : bouton d'action dans la session courante

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...) 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


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr