

1 Introduction

	1.1 Copie de scurit
  
Avant de dmarrer Interface, nous vous conseillons vivement de sauvegarder les
disquettes en faisant une copie de sauvegarde. Le programme n'est pas protg,
vous pouvez donc effectuer aisment les copies, mme 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 rsolutions. Toutefois, si il y a moins de 80
caractres par ligne, certaines boites de dialogue ne s'afficheront pas
entirement.

	1.3 Qu'est-ce qu'un Ressource ?
  
Les ressources permettent  tous les programmes "GEM" d'afficher des fentres,
des boites de dialogues, des menus droulants et autres donnes qui ne se
trouvent pas dans le programme principal mais dans un fichier spar. 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 dvelopp en plusieurs langues sans avoir 
changer le code source. Il suffit d'aoir un fichier ressource par langue.
Les ressources sont constitus 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 crer un menu ou un boite de dialogue il faut d'abord crer un "Arbre". Un
"Arbre" est appel de la sorte, en rfrence au vrai arbre, qui contient
plusieurs branches (ou objets). Un fichier ressource est compos de plusieurs
arbres qui sont eux-mmes composs de plusieurs objets. Chaque objet peut  son
tour regrouper d'autres objets (on utilisera dans ce cas, la relation
"pre-fils".

	1.4 L'cran d'Interface
  
Lorsque vous aurez dmarr le programme, vous aurez alors les lments suivants
 l'cran : 
- la ligne de menus en haut
- le bureau qui sert  ranger les icnes
- les units de disque disponibles qui, lorsque vous double-cliquez dessus,
ouvrent le rpertoire correspondant et affiche, le cas chant, les rpertoires
et les fichiers ressource qui peuvent tre ouverts.
- la corbeille qui permet d'effacer des objets du ressource.
- les icnes reprsentant les fichiers ressource dj charg.
- l'affectation des touches de fonction grace  la barre se trouvant en bas de
l'cran
- et enfin, la mmoire disponible.

	1.5 Les fonctions souris
  
Clic			Slection d'un objet se trouvant sous le pointeur
				(un objet slectionn sera invers)
Shift+Clic		Slection de plusieurs objets "manuellement"
				(objets choisis un  un)
Control+Clic    Slection du pre de l'objet
Double Clic		Ouverture d'un fichier, d'un arbre, ou d'un objet en vue de
				l'dition
Dplacement		Permet de dplacer un objet, arbre, ou fichier dans un autre
				endroit
Shift+Dplace	Copie de l'objet ou de l'arbre slectionn
Ctrl+Shft+Dpl  Copie le pre d'un objet avec tous ses enfants
Alt+Dplace		Trace un cadre afin de slectionner tous les objets qui se
				trouvent dans l'enceinte de ce cadre.

Les combinaisons suivantes peuvent aussi agir sur les fentres se trouvant en
arrire plan, il faut alors utiliser le clic droit.

	1.6 Les Combinaisons de touches des fentres
  
Le contenu d'une fentre d'Interface peut tre dplace  la souris en cliquant
sur les acenceurs mais aussi au clavier : La touche Shift associe  un clic,
permet de passer directement  la page suivante. Les touches ClrHome et
Shift-ClrHome permettent de passer une page suprieure et une page infrieure.

	1.7 Fonctions supplmentaires dans les botes de dialogue

Le GEM permet, lorsque les boites de dialogue sont bien construites, d'avoir
accs  certaines touches du clavier. Interface utilise ces touches et en ajoute
quelques autres :
Shift + <-		Curseur au dbut de la ligne
Shift + ->		Curseur  la fin de la ligne
Cntrl + <-		Curseur 1 mot  gauche
Cntrl + ->		Curseur 1 mot  droite
Insert			Permet d'insrer des caractres spciaux dans le texte.
Alternate		Permet si un bouton contient une lettre souligne, d'acceder 
				ce bouton en appuyant directement sur Alternate+lettre.

Si vous dplacez une bote de dialogue avec la souris en maintenant SHIFT,
CONTROL ou ALT, seul le cadre de la bote sera dplac. Ainsi il est
possible de voir au travers de la bote.

Tous les boutons "ANNULER" des botes de dialogue ou d'alerte peuvent tre
activs par la touche UNDO.

Dans toutes les botes 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 rduction des objets

Les objets peuvent tre agrandis dans les 4 directions. L'objet doit
toujours tre saisi par le coin infrieur droit, mais il est possible de
dpasser son ct 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 dplacer celui-ci
sur la corbeille. L'effacement d'arbres et de fichiers est irrversible, alors
que celui d'objets peut tre annul en pressant la touche UNDO.

	1.10 gestion de la mmoire 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 chanes : 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
  
Dmarrez le programme INTRFACE.PRG qui se trouve sur la disquette ou sur votre
disque dur.

	2.2 Cration d'un fichier ressource
  
Dans le menu Fichier, vous trouverez l'option "Nouveau". S'incrit alors sur le
bureau, l'icne "SANS_NOM" et une fentre vide dans laquelle seront plac, par
la suite, les arbres.

	2.3 Cration d'un menu
  
		2.3.1 Cration d'un arbre Menu
    
Dans le menu Editer, vous trouverez l'option "Arbre". Apparait alors une fentre
avec les diffrents arbres disponibles.  Dplacez alors l'arbre "Menu" dans la
fentre 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 fentre vide se trouve maintenant une icne portant le nom "MON_MENU".
Afin d'diter ce menu, il faut double-cliquer sur l'icne. Apparait alors une
fentre  dont le titre est "MON_MENU", dans laquelle sera ralis le menu. Dans
cette fentre vous apercevez dj 2 entres "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
fentre avec les diffrents objets disponibles. Dplacez l'objet "STRING"
vers la droite de "Fichier" dans la fentre Menu. si tout est correctement
ralis, il devrait y avoir un nouveau titre de menu "STRING" aprs le menu
"Fichier".
Double-cliquez dans "STRING". Apparait alors une boite de dialogue o vous devez
dplacer le curseur avec les touches de flches, jusqu' "STRING". Effacez le
texte en appuyant sur ESC et tapez  la place "Options".
Dplacez 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. Dplacez ensuite  nouveau, depuis la fentre "Objets" l'objet
"STRING" vers le rectangle blanc. La taille de cette ligne sera fixe
ultrieurement par Interface (et automatiquement !).
Il faut maintenant insrer d'autres lignes dans le menu "Fichier". Lorsque vous
cliquerez dessus, vous verrez qu'il existe dj une ligne "Fin     ^Q". Copiez
cette ligne 3 fois en utilisant la touche Shift.

		2.3.5 Modification d'une nouvelle entre
    
Il faut maintenant modifier les entres afin qu'elles correspondent rellement 
notre besoin : double-cliquez sur la premire ligne et remplacer "STRING" par
"Ouvrir...     ^O". Les trois petits points se trouvant derrire 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" aprs les 3 petits points.
L'accent circonflexe tant plac pour Control.
Le nombre d'espaces libres entre le nom et le raccourci clavier est dfini
automatiquement (en option) par Interface.
Dplacez 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 deuxime ligne "Fermer    ^U" et, dans le camp "NOM:"
inscrivez "MCLOSE". Afin de bien sparer les 2 premires entres de la dernire,
nous allons les sparer par des traits "-". Editez donc la 3me ligne et tapez
les traits correspondants. Avant de cliquer sur OK, activez la case "Disabled",
afin que par la suite, cette zone tant dsactive, personne ne puisse cliquer
dessus.
Modifiez ensuite la premire ligne du menu "Options" en inscrivant :
"Paramtres...    C"

		2.3.6 Test de l'arbre Menu
    
Slectionnez dans le menu "Editer" l'option "Tester l'arbre" ou appuyez sur F9
afin de tester le nouveau menu.
Ue nouvelle fentre s'ouvre et affiche, dans la ligne suprieure, la ligne de
menu. Cliquez maintenant sur l'option "Paramtres" du menu "Options". Aucune
boite d'alerte ne doit apparaitre parce que vous n'avez donn aucun nom  cet
objet.
Il y a deux faons de quitter le test : cliquez sur une ligne de menu et,
lorsque la boite de dialogue apparait, cliquez sur "Abandon" ou, fermez la
fentre.

Remarque : les raccourcis clavier fonctionnent aussi dans la fentre de test, ce
qui signifie que les raccourcis dfinis lors de la cration de menus sont
directement exploitables et vrifiables ici. Par contre, dans un programme, de
tels raccourcis, doivent tre grs manuellement par le programmeur.

	2.4 Cration d'un formulaire
  
		2.4.1 Cration d'un arbre Formulaire
    
Ouvrez, comme dcrit dans le  2.3.1, le menu des types d'arbre et dplacez
l'icne "Formular" vers la fentre dans laquelle se trouve dj l'icne
"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 fentre
vide apparaitre.

		2.4.3 Insertion d'un objet
	
Appelez la boite d'objets (par le menu ou en appuyant sur la touche O).
Dplacez l'objet "STRING" vers la fentre de mme qu'un objet "IBOX".
Positionnez IBOX juste  droite de STRING. Agrandissez l'IBOX de faon qu'il
arrive en bas  droite de la fentre. Double cliquez sur STRING et
remplacez "STRING" par "Plante :" et cliquez sur OK. Si la chaine "Plante :"
est trop proche de IBOX, alors dplacez IBOX sur la droite.

		2.4.4 Modification d'un objet BOUTON
		
Double-cliquez sur l'objet IBOX et remplacez le texte "BUTTON" par "Vnus",
donnez ensuite comme nom  ce bouton "PLVENUS". Cliquez ensuite sur "Selectable"
et "Radiobutton" afin qu'ls soient slectionns.
"Selectable" signifie que le bouton "Vnus" sera invers si on clique dessus.
"Radiobutton" signifie un bouton, qui ressemble presque  un bouton d'une vieille
radio, qui a les proprits suivantes : 1 seul bouton Radio peut tre activ au
niveau de l'objet pre  la fois, si on clique sur un bouton, celui qui tait au
pralable slectionn, se dslectionne.

		2.4.5 Cration de boutons supplmentaires
		
Nous avons besoin dans cette boite d'avoir 2 autres boutons du mme style : il
faut donc copier le bouton "Vnus" 2 fois. Dplacez donc le bouton "Vnus" en
tenant la touche Shift appuye et placez ce 2me bouton  droite du premier.
Rptez l'opration pour le troisime bouton. Renommez ensuite le 2me bouton en
"Terre" avec un nom "PLTERRE" et le troisime en "Mars" avec un nom "PLMARS".
Puisque dans un groupe de bouton, il en faut toujours un qui soit slectionn,
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 pre, sans quoi
tous les boutons appartiendraient au mme 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 faon  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 faon 
rendre cette boite invisible.

		2.4.7 Cration des boutons "Exit"
		
Les boutons "Exit" de sortie permettent de quitter le formulaire en cours. Les
formulaires ont en gnral 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 fentre. Copiez ensuite cet objet  ct  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 trs important dans ce cas mais, dans le cas de
la programmation il est important de connaitre le numro d'ordre exact de chaque
objet.
Toutes les couches de notre boite de dialogue doivent tre tries : il y a en a
2 : la premire reprsente le grand cadre (l'objet racine), la 2me reprsente
la boite IBOX contenant les boutons radio. Ce qui signifie que vous pouvez trier
les 2 couches de faons indpendantes : la premire de haute en bas et la
deuxime 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 mthodes de tri.
Choisissez la mthode de bas en haut et cliquez sur OK.
recommencez la mme opration avec l'objet IBOX invisible et choisissez la
mthode de gauche  droite.

		2.4.9 Test du formulaire
		
La boite de dialogue est maintenant termine. Pour la tester, il suffit
d'utiliser la touche F9. La boite de dialogue est maintenant affiche  l'cran
comme si vous tiez dans un programme autre. Cliquez sur les plantes.
Thoriquement, le passage  une autre plante devrait dslectionner la plante
prcdente. Pressez RETURN, une boite de dialogue devrait apparaitre indiquant
que le bouton OK a t press et qu'il porte le numro x.

		2.4.10 Fremeture de la boite de dialogue
	
Cliquez sur le coin haut-gauche de faon  refermer la fentre.

	2.5 Sauvegarde du fichier ressource
	
Cliquez sur "Sauver comme" du menu "Fichier". apparait alors un slecteur 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-mme.
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 numro de tous les objets
					 fichier au format ASCII, ncessaire 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 crer un nouveau fichier ressource. Ce fichier ne
portera pas de nom (SANS_NOM) et vous devrez, lors de la premire sauvegarde,
choisir l'option "Sauver comme..." de ce mme menu.

			3.1.1.2 Ligne "Ouvrir"

Cette fonction permet d'ouvrir l'objet slectionn (objet, arbre, icne...) si
aucun objet n'est slectionn, alors il apparait un slecteur de fichiers
permettant de charger un fichier ressource.

			3.1.1.3 Ligne "Fermer"
			
Cette fonction permet de fermer une fentre. 
    
			3.1.1.4 Ligne "Effacer

Cette fonction permet d'effacer un ressource de la mmoire.

			3.1.1.5 Ligne "Annuler modif."
			
Cette fonction permet d'annuler les modifications que vous avez apport au
ressource depuis la dernire sauvegarde. ATTENTION : vrifiez bien que la
dernire sauvegarde soit rellement ce que vous vouliez rcuprer, car vous
perdrez dfinitivement toutes les modifications apportes depuis la sauvegarde.

			3.1.1.6 Ligne "Sauver"

Si une icne  correspondant  un fichier ressource est slectionne sur le
bureau, alors il sera sauv. Sinon, le fichier sauv sera celui qui a la fentre
active.
Les fichiers d'en-tte ne seront sauvs que si des labels ont t modifis ou
effacs, ou si la hirarchie a t modifie, ou si la bote d'info sur le
ressource a t quitte 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'icne correspondant  ce fichier sera ainsi renomme.

			3.1.1.8 Ligne "Info..."

Si une icne est slectionne, une boite de dialogue affichera des informations
 propos de cette icne. Si aucune ne l'est, alors l'information portera sur la
fentre active. Si aucune fentre n'est ouverte non plus, alors des
renseignements apparaitront sur Interface. Certaines boites de dialogue
permettent de modifier des donnes :

				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 ajouts :

"statique" : Lorsque le ressource est dfinit pour le C et avec une sortie en RSH
et que ce bouton (Static) est activ, alors sur chaque variable sera prcde de
"static". Ainsi, toutes les variables du ressource sont dfinies en mode local
et ont peut donc intgrer plusieurs ressource en C dans le mme 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 mme 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 livrs 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 prcaution : il est irrversible.

			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 dplacer vers la fentre o l'on souhaite l'insrer.
Dans les arbres Menu, seuls les objets STRING sont accepts.
Le type d'objet "G_USERDEF" est maintenant gr par Interface directement.
Interface cre une structure OBJET dont les pointeurs ob_spec portent sur une
structure USERBLK. Pour chacun de ces objets, une structure USERBLK sera
affecte dans le ressource.
"ub_parm" peut tre insr 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" insrer un pointeur de la routine spciale 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 bote d'objets d'Interface.
Voir point 6.1 "La bote d'objets".
Si la bote d'objets est en fentre, on peut sous MultiTos y saisir des
objets mme si elle est en fond. L'utilisation du bouton droit de la
souris n'est plus ncessaire.

			3.1.2.3 Ligne "Arbres..."

Cette option permet d'afficher tous les arbres accessibles dans un fichier
ressource :
- menu : pour les menus droulants
- boite de dialogue : pour toutes les fentres de saisies et d'informations
- boite d'alerte : pour les messages importants
- chaines/images libres : pour les images et les textes utiliss uniquement par
la programmation.
Si la bote d'arbres est dans une fentre, on peut sous MultiTos y saisir
des objets mme si elle est en fond. L'utilisation du bouton droit de la
souris n'est plus ncessaire.

			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 insre l'objet qui se trouve dans le presse-papier sur la fentre
active.

			3.1.2.7 Ligne "Dfinir drapeaux"
			
Si, dans un formulaire, plusieurs objets sont slectionns, on peut alors
dfinir, pour tous ces objets, des drapeaux (flags) communs. Une boite de
dialogue apparait et permet de dfinir les drapeaux et les statuts : 
- une case vide indique que cette option ne sera pas active
- une case coche indique que cette option sera active
- une case grise indique que cette option ne sera pas modifie.

			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 diffrencies.

Dans la recherche, les caractres Jokers suivants sont accepts :

*      : un nombre quelconque de caractres
?      : un quelconque caractre
[a-z]  : un caractre compris entre le 1er et le 2me.

			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 rpondrait qu'il ne
le comprend pas.
Le texte est maintenant possible si un programme EXTOBFIX se trouve dans le
mme rpertoire qu'Interface.
Si un arbre Menu doit tre test et que la ligne "Trier les raccourcis des
menus" est active, Interface mettra un bip si 2 raccourcis contiennent la
mme touche.

			3.1.2.7 Ligne "Comparaison de Ressource"

Les fichiers Ressources peuvent tre compars entre eux. Cela permet de
dceler des erreurs plus rapidement. Pour utiliser cette fonction, il faut
slectionner deux fichiers Ressources et appeler la fonction. L'option est
galement disponible quand deux Ressources ont t chargs seulement ou
quand les fentres d'arbres de deux Ressources sont ouvertes.
Si un arbre d'un des Ressources est slectionn ou ouvert, la comparaison
peut s'effectuer  partir du dbut ou bien  partir de cet arbre.

		3.1.3 Le menu "Fentre"
		
Dans ce menu sont affichs et slectionnables les 10 premiers fichiers
Ressource chargs. 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
dsactiv (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 Fentre :"

Les diffrents objets peuvent tre reprsents en fentres :
Barre des menus, dialogues et botes d'objets, pour compatibilit avec
MultiTos. Les botes peuvent ne plus tre refermes et rester sur le
bureau o elles pourront tre actives si ncessaire.

				3.1.4.1.2 L'option "Slecteur de fichiers standard"

Interface possde son propre slecteur de fichiers qui offre bien plus de
possibilits 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 fentre, il y a toujours un
rectangle qui s'agrandit ou qui se rtrcit. Pour des raisons de rapidit
d'affichage, on peut dsactiver cette option.

				3.1.4.1.4 L'option "Copier avec les noms d'objet"
				
Cette option permet, si elle est active, lors de copie d'objets, de copier
aussi le nom de chaque objet en mme temps. Sachant que si ce nom d'objet existe
dj 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
mme rpertoire qu'Interface, et que vous utilisiez des types d'objets tendus
dans un arbre (extended ob_types), de faire afficher rellement les objets
tendus. Toutefois, vous avez la possibilit de remplacer cette fonction de test
pour les formulaires et les boites d'alerte et dsactivant cette option.

				3.1.4.1.6 L'option "Aligner les raccourcis clavier"

Cette option permet d'aligner de faon automatique les raccourcis clavier dans
les menus droulants.

				3.1.4.1.7 L'option "Vrifier l'alignement des lignes de menu"

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

				3.1.4.1.8 L'option "Montrer les donnes en point/caractre"

Cette option permet d'afficher une ligne d'informations en haut d'une fentre
d'arbre. Cette ligne contient le nom de l'objet, son numro d'ordre, sa largeur
et sa hauteur. Les largeur et hauteur peuvent tre affiches en points ou en
caractres.
Les coordonnes sont maintenant affiches dans les arbres de menus, de mme
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 trs dur 
trouver, il peut tre rendu visible par cette option.

				3.1.4.1.10 L'option "Popup sur objet"

Cette option dsactive 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 slection de l'objet plus facile pour diverses
oprations (copie par exemple).
Quand le pop-up est actif, la slection reste toutefois trs simple avec
un SHIFT clic.

				3.1.4.1.11 L'option "Prfixe label"

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

				3.1.4.1.12 L'option "Sauvegarde automatique des paramtres"

Tous les paramtres sont automatiquement sauvs :
- La position de toutes les icnes
- La position des botes d'arbres ou d'objets
- La taille, la position et l'ascenseur des fentres
- Le chemin de tous les Ressources chargs
- La position de chaque fentre d'arbre ouverte.
Toutes les coordonnes sont adaptes  un ventuel changement de
rsolution afin que tous les objets puissent tre atteints.

			3.1.4.2 Ligne "Grille"

Lors du positionnement de chaqueobjet dans la fentre, il est possible de se
faire aider d'une grille magntique afin de mieux alignes les objets les uns
avec les autres. L'alignement peut se faire point par point, 1/2 caratre par
1/2 caractre ou caractre par caractre.
La grille XY pour la position des objets est maintenant fixe pour chaque
fichier Ressource. Si le format HRD est utilis, la grille courante sera
sauve 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-mme soit aussi change. Cette
option active adapte la taille de l'objet en fonction de la taille du texte. La
dsactiver permet de conserver obligatoirement la taille originale.

			3.1.4.5 Ligne "Numro d'objet fixe"
      
Cette option permet de pour chaque objet d'un arbre, de dfinir si sa
position dans cet arbre est fixe ou non. Ainsi, le dplacement d'un objet
peut ou ne peut pas modifier son ordre dans l'arbre lui-mme. L'activation
de ce paramtre 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 dsactiver le bureau d'Interface :
mettre le bureau en fentre (mais pas la barre des menus), sauver les
paramtres, relancer Interface, fermer la fentre du bureau, sauver 
nouveau les paramtres. Maintenant Interface se chargera sans bureau. Pour
retrouver la fentre du bureau, il suffit d'ouvrir la bote de Copyright
ou bien de ne plus mettre le bureau en fentre, de sauver les paramtres
et de relancer...

L'intrt des manipulations de bureau dans une fentre 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 installe 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 fentre de formulaire ou de menu. Si le clipboard doit tre
dplac, il doit d'abord tre slectionn par un clic. S'il n'est pas
slectionn, c'est toujours son contenu qui sera dplac.

Il va de soi que plusieurs objets peuvent tre copis 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 dplacement
vers le clipboard (Couper).

Le clipboard dcrit ici est interne  Interface, c'est--dire qu'il n'a
rien  voir avec un quelconque dossier Clipboard install par ailleurs.
Par contre les oprations de clipboard sur les textes des botes 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 fentre ce qui permet d'diter en
mme temps plusieurs arbres.

    3.3.1 Edition des arbres de menu

Les raccourcis clavier seront, grce  l'option correspondante des
paramtres, automatiquement aligns  droite. Toutefois il faut respecter
un certain nombre de rgles :

- Le raccourci commence aprs le premier espace vide trouv en partant de
  la droite

- Devant la touche doit figurer au moins un caractre de contrle pour
  SHIFT, CONTROL ou ALT. Seuls les caractres spciaux comme HELP, INSERT,
  etc. sont admis

- Aprs le caractre de contrle ne doit se trouver qu'un seul caractre,
ou bien l'entre complte d'un caractre spcial (INSERT)

Si ces dispositions sont respectes, les raccourcis seront organiss
suivant les rgles 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 caractres autoriss pour les caractres de contrle se trouvent dans
le ressource d'Interface dans Free String "SHORTCUT". Les caractres
spciaux autoriss se trouvent dans Free String "SH_KEYWORDS". Avant et
aprs chaque caractre spcial dans cette bote doit se trouver un "/".

Ainsi tous les raccourcis seront facilement reprs par Interface. La
seule exception est un caractre unique devant lequel ne figure aucun
caractre de contrle. Je l'ai intentionnellement laisse de ct car
Interface ne pourrait diffrencier un tel raccourci d'une entre
comportant elle-mme un espace suivi d'un caractre (Ex: "Image 1").

Les entres de menu seront toujours compltes avec des espaces, qui
pourront tre utiliss 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 bote d'dition a un bouton
"Flags tendus".

Dans chaque bote on peut passer d'un objet  l'autre par le bouton
"Suivant".

Le bouton "HELP" ouvre une page d'aide expliquant les diffrents 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/Dplacer des objets

On peut, dans un dplacement, placer un objet sous un autre. L'objet
destination ne sera pas considr comme un fils si,  la question "Doit-on
modifier la structure des objets ? Annuler/Non/Oui" il est rpondu "Non".
Cette bote d'alerte n'apparat que si l'objet dplac et l'objet
destination ont le mme parent.

Le dplacement de plusieurs objets se fait comme prcdemment, mais,  la
fin du dplacement, les objets restent encore slectionns, permettant
ainsi de redplacer le groupe si ncessaire.

La bote d'alerte "Doit-on copier l'objet sur lui-mme ?" a disparu.
L'opration de copie ne se dclenche plus lorsqu'on dplace l'objet d'un
pixel.

      3.3.2.5 Fonctions supplmentaires dans le pop-up

        3.3.2.5.2 Trier

L'ordre de tri peut tre invers si ncessaire. Le tri peut aussi se faire
manuellement (il faut alors cliquer sur les objets les uns aprs les
autres). 

4 L'diteur d'icnes

Dans la bote de dialogue qui appelle l'diteur, les icnes et les images
peuvent tre rduites avec le bouton "Taille minimale", sans perdre de
donnes.

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

Cet article a t spar en deux pour une meilleure comprhension :
"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'icnes se sert du clipboard GEM. Toutes les icnes et images y
transitent sous le format ICO (IconEdi) et IMG.

      4.1.2.5 Ligne "Aperu de l'icne"

Cette option active la vue gnrale de l'icne. Son tat est conserv en
sauvant les paramtres.

	  4.1.5.1 Ligne "Choisir rsolution"
	  
Cette option permet, le cas chant, de choisir la rsolution de l'icne
couleur.

      4.1.5.3 Ligne "Icne slectionne"
      
Cette option permet de voir la reprsentation de l'icne une fois qu'il
sera slectionn dans un programme.

      4.1.5.4 Ligne "Supprimer slection"
      
Cette option efface l'image actuellement charge.

      4.1.5.5 Ligne "Adopter palette

La palette actuelle couleur sera adopte dans le ressource.

Les icnes couleurs posent le problme qu'on ne peut garantir que tous les
utilisateurs auront la mme palette sur leur ordinateur. Les 16 premires
couleurs sont plus ou moins dfinies mais toutes les suivantes changent de
du tout au tout suivant les ordinateurs.

Les routines livres s'attachent  tablir les mmes couleurs pour les
icnes affiches dans toutes les rsolutions, en utilisant directement des
valeurs RVB sur chaque point de l'icne. Ce sont principalement les
rsolutions suprieures ou gales  32000 couleurs. Mais cela ne peut
fonctionner que si le ressource contient une palette RVG. La palette RVB
est un lment du format ressource d'Interface. Le format de ce fichier
ressource reste tout de mme compatible avec le format Atari, la table RVB
est simplement ignore si elle n'est pas ncessite.

Si le ressource contient au moins une icne couleur, alors la palette RVB
est automatiquement sauvegarde dans le fichier RSC. Si aucune palette n'a
t dfinie, la palette actuelle est alors prise en compte.

En thorie, la palette peut permettre de charger les icnes dans toutes les
rsolutions, mais, si la rsolution est infrieure  256 couleurs, alors il
peut se passer un changement dans les couleurs.	C'est pour cela qu'il faut
charger soi-mme la palette  partir du fichier RSC et l'installer pour
l'application.

Les 16 premire couleurs doivent tre paramtres 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 remplace par celle du ressource. On peut ainsi
voir les couleurs relles de la palette. En mode True-Color, cette option
n'est pas active 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
trouve 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 utilise
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 utilise par l'ordinateur.
La palette relle de cette icne peut tre visualise en cliquant sur
"Montrer palette (voir 4.1.5.7)

    4.2.5 Le changement de rsolution

Cette icne permet de changer parmi toutes les rsolutions disponibles de
l'icne couleur. La cration d'une nouvelle rsolution s'effectue en
double-cliquant sur l'ascenceur. Le nombre indiqu dans ce sous-menu
indique le nombre de plans affichs pour la rsolution.

    4.2.6 Le bouton de choix d'image

Ce bouton permet de passer du mode "icne non slectionne" au mode "icne
slectionne". S'il n'existe aucune "icne slectionne", 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'icnes, une icne
est copie dans le clipboard GEM. Ce format a t cr par Stefan Mnch
dans son programme "IconEdi".

Les fichiers au format ICO ont un en-tte qui commence par un nombre
magique, puis continue avec la version et la longueur d'en-tte 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   */
       |                          | /* dbute   $0000              */
 6     |   int icon_headerlength; | /* Taille en-tte en Word       */
       |                          | /* Standard : 5                 */
 8     |   int *objectbloc;       | /* Pointeur sur bloc objet      */
       | } ICONHEADER;            |


6 Adaptation d'Interface

  6.1 La bote d'objets

On peut ajouter des objets personnels (USERDEF) dans la bote, 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 bote 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
chane libre 'OBSPEC_CAST' contenant la chane "LONG" pour les sauvegardes
de code source. Le lattice interprete mal le "LONG", vous pourrez donc
modifier cette chane en (VOID *).

  6.3 Modula 2
  
Toutes les chanes du modula sont intgre dans le ressource d'interface.

  6.4 Les botes d'alerte

Les boutons par dfaut 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 slectionn, et l'appui sur la touche Return
entrane la fin du programme sans sauvegarde des modifications du fichier.
Chargez le fichier Ressource, et insrez un point comme premier caractre
pour le bouton "Sauver". Interface ignorera la configuration gnrale et
le bouton deviendra le bouton par dfaut.
Si vous voulez qu'un bouton, "Abandon" par exemple, soit activ par UNDO,
insrez comme premier caractre deux points.

En bref:
   "." Bouton par dfaut   (slectionn par Return)
   ":" Bouton d'annulation (slectionn 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 affiche pour chaque dialogue
Objet d'Interface. Le poiteur sur l'arbre de la page d'aide doit tre
dfini dans la dernire partir du tableau de la fonction (voir cration
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
numros 1 et 2. Tous les autres objets sont librement numrotables.

9 Le Pipeline en accessoire

Ne connaisant personne qui en ait actuellement ralis par intrt, les
explications tant de plus trs difficiles, je conseille  celui que cela
intresse, 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 intgrs 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 renommes : 
 
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 initaliss avec
une taille Entier 15. Si vous dsirez charger plus d'un ressource, il vous
suffit pour chaque ressource suivant de crer un autre tableau identique au
premier.

Avant d'appeler xrsrc_load, il faut initialiser la fonction init_xrsrc avec
les paramtres 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'icnes 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 appele de la faon 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 dclars comme GRECT dans le
fichier AES.H

La modification de la structure RSHDR est dfinie dans XRSRC.H

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

Les explications suivantes sont donnes pour la version en C des routines
XRSRC.

  10.1 Icnes couleur
  
Depuis la version 2.2 d'Interface, la gestion des icnes couleur fonctionne
sur tous les TOS. La gestion des icnes couleur peut tre dsactive en
utilisant l'option de compilation "COLOR_ICONS".

L'option "SAVE_MEMORY" peut tre indique si les routines de gestion des
icnes couleur vont tre assez gourmandes en mmoire. Si cette option est
mise sur "TRUE", les routines vont alors remplacer les icnes spcifiques 
chaque rsolution en icnes au format universel. Le seul cas ou cette option
doit tre active, est quand les icnes une fois transformes, occupent plus
de place que les icnes originales (par ex : pour des rsolutions de plus de
256 couleurs).

L'option "SAVE_MEMORY" doit tre indique sur "FALSE" lorsque le programme,
par la suite ne fera accs qu' des icnes au format universel.

Si la mmoire est insuffisante pour la gestion des icnes couleurs, alors
elles seront affiches en noir et blanc.

    10.1.1 Affichage des icnes couleur

La commande xrsrc_load, lors du chargement de ressource, change chaque
icne couleur en format Userdef et inscrit aussi pour chacune d'elles une
routine d'affichage. Ceci afin de pouvoir afficher les icnes 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 icnes en icnes "normales".

    10.1.2 Spcificits du format des icnes couleur
    
      10.1.2.1 le pointeur "ob_spec"
      
Les routines XRSRC transforment directement les icnes 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 sauve sous le paramtre
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 rcuprer 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 paramtre 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'icnes, 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'icnes couleur 
 
Les nouveaux icnes couleurs d'Atari sont documents dans la faon
suivante :

#define G_CICON         33      /* Type d'objet : Icne 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 dfinitions directement depuis votre AES.H

Une icne couleur est ainsi faite que le pointeur ob_spec d'une structure
OBJECT pointe sur une structure ICONBLK. La premire entre de la structure
CICONBLK contient une structure ICONBLK, on peut donc sans problme
utiliser indiffremment une icne couleur ou monochrome.

Une icne couleur est en fait compose de plusieurs icnes couleur
correspondant  chaque rsolution disponible. Le systme, grace  la
commande rsrc_load cherche dans la liste des icnes celle qui est la mieux
adapte  la rsolution actuelle.

Le pointeur "mainlist" de la structure CICONBLK pointe sur une structure
CICON, dans laquelle les donnes image d'une icne sont contenues, et qui
ncessite le "num_planes".

Le pointeur "next_res" de cette structure CICON peut ensuite pointer sur la
prochaine structure CICON correspondant  une autre rsolution. 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 slectionne et le masque slectionn. L'image slectionne sera
affiche,lorsque le status de l'icne sera "SELECTIONN".

Il est aussi possible qu'une icne n'ait aucune image slectionn. Alors,
les 3 et 4me pointeurs contiennent une valeur NULL. Lorsqu'une icne
couleur n'a aucune image slectionne, elle sera affiche en plus fone,
avec un point noir sur l'icne.

       10.1.2.3 Problme de Redraw (raffichage)
       
Lorsque les donnes graphiques d'une image normale et de l'image
slectionne 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'icne.
On peut rsoudre ce problme en redessinant, non seulement l'icne, 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'icne :

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 Icne au format "dpendant de la rsolution"
      
On doit parfois savoir quelles seront les rsolutions rellement utilises
parmi la palette norme de rsolutions disponibles. les routines
XRSRC-CICON ont arrang les choses de faon  ce que l'icne au format
dpendant de la rsolution se trouve toujours en premire place dans la
structure CICON, tout de suite aprs la structure CICONBLK. Ce qui signifie
que le paramtre "mainlist" de la structure CICONBLK pointe toujours sur
l'icne au format dpendant de la rsolution. Le paramtre "next_res" de la
structure CICON du format dpendant de la rsolution pointe sur la premire
structure CICON au format universel.

     10.1.3 Compatibilit de l'icne couleur
     
Les icnes couleur du TOS pour Falcon sont encore au stade de bta-test, on
ne peut donc pas garantir que Interface soit entirement compatible avec
les ressources contenant des icnes 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 compltement initialis par Interface, il n'y a donc
aucune variable  dfinir. Il faut uniquement adapter le ressource  la
rsolution grace  la fonction :

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

NUM_OBS est un fichier *.RH dfini,  qui sera sauvegard en mme temps que
le *.RSH.

  11.2 Ressource dans un module CPX
  
Le code C de sortie de Interface a dja t optimis et il ne convient donc
plus au vieux format RSC d'Atari. Le problme 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 dfinis par Atari lors de la
description de la programmation des CPX.  Dans cette routine, seule la
position des objets sera adapte.

  11.3 Les icnes couleur dans les ressources en C

Il faut bien sr, en C, changer les Icnes 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 icnes couleurs, il faut, lors du dmarrage du
programme, aprs 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 librer la mmoire utilise par la gestion des icnes couleur.
NUM_OBS et nUM_CIB sont dfinis dans le fichier *.RH, qui seront
sauvegards ensemble dans le fichier *.RSH. Dans le dossier CRSHTEST, se
trouve un programme dmontrant ces fonctions.

La routine init_xrsrc renvoie aussi les coordonnes 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 
					  fentre d'unit (disque dur ou lecteur), comme par
					  exemple pour Treeview.
					  
AV_ACCWINDOPEN		:
AV_ACCWINDCLOSE		: Les accessoires annoncent  Interface qu'une fentre
					  vient d'tre ouverte. Interface peut donc maintenant
					  la compter dans la liste des fentres 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 dfaut
  
Interface mmorise tous les fichiers chargs ainsi que leur position, si
bien que, lors du prochain dmarrage, ces ressources seront  nouveau
charges. Il devient alors simple de crer un fichier ressource contenant
tous les objets que l'on a l'habitude d'utiliser.

  13.2 Affichage d'icnes couleurs dans une rsolution monochrome
  
Lorsque l'on charge une icne au format Windows ou OS/2, se pose alors le
problme que ces icnes possdent au minimum 16 couleurs et que l'onne peut
pas, sans beaucoup de difficults les afficher dans des rsolutions
monochromes sauf si :

Premirement, copier l'icne 16 couleurs, avec control-C, dans le
ClipBoard. Ensuite appeler le slecteur 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'insrer le clipboard sur la page avec la touche
Control-V. Et, dans ce cas, seul le fichier .IMG pourra tre rintgr.
L'icne est alors correctement affiche et peut tre facilement
retravaille si ncessaire. 
