Script-wizard : Assistant de création d'application graphique

Auteur: Joseph Colineau
Date: 8 mai 2004
Version: 0.8.0

Contents
1. Introduction
2. Mode d'emploi
3. Personnalisation
        3.1. Paramètres par défaut
        3.2. Enrichissement des librairies
4. Liste des modèles proposés
        4.1. menu-cy
        4.2. liste-cy
        4.3. lanceur
        4.4. formulaire
        4.5. texte1
        4.6. liste1
        4.7. liste2
        4.8. editeur
        4.9. panneaux
        4.10. plein_ecran
5. Personnaliser ses styles
        5.1. agrémenter le fond
        5.2. choisir, modifier ses styles
6. Comment faire
        6.1. une application plein écran
        6.2. une présentation indépendante de la résolution de l'écran
7. Faire plus
        7.1. utiliser les boites de dialogue
        7.2. utiliser les fonctions du système
        7.3. appeler un fichier d'aide
        7.4. Créer l'interface dynamiquement.
8. Evolutions, recommandations
9. Divers

1. Introduction

Cet assistant permet de créer le squelette du code d'une application avec interface graphique à partir de quelques cases à remplir et du choix du style de fenêtre principale, et de fenêtre à-propos, que l'on peut prévisualiser. Les choix étant faits, le programme construit le code, le reformate avec "script-cleaner", et l'enregistre.

Attention, il ne s'agit pas d'un EDI, il faut ensuite reprendre le code, changer les labels des boutons, en ajouter, écrire les fonctions que réalise vraiment votre programme etc. Cependant, on obtient en quelques secondes un script d'application qui gagne du temps pour l'écriture du programme: header rempli et daté, trame de layout à compléter, fonctions d'aide et à-propos, style défini, texte formaté correctement.

Ce logiciel sera utile pour un débutant, qui aura tout de suite quelque chose de présentable, mais aussi pour un professionnel, qui utilise souvent les mêmes squelettes d'application, sans avoir trop de temps à passer à la présentation. A cet effet, la structure de l'assistant permet d'ajouter facilement ses propres styles d'application, ou de personnaliser ceux qui sont proposés.


2. Mode d'emploi

L'utilisation du logiciel est très simple: il suffit de remplir les champs du formulaire présenté à l'écran.

On choisit ensuite un style de fenêtre "aPropos" (il est possible de la pré-visualiser).

De la même manière on choisit un style de fenêtre principale, en fonction de l'application que l'on souhaite créer. Il est conseillé également de la prévisualiser.

Enfin, on lance la création du fichier de l'application. Il est sauvegardé, avec le nom que vous avez fourni, dans le répertoire de travail.

Il est possible ensuite de l'éditer, pour le compléter avec les fonctions spécifiques que vous souhaitez implanter dans votre application. Vous modifierez également les labels et les styles qui ne vous conviennent pas, et ajouterez les éléments graphiques qui manquent.


3. Personnalisation

3.1. Paramètres par défaut

Il est possible de remplacer le contenu des premières lignes du script, qui donnent les paramètres par défaut, qui apparaissent dans le formulaire au lancement de l'application:

prog-title: "essai"
prog-file: %essai.r
prog-version: 0.1.0
prog-comment: "Script créé par wizard 0.8.0"
prog-help: "pas d'aide disponible"
prog-author: any [system/user/name "..."]

3.2. Enrichissement des librairies

Il est possible d'ajouter ses propres librairies en complément de celles qui sont fournies. Ceci permet de créer des layout personnalisés.

Après le chargement des librairies standard: %lib-layout, %lib-aPropos et %cy-layout.r

foreach el system/script/header/needs [do el]
les lignes suivantes cherchent et chargent des fichiers de modèles personnels:

if (exists? %mes-layout.r) [do %mes-layout.r]
if (exists? %mes-aPropos.r) [do %mes-aPropos.r]
On peut encore, plus simplement, ajouter ses fichiers dans le bloc Needs de l'en-tête

ces fichiers devront comporter les lignes suivantes: (ou l'équivalent)

ma-liste-main: ["menu1" "menu2" "liste3"]
insert liste-main ma-liste-main

ma-liste-aPropos: ["tres-simple"]
insert liste-aPropos ma-liste-aPropos
Le bloc ma-liste-main comporte la liste des modèles définis dans le fichier. Chacun de ces modèles est une variable texte qui comporte le code du layout ou de la fonction aPropos.

La syntaxe générale d'un modèle de layout est la suivante:

nom-du-modele: {main: layout [blabla ...] view main}
Et on ajoute nom-du-modele à ma-liste-main

ma-liste-main: ["..." "..." "nom-du-modele"]
le nom que l'on choisit doit respecter les règles de Rebol: pas d'espace, pas d'accent ...

Vous pouvez vous inspirer des modèles des fichiers lib-layout et lib-aPropos. Ils peuvent, bien sûr comporter le chargement de fichiers de définition de style, d'images etc.

ma-liste: {
do %text-list.r
main: layout [
...
text-list striped ...
]
view center-face main}

4. Liste des modèles proposés

Les premiers modèles proposés utilisent partiellement la librairie de Cyphre (styles-pack.zip). Ils sont regroupés dans le fichier cy-layout.r. Bien que nous n'ayons choisi que quelques modèles de styles, l'ensemble de la librairie est excellente.

Les modèles suivants utilisent directement les composants de view/vid (version 1.2.8 minimum).

4.1. menu-cy

Utilise le style menu de Cyphre. Ce modèle peut servir de base à un éditeur de texte.

4.2. liste-cy

Utilise le style my-list de Cyphre. Crée un tableau à plusieurs colonnes. L'appui sur le bouton "test" permet de remplir ce tableau avec la liste des fichiers du répertoire racine. Il est possible de trier le tableau en cliquant sur le titre de l'une quelconque des colonnes.

4.3. lanceur

Typiquement utile pour faire un lanceur d'applications: lancer des scripts Rebol , des applications, voir des URL

btn "anamonitor" [do %anamonitor.r]
btn "Rebol" [browse http://www.Rebol.com]
btn "calculatrice" [call "calc.exe"]
les fonctions "éditer" et "relancer" permettent de modifier le script pour lui ajouter des commandes.

4.4. formulaire

Modèle de formulaire. Les valeurs sont accessibles via la propriété text:

print f1/text

4.5. texte1

Modèle de zone texte avec slider

4.6. liste1

modèle de text-list. Il est rempli ici à partir du contenu du répertoire courant:

example: load %.
l'élément choisi est obtenu grâce à:

t1/picked
A titre d'exemple, le bouton "éditer" ouvre le fichier dans l'éditeur Rebol

4.7. liste2

C'est la même chose que l'exemple précédent, dans une présentation différente

4.8. editeur

Voici un modèle d'application de type éditeur, avec un menu simplifié d'ouverture et d'enregistrement de fichiers.

4.9. panneaux

Le modèle comporte ici une ligne de boutons, qui sert de menu.

Les boutons du menu permutent des "panneaux" qui comportent des boutons, ou des "rotary", servant de sous-menus.

4.10. plein_ecran

La fenêtre est ici ouverte en plein écran.

screensize: system/view/screen-face/size
Afin d'obtenir un aspect indépendant de la résolution de l'écran, on définit une mesure indépendante de la résolution

step: screensize / 80x60
et on positionne les éléments sur cette grille virtuelle

at step * 1x1
...
at step * 1x58
mbtn "Quitter" [quit]
Une autre particularité de ce layout est sa construction "dynamique". On veut ici faire apparaître une liste des fichiers du répertoire. Elle est obtenue par:

tdir: load %.
Chaque élément de cette liste sert à construire un "bouton" de style text, qui appelle la fonction 'lance-script avec, comme paramètre, le nom du fichier:

forall tdir [append mainwin reduce ['mbtn first parse/all (to-string tdir/1) "/" [lance-script face]]]
La fonction lance-script est définie comme suit :

; exemple de fonction: lance le script Rebol, ou ouvre le fichier
lance-script: func [face] [if error? try [do to-file face/text] [try [browse to-file face/text]]]

5. Personnaliser ses styles

5.1. agrémenter le fond

par des images, une grille, un effet de dégradé

backdrop %fichier-image.jpg effect [aspect]
backdrop gray effect [grid 2000x8 blue]
backdrop blue effect [gradient 0x1]

5.2. choisir, modifier ses styles

style btn1 btn 120x20 yellow
style btn1 txt 120x20 yellow
voir à ce sujet la documentation du dialecte VID, la liste des effets.


6. Comment faire

6.1. une application plein écran

screensize: system/view/screen-face/size
ne pas oublier un bouton pour quitter l'application!

6.2. une présentation indépendante de la résolution de l'écran

step: screensize / 80x60
at step
btn "xxx"
at step * 1x20
btn "quitter"

7. Faire plus

7.1. utiliser les boites de dialogue

request-color
request-file
request-pass
request-text
request-date

7.2. utiliser les fonctions du système

emailer
editor %fichier.r
browse %fichier.htm
browse url
call "calc.exe"

7.3. appeler un fichier d'aide

Le fichier d'aide, s'il existe, peut être déclaré dans l'en-tête:

btn "aide"  [either file? ssh/help [error? try [browse ssh/help]][alert ssh/help]]

7.4. Créer l'interface dynamiquement.

La fonction layout crée une fenêtre à partir d'une chaîne de caractères. Il est facile de créer cette chaîne avec Rebol, en fonction du contenu d'une liste, d'un fichier de configuration, d'un répertoire ... Voir par exemple le layout plein_ecran.


8. Evolutions, recommandations

Cette version du logiciel génère un code volontairement très simple, ce qui permet d'intervenir facilement pour le modifier ou le compléter.

Il est possible d'en enrichir les possibilités, mais il est souhaitable que le code produit reste simple et très lisible. Sinon, c'est un autre logiciel, pour d'autres besoins.

Il serait bon également de travailler l'homogénéité de l'esthétique, et de trouver une solution simple de modification des modèles à partir de qualificatifs du genre "classique", "fantaisie", "professionnel", "couleurs chaudes", "couleurs froides", etc

Les modèles personnalisés que l'on ajoute peuvent, eux, être très évolués. Une bonne méthode est de partir de vos réalisations les plus réussies, et de les dépouiller, jusqu'à en conserver la partie de code réutilisable (en incluant les fonctions liées à cette interface).

Par ailleurs, il serait utile, dans une prochaine version, d'ajouter la possibilité de choisir, dans une palette, un ou plusieurs composants que l'on trouve souvent dans une application classique: fichier et formulaire de configuration, écran "splash", formulaire d'accès simple à une base de données, fenêtres secondaires...


9. Divers

Ce logiciel est destiné à être complété par d'autres modèles. Il existe un certain nombre de librairies de composants graphiques qui peuvent facilement être intégrées. Citons les skins d'Etienne A Laurent, Glayout, en cours de développement, RebGUI, ainsi que d'excellentes réalisations de composants par divers reboleurs. Nous avons choisi de n'intégrer que la librairie de Cyphre, mais libre à vous de compléter ...