Rappel

AutoIT3 (adresse) est un langage de script concurrent du langage KiXtart utilisé notamment pour l'administration de parc Windows. Il présente un langage simple à appréhender, puissant et de nombreux modules ont été créés pour ajouter de nouvelles fonctionnalités. Certaines de ces fonctionnalités feront l'objet d'un article.

Présentation

KODA est un programme additionnel à AutoIT3 pour concevoir ses IHM de manière graphique. Vous pouvez le télécharger à partir du forum d'AutoIT3 : http://www.autoitscript.com/forum/index.php?showtopic=32299&hl=koda. L'interface peut être sauvegardée au format kxf (xml) pour être remodifiée par la suite. Le format de sortie final de KODA est cependant du code AutoIT3 définissant l'interface. A la différence du Visual Basic qui stocke ses frames (interface + code) dans des fichiers séparés intégrés à la compilation, AutoIT3 intègre le code de génération des interfaces directement dans le fichier source « au3 ».

Description de l'interface

L'interface de KODA

L'interface est découpée en différents blocs : En haut, la barre de menus, les boutons d'ouverture/sauvegarde, d'exécution et d'import (nous y reviendrons par la suite) et les contrôles à insérer dans le formulaire. Au milieu à gauche, l'Object TreeView qui montrera l'organisation hiérarchique entre les différents objets. Il s'agit d'un « explorateur » de fenêtre. Au centre, la fenêtre vierge sur laquelle nous travaillons. A droite, la « Form List » qui permet de gérer différentes fenêtres. En bas à gauche, l'« Object Inspector » qui permet de régler les différents paramètres de chaque élément de la fenêtre (nom, contenu textuel, taille...)

Utilisation de l'interface

Pour placer un contrôle sur la fenêtre, il suffit de cliquer sur le contrôle désiré, puis sélectionner une zone sur la fenêtre en faisant un glisser-déposer.

Exemple : Voir ci-dessous, nous venons de placer un bouton sur l'interface.

Création d'un bouton

Si on souhaite le déplacer, il suffit de cliquer dessus pour le sélectionner, puis faire un glisser-déposer jusqu'à sa destination.

L'inspecteur d'objet

L'inspecteur d'objet permet de régler finement l'apparence de vos contrôles (taille, couleur, police...). Il permet également de spécifier le contenu textuel de vos zones de texte (champ caption), ainsi que le nom de votre contrôle (champ name). Dans un souci de clarté de code, nous vous recommandons de définir les noms des contrôles que vous allez utiliser dans votre programme (lire une valeur d'un champ, détecter un clic sur un élément...).

L'inspecteur d'objets

Dans l'exemple suivant, le bouton a été nommé « ButValid » et contient le texte « Continuer ».

Export et intégration dans votre programme AutoIT3.

Les deux boutons à droite du bouton d'enregistrement servent respectivement à afficher le code source AutoIT3 et à prévisualiser l'interface. -Le premier affichera le code source dans une petite fenêtre avec un bouton pour copier le code dans le presse-papier.

Voici un exemple de notre fenêtre pour afficher un contrat de licence et demander l'acceptation de celui-ci :

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 447, 1561, 164)
$ButValid = GUICtrlCreateButton("Continuer", 424, 400, 121, 25, 0)
$Label1 = GUICtrlCreateLabel("Label1", 8, 8, 620, 377)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Radio1 = GUICtrlCreateRadio("Oui", 272, 392, 121, 25)
$Radio2 = GUICtrlCreateRadio("Non", 272, 416, 121, 25)
$Label2 = GUICtrlCreateLabel("Acceptez-vous les termes du contrat de licence ?", 24, 400, 237, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd

-Le deuxième va directement ouvrir l'éditeur Scite avec le code source présent. L'intérêt est de pouvoir tester en grandeur nature ce à quoi l'interface va ressembler à l'exécution. Appuyez simplement sur la touche <F5> pour lancer le programme.

Interagir avec les contrôles dans le code

Détecter un clic :

Le switch GUIGetMsg() permet de savoir quel contrôle envoie un événement. Pour savoir si notre bouton a été pressé, il suffit de rajouter un Case $NomDuControle. La boucle ressemble alors à cela :

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $ButValid
			MsgBox(0,''Bouton pressé'',''C'est le bouton continuer qui a été pressé'')
	EndSwitch
WEnd

Ce code permettra d'avoir une alerte qui s'affichera lorsque l'utilisateur cliquera sur le bouton « Continuer ».

De manière générale, tout contrôle est cliquable, dans la mesure où l'on peut intercepter l'évènement via cette boucle.

Obtenir les paramètres des contrôles

Nous avons placé deux boutons radio permettant de savoir si l'utilisateur a accepté ou non la licence. Il serait intéressant de savoir quel bouton a été coché pour agir en conséquence. Pour cela, il suffit d'utiliser la fonction GUICtrlRead avec la variable du contrôle en paramètre. Ce qui donne le code suivant :

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $ButValid
			if GUICtrlRead($Radio1) = 1 Then
				msgbox(0,"Merci","Vous avez accepté le contrat de licence !")
				;Insert installation code here
			Else
				msgbox(0,"Erreur","Vous n'avez pas accepté le contrat de licence !")
				Exit
			EndIf
	EndSwitch
Wend

Conclusion

AutoIT3 est déjà en soi un outil puissant pour réaliser nombre de tâches d'administration ou autre. Grâce à KODA, la création d'interfaces graphiques devient encore plus simple et augmente le potentiel du langage pour un investissement en temps minimal. Cet article ne couvre qu'une partie des possibilités de KODA et du système d'interface graphique de manière générale, mais il permet au développeur néophyte de connaître les fonctions de base pour commencer à créer une interface graphique pour ses programmes. Pour plus d'informations, le mieux est de consulter la documentation officielle d'AutoIT3, surtout les fonctions commençant par « GUI ». Chaque fonction est commentée et comporte un exemple.

Le résultat Final

Annexe

Voici le code source de la fenêtre d'acceptation de licence :

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 447, 1561, 164)
$ButValid = GUICtrlCreateButton("Continuer", 424, 400, 121, 25, 0)
$Label1 = GUICtrlCreateLabel("Please Insert License Here", 8, 8, 620, 377)
GUICtrlSetBkColor(-1, 0xFFFFFF)
$Radio1 = GUICtrlCreateRadio("Oui", 272, 392, 121, 25)
$Radio2 = GUICtrlCreateRadio("Non", 272, 416, 121, 25)
$Label2 = GUICtrlCreateLabel("Acceptez-vous les termes du contrat de licence ?", 24, 400, 237, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###



 While 1
 	$nMsg = GUIGetMsg()
 	Switch $nMsg
 		Case $GUI_EVENT_CLOSE
 			Exit
 		Case $ButValid
 			if GUICtrlRead($Radio1) = 1 Then
 				msgbox(0,"Merci","Vous avez accepté le contrat de licence !")
 				;Insert installation code here
 			Else
 				msgbox(0,"Erreur","Vous n'avez pas accepté le contrat de licence !")
				Exit
 			EndIf
 	EndSwitch
 WEnd