  NOM
    text, tk_textCopy, tk_textCut, tk_textPaste - Crée et manipule les widgets texte
  SYNTAXE
    text pathName ?options?
    tk_textCopy pathName
    tk_textCut pathName
    tk_textPaste pathName
  OPTIONS STANDARD
    -background ou -bg, background, Background
    -borderwidth ou -bd, borderWidth, BorderWidth
    -cursor, cursor, Cursor
    -exportselection, exportSelection, ExportSelection
    -font, font, Font
    -foreground ou -fg, foreground, Foreground
    -highlightbackground, highlightBackground, HighlightBackground
    -highlightcolor, highlightColor, HighlightColor
    -highlightthickness, highlightThickness, HighlightThickness
    -insertbackground, insertBackground, Foreground
    -insertborderwidth, insertBorderWidth, BorderWidth
    -insertofftime, insertOffTime, OffTime
    -insertontime, insertOnTime, OnTime
    -insertwidth, insertWidth, InsertWidth
    -padx, padX, Pad
    -pady, padY, Pad
    -relief, relief, Relief
    -selectbackground, selectBackground, Foreground
    -selectborderwidth, selectBorderWidth, BorderWidth
    -selectforeground, selectForeground, Background
    -setgrid, setGrid, SetGrid
    -takefocus, takeFocus, TakeFocus
    -xscrollcommand, xScrollCommand, ScrollCommand
    -yscrollcommand, yScrollCommand, ScrollCommand
  OPTIONS SPECIFIQUES AU WIDGET
    -height, height, Height
    -spacing1, spacing1, Spacing1
    -spacing2, spacing2, Spacing2
    -spacing3, spacing3, Spacing3
    -state, state, State
    -tabs, tabs, Tabs
    -width, width, Width
    -wrap, wrap, Wrap
  DESCRIPTION
  INDICES
    line.char
    @x,y
    end
    mark
    tag.first
    tag.last
    pathName
    .VS
    + count chars
    - count chars
    + count lignes
    - count lignes
    linestart
    lineend
    wordstart
    wordend
  TAGS
    -background color
    -bgstipple bitmap
    -borderwidth pixels
    -elide boolean
    -fgstipple bitmap
    -font fontName
    -foreground color
    -justify justify
    -lmargin1 pixels
    -lmargin2 pixels
    -offset pixels
    -overstrike boolean
    -relief relief
    -rmargin pixels
    -spacing1 pixels
    -spacing2 pixels
    -spacing3 pixels
    -tabs tabList
    -underline boolean
    -wrap mode
  MARKS
  FENETRES INCRUSTEES
    -align where
    -create script
    -padx pixels
    -pady pixels
    -stretch boolean
    -fenêtre pathName
  IMAGES INCRUSTEES
    -align where
    -image image
    -nom ImageName
    -padx pixels
    -pady pixels
  LA SELECTION
  LE CURSEUR D'INSERTION
  COMMANDES DE WIDGET
    pathName bbox index
    pathName cget option
    pathName compare index1 op index2
    pathName configure ?option? ?valeur option valeur ...?
    pathName debug ?boolean?
    pathName delete index1 ?index2?
    pathName dlineinfo index
    pathName dump ?commutateurs? index1 ?index2?
    -all
    -command commande
    -image
    -mark
    -tag
    -text
    -window
    pathName get index1 ?index2?
    pathName image option ?arg arg ...?
      pathName image cget index option
      pathName image configure index ?option valeur ...?
      pathName image create index ?option valeur ...?
      pathName image names
    pathName index index
    pathName insert index chars ?tagList chars tagList ...?
    pathName mark option ?arg arg ...?
      pathName mark gravity markName ?direction?
      pathName mark names
      pathName mark next index
      pathName mark previous index
      pathName mark set markName index
      pathName mark unset markName ?markName markName ...?
    pathName scan option args
      pathName scan mark x y
      pathName scan dragto x y
    pathName search ?commutateurs? modèle index ?stopIndex?
      -forwards
      -backwards
      -exact
      -regexp
      -nocase
      -count varName
      -elide
      - -
    pathName see index
    pathName tag option ?arg arg ...?
      pathName tag add tagName index1 ?index2 index1 index2 ...?
      pathName tag bind tagName ?séquence? ?script?
      pathName tag cget tagName option
      pathName tag configure tagName ?option? ?valeur? ?option valeur ...?
      pathName tag delete tagName ?tagName ...?
      pathName tag lower tagName ?belowThis?
      pathName tag names ?index?
      pathName tag nextrange tagName index1 ?index2?
      pathName tag prevrange tagName index1 ?index2?
      pathName tag raise tagName ?aboveThis?
      pathName tag ranges tagName
      pathName tag remove tagName index1 ?index2 index1 index2 ...?
    pathName window option ?arg arg ...?
      pathName window cget index option
      pathName window configure index ?option valeur ...?
      pathName window create index ?option valeur ...?
      pathName window names
    pathName xview option args
      pathName xview
      pathName xview moveto fraction
      pathName xview scroll numéro what
    pathName yview ?args?
      pathName yview
      pathName yview moveto fraction
      pathName yview scroll numéro what
      pathName yview ?-pickplace? index
      pathName yview numéro
  BINDINGS
  PERFORMANCE ISSUES
  MOTS-CLES

### NOM

text, tk_textCopy, tk_textCut, tk_textPaste - Crée et manipule les widgets texte

### SYNTAXE

text pathName ?options?
tk_textCopy pathName
tk_textCut pathName
tk_textPaste pathName

### OPTIONS STANDARD

-background ou -bg, background, Background
-borderwidth ou -bd, borderWidth, BorderWidth
-cursor, cursor, Cursor
-exportselection, exportSelection, ExportSelection
-font, font, Font
-foreground ou -fg, foreground, Foreground
-highlightbackground, highlightBackground, HighlightBackground
-highlightcolor, highlightColor, HighlightColor
-highlightthickness, highlightThickness, HighlightThickness
-insertbackground, insertBackground, Foreground
-insertborderwidth, insertBorderWidth, BorderWidth
-insertofftime, insertOffTime, OffTime
-insertontime, insertOnTime, OnTime
-insertwidth, insertWidth, InsertWidth
-padx, padX, Pad
-pady, padY, Pad
-relief, relief, Relief
-selectbackground, selectBackground, Foreground
-selectborderwidth, selectBorderWidth, BorderWidth
-selectforeground, selectForeground, Background
-setgrid, setGrid, SetGrid
-takefocus, takeFocus, TakeFocus
-xscrollcommand, xScrollCommand, ScrollCommand
-yscrollcommand, yScrollCommand, ScrollCommand

### OPTIONS SPECIFIQUES AU WIDGET

Command-Line Name: -height
Database Name: hauteur
Database Class: Height
  Spécifie la hauteur désirée de la fenêtre, en unités de caractères de la police indiquée par l'option -font. Doit être au moins de un.

Command-Line Name: -spacing1
Database Name: spacing1
Database Class: Spacing1
  Demande de l'espace supplémentaire au dessus de chaque ligne de texte dans le widget, en utilisant n'importe quelle des formes standard de distances écran. Si une ligne retourne, cette option s'applique seulement à la première ligne à l'écran. Cette option peut être surchargée avec les options -spacing1 des tags.

Command-Line Name: -spacing2
Database Name: spacing2
Database Class: Spacing2
  Pour les lignes lignes qui retournent (wrap N.D.T. qui occupent plus d'une ligne à l'écran), cette option indique l'espace supplémentaire ajouté entre les lignes à l'écran qui representent une seule ligne de texte. La valeur doit avoir n'importe quelle des formes standard de distances écran. Cette option peut être surchargée avec les options -spacing2 des tags.

Command-Line Name: -spacing3
Database Name: spacing3
Database Class: Spacing3
  Demande de l'espace supplémentaire en dessous de chaque ligne de texte dans le widget, en utilisant n'importe quelle des formes standard de distances écran. Si une ligne retourne, cette option s'applique seulement à la dernière ligne à l'écran. Cette option peut être surchargée avec les options -spacing3 des tags.

Command-Line Name: -state
Database Name: state
Database Class: State
  Spécifie un parmi deux états du texte: normal ou disabled. Si le texte est désactivé alors les caractères ne seront pas insérés ou effacés et aucun curseur d'insertion ne sera affiché, même si le focus est dans le widget.

Command-Line Name: -tabs
Database Name: tabs
Database Class: Tabs
  Spécifie un ensemble de taquets de tabulation pour la fenêtre. La valeur de l'option consiste en une liste de distances écran donnant les positions des taquets de tabulation. Chaque position peut éventuellement être suivie dans la liste par un des MOTS-CLES left, right, center, ou numeric, qui indique comment justifier le texte relativement au taquet de tabulation. Left est par défaut; ceci provoque l'alignement à gauche du texte suivant le caractère de tabulation. Right signifie que le coté droit du texte suivant le caractère de tabulation est positionné au taquet de tabulation, et center signifie que le texte est centré par rapport au taquet de tabulation. Numeric signifie que le point décimal dans le texte est positionné au taquet de tabulation; s'il n'y a pas de point décimal alors le chiffre le moins signifiant du nombre est positionné juste à gauche du taquet de tabulation; s'il n'y a pas de nombre dans le texte alors le texte est justifié à droite au taquet de tabulation. Par exemple, -tabs {2c left 4c 6c center} crée trois taquets de tabulation à des intervalles de deux centimètres; les deux premiers utilisent une justification à gauche et le troisième utilise une justification centrée. Si la liste de taquets de tabulation n'a pas assez d'éléments pour couvrir toutes les tabulations d'une ligne de texte, alors Tk extrapole de nouveaux taquets de tabulation en utilisant l'espacemement et l'alignement du dernier taquet de la liste. La valeur de l'option tabs peut être surchargée par les options -tabs des tags. Si aucune option -tabs n'est spécifiée, ou si elle est spécifiée comme une liste vide, alors Tk utilise les tabulations par défaut espacées chaque huit (taille moyenne) caractères.

Command-Line Name: -width
Database Name: width
Database Class: Width
  Spécifie la largeur désirée de la fenêtre en unités de caractères de la police indiquée par l'option -font. Si la police de caractère n'a pas une largeur uniforme alors la largeur du caractère ``0'' est utilisée pour la traduction d'unités caractère en unités d'écran.

Command-Line Name: -wrap
Database Name: wrap
Database Class: Wrap
  Spécifie comment gérer les lignes dans le texte qui sont trop longues pour être affichées sur une seule ligne de la fenêtre texte. La valeur doit être none ou char ou word. Un mode wrap de none signifie que chaque ligne de texte apparaît exactement comme une ligne à l'écran; les caractères qui ne rentrent pas à l'écran ne sont pas affichés. Dans les autres modes chaque ligne de texte sera divisée en plusieurs lignes écran si nécessaire pour rendre tous les caractères visibles. Dans le mode char le retour à la ligne se produit après n'importe quel caractère; dans le mode word le retour à la ligne se produit seulement après les limites d'un mot.

### DESCRIPTION

La commande text crée une nouvelle fenêtre (indiquée par l'argument pathName ) et en fait un widgettext . Des options supplémentaires, décrites ci-dessus, peuvent être spécifiées sur la ligne de commande ou dans la base de données d'options pour configurer les aspects du texte comme sa couleur d'arrière-plan par défaut et son relief. La commande text retourne the nom de chemin de la nouvelle fenêtre.

Un widget text affiche une ou plusieurs lignes de texte et permet l'édition de ce texte. Les widgets text supportent quatre différentes sortes d'annotations dans le texte, appelées tags, marks, fenêtres incrustées ou images incrustées. Les tags permettent à différentes parties du texte d'être affichées avec des polices et couleurs différentes. De plus, des commandes Tcl peuvent être associées aux tags, ainsi ces scripts sont appelés quand des actions particulières comme des frappes de touches et des clics de souris se produisent dans des étendues particulières du texte. Voir TAGS ci-dessous pour plus de détails.

La seconde forme d'annotation consiste en les marks, qui sont des marqueurs flottants dans le texte. Les marks sont utilisés pour garder une trace de diverses positions interessantes dans le texte quand il est edité. Voir MARKS ci-dessous pour plus de détails.

La troisième forme d'annotation permet l'incrustation de fenêtres arbitraires dans un widget texte. Voir FENETRES INCRUSTEES ci-dessous pour plus de détails.

La quatrième forme d'annotation permet l'incrustation d'images Tk dans un widget texte. Voir IMAGES INCRUSTEES ci-dessous pour plus de détails.

### INDICES

Plusieurs des commandes du widget texte attendent un ou plusieurs indices comme arguments. Un index est une chaîne utilisée pour indiquer un emplacement particulier à l'intérieur du texte, comme un emplacement pour inserer des caractères ou le point final d'un intervalle de caractères à effacer. Les indices ont la syntaxe

    base modificateur modificateur modificateur ...

Où base indique le point de départ et le modificateurs ajuste l'index à partir du point de départ(ex. avance ou recule d'un caractère). Chaque index doit contenir une base, mais les modificateurs sont optionnels.

La base d'un index doit avoir une des formes suivantes:

line.char
  Indique le char'ième caractère de la ligne line. Les lignes sont numérotées à partir de 1 pour compatibilité avec d'autres programmes UNIX qui utilisent ce schéma de numérotage. A l'intérieur d'une ligne, les caractères sont numérotés en partant de 0. Si char est end alors il se réfère au caractère newline qui termine la ligne.

@x,y
  Indique le caractère qui occupe le pixel dont les coordonnées x et y dans la fenêtre de texte sont x et y.

end
  Indique la fin du texte (le caractère juste après le dernier newline).

mark
  Indique le caractère juste après la mark dont le nom est mark.

tag.first
  Indique le premier caractère dans le texte qui a été repéré avec tag. Cette forme génère une erreur si aucuns caractères ne sont actuellement repérés avec tag.

tag.last
  Indique le caractère juste après le dernier dans le texte qui a été repéré avec tag. Cette forme génère une erreur si aucuns caractères ne sont actuellement repérés avec tag.

pathName
  Indique la position de la fenêtre incrustée dont le nom est pathName. Cette forme génère une erreur s'il n'y a pas de fenêtre incrustée de ce nom.

.VS
  imageName Indique la position de l'image incrustée dont le nom est imageName. Cette forme génère une erreur s'il n'y a pas d'image incrustée de ce nom.

Si la base correspond à plus d'une des formes ci dessus, comme une mark et imageName ayant tous deux la même valeur, alors la forme qui apparait en premier dans la liste prend le dessus. Si des modificateurs suivent l'index de base, chacun d'entre eux doit avoir une des formes listées ci-dessous. Les MOTS-CLES comme chars et wordend peuvent être abrégés tant que l'abréviation n'est pas ambigüe.

+ count chars
  Ajuste l'index vers l'avant de count caractères, en se déplaçant vers les lignes suivantes dans le texte si nécessaire. Si il y a moins que count caractères dans le texte après l'index courant, alors fixe l'index au dernier caractère du texte. Les espaces de part et d'autre de count sont optionnels.

- count chars
  Ajuste l'index vers l'arrière de count caractères, en se déplaçant vers les lignes précédentes dans le texte si nécessaire. Si il y a moins que count caractères dans le texte avant l'index courant, alors fixe l'index au premier caractère du texte. Les espaces de part et d'autre de count sont optionnels.

+ count lines
  Ajuste l'index vers l'avant de count lignes, gardant la même position de caractère à l'intérieur de la ligne. Si il y a moins que count lignes après la ligne contenant l'index courant, alors fixe l'index à la même position de caractère sur la dernière ligne du texte. Ensuite, si la ligne n'est pas assez longue pour contenir un caractère à la position indiquée, ajuste la position du caractère au dernier caractère de la ligne (le newline). Les espaces de part et d'autre de count sont optionnels.

- count lines
  Ajuste l'index vers l'arrière de count lignes, en conservant la même position de caractère à l'intérieur la ligne. Si il y a moins que count lignes avant la ligne contenant l'index courant, alors fixe l'index à la même position de caractère sur la première ligne du texte. Ensuite, si la ligne n'est pas assez longue pour contenir un caractère à la position indiquée, ajuste la position du caractère au dernier caractère de la ligne (le newline). Les espaces de part et d'autre de count sont optionnels.

linestart
  Ajuste l'index au premier caractère de la ligne.

lineend
  Ajuste l'index au dernier caractère de la ligne (the newline).

wordstart
  Ajuste l'index au premier caractère du mot contenant l'index courant. Un mot consiste en n'importe quel nombre de caractères adjacents qui sont des lettres, chiffres, ou underscores, ou un seul caractère qui n'est pas l'un d'eux.

wordend
  Ajuste l'index au caractère juste après le dernier des mots contenant l'index courant. Si l'index courant se réfère au dernier caractère du texte alors il n'est pas modifié.

Si plus d'un modificateur est présent alors ils sont appliqués dans l'ordre de gauche à droite. Par exemple, l'index ``end - 1 chars'' se réfère au caractère précédant le dernier dans le texte et ``insert wordstart - 1 c'' se réfère au caractère juste avant le premier dans le mot contenant le curseur d'insertion.

### TAGS

La première forme d'annotation dans les widgets texte est le tag. Un tag est une chaîne textuelle qui est associée à certains des caractères dans un texte. Les tags peuvent contenir des caractères arbitraires, mais il vaut mieux éviter d'utiliser les caractères `` '' (espace), +, ou -: ces caractères ont une signification spéciale dans les indices, et les tags les contenant ne peuvent être utilisés comme indices. Il peut y avoir n'importe quel nombre de tags associés à des caractères dans un texte. Chaque tag peut référencer un simple caractère, une étendue de caractères, ou plusieurs étendues de caractères. Un caractère individuel peut avoir n'importe quel nombre de tags associés.

Un ordre de priorité est défini parmi les tags, et cet ordre est utilisé dans l'implementation de plusieurs des fonctions relatives aux tags décrites ci-dessous. Quand un tag est défini (en l'associant avec des caractères ou en réglant ses options écran ou en lui attachant des commandes), il lui est donné une priorité plus haute que tous les tags existants. L'ordre de priorité des tags peut être redéfini en utilisant les commandes widget ``pathName tag raise'' et ``pathName tag lower''.

Les tags remplissent trois usages dans les widgets texte. En premier, ils contrôlent la manière dont l'information est affichée à l'écran. Par défaut, les caractères sont affichée comme déterminé par les options background, font, et foreground du widget text. Néanmoins, les options écran peuvent être associées avec des tags individuels en utilisant la commande widget ``pathName tag configure'' . Si un caractère a été taggé, alors les options écran associées au tag surchargent le style écran par défaut. Les options suivantes sont actuellement supportées par les tags:

-background color
  Color indique la couleur d'arrière-plan à utiliser par les caractères associés au tag. Doit avoir n'importe quelle des formes acceptées par Tk_GetColor.

-bgstipple bitmap
  Bitmap indique le bitmap qui est utilisé comme modèle de pointillé pour l'arrière-plan. Doit avoir n'importe quelle des formes acceptées par Tk_GetBitmap. Si bitmap n'a pas été spécifié, ou si il est spécifié comme chaîne vide, alors un remplissage solide sera utilisé pour l'arrière-plan.

-borderwidth pixels
  Pixels indique la largeur de la bordure 3-D dessinée autour de l'arrière-plan. Doit avoir n'importe quelle des formes acceptées par Tk_GetPixels. Cette option est utilisée en conjonction avec l'option -relief pour donner une apparence 3-D à l'arrière-plan des caractères; elle est ignorée à moins que l'option -background ait été positionnée pour le tag.

-elide boolean
  Elide indique si les données doivent être élidées. Les données élidées ne sont pas affichées et n'occupent aucun espace sur l'écran, mais se comportent néanmoins comme des données normales.

-fgstipple bitmap
  Bitmap indique le bitmap qui est utilisé comme modèle de pointillé à l'affichage de texte et autre information au premier plan comme les soulignements. Doit avoir n'importe quelle des formes acceptées par Tk_GetBitmap. Si bitmap n'a pas été spécifié, ou si il est spécifié comme chaîne vide, alors un remplissage solide sera utilisé.

-font fontName
  FontName est le nom de la police à utiliser pour dessiner les caractères. Doit avoir n'importe quelle des formes acceptées par Tk_GetFont.

-foreground color
  Color indique la couleur à utiliser à l'affichage de texte et autre information au premier plan comme les soulignements. Doit avoir n'importe quelle des formes acceptées par Tk_GetColor.

-justify justify
  Si le premier caractère d'une ligne écran a un tag pour lequel cette option a été spécifiée, alors justify détermine comment justifier la ligne. Doit être l'un de left, right, ou center. Si une ligne retourne, alors la justification pour chaque ligne à l'écran est déterminées par le premier caractère de cette ligne.

-lmargin1 pixels
  Si le premier caractère d'une ligne de texte pour lequel cette option a été spécifiée a un tag, alors pixels indique de combien la ligne doit être indentée en partant du coté gauche de la fenêtre. Pixels doit avoir n'importe quelle des formes standard pour les distances écran. Si une ligne de texte retourne, cette option s'applique seulement à la première ligne à l'écran; l'option -lmargin2 contrôle l'indentation des lignes suivantes.

-lmargin2 pixels
  Si le premier caractère d'une ligne écran a un tag pour lequel cette option a été spécifiée, et si la ligne écran n'est pas la première de la ligne de texte (c.a.d., la ligne de texte a retourné), alors pixels indique de combien la ligne doit être indentée à partir du coté gauche de la fenêtre. Pixels doit avoir n'importe quelle des formes standard pour les distances écran. Cette option est seulement utilisée quand le wrapping est activé, et elle s'applique seulement à la seconde et dernière ligne écran pour une ligne de texte.

-offset pixels
  Pixels indique de combien de pixels la ligne de base du texte doit être décalée verticalement par rapport à la ligne de base de du texte eb cours. Par exemple, un décalage positif peut être utilisé pour le superscript et un décalage negatif pour le subscript. Pixels doit avoir n'importe quelle des formes standard pour les distances écran.

-overstrike boolean
  Spécifie si les caractères sont barrés. Boolean doit avoir n'importe quelle des formes acceptées par Tk_GetBoolean.

-relief relief
  Relief indique le relief 3-D à utiliser pour le dessin de l'arrière-plan, sous n'importe quelle des formes acceptées par Tk_GetRelief. Cette option est utilisé en conjonction avec l'option -borderwidth pour donner une apparence 3-D à l'arrière-plan des caractères; elle est ignorée à moins que l'option -background ait été positionnée pour le tag.

-rmargin pixels
  Si le premier caractère d'une ligne écran a un tag pour lequel cette option a été spécifiée, alors pixels indique la largreur de la marge entre la fin de la ligne et le coté droit de la fenêtre. Pixels doit avoir n'importe quelle des formes standard pour les distances écran. Cette option est seulement utilisé quand le retour automatique à la ligne est activé. Si une ligne de texte retourne, la marge droite de chaque ligne à l'écran est déterminées par le premier caractère de cette ligne.

-spacing1 pixels
  Pixels indique l'espace supplémentaire situé au dessus de chaque ligne de texte, en utilisant n'importe quelle des formes standard pour les distances écran. Si une ligne retourne, cette option s'applique seulement à la première ligne à l'écran.

-spacing2 pixels
  Pour les lignes qui retournent, cette option indique l'interligne. Pixels doit avoir n'importe quelle des formes standard pour les distances écran.

-spacing3 pixels
  Pixels indique l'espace supplémentaire situé au-dessous de chaque ligne de texte, en utilisant n'importe quelle des formes standard pour les distances écran. Si une ligne retourne, cette option s'applique seulement à la dernière ligne à l'écran.

-tabs tabList
  TabList indique un ensemble de taquets de tabulation sous la même forme que pour l'option -tabs du widget texte. Cette option s'applique seulement à une ligne écran si elle s'applique au premier caractère de cette ligne écran. Si cette option est spécifiée comme chaîne vide, annule l'option, la laissant non spécifiée (par défaut). Si l'option est spécifiée comme chaîne non vide qui est une liste vide, comme -tags { }, alors elle positionne les tabulations par défaut de 8-caractères comme décrits pour l'option widget tags.

-underline boolean
  Boolean indique si les caractères sont soulignés. Doit avoir n'importe quelle des formes acceptées par Tk_GetBoolean.

-wrap mode
  Mode indique comment gérer les lignes qui sont plus larges que la fenêtre de texte. Admet les même valeurs que l'option -wrap du widget texte: none, char, ou word. Si cettte option tag est spécifiée, elle écrase l'option -wrap du widget texte.

Si un caractère a plusieurs tags associés, et si leurs options écran sont en conflit, alors les options tag de priorité la plus haute sont utilisées. Si une option écran particulière n'a pas été spécifiée pour un tag particulier, ou si elle est spécifiée comme chaîne vide, alors cette option ne sera jamais utilisée; l'option tag de priorité la plus haute suivante sera utilisée à la place. Si aucun tag n'indique d'option particulière, alors le style par défaut pour le widget sera utilisé.

Le second usage des tags est la liaison aux évènements. Vous pouvez associer des bindings à un tag de la même manière que vous pouvez associer des bindings avec une classe de widget: chaque fois qu'un évènements X particulier se produit sur les caractères avec le tag donné, une commande Tcl donnée sera exécutée. Les bindings des tags peuvent être utilisés pour assigner un comportement à des étendues de caractères; entre autres, ceci autorise l'implémentation de fonctionnalités de type hypertexte. Pour les détails, voir la description de la commande widget tag bind ci-dessous.

Le troisième usage des tags est la gestion de la sélection. Voir LA SELECTION ci-dessous.

### MARKS

La seconde forme d'annotation dans les widgets texte est la mark. Les marks sont utilisées pour mémoriser des emplacements particuliers dans un texte. Elles ressemblent aux tags, dans le sens ou elles ont des noms et elles se refèrent à des emplacements dans le fichier, mais une mark n'est pas associée à des caractères particuliers. En fait, une mark est associée à l'espace entre deux caractères. Une seule position peut être associée à une mark à un instant donné. Si les caractères autour d'une mark sont effacés la mark persiste; elle aura juste de nouveaux caractères voisins. Au contraire, si les caractères contenant un tag sont effacés alors le tag ne sera plus associé à des caractères dans le fichier. Les marks peuvent être manipulées avec la commande widget ``pathName mark'' , et leurs emplacements courants peuvent être déterminés en utilisant le nom de la mark comme un index dans les commandes widget.

Chaque mark a également une gravity, qui est soit left soit right. La gravité d'une mark indique ce qui arrive à la mark quand du texte est inséré à l'emplacement de la mark. Si une mark a une gravité gauche, alors la mark est traitée comme si elle était attachée au caractère à sa gauche, donc la mark persistera à gauche de tout texte inséré à la position de la mark. Si une mark a une gravité droite, le nouveau texte inséré à la position de la mark apparaîtra à gauche de la mark (ainsi la mark persiste à droite). La gravité d'une mark est par défaut de right.

L'espace de nom des marks est différent de celui des tags: le même nom peut être utilisé à la fois pour une mark et un tag, mais il pointent sur des objets différents.

Deux marks ont une signification spéciale. D'abord, la mark insert est associée au curseur d'insertion, comme décrit dans LE CURSEUR D'INSERTION ci-dessous. Ensuite, la mark current est associée au caractère le plus proche de la souris et est ajusté automatiquement pour suivre la position de la souris et tout changement du texte dans le widget (une exception: current n'est pas mis à jour en réponse aux déplacements de souris si un bouton de souris est enfoncé; la mise à jour sera reportée jusqu'à ce que les boutons de la souris aient été relachés). Aucune de ces marks spéciales ne peut être effacée.

### FENETRES INCRUSTEES

La troisième forme d'annotation dans les widgets texte est la fenêtre incrustée. Chaque annotation de fenêtre incrustée provoque l'affichage d'une fenêtre à un point particulier du texte. Il peut y avoir n'importe quel nombre de fenêtres incrustées dans un widget texte, et n'importe quel widget peut être utilisé comme fenêtre incrustée (assujetti aux règles usuelles de gestion de geometrie, qui exige que la fenêtre texte soit le parent de la fenêtre incrustée ou un descendant de son parent). La position de la fenêtre incrustée à l'écran sera mise à jour quand le texte est modifié ou défilé, et elle sera assignée et désassignée quand elle apparait et disparait de la partie visible du widget texte. Chaque fenêtre incrustée occupe un caractère d'espace index dans le widget text, et elle peut être pointée soit par son nom de fenêtre ou par sa position d'index. Si l'étendue de texte contenant la fenêtre incrustée est effacé alors la fenêtre est détruite.

Quand une fenêtre incrustée est ajoutée à un widget text avec la commande window create, plusieurs options de configuration peuvent lui être associées. Ces options peuvent être modifiées ensuite avec la commande window configure. Les options suivantes sont actuellement supportées:

-align where
  Si la fenêtre n'est pas aussi grande que la ligne dans laquelle elle est affichée, cette option détermine où la fenêtre est affichée dans la ligne. Where doit avoir une des valeurs top (align le haut de la fenêtre avec le haut de la ligne), center (centre la fenêtre à l'intérieur de l'étendue de la ligne), bottom (aligne le bas de la fenêtre avec la bas de la ligne), ou baseline (align le bas de la fenêtre avec la ligne de base de la ligne).

-create script
  Spécifie un script Tcl qui peut être evalué pour créer la fenêtre de l'annotation. Si aucune option -window n'a été spécifiée pour l'annotation ce script sera evalué quand l'annotation est sur le point d'être affichée à l'écran. Script doit créer une fenêtre pour l'annotation et retourne le nom de cette fenêtre comme resultat. Si la fenêtre de l'annotation devait être effacée, script sera evalué de nouveau la prochaine fois que l'annotation est affichée.

-padx pixels
  Pixels indique l'espace additionel en pixels à laisser de chaque coté de la fenêtre incrustée. Doit avoir n'importe laquelle des formes usuelles définies pour une mesure en pixels.

-pady pixels
  Pixels indique l'espace additionel en pixels à laisser au dessus et en dessous de la fenêtre incrustée. Doit avoir n'importe laquelle des formes usuelles définies pour une mesure en pixels.

-stretch boolean
  Si la hauteur demandée de la fenêtre incrustée est inférieure à la hauteur de la ligne dans laquelle elle est affichée, cette option peut être utilisée pour spécifier si la fenêtre doit être agrandie verticalement pour remplir sa ligne. Si l'option -pady a été également spécifiée, alors le remplissage demandé sera obtenu même si la fenêtre est agrandie.

-window pathName
  Spécifie le nom d'une fenêtre à afficher dans l'annotation.

### IMAGES INCRUSTEES

La dernière forme d'annotation dans les widgets texte est l'image incrustée. Chaque annotation d'image incrustée provoque l'affichage d'une image à un point particulier dans le texte. Il peut y avoir n'importe quel nombre d'images incrustées dans un widget texte, et une image particulière peut être incrustée à plusieurs endroits dans le même widget texte. La position de l'image incrustée sur l'écran sera mise à jour quand le texte est modifié ou défilé. Chaque images incrustée occupe un caractère d'espace index dans le widget text, et elle peut être pointée soit par son nom de fenêtre ou par sa position d'index, quand l'image est insérée dans le widget texte avec image create. Si l'étendue de texte contenant les images incrustées est effacée alors la copie de l'image est enlevé de l'écran.

Quand une images incrustée est ajoutée à un widget text avec la commande image create, a nom unique pour cette instance de l'image est retourné. Ce nom peut être alors utilisé pour se référer à cette instance de l'image. Le nom est extrait de la valeur de l'option -name (décrite ci-dessous). Si l'option -name n'est pas fournie, le nom -image est utilisé à la place. Si le imageName est déjà utilisé dans le widget text, alors #nn est ajouté à la fin de imageName, où nn est un entier arbitraire. Ceci assure que imageName est unique. Une fois que ce nom est assigné à cette instance de l'image, il ne change plus, bien que les valeurs -image ou -name puisse être changées avec image configure.

Quand une image incrustée est ajoutée à un widget text avec la commande image create, plusieurs options de configuration peuvent lui être associées. Ces options peuvent être modifiées ensuite avec la commande image configure. Les options suivantes sont actuellement supportées:

-align where
  Si l'image n'est pas aussi grande que la ligne dans laquelle elle est affichée, cette option détermine où l'image est affichée dans la ligne. Where doit avoir une des valeurs top (aligne le haut de l'image avec le haut de la ligne), center (centre l'image à l'intérieur de l'étendue de la ligne), bottom (aligne le bas de image avec le bas de la surface de la ligne), ou baseline (aligne le bas de l'image avec la ligne de base de la ligne).

-image image
  Spécifie le nom de l'image Tk à afficher dans l'annotation. Si image n'est pas une image Tk valide, alors une erreur est retournée.

-name ImageName
  Spécifie le nom par lequel cette instance de l'image peut être référencée dans le widget texte . Si ImageName n'est pas fourni, alors le nom de l'image Tk est utilisé à la place. Si imageName est déjà utilisé, #nn est ajoutée à la fin du nom comme décrit ci-dessus.

-padx pixels
  Pixels indique l'espace additionel en pixels réservé de chaque coté de l'image incrustée. Doit avoir n'importe laquelle des formes usuelles définies pour une mesure en pixels.

-pady pixels
  Pixels indique l'espace additionel réservé au dessus et en dessous de l'image incrustée. Doit avoir n'importe laquelle des formes usuelles définies pour une mesure en pixels.

### LA SELECTION

Le support de la selection est implémentée via les tags. Si l'option exportSelection du widget texte est à true alors le tag sel sera associé avec la sélection:

[1]
  Partout où les caractères sont marqués avec sel le widget texte revendiquera la propriété de la sélection.

[2]
  Les tentatives de récuperer la sélection seront servies par le widget texte, qui revoie tous les caractères avec le tag sel.

[3]
  Si la sélection est revendiquée par une autre application ou par une autre fenêtre à l'intérieur de cette application, alors le tag sel sera enlevé de tous les caractères dans le texte.

Le tag sel est automatiquement défini quand un widget text est créé, et il ne peut être effacé avec la commande ``pathName tag delete''. En outre, les options selectBackground, selectBorderWidth, et selectForeground du widget texte sont attachées aux options -background, -borderwidth, et -foreground du tag sel: les changements de l'un sont automatiquement répercutés sur l'autre.

### LE CURSEUR D'INSERTION

La mark nommée insert a une signification spéciale dans les widgets texte. Elle est définie automatiquement quand un widget text est créé et elle ne peut pas être indéfinie avec la commande ``pathName mark unset''. La mark insert représente la position du curseur d'insertion, et le curseur d'insertion sera automatiquement dessiné à ce point chaque fois que le widget texte a le focus.

### COMMANDES DE WIDGET

La commande text crée une nouvelle commande Tcl dont le nom est le même que le nom de chemin de la fenêtre texte. Cette commande peut être utilisée pour appeler diverses opérations sur le widget. Elle a la forme générale suivante:

    pathName option ?arg arg ...?

PathName est le nom de la commande, qui est le même que le nom de chemin du widget texte. Option et les args déterminent le comportement exact de la commande. Les commandes suivantes sont possibles pour les widgets texte:

pathName bbox index
  Retourne une liste de quatre éléments décrivant la boite de confinement du caractère indiqué par index. Les deux premiers éléments de la liste donnent les coordonnées x et y du coin supérieur gauche de la surface occupée par le caractère, et les deux derniers éléments donnent la largeur et hauteur de la surface. Si le caractère est seulement partiellement visible à l'écran, alors la valeur de retour reflète juste la partie visible. Si le caractère n'est pas visible sur l'écran alors la valeur de retour est une liste vide.

pathName cget option
  Retourne la valeur courante de l'option de configuration donnée par option. Option peut prendre n'importe quelle des valeurs acceptées par la commande text.

pathName compare index1 op index2
  Compare les indices indiqués par index1 et index2 en accord avec l'opérateur relationel indiqué par op, et retourne 1 si la relation est satisfaite et 0 si non. Op doit être une des opérateurs <, <=, ==, >=, >, ou !=. Si op est == alors 1 est retourné si les deux indices se réfèrent au même caractère, si op est < alors 1 est retourné si index1 se réfère à caractère précédent dans le texte index2, et ainsi de suite.

pathName configure ?option? ?valeur option valeur ...?
  Interroge ou modifie les options de configuration du widget. Si aucune option n'est spécifiée, retourne une liste décrivant toutes les options disponibles pour pathName (voir Tk_ConfigureInfo pour une information sur le format de cette liste). Si option est spécifié sans valeur, alors la commande retourne une liste décrivant l'option désignée (cette liste sera identique à la sous-liste correspondante de la valeur retournée si aucune option n'est spécifiée). Si une ou plusieurs paires option-valeur sont spécifiées, alors la commande modifie l'option(s)widget donnée à la valeur(s) indiquée; dans ce cas la commande retourne une chaîne vide. Option peut prendre n'importe quelle des valeurs acceptées par la commandetext.

pathName debug ?boolean?
  Si boolean est spécifié, alors elle doit avoir une des valeurs vraie ou fausse acceptées par Tcl_GetBoolean. Si la valeur est vraie alors un contrôle interne de consistence sera activé dans le code B-tree associé avec les widgets text. Si boolean a une valeur fausse alors le contrôle sera désactivé. Dans les deux cas la commande retourne une chaîne vide. Si boolean n'est pas spécifié alors la commande retourne on ou off pour indiquer si oui ou non le est activé. Ceci est un seul commutateur de debogage partagé par tous les widgets text: l'activer ou le desactiver dans n'importe quel widget l'active ou le désactive dans tous les widgets. Pour les widgets avec de grandes quantités de texte, le contrôle de consistence peut provoquer un ralentissement notable.

Quand le débogage est activé, les routines d'affichage du widget texte positionnent les variables globales tk_textRedraw et tk_textRelayout dans la liste d'indices redessinés. Les valeurs de ces variables sont testées par la suite de test de Tk.

pathName delete index1 ?index2?
  Efface une étendue de caractères du texte. Si à la fois index1 et index2 sont spécifiés, alors efface tous les caractères commencant avec celui indiqué par index1 et s'arrétant juste avant index2 (c.a.d. le caractère à index2 n'est pas effacé). Si index2 n'indique pas une position plus loin dans le texte que index1 alors aucun caractères ne sont effacée. Si index2 n'est pas spécifié alors seul le caractère à index1 est effacé. Il n'est pas permis d'effacer des caractères en laissant le texte sans un newline comme dernier caractère. La commande retourne une chaîne vide.

pathName dlineinfo index
  Retourne une liste de cinq éléments décrivant la surface occupée par la ligne écran contenant index. Les deux premiers éléments de la liste donnent les coordonnées x et y du coin supérieur gauche de la surface occupée par la ligne, les troisième et quatrième éléments donnent la largeur et hauteur de la surface, et le cinquième élément donnet la position de la ligne de base de la ligne, mesurée en partant du haut de la surface. Toute cette information est mesurée en pixels. Si le mode de retour à la ligne courant est none et que la ligne dépasse les limites de la fenêtre, la surface retournée reflète la surface entière de la ligne, incluant les parties qui sont en dehors de la fenêtre. Si la ligne est plus courte que la largeur totale de la fenêtre alors la surface retournée reflète juste la partie de la ligne qui est occupée par les caractères et les fenêtres incrustées. Si la ligne écran contenant index n'est pas visible à l'écran alors la valeur de retour est une liste vide.

pathName dump ?commutateurs? index1 ?index2?
  Retourne le contenu du widget texte de index1 jusqu'à, mais non inclus index2, incluant le texte et l'information concernant les marks, tags, et fenêtres incrustées. Si index2 n'est pas spécifié, alors il est par défaut de un caractère après index1. L'information est retournée dans le format suivant:

  key1 value1 index1 key2 value2 index2 ...

  Les valeurs key possibles sont text, mark, tagon, tagoff, et window. Les correspondantes valeurs sont les texte, nom de mark , nom de tag, ou nom defenêtre. L'information index est l'index de départ du texte, la mark, la transition de tag, ou la fenêtre. Un ou plusieurs des suivants commutateurs (ou leurs abréviations) peuvent être spécifiés pour contrôler le dump:

  -all
    Retourne l'information concernant tous les éléments: text, marks, tags, images et fenêtres. C'est le comportement par défaut.

  -command commande
    Au lieu de retourner l'information comme résultat de l'opération de dump, appelle la commande sur chaque élément du widget texte à l'intérieur de l'étendue. La commande a trois arguments qui lui sont ajoutés avant qu'elle soit evaluée: les key, valeur, et index.

  -image
    Inclut l'information concernant les images dans le resultat du dump.

  -mark
    Inclut l'information concernant les marks dans le resultat du dump.

  -tag
    Inclut l'information concernant les transitions des tags dans le resultat du dump. L'information des tags est retournée en éléments tagon et tagoff qui indiquent le début et la fin de chaque étendue de chaque tag, respectivement.

  -text
    Inclut l'information concernant le texte dans le resultat du dump. La valeur est le texte jusqu'à l'élément suivant ou la fin de l'étendue indiqué par index2. Un élément texte ne dépasse pas les newlines. Un bloc de texte multi-lignes qui ne contient aucunes marks ou tag transitions sera dumpé comme un ensemble de segments de texte qui finissent chacun avec une newline. Le newline fait partie de la valeur.

  -window
    Inclut l'information concernant les fenêtres incrustées dans le resultat du dump. La valeur d'une fenêtre est son nom de chemin Tk, à moins que la fenêtre n'ait pas encore été créée. (Il doit y avoir un script create.) Dans ce cas une chaîne vide est retournée, et vous devez interroger la fenêtre par sa position d'index pour obtenir plus information.

pathName get index1 ?index2?
  Retourne une étendue de caractères du texte. La valeur de retour sera tous les caractères dans le texte commencant avec celui dont l'index est index1 et finissant juste avant celui dont l'index est index2 (le caractère à index2 ne sera pas retourné). Si index2 est omis alors le seul caractère à index1 est retournée. Si il n'y a aucun caractères dans l'étendue spécifiée (ex. index1 est après la fin du fichier ou index2 est inférieur ou egal à index1) alors une chaîne vide est retournée. Si l'étendue spécifiée contient des fenêtres incrustées, aucune information les concernant n'est incluse dans la chaîne retournée.

pathName image option ?arg arg ...?
  cette commande est utilisée pour manipuler les images incrustées. Le comportement de la commande dépends de l'argument option qui suit l'argument tag. Les formes suivantes de la commande sont actuellement supportées:

  pathName image cget index option
    Retourne la valeur d'une option de configuration des images incrustées. Index identifies l'image incrustée, et option indique une option de configuration particulière, qui doit être une de celles listés dans la section IMAGES INCRUSTEES.

  pathName image configure index ?option valeur ...?
    Interroge ou modifie les options de configuration d'une image incrustée. Si aucune option n'est spécifiée, retourne une liste décrivant toutes les options disponibles our les images incrustée à index (voir Tk_ConfigureInfo pour plus d'information sur le format de cette liste). Si option est spécifiée sans valeur, alors la commande retourne une liste décrivant l'option nommée (cette liste sera identique à la correspondante sous-liste de la valeur retournée si aucune option n'est spécifiée). Si une ou plusieurs paires option-valeur sont spécifiées, alors la commande modifie l'option(s) donné à la valeur(s) donnée; dans ce cas la commande retourne une chaîne vide. Voir IMAGES INCRUSTEES pour information sur les options supportées.

  pathName image create index ?option valeur ...?
    cette commande crée une nouvelle image, qui apparaîtra dans le texte à la position indiquée par index. N'importe quel nombre de paires option-valeur peut être spécifié pour configurer l'annotation. Retourne un identificateur unique qui peut être utilisé comme index pour se référer à cette image. Voir IMAGES INCRUSTEES pour information sur les options supportées, et une description de l'identificateur retourné.

  pathName image names
    Retourne une liste dont les éléments sont les noms de toutes les instances d'image actuellement incrustées dans fenêtre.

pathName index index
  Retourne la position correspondant à index sous la forme line.char où line est le numéro de ligne et char est le numéro de caractère. Index doit avoir n'importe quelle des formes décrites dans INDICES ci-dessus.

pathName insert index chars ?tagList chars tagList ...?
  Insère tous les arguments chars juste avant le caractère à index. Si index se réfère à jusqu'à la fin du texte (le caractère après le dernier newline) alors le nouveau texte est inséré juste avant le dernier newline à la place. Si il y a un seul argument chars et pas de tagList, alors le nouveau texte recevra tous tags qui sont présents à la fois sur le caractère avant et le caractère après le point d'insertion; si un tag est présent sur seulement un des deux caractères alors il ne sera pas appliqué au the nouveau texte. Si tagList est spécifiée alors elle consiste en une liste de noms de tags; les nouveaux caractères recevront tous les tags de cette liste et aucun autres, indépendemment de tags présents autour du point d'insertion. Si plusieurs paires d'arguments chars-tagList sont présents, ils produisent le même effet qu'une commnde insert séparée émise pour chaque paire, dans l'ordre. Le dernier argument tagList peut être omis.

pathName mark option ?arg arg ...?
  cette commande est utilisée pour manipuler les marks. Le comportement exact de la commande depend de l'argument option qui suit l'argument mark. Les formes suivantes de la commande sont actuellement supportées:

  pathName mark gravity markName ?direction?
    Si direction n'est pas spécifiée, retourne left ou right pour indiquer lequel des caractères adjacents à markName lui est attaché. Si direction est spécifiée, ce doit être left ou right; la gravity de markName est fixée à la valeur donnée.

  pathName mark names
    Retourne une liste dont les éléments sont les noms de toutes les marks actuellement positionnées.

  pathName mark next index
    Retourne le nom de la mark suivant à ou après index. Si index est spécifié sous une forme numérique, alors la recherche de la mark suivante commenceà cet index. Si index est le nom d'une mark, alors la recherche de la mark suivante commence immédiatement après cette mark. Ceci peut retourner une mark à la même position si il y de multiples marks au même index. Cette sémantique signifie que l'opération mark next peut être utilisée pour parcourir toutes les marks dans un widget texte dans le même ordre que l'information de mark retournée par une opération dump. Si une mark a été positionnée à l'index spécial end, alors elle parait être après end en accord avec l'opération mark next. Une chaîne vide est retournée si il n'y a pas de marks après index.

  pathName mark previous index
    Retourne le nom de la mark à ou avant index. Si index est spécifié sous une forme numérique, alors la recherche de la mark précédente commence avec le caractère juste avant cet index. Si index est le nom d'une mark, alors la recherche de la mark suivante commence immédiatement avant cette mark. Ceci peut retourner une mark à la même position si il y de multiples marks au même index. Cette sémantique signifie que l'opération mark previous peut être utilisée pour parcourir toutes les marks dans un widget texte dans le même ordre que l'information de mark retournée par une opération dump. Une chaîne vide est retournée si il n'y a pas de marks avant index.

  pathName mark set markName index
    Fixe la mark nommée markName à une position juste avant le caractère à index. Si markName existe déjà, il est déplacé de son ancienne position; si il n'existe pas, une nouvelle mark est créé. cette commande retourne une chaîne vide.

  pathName mark unset markName ?markName markName ...?
    Enlève la mark correspondante à chacun des arguments markName. Les marks enlevées ne seront pas utilisables en indices et ne seront pas retournées par les appels futurs à ``pathName mark names''. cette commande retourne une chaîne vide.

pathName scan option args
  cette commande est utilisé pour implémenter le balayage des textes. Elle a deux formes, dépendantes de option:

  pathName scan mark x y
    Enregistre x et y et la vue courante dans la fenêtre texte, pour usage en conjonction avec des commandes ultérieures scan dragto . Généralement cette commande est associés avec un clic de souris dans le widget. Elle retourne une chaîne vide.

  pathName scan dragto x y
    cette commande calcule la différence entre ses arguments x et y et les arguments x et y de la dernière commande scan mark pour le widget. Elle ajuste alors la vue de 10 fois la différence en coordonnées. cette commande est généralement associée avec des évènements déplacement de souris dans le widget, pour produire un effet de glisser du texte à grande vitesse au travers de la fenêtre. la valeur de retour est une chaîne vide.

pathName search ?commutateurs? modèle index ?stopIndex?
  Recherche dans le texte de pathName en commencant à index une étendue de caractères qui coresspond à modèle. Si une correspondance est trouvée, l'index du premier caractère de la correspondance est retourné; autrement une chaîne vide est retournée. Un ou plusieurs des commutateurs suivants (ou leurs abréviations) peuvent être spécifiés pour contrôler la recherche:

  -forwards
    La recherche s'effectuera en avant dans le texte, recherchant la première étendue correspondante commencant à ou après la position indiquée par index. C'est le comportement par défaut.

  -backwards
    La recherche s'effectuera en arrière dans le texte, recherchant la première étendue correspondante la plus proche de index et dont le premier caractère est avant index.

  -exact
    Utilise une correspondance exacte: les caractères dans l'étendue correspondante doivent être identique à ceux de modèle. C'est le comportement par défaut.

  -regexp
    Traite modèle comme une expression rationelle et le compare au texte en utilisant les règles des expressions rationelles (voir la commande regexp pour les détails).

  -nocase
    Ignore les différences de casse entre le modèle et le texte.

  -count varName
    L'argument suivant -count donne le nom d'une variable; si une correspondance est trouvée, le nombre de positions d'index entre le début et la fin de l'étendue correspondante sera stockée dans la variable. Si il n'y a pas d'images ou de fenêtres incrustées dans l'étendue correspondante, ceci est équivalent au nombre de caractères trouvés. Dans les autres cas, l'étendue de matchIdx à matchIdx + $count chars retournera le texte correspondant entier.

  -elide
    Trouve également le texte élidé (caché). Par défaut seul le texte affiché est recherché.

  - -
    Ce commutateur n'a pas d'effet excepté de terminer la liste des commutateurs: l'argument suivant sera traité comme modèle même s'il commence avec -.

  L'étendue correspondante doit être entièrement à l'intérieur d'une seule ligne de texte. Pour la correspondane avec les expressions rationelles les newlines sont enlevées des fins de lignes avant la comparaison: l'usage de la fonctionnalité $ des expressions rationelles est retenu pour trouver la fin d'une ligne. Pour la correspondance exacte les newlines sont conservées. Si stopIndex est spécifié, la recherche s'arrête à cet index: pour la recherche en avant, aucune correspondance à ou après stopIndex ne sera considérée; pour la recherche en arrière, aucune correspondance précédent stopIndex dans le textz ne sera considérée. Si stopIndex est omis, le texte entier sera parcouru: quand le début ou la fin du texte est atteint, la recherche continue à l'autre extrémité jusqu'à ce que l'emplacement de départ soit atteint; si stopIndex est spécifié, aucun bouclage ne se produit.

pathName see index
  Ajuste la vue dans la fenêtre pour que le caractère indiqué par index soit complètement visible. Si index est déjà visible alors la commande ne fait rien. Si index est a une courte distance, la commande ajuste la vue suffisamment pour rendre index visible à la limite de la fenêtre. Si index est loin de la vue, alors la commande centre index dans la fenêtre.

pathName tag option ?arg arg ...?
  cette commande est utilisée pour manipuler les tags. Le comportement exact de la commande depend de l'argument option qui suit l'argument tag. Les formes suivantes de la commande sont actuellement supportées:

  pathName tag add tagName index1 ?index2 index1 index2 ...?
    Associe le tag tagName à tous les caractères commencant avec index1 et finissant juste avant index2 (le caractère at index2 n'est pas taggé). Une seule commande peut contenir n'importe quel nombre de paires index1-index2. Si le dernier index2 est omis alors seul le caractère à index1 est taggé. Si il n'y a pas de caractères dans l'étendue spécifiée (ex. index1 est après la fin du fichier ou index2 est inférieur ou égal à index1) alors la commande n'a pas d'effet.

  pathName tag bind tagName ?séquence? ?script?
    cette commande associe script avec le tag indiqué par tagName. Partout où la séquence d'évènement indiquée par séquence se produit pour caractère qui a été taggé avec tagName, le script sera appelé. Cette commande est identique à la commande bind excepté qu'elle opère sur les caractères d'un texte plutot que sur un widgets entier. Voir la page de manuel de bind pour des détails complets sur la syntaxe de séquence et les substitutions réalisées sur script avant son appel. Si tous les arguments sont spécifiés alors un nouveau binding est créé, remplaçant tout binding existant pour les même séquence et tagName (si le premier caractère de script est ``+'' alors script s'ajoute à un binding existant plutot que le remplacer). Dans ce cas la valeur de retour est une chaîne vide. Si script est omis alors la commande retourne le script associé à tagName et séquence (une erreur se produit s'il n'y a pas un tel binding). Si à la fois script et séquence sont omis alors la commande retourne une liste de toutes les séquences pour lesquelles des bindings ont été définis pour tagName.

    Les seuls évènements pour lesquels les bindings peuvent être spécifiés sont ceux relatifs à la souris et au clavier (comme Enter, Leave, ButtonPress, Motion, et KeyPress) ou les évènements virtuels. Les bindings d'évènements des widgets texte utilisent la mark current décrite dans MARKS ci-dessus. Un évènement Enter se déclenche pour un tag quand le tag devient présent sur le caractère courant, et un évènement Leave se déclenche pour un tag quand il cesse d'être présent sur le caractère courant. Des évènements Enter et Leave peuvent se produire chacun parceque la mark current s'est déplacée ou parceque le caractère à cette position a changé. Notez que ces évènements sont différent des évènements Enter et Leave des fenêtres. Les évènements souris et clavier sont dirigés vers le caractère courant. Si un évènement virtuel est utilisé dans un binding, ce binding se déclenche seulement si l'évènement virtuel est défini par un évènement souris ou clavier sous-jacent.

    It est possible que le caractère courant ait de multiples tags, et que chacun d'entre eux ait un binding pour une séquence d'évènement particulière . Quand ceci se produit, un binding est appelé pour chaque tag, dans l'ordre de la priorité la plus basse à la plus haute. Si il y a de multiples bindings assignés à un seul tag, alors le binding le plus spécifique est choisi (voir la page de manuel de la commande bind pour les détails). Des commandes continue et break à l'intérieur des scripts de binding sont traités de la même façon que pour les bindings créés avec la commande bind.

    Si des bindings sont créés pour le widget dans son entier en utilisant la commande bind, alors ces bindings s'ajoutent aux bindings de tag. Les bindings de tag seront appelés en premier, suivis par les bindings de la fenêtre complète.

  pathName tag cget tagName option
    cette commande retourne la valeur courante de l'option nommée option associés avec le tag indiqué par tagName. Option peut prendre n'importe quelle des valeurs acceptées par la commande widget tag configure.

  pathName tag configure tagName ?option? ?valeur? ?option valeur ...?
    cette commande est identique à la commande widget configure excepté qu'elle modifie les options associées au the tag indiqué par tagName au lieu de modifier les options pour l'ensemble du widget text. Si aucune option n'est spécifiée, la commande retourne une liste décrivant toutes les options disponibles pour tagName (voir Tk_ConfigureInfo pour information sur le format de cette liste). Si option est spécifiée sans valeur, alors la commande retourne une liste décrivant l'option désignée (cette liste sera identique à la sous-liste correspondante de la valeur retournée si aucune option n'est spécifiée). Si une ou plusieurs paires option-valeur sont spécifiées, alors la commande modifie l'option(s) donnée à la valeur(s)donnée dans tagName; dans ce cas la commande retourne une chaîne vide. Voir TAGS plus haut pour les détails sur les options disponibles pour les tags.

  pathName tag delete tagName ?tagName ...?
    Efface toute l'information de tag pour chacun des arguments tagName. La commande enlève les tagsde tous les caractères dans le fichier et efface également toute autre information associée aux tags, comme les bindings et l'information écran. La commande retourne une chaîne vide.

  pathName tag lower tagName ?belowThis?
    Change la priorité du tag tagName en lui donnant une priorité inférieure au tag dont le nom est belowThis. Si belowThis est omis, alors la priorité de tagName est diminuée à la priorité la plus basse de tous les tags.

  pathName tag names ?index?
    Retourne une liste dont les éléments sont les noms de tous les tags actifs à la position du caractère indiquée par index. Si index est omis, alors la valeur de retour décrira tous les tags qui existent dans le texte (ceci inclut tous les tags qui ont été nommée dans une commande ``pathName tag'' widget mais qui n'ont pas été effacés par une commande widget ``pathName tag delete'', même si aucun caractères sont actuellement marqués avec le tag). La liste sera triée dans l'ordre de la priorité la plus basse à la plus haute.

  pathName tag nextrange tagName index1 ?index2?
    cette commande recherche dans le texte une étendue de caractères taggés avec tagName où le premier caractère de l'étendue suit ou est égal au caractère à index1 et inférieur au caractère juste avant index2 (une étendue commencant à index2 ne sera pas considérée). Si plusieurs étendues corespondantes existent, la première est choisie. La valeur de retour de la commande est une liste contenant deux éléments, qui sont l'index du premier caractère de l'étendue et l'index du caractère juste après le dernier de l'étendue. Si aucune étendue corespondante n'est trouvée alors la valeur de retour est une chaîne vide. Si index2 n'est pas fourni alors il est par défaut de la fin du texte.

  pathName tag prevrange tagName index1 ?index2?
    cette commande recherche dans le texte une étendue de caractères taggés avec tagName où le premier caractère de l'étendue est avant le caractère à index1 et ne précède pas le caractère à index2 (une étendue commencant à index2 sera considérée). Si plusieurs étendues corespondantes existent, celle la plus proche de index1 est choisie. La valeur de retour de la commande est une liste contenant deux éléments, qui sont l'index du premier caractère de l'étendue et l'index du caractère juste après le dernier de l'étendue. Si aucune étendue corespondante n'est trouvée alors la valeur de retour est une chaîne vide. Si index2 n'est pas fourni alors il est par défaut le début du texte.

  pathName tag raise tagName ?aboveThis?
    Change la priorité du tag tagName en lui donnant une priorité supérieure au tag dont le nom est aboveThis. Si aboveThis est omis, alors la priorité de tagName est augmentée à la plus haute de tous les tags.

  pathName tag ranges tagName
    Retourne une liste décrivant toutes les étendues de texte qui ont été taggées avec tagName. Les deux premiers éléments de la liste décrivent la première étendue taggée dans le text, les deux éléments suivants décrivent la seconde étendue, et ainsi de suite. Le premier élément de chaque paire contient l'index du premier caractère de l'étendue, et le second élément de la paire contient l'index du caractère juste après le dernier dans l'étendue. Si il n'y a pas de caractères taggés avec tag alors une chaîne vide est retournée.

  pathName tag remove tagName index1 ?index2 index1 index2 ...?
    Enlève le tag tagName de tous les caractères commencant à index1 et finissant juste avant index2 (le caractère à index2 n'est pas affecté). Une seule commande peut contenir n'importe quel nombre de paires index1-index2. Si le dernier index2 est omis alors seul le caractère à index1 est taggé. Si il n'y a pas de caractères dans l'étendue spécifiée (ex. index1 est après la fin du fichier ou index2 est inférieur ou égal à index1) alors la commande n'a pas d'effet. cette commande retourne une chaîne vide.

pathName window option ?arg arg ...?
  cette commande est utilisée pour manipuler les fenêtres incrustées. Le comportement de la commande dépend de l'argument option qui suit l'argument tag . Les formes suivantes de la commande sont actuellement supportées:

  pathName window cget index option
    Retourne la valeur d'une option de configuration d'une fenêtre incrustée. Index identifie la fenêtre incrustée, et option indique une option de configuration particulière, qui doit être une de celles listées dans la section FENETRES INCRUSTEES.

  pathName fenêtre configure index ?option valeur ...?
    Interroge ou modifie les options de configuration d'une fenêtre incrustée. Si aucune option n'est spécifiée, retourne une liste décrivant toutes les options disponibles pour la fenêtre incrustée à index (voir Tk_ConfigureInfo pour information sur le format de cette liste). Si option est spécifiée sans valeur, alors la commande retourne une liste décrivant l'option nommée (cette liste sera identique à la correspondante sous-liste de la valeur retournée si aucune option n'est spécifiée). Si un ou plusieurs paires option-valeur sont spécifiées, alors la commande modifie l'option(s) donnée à la valeur(s) donnée; dans ce cas la commande retourne une chaîne vide. Voir FENETRES INCRUSTEES pour information sur les options supportées.

  pathName window create index ?option valeur ...?
    cette commande crée une nouvelle annotation fenêtre, qui apparaîtra dans le texte à la position indiquée par index. N'importe quel nombre de paires option-valeur peut être spécifié pour configurer l'annotation. Voir FENETRES INCRUSTEES fpour information sur les options supportées. Retourne une chaîne vide.

  pathName window noms
    Retourne une liste dont les éléments sont les noms of toutes les fenêtres actuellement incrustées dans fenêtre.

pathName xview option args
  cette commande est utilisé pour consulter et changer la position horizontale du texte dans la fenêtre du widget. Elle peut prendre n'importe quelle des formes suivantes:

  pathName xview
    Retourne une liste contenant deux éléments. Chaque élément est une fraction réelle entre 0 et 1; ensemble ils décrivent la partie visible du document dans la fenêtre. Par exemple, si le premier élément est .2 et le second élément est .6, 20% du texte est hors écran à gauche, les 40% au milieu sont visibles dans la fenêtre, et 40% du texte est hors écran à droite. Les fractions se réfèrent seulement aux lignes actuellement visibles dans la fenêtre: si les lignes dans la fenêtre sont toutes très courtes, donc entièrement visible, les fractions retournées seront 0 et 1, même si il y a d'autres lignes dans le texts qui sont beaucoup plus larges que la fenêtre. Ce sont le même valeurs transmises aux barres de défilement via l'option -xscrollcommand.

  pathName xview moveto fraction
    Ajuste la vue dans la fenêtre pour que fraction de la partie horizontale du texte soit hors écran à gauche. Fraction est une fraction entre 0 et 1.

  pathName xview scroll nombre quoi
    cette commande décale la vue dans la fenêtre à gauche ou à droite en accord avec nombre et quoi. Nombre doit être un entier. Quoi doit être soit des unités ou des pages ou une abréviation de l'un des deux. Si quoi est en unités, la vue est ajustée à gauche ou à droite de nombre largeur moyenne des caractères à l'écran; si il est en pages alors la vue est ajustée de nombre écrans. Si nombre est négatif alors les caractères les plus à gauche deviennent visibles; si il est positif alors caractères les plus à droite deviennent visibles.

pathName yview ?args?
  cette commande est utilisé pour consulter et changer la position verticale du texte dans la fenêtre du widget. Elle peut prendre n'importe quelle des formes suivantes:

  pathName yview
    Retourne une liste contenant deux éléments, qui sont tous deux des fractions réelles entre 0 et 1. Le premier élément donne la position du premier caractère dans la ligne du haut dans la fenêtre, relativement au texte en entier (0.5 signifie qu'elle est au milieu du texte, par exemple). Le second élément donne la position du caractère juste après le dernier dans la ligne du bas de la fenêtre, relativement au texte en entier. Ce sont les même valeurs transmises aux barre de défilement via l'option -yscrollcommand.

  pathName yview moveto fraction
    Ajuste la vue dans la fenêtre pour que le caractère indiqué par fraction apparaisse dans la ligne du haut de la fenêtre. Fraction est une fraction entre 0 et 1; 0 indique le premier caractère dans le text, 0.33 indique le caractère au tiers du texte, et ainsi de suite.

  pathName yview scroll nombre quoi
    cette commande ajuste la vue dans la fenêtre en haut ou en bas en accord avec nombre et quoi. Nombre doit être un entier. Quoi doit être soit des unités soit des pages. Si quoi est en unités, la vue est ajustée en haut ou en bas de nombre lignes à l'écran; si il est en pages alors la vue est ajustée de nombre écrans. Si nombre est négatif alors les positions précédentes dans le texte deviennent visibles; si il est positif alors les positions suivantes dans le texte deviennent visibles.

  pathName yview ?-pickplace? index
    Changes la vue dans la fenêtre du widget pour rendre index visible. Si the -pickplace option n'est pas spécifiée alors index apparaîtra en haut de la fenêtre. Si -pickplace est spécifié alors le widget choisit où index apparaîtdans la fenêtre:

    [1]
      Si index est déjà visible quelque part dans la fenêtre alors la commande ne fait rien.

    [2]
      Si index est seulement de quelques lignes hors écran au dessus de la fenêtre alors il sera positionné en haut de la fenêtre.

    [3]
      Si index est seulement de quelques lignes hors écran au desssous de la fenêtre alors il sera positionné en bas de la fenêtre.

    [4]
      Autrement, index sera centré dans la fenêtre.

    The -pickplace option a été rendu obsolète par la commande widget see (see gère à la fois les déplacements x et y pour rendre visible un emplacement, la où -pickplace gère seulement les déplacements en y).

  pathName yview nombre
    cette commande rend le premier caractère sur la ligne suivant celle indiquée par nombre visible en haut de la fenêtre. Nombre doit être un entier. cette commande était utilisée pour le défilement, mais elle est maintenant obsolète.

### BINDINGS

Tk crée automatiquement des bindings de classe pour les widgets texte qui leur donne le comportement par défaut suivant. Dans les descriptions ci-dessous, ``word'' est dépendant de la valeur de la variable tcl_wordchars . Voir tclvars(n).

[1]
  Cliquer sur le bouton1 de la souris positionne le curseur d'insertion juste avant le caractère sous le curseur de la souris, place le focus d'entée dans ce widget, et efface toute sélection dans le widget. Glisser avec le bouton1 de la souris définit une sélection entre le curseur d'insertion et le caractère sous la souris.

[2]
  Double cliquer avec le bouton1 de la souris sélectionne le mot sous la souris et positionne le curseur d'insertion au début du mot. Glisser après un double click définira une sélection consistant de mots entiers.

[3]
  Triple cliquer avec le bouton1 de la souris sélectionne la ligne sous la souris et positionne le curseur d'insertion au début de la ligne. Glisser après a un triple clic définira une sélection consistant lignes entières.

[4]
  La fin de la sélection peut être ajustée en cliquant-tirant avec le bouton1 de la souris pendant que la touche Shift est enfoncée; ceci ajustera la fin de la sélection la plus proche du curseur de la souris quand le bouton 1 a été enfoncé. Un double clic avant de glisser ajuste la sélection en unités de mots complets; un triple clic en unités de lignes complètes.

[5]
  Cliquer sur le bouton1 de la souris avec la touche Control enfoncée repositionnera le curseur d'insertion sans affecter la sélection.

[6]
  Si n'importe quels caractères normaux imprimables sont saisis, ils sont insérés au point du curseur d'insertion.

[7]
  La vue dans le widget peut être ajustée en cliquant-tirant avec le bouton 2 de la souris. Si le bouton 2 de la souris est cliqué sans déplacer la souris, la sélection est copiée dans le texte à la position du curseur de la souris. La touche Insère insère aussi la sélection, mais à la position du curseur d'insertion.

[8]
  Si la souris est glissée hors du widget alors que le bouton1 est enfoncé, la fenêtre défile automatiquement pour rebdre plus de texte visible (s'il y a plus de texte hors écran du coté où la souris est sortie de la fenêtre).

[9]
  Les touches flèche droite et flèche gauche déplacent le curseur d'insertion d'un caractère à gauche ou à droite; elles effacent aussi toute sélection dans le texte. Si Left ou Right est tapé avec la touche Shift enfoncée, alors le curseur d'insertion se déplace et la sélection est étendue pour inclure les nouveaux caractères. Control-Left et Control-Right déplacent le curseur d'insertion par mots, et Control-Shift-Left et Control-Shift-Right déplacent le curseur d'insertion par mots et étendent aussi la sélection. Control-b et Control-f se comprtent de même que Left et Right, respectivement. Meta-b et Meta-f se comprtent de même que Control-Left et Control-Right, respectivement.

[10]
  Les touches Up et Down déplacent le curseur d'insertion d'une ligne vers le haut ou le bas et effacent toute sélection dans le texte. Si Up ou Right est tapé avec la touche Shift enfoncée, alors le curseur d'insertion se déplace et la sélection est étendue pour inclure le nouveau caractère. Control-Up et Control-Down déplacent le curseur d'insertion par paragraphes (groupes de lignes séparées par des lignes vides), et Control-Shift-Up et Control-Shift-Down déplacent le curseur d'insertion par paragraphes et étendent aussi la sélection. Control-p et Control-n se comportent de même que Up et Down, respectivement.

[11]
  Les touches Next et Prior (PgUp et PgDown N.D.T.) déplacent le curseur d'insertion en avant ou en arrière d'une page écran et effacent toute sélection dans le texte. Si la touche Shift est maintenue enfoncée pendant que Next ou Prior est tapé, alors la sélection est étendue pour inclure le nouveau caractère. Control-v déplace la vue vers le bas d'une page écran sans déplacer le curseur d'insertion ou ajuster la sélection.

[12]
  Control-Next et Control-Prior font défiler la vue à droite ou à gauche d'une page sans déplacer le curseur d'insertion ou affecter la sélection.

[13]
  Home et Control-a déplacent le curseur d'insertion au le début de sa ligne et effacent toute sélection dans le widget. Shift-Home déplace le curseur d'insertion au début de la ligne et étend également la sélection à ce point.

[14]
  End et Control-e déplacent le curseur d'insertion à la fin de la ligne et effacent toute sélection dans le widget. Shift-End déplace le curseur jusqu'à la fin de la ligne et étend la sélection jusqu'à ce point.

[15]
  Control-Home et Meta-< déplacent le curseur d'insertion au début du texte et effacent toute sélection dans le widget. Control-Shift-Home déplace le curseur d'insertion au début du texte et étend également la sélection jusqu'à ce point.

[16]
  Control-End et Meta-> déplacent le curseur d'insertion jusqu'à la fin du texte et effacent toute sélection dans le widget. Control-Shift-End déplace le curseur jusqu'à la fin du texte et étend la sélection jusqu'à ce point.

[17]
  La touche Select et Control-Space placent une ancre de sélection à la position du curseur d'insertion. Elles n'affectent pas la sélection courante. Shift-Select et Control-Shift-Space ajustent la sélection à la position courante du curseur d'insertion, selectionnant à partir de l'ancre jusqu'au curseur d'insertion s'il n'y avait pas de sélection précédemment.

[18]
  Control-/ sélectionne le contenu entier du widget.

[19]
  Control-\ efface toute sélection dans le widget.

[20]
  La touche F16 (nommée Copy sur de nombreuses stations Sun) ou Meta-w copie la sélection dans le widget vers le presse-papier, s'il y a une sélection. Cette action est accomplie par la commande tk_textCopy.

[21]
  La touche F20 (nommée Cut sur de nombreuses stations Sun) ou Control-w copie la sélection dans le widget vers le presse-papier et efface la sélection. Cette action est accomplie par la commande tk_textCut. S'il n'y a pas de sélection dans le widget alors ces touches n'ont pas d'effet.

[22]
  La touche F18 (nommée Paste sur de nombreuses stations Sun) ou Control-y insère le contenu du presse-papier à la position du curseur d'insertion. Cette action est accomplie par la commande tk_textPaste.

[23]
  La touche Efface efface la sélection, s'il y en a une dans le widget. S'il n'y a pas de sélection, elle efface le caractère à droite du curseur d'insertion.

[24]
  Backspace et Control-h effacent la sélection, s'il y en a une dans le widget. S'il n'y a pas de sélection, ils effacent le caractère à gauche du curseur d'insertion.

[25]
  Control-d efface le caractère à droite du curseur d'insertion.

[26]
  Meta-d efface le mot à droite du curseur d'insertion.

[27]
  Control-k efface à partir du curseur d'insertion jusqu'à la fin de sa ligne; si le curseur d'insertion est déjà à la fin d'une ligne, alors Control-k efface le caractère newline.

[28]
  Control-o crée une nouvelle ligne en insérant un caractère newline en face du curseur d'insertion, sans déplacer le curseur d'insertion.

[29]
  Meta-backspace et Meta-Efface effacent le mot à gauche du curseur d'insertion.

[30]
  Control-x efface tout ce qui est sélectionné dans le text widget.

[31]
  Control-t inverse l'ordre des deux caractères à droite du curseur d'insertion.

Si le widget est désactivé en utilisant l'option -state, alors sa vue peut toujours être ajustée et le texte peut toujours être sélectionné, mais aucun curseur d'insertion ne sera affiché et aucune modifications du texte n'auront lieu.

Le comportement des widgets texte peut être changé en définissant de nouveaux bindings pour des widgets individuels ou en redéfinissant les bindings de classe.

### QUESTIONS DE PERFORMANCE

Les widgets texte devraient s'exécuter efficacement sous des conditions variées. Le widget texte utilise environ 2-3 octets de mémoire centrale pour chaque octet de texte, ainsi les textes contenant un megaoctet ou plus doivent être gérables sur la plupart des stations de travail. Le texte est representé en interne avec une structure B-tree modifiée qui rend les opérations relativement efficaces même avec des textes de gande taille. Le tags sont inclus dans la structure B-tree d'une façon qui permet au tags d'occuper de larges étendues ou d'avoir beaucoup de petites étendues disjointe sans perte d'efficacité. Les marks sont aussi implémentées d'une façon qui permet un grand nombre de marks. Dans la plupart des cas c'est bien d'avoir un grand nombre de tags unique, ou un tag qui a plusieurs étendues distinctes.

Un problème de performance peut se révéler si vous avez des centaines ou des milliers de tags différents qui ont tous les caractéristiques suivantes: la première et dernière étendue de chaque tag sont près du début et de la fin du texte, respectivement, ou une seule étendue de tag occupe la majorité du widget texte. Le coût de l'ajout ou de la suppression de tags de ce type est proportionnel au nombre des autres tags avec les même propriétés. Au contraire, ce n'est pas un problème d'avoir des centaines de tags distincts si leurs étendues sont localisées et réparties uniformément au travers du texte.

Les très longues lignes de texte peuvent être coûteuses, spécialement si elles comprennent de nombreuses marks et tags.

La ligne écran avec le curseur d'insertion est redessinée chaque fois que le curseur clignote, ce qui provoque un torrent de trafic graphique. Positionnez l'attribut insertOffTime à 0 pour eviter cela.

### MOTS-CLES

text, widget, tkvars

    Copyright © 1992 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.