[Squeak-fr] tutorial sur les TableLayout. : traduction libre

ducasse ducasse at iam.unibe.ch
Mar 30 Sep 09:22:35 CEST 2003


Je vous suggere d'utiliser le wiki francophone comme cela d'autre 
peuvent le lire sans etre dans la mailing-list

http://www.iutc3.unicaen.fr:8000/fsug/

stef

On Lundi, sep 29, 2003, at 22:03 Europe/Zurich, Alexandre Benoit wrote:

> Carette.pierre-marie a écrit:
>
>> J'ai essaye de traduire le tutoriel. Mais certains passages me sont 
>> incomprehensibles ou restent imprecis par ignorance de Squeak de ma 
>> part.
>> Je vous laisse la traduction au bon soin d'en corriger les erreurs et 
>> si cela vous semble utile, de la mettre toute belle dans le 
>> squeak.fr... Bon courage et Merci
>>
> J'ai commencé à tout relire et à tout reprendre en espérant apporter 
> un mieux. J'ai surtout rajouté les accents par ce que le français sans 
> accents c'est vraiment pas beau. J'ai aussi systématiquement enlevé 
> l'espace que tu avais mis entre # et le nom des propriétés par ce que 
> je suis pas sûr que squeak apprécie si il les trouve.
> Mais c'est un long travail et j'arriverai pas au bout en une seule 
> fois.
>
> Le truc ultime ce serait bien sûr de faire une version en français du 
> fichier .pr
>
> En tous les cas merci à pierre-marie pour ce travail courageux.
>
> Alexandre
>
>>
>> 1. Vue d'ensemble des agencements en tableau.
>>
>>
>> Les agencements en tableau (table layouts) (cadrages d'AKA) 
>> définissent une disposition générale mono ou  bidimensionnelle des 
>> submorphs.
>>
>> 1.1 Paramètres communs des agencements.
>>
>> XXXXXXXX
>>
>> Exemple 1 : Paramètres communs des agencements en tableau.
>>
>> #layoutInset : écart entre les bords internes du contenant et ceux 
>> des morphs contenus. Les écarts sont identiques entre les bords 
>> bas-droite des morphs inclus et incluant et les bords haut-gauche.
>>
>> #cellInset : permet  le réglage de la distance entre deux léméents de 
>> l'arangement. cellInset est une paire de coordonnées dont l'abcisse 
>> indique la distnace qui sépare horizontalement les morphs. L'ordonnée 
>> indique elle la distance qui sépare les morphs verticalement.
>
>>
>> #listDirection :   il s'agit de la direction principale de 
>> l'agencement. Quatre directions sont possibles :  #leftToRight, 
>> #rightToLeft, #topToBottom, ou #bottomToTop (gauche à droite, droite 
>> à gauche, du haut vers le bas, du bas vers le haut).
>> Si #wrapDirection  n'est pas définie, l'agencement est une liste 
>> unidimensionnelle.
>>
>> # wrapDirection :  il s'agit de la direction secondaire de 
>> l'agencement. Elle est utilisée s'il n'y a pas assez d'espace sur une 
>> ligne de la direction principale.
>> Cinqs directions sont possibles : #leftToRight, #rightToLeft, 
>> #topToBottom, #bottomToTop) et #none  indiquant que l'agencement est 
>> unidimensionnel.
>>
>> Note : layoutInset est une propriété générale qui s'applique à toute 
>> sorte d'agencement.
>> Les autres propriétés ne concernent que les agencements en tableau.
>>
>> 1.2 Contraintes communes au reformatage des morphs.
>>
>> Deux propriétés (#hResizing et #vResizing) contrôlent les contraintes 
>> sur les dimensions du morph.
>>  Si le reformatage est
>> #spaceFill, le morph occupe tout l'espace qui lui est offert par le 
>> morph qui le contient. La contrainte est donc donnée par le morph qui 
>> contient notre morph avec TableLayout.
>> #shrinkWrap,  le morph entoure étroitement tous ses enfants. La 
>> contrainte n'est plus donnée par le père mais par les enfants.
>> #rigid, aucune contrainte n'est spécifiée. Le reformatage automatique 
>> n'a pas lieu.
>>
>>             XXXXXXXXXXXXXX
>>                     Figure 2: Exemple de constraintes sur les 
>> dimensions
>>
>>
>> Quelques sont remarques nécessaires :
>> Le reformatage  #spaceFill ne s'applique que si le morph père possède 
>> une police d'agencement acitve et réglée de type TableLayout. Sans ça 
>> la contrainte #spaceFill est équivalente à #rigid.
>>
>> Exemple :
>> 1) Poser la contrainte #shrinkWrap sur le rectangle jaune (en 
>> cliquant sur le boutton prévu à effet).
>> 2) Supprimer la police d'arrangement du rectangle rouge. Pour ce 
>> faire dans le menu  du halo du rectangle  sélectionner 'layout' puis 
>> 'no layout'. Le menu du rectangle s'obtient en cliquant plusieurs 
>> fois avec le bouton halo de la souris jusqu'à ce que ce soit le halo 
>> du rectangle rouge qui apparaisse.
>> 3) Poser la contrainte #shrinkFill sur le rectangle jaune, le 
>> rectangle jaune ne rempli pas le rectangle rouge comme on pourrait 
>> s'y attendre.
>> 4) Mettre une police d'arrange 'table layout' sur le rectangle rouge. 
>> Cette fois le rectangle jaune remplit le rectangle rouge.
>>
>> La contrainte  #shrinkWrap ne s'applique que si le morph a des 
>> enfants. Si le morph n'a pas d'enfants la contrainte #shrinkWrap se 
>> comporte comme la contrainte #rigid  (le morph ne se reformatera pas 
>> automatiquement).
>
> La suite de ma relecture pour bientôt si elle intéresse du monde.
>
>>
>> Le cas  morph  #spaceFill  inclus dans un morph  #shrinkWrap  depend 
>> d'une propriete supplementaire : # rubberBandCells :
>> Si elle est "vraie"   le format minimal sera choisi
>>
>> Ainsi, si #rubberBandCells est vrai,  l'agencement ne peut jamais 
>> etre automatique (rappelez-vous, n'importe quelle disposition 
>> calculee aura comme consequence la taille minimale). Mais si 
>> #rubberBandCells est  faux, le reformatage sera incrementalement 
>> calcule.
>>
>> XXXXXXXXXXXX
>>             * Exemple 3 : L'effet de # rubberBandCells
>>
>> A gauche, #rubberBandCells vrai  :  taille minimale possible .
>> A droite  # rubberBandCells faux : le rectangle (rouge) externe est 
>> reformate.
>>
>> La strategie appropriee n'est pas toujours la meme.  Le developpeur 
>> pense en taille minimale, mais l'usager desire pouvoir la modifier.
>>
>> 2. Le processus d'agencement
>>
>> Le processus de disposition est declenche par le message #fullBounds 
>> envoye au  morph.
>> Si le recepteur a besoin d'un reformatage,  il declenche le processus 
>> par Morph>>doLayoutIn : newBounds
>>
>>  Il s'appelle  de deux endroits differents (one of which is 
>> #fullBounds and the other one is through the recursive layout process 
>> which is covered later on).
>> La methode calcule  d'abord les dimensions nouvelles des submorphs 
>> puis applique  ensuite les contraintes du morph incluant aux 
>> dimensions nouvelles des submorphs.
>>
>> 2.1 Calcul des dimensions nouvelles des submorphs 
>> (LayoutPolicy>>layout:in:)
>> Cette methode debute le processus  . Elle prend un certain morph 
>> comme argument et calcule  le nouvel agencement de son submorph base 
>> sur les ->LayoutProperties d'arguments et ses ->LayoutProperties de 
>> submorphs.
>>
>> Pour les formats en tableau le processus a quatre phases. Dans la 
>> premiere etape, les tailles minimales sont calculees pour tous les 
>> submorphs . Puis  tailles minimales et agencement actuel des morphs 
>> permettent un nouveau calcul  La troisieme etape repartie les espaces 
>> restant. Enfin les nouvelles limites de chaque morph sont definies.
>>
>> 2.2 Calcul des tailles minimales
>>  la premiere etape  enumere les submorphs et calcule la taille 
>> minimale possible de chacun. Trois facteurs sont pris en compte :
>> # minExtent enregistre  par un submorph, # minCellSize enregistre par 
>> le proprietaire,  et # maxCellSize enregistre par le proprietaire.
>> Tous les deux, # minCellSize et # maxCellSize   limite # minExtent 
>> enregistre par le morph. Cette etape delaisse un certain nombre 
>> d'autres proprietes pour aller plus rapidement.
>>
>> Proprietes utilisees du morphs incluant :
>> # minCellSize
>> # maxCellSize
>> # reverseTableCells
>>
>> Truc : Rendre egales # minCellSize  et  # maxCellSize du morph 
>> incluant obligent les elements a adopter la meme taille
>>
>> Proprietes utilisees des morphs inclus :
>> # disableTableLayout -voir plus loin
>> # minWidth - voir plus loin
>> # minHeight - voir plus loin
>>
>> 2.3 Calcul de l'agencement
>> cette etape   prend en compte l'agencement anterieur, les limites 
>> precedentes et nouvelles, et les tailles minimales ci-dessus 
>> calculees, et calcule un agencement fonde sur
>>
>> Proprietes utilisees du morph incluant
>> # listDirection
>> # wrapDirection
>> # listSpacing
>> # cellSpacing
>> # cellInset
>>
>> Proprietes utilisees du morpph inclus : <none>
>>
>> 2.4 Redistribuer l'espace disponible
>>
>> Proprietes utilisees du morph incluant :
>> # rubberBandCells
>> # hResizing
>> # vResizing
>> # listCentering
>> # wrapCentering
>>
>> Proprietes utilisees des morphs inclus:
>> # hResizing
>> # vResizing
>> # spaceFillWeight
>>
>> 2.5 Faire appliquer les nouvelles limites par chaque sous-morphs
>>   (par Morph>>layoutInBounds : les newBounds)
>> Les morphs  s'inscrivent dans les limites calculees.
>>
>> Proprietes utilisees du morph incluant :
>> # cellPositioning
>> Proprietes utilisees des sous-morphs :
>> # hResizing
>> # vResizing
>>
>> 2.6 Appliquer les contraintes de formatage
>> Si une des proprietes  (# hResizing, et # vResizing) est  # 
>> shrinkWrap le morph incluant  est ajuste a la somme des dimensions de 
>> ses submorphs (dans Morph>>adjustLayoutBounds). Ceci est fait (dans 
>> #adjustLayoutBounds) de sorte que la taille ajustee ne devienne pas 
>> plus petite que la largeur ou la taille minimale definie par le 
>> recepteur (voir egalement : 'tailles minimales de calcul pour 
>> width/height minimal).
>>
>> 3. Description de toutes les proprietes liees aux agencements
>>
>> Quelques details supplementaires....
>>
>> 3.1 Proprietes d'enfant :
>>
>> # hResizing definit les contraintes de la côte horizontale.
>> Valeurs possibles :  # rigide, # shrinkWrap, et # spaceFill.
>>
>> # vResizing
>> Definit les contraintes de la côte verticale.
>> Valeurs possibles :  # rigide, # shrinkWrap, et # spaceFill.
>>
>> # disableTableLayout
>> Cette propriete exclut un submorph du processus general d'agencement
>>  (voir le schema 1 dans lequel tous les elements decoratifs ont ete 
>> exclus de la disposition de table).
>>
>> # spaceFillWeight
>>  Cette propriete definit la  priorite de chaque submorphs lors des 
>> conflits concernannt la contrainte #paceFill
>>
>> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
>>                            Exemple 4 : L'effet de # spaceFillWeight
>>
>>
>> # minWidth          largeur minimale d'un morph.
>>
>> # minHeight        taille minimale d'un morph.
>>
>>
>> 3.2 Proprietes du morph incluant :
>>
>>  # cellInset    distance entre deux elements dans un tableau (voir 
>> l'exemple 1).
>>
>> # cellPositioning    definit comment un submorph s'aligne dans les 
>> limites calculees.
>> Dans beaucoup de cas, les limites calculees n'adapteront pas un 
>> submorph exactement (comme une liste contenant des elements avec 
>> differentes tailles). # la propriete cellPositioning definit ou les 
>> limites du submorph et les limites calculees  devraient etre >> alignees.
>> Valeurs possibles :  # topLeft, # topRight, #
>> bottomLeft, # bottomRight, # leftCenter, # rightCenter, # topCenter, #
>> bottomCenter, et # center.
>>
>> # cellSpacing     inutilise et a ne plus utiliser
>>
>> # layoutInset
>> L'encart (symetrique) a utiliser pour la disposition d'enfant. Base 
>> sur les limites interieures du proprietaire (par exemple, les limites 
>> dans tout cadre) des encarts de cette propriete l'agencement calcule 
>> entier bon du coin gauche et inferieur superieur.
>>
>> # listDirection         direction 'primaire 'de liste
>> Valeurs possibles : # leftToRight, # rightToLeft, # topToBottom, et # 
>> bottomToTop (voir l'exemple 1).
>>
>> # listCentering     decrit comment tous les submorphs doivent 
>> s'aligner dans les limites du morphs incluant si'il reste de l'espace 
>> disponible
>> Valeurs possibles sont # topLeft, # bottomRight, # ccenter, et # 
>> justified.
>>
>> XXXXXXXX
>>                                    Exemple 5 : Different # valeurs 
>> listCentering (# topLeft, # centre, #
>> bottomRight, # justifie)
>>
>> # listSpacing         definit si les differentes lignes ont la meme 
>> taille ou pas.
>> Valeurs possibles: # none ( tailles inegales) et # egal (tailles 
>> egales ).
>>
>> # reverseTableCells     Si vrais, tous les submorphs sont utilises 
>> dans l'ordre des inverse des submorphs.
>>
>> # rubberBandCells     regle le cas  ou coexistent # spaceFill et # 
>> shrinkWrap  Voir l'exemple 3
>>
>> # wrapDirection        direction a suivre dans un tableau ou l'espace 
>> est insuffisant
>> . # none indique qu'aucun retour (wrapping) n'aura lieu. Sinon les 
>> submorphs suuivront la direction indiquee : # topToBottom, # 
>> bottomToTop, # leftToRight, ou #rightToLeft.
>>
>> # wrapCentering    equivalent de # listCentering, s'applique aux 
>> lignes entieres
>>
>> # minCellSize         taille minimale pour chaque element dans un 
>> tableau
>>
>> # maxCellSize        taille maximum pour chaque element dans un 
>> tableau
>>
>>
>> 4. Differences connues avec AlignmentMorphs
>>
>> Il y a quelques differences entre la façon dont AlignmentMorphs 
>> fonctionnait et la façon dont le nouvel agencement en tableau 
>> fonctionne.
>>
>> 4.1 Vieux #spaceFill
>>
>> # spaceFill  etait interpretee comme # shrinkWrap quand un morph 
>> n'etait pas inclus dans un autre AlignmentMorph.  Ce n'est plus le 
>> cas et # spaceFill doit etre change en # shrinkWrap
>>
>> 4.2 Correspondances entre les variables d'instance et les proprietes 
>> d'agencement
>>
>> # orientation
>> Surchargee  par # listDirection (orientation etait seulement 
>> #horizontal ou # vertical ; #listDirection est plus precise).
>>
>> # centering
>> Fondamentalement remplace par # wrapCentering. # centering  
>> definissait le placement d'une ligne entiere (ou de la colonne) pour 
>> le calcul. C'est l'equivalent de # wrapCentering. La conversion 
>> reelle est un peu plus compliquee puisque le positionnement des 
>> elements dans les limites calculees (par exemple, # cellPositioning) 
>> doit etre aussi bien change.
>>
>> # hResizing/# vResizing les deux proprietes ont fondamentalement la 
>> meme signification a l'exception notee dans la section 4.1.
>>
>> # encart            equivalent de # layoutInset.
>>
>> # minCellSize        equivalent de # minCellSize
>>
>> _______________________________________________
>> Squeak-fr mailing list
>> Squeak-fr at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/listinfo/squeak-fr
>>
>>
>
>
>
> _______________________________________________
> Squeak-fr mailing list
> Squeak-fr at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/listinfo/squeak-fr
>
-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: non disponible
Type: text/enriched
Taille: 14013 octets
Desc: non disponible
Url: http://lists.squeakfoundation.org/pipermail/squeak-fr/attachments/20030930/904cabb2/attachment.bin


Plus d'informations sur la liste de diffusion Squeak-fr