Blame platform-demos/fr/textview.py.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="textview.py" xml:lang="fr">
Packit 1470ea
  <info>
Packit 1470ea
    <title type="text">TextView (Python)</title>
Packit 1470ea
    <link type="guide" xref="beginner.py#multiline"/>
Packit 1470ea
    <link type="seealso" xref="strings.py"/>
Packit 1470ea
    <link type="seealso" xref="scrolledwindow.py"/>
Packit 1470ea
    <link type="next" xref="dialog.py"/>
Packit 1470ea
    <revision version="0.2" date="2012-06-19" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Sebastian Pölsterl</name>
Packit 1470ea
      <email its:translate="no">sebp@k-d-w.org</email>
Packit 1470ea
      <years>2011</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright editor">
Packit 1470ea
      <name>Marta Maria Casetti</name>
Packit 1470ea
      <email its:translate="no">mmcasetti@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>L'élément graphique qui affiche un GtkTextBuffer</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luc Rebert,</mal:name>
Packit 1470ea
      <mal:email>traduc@rebert.name</mal:email>
Packit 1470ea
      <mal:years>2011</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Alain Lojewski,</mal:name>
Packit 1470ea
      <mal:email>allomervan@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011-2012</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luc Pionchon</mal:name>
Packit 1470ea
      <mal:email>pionchon.luc@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Bruno Brouard</mal:name>
Packit 1470ea
      <mal:email>annoa.b@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011-12</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luis Menina</mal:name>
Packit 1470ea
      <mal:email>liberforce@freeside.fr</mal:email>
Packit 1470ea
      <mal:years>2014</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>TextView</title>
Packit 1470ea
Packit 1470ea
  <note style="sidebar">

Ceci est un exemple de Gtk.TextView.

Packit 1470ea
  

En appuyant sur « Entrée », nous créons une nouvelle ligne.

Packit 1470ea
  

Mais il peut également y avoir un retour à la ligne si nous écrivons une longue phrase (la césure se fait entre deux mots).

Packit 1470ea
  

Si nous avons un loooooooooooooooooooooooooooooooooooong

Packit 1470ea
  

(long comme ça)

Packit 1470ea
  

mot, une barre de défilement horizontale apparaît.

</note>
Packit 1470ea
Packit 1470ea
  <media type="image" mime="image/png" src="media/textview.png"/>
Packit 1470ea
Packit 1470ea
  <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="code">
Packit 1470ea
  <title>Code utilisé pour générer cet exemple</title>
Packit 1470ea
Packit 1470ea
  from gi.repository import Gtk
Packit 1470ea
import sys
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyWindow(Gtk.ApplicationWindow):
Packit 1470ea
Packit 1470ea
    def __init__(self, app):
Packit 1470ea
        Gtk.Window.__init__(self, title="TextView Example", application=app)
Packit 1470ea
        self.set_default_size(300, 450)
Packit 1470ea
Packit 1470ea
        # a scrollbar for the child widget (that is going to be the textview)
Packit 1470ea
        scrolled_window = Gtk.ScrolledWindow()
Packit 1470ea
        scrolled_window.set_border_width(5)
Packit 1470ea
        # we scroll only if needed
Packit 1470ea
        scrolled_window.set_policy(
Packit 1470ea
            Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
Packit 1470ea
Packit 1470ea
        # a text buffer (stores text)
Packit 1470ea
        buffer1 = Gtk.TextBuffer()
Packit 1470ea
Packit 1470ea
        # a textview (displays the buffer)
Packit 1470ea
        textview = Gtk.TextView(buffer=buffer1)
Packit 1470ea
        # wrap the text, if needed, breaking lines in between words
Packit 1470ea
        textview.set_wrap_mode(Gtk.WrapMode.WORD)
Packit 1470ea
Packit 1470ea
        # textview is scrolled
Packit 1470ea
        scrolled_window.add(textview)
Packit 1470ea
Packit 1470ea
        self.add(scrolled_window)
Packit 1470ea
Packit 1470ea
Packit 1470ea
class MyApplication(Gtk.Application):
Packit 1470ea
Packit 1470ea
    def __init__(self):
Packit 1470ea
        Gtk.Application.__init__(self)
Packit 1470ea
Packit 1470ea
    def do_activate(self):
Packit 1470ea
        win = MyWindow(self)
Packit 1470ea
        win.show_all()
Packit 1470ea
Packit 1470ea
    def do_startup(self):
Packit 1470ea
        Gtk.Application.do_startup(self)
Packit 1470ea
Packit 1470ea
app = MyApplication()
Packit 1470ea
exit_status = app.run(sys.argv)
Packit 1470ea
sys.exit(exit_status)
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="methods">
Packit 1470ea
  <title>Méthodes utiles pour un élément graphique TextView</title>
Packit 1470ea
  

Un Gtk.TextView affiche le texte stocké dans le tampon d'un Gtk.TextBuffer. Cependant, la plupart des manipulations de texte se font avec des itérateurs représentés par un Gtk.TextIter - une position entre deux caractères dans le tampon du texte. Les itérateurs ne restent pas valides indéfiniment ; à chaque fois que le tampon se trouve modifié d'une façon qui affecte son contenu, tous les itérateurs en cours deviennent non valides. À cause de cela, les itérateurs ne peuvent pas être utilisés pour préserver les positions en cas de modifications du tampon. Pour préserver une position, nous utilisons donc un marqueur Gtk.TextMark, qui peut être rendu visible avec visible(True). Un tampon de texte contient deux marqueurs intégrés : un marqueur « insert » (la position du curseur) et un marqueur « selection_bound » (limite de sélection).

Packit 1470ea
  

Méthodes pour un élément graphique TextView :

Packit 1470ea
  <list>
Packit 1470ea
    <item>

L'élément graphique TextView est modifiable par défaut. Si vous préférez le contraire, utilisez set_editable(False). Si le tampon ne contient pas de texte modifiable, c'est une bonne idée d'utiliser set_cursor_visible(False) aussi.

</item>
Packit 1470ea
    <item>

La justification du texte est définie par set_justification(Gtk.Justification.JUSTIFICATION)JUSTIFICATION est l'une des valeurs LEFT, RIGHT, CENTER, FILL.

</item>
Packit 1470ea
    <item>

La césure du texte est définie par set_wrap_mode(Gtk.WrapMode.WRAP)WRAP est une des valeurs NONE (la zone de texte s'élargit), CHAR (fait la césure n'importe où le curseur peut apparaître), WORD (fait la césure entre deux mots), WORD_CHAR (fait la césure entre deux mots, mais si cela ne suffit pas, la fait entre deux caractères).

</item>
Packit 1470ea
  </list>
Packit 1470ea
  

Méthodes pour un élément graphique TextBuffer :

Packit 1470ea
  <list>
Packit 1470ea
    <item>

La méthode get_insert() retourne le marqueur Gtk.TextMark qui représente le curseur, c'est-à-dire le point d'insertion.

</item>
Packit 1470ea
    <item>

La méthode get_selection_bound() renvoie le marqueur Gtk.TextMark qui représente les limites de la sélection.

</item>
Packit 1470ea
    <item>

La méthode set_text("du texte", longueur)longueur est un nombre entier positif ou -1 définit le contenu du tampon comme étant les longueur premiers caractères du texte du texte. Si longueur est omis ou égal à -1, tout le texte est inséré. Le contenu du tampon, s'il existe, est détruit.

</item>
Packit 1470ea
    <item>

La méthode insert(iter, "du texte", longueur), où iter est un itérateur et longueur est un nombre entier positif ou -1, insère dans le tampon à l'endroit de iter les longueur premiers caractères du texte du texte. Si longueur est omis ou égal à -1, tout le texte est inséré.

</item>
Packit 1470ea
    <item>

La méthode insert_at_cursor("du texte", longueur) effectue la même action que insert(iter, "du texte", length), avec le curseur actuel comme iter.

</item>
Packit 1470ea
    <item>

La méthode create_mark("nom_marqueur", iter, left_gravity), où iter est un Gtk.TextIter et left_gravity une valeur booléenne, crée un marqueur Gtk.TextMark à l'emplacement de l'iter. Si la valeur de "nom_marqueur" est None, le marqueur est anonyme ; sinon, le marqueur peut être récupéré par son nom avec get_mark(). Si un marqueur possède la propriété left_gravity et que le texte est inséré à son emplacement actuel, alors le marqueur est déplacé à gauche du texte qui vient d'être inséré. Si la valeur left_gravity est omise, alors la valeur False est utilisée par défaut.

</item>
Packit 1470ea
    <item>

Pour indiquer qu'un morceau de texte du tampon doit être formatée spécifiquement, vous devez définir une étiquette contenant cette information de formatage et ensuite l'appliquer à la portion de texte en utilisant create_tag("nom etiquette", propriété) et apply_tag(tag, start_iter, end_iter), par exemple comme ceci :

Packit 1470ea
      
Packit 1470ea
etiquette = textbuffer.create_tag("fond_orange", background="orange")
Packit 1470ea
textbuffer.apply_tag(etiquette, start_iter, end_iter)
Packit 1470ea
     

Voici quelques styles les plus usuels appliqués à du texte :

Packit 1470ea
      <list>
Packit 1470ea
        <item>

Couleur d'arrière-plan (propriété « background »)

</item>
Packit 1470ea
        <item>

Couleur de premier plan (propriété « foreground »)

</item>
Packit 1470ea
        <item>

Souligné (propriété « underline »)

</item>
Packit 1470ea
        <item>

Gras (propriété « weight »)

</item>
Packit 1470ea
        <item>

Italique (propriété « style »)

</item>
Packit 1470ea
        <item>

Barré (propriété « strikethrough »)

</item>
Packit 1470ea
        <item>

Justifié (propriété « justification »)

</item>
Packit 1470ea
        <item>

Taille (propriétés « size » et « size-points »)

</item>
Packit 1470ea
        <item>

Césure (propriété « wrap-mode »)

</item>
Packit 1470ea
      </list>
Packit 1470ea
    

Vous pouvez aussi supprimer par la suite certaines étiquettes en particulier avec remove_tag(), ou supprimer toutes celles d'une région donnée avec remove_all_tags().

</item>
Packit 1470ea
  </list>
Packit 1470ea
  

Méthodes pour un élément graphique TextIter

Packit 1470ea
  <list>
Packit 1470ea
    <item>

La méthode forward_search(needle, flags, limit) effectue une recherche en avant de needle (cible). La recherche ne s'effectue pas au delà de l'itérateur Gtk.TextIter. Les flags (drapeaux) peuvent être définis comme l'un des éléments suivants, ou comme n'importe quelle combinaison de l'un d'eux, en les concaténant avec l'opérateur binaire OR | : 0 (la correspondance doit être exacte) ; Gtk.TextSearchFlags.VISIBLE_ONLY (la correspondance peut contenir du texte invisible intercalé dans la sélection) ; Gtk.TextSearchFlags.TEXT_ONLY (la correspondance peut contenir des pixbufs ou des éléments graphiques enfants mélangés dans la sélection) ; Gtk.TextSearchFlags.CASE_INSENSITIVE (la correspondance n'est pas sensible à la casse). La méthode renvoie un tuple contenant un Gtk.TextIter qui pointe vers le début et vers le premier caractère après la correspondance ; s'il n'y a pas de correspondance, elle renvoie la valeur None.

</item>
Packit 1470ea
    <item>

La méthode backward_search(needle, flags, limit) effectue les même actions que forward_search(), mais en arrière.

</item>
Packit 1470ea
  </list>
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="references">
Packit 1470ea
  <title>Références API</title>
Packit 1470ea
  

Dans cet exemple, les éléments suivants sont utilisés :

Packit 1470ea
  <list>
Packit 1470ea
    <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkTextView.html">GtkTextView</link>

</item>
Packit 1470ea
    <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkTextBuffer.html">GtkTextBuffer</link>

</item>
Packit 1470ea
    <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkTextTag.html">GtkTextTag</link>

</item>
Packit 1470ea
    <item>

<link href="http://developer.gnome.org/gtk3/unstable/GtkScrolledWindow.html">GtkScrolledWindow</link>

</item>
Packit 1470ea
    <item>

<link href="http://developer.gnome.org/gtk3/unstable/gtk3-Standard-Enumerations.html">Standard Enumerations</link>

</item>
Packit 1470ea
  </list>
Packit 1470ea
  </section>
Packit 1470ea
</page>