  NOM
    pack - gestionnaire de géométrie qui ordonne autour des emplacements vides
  SYNTAXE
    pack option arg ?arg ...?
  DESCRIPTION
    pack slave ?slave ...? ?options?
    pack configure slave ?slave ...? ?options?
      -after autre
      -anchor anchor
      -before autre
      -expand boolean
      -fill style
        none
        x
        y
        both
      -in autre
      -ipadx amount
      -ipady amount
      -padx amount
      -pady amount
      -side side
    pack forget slave ?slave ...?
    pack info slave
    pack propagate maître ?boolean?
    pack slaves maître
  L'ALGORITHME PACKER
  EXPANSION
  PROPAGATION DE LA GEOMETRIE
  RESTRICTIONS POUR LES FENETRES MAITRES
  ORDRE DE DISPOSITION
  MOTS-CLES

### NOM

pack - gestionnaire de géométrie qui ordonne autour des emplacements vides

### SYNTAXE

pack option arg ?arg ...?

### DESCRIPTION

La commande pack est utilisée pour communiquer avec le packer, un gestionnaire de géométrie qui dispose les descendants d'un parent en les arrangeant dans l'ordre autour des limites du parent. LA commande pack peut avoir une parmi plusieurs formes, dépendantes de l'argument option :

pack slave ?slave ...? ?options?
  Si le premier argument de pack est un nom de fenêtre (toute valeur commencant par ``.''), alors la commande est traitée de la même façon que pack configure.

pack configure slave ?slave ...? ?options?
  Les arguments consistent en les noms d'une ou plusieurs fenêtres esclaves suivies par des paires d'arguments qui indiquent comment gérer les esclaves. Voir ``L'ALGORITHME PACKER'' ci-dessous pour les détails sur comment les options sont utilisées par le packer. Les options suivantes sont supportées:

  -after autre
    Autre doit être le nom d'une autre fenêtre. Utilise son maître comme maître des esclaves, et insère les esclaves juste après autre dans l'ordre de disposition.

  -anchor anchor
    Anchor doit être une position d'ancre valide comme n ou sw; indique où positionner chaque esclave dans sa surface. Par défaut à center.

  -before autre
    Autre doit être le nom d'une autre fenêtre. Utilise son maître comme maître des esclaves, et insère les esclaves juste avant autre dans l'ordre de disposition.

  -expand boolean
    Spécifie si les esclaves doivent être étendus pour utiliser l'espace additionel de leurs maîtres. Boolean doit avoir n'importe quelle valeur booléenne correcte, comme 1 ou no. Par défaut à 0.

  -fill style
    Si la surface d'un esclave est plus grande que ses dimensions demandées, cette option peut être utilisée pour étendre l'esclave. Style doit avoir une des valeurs suivantes:

    none
      Donne à l'esclave ses dimensions demandées plus le remplissage interne éventuel demandé avec -ipadx ou -ipady. C'est le comportement par défaut.

    x
      Etend l'esclave horizontalement pour remplir entièrement la largeur de sa surface (excepté le remplissage externe spécifié par -padx).

    y
      Etend l'esclave verticalement pour remplir entièrement la hauteur de sa surface (excepté le remplissage externe spécifié par -pady).

    both
      Etend l'esclave horizontalement et verticalement.

  -in autre
    Insère l'esclave(s) en dernier dans l'ordre de disposition de la fenêtre maître indiquée par autre.

  -ipadx quantité
    Quantité indique le remplissage horizontal interne disposé de chaque coté de l'esclave(s). Quantité doit être une distance écran valide, comme 2 ou .5c. It est par défaut de 0.

  -ipady quantité
    Quantité indique le remplissage vertical interne disposé de chaque coté de l'esclave(s. Quantité est par défaut de 0.

  -padx quantité
    Quantité indique le remplissage horizontal externe disposé de chaque coté de l'esclave(s). Quantité peut être une liste de deux valeurs pour spécifier le remplissage à droite et à gauche séparément. Quantité est par défaut de 0.

  -pady quantité
    Quantité indique le remplissage externe disposé de chaque coté de l'esclave(s). Quantité peut être une liste de deux valeurs pour spécifier le remplissage en haut et en bas séparément. Quantité est par défaut de 0.

  -side side
    Spécifie vers quel coté du maître l'esclave(s) sera plaqué. Doit être left, right, top, ou bottom. Par défaut à top.

  Si aucune option -in, -after ou -before n'est spécifiée alors chacun des esclaves sera inséré à la fin de la liste de disposition de son parent à moins qu'il soit déjà pris en charge par le packer (auquel cas il sera laissé où il est). Si une des deux options est spécifiée alors tous les esclaves seront insérés au point spécifié. Si un des esclaves est déjà pris en charge par le gestionnaire de géométrie alors leurs options non spécifiées récupèrent leurs valeurs précédentes plutot que celles par défaut.

pack forget esclave ?esclave ...?
  Enlève chacun des esclaves de l'ordre de packing de leur maître et libère leurs fenêtres. Les esclaves ne sont plus pris en charge par le packer.

pack info slave
  Retourne une liste dont les éléments sont la configuration courante de l'esclave indiqué par esclave sous la même forme option-valeur qui serait spécifiée à pack configure. Les deux premier éléments de la liste sont ``-in maître'' où maître est le maître de l'esclave.

pack propagate maître ?boolean?
  Si boolean a une valeur booléenne vraie comme 1 ou on alors la propagation est activée pour maître, qui doit être un nom de fenêtre (voir ``PROPAGATION DE LA GEOMETRIE'' ci-dessous). Si boolean a une valeur booléenne fausse alors la propagation est désactivée for maître. Dans chacun de ces cas une chaîne vide est retournée. Si boolean est omis alors la commande retourne 0 ou 1 pour indiquer si la propagation est actuellement activée pour maître. La propagation est activée par défaut.

pack slaves maître
  Retourne une liste de tous les esclaves dans l'ordre de packing pour maître. L'ordre des esclaves dans la liste est le même que leur ordre dans l'ordre de packing. Si maître n'a pas esclaves alors une chaîne vide est retournée.

### L'ALGORITHME PACKER

Pour chaque maître le packer maintient une liste ordonnée des esclaves appelée la packing list. Les options de configuration -in, -after, et -before sont utilisées pour spécifier le maître de chaque slave et la position de l'esclave dans la packing list. Si une des options est indiquée pour un esclave alors l'esclave est ajouté à la fin de la packing list de son parent.

Le packer dispose les esclaves d'un maître en parcourant la packing list dans l'ordre. A l'instant ou il traite chaque esclave, une zone rectangulaire à l'intérieur du maître est toujours non allouée. Cette zone est appelée la cavité; pour le premier esclave c'est la surface entière du maître.

Pour chaque esclave le packer réalise les étapes suivantes:

[1]
  Le packer alloue une parcelle rectangulaire pour l'esclave du coté de la cavité indiquée par l'option de l'esclave -side . Si le coté est le haut ou le bas alors la largeur de la parcelle est la largeur de la cavité et sa hauteur est la hauteur demandée pour l'esclave plus les options -ipady et -pady. Pour les cotés gauche ou droit la hauteur de la parcelle est la hauteur de la cavité et la largeur est la largeur demandée de l'esclave plus les options -ipadx et -padx. La parcelle peut être agrandie plus tard à l'aide de l'option -expand (voir ``EXPANSION'' ci-dessous)

[2]
  Le packer choisit les dimensions de l'esclave. La largeur sera normalement celle demandée pour l'esclave plus deux fois son option -ipadx et la hauteur sera normalement la hauteur demandée plus deux fois son option-ipady. Néanmoins, si l'option -fill est x ou both alors la largeur de l'esclave est étendue pour remplir la largeur de la parcelle, moins deux fois l'option -padx . Si l' option -fill est y ou both alors la hauteur de l'esclave est augmentée pour remplir la largeur de la parcelle, moins deux fois l'option -pady .

[3]
  Le packer positionne l'esclave au-dessus de sa parcelle. Si l'esclave est plus petit que la parcelle alors l'option -anchor détermine où l'esclave sera placé dans la parcelle. Si -padx ou -pady sont différents de zéro, alors la donné quantité de remplissage externe sera toujours laissée entre l'esclave et les limites de la parcelle.

Une fois qu'un esclave donné a été packé, la surface de sa parcelle est soustraite de la cavité, laissant une cavité rectangulaire plus petite pour l'esclave suivant. Si un esclave n'utilise pas toute sa parcelle, l'espace restant dans la parcelle ne sera pas utilisé par les esclaves suivants. Si la cavité doit devenir trop petite pour satisfaire les besoins d'un esclave,il lui sera donné l'espace restant dans la cavité. Si la cavité se reduit à une taille nulle, alors tous les esclaves restant dans la packing list seront enlevés de l'ecran jusqu'à ce que la fenêtre maître redevienne assez vaste pour les acceuillir tous.

### EXPANSION

Si une fenêtre maître est tellement grande qu'il reste de l'espace au-dessus une fois que tous les esclaves ont été packés, alors l'espace supplémentaire est distribué uniformément entre tous les esclaves pour lesquels l'option -expand est fixée. L'espace horizontal est distribué entre les esclaves expansibles dont l'option -side est left ou right, et l'espace vertical est distribué entre les esclaves expansibles dont l'option -side est top ou bottom.

### PROPAGATION DE LA GEOMETRIE

Le packer calcule normalement la taille du maître pour qu'il satisfasse exactement les besoins des ses esclaves, et fixe la largeur et hauteur demandée du maître à ces dimensions. Ceci provoque la propagation de l'information de géometrie au travers de la hiérarchie des fenêtres jusqu'à la fenêtre top-level donc le sous-arbre entier modifie sa taille pour satisfaire les besoins des fenêtres feuilles. Néanmoins, la commande pack propagate peut être utilisée pour désactiver la propagation pour un ou plusieurs maîtres. Si la propagation est désactivée alors le packer ne fixera pas la largeur et la hauteur demandée du maître. Ceci peut être utile si, par exemple, vous souhaitez spécifier une taille fixe pour une fenêtre maître.

### RESTRICTIONS POUR LES FENETRES MAITRES

Le maître de chaque slave doit aussi être le parent de l'esclave (par défaut) ou un descendant du parent de l'esclave. Cette restriction est nécessaire pour garantir que l'esclave peut être placé au-dessus de n'importe quelle partie visible du maître sans danger que l'esclave soit réduit par son parent.

### PACKING ORDER

Si le maître d'un esclave n'est pas son parent alors vous devez vous assurer que l'esclave est au dessus du maître dans l'ordre d'empilement. Autrement le maître cachera l'esclave et il apparaîtra que l'esclave n'a pas été packé correctement. Le moyen le plus facile de s'assurer que l'esclave est au dessus du maître est de créer la fenêtre maître en premier: la fenêtre la plus récemment créée sera plus haute dans l'ordre d'empilement. Ou, vous pouvez utiliser les commandes raise et lower pour changer l'ordre d'empilement soit du maître soit de l'esclave.

### MOTS-CLES

gestionnaire de géométrie, location, packer, parcel, propagation, size

    Copyright © 1990-1994 The Regents of the University of California.
    Copyright © 1994-1996 Sun Microsystems, Inc.
    Copyright © 1995-1997 Roger E. Critchlow Jr.

Copyright © 2003 - Le Portail Tcl/Tk Francophone.