Skip navigation.

exploreopera

| Help

Sign up | Help

photo

Groumphy au quotidien

Posts tagged with "script"

AutoIt : interface conviviale

, ,

AutoIt dans sa version 3 permet de faire des interfaces graphiques. Ce n’est un secret pour personne.
Toutefois il y a des leçons à tirer sur les GUI (interface graphique) afin de les rendre conviviales.
Passons en revue quelques méthodes simples.
Créons une feuille.
#include <GUIConstants.au3>
$GUI_NomFeuille = GUICreate("Nom de la feuille", 340, 210, -1, -1)
GUISetState(@SW_SHOW)

Que pouvons-nous constater ?
  1. nous utilisons des valeurs rondes pour la dimension de la feuille ;
  2. nous laissons l’emplacement de la feuille par défaut ;
  3. la feuille est nommée d’un nom compréhensible de l’endroit où elle se trouve ou de l’action qu’elle mène (exemple : Aide si c’est la feuille Aide etc.)

Identiquement à une interface web, nous pouvons rajouter un (des) menu(s).
$mn_Fichier = GUICtrlCreateMenu("&Fichier")
$ssMn_Ouvrir = GUICtrlCreateMenuItem("&Ouvrir", $mn_Fichier)
$ssMn_Quitter = GUICtrlCreateMenuItem("&Quitter", $mn_Fichier)
$MenuItem1 = GUICtrlCreateMenu("&Aide")
$ssMn_APropos = GUICtrlCreateMenuItem("A &propos", $MenuItem1)
$ssMn_Aide = GUICtrlCreateMenuItem("A&ide", $MenuItem1)

Que pouvons-nous remarquer ?
  1. nous utilisons des noms de menu dit « classique » (tel Fichier, A propos) ;
  2. les sous-menus sont eux aussi de noms « classique » ;
  3. chaque menu et sous-menu dispose d’une clé d’accès (éperluette devant la lettre servant de clé d’accès) ;
  4. les menus sont placés dans un ordre logique rappelant les logiciels les plus connus (par exemple Fichier suivis de Editions, suivis de Affichage, suivis de A propos/Aide etc.) ;

Une interface graphique permet la plupart du temps de faire de nombreuses actions. Il est généralement conseillé de grouper les actions similaires ou de séparer les types d’actions.
Cela se fait généralement par un groupe.
Créons en un :
$Gp_GroupeAction = GUICtrlCreateGroup(" Groupe de l'action : ", 10, 10, 320, 65)
GUICtrlCreateGroup("", -99, -99, 1, 1)

Nous pouvons dire d’emblée les choses suivantes :
  1. le groupe est créé et fermé ;
  2. des valeurs rondes sont utilisées sur le groupes ;
  3. des valeurs logiques sont utilisées pour placer le groupe mais aussi pour déterminer sa largeur (ainsi je place mon groupe à 10 pixels du bord de la feuille mais je sais aussi que sa fin sera « amputée » de 10 pixels du bord droit de la feuille ; ce qui nous fait la largeur de la GUI [340] soustraite des 10 du bord gauche et du bord droit ce qui nous donne 320 en largeur) ;

Dans le groupe nous pouvons placer différents éléments. Notamment des « labels » et des boutons qui permettent de faire des actions.
 $btn_Ouvrir = GUICtrlCreateButton("&Ouvrir", 200, 32, 110, 30, 0)
GUICtrlSetTip($btn_Ouvrir, "Ouvrir un fichier dans la mémoire")
GUICtrlSetCursor ($btn_Ouvrir, 0)
$lbl_BtnOuvrir = GUICtrlCreateLabel("Ouvrir un fichier dans la mémoire", 20, 40, 160, 20)

Ici aussi quelques petits détails doivent nous sauter aux yeux :
  1. nous utilisons toujours des valeurs rondes ;
  2. les contrôles d’actions disposent d’une infobulle ;
  3. les contrôles d’actions disposent d’un autre curseur que celui de l’interface graphique ;
  4. pour déterminer les infobulles et le curseur nous n’utilisons pas la valeur par défaut (égale à -1) mais bien le nom de la variable qui détermine le contrôle ;

Les boutons placés en bas de la GUI, hors de tout groupes, non accompagné de label, etc. seront les boutons généraux (par exemple : Quitter, Aide, etc.) et bien souvent repris dans le menu Fichier.

Comme vous l’aurez compris, pour avoir une interface graphique agréable, l’homogénéité devra être présente, l’accessibilité tout autant (via les clés d’accès) etc.

En parlant d’accessibilité, il est bon de rappeler qu’il est correct de mettre des données incorrectement introduite dans une autre couleur… Toutefois qui ne vous dit pas que la personne qui utilise votre script ne confond pas les couleurs ?

Il serait tout aussi correct (par exemple) d’utiliser la couleur et des astérisques pour informer que les données ne sont pas correctes.

Nous pourrions par exemple utiliser une routine de ce type sur un Input :

Création de l’Input
 $gp_GroupeAction2 = GUICtrlCreateGroup(" Encodage du nom : ", 10, 85, 320, 65)
$btn_Verifier = GUICtrlCreateButton("&Vérifier", 200, 105, 110, 30)
GUICtrlSetTip(-1, "Vérifier les données encodées")
GUICtrlSetCursor (-1, 0)
$ipt_EncoderNom = GUICtrlCreateInput("Encoder votre nom", 20, 110, 170, 20)
GUICtrlSetTip(-1, "Encodez votre nom et poussez par la suite sur le bouton Vérifier")
GUICtrlCreateGroup("", -99, -99, 1, 1)

La routine de contrôle
Case $btn_Verifier
If GUICtrlRead($ipt_EncoderNom) <> "pwouet" Then
Dim $tmp = GUICtrlRead($ipt_EncoderNom)
GUICtrlSetData($ipt_EncoderNom, "***" & $tmp & "***")
GUICtrlSetColor($ipt_EncoderNom, 0xff0000)
GUICtrlSetData($btn_Verifier, " => Revérifier")
GUICtrlSetColor($btn_Verifier, 0xff0000)
Else
MsgBox(0 + 64, "Information", "Données encodées correcte.")
EndIf

Il est bon de retenir que ce qui s’applique sur le web, s’applique sur les GUI… Tous les trucs, astuces, modes sont bons pour pouvoir donner une « consistance » à une interface graphique !

AutoIt

, , , ...

Je l'avais promis, voici le « feedback » du pourquoi du comment que j'utilise AutoIt.

Le but initial était d'avoir un langage de script performant et non dépendant de l'éditeur du système d'exploitation Microsoft (sinon j'aurais pris VBS) afin d'automatiser simplement certaines actions sur le PC, le réseau, l'AD.

J'ai bien entendu cherché divers languages (aussi au niveau BATCH), mais je suis rapidement tombé sur le charme de AutoIt car il permettais non seulement d'être son propre language, mais aussi de la combiner avec d'autres (notament le VBS, les DLL et les ActiveX).

Je l'ai donc installé sur un PC portable de type ACER 1700 sous Microsoft Windows XP et l'installation s'est déroulée sans incident particulier. D'ailleur les installeurs sont fait via des logiciels libres (NSIS de NullSoft). Le language se « décompose » en 3 ou 5 paquets selon ce que l'on désire : le language seul (version production et beta) avec son éditeur (SciTE), le language (production et beta), l'éditeur (SciTE), le CVS (CVSWrapper Add-on) accompagné de Tortoise et le dernier package WinMerge qui permet de faire les comparaisons de fichiers.
J'ai choisis en premier temps la « version 3 paquets », et suis passé rapidement à la version 5 paquets car je la trouvais très pratique !

L'éditeur SciTE remplit parfaitement son role avec une aide syntaxique, une aide (fichier CHM) relié à la touche F1, etc. et se montre très (voir trop) complet (mais c'est aussi personnalisable). Bien entendu les autres logiciels sont parfaitement intégré et s'ouvrent en nouvelle fenêtre ; un petit inconvéniant toutefois devant la multitude de fenêtre.

Il a parfaitement remplis ses fonctions jusqu'à maintenant mais les a aussi remarquablement dépassé car dans sa v3 (actuelle) il permet d'avoir des GUI et donc de faire des applications complètes (exécutable etc.).

Je le considère donc autrement qu'un language script mais bien comme un language complet ! Et je ne compte pas m'en séparer de si tôt !

[ AutoIt ] Arguments de compilation

, , , ...

Définir la langue dans un script compilé

Read more...

AutoIt, mise à jour d'application

, , , ...

Construire un script de mise à jour

Read more...

ZazouMiniWebServer & script

, , , ...

ZMWS & ZLAM

Alors que je continue le développement script d'un controleur du serveur web ZazouMiniWebServer, ce dernier viens de sortir en version 1.2.2 stable !

Couplé à PHP, MySQL, il permet d'avoir un environnement web complet pour moins de 10Mb.

Quant au controleur il fait moins de 500Ko, graphiques compris. Il en est à la version 0.4 Alpha et semble correctement fonctionner.

Envie d'en savoir plus ? Visitez les forums ZMWS !

Trucs et astuces en VBA

, , , ...

Un peu de tout, car je reprend quelques bonnes habitudes de développer en Visual Basic for Application ; le bureau oblige, ils ne sont pas encore passé sous OpenOffice.org.

Alors commençons simple :

  1. définir le texte de la barre d'application :
    Application.StatusBar = "Bienvenue"

  2. décharger une feuille de la mémoire :
    Unload monNomDeFeuille ' attention, au préalable masque la feuille 

  3. capturer un état :
    maVariable.Value = -1 ' valeur vraie
    maVariable.Value = 0 ' valeur fausse

  4. aller à un endroit précis dans un gestionnaire :
    ' exit de la fin de la macro-commande pour ne pas exécuter automatiquement
    ' Prédéterminer une étiquette
    GoTo monEtiquette
    ' déterminer l'étiquette
    monEtiquette:
    ' instruction 


Hum, rien que des choses simples... Un petit rappel mémoire en quelque sorte.

Premier post et informations

, , , ...

Bonjour, bonsoir,

Voici que je crée un nouveau blog, en effet celui que vous lisez en seconde n'est pas le premier que je crée, mais j'espère toutefois qu'il sera différent du précédent.

Pour cause me voici au départ d'un nouveau système incluant les trackbacks, les réponses de posts et tutti quanti.

Bien évidement, je pense qu'il diffère aussi sur le type de post qui sera édité... Ici ne sera pris en compte que des brouillons. Il faut bien commencer par quelque chose.
Script, trucs, astuces, sites internets seront donc ainsi édité de manière rapide.

Dans la continuité, il y aura quelques humeur. Hum, ... Cela arrive à tous de passer ses nerfs ou d'avoir des coups de gueules.

En bref, ce blog me servira de fourre-tout.

Bonne lecture,

Groumphy
July 2008
MTWTFSS
June 2008August 2008
123456
78910111213
14151617181920
21222324252627
28293031