|
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) où 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) où 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) où 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>
|