Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
En pratique : CanDo - AppEvents et impression graphique
(Article écrit par Randy Finch et extrait du Randy Finch's Web Site - avril 1994)
|
|
En essayant de décider quel type de programme écrire pour le sujet de ce mois-ci, j'ai réalisé qu'il
existe un programme dont j'ai besoin depuis un certain temps et qui serait parfait. Je peux utiliser
ce programme chaque fois que j'écris un article pour cette série CanDo.
Je crée les figures pour mes articles en utilisant Deluxe Paint. Une fois que j'ai toutes les figures
sur le disque, j'aime les regarder en mode diaporama pour vérifier les erreurs avant de les imprimer.
Il s'agit d'un programme utilitaire Workbench personnalisé, et CanDo est à la hauteur de la tâche.
Le programme s'intitule PrintPics.
La conception du programme
L'interface utilisateur de PrintPics est illustrée dans le coin supérieur gauche de la figure 1. Le programme
permet de sélectionner plusieurs icônes représentant des fichiers graphiques IFF, comme ceux de la
fenêtre CDoVHelm dans le coin inférieur droit de la figure 1, et de les faire glisser vers la fenêtre
de l'interface.
Figure 1 - Interface utilisateur pour le deck PrintPics
Les noms des fichiers sélectionnés sont alors affichés dans l'objet Liste. Le bouton "View" (vue) permet d'activer
un diaporama des images. Le bouton "Print" (imprimer) permet d'imprimer les images sur l'imprimante sélectionnée
dans les Préférences. Le bouton "Quit" (quitter) permet à l'utilisateur de quitter le programme. Enfin, le
bouton long situé en bas de la fenêtre de l'interface exécute le programme PrinterGfx dans le répertoire
Prefs (Figure 2). Cela permet à l'utilisateur de modifier rapidement les paramètres graphiques de l'imprimante
avant d'imprimer les fichiers.
Figure 2 - Après l'appel de PrinterGfx
PrintPics se compose de deux cartes. L'une est nommée "WBInterface". Il s'agit de l'interface utilisateur
décrite ci-dessus. L'autre carte s'appelle "Picture" et est utilisée pour afficher les fichiers image lors
de la visualisation ou de l'impression.
La carte d'interface utilisateur
La première chose à faire lors de la création du deck "PrintPics" est de changer le nom de la carte vide
par défaut de CanDo en "WBInterface". Le type de fenêtre de cette carte doit ensuite être changé en Workbench.
Pour ce faire, il suffit de faire apparaître la requête Fenêtre/Éditeur dans le panneau de configuration
principal, comme le montre la figure 3.
Figure 3 - La requête d'édition de fenêtres pour WBInterface
Il y a plusieurs choses à faire dans cette requête.
- Changez le titre en "View/Print Pictures".
- Dans la section intitulée "Ouvrir la fenêtre sur...", sélectionnez "l'écran du Workbench".
- Sélectionnez le bouton "Objet" dans la section "Attributs" et assurez-vous que les cinq objets
sont cochés. Il s'agit du bouton de fermeture, du bouton de profondeur, de la barre coulissante, du
bouton de taille et des bordures visibles.
- Sélectionnez le bouton "Available Modes" dans la section "Normal Window" et assurez-vous que le
nombre de couleurs est défini sur un nombre inférieur ou égal au nombre de couleurs de votre écran Workbench.
J'utilise un Workbench à quatre couleurs, c'est donc ce que j'ai sélectionné. Si le nombre de couleurs
sélectionnées est supérieur à ce qui est disponible sur le Workbench, la fenêtre n'apparaîtra pas sur le
Workbench, mais restera sur son propre écran personnalisé. La taille et la position de la fenêtre peuvent
également être définies à ce stade ; toutefois, comme la fenêtre dispose d'une barre de déplacement et d'un
bouton de dimensionnement, ces paramètres peuvent être définis en déplaçant et en dimensionnant la fenêtre
sur le Workbench (la position peut être modifiée en mode "Conception", tandis que la taille ne peut être
modifiée qu'en mode "Utilisation". Attention, pour une raison étrange, si vous ouvrez la requête Fenêtre/Editeur
et que vous sélectionnez ensuite le bouton "Annuler", CanDo ne permettra pas de modifier la taille de la
fenêtre, même en mode Utilisation. Pour corriger le problème, ouvrez à nouveau la requête Fenêtre/Editeur et
sélectionnez le bouton "Ok". La fenêtre peut alors être redimensionnée en mode "Browse").
- Cliquez sur le bouton "AppEvent" dans la section "Scripts" et ajoutez le script présenté dans le
listing 1 pour l'événement OnAppEvent de
la carte WBInterface. OnAppEvent est activé lorsque l'utilisateur fait glisser des icônes d'une autre fenêtre
du Workbench vers la carte WBInterface.
Le script OnAppEvent ajouté dans la dernière étape crée simplement un document nommé "AppEventList" et y place
le contenu d'Arg1. Lorsqu'un AppEvent se produit dans un programme CanDo, la liste des noms de fichiers associés
aux icônes qui ont été déplacées dans la fenêtre est affectée à la variable système Arg1. Chaque nom de fichier
est séparé par un caractère de saut de ligne (ASCII 10). En tapant "Arg1" dans le document, ce dernier contiendra
tous les noms de fichiers sélectionnés, un par ligne. Le document AppEventList est associé à l'objet Liste de
la carte WBInterface. Ainsi, chaque fois que le document est mis à jour, les noms de fichiers dans l'objet Liste
sont également mis à jour.
Les objets de l'interface utilisateur
La carte WBInterface contient cinq objets : un objet Liste et quatre objets TextButton. L'objet Liste,
nommé "AppEvents", est simplement utilisé pour afficher les noms des fichiers à visualiser et/ou à
imprimer. Il n'est donc pas associé à des scripts. Comme mentionné précédemment, le document associé à
cet objet est nommé "AppEventList".
Le premier bouton TextButton s'appelle "View" et est utilisé pour activer un diaporama des fichiers
répertoriés dans l'objet AppEvents. Le deuxième TextButton s'appelle "Print" et est utilisé pour
imprimer les fichiers énumérés dans l'objet AppEvents. Le troisième TextButton s'appelle Quit
et est utilisé pour quitter le programme. Le quatrième TextButton s'appelle PrintSettings et sert à
modifier les préférences graphiques de l'imprimante. Chacun de ces quatre boutons possède un script
d'événement OnRelease qui s'exécute lorsque le bouton est sélectionné.
Le script OnRelease du bouton View attribue la chaîne "View" à la variable nommée "Command", déplace
le curseur au début du document actuel (AppEventList), puis va à la carte "Picture".
Le script OnRelease pour le bouton Print est exactement le même, sauf que la variable "Command"
est assimilée à la chaîne "Print". Le script du bouton Quit exécute simplement la commande "Quit".
Le script pour le bouton PrintSettings exécute la commande DOS de CanDo avec la chaîne "SYS:Prefs/PrinterGfx"
comme argument. Ceci indique à CanDo d'exécuter le programme nommé "PrinterGfx" dans le répertoire
SYS:Prefs. Ce programme est inclus dans AmigaOS. Il permet à l'utilisateur de modifier divers paramètres
graphiques pour l'imprimante sélectionnée.
La carte Picture
La carte Picture peut être initialisée au moment de la conception à n'importe quelle résolution, car elle
sera modifiée en fonction de la résolution des images affichées. La fenêtre/éditeur doit être utilisée
pour désactiver tous les objets disponibles via le bouton "Objets" de la section "Attributs". Ces objets
peuvent interférer avec l'affichage des fichiers image.
Lorsque vous appuyez sur le bouton "View" ou "Print" de la carte WBInterface, son script d'événement
OnRelease s'active. Chaque script active la carte Picture après avoir attribué une valeur à la variable
"Command" et déplacé le curseur en haut du document "AppEventList". Lorsque la carte Picture est activée,
son script AfterAttachment s'exécute après l'affichage de la carte.
En suivant le script AfterAttachment du listing 1, la première chose qui se produit est que la variable
"TheLine" est comparée à une chaîne nulle. TheLine est la chaîne de caractères de la ligne actuelle du
document en cours. Si cette chaîne n'est pas nulle, ce qui signifie qu'au moins un fichier a été glissé
sur la carte WBInterface, la commande "ShowPicture" est exécutée avec "TheLine" comme argument. La commande
"ShowPicture" charge le fichier spécifié par son argument et l'associe à la carte courante, Picture.
Peu importe que le fichier contienne une image d'une résolution ou d'une profondeur différente de celle
de la carte Picture, CanDo modifiera automatiquement la résolution de la carte pour l'adapter au fichier.
La commande "ScreenTo FRONT" affiche alors l'image.
Ensuite, le script détermine sur quel bouton l'utilisateur a appuyé en regardant le contenu de la variable
"Command". Si cette variable est égale à "View", le script marque une pause de cinq secondes, sinon
(la seule alternative est "Print") la commande PrintWindow est exécutée. Cette commande imprime la fenêtre
actuelle sur l'imprimante sélectionnée par les Préférences en utilisant les paramètres graphiques en cours.
Après la pause ou l'impression, le curseur du document actuel est déplacé d'une ligne vers le bas, ce qui
le place sur le nom de fichier suivant dans la liste, et le script est quitté.
Une fois que le script AfterAttachment a terminé son exécution, le seul et unique objet de la carte Picture
est activé. Cet objet est un minuteur réglé pour se déclencher au bout de zéro seconde. Par conséquent, son
script "Occurred" s'exécute immédiatement. Ce script vérifie si TheLine est nulle. Si c'est le cas, il n'y
a plus de fichiers dans la liste à afficher ou à imprimer, et le programme passe à la carte WBInterface
pour attendre d'autres entrées de l'utilisateur. Si TheLine n'est pas nulle, la carte Picture est à nouveau
activée, ce qui entraîne la ré-exécution de son script AfterAttachment. L'objet Timer, nommé "Timer_1",
doit être utilisé car la commande "GotoCard" ne peut pas être lancée à partir d'un script AfterAttachment.
Certains d'entre vous se demandent peut-être pourquoi je n'ai pas simplement transmis la liste des noms de
fichiers du script OnAppEvent à la carte Picture en utilisant "Arg1" comme argument, puis en créant une
boucle dans le script AfterAttachment pour afficher chaque image tour à tour. Bonne idée ! J'ai essayé.
Cela ne fonctionne pas. La première image s'affiche bien, mais lorsqu'une image qui n'a pas la même résolution
que la première est rencontrée, elle ne s'affiche pas correctement. Elle s'affiche en utilisant la résolution
de la première image. Ainsi, si la première image est à haute résolution et entrelacée, une image suivante
à haute résolution et non entrelacée sera écrasée verticalement. Ce bogue a été vérifié par une personne du
service technique d'INOVAtronics. Ils prévoient de corriger ce problème dans une prochaine version du logiciel.
Comme solution provisoire, la carte Picture doit être activée entre chaque image. Cette réinitialisation permet
de modifier la résolution de la carte via la commande "ShowPicture".
La dernière ligne droite
Eh bien, c'était court et agréable. J'aime les programmes qui sont utiles mais dont le développement ne
demande pas trop d'efforts.
|