Un assistant est un programme qui par une succession d'ecran va permet de configurer un logiciel, une peripherie ...
On peut le definir graphiquement par 4 elements:
Le monde UNIX n'etant pas, a la base graphique, le concept d'asssistant ne s'est pas beaucoup developpe.
Or grace a tcl-tk, on peut par exemple realiser un assistant rapidement. Les ecrans ci-dessus sont des captures d'ecrans, d'un assistant realise en tcl-tk pour facilite l'ajout d'un utilisateur.
De meme la librairie libsx offre beaucoup de facilite pour le developpement d'un assistant.
On cree 3 frames:
Chaques fenetres de dialogues sera créée avec un numero d'ecran ( dans le path dans la fenetre .f$numero_ecran pour tcl-tk).
On a deux variables globales: nbtotalecran nombre total d'ecran et nb_ecran numero de l'ecran courant.
On affichera gace au packer le premier ecran ( pack .f0 ).
Pour les boutons Precedent et Suivant, on leur associe 2 callback:
Tcl Tk a ceci de genial, c'est que dans le language il conserve les noms des fenetres et variables que l'on peut appele comme dans un tableau, avec un numero. Ainsi vous créez tout vos ecrans de dialogue pour l'assistant avec pour chacun d'entre eux un chemin egal a .f$numero_ecran: fonction creationscreennb
Vous pouvez les afficher ou les faire disparaitre grace au commande:
De meme,chaques fenetres dialogues sera créée avec un numero d'ecran .
/* Assistant variables globales */
int current_screen =0;
int index_screen=0;
La fonction MakeAssistantScreen fabriquera une form, un label titre, et un texte descriptif.
void MakeAssistantScreen(char *title,char *description)
Apres il suffira de creer les Widgets et d'apeller AddWidget. void AddWidget(Widget w)
. Le reste est automatique.
A chaque changement d ecran, deux fonctions sont appelees:
Fonction | Parametre |
InputEcran | Numero du nouvel ecran |
OutputEcran | Numero de l'ancien ecran |
Exemple: InputEcran en C:
switch (n)
{case 2 : sprintf(homedir,"/home/%s",nomuser);
SetStringEntry(Whomedir,homedir);
break;...
OutEcran en C:
switch (n) { case 0: strcpy(nomuser,GetStringEntry(Wnomuser));
if (strchr(nomuser,' ')!=NULL) {printf("Nom user contient des espaces");
GetYesNo("Nom user contient des espaces");
return(FALSE);
... Ici le return FALSE indique que l'on ne veut pas changer d'ecran, qu'il y a une erreur.
Une fois les differents squellettes d'assistants crees dans divers langages, il serait interressant de faire un mecanisme de template, pour creer a volontee des assistants dans divers langage
charles vidal octobre 1998