AtarimaniaAtarimania

Atari ST - SHIFT Computer - 1993

Interface

Interface — screenshot 1
1 / 6
Genre
Programming - Aids / Routines / Tools
Year
1993
Language
[unknown]
Publisher
SHIFT Computer
Controls
Mouse / Keyboard
Distributor
Resolution
Medium / High / VGA
Developer
[n/a]
ST Type
ST, STe, TT, Falcon030 / 0.5MB
Licensed from
Programmer(s)
Meisiek, Olaf
Country
France
MIDI
Software
French
Version
2.21
Box/Instructions
French
Number of Disks
1 / Double Sided
License
Commercial
Dump
Download
Serial
Dump format
MSA
Protection

OTHER VERSIONS WITH THE SAME TITLE (1)

INSTRUCTIONS

1 Introduction

 1.1 Copie de sécurité
  
Avant de démarrer Interface, nous vous conseillons vivement de sauvegarder les
disquettes en faisant une copie de sauvegarde. Le programme n'est pas protégé,
vous pouvez donc effectuer aisément les copies, même sur votre disque dur.

 1.2 Configuration requise
  
Interface fonctionne sur tous les ordinateurs Atari ST/TT/Falcon avec au moins 1
Mo de RAM.
Interface a été programmé "proprement", il s'adapte donc à toutes les cartes
graphiques sur toutes les résolutions. Toutefois, si il y a moins de 80
caractères par ligne, certaines boites de dialogue ne s'afficheront pas
entièrement.

 1.3 Qu'est-ce qu'un Ressource ?
  
Les ressources permettent à tous les programmes "GEM" d'afficher des fenêtres,
des boites de dialogues, des menus déroulants et autres données qui ne se
trouvent pas dans le programme principal mais dans un fichier séparé. Cette
distinction offre des avantages :
- un fichier ressource peut être créé sans aucune connaissance de programmation.
- un fichier ressource peut être modifié sans avoir besoin de recompiler le
programme principal
- un programme peut ainsi être développé en plusieurs langues sans avoir à
changer le code source. Il suffit d'aoir un fichier ressource par langue.
Les ressources sont constitués d'objets qui peuvent être soit des menus soit des
boites. Dans chaque menu ou boite se trouvent d'autres objets qui permettent
ainsi des combinaisons complexes donnant l'allure de menus Popup ou de boites de
dialogues en tout genre.
Pour créer un menu ou un boite de dialogue il faut d'abord créer un "Arbre". Un
"Arbre" est appelé de la sorte, en référence au vrai arbre, qui contient
plusieurs branches (ou objets). Un fichier ressource est composé de plusieurs
arbres qui sont eux-mêmes composés de plusieurs objets. Chaque objet peut à son
tour regrouper d'autres objets (on utilisera dans ce cas, la relation
"père-fils".

 1.4 L'écran d'Interface
  
Lorsque vous aurez démarré le programme, vous aurez alors les éléments suivants
à l'écran : 
- la ligne de menus en haut
- le bureau qui sert à ranger les icônes
- les unités de disque disponibles qui, lorsque vous double-cliquez dessus,
ouvrent le répertoire correspondant et affiche, le cas échéant, les répertoires
et les fichiers ressource qui peuvent être ouverts.
- la corbeille qui permet d'effacer des objets du ressource.
- les icônes représentant les fichiers ressource déjà chargé.
- l'affectation des touches de fonction grace à la barre se trouvant en bas de
l'écran
- et enfin, la mémoire disponible.

 1.5 Les fonctions souris
  
Clic   Sélection d'un objet se trouvant sous le pointeur
    (un objet sélectionné sera inversé)
Shift+Clic  Sélection de plusieurs objets "manuellement"
    (objets choisis un à un)
Control+Clic    Sélection du père de l'objet
Double Clic  Ouverture d'un fichier, d'un arbre, ou d'un objet en vue de
    l'édition
Déplacement  Permet de déplacer un objet, arbre, ou fichier dans un autre
    endroit
Shift+Déplace Copie de l'objet ou de l'arbre sélectionné
Ctrl+Shft+Dépl  Copie le père d'un objet avec tous ses enfants
Alt+Déplace  Trace un cadre afin de sélectionner tous les objets qui se
    trouvent dans l'enceinte de ce cadre.

Les combinaisons suivantes peuvent aussi agir sur les fenêtres se trouvant en
arrière plan, il faut alors utiliser le clic droit.

 1.6 Les Combinaisons de touches des fenêtres
  
Le contenu d'une fenêtre d'Interface peut être déplace à la souris en cliquant
sur les acenceurs mais aussi au clavier : La touche Shift associée à un clic,
permet de passer directement à la page suivante. Les touches ClrHome et
Shift-ClrHome permettent de passer une page supérieure et une page inférieure.

 1.7 Fonctions supplémentaires dans les boîtes de dialogue

Le GEM permet, lorsque les boites de dialogue sont bien construites, d'avoir
accès à certaines touches du clavier. Interface utilise ces touches et en ajoute
quelques autres :
Shift + <-  Curseur au début de la ligne
Shift + ->  Curseur à la fin de la ligne
Cntrl + <-  Curseur 1 mot à gauche
Cntrl + ->  Curseur 1 mot à droite
Insert   Permet d'insérer des caractères spéciaux dans le texte.
Alternate  Permet si un bouton contient une lettre soulignée, d'acceder à
    ce bouton en appuyant directement sur Alternate+lettre.

Si vous déplacez une boîte de dialogue avec la souris en maintenant SHIFT,
CONTROL ou ALT, seul le cadre de la boîte sera déplacé. Ainsi il est
possible de voir au travers de la boîte.

Tous les boutons "ANNULER" des boîtes de dialogue ou d'alerte peuvent être
activés par la touche UNDO.

Dans toutes les boîtes de dialogue, le clipboard GEM est utilisé par les
fonctions CONTROL-X/C/V. Ces fonctions s'appliquent toujours au champ de
texte sur lequel se trouve le curseur.

 1.8 Agrandissement et réduction des objets

Les objets peuvent être agrandis dans les 4 directions. L'objet doit
toujours être saisi par le coin inférieur droit, mais il est possible de
dépasser son côté gauche ou haut. Si l'objet ainsi agrandi recouvre un autre
objet, alors Interface demandera si ce dernier doit maintenant être un fils du
premier.

 1.9 Effacement de fichiers, arbres et objets
  
Pour effacer un fichier, un arbre ou un objet, il suffit de déplacer celui-ci
sur la corbeille. L'effacement d'arbres et de fichiers est irréversible, alors
que celui d'objets peut être annulé en pressant la touche UNDO.

 1.10 gestion de la mémoire d'Interface

Capacité maximale :
     Fichiers ressource :          15
     Arbres d'une ressource :   32767
     Objets dans un arbre :      1024
     Noms d'objets dans 1 RSC : 32767 * 1024

Capacité maximale de la structure d'une ressource :
     OBJECT : 5120
     TEDINFO: 5120
     ICONBLK: 5120
     BITBLK : 5120
     USERBLK: 5120

Longueur maximale :
     Toutes chaînes : 160 Ko
     Toutes images :  640 Ko

2. Premiers pas

Dans ce chapitre, nous allons vous familiariser avec l'utilisation d'Interface,
à travers un exemple de fichier ressource.

 2.1 Chargement d'Interface
  
Démarrez le programme INTRFACE.PRG qui se trouve sur la disquette ou sur votre
disque dur.

 2.2 Création d'un fichier ressource
  
Dans le menu Fichier, vous trouverez l'option "Nouveau". S'incrit alors sur le
bureau, l'icône "SANS_NOM" et une fenêtre vide dans laquelle seront placé, par
la suite, les arbres.

 2.3 Création d'un menu
  
  2.3.1 Création d'un arbre Menu
    
Dans le menu Editer, vous trouverez l'option "Arbre". Apparait alors une fenêtre
avec les différents arbres disponibles.  Déplacez alors l'arbre "Menu" dans la
fenêtre vide. S'ouvre alors un formulaire où vous devez indiquer le nom de ce
nouvel arbre. Nommez-le "MON_MENU" et cliquez sur OK ou appuyez sur RETURN.

  2.3.2 Ouverture de l'arbre Menu
    
Dans la fenêtre vide se trouve maintenant une icône portant le nom "MON_MENU".
Afin d'éditer ce menu, il faut double-cliquer sur l'icône. Apparait alors une
fenêtre  dont le titre est "MON_MENU", dans laquelle sera réalisé le menu. Dans
cette fenêtre vous apercevez déjà 2 entrées "Bureau" et "Fichier".

  2.3.3 Insertion d'un nouveau titre de menu
    
Dans le menu Editer, vous trouverez l'option "Objets". Apparait alors une
fenêtre avec les différents objets disponibles. Déplacez l'objet "STRING"
vers la droite de "Fichier" dans la fenêtre Menu. si tout est correctement
réalisé, il devrait y avoir un nouveau titre de menu "STRING" après le menu
"Fichier".
Double-cliquez dans "STRING". Apparait alors une boite de dialogue où vous devez
déplacer le curseur avec les touches de flèches, jusqu'à "STRING". Effacez le
texte en appuyant sur ESC et tapez à la place "Options".
Déplacez ensuite le curseur sur le champ "NOM:" et inscrivez "MOPTIONS".
Pour quitter ce formulaire, cliquez sur OK ou appuyez sur RETURN.

  2.3.4 Insertion d'une nouvelle ligne de menu
    
Pour inscrire une nouvelle ligne de menu dans "Options", il faut d'abord cliquer
une fois dessus, afin de mettre ce titre en noir et de faire apparaitre un petit
rectangle blanc. Déplacez ensuite à nouveau, depuis la fenêtre "Objets" l'objet
"STRING" vers le rectangle blanc. La taille de cette ligne sera fixée
ultérieurement par Interface (et automatiquement !).
Il faut maintenant insérer d'autres lignes dans le menu "Fichier". Lorsque vous
cliquerez dessus, vous verrez qu'il existe déjà une ligne "Fin     ^Q". Copiez
cette ligne 3 fois en utilisant la touche Shift.

  2.3.5 Modification d'une nouvelle entrée
    
Il faut maintenant modifier les entrées afin qu'elles correspondent réellement à
notre besoin : double-cliquez sur la première ligne et remplacer "STRING" par
"Ouvrir...     ^O". Les trois petits points se trouvant derrière le mot indique
à l'utilisateur que cette fonction appelle une autre boite de dialogue. Comme
tout bon programme GEM, les fonctions principales doivent être accessibles au
clavier. C'est pourquoi nous avons indiqué "^O" après les 3 petits points.
L'accent circonflexe étant placé pour Control.
Le nombre d'espaces libres entre le nom et le raccourci clavier est défini
automatiquement (en option) par Interface.
Déplacez ensuite le curseur sur le champ "NOM:" et inscrivez "MOPEN".
Pour quitter ce formulaire, cliquez sur OK ou appuyez sur RETURN.
Inscrivez ensuite pour la deuxième ligne "Fermer    ^U" et, dans le camp "NOM:"
inscrivez "MCLOSE". Afin de bien séparer les 2 premières entrées de la dernière,
nous allons les séparer par des traits "-". Editez donc la 3ème ligne et tapez
les traits correspondants. Avant de cliquer sur OK, activez la case "Disabled",
afin que par la suite, cette zone étant désactivée, personne ne puisse cliquer
dessus.
Modifiez ensuite la première ligne du menu "Options" en inscrivant :
"Paramètres...    C"

  2.3.6 Test de l'arbre Menu
    
Sélectionnez dans le menu "Editer" l'option "Tester l'arbre" ou appuyez sur F9
afin de tester le nouveau menu.
Ue nouvelle fenêtre s'ouvre et affiche, dans la ligne supérieure, la ligne de
menu. Cliquez maintenant sur l'option "Paramètres" du menu "Options". Aucune
boite d'alerte ne doit apparaitre parce que vous n'avez donné aucun nom à cet
objet.
Il y a deux façons de quitter le test : cliquez sur une ligne de menu et,
lorsque la boite de dialogue apparait, cliquez sur "Abandon" ou, fermez la
fenêtre.

Remarque : les raccourcis clavier fonctionnent aussi dans la fenêtre de test, ce
qui signifie que les raccourcis définis lors de la création de menus sont
directement exploitables et vérifiables ici. Par contre, dans un programme, de
tels raccourcis, doivent être gérés manuellement par le programmeur.

 2.4 Création d'un formulaire
  
  2.4.1 Création d'un arbre Formulaire
    
Ouvrez, comme décrit dans le § 2.3.1, le menu des types d'arbre et déplacez
l'icône "Formular" vers la fenêtre dans laquelle se trouve déjà l'icône
"MON_MENU" et donnez lui le nom "PLANETE".

  2.4.2 Ouverture de l'arbre
    
Il suffit de cliquer sur l'arbre "PLANETE" pour l'ouvrir et voir une fenêtre
vide apparaitre.

  2.4.3 Insertion d'un objet
 
Appelez la boite d'objets (par le menu ou en appuyant sur la touche O).
Déplacez l'objet "STRING" vers la fenêtre de même qu'un objet "IBOX".
Positionnez IBOX juste à droite de STRING. Agrandissez l'IBOX de façon qu'il
arrive en bas à droite de la fenêtre. Double cliquez sur STRING et
remplacez "STRING" par "Planète :" et cliquez sur OK. Si la chaine "Planète :"
est trop proche de IBOX, alors déplacez IBOX sur la droite.

  2.4.4 Modification d'un objet BOUTON
  
Double-cliquez sur l'objet IBOX et remplacez le texte "BUTTON" par "Vénus",
donnez ensuite comme nom à ce bouton "PLVENUS". Cliquez ensuite sur "Selectable"
et "Radiobutton" afin qu'ls soient sélectionnés.
"Selectable" signifie que le bouton "Vénus" sera inversé si on clique dessus.
"Radiobutton" signifie un bouton, qui ressemble presque à un bouton d'une vieille
radio, qui a les propriétés suivantes : 1 seul bouton Radio peut être activé au
niveau de l'objet père à la fois, si on clique sur un bouton, celui qui était au
préalable sélectionné, se désélectionne.

  2.4.5 Création de boutons supplémentaires
  
Nous avons besoin dans cette boite d'avoir 2 autres boutons du même style : il
faut donc copier le bouton "Vénus" 2 fois. Déplacez donc le bouton "Vénus" en
tenant la touche Shift appuyée et placez ce 2ème bouton à droite du premier.
Répétez l'opération pour le troisième bouton. Renommez ensuite le 2ème bouton en
"Terre" avec un nom "PLTERRE" et le troisième en "Mars" avec un nom "PLMARS".
Puisque dans un groupe de bouton, il en faut toujours un qui soit sélectionné,
double-cliquez sur "Terre" et activé l'option "Selected".

  2.4.6 Modification de l'IBOX.
  
D'abord quelques explications concernant l'obligation de regrouper les boutons :
Lorsqu'une boite de dialogue contient plus d'un groupe de boutons radio, chaque
groupe doit alors être distinct d'un autre grace à son objet père, sans quoi
tous les boutons appartiendraient au même groupe.
Dans notre exemple, nous n'utilisons qu'un seul groupe de boutons radio, on peut
donc se passer d'utiliser un objet IBOX. 
Adaptez ensuite la taille du cadre (IBOX) de façon à englober les 3 boutons
radio. Double-cliquez sur le cadre IBOX et dans la partie droite du formulaire
qui apparait, modifiez la taille du cadre en choisissant "Sans cadre" de façon à
rendre cette boite invisible.

  2.4.7 Création des boutons "Exit"
  
Les boutons "Exit" de sortie permettent de quitter le formulaire en cours. Les
formulaires ont en général 2 boutons de sortie "Ok" et "Abandon". Appelez donc la
boite des objets à l'aide de la touche "O" et prenez un objet "Button" afin de
le placer dans la fenêtre. Copiez ensuite cet objet à côté à l'aide de la touche
Shift. Ouvrez le bouton et renommez le en "OK" avec un nom "PLOK". Affectez-le
des attributs "Selectable", "Exit" et "Default".
"Exit" permet de quitter la fonction AES form_do() dans un programme.
"Default" signifie que la touche RETURN permet d'activer ce bouton.
Ouvrez ensuite le premier bouton et renommez le en "Abandon" avec le nom
"PLABANDON" et affectez-le des attributs "Selectable" et "Exit".

  2.4.8 Tri
  
Le GEM affiche les objets d'une boite de dialogue dans l'ordre dans lequel vous
les avez créé. Cela n'est pas très important dans ce cas mais, dans le cas de
la programmation il est important de connaitre le numéro d'ordre exact de chaque
objet.
Toutes les couches de notre boite de dialogue doivent être triées : il y a en a
2 : la première représente le grand cadre (l'objet racine), la 2ème représente
la boite IBOX contenant les boutons radio. Ce qui signifie que vous pouvez trier
les 2 couches de façons indépendantes : la première de haute en bas et la
deuxième de droite à gauche (par exemple).
Cliquez sur l'objet racine (le grand cadre) une fois et cliquez ensuite sur
"Trier". Une boite de dialogue apparait et vous offre 2 méthodes de tri.
Choisissez la méthode de bas en haut et cliquez sur OK.
recommencez la même opération avec l'objet IBOX invisible et choisissez la
méthode de gauche à droite.

  2.4.9 Test du formulaire
  
La boite de dialogue est maintenant terminée. Pour la tester, il suffit
d'utiliser la touche F9. La boite de dialogue est maintenant affichée à l'écran
comme si vous étiez dans un programme autre. Cliquez sur les planètes.
Théoriquement, le passage à une autre planète devrait désélectionner la planète
précédente. Pressez RETURN, une boite de dialogue devrait apparaitre indiquant
que le bouton OK a été pressé et qu'il porte le numéro x.

  2.4.10 Fremeture de la boite de dialogue
 
Cliquez sur le coin haut-gauche de façon à refermer la fenêtre.

 2.5 Sauvegarde du fichier ressource
 
Cliquez sur "Sauver comme" du menu "Fichier". apparait alors un sélecteur de
fichiers vous permettant d'indiquer le chemin et le nom de votre fichier
ressource. Une fois sauvé, vous devriez obtenir les fichiers suivants :

TEST.RSC : le fichier ressource lui-même.
TEST.HRD : le fichier contenant le nom de tous les objets permettant à Interface
      de trier le ressource lors de modifications.
TEST.H  : le fichier contenant le nom et le numéro de tous les objets
      fichier au format ASCII, nécessaire pour le C.
      
Interface permet de sauvegarder le ressource au format C, Pascal, Modula, Basic
Omikron et Basic GFA.

3. Description des fonctions

 3.1 Les menus
  
  3.1.1 Le menu "Fichier"

   3.1.1.1 Ligne "Nouveau"
   
Cette fonction permet de créer un nouveau fichier ressource. Ce fichier ne
portera pas de nom (SANS_NOM) et vous devrez, lors de la première sauvegarde,
choisir l'option "Sauver comme..." de ce même menu.

   3.1.1.2 Ligne "Ouvrir"

Cette fonction permet d'ouvrir l'objet sélectionné (objet, arbre, icône...) si
aucun objet n'est sélectionné, alors il apparait un sélecteur de fichiers
permettant de charger un fichier ressource.

   3.1.1.3 Ligne "Fermer"
   
Cette fonction permet de fermer une fenêtre. 
    
   3.1.1.4 Ligne "Effacer

Cette fonction permet d'effacer un ressource de la mémoire.

   3.1.1.5 Ligne "Annuler modif."
   
Cette fonction permet d'annuler les modifications que vous avez apporté au
ressource depuis la dernière sauvegarde. ATTENTION : vérifiez bien que la
dernière sauvegarde soit réellement ce que vous vouliez récupérer, car vous
perdrez définitivement toutes les modifications apportées depuis la sauvegarde.

   3.1.1.6 Ligne "Sauver"

Si une icône  correspondant à un fichier ressource est sélectionnée sur le
bureau, alors il sera sauvé. Sinon, le fichier sauvé sera celui qui a la fenêtre
active.
Les fichiers d'en-tête ne seront sauvés que si des labels ont été modifiés ou
effacés, ou si la hiérarchie a été modifiée, ou si la boîte d'info sur le
ressource a été quittée par "OK".

   3.1.1.7 Ligne "Sauver comme..."
   
Cette fonction permet de changer le nom d'un fichier ressource lors de la
sauvegarde. L'icône correspondant à ce fichier sera ainsi renommée.

   3.1.1.8 Ligne "Info..."

Si une icône est sélectionnée, une boite de dialogue affichera des informations
à propos de cette icône. Si aucune ne l'est, alors l'information portera sur la
fenêtre active. Si aucune fenêtre n'est ouverte non plus, alors des
renseignements apparaitront sur Interface. Certaines boites de dialogue
permettent de modifier des données :

    3.1.1.8.1 Information sur un fichier chargé

Les modifications peuvent porter sur :
- le nom du fichier
- le format d'importation du fichier : DEF, DFN, RSD ou HRD (voir § 6)
- le language de programmation
- le type de processeur (GEM MS-DOS ou GEM Atari)

Deux boutons ont été ajoutés :

"statique" : Lorsque le ressource est définit pour le C et avec une sortie en RSH
et que ce bouton (Static) est activé, alors sur chaque variable sera précédée de
"static". Ainsi, toutes les variables du ressource sont définies en mode local
et ont peut donc intégrer plusieurs ressource en C dans le même programme sans
qu'il y ait de conflit de noms.

"Format long" : quand ce bouton est activé, le ressource sera sauvé sous un
format appelé "long", permettant ainsi d'utiliser des ressources de grande
capacité. Le format du fichier RSC reste le même mais Interface change le format
de chaque variable de "WORD" en "LONG" afin de pouvoir utiliser des RSC de plus
de 64 Ko.

Des sources en C sont livrés dans cette disquette qui expliquent plus clairement
ces deux points.

   3.1.1.8.2 Information sur un arbre objet
   
Les modifications peuvent porter sur :
- le nom de l'arbre
- le type d'arbre

Ce qui permet de remplacer des boites d'alerte et chaines libres (Free String)
et vice-versa, des Menus en formulaires et vice-versa.
Le dernier remplacement doit être utilisé avec précaution : il est irréversible.

   3.1.1.10 Ligne "Aide..."

Cette fonction permet d'afficher des pages d'aide sur les touches Control, Shift
et Alternate.
   
  3.1.2 Le menu "Edition"

   3.1.2.2 Ligne "Objets...."

Une boite de dialogue apparait, permettant de choisir tous les types d'objets
utilisables dans un fichier ressource. Pour utiliser l'un quelconque de ces
objets, il suffit de le déplacer vers la fenêtre où l'on souhaite l'insérer.
Dans les arbres Menu, seuls les objets STRING sont acceptés.
Le type d'objet "G_USERDEF" est maintenant géré par Interface directement.
Interface crée une structure OBJET dont les pointeurs ob_spec portent sur une
structure USERBLK. Pour chacun de ces objets, une structure USERBLK sera
affectée dans le ressource.
"ub_parm" peut être inséré directement dans Interface. "ub_code" contient un
pointeur null afin que, lorsque l'on charge un tel ressource, on doive en
premier dans "ub_code" insérer un pointeur de la routine spéciale de dessin pour
tous les objets Userdef. Sinon, l'ordinateur bombera lors de l'affichage de tels
objets.
On peut maintenant ajouter de tels objets depuis la boîte d'objets d'Interface.
Voir point 6.1 "La boîte d'objets".
Si la boîte d'objets est en fenêtre, on peut sous MultiTos y saisir des
objets même si elle est en fond. L'utilisation du bouton droit de la
souris n'est plus nécessaire.

   3.1.2.3 Ligne "Arbres..."

Cette option permet d'afficher tous les arbres accessibles dans un fichier
ressource :
- menu : pour les menus déroulants
- boite de dialogue : pour toutes les fenêtres de saisies et d'informations
- boite d'alerte : pour les messages importants
- chaines/images libres : pour les images et les textes utilisés uniquement par
la programmation.
Si la boîte d'arbres est dans une fenêtre, on peut sous MultiTos y saisir
des objets même si elle est en fond. L'utilisation du bouton droit de la
souris n'est plus nécessaire.

   3.1.2.4 Ligne "Couper"
   
Cette option permet d'enlever un objet d'un arbre de le placer dans le
presse-papier.

   3.1.2.5 Ligne "Copier"
   
Cette option copie l'objet dans le presse-papier sans l'enlever de l'arbre
d'origine.

   3.1.2.6 Ligne "Coller"
   
Cette option insère l'objet qui se trouve dans le presse-papier sur la fenêtre
active.

   3.1.2.7 Ligne "Définir drapeaux"
   
Si, dans un formulaire, plusieurs objets sont sélectionnés, on peut alors
définir, pour tous ces objets, des drapeaux (flags) communs. Une boite de
dialogue apparait et permet de définir les drapeaux et les statuts : 
- une case vide indique que cette option ne sera pas activée
- une case cochée indique que cette option sera activée
- une case grisée indique que cette option ne sera pas modifiée.

   3.1.2.8 Ligne "Chercher..."

On peut maintenant chercher non seulement les labels, mais aussi du texte
quelconque. La recherche de texte s'effectue sur le Ressource complet. Les
minuscules et majuscules ne sont pas différenciées.

Dans la recherche, les caractères Jokers suivants sont acceptés :

*      : un nombre quelconque de caractères
?      : un quelconque caractère
[a-z]  : un caractère compris entre le 1er et le 2ème.

   3.1.2.9 Ligne "Tester l'arbre"

Cette option permet de tester l'arbre actuellement édité.
Pour qu'un dialogue soit testé, il faut qu'il contienne un objet éditable
qui ne soit pas du type FBoxText ou Ftext, sinon l'AES répondrait qu'il ne
le comprend pas.
Le texte est maintenant possible si un programme EXTOBFIX se trouve dans le
même répertoire qu'Interface.
Si un arbre Menu doit être testé et que la ligne "Trier les raccourcis des
menus" est activée, Interface émettra un bip si 2 raccourcis contiennent la
même touche.

   3.1.2.7 Ligne "Comparaison de Ressource"

Les fichiers Ressources peuvent être comparés entre eux. Cela permet de
déceler des erreurs plus rapidement. Pour utiliser cette fonction, il faut
sélectionner deux fichiers Ressources et appeler la fonction. L'option est
également disponible quand deux Ressources ont été chargés seulement ou
quand les fenêtres d'arbres de deux Ressources sont ouvertes.
Si un arbre d'un des Ressources est sélectionné ou ouvert, la comparaison
peut s'effectuer à partir du début ou bien à partir de cet arbre.

  3.1.3 Le menu "Fenêtre"
  
Dans ce menu sont affichés et sélectionnables les 10 premiers fichiers
Ressource chargés. Les fichiers Ressource de 11 à 15 ne sont accessibles
que par le bureau d'Interface.

    3.1.4 Le menu "Objet"

Tous les articles de ce menu correspondent à ceux du pop-up d'objet
(voir 3.3.2.5) et permettent d'activer les fonctions quand le pop-up est
désactivé (voir 3.1.4.1.12).

  3.1.4 Le menu "Options"

   3.1.4.1 Ligne "Configuration..."
      
    3.1.4.1.1 L'option "Dans Fenêtre :"

Les différents objets peuvent être représentés en fenêtres :
Barre des menus, dialogues et boîtes d'objets, pour compatibilité avec
MultiTos. Les boîtes peuvent ne plus être refermées et rester sur le
bureau où elles pourront être actives si nécessaire.

    3.1.4.1.2 L'option "Sélecteur de fichiers standard"

Interface possède son propre sélecteur de fichiers qui offre bien plus de
possibilités que celui du GEM. Mais, vous avez le choix de l'utiliser ou non.

    3.1.4.1.3 L'option "Grow-Shrinkbox
    
Lors de l'ouverture et de la fermeture d'une fenêtre, il y a toujours un
rectangle qui s'agrandit ou qui se rétrécit. Pour des raisons de rapidité
d'affichage, on peut désactiver cette option.

    3.1.4.1.4 L'option "Copier avec les noms d'objet"
    
Cette option permet, si elle est activée, lors de copie d'objets, de copier
aussi le nom de chaque objet en même temps. Sachant que si ce nom d'objet existe
déjà dans la destination, alors Interface vous le signalera.

    3.1.4.1.5 L'option "Pointeur d'objet externe"
    
Cette option permet, si un programme du nom de "EXTOBFIX.PRG" se trouve dans le
même répertoire qu'Interface, et que vous utilisiez des types d'objets étendus
dans un arbre (extended ob_types), de faire afficher réellement les objets
étendus. Toutefois, vous avez la possibilité de remplacer cette fonction de test
pour les formulaires et les boites d'alerte et désactivant cette option.

    3.1.4.1.6 L'option "Aligner les raccourcis clavier"

Cette option permet d'aligner de façon automatique les raccourcis clavier dans
les menus déroulants.

    3.1.4.1.7 L'option "Vérifier l'alignement des lignes de menu"

Le GEM définit qu'il faut 2 espaces avant chaque ligne de menu et un espace à la
fin. Interface peut automatiquement gérer ce compte d'espaces fixes en activant
l'option.

    3.1.4.1.8 L'option "Montrer les données en point/caractère"

Cette option permet d'afficher une ligne d'informations en haut d'une fenêtre
d'arbre. Cette ligne contient le nom de l'objet, son numéro d'ordre, sa largeur
et sa hauteur. Les largeur et hauteur peuvent être affichées en points ou en
caractères.
Les coordonnées sont maintenant affichées dans les arbres de menus, de même
que le nom de l'objet.


    3.1.4.1.9 L'option "Sizebox"

Dans le cas où le coin de modification de taille d'un objet est très dur à
trouver, il peut être rendu visible par cette option.

    3.1.4.1.10 L'option "Popup sur objet"

Cette option désactive l'ouverture du pop-up lors du clic sur un objet.
Toutes les fonctions du pop-up restent disponibles dans le menu "Objet" et
cela permet de rendre la sélection de l'objet plus facile pour diverses
opérations (copie par exemple).
Quand le pop-up est actif, la sélection reste toutefois très simple avec
un SHIFT clic.

    3.1.4.1.11 L'option "Préfixe label"

Si cette option est active, Interface ajoutera à chaque nouveau label un
certain nombre de caractères du nom de l'arbre. Un trait d'union peut être
paramétré.
Exemple : vous voulez donner le nom "OK" à un nouvel objet de l'arbre
"PARAMETRE" ; Le Label-Prefix est fixé à 3 caractères et le trait d'union
est "_". Le nom de l'objet deviendra "PAR_OK".

    3.1.4.1.12 L'option "Sauvegarde automatique des paramètres"

Tous les paramètres sont automatiquement sauvés :
- La position de toutes les icônes
- La position des boîtes d'arbres ou d'objets
- La taille, la position et l'ascenseur des fenêtres
- Le chemin de tous les Ressources chargés
- La position de chaque fenêtre d'arbre ouverte.
Toutes les coordonnées sont adaptées à un éventuel changement de
résolution afin que tous les objets puissent être atteints.

   3.1.4.2 Ligne "Grille"

Lors du positionnement de chaqueobjet dans la fenêtre, il est possible de se
faire aider d'une grille magnétique afin de mieux alignes les objets les uns
avec les autres. L'alignement peut se faire point par point, 1/2 caratère par
1/2 caractère ou caractère par caractère.
La grille XY pour la position des objets est maintenant fixée pour chaque
fichier Ressource. Si le format HRD est utilisé, la grille courante sera
sauvée avec le Ressource.

   3.1.4.3 Ligne "Utiliser grille"

Cette option permet de basculer rapidement entre la grille du Ressource et
une grille par point.

   3.1.4.4 Ligne "Adapter la taille"
   
Si le texte d'un objet STRING est changé en plus court ou plus long, il est
souvent souhaitable que la taille de l'objet lui-même soit aussi changée. Cette
option activée adapte la taille de l'objet en fonction de la taille du texte. La
désactiver permet de conserver obligatoirement la taille originale.

   3.1.4.5 Ligne "Numéro d'objet fixe"
      
Cette option permet de pour chaque objet d'un arbre, de définir si sa
position dans cet arbre est fixe ou non. Ainsi, le déplacement d'un objet
peut ou ne peut pas modifier son ordre dans l'arbre lui-même. L'activation
de ce paramètre permet surtout de garder le ressource intact pour les
programmes que l'on doit traduire ou modifier par exemple.

 3.2 Le bureau

Un truc pour tous ceux qui veulent désactiver le bureau d'Interface :
mettre le bureau en fenêtre (mais pas la barre des menus), sauver les
paramètres, relancer Interface, fermer la fenêtre du bureau, sauver à
nouveau les paramètres. Maintenant Interface se chargera sans bureau. Pour
retrouver la fenêtre du bureau, il suffit d'ouvrir la boîte de Copyright
ou bien de ne plus mettre le bureau en fenêtre, de sauver les paramètres
et de relancer...

L'intérêt des manipulations de bureau dans une fenêtre aura bien entendu
du sens quand on travaille sous MultiTos. Sinon...

    3.2.1 Les touches de fonction F1 à F10

F8: Bascule entre la grille installée et la grille par point (1*1).
Correspond à la ligne "Utiliser grille" (Voir 3.1.4.5).

    3.2.5 Le clipboard

Le clipboard d'Interface est utilisé pour les objets des formulaires et
des menus. Tirer l'objet dans le clipboard pour le copier, puis cliquez
sur le clipboard pour obtenir le fantome de l'objet; tirez le fantome
sur une fenêtre de formulaire ou de menu. Si le clipboard doit être
déplacé, il doit d'abord être sélectionné par un clic. S'il n'est pas
sélectionné, c'est toujours son contenu qui sera déplacé.

Il va de soi que plusieurs objets peuvent être copiés d'un seul coup dans
le clipboard. Si un objet est mis dans le clipboard avec SHIFT enfoncé, il
s'agira d'une copie. Dans tous les autres cas, il s'agira d'un déplacement
vers le clipboard (Couper).

Le clipboard décrit ici est interne à Interface, c'est-à-dire qu'il n'a
rien à voir avec un quelconque dossier Clipboard installé par ailleurs.
Par contre les opérations de clipboard sur les textes des boîtes de
dialogue se font avec le clipboard GEM standard. Dans tous les cas, toutes
ces fonctions sont disponibles par les articles "Couper", "Copier" et
"Coller" de la barre des menus, ainsi que par CONTROL X/C/V.

  3.3 Edition d'un arbre unique

Chaque formulaire ou menu a sa propre fenêtre ce qui permet d'éditer en
même temps plusieurs arbres.

    3.3.1 Edition des arbres de menu

Les raccourcis clavier seront, grâce à l'option correspondante des
paramètres, automatiquement alignés à droite. Toutefois il faut respecter
un certain nombre de règles :

- Le raccourci commence après le premier espace vide trouvé en partant de
  la droite

- Devant la touche doit figurer au moins un caractère de contrôle pour
  SHIFT, CONTROL ou ALT. Seuls les caractères spéciaux comme HELP, INSERT,
  etc. sont admis

- Après le caractère de contrôle ne doit se trouver qu'un seul caractère,
ou bien l'entrée complète d'un caractère spécial (INSERT)

Si ces dispositions sont respectées, les raccourcis seront organisés
suivant les règles suivantes :

- Devant chaque raccourci clavier il y aura au moins deux espaces

- Si, à la fin de l'article, se trouve "..." (Ex: "Ouvrir..."), il y aura
au moins un espace sur cette ligne avant le raccourci

Les caractères autorisés pour les caractères de contrôle se trouvent dans
le ressource d'Interface dans Free String "SHORTCUT". Les caractères
spéciaux autorisés se trouvent dans Free String "SH_KEYWORDS". Avant et
après chaque caractère spécial dans cette boîte doit se trouver un "/".

Ainsi tous les raccourcis seront facilement repérés par Interface. La
seule exception est un caractère unique devant lequel ne figure aucun
caractère de contrôle. Je l'ai intentionnellement laissée de côté car
Interface ne pourrait différencier un tel raccourci d'une entrée
comportant elle-même un espace suivi d'un caractère (Ex: "Image 1").

Les entrées de menu seront toujours complétées avec des espaces, qui
pourront être utilisés par les sous-menus sous MultiTos.

    3.3.2 Edition des formulaires

      3.3.2.2 Modifier les objets

Tous les Flags sont éditables. Chaque boîte d'édition a un bouton
"Flags étendus".

Dans chaque boîte on peut passer d'un objet à l'autre par le bouton
"Suivant".

Le bouton "HELP" ouvre une page d'aide expliquant les différents types
d'objets du fichier EXTOBFIX courant. Pour les dialogues BoxText, la page
d'aide correspondra à tous les objets valides de la structure TEDINFO.

        3.3.2.2.9 Masque
        
Dans un dialogue de BoxText, les signes valides pour les te_pvalid sont
"A"-"Z" et "a"-"z".

      3.3.2.3 Copier/Déplacer des objets

On peut, dans un déplacement, placer un objet sous un autre. L'objet
destination ne sera pas considéré comme un fils si, à la question "Doit-on
modifier la structure des objets ? Annuler/Non/Oui" il est répondu "Non".
Cette boîte d'alerte n'apparaît que si l'objet déplacé et l'objet
destination ont le même parent.

Le déplacement de plusieurs objets se fait comme précédemment, mais, à la
fin du déplacement, les objets restent encore sélectionnés, permettant
ainsi de redéplacer le groupe si nécessaire.

La boîte d'alerte "Doit-on copier l'objet sur lui-même ?" a disparu.
L'opération de copie ne se déclenche plus lorsqu'on déplace l'objet d'un
pixel.

      3.3.2.5 Fonctions supplémentaires dans le pop-up

        3.3.2.5.2 Trier

L'ordre de tri peut être inversé si nécessaire. Le tri peut aussi se faire
manuellement (il faut alors cliquer sur les objets les uns après les
autres). 

4 L'éditeur d'icônes

Dans la boîte de dialogue qui appelle l'éditeur, les icônes et les images
peuvent être réduites avec le bouton "Taille minimale", sans perdre de
données.

  4.1 Le menu
  
    4.1.1 Le menu "Fichier"
    
      4.1.1.1 "Extraire image"

Cet article a été séparé en deux pour une meilleure compréhension :
"Charger image" et "Extraire image". "Charger image" permet d'importer une
nouvelle image. "Extraire image" n'a pas été modifié.

    4.1.2 Le menu "Edition"

      4.1.2.4 Articles "Couper", "Copier" et "Coller"

L'éditeur d'icônes se sert du clipboard GEM. Toutes les icônes et images y
transitent sous le format ICO (IconEdi) et IMG.

      4.1.2.5 Ligne "Aperçu de l'icône"

Cette option active la vue générale de l'icône. Son état est conservé en
sauvant les paramètres.

   4.1.5.1 Ligne "Choisir résolution"
   
Cette option permet, le cas échéant, de choisir la résolution de l'icône
couleur.

      4.1.5.3 Ligne "Icône sélectionnée"
      
Cette option permet de voir la représentation de l'icône une fois qu'il
sera sélectionné dans un programme.

      4.1.5.4 Ligne "Supprimer sélection"
      
Cette option efface l'image actuellement chargée.

      4.1.5.5 Ligne "Adopter palette

La palette actuelle couleur sera adoptée dans le ressource.

Les icônes couleurs posent le problème qu'on ne peut garantir que tous les
utilisateurs auront la même palette sur leur ordinateur. Les 16 premières
couleurs sont plus ou moins définies mais toutes les suivantes changent de
du tout au tout suivant les ordinateurs.

Les routines livrées s'attachent à établir les mêmes couleurs pour les
icônes affichées dans toutes les résolutions, en utilisant directement des
valeurs RVB sur chaque point de l'icône. Ce sont principalement les
résolutions supérieures ou égales à 32000 couleurs. Mais cela ne peut
fonctionner que si le ressource contient une palette RVG. La palette RVB
est un élément du format ressource d'Interface. Le format de ce fichier
ressource reste tout de même compatible avec le format Atari, la table RVB
est simplement ignorée si elle n'est pas nécessitée.

Si le ressource contient au moins une icône couleur, alors la palette RVB
est automatiquement sauvegardée dans le fichier RSC. Si aucune palette n'a
été définie, la palette actuelle est alors prise en compte.

En théorie, la palette peut permettre de charger les icônes dans toutes les
résolutions, mais, si la résolution est inférieure à 256 couleurs, alors il
peut se passer un changement dans les couleurs. C'est pour cela qu'il faut
charger soi-même la palette à partir du fichier RSC et l'installer pour
l'application.

Les 16 première couleurs doivent être paramétrées comme suit pour ne pas
gener les autres applications et pouvoir aussi fonctionner sur tous les
ordinateurs :

N° | couleur       |   R    V    B  Valeur de 0 à 1000
 0 | blanc         | 1000 1000 1000
 1 | noir          |    0    0    0
 2 | rouge         | 1000    0    0
 3 | vert          |    0 1000    0
 4 | bleu          |    0    0 1000
 5 | cyan          |    0 1000 1000
 6 | jaune         | 1000 1000    0
 7 | magenta       | 1000    0 1000
 8 | gris clair    |  752  752  752
 9 | gris fonçé    |  501  501  501
10 | rouge fonçé   |  713    0    0
11 | vert fonçé    |    0  713    0
12 | bleu fonçé    |    0    0  713
13 | cyan fonçé    |    0  713  713
14 | jaune fonçé   |  713  713    0
15 | magenta fonçé |  713    0  713


      4.1.5.6 Ligne "Montrer palette"

La palette actuelle sera remplacée par celle du ressource. On peut ainsi
voir les couleurs réelles de la palette. En mode True-Color, cette option
n'est pas activée parce que Interface peut toujours afficher la palette du
ressource.

      4.1.5.7 Ligne "Palette-Standard"

Cette ligne permet de repasser sur la palette couleur qu'Interface a
trouvée au chargement du programme.

  4.2 Les fonctions

    4.2.1 Les sybmboles de fonction

      4.2.1.3 La couleur de dessin

Le champ à droite de la corbeille indique la couleur actuellement utilisée
par les outils de dessin.

    4.2.2 Le symbole de positionnement

    4.2.3 Le symbole des fonctions graphiques

    4.2.4 La palette couleur

Cet outil affiche la palette actuellement utilisée par l'ordinateur.
La palette réelle de cette icône peut être visualisée en cliquant sur
"Montrer palette (voir 4.1.5.7)

    4.2.5 Le changement de résolution

Cette icône permet de changer parmi toutes les résolutions disponibles de
l'icône couleur. La création d'une nouvelle résolution s'effectue en
double-cliquant sur l'ascenceur. Le nombre indiqué dans ce sous-menu
indique le nombre de plans affichés pour la résolution.

    4.2.6 Le bouton de choix d'image

Ce bouton permet de passer du mode "icône non sélectionnée" au mode "icône
sélectionnée". S'il n'existe aucune "icône sélectionnée", ce bouton ne sera
pas disponible.

5 Format de sauvegarde

    5.2.4 Le format ICO

Interface utilise le format ICO quand, dans l'éditeur d'icônes, une icône
est copiée dans le clipboard GEM. Ce format a été créé par Stefan Münch
dans son programme "IconEdi".

Les fichiers au format ICO ont un en-tête qui commence par un nombre
magique, puis continue avec la version et la longueur d'en-tête et finit
par un pointeur sur un bloc objet :

Offset | Structure                |
       |                          |
       | typedef struct           |
       | {                        |
 0     |   char icon_magic[4];    | /* contient 'ICON'; $49434F4E   */
 4     |   int icon_version;      | /* N° de version comme le TOS   */
       |                          | /* débute à  $0000              */
 6     |   int icon_headerlength; | /* Taille en-tête en Word       */
       |                          | /* Standard : 5                 */
 8     |   int *objectbloc;       | /* Pointeur sur bloc objet      */
       | } ICONHEADER;            |


6 Adaptation d'Interface

  6.1 La boîte d'objets

On peut ajouter des objets personnels (USERDEF) dans la boîte, en chargeant
le Ressource d'Interface et en copiant l'objet souhaité dans l'arbre
"OBJETS". Le nouvel objet doit être un enfant direct de la boîte centrale
et ne doit pas contenir d'enfant.

Le nouvel objet ne sera pas traité par Interface comme un objet G_USERDEF
mais c'est seulement dans votre programme qu'il aura sa vrai fonction.

  6.2 Lattice C et les sorties RSH
  
Pour tous les utilisateurs du lattice C, le ressource d'interface une
chaîne libre 'OBSPEC_CAST' contenant la chaîne "LONG" pour les sauvegardes
de code source. Le lattice interprete mal le "LONG", vous pourrez donc
modifier cette chaîne en (VOID *).

  6.3 Modula 2
  
Toutes les chaînes du modula sont intégrée dans le ressource d'interface.

  6.4 Les boîtes d'alerte

Les boutons par défaut et boutons d'annulation des alertes sont
configurables. Par exemple :
En quittant le programme, Interface demande si le fichier Ressource
modifié doit être sauvé ou abandonné. Dans cette alerte le bouton
"Abandon" est toujours sélectionné, et l'appui sur la touche Return
entraîne la fin du programme sans sauvegarde des modifications du fichier.
Chargez le fichier Ressource, et insérez un point comme premier caractère
pour le bouton "Sauver". Interface ignorera la configuration générale et
le bouton deviendra le bouton par défaut.
Si vous voulez qu'un bouton, "Abandon" par exemple, soit activé par UNDO,
insérez comme premier caractère deux points.

En bref:
   "." Bouton par défaut   (sélectionné par Return)
   ":" Bouton d'annulation (sélectionné par UNDO)


7 Programmation d'un programme EXTOBFIX

Interface 2.0 a la possibilité d'utiliser une page d'aide pour chaque
fichier Extobfix. Cette page d'aide peut être affichée pour chaque dialogue
Objet d'Interface. Le poiteur sur l'arbre de la page d'aide doit être
défini dans la dernière partir du tableau de la fonction (voir création
d'un nouveau fichier MyDial Extobfix. Les fichiers Extobfix avec page
d'aide doivent contenir le mot magique "06101965" à la place de "06101964".

L'arbre sera adapté par Interface à un type d'objet MyDial étendu. Les 2
premiers objets (Coin FlyDial et Soulignement) doivent toujours avoir les
numéros 1 et 2. Tous les autres objets sont librement numérotables.

9 Le Pipeline en accessoire

Ne connaisant personne qui en ait actuellement réalisé par intérêt, les
explications étant de plus très difficiles, je conseille à celui que cela
intéresse, de me contacter Personnellement.

10 Utilisation des gros fichiers ressource
 
Sur la disquette se trouvent 2 fichiers XRSRC.C et XRSRC.H
Ces deux fichiers, une fois intégrés dans votre programme vous permettront
d'utiliser sans restriction les gros fichiers ressource. 
 
Il n'y a pas besoin de faire beaucoup de modifications à votre programme,
il faut seulement initialiser certaines fonctions afin de remplacer
certaines fonctions de l'AES par un "x". Les fonctions suivantes doivent
être renommées : 
 
rsrc_load  en xrsrc_load
rsrc_free  en xrsrc_free
rsrc_gaddr en xrsrc_gaddr
rsrc_saddr en xrsrc_saddr
rsrc_obfix en xrsrc_obfix
 
Tous les pointeurs de ces nouvelles fonctions doivent être initalisés avec
une taille Entier 15. Si vous désirez charger plus d'un ressource, il vous
suffit pour chaque ressource suivant de créer un autre tableau identique au
premier.

Avant d'appeler xrsrc_load, il faut initialiser la fonction init_xrsrc avec
les paramètres suivants :

vdi_handle  = Handle de la WorkStation VDI (utilisé par les XRSRC)
desk        = pointeur sur une structure x,y,w,h avec la position x, y, la
     largeur et la hauteur du bureau.
gl_wbox     = Largeur d'un signe
gl_hbox  = Hauteur d'un signe
 
Si l'on utilise pas d'icônes couleur, on peut indiquer 0 pour le vdi_handle
puisque les routines XRSRC n'ont pas besoin de cette variable dans ce cas.

les fonctions gl_wbox et gl_hbox sont appelée de la façon suivante :
graf_handle (&gl_wbox, &gl_hbox, &gl_wattr, &gl_hattr);

La fonction desk avec :
wind_get (DESK, WF_WXYWH, &desk.g_x, &desk.g_y, &desk.g_w, &desk.g_h);
 
desk est une structure de 4 entiers, qui sont déclarés comme GRECT dans le
fichier AES.H

La modification de la structure RSHDR est définie dans XRSRC.H

Les routines en GFA et en Omikron sont maintenant disponible, toutefois
l'Omikron ne comporte pas encore la gestion des icônes couleurs.

Les explications suivantes sont données pour la version en C des routines
XRSRC.

  10.1 Icônes couleur
  
Depuis la version 2.2 d'Interface, la gestion des icônes couleur fonctionne
sur tous les TOS. La gestion des icônes couleur peut être désactivée en
utilisant l'option de compilation "COLOR_ICONS".

L'option "SAVE_MEMORY" peut être indiquée si les routines de gestion des
icônes couleur vont être assez gourmandes en mémoire. Si cette option est
mise sur "TRUE", les routines vont alors remplacer les icônes spécifiques à
chaque résolution en icônes au format universel. Le seul cas ou cette option
doit être activée, est quand les icônes une fois transformées, occupent plus
de place que les icônes originales (par ex : pour des résolutions de plus de
256 couleurs).

L'option "SAVE_MEMORY" doit être indiquée sur "FALSE" lorsque le programme,
par la suite ne fera accès qu'à des icônes au format universel.

Si la mémoire est insuffisante pour la gestion des icônes couleurs, alors
elles seront affichées en noir et blanc.

    10.1.1 Affichage des icônes couleur

La commande xrsrc_load, lors du chargement de ressource, change chaque
icône couleur en format Userdef et inscrit aussi pour chacune d'elles une
routine d'affichage. Ceci afin de pouvoir afficher les icônes couleur comme
de simples objets avec la commande objc_draw et, de ce fait, vous n'avez
plus besoin de vous occuper de remplacer ces icônes en icônes "normales".

    10.1.2 Spécificités du format des icônes couleur
    
      10.1.2.1 le pointeur "ob_spec"
      
Les routines XRSRC transforment directement les icônes couleur en objet
userdef, si bien que l'on n'a plus à s'occuper de la valeur de ob_spec pour
la structure ICONBLK. ob_spec pointe maintenant sur une structure Userblk
dans laquelle l'ancienne valeur de ob_spec a été sauvée sous le paramètre
ob_parm.

Lors de l'utilisation des MyDial, un avantage est porté sur le fait qu'il
ne faille faire qu'un appel "get_opspec" pour récupérer tout de suite la
bonne valeur. Cette fonction teste d'abord s'il s'agit d'un objet Userdef
et rend, dans ce cas, le paramètre ob_spec de la structure Userblk.

Si l'on utilise pas les MyDial il faut alors utiliser la fonction suivante:

LONG get_obspec (OBJECT *tree, WORD obj)
{
  if ((tree[obj].ob_type & 0xff) == G_USERDEF)
    return (((USERBLK *)tree[obj].ob_spec)->ub_parm);
  else
    return (tree[obj].ob_spec);
}

Lorsque l'on veut changer le texte de l'icônes, il faut écrire en C, la
ligne suivante :

strcpy (((ICONBLK *)get_obspec (tree, obj))->ib_ptext, "Neuer Text");

      10.1.2.2 Construction d'une structure d'icônes couleur 
 
Les nouveaux icônes couleurs d'Atari sont documentés dans la façon
suivante :

#define G_CICON         33      /* Type d'objet : Icône couleur */

typedef struct cicon_data
{
  WORD num_planes;     /* number of planes in the following data          */
  WORD FAR *col_data;  /* pointer to color bitmap in standard form        */
  WORD FAR *col_mask;  /* pointer to single plane mask of col_data        */
  WORD FAR *sel_data;  /* pointer to color bitmap of selected icon        */
  WORD FAR *sel_mask;  /* pointer to single plane mask of selected icon   */
  struct cicon_data *next_res; /* pointer to next icon for a different resolution */
} CICON;

typedef struct cicon_blk
{
  ICONBLK monoblk;     /* default monochrome icon                         */
  CICON *mainlist;     /* list of color icons for different resolutions   */
} CICONBLK;

Le mieux est d'utiliser les définitions directement depuis votre AES.H

Une icône couleur est ainsi faite que le pointeur ob_spec d'une structure
OBJECT pointe sur une structure ICONBLK. La première entrée de la structure
CICONBLK contient une structure ICONBLK, on peut donc sans problème
utiliser indifféremment une icône couleur ou monochrome.

Une icône couleur est en fait composée de plusieurs icônes couleur
correspondant à chaque résolution disponible. Le système, grace à la
commande rsrc_load cherche dans la liste des icônes celle qui est la mieux
adaptée à la résolution actuelle.

Le pointeur "mainlist" de la structure CICONBLK pointe sur une structure
CICON, dans laquelle les données image d'une icône sont contenues, et qui
nécessite le "num_planes".

Le pointeur "next_res" de cette structure CICON peut ensuite pointer sur la
prochaine structure CICON correspondant à une autre résolution. Cela se
poursuit ainsi jusqu'à ce que "next_res" soit NULL.

Une structure CICON contient 4 pointeurs. Les 2 premiers sont pour la
gestion de l'image normale et du masque, les deux suivants pointent sur
l'image sélectionnée et le masque sélectionné. L'image sélectionnée sera
affichée,lorsque le status de l'icône sera "SELECTIONNÉ".

Il est aussi possible qu'une icône n'ait aucune image sélectionné. Alors,
les 3 et 4ème pointeurs contiennent une valeur NULL. Lorsqu'une icône
couleur n'a aucune image sélectionnée, elle sera affichée en plus fonçée,
avec un point noir sur l'icône.

       10.1.2.3 Problème de Redraw (réaffichage)
       
Lorsque les données graphiques d'une image normale et de l'image
sélectionnée ne sont pas opaques, il peut arriver certaines erreurs de
redraw, dues au fait que les routines graphiques ne doivent dessiner qu'une
partie de l'icône.
On peut résoudre ce problème en redessinant, non seulement l'icône, mais
aussi le fond.
 
à la place de :

objc_draw (tree, ICON, MAX_DEPTH, desk.x, desk.y, desk.w, desk.h);

il faut redessiner le fond avec le clipping de l'icône :

objc_offset (tree, ICON, &x, &y);
w = tree[ICON].ob_width;
h = tree[ICON].ob_height;
objc_draw (tree, ROOT, MAX_DEPTH, x, y, w, h);
 
ROOT signifie l'objet ROOT d'un arbre (donc 0), MAX_DEPTH contient le
nombre maximal de plans de dessins de l'AES (8).

      10.1.2.4 Icône au format "dépendant de la résolution"
      
On doit parfois savoir quelles seront les résolutions réellement utilisées
parmi la palette énorme de résolutions disponibles. les routines
XRSRC-CICON ont arrangé les choses de façon à ce que l'icône au format
dépendant de la résolution se trouve toujours en première place dans la
structure CICON, tout de suite après la structure CICONBLK. Ce qui signifie
que le paramètre "mainlist" de la structure CICONBLK pointe toujours sur
l'icône au format dépendant de la résolution. Le paramètre "next_res" de la
structure CICON du format dépendant de la résolution pointe sur la première
structure CICON au format universel.

     10.1.3 Compatibilité de l'icône couleur
     
Les icônes couleur du TOS pour Falcon sont encore au stade de béta-test, on
ne peut donc pas garantir que Interface soit entièrement compatible avec
les ressources contenant des icônes couleur. Le format garanti est celui du
8 septembre 1992, version 2.1. 

11 Les ressources en source C

  11.1 Initialisation du ressource
  
Le ressource est complètement initialisé par Interface, il n'y a donc
aucune variable à définir. Il faut uniquement adapter le ressource à la
résolution grace à la fonction :

for (i = 0; i < NUM_OBS; i++)
   rsrc_obfix (&rs_object[i], 0);

NUM_OBS est un fichier *.RH défini,  qui sera sauvegardé en même temps que
le *.RSH.

  11.2 Ressource dans un module CPX
  
Le code C de sortie de Interface a déja été optimisé et il ne convient donc
plus au vieux format RSC d'Atari. Le problème est donc que les CPX
n'acceptent que ce vieux format. La solution consiste à ne plus initialiser
le ressource CPX mais à effectuer la routine suivante :

if (!xcpb->SkipRshFix)
{
   for (i = 0; i < NUM_OBS; i++)
      (*xcpb->rsh_obfix) (&rs_object[i], 0);
}

Les noms des variables proviennent de ceux définis par Atari lors de la
description de la programmation des CPX.  Dans cette routine, seule la
position des objets sera adaptée.

  11.3 Les icônes couleur dans les ressources en C

Il faut bien sûr, en C, changer les Icônes couler en Userdef, afin de
pouvoir s'adapter à toutes les versions de TOS. vous trouverez sur la
disquette, les routines effectuant cette transformation.

Si vous voulez adapter des icônes couleurs, il faut, lors du démarrage du
programme, après l'ouverture de la WorkStation, appeler les fonctions
suivantes du module XRSRCFIX.C :
 
#ifdef rgb_palette
  init_xrsrc (vdi_handle, rs_object, NUM_OBS, NUM_CIB, rgb_palette);
#else
  init_xrsrc (vdi_handle, rs_object, NUM_OBS, NUM_CIB, NULL);
#endif

vdi_handle doit contenir le handle de la WorkStation, car les routines
XRSRC en ont besoin.

A la fin du programme, il faut appeler la fonction :

term_xrsrc (NUM_CIB);

Afin de libérer la mémoire utilisée par la gestion des icônes couleur.
NUM_OBS et nUM_CIB sont définis dans le fichier *.RH, qui seront
sauvegardés ensemble dans le fichier *.RSH. Dans le dossier CRSHTEST, se
trouve un programme démontrant ces fonctions.

La routine init_xrsrc renvoie aussi les coordonnées de l'objet, ce qui
évite, pour chaque objet, d'appeler la fonction rsrc_obfix.


12 Le protocole AV
 
Le protocole AV est un standard dans l'envoi de messages entre les
accessoires et un shell. Cela a surtout été établi entre Gemini et les
accessoires.

Interface utilise certaines des fonctions de communication de Gemini :

AV_PROTOKOLL   : Interface indique qu'il connait le protocole.

AV_SENDKEY   : Les accessoires ne peuvent plus envoyer de touches
       à Interface.
       
AV_OPENWIND   : Un accessoire peut demande à Interface d'ouvrir une 
       fenêtre d'unité (disque dur ou lecteur), comme par
       exemple pour Treeview.
       
AV_ACCWINDOPEN  :
AV_ACCWINDCLOSE  : Les accessoires annoncent à Interface qu'une fenêtre
       vient d'être ouverte. Interface peut donc maintenant
       la compter dans la liste des fenêtres ouvertes et la
       refermer éventuellement avec Control-W.
       
AV_STARTPROG  : Un accessoire donne à Interface un chemin avec un nom
       de fichier (par exemple : FSearch). Si ce nom
       contient l'extension "RSC", Interface charge
       automatiquement ce fichier.
       
VA_START   : Identique à AV_STARTPROG. VA_START a été pensé pour
       être utilisé avec un accessoire, et comme Interface
       n'est pas un accessoire, VA_START ne fonctionne donc
       que pour un environnement en multi-taches.
       
       Pour Mag!X, par exemple, lorsqu'un fichier RSC est
       ouvert, Mag!X envoit alors à Interface un message
       VA_START et demande à Interface de charger le
       ressource. Il faut bien entendu, installer d'abord
       Interface comme une application pour fichiers
       ressource (*.RSC).
       

13 Trucs et Astuces

  13.1 Librairie d'objet à travers un fichier de ressources par défaut
  
Interface mémorise tous les fichiers chargés ainsi que leur position, si
bien que, lors du prochain démarrage, ces ressources seront à nouveau
chargées. Il devient alors simple de créer un fichier ressource contenant
tous les objets que l'on a l'habitude d'utiliser.

  13.2 Affichage d'icônes couleurs dans une résolution monochrome
  
Lorsque l'on charge une icône au format Windows ou OS/2, se pose alors le
problème que ces icônes possèdent au minimum 16 couleurs et que l'onne peut
pas, sans beaucoup de difficultés les afficher dans des résolutions
monochromes sauf si :

Premièrement, copier l'icône 16 couleurs, avec control-C, dans le
ClipBoard. Ensuite appeler le sélecteur de fichiers et rechercher le
dossier Clipboard. Dans ce dossier, doivent se trouver 2 fichiers :
SCAP.ICO et SCRAP.IMG. Il suffit alors d'effacer le fichier .ICO de ce
dossier, et ensuite d'insérer le clipboard sur la page avec la touche
Control-V. Et, dans ce cas, seul le fichier .IMG pourra être réintégré.
L'icône est alors correctement affichée et peut être facilement
retravaillée si nécessaire.

BOOK / MAGAZINE REVIEWS (1)

International TOS Software Catalog · Winter, 1992