Animation d’interface utilisateur

Les programmeurs écrivent des interfaces utilisateur depuis déjà une vingtaine d’années et cependant il n’y a pas de façon commune de pratiquer selon qu’on utilise Html/Javascript, Visual Basic, OpenGL, Tcl-Tk, C et Motif sur Unix, C et MFC sur Windows ou Java ... et bien d’autres langages.

On présente ici les concepts, communs à tous ces langages pour définir les traitements qu’un utilisateur déclenche par l’intermédiaire de l’interface. La réalisation des concepts diffère suivant que le langage est interprété ou compilé, et suivant l’environnement graphique mis à la disposition du programmeur.

 

Voici un exemple de formulaire pour enregistrer une identité (nom,prénom); cinq objets d’interface sont utilisés: deux étiquettes et leur champ de saisie respectif (chNom, chPrénom), et un bouton-poussoir (‘ENREGISTRER’).
nom   Petitegoutte
prénom   Justine
  ENREGISTRER

Le programmeur désire associer le bouton-poussoir, l’événement ‘clic’, le traitement qui enregistre une nouvelle identité (dans un fichier, une base de données ...) et les données (ici les deux champs chNom et chPrénom, afin d’y récupérer l’identité à enregistrer); nous les appelons données-programmeur.

Cet exemple met en avant la nécessité, pour le traitement déclenché par l’appui sur ‘ENREGISTRER’ de connaître chNom et chPrénom.

 

Quelques mots sur l’animation

L’animation d’une interface utilisateur se fait grâce aux éléments suivants :

 

Intervention de l’environnement graphique

L’environnement graphique mis à la disposition du programmeur intervient pendant deux phases distinctes: d’une part quand le programmeur écrit ses instructions, d’autre part quand l’interface programmée s’exécute.

Pendant la première phase, cet environnement graphique fournit au programmeur:

Pendant la deuxième phase les routines de l’environnement graphique animent les OI prédéfinis (édition de champ de saisie, apparence d’un bouton enfoncé/relaché, changement de couleur d’un texte quand la souris passe dessus ...) et appellent les réflexes définis par le programmeur en leur communiquant les données pertinentes pour le traitement. C’est pour cela que les réflexes ont un prototype défini par l’environnement graphique. Les réflexes sont appelés par les routines de l'environnement et non par une instruction du programmeur.

Il faut noter que les données de l’environnement graphique accessibles au réflexe sont souvent un paramètre prévu dans le prototype imposé du réflexe. Ces données comprennent des informations sur l’événement (position de la souris, caractère frappé au clavier ...) et l’objet graphique source de l’événement.

Par contre les données-programmeur sont rarement prises en compte par l’environnement graphique. Cependant on trouve

Dans tous les langages, le réflexe peut accéder à des informations globales, comme n’importe quel sous-programme du langage; cette possibilité d’accès aux variables globales est fortement déconseillée car cela rend la maintenance de programme difficile; cependant il est courant qu’un ouvrage déconseille l’usage d’informations globales dans son premier chapitre, et oublie cet adage dans le chapitre ‘interface utilisateur’.

 

Réalisation suivant les langages

Voyons quelques façons de réaliser l’association OI-EV-RFX-D, suivant le langage.

Références

http://cpcug.org/user/clemenzi/technical/Languages/   chercher ‘Basic Windows GUI Tasks’
http://msdn.microsoft.com/library/default.asp
http://www.cs.cf.ac.uk/Dave/X_lecture/node5.html
http://www.cppfrance.com/rechcodesndx.aspx