# French translation for gnome-devel-docs. # Copyright (C) 2011 gnome-devel-docs's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-devel-docs package. # # # Luc Rebert , 2011. # Luc Pionchon , 2011. # Alain Lojewski , 2011, 2012. # Bruno Brouard , 2011, 2012. msgid "" msgstr "" "Project-Id-Version: gnome-devel-docs master\n" "POT-Creation-Date: 2020-06-12 10:34+0000\n" "PO-Revision-Date: 2014-03-16 21:24+0100\n" "Last-Translator: Luis Menina \n" "Language-Team: French \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 1.5.7\n" #. Put one translator per line, in the form NAME , YEAR1, YEAR2 msgctxt "_" msgid "translator-credits" msgstr "" "Luc Rebert, , 2011\n" "Alain Lojewski, , 2011-2012\n" "Luc Pionchon , 2011\n" "Bruno Brouard , 2011-12\n" "Luis Menina , 2014" #. (itstool) path: credit/name #: C/02_welcome_to_the_grid.js.page:15 C/03_getting_the_signal.js.page:16 #: C/aboutdialog.js.page:12 C/button.js.page:13 C/checkbutton.js.page:13 #: C/comboboxtext.js.page:15 C/combobox.js.page:17 C/dialog.js.page:13 #: C/entry.js.page:13 C/grid.js.page:18 C/hellognome.js.page:12 #: C/image.js.page:12 C/label.js.page:13 C/linkbutton.js.page:13 #: C/messagedialog.js.page:16 C/progressbar.js.page:12 C/radiobutton.js.page:13 #: C/scale.js.page:13 C/set-up-gedit.js.page:12 C/spinbutton.js.page:16 #: C/spinner.js.page:13 C/statusbar.js.page:13 C/switch.js.page:13 #: C/textview.js.page:17 C/togglebutton.js.page:13 #: C/treeview_simple_liststore.js.page:16 C/window.js.page:13 msgid "Taryn Fox" msgstr "Taryn Fox" #. (itstool) path: credit/years #: C/02_welcome_to_the_grid.js.page:17 C/03_getting_the_signal.js.page:18 #: C/aboutdialog.c.page:17 C/aboutdialog.js.page:14 C/aboutdialog.py.page:16 #: C/aboutdialog.vala.page:17 C/beginner.js.page:13 C/button.c.page:17 #: C/button.js.page:15 C/button.py.page:17 C/button.vala.page:16 #: C/buttonbox.py.page:17 C/checkbutton.c.page:15 C/checkbutton.js.page:15 #: C/checkbutton.py.page:16 C/checkbutton.vala.page:15 C/colorbutton.py.page:16 #: C/colorbutton.vala.page:17 C/comboboxtext.js.page:17 C/combobox.c.page:15 #: C/combobox.js.page:19 C/combobox.py.page:17 C/combobox.vala.page:15 #: C/combobox_multicolumn.py.page:16 C/dialog.c.page:17 C/dialog.js.page:15 #: C/dialog.py.page:17 C/dialog.vala.page:15 C/entry.c.page:15 #: C/entry.js.page:15 C/entry.py.page:17 C/entry.vala.page:15 #: C/filechooserdialog.py.page:19 C/filechooserdialog.vala.page:18 #: C/fontchooserwidget.py.page:17 C/gmenu.c.page:15 C/gmenu.js.page:15 #: C/gmenu.py.page:17 C/gmenu.py.page:23 C/gmenu.vala.page:16 C/grid.c.page:15 #: C/grid.js.page:15 C/grid.py.page:17 C/grid.py.page:23 C/grid.vala.page:17 #: C/GtkApplicationWindow.c.page:15 C/GtkApplicationWindow.js.page:15 #: C/GtkApplicationWindow.py.page:17 C/GtkApplicationWindow.py.page:22 #: C/GtkApplicationWindow.vala.page:15 C/guitar-tuner.js.page:14 #: C/hellognome.js.page:14 C/hello-world.c.page:17 C/hello-world.js.page:17 #: C/hello-world.py.page:17 C/hello-world.vala.page:17 C/image.c.page:15 #: C/image.js.page:14 C/image.py.page:17 C/image.vala.page:15 C/label.c.page:16 #: C/label.js.page:15 C/label.py.page:19 C/label.py.page:24 #: C/label.vala.page:15 C/linkbutton.c.page:15 C/linkbutton.js.page:15 #: C/linkbutton.py.page:16 C/linkbutton.vala.page:15 C/menubar.c.page:17 #: C/menubar.py.page:17 C/menubar.py.page:22 C/menubar.vala.page:17 #: C/menubutton.js.page:15 C/menubutton.py.page:16 C/menubutton.py.page:22 #: C/menubutton.vala.page:15 C/messagedialog.c.page:16 #: C/messagedialog.js.page:18 C/messagedialog.py.page:16 #: C/messagedialog.vala.page:15 C/model-view-controller.py.page:23 #: C/paned.c.page:15 C/paned.py.page:16 C/progressbar.c.page:16 #: C/progressbar.js.page:14 C/progressbar.py.page:16 C/progressbar.vala.page:15 #: C/properties.py.page:23 C/radiobutton.c.page:17 C/radiobutton.js.page:15 #: C/radiobutton.py.page:17 C/radiobutton.vala.page:18 C/response-type.page:11 #: C/scale.c.page:17 C/scale.js.page:15 C/scale.py.page:17 C/scale.vala.page:17 #: C/scrolledwindow.c.page:17 C/scrolledwindow.py.page:16 #: C/scrolledwindow.vala.page:16 C/separator.py.page:17 #: C/set-up-gedit.js.page:14 C/signals-callbacks.py.page:23 #: C/spinbutton.c.page:18 C/spinbutton.js.page:18 C/spinbutton.py.page:17 #: C/spinbutton.vala.page:17 C/spinner.c.page:16 C/spinner.js.page:15 #: C/spinner.py.page:16 C/spinner.vala.page:15 C/statusbar.c.page:19 #: C/statusbar.js.page:15 C/statusbar.py.page:17 C/statusbar.vala.page:18 #: C/strings.py.page:23 C/switch.c.page:15 C/switch.js.page:15 #: C/switch.py.page:16 C/switch.vala.page:19 C/textview.c.page:15 #: C/textview.js.page:19 C/textview.py.page:24 C/textview.vala.page:15 #: C/togglebutton.c.page:19 C/togglebutton.js.page:15 C/togglebutton.py.page:16 #: C/togglebutton.vala.page:18 C/toolbar.c.page:17 C/toolbar.js.page:15 #: C/toolbar.py.page:17 C/toolbar.vala.page:16 C/toolbar_builder.py.page:18 #: C/toolbar_builder.py.page:24 C/toolbar_builder.vala.page:17 #: C/tooltip.py.page:17 C/treeview_advanced_liststore.py.page:16 #: C/treeview_cellrenderertoggle.py.page:16 #: C/treeview_simple_liststore.js.page:18 #: C/treeview_simple_liststore.py.page:17 #: C/treeview_simple_liststore.vala.page:17 C/treeview_treestore.py.page:17 #: C/tutorial.py.page:17 C/weatherApp.js.page:14 C/weatherAppMain.js.page:13 #: C/weatherAutotools.js.page:13 C/weatherGeonames.js.page:13 #: C/window.c.page:15 C/window.js.page:15 C/window.py.page:17 #: C/window.py.page:22 C/window.vala.page:15 msgid "2012" msgstr "2012" #. (itstool) path: info/desc #: C/02_welcome_to_the_grid.js.page:20 msgid "Learn how to lay out UI components, like Images and Labels." msgstr "" "Apprenez à disposer les éléments d'interface graphique, comme les images ou " "les étiquettes." #. (itstool) path: page/title #: C/02_welcome_to_the_grid.js.page:23 msgid "2. Welcome to the Grid" msgstr "2. Bienvenue devant la Grid" #. (itstool) path: synopsis/p #: C/02_welcome_to_the_grid.js.page:25 msgid "" "This tutorial will show you how to create basic widgets, or parts of the " "GNOME user interface, like Images and Labels. You'll then learn how to " "arrange them all in a Grid, which lets you put widgets exactly where you " "want them." msgstr "" "Ce tutoriel vous montrera comment créer des composants graphiques basiques, " "ou des parties de l'interface utilisateur de GNOME, comme les images ou les " "étiquettes. Vous apprendrez ensuite comment les arranger tous dans une " "grille, qui vous permet de placer les widgets où vous le souhaitez." #. (itstool) path: note/p #: C/02_welcome_to_the_grid.js.page:26 msgid "" "Have you taken the first tutorial in this " "series already? You'll want to do so before continuing." msgstr "" "Avez vous lu le premier tutoriel de cette " "série ? Faites le avant de continuer." #. (itstool) path: section/title #: C/02_welcome_to_the_grid.js.page:32 msgid "Going native" msgstr "Côté natif" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:34 msgid "" "In the last tutorial, we created what was basically a GNOME window frame for " "a web app. All the GNOME-specific code we needed to learn revolved around " "putting the WebView -- the widget containing our application -- into an " "ApplicationWindow, and telling it to display. The application itself was " "written in HTML and JavaScript, just like most pages on the web." msgstr "" "Dans le dernier tutoriel, nous avons créé un cadre de fenêtre GNOME pour une " "application web. Tout le code spécifique à GNOME dont nous avons eu besoin " "consistait à mettre la WebView ­– le composant graphique contenant notre " "application – dans notre fenêtre applicative, et lui dire de s'afficher. " "L'application elle-même était écrite en HTML et JavaScript, comme la plupart " "des pages du web." #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:35 msgid "" "This time, we're going to use only native GNOME widgets. A widget is just a " "thing, like a checkbox or picture, and GNOME has a wide variety of them to " "choose from. We call them \"native\" widgets to distinguish them from things " "like the button and header in the web app we wrote. Because instead of using " "web code, these are going to be 100 percent GNOME, using GTK+." msgstr "" #. (itstool) path: note/p #: C/02_welcome_to_the_grid.js.page:36 msgid "" "GTK+ stands for \"GIMP Toolkit\". It's like a toolbox of widgets that you " "can reach into, while building your applications. It was originally written " "for the GIMP, which is a free " "software image editor." msgstr "" #. (itstool) path: section/title #: C/02_welcome_to_the_grid.js.page:40 msgid "Setting up our application" msgstr "Mise en place de notre application" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:42 msgid "" "Before we dig out any widgets from the GTK+ toolbox, we first need to write " "the basic boilerplate code that our application requires." msgstr "" "Avant de sortir des outils de notre boîte à outils GTK+, nous devons écrire " "du code d'enrobage requis par l'application." #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:43 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "#!/usr/bin/gjs\n" #| "\n" #| "const Gtk = imports.gi.Gtk;\n" #| "const Lang = imports.lang;\n" msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" msgstr "" "\n" "#!/usr/bin/gjs\n" "\n" "const Gtk = imports.gi.Gtk;\n" "const Lang = imports.lang;\n" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:49 #, fuzzy #| msgid "" #| "This part always goes at the start of your code. Depending on what you'll " #| "be doing with it, you may want to declare more imports here. What we're " #| "writing today is pretty basic, so these are all we need; Gtk for the " #| "widgets, and Lang so we can use Lang.bind to connect our application's " #| "activate and startup signals to the requisite functions." msgid "" "This part always goes at the start of your code. Depending on what you'll be " "doing with it, you may want to declare more imports here. What we're writing " "today is pretty basic, so these are all we need; Gtk for the widgets, using " "the stable '3.0' API." msgstr "" "Cette partie va toujours au début de votre code. Selon ce que vous souhaitez " "en faire, vous pourriez importer plus de choses ici. Cet exemple est assez " "basique, aussi nous n'avons pas besoin de plus ; Gtk pour les composants " "graphiques et Lang pour pouvoir utilise Lang.bind pour connecter les signaux " "« activate » et « startup » aux fonctions correspondantes." #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:50 msgid "Speaking of which:" msgstr "À propos de cela :" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:51 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "const WelcomeToTheGrid = new Lang.Class({\n" #| " Name: 'Welcome to the Grid',\n" #| "\n" #| " // Create the application itself\n" #| " _init: function() {\n" #| " this.application = new Gtk.Application();\n" #| "\n" #| " // Connect 'activate' and 'startup' signals to the callback functions\n" #| " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" #| " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" #| " },\n" #| "\n" #| " // Callback function for 'activate' signal presents windows when active\n" #| " _onActivate: function() {\n" #| " this._window.present();\n" #| " },\n" #| "\n" #| " // Callback function for 'startup' signal builds the UI\n" #| " _onStartup: function() {\n" #| " this._buildUI ();\n" #| " },\n" msgid "" "\n" "class WelcomeToTheGrid {\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI ();\n" " }\n" msgstr "" "\n" "const WelcomeToTheGrid = new Lang.Class({\n" " Name: 'Bienvenue devant la Grid',\n" "\n" " // Création de l'application\n" " _init: function() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connection des signaux 'activate' et 'startup' aux fonctions de rappel\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'activate' présente la fenêtre quand elle est activée\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'startup' construise l'interface graphique\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:72 msgid "" "This is the start of the application itself, and the _init function which " "creates it. It tells _buildUI to create an ApplicationWindow, which we're " "going to call _window, and it tells our window to present itself whenever " "needed." msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:73 msgid "" "This part, again, is pretty much copy-and-paste, but you always want to give " "your application a unique name." msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:75 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 10,\n" " title: \"Welcome to the Grid\"});\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:86 msgid "" "Finally, we start off the _buildUI function by creating a new " "ApplicationWindow. We specify that it goes with this application, that it " "should appear in the center of the screen, and that there should be at least " "10 pixels between the outside edge and any widgets inside of it. We also " "give it a title, which will appear at the top of the window." msgstr "" #. (itstool) path: section/title #: C/02_welcome_to_the_grid.js.page:90 msgid "Reaching into the GTK+ toolbox" msgstr "Sortons la boîte à outils GTK+" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:91 msgid "" "What widgets should we use? Well, let's say we want to write an application " "that looks like this:" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/02_welcome_to_the_grid.js.page:93 #, fuzzy #| msgid "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" msgctxt "_" msgid "" "external ref='media/02_jsgrid_01.png' md5='3fdc22d361cf801f71557fdc76ae5b49'" msgstr "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:95 msgid "" "We're going to need, at the very least, a picture and a text label to go " "with it. Let's start with the picture:" msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:96 #, no-wrap msgid "" "\n" " // Create an image\n" " this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:101 msgid "" "You can download the image file used in this example here. Be sure to put it in the same directory as the code " "you're writing." msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:103 #, no-wrap msgid "" "\n" " // Create a label\n" " this._label = new Gtk.Label ({ label: \"Welcome to GNOME, too!\" });\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:107 msgid "" "That code adds in the label beneath. You can see how we create widgets, " "here; each one is a part of Gtk, and we can give it properties that " "customize how it behaves. In this case, we set the Image's file property to " "be the filename of the picture we want, and the Label's label property to be " "the sentence that we want beneath the picture." msgstr "" #. (itstool) path: note/p #: C/02_welcome_to_the_grid.js.page:108 msgid "" "Yes, it sounds redundant for a Label to have a label property, but it's not. " "Other widgets that contain text have a label property, so it's " "consistent for the Label widget to have one too." msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:109 msgid "" "We can't just add these widgets to our window in order, though, the same way " "HTML elements appear in the order you write them. That's because an " "ApplicationWindow can only contain one widget." msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:110 msgid "" "How do we get around that? By making that one widget a container widget, " "which can hold more than one widget and organize them inside it. Behold: The " "Grid." msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:111 #, no-wrap msgid "" "\n" " // Create the Grid\n" " this._grid = new Gtk.Grid ();\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:116 msgid "" "We're not giving it any properties yet. Those will come later, as we learn " "how to use the Grid's powers. First, let's attach the Image and Label we " "made to our Grid." msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:117 #, no-wrap msgid "" "\n" " // Attach the image and label to the grid\n" " this._grid.attach (this._image, 0, 0, 1, 1);\n" " this._grid.attach (this._label, 0, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:123 msgid "" "This code looks awfully complicated, but it's not. Here's what those numbers " "mean:" msgstr "" #. (itstool) path: item/p #: C/02_welcome_to_the_grid.js.page:125 msgid "" "The first number is what left-to-right position to put things in, " "starting from 0. Any widget that uses a 0 here goes all the way to the left." msgstr "" #. (itstool) path: item/p #: C/02_welcome_to_the_grid.js.page:126 msgid "" "The second number is what top-to-bottom position to put a given " "widget in, starting from 0. The Label goes beneath the Image, so we give the " "Image a 0 and the Label a 1 here." msgstr "" #. (itstool) path: item/p #: C/02_welcome_to_the_grid.js.page:127 msgid "" "The third and fourth numbers are how many columns and rows " "a widget should take up. We'll see how these work in a minute." msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:130 #, no-wrap msgid "" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new WelcomeToTheGrid ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:144 msgid "" "Now that we've created the Grid and attached all our widgets to it, we add " "it to the window and tell the window to show itself, as the last part of the " "_buildUI function. As always, to finish up we create a new instance of the " "application's class and tell it to run." msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:145 #, fuzzy #| msgid "" #| "To run this application, first save it as helloWorld.js. Then open " #| "Terminal, go to the folder where your application is stored and run" msgid "" "Save your application as welcome_to_the_grid.js. Then, to run your " "application just open a terminal, go to the directory where your application " "is at, and type" msgstr "" "Pour lancer cette application, enregistrez-la d'abord sous le nom helloWorld." "js, puis ouvrez Terminal, allez dans le dossier où l'application est " "enregistrée et lancez" #. (itstool) path: section/screen #: C/02_welcome_to_the_grid.js.page:146 #, no-wrap msgid " $ gjs welcome_to_the_grid.js " msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/02_welcome_to_the_grid.js.page:148 #, fuzzy #| msgid "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" msgctxt "_" msgid "" "external ref='media/02_jsgrid_02.png' md5='07db86b0043ba5c3c24a90d7322bd81e'" msgstr "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:150 msgid "" "There we go! But wait. That doesn't look right. Why is the Label crammed up " "next to the Image like that? That doesn't look as nice, and it makes it " "harder to read. What can we do about this?" msgstr "" #. (itstool) path: section/title #: C/02_welcome_to_the_grid.js.page:154 msgid "Tweaking the Grid" msgstr "Manipulons la Grid" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:156 msgid "" "One thing we can do, is we can give the Label a margin_top property when we " "create it. This works sort of like setting a margin for an HTML element " "using inline CSS styling." msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:157 #, no-wrap msgid "" "\n" " // Create a label\n" " this._label = new Gtk.Label ({\n" " label: \"Welcome to GNOME, too!\",\n" " margin_top: 20 });\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:164 msgid "" "Of course, if we do that then if we replace the Label with something else -- " "or add in another widget -- then we have to repeat the margin_top on it too. " "Otherwise we end up with something like this:" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/02_welcome_to_the_grid.js.page:165 #, fuzzy #| msgid "" #| "@@image: 'media/grid_simple.png'; md5=c806f2e69b30373d4d2e08b41d6cc1f6" msgctxt "_" msgid "" "external ref='media/02_jsgrid_03.png' md5='817351e73c687d47253c56ed06b6629f'" msgstr "@@image: 'media/grid_simple.png'; md5=c806f2e69b30373d4d2e08b41d6cc1f6" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:167 msgid "" "We could give the Image a margin_bottom property, but that won't work when " "the new Label is in a separate column. So how about we try this instead:" msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:168 #, no-wrap msgid "" "\n" " // Create the Grid\n" " this._grid = new Gtk.Grid ({\n" " row_spacing: 20 });\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:174 msgid "" "That makes it so that there are always 20 pixels of space in between each " "horizontal row." msgstr "" #. (itstool) path: note/p #: C/02_welcome_to_the_grid.js.page:175 msgid "" "Yes, you can also set the column_spacing property on a Grid, or the " "margin_left and margin_right properties on any widget. Try them out, if you " "like!" msgstr "" #. (itstool) path: section/title #: C/02_welcome_to_the_grid.js.page:179 msgid "Adding more widgets" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:181 msgid "" "If we did want to add a second Label, how would we do it so that it actually " "looked like it belonged there? One way is to center the Image on top, so " "that it's above both Labels instead of just the one on the left. That's " "where those other numbers in the Grid's attach method come in:" msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:182 #, no-wrap msgid "" "\n" " // Create a second label\n" " this._labelTwo = new Gtk.Label ({\n" " label: \"The cake is a pie.\" });\n" "\n" " // Attach the image and labels to the grid\n" " this._grid.attach (this._image, 0, 0, 2, 1);\n" " this._grid.attach (this._label, 0, 1, 1, 1);\n" " this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:193 msgid "" "After we create the second Label, we attach it to the Grid to the right of " "the first Label. Remember, the first two numbers count columns and rows from " "left to right and top to bottom, starting with 0. So if the first Label is " "in column 0 and row 1, we can put the second in column 1 and row 1 to put it " "to the right of the first Label." msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:194 msgid "" "Note the number 2 in the attach statement for the Image. That's what does " "the trick here. That number is how many columns the Image spans, remember? " "So when we put it together, we get something like this:" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/02_welcome_to_the_grid.js.page:195 #, fuzzy #| msgid "@@image: 'media/glade_ui.png'; md5=baea74fe213bc12ea934f64f6977215a" msgctxt "_" msgid "" "external ref='media/02_jsgrid_04.png' md5='eeaead27cee2851877fc3cfe66177f07'" msgstr "@@image: 'media/glade_ui.png'; md5=baea74fe213bc12ea934f64f6977215a" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:197 msgid "There are two things you should take note of, here." msgstr "" #. (itstool) path: item/p #: C/02_welcome_to_the_grid.js.page:199 msgid "" "Setting the Image to span two columns doesn't stretch the picture itself " "horizontally. Instead, it stretches the invisible box taken up by the Image " "widget to fill both columns, then places the Image in the center of that box." msgstr "" #. (itstool) path: item/p #: C/02_welcome_to_the_grid.js.page:200 msgid "" "Even though we've set the Grid's row_spacing and the ApplicationWindow's " "border_width properties, we haven't yet set anything that puts a border in " "between the two Labels. They were separate earlier when the Image was in " "only one column, but now that it spans both GNOME doesn't see a reason to " "keep them apart." msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:203 msgid "" "There are at least three ways we can get around that last one. First, we can " "set a margin_left or margin_right on one of the Labels:" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/02_welcome_to_the_grid.js.page:204 #, fuzzy #| msgid "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" msgctxt "_" msgid "" "external ref='media/02_jsgrid_05.png' md5='a3ad12f432d5977fc1f66302ad5b7498'" msgstr "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:206 msgid "Second, we can set the Grid's column_homogeneous property to true." msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:207 #, no-wrap msgid "" "\n" " // Create the Grid\n" " this._grid = new Gtk.Grid ({\n" " column_homogeneous: true,\n" " row_spacing: 20 });\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:214 msgid "That makes it look something like this:" msgstr "Cela ressemble à présent à quelque chose comme ceci :" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/02_welcome_to_the_grid.js.page:215 #, fuzzy #| msgid "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" msgctxt "_" msgid "" "external ref='media/02_jsgrid_06.png' md5='450e48dbf6b8f5ce1c208e4812e1714b'" msgstr "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:217 msgid "" "And third, we can set the Grid's column_spacing property, the same way we " "set its row_spacing." msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:218 #, no-wrap msgid "" "\n" " // Create the Grid\n" " this._grid = new Gtk.Grid ({\n" " column_spacing: 20,\n" " row_spacing: 20 });\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:224 msgid "That makes it look like this:" msgstr "Cela ressemble à présent à ceci :" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/02_welcome_to_the_grid.js.page:225 #, fuzzy #| msgid "" #| "@@image: 'media/grid_simple.png'; md5=c806f2e69b30373d4d2e08b41d6cc1f6" msgctxt "_" msgid "" "external ref='media/02_jsgrid_07.png' md5='0b304d70728903fbb2601d55bf00fdb9'" msgstr "@@image: 'media/grid_simple.png'; md5=c806f2e69b30373d4d2e08b41d6cc1f6" #. (itstool) path: section/title #: C/02_welcome_to_the_grid.js.page:229 msgid "Using stock images" msgstr "Utilisation des images de la collection" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:231 msgid "" "GNOME has a lot of stock images on hand already, that we can use if we don't " "feel like creating our own or if we want a universally-recognized icon. " "Here's how we create a stock image, compared to how we create a normal one:" msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:232 #, no-wrap msgid "" "\n" " // Create an image\n" " this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n" "\n" " // Create a second image using a stock icon\n" " this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:239 msgid "" "After that, we attach it to the Grid to the left of the first Label. (We " "aren't using the second one for this example.)" msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:240 #, no-wrap msgid "" "\n" " // Attach the images and label to the grid\n" " this._grid.attach (this._image, 0, 0, 2, 1);\n" " this._grid.attach (this._icon, 0, 1, 1, 1);\n" " this._grid.attach (this._label, 1, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:246 msgid "That gives us this, when we run it:" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/02_welcome_to_the_grid.js.page:247 #, fuzzy #| msgid "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" msgctxt "_" msgid "" "external ref='media/02_jsgrid_08.png' md5='78890beb47bd11360154b8ca4d50d1ff'" msgstr "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:249 msgid "" "That's what the stock \"About\" icon looks like. You can see a list of all " "the stock items starting with gtk-about in GNOME's " "developer documentation. It was written for C programmers, but you " "don't need to know C to use it; just look at the part in quotation marks, " "like \"gtk-about\", and copy that part to use the icon next to it." msgstr "" #. (itstool) path: note/p #: C/02_welcome_to_the_grid.js.page:250 msgid "" "We put single quotes around 'gtk-about' here because, unlike text strings " "that have double quotes around them, that part will never need to be " "translated into another language. In fact, if it were translated " "it'd break the icon, because its name is still \"gtk-about\" no matter which " "language you speak." msgstr "" #. (itstool) path: section/title #: C/02_welcome_to_the_grid.js.page:255 C/03_getting_the_signal.js.page:336 #: C/hellognome.js.page:191 msgid "What's next?" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:256 msgid "" "Before we go on to the next tutorial, let's try something a little different:" msgstr "" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:257 #, no-wrap msgid "" "\n" " // Create a button\n" " this._button = new Gtk.Button ({\n" " label: \"Welcome to GNOME, too!\"});\n" "\n" " // Attach the images and button to the grid\n" " this._grid.attach (this._image, 0, 0, 2, 1);\n" " this._grid.attach (this._icon, 0, 1, 1, 1);\n" " this._grid.attach (this._button, 1, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:268 msgid "" "That's right, we turned the Label into a Button just by changing the name! " "If you run the application and click on it, though, you'll find that it " "doesn't do anything. How do we make our Button do something? That's what " "we'll find out, in our next " "tutorial." msgstr "" #. (itstool) path: section/p #: C/02_welcome_to_the_grid.js.page:269 msgid "" "If you like, feel free to spend some time experimenting with Grids, Labels, " "and Images, including stock images." msgstr "" #. (itstool) path: note/p #: C/02_welcome_to_the_grid.js.page:270 msgid "" "One trick you can use to make more complex layouts is to nest Grids inside " "of each other. This lets you group together related widgets, and rearrange " "them easily. Take a look at the RadioButton code sample if you'd like to see how this is done." msgstr "" #. (itstool) path: section/title #: C/02_welcome_to_the_grid.js.page:274 C/checkbutton.js.page:130 #: C/comboboxtext.js.page:171 C/combobox.js.page:228 C/hellognome.js.page:198 #: C/messagedialog.js.page:184 C/radiobutton.js.page:269 C/scale.js.page:203 #: C/spinbutton.js.page:194 C/statusbar.js.page:216 C/switch.js.page:259 #: C/textview.js.page:243 C/togglebutton.js.page:148 #: C/treeview_simple_liststore.js.page:267 msgid "Complete code sample" msgstr "Exemple complet de code" #. (itstool) path: section/code #: C/02_welcome_to_the_grid.js.page:275 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class WelcomeToTheGrid {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI ();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 10,\n" " title: \"Welcome to the Grid\"});\n" "\n" " // Create the Grid\n" " this._grid = new Gtk.Grid ({\n" " // column_homogeneous: true,\n" " // column_spacing: 20,\n" " row_spacing: 20 });\n" "\n" " // Create an image\n" " this._image = new Gtk.Image ({ file: \"gnome-image.png\" });\n" "\n" " // Create a second image using a stock icon\n" " this._icon = new Gtk.Image ({ stock: 'gtk-about' });\n" "\n" " // Create a label\n" " this._label = new Gtk.Label ({\n" " label: \"Welcome to GNOME, too!\",\n" " /* margin_top: 20 */ });\n" "\n" " /* Create a second label\n" " this._labelTwo = new Gtk.Label ({\n" " label: \"The cake is a pie.\" }); */\n" "\n" " /* Create a button\n" " this._button = new Gtk.Button ({\n" " label: \"Welcome to GNOME, too!\"}); */\n" "\n" " // Attach the images and button to the grid\n" " this._grid.attach (this._image, 0, 0, 2, 1);\n" " this._grid.attach (this._icon, 0, 1, 1, 1);\n" " this._grid.attach (this._label, 1, 1, 1, 1);\n" "\n" " // this._grid.attach (this._label, 0, 1, 1, 1);\n" " // this._grid.attach (this._labelTwo, 1, 1, 1, 1);\n" "\n" " // this._grid.attach (this._button, 1, 1, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new WelcomeToTheGrid ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: info/desc #: C/03_getting_the_signal.js.page:21 #, fuzzy #| msgid "A button widget that changes its label when you click it." msgid "Create Buttons and other widgets that do things when you click on them." msgstr "" "Un élément graphique Bouton qui change d'étiquette quand il est cliqué." #. (itstool) path: page/title #: C/03_getting_the_signal.js.page:24 msgid "3. Getting the Signal" msgstr "3. Connexion des signaux" #. (itstool) path: synopsis/p #: C/03_getting_the_signal.js.page:26 msgid "" "In the last tutorial, we learned how to create widgets like Labels, Images, " "and Buttons. Here, we'll learn how to make Buttons and other input widgets " "actually do things, by writing functions which handle the signals they send " "when they are clicked on or interacted with." msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:32 msgid "A basic application" msgstr "Une application basique" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:33 msgid "" "In GNOME, widgets that you can interact with, like Buttons and Switches, " "send out signals when they are clicked on or activated. A Button, for " "instance, sends out the \"clicked\" signal when somebody clicks on it. When " "this happens, GNOME looks for the part in your code that says what to do." msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:34 msgid "" "How do we write that code? By connecting that Button's \"clicked\" signal to " "a callback function, which is a function you write just to handle that " "signal. So whenever it gives off that signal, the function connected to that " "signal is run." msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:35 msgid "Here is an extremely basic example:" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/03_getting_the_signal.js.page:37 C/03_getting_the_signal.js.page:349 #, fuzzy #| msgid "@@image: 'media/scale.png'; md5=462c52a53b773cb9e8c62c646bf88452" msgctxt "_" msgid "" "external ref='media/03_jssignal_01.png' " "md5='8d6ecab185f4af4534cc255d62b58b8e'" msgstr "@@image: 'media/scale.png'; md5=462c52a53b773cb9e8c62c646bf88452" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:39 msgid "" "This ApplicationWindow has a Button and a Label inside it, arranged in a " "Grid. Whenever the Button is clicked, a variable that holds the number of " "cookies is increased by 1, and the Label that shows how many cookies there " "are is updated." msgstr "" #. (itstool) path: note/p #: C/03_getting_the_signal.js.page:40 msgid "" "The cookies in this example are not the same as the cookies that you get " "from websites, which store your login information and may keep track of " "which sites you've visited. They're just imaginary treats. You may bake some " "real ones if you like." msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:41 msgid "" "Here is the basic, boilerplate code that goes at the start of the " "application, before we start creating the window and widgets. Besides the " "application having a unique name, the biggest change from the usual " "boilerplate is that we create a global variable right near the beginning, to " "hold the number of cookies." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:42 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "const WelcomeToTheGrid = new Lang.Class({\n" #| " Name: 'Welcome to the Grid',\n" #| "\n" #| " // Create the application itself\n" #| " _init: function() {\n" #| " this.application = new Gtk.Application();\n" #| "\n" #| " // Connect 'activate' and 'startup' signals to the callback functions\n" #| " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" #| " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" #| " },\n" #| "\n" #| " // Callback function for 'activate' signal presents windows when active\n" #| " _onActivate: function() {\n" #| " this._window.present();\n" #| " },\n" #| "\n" #| " // Callback function for 'startup' signal builds the UI\n" #| " _onStartup: function() {\n" #| " this._buildUI ();\n" #| " },\n" msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "// We start out with 0 cookies\n" "var cookies = 0;\n" "\n" "class GettingTheSignal {\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI ();\n" " }\n" msgstr "" "\n" "const WelcomeToTheGrid = new Lang.Class({\n" " Name: 'Bienvenue devant la Grid',\n" "\n" " // Création de l'application\n" " _init: function() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connection des signaux 'activate' et 'startup' aux fonctions de rappel\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'activate' présente la fenêtre quand elle est activée\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'startup' construise l'interface graphique\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:71 msgid "" "Take a look at the part that uses our application's connect method and bind, " "to connect its activate and startup signals to the functions that present " "the window and build the UI. We're going to do the same thing with our " "Button when we get to it, except that we're going to connect its \"clicked\" " "signal instead." msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:75 #, fuzzy #| msgid "Creating the buttons" msgid "Click the button" msgstr "Création des boutons" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:77 msgid "" "As usual, we'll put all the code to create our Button and other widgets " "inside the _buildUI function, which is called when the application starts up." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:78 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI() {\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:83 msgid "First, we create the window itself:" msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:84 #, no-wrap msgid "" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 200,\n" " default_width: 400,\n" " title: \"Click the button to get a cookie!\"});\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:93 msgid "" "Note that we've set its default_height and default_width properties. These " "let us control how tall and wide the ApplicationWindow will be, in pixels." msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:94 msgid "" "Next, we'll create the Label that shows us the number of cookies. We can use " "the cookies variable as part of the Label's label property." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:95 #, no-wrap msgid "" "\n" " // Create the label\n" " this._cookieLabel = new Gtk.Label ({\n" " label: \"Number of cookies: \" + cookies });\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:101 msgid "" "Now we'll create the Button. We set its label property to show the text that " "we want on the Button, and we connect its \"clicked\" signal to a function " "called _getACookie, which we'll write after we're done building our " "application's UI." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:102 #, no-wrap msgid "" "\n" " // Create the cookie button\n" " this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n" "\n" " // Connect the cookie button to the function that handles clicking it\n" " this._cookieButton.connect ('clicked', this._getACookie.bind(this));\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:109 msgid "" "Finally, we create a Grid, attach the Label and Button to it, add it to the " "window and tell the window to show itself and its contents. That's all we " "need inside the _buildUI function, so we close it with a bracket, as well as " "a comma that tells GNOME to go on to the next function. Note that even " "though we wrote the code for the Label first, we can still attach it to the " "Grid in a way that will put it on the bottom." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:110 #, no-wrap msgid "" "\n" " // Create a grid to arrange everything inside\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " row_spacing: 20 });\n" "\n" " // Put everything inside the grid\n" " this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n" " this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" "\n" " }\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:129 msgid "" "Now, we write the _getACookie function. Whenever our Button sends out its " "\"clicked\" signal, the code in this function will run. In this case, all it " "does is increase the number of cookies by 1, and update the Label to show " "the new number of cookies. We do this using the Label's set_label method." msgstr "" #. (itstool) path: note/p #: C/03_getting_the_signal.js.page:130 msgid "" "Many widgets have the same properties and methods. Both Labels and Buttons, " "for instance, have a label property that says what text is inside them, and " "get_label and set_label methods that let you check what that text is and " "change it, respectively. So if you learn how one widget works, you'll also " "know how others like it work." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:131 #, no-wrap msgid "" "\n" " _getACookie: function() {\n" "\n" " // Increase the number of cookies by 1 and update the label\n" " cookies++;\n" " this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n" "\n" " }\n" "\n" "};\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:143 msgid "" "Finally, we run the application, using the same kind of code as in our last " "tutorial." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:144 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new GettingTheSignal ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:152 msgid "Flip the switch" msgstr "Commuter l'interrupteur" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:153 msgid "" "Buttons aren't the only input widgets in our GTK+ toolbox. We can also use " "switches, like the one in this example. Switches don't have a label " "property, so we have to create a separate Label that says what it does to go " "next to it." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/03_getting_the_signal.js.page:155 C/03_getting_the_signal.js.page:355 #, fuzzy #| msgid "@@image: 'media/scale2.png'; md5=ae2ba0a6675f3d9cdcd961cdf32f1a5c" msgctxt "_" msgid "" "external ref='media/03_jssignal_02.png' " "md5='ba941390fbafc4a0f653c8f70bca92c0'" msgstr "@@image: 'media/scale2.png'; md5=ae2ba0a6675f3d9cdcd961cdf32f1a5c" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:157 msgid "" "A Switch has two positions, Off and On. When a Switch is turned on, its text " "and background color change, so you can tell which position it's in." msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:159 msgid "" "You may have seen Switches like these in GNOME's accessibility menu, which " "let you turn features like large text and the on-screen keyboard on and off. " "In this case, the Switch controls our imaginary cookie dispenser. If the " "Switch is turned on, you can get cookies by clicking the \"Get a cookie\" " "Button. If it's turned off, clicking the Button won't do anything." msgstr "" #. (itstool) path: note/p #: C/03_getting_the_signal.js.page:160 msgid "" "You can get to the accessibility menu by clicking on the outline of a human, " "near your name in the upper-right corner of the screen." msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:161 msgid "Here's how we create the Switch:" msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:162 #, no-wrap msgid "" "\n" " // Create the switch that controls whether or not you can win\n" " this._cookieSwitch = new Gtk.Switch ();\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:167 msgid "" "We don't actually need to connect the Switch to anything. All we need to do " "is write an if statement in our _getACookie function, to check to see if the " "Switch is turned on. If we wanted to make something happen as soon as you " "flip the Switch, though, we would connect its notify::active signal, like so:" msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:168 #, no-wrap msgid "" "\n" " // Connect the switch to the function that handles it\n" " this._cookieSwitch.connect ('notify::active', this._cookieDispenser.bind(this));\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:173 msgid "" "A Switch is set to the off position by default. If we wanted the Switch to " "start out turned on, we would set the value of its active property to true " "when we create it." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:174 #, no-wrap msgid "" "\n" " this._cookieSwitch = new Gtk.Switch ({ active: true });\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:178 msgid "" "Let's just create it normally, though, and then create the Label that goes " "with it. We want the Switch and the Label to be kept right next to each " "other, so we'll create a Grid just for them, then put that Grid in our " "larger Grid that holds all the widgets inside it. Here's what the code looks " "like to create all that:" msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:179 #, no-wrap msgid "" "\n" " // Create the switch that controls whether or not you can win\n" " this._cookieSwitch = new Gtk.Switch ();\n" "\n" " // Create the label to go with the switch\n" " this._switchLabel = new Gtk.Label ({\n" " label: \"Cookie dispenser\" });\n" "\n" " // Create a grid for the switch and its label\n" " this._switchGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Put the switch and its label inside that grid\n" " this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n" " this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:197 msgid "And now we arrange everything in the larger Grid like so." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:198 #, no-wrap msgid "" "\n" " // Put everything inside the grid\n" " this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n" " this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n" " this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:205 msgid "" "Now we change the _getACookie function so that it checks to see if the " "cookie dispenser is turned on. We do that by using the Switch's get_active " "method. It returns true if the Switch is turned on, and false if the Switch " "is turned off." msgstr "" #. (itstool) path: note/p #: C/03_getting_the_signal.js.page:206 msgid "" "When a method is used in an if statement like this, the code inside the if " "statement is executed if the method returns true." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:207 #, no-wrap msgid "" "\n" " _getACookie() {\n" "\n" " // Is the cookie dispenser turned on?\n" " if (this._cookieSwitch.get_active()) {\n" "\n" " // Increase the number of cookies by 1 and update the label\n" " cookies++;\n" " this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n" "\n" " }\n" "\n" " }\n" msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:225 msgid "Tuning the radio" msgstr "Choisir le bouton de radio" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:227 msgid "" "Another type of input widget we can use is called the RadioButton. You " "create them in groups, and then only one RadioButton in a group can be " "selected at a time. They're called RadioButtons because they work like the " "channel preset button in old-style car radios. The radio could only be tuned " "to one station at a time, so whenever you pressed one button in, another " "would pop back out." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/03_getting_the_signal.js.page:229 C/03_getting_the_signal.js.page:361 #, fuzzy #| msgid "@@image: 'media/scale2.png'; md5=ae2ba0a6675f3d9cdcd961cdf32f1a5c" msgctxt "_" msgid "" "external ref='media/03_jssignal_03.png' " "md5='49ecf251b0bf57543c8d79a77b6f306d'" msgstr "@@image: 'media/scale2.png'; md5=ae2ba0a6675f3d9cdcd961cdf32f1a5c" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:231 msgid "" "First off, let's change our ApplicationWindow's name and increase its " "border_width property, so that our widgets aren't packed in too tightly. The " "border_width is the number of pixels between any widget and the edge of the " "window." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:232 #, no-wrap msgid "" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 200,\n" " default_width: 400,\n" " border_width: 20,\n" " title: \"Choose the one that says 'cookie'!\"});\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:243 msgid "" "After that, we create the RadioButtons. Remember how they're created in " "groups? The way we do that, is we set each new RadioButton's group property " "to the name of another RadioButton." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:244 #, no-wrap msgid "" "\n" " // Create the radio buttons\n" " this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n" " this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n" " group: this._cookieRadio });\n" " this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n" " group: this._cookieRadio });\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:253 msgid "" "Next, we create a Grid for the RadioButtons. Remember, we don't have to " "arrange things in Grids in the same order that we create them in." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:254 #, no-wrap msgid "" "\n" " // Arrange the radio buttons in their own grid\n" " this._radioGrid = new Gtk.Grid ();\n" " this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n" " this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n" " this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:262 msgid "" "Normally, the RadioButton that's selected by default is the one that's the " "name of the group. We want the first \"Not cookie\" button to be selected by " "default, though, so we use its set_active method." msgstr "" #. (itstool) path: note/p #: C/03_getting_the_signal.js.page:263 msgid "We could also set its active property to true when we create it." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:264 #, no-wrap msgid "" "\n" " // Set the button that will be at the top to be active by default\n" " this._notCookieOne.set_active (true);\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:269 msgid "Now we arrange everything in our main Grid like usual ..." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:270 #, no-wrap msgid "" "\n" " // Put everything inside the grid\n" " this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n" " this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n" " this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:277 msgid "" "And then we change our _getACookie function to test to see if the cookie " "button is the one that's selected." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:278 #, no-wrap msgid "" "\n" " _getACookie() {\n" "\n" " // Did you select \"cookie\" instead of \"not cookie\"?\n" " if (this._cookieRadio.get_active()) {\n" "\n" " // Increase the number of cookies by 1 and update the label\n" " cookies++;\n" " this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n" "\n" " }\n" "\n" " }\n" msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:296 msgid "Can you spell \"cookie\"?" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:298 msgid "" "The last input widget we're going to cover is the Entry widget, which is " "used for single-line text entry." msgstr "" #. (itstool) path: note/p #: C/03_getting_the_signal.js.page:299 msgid "" "If you need to be able to enter in a whole paragraph or more, like if you " "are building a text editor, you'll want to look at the much more " "customizable TextView widget." msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/03_getting_the_signal.js.page:300 C/03_getting_the_signal.js.page:367 #, fuzzy #| msgid "@@image: 'media/scale.png'; md5=462c52a53b773cb9e8c62c646bf88452" msgctxt "_" msgid "" "external ref='media/03_jssignal_04.png' " "md5='dfc5221ca15ca9fba7d3c76a73804e2d'" msgstr "@@image: 'media/scale.png'; md5=462c52a53b773cb9e8c62c646bf88452" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:302 msgid "After we change the window's name, we create the Entry widget." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:303 #, no-wrap msgid "" "\n" " // Create the text entry field\n" " this._spellCookie = new Gtk.Entry ();\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:308 msgid "Next, we arrange everything in the Grid ..." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:309 #, no-wrap msgid "" "\n" " // Put everything inside the grid\n" " this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n" " this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n" " this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:316 msgid "" "And now we modify _getACookie's if statement again, using the Entry's " "get_text method to retrieve the text that you entered into it and see if you " "spelled \"cookie\" right. We don't care whether you capitalize \"cookie\" or " "not, so we use JavaScript's built-in toLowerCase method to change the " "Entry's text to all lower case inside the if statement." msgstr "" #. (itstool) path: note/p #: C/03_getting_the_signal.js.page:317 msgid "" "An Entry widget doesn't have a label property, which is a set text string " "that the user can't change. (You can't normally change the label on a " "Button, for instance.) Instead, it has a text property, which changes to " "match what the user types in." msgstr "" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:318 #, no-wrap msgid "" "\n" " _getACookie() {\n" "\n" " // Did you spell \"cookie\" correctly?\n" " if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n" "\n" " // Increase the number of cookies by 1 and update the label\n" " cookies++;\n" " this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n" "\n" " }\n" "\n" " }\n" msgstr "" #. (itstool) path: section/p #: C/03_getting_the_signal.js.page:337 msgid "" "Keep reading, if you'd like to see the complete code for each version of our " "cookie maker application." msgstr "" #. (itstool) path: note/p #: C/03_getting_the_signal.js.page:338 msgid "" "The main JavaScript tutorials page has more detailed code samples for each input widget, including " "several not covered here." msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:343 msgid "Complete code samples" msgstr "Exemples complets de code" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:348 msgid "Code sample with Button" msgstr "Exemple de code utilisant un Button" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:350 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "// We start out with 0 cookies\n" "var cookies = 0;\n" "\n" "class GettingTheSignal {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 200,\n" " default_width: 400,\n" " title: \"Click the button to get a cookie!\"});\n" "\n" " // Create the label\n" " this._cookieLabel = new Gtk.Label ({\n" " label: \"Number of cookies: \" + cookies });\n" "\n" " // Create the cookie button\n" " this._cookieButton = new Gtk.Button ({ label: \"Get a cookie\" });\n" "\n" " // Connect the cookie button to the function that handles clicking it\n" " this._cookieButton.connect ('clicked', this._getACookie.bind(this));\n" "\n" " // Create a grid to arrange everything inside\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " row_spacing: 20 });\n" "\n" " // Put everything inside the grid\n" " this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n" " this._grid.attach (this._cookieLabel, 0, 1, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" "\n" " }\n" "\n" " _getACookie() {\n" "\n" " // Increase the number of cookies by 1 and update the label\n" " cookies++;\n" " this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n" "\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new GettingTheSignal ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:354 msgid "Code sample with Switch" msgstr "Exemples de code avec un Switch" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:356 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "// We start out with 0 cookies\n" "var cookies = 0;\n" "\n" "class GettingTheSignal {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 200,\n" " default_width: 400,\n" " title: \"Click the button to get a cookie!\"});\n" "\n" " // Create the label\n" " this._cookieLabel = new Gtk.Label ({\n" " label: \"Number of cookies: \" + cookies });\n" "\n" " // Create the cookie button\n" " this._cookieButton = new Gtk.Button ({\n" " label: \"Get a cookie\" });\n" "\n" " // Connect the cookie button to the function that handles clicking it\n" " this._cookieButton.connect ('clicked', this._getACookie.bind(this));\n" "\n" " // Create the switch that controls whether or not you can win\n" " this._cookieSwitch = new Gtk.Switch ();\n" "\n" " // Create the label to go with the switch\n" " this._switchLabel = new Gtk.Label ({\n" " label: \"Cookie dispenser\" });\n" "\n" " // Create a grid for the switch and its label\n" " this._switchGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Put the switch and its label inside that grid\n" " this._switchGrid.attach (this._switchLabel, 0, 0, 1, 1);\n" " this._switchGrid.attach (this._cookieSwitch, 1, 0, 1, 1);\n" "\n" " // Create a grid to arrange everything else inside\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " row_spacing: 20 });\n" "\n" " // Put everything inside the grid\n" " this._grid.attach (this._cookieButton, 0, 0, 1, 1);\n" " this._grid.attach (this._switchGrid, 0, 1, 1, 1);\n" " this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" "\n" " }\n" "\n" " _getACookie() {\n" "\n" " // Is the cookie dispenser turned on?\n" " if (this._cookieSwitch.get_active()) {\n" "\n" " // Increase the number of cookies by 1 and update the label\n" " cookies++;\n" " this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n" "\n" " }\n" "\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new GettingTheSignal ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:360 msgid "Code sample with RadioButton" msgstr "Exemples de code avec un RadioButton" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:362 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "// We start out with 0 cookies\n" "var cookies = 0;\n" "\n" "class GettingTheSignal {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 200,\n" " default_width: 400,\n" " border_width: 20,\n" " title: \"Choose the one that says 'cookie'!\"});\n" "\n" " // Create the radio buttons\n" " this._cookieRadio = new Gtk.RadioButton ({ label: \"Cookie\" });\n" " this._notCookieOne = new Gtk.RadioButton ({ label: \"Not cookie\",\n" " group: this._cookieRadio });\n" " this._notCookieTwo = new Gtk.RadioButton ({ label: \"Not cookie\",\n" " group: this._cookieRadio });\n" "\n" " // Arrange the radio buttons in their own grid\n" " this._radioGrid = new Gtk.Grid ();\n" " this._radioGrid.attach (this._notCookieOne, 0, 0, 1, 1);\n" " this._radioGrid.attach (this._cookieRadio, 0, 1, 1, 1);\n" " this._radioGrid.attach (this._notCookieTwo, 0, 2, 1, 1);\n" "\n" " // Set the button that will be at the top to be active by default\n" " this._notCookieOne.set_active (true);\n" "\n" " // Create the cookie button\n" " this._cookieButton = new Gtk.Button ({\n" " label: \"Get a cookie\" });\n" "\n" " // Connect the cookie button to the function that handles clicking it\n" " this._cookieButton.connect ('clicked', this._getACookie.bind(this));\n" "\n" " // Create the label\n" " this._cookieLabel = new Gtk.Label ({\n" " label: \"Number of cookies: \" + cookies });\n" "\n" " // Create a grid to arrange everything inside\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " row_spacing: 20 });\n" "\n" " // Put everything inside the grid\n" " this._grid.attach (this._radioGrid, 0, 0, 1, 1);\n" " this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n" " this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" "\n" " }\n" "\n" " _getACookie() {\n" "\n" " // Did you select \"cookie\" instead of \"not cookie\"?\n" " if (this._cookieRadio.get_active()) {\n" "\n" " // Increase the number of cookies by 1 and update the label\n" " cookies++;\n" " this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n" "\n" " }\n" "\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new GettingTheSignal ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/title #: C/03_getting_the_signal.js.page:366 msgid "Code sample with Entry" msgstr "Exemples de code avec une Entry" #. (itstool) path: section/code #: C/03_getting_the_signal.js.page:368 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "// We start out with 0 cookies\n" "var cookies = 0;\n" "\n" "class GettingTheSignal {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 200,\n" " default_width: 400,\n" " border_width: 20,\n" " title: \"Spell 'cookie' to get a cookie!\"});\n" "\n" " // Create the text entry field\n" " this._spellCookie = new Gtk.Entry ();\n" "\n" " // Create the cookie button\n" " this._cookieButton = new Gtk.Button ({\n" " label: \"Get a cookie\" });\n" "\n" " // Connect the cookie button to the function that handles clicking it\n" " this._cookieButton.connect ('clicked', this._getACookie.bind(this));\n" "\n" " // Create the label\n" " this._cookieLabel = new Gtk.Label ({\n" " label: \"Number of cookies: \" + cookies });\n" "\n" " // Create a grid to arrange everything inside\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " row_spacing: 20 });\n" "\n" " // Put everything inside the grid\n" " this._grid.attach (this._spellCookie, 0, 0, 1, 1);\n" " this._grid.attach (this._cookieButton, 0, 1, 1, 1);\n" " this._grid.attach (this._cookieLabel, 0, 2, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" "\n" " }\n" "\n" " _getACookie() {\n" "\n" " // Did you spell \"cookie\" correctly?\n" " if ((this._spellCookie.get_text()).toLowerCase() == \"cookie\") {\n" "\n" " // Increase the number of cookies by 1 and update the label\n" " cookies++;\n" " this._cookieLabel.set_label (\"Number of cookies: \" + cookies);\n" "\n" " }\n" "\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new GettingTheSignal ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: info/title #: C/aboutdialog.c.page:8 msgctxt "text" msgid "AboutDialog (C)" msgstr "AboutDialog (C)" #. (itstool) path: credit/name #: C/aboutdialog.c.page:15 C/button.c.page:15 C/combobox.c.page:13 #: C/dialog.c.page:15 C/entry.c.page:13 C/grid.c.page:13 C/image.c.page:13 #: C/label.c.page:14 C/linkbutton.c.page:13 C/menubar.c.page:15 #: C/messagedialog.c.page:14 C/progressbar.c.page:14 C/radiobutton.c.page:15 #: C/scale.c.page:15 C/scrolledwindow.c.page:15 C/spinbutton.c.page:16 #: C/spinner.c.page:14 C/statusbar.c.page:17 C/switch.c.page:13 #: C/textview.c.page:13 C/togglebutton.c.page:17 C/toolbar.c.page:15 msgid "Monica Kochofar" msgstr "Monica Kochofar" #. (itstool) path: info/desc #: C/aboutdialog.c.page:20 C/aboutdialog.js.page:17 C/aboutdialog.vala.page:26 msgid "Display information about an application" msgstr "Afficher des informations à propos d'une application" #. (itstool) path: page/title #: C/aboutdialog.c.page:23 C/aboutdialog.js.page:20 C/aboutdialog.py.page:22 #: C/aboutdialog.vala.page:29 msgid "AboutDialog" msgstr "AboutDialog" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/aboutdialog.c.page:25 C/aboutdialog.js.page:21 C/aboutdialog.py.page:23 #: C/aboutdialog.vala.page:30 #, fuzzy #| msgid "" #| "@@image: 'media/aboutdialog_GMenu.png'; " #| "md5=a36117a559fa98e25e2f6b3db593639f" msgctxt "_" msgid "" "external ref='media/aboutdialog_GMenu.png' " "md5='a36117a559fa98e25e2f6b3db593639f'" msgstr "" "@@image: 'media/aboutdialog_GMenu.png'; md5=a36117a559fa98e25e2f6b3db593639f" #. (itstool) path: page/p #: C/aboutdialog.c.page:26 C/aboutdialog.vala.page:31 msgid "An AboutDialog example using Gtk.ApplicationWindow and Menu" msgstr "Un exemple AboutDialog utilisant Gtk.ApplicationWindow et Menu" #. (itstool) path: note/p #: C/aboutdialog.c.page:27 C/aboutdialog.vala.page:32 C/gmenu.c.page:24 msgid "" "You need to be running Gtk3.4 or later for this to work" msgstr "" " GTK 3.4 ou supérieur est requis pour que cela " "fonctionne" #. (itstool) path: page/code #: C/aboutdialog.c.page:29 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "/* Callback function in which reacts to the \"response\" signal from the user in\n" " * the message dialog window.\n" " * This function is used to destroy the dialog window.\n" " */\n" "static void\n" "on_close (GtkDialog *dialog,\n" " gint response_id,\n" " gpointer user_data)\n" "{\n" " /* This will cause the dialog to be destroyed */\n" " gtk_widget_destroy (GTK_WIDGET (dialog));\n" "}\n" "\n" "/* Callback function for the response signal \"activate\" related to the SimpleAction\n" " * \"about_action\".\n" " * This function is used to cause the about dialog window to popup.\n" " */\n" "static void\n" "about_cb (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GtkWidget *about_dialog;\n" "\n" " about_dialog = gtk_about_dialog_new ();\n" "\n" " /* Lists of authors/ documenters to be used later, they must be initialized\n" " * in a null terminated array of strings.\n" " */\n" " const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n" " const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n" "\n" " /* We fill in the information for the about dialog */\n" " gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n" " gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\");\n" " gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n" " gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n" " gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n" " gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n" "\n" " /* We do not wish to show the title, which in this case would be\n" " * \"AboutDialog Example\". We have to reset the title of the messagedialog\n" " * window after setting the program name.\n" " */\n" " gtk_window_set_title (GTK_WINDOW (about_dialog), \"\");\n" "\n" " /* To close the aboutdialog when \"close\" is clicked we connect the response\n" " * signal to on_close\n" " */\n" " g_signal_connect (GTK_DIALOG (about_dialog), \"response\",\n" " G_CALLBACK (on_close), NULL);\n" "\n" " /* Show the about dialog */\n" " gtk_widget_show (about_dialog);\n" "}\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" "\n" " GSimpleAction *about_action;\n" "\n" " /* Create a window with a title and a default size */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"AboutDialog Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n" "\n" " /* Create a new simple action, giving it a NULL parameter type. It will\n" " * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\"\n" " * or \"cancel\" button)\n" " */\n" " about_action = g_simple_action_new (\"about\", NULL);\n" "\n" " /* Connect the \"activate\" signal to the appropriate callback function.\n" " * It will indicate that the action was just activated.\n" " */\n" " g_signal_connect (about_action, \"activate\", G_CALLBACK (about_cb),\n" " GTK_WINDOW (window));\n" "\n" " /* Adds the about_action to the overall action map. An Action map is an\n" " * interface that contains a number of named GAction instances\n" " * (such as about_action)\n" " */\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "/* Callback function for the response signal \"activate\" from the \"quit\" action\n" " * found in the function directly below.\n" " */\n" "static void\n" "quit_cb (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GApplication *application = user_data;\n" "\n" " g_application_quit (application);\n" "}\n" "\n" "/* Startup function for the menu we are creating in this sample */\n" "static void\n" "startup (GApplication *app,\n" " gpointer user_data)\n" "{\n" " GMenu *menu;\n" " GSimpleAction *quit_action;\n" "\n" " /* Initialize the GMenu, and add a menu item with label \"About\" and action\n" " * \"win.about\". Also add another menu item with label \"Quit\" and action\n" " * \"app.quit\"\n" " */\n" " menu = g_menu_new ();\n" " g_menu_append (menu, \"About\", \"win.about\");\n" " g_menu_append (menu, \"Quit\", \"app.quit\");\n" "\n" " /* Create a new simple action for the application. (In this case it is the\n" " * \"quit\" action.\n" " */\n" " quit_action = g_simple_action_new (\"quit\", NULL);\n" "\n" " /* Ensure that the menu we have just created is set for the overall application */\n" " gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n" "\n" " g_signal_connect (quit_action,\n" " \"activate\",\n" " G_CALLBACK (quit_cb),\n" " app);\n" "\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n" "}\n" "\n" "/* Startup function for the application */\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: page/p #. (itstool) path: section/p #: C/aboutdialog.c.page:31 C/aboutdialog.js.page:25 C/aboutdialog.py.page:42 #: C/aboutdialog.vala.page:35 C/button.c.page:30 C/button.js.page:27 #: C/button.py.page:53 C/buttonbox.js.page:36 C/buttonbox.py.page:47 #: C/checkbutton.c.page:26 C/checkbutton.py.page:43 C/checkbutton.vala.page:26 #: C/colorbutton.js.page:34 C/colorbutton.py.page:41 C/colorbutton.vala.page:28 #: C/comboboxtext.js.page:177 C/combobox.c.page:31 C/combobox.js.page:234 #: C/combobox.py.page:43 C/combobox.vala.page:26 #: C/combobox_multicolumn.py.page:42 C/combobox_multicolumn.vala.page:36 #: C/dialog.c.page:30 C/dialog.js.page:26 C/dialog.py.page:47 #: C/dialog.vala.page:28 C/entry.c.page:28 C/entry.js.page:26 #: C/entry.py.page:62 C/entry.vala.page:26 C/filechooserdialog.py.page:71 #: C/filechooserdialog.vala.page:36 C/fontchooserwidget.js.page:35 #: C/fontchooserwidget.py.page:45 C/fontchooserwidget.vala.page:35 #: C/gmenu.c.page:28 C/gmenu.js.page:26 C/gmenu.py.page:78 C/gmenu.vala.page:35 #: C/grid.c.page:28 C/grid.js.page:30 C/grid.py.page:55 C/grid.vala.page:28 #: C/GtkApplicationWindow.c.page:26 C/GtkApplicationWindow.js.page:27 #: C/GtkApplicationWindow.py.page:51 C/GtkApplicationWindow.vala.page:27 #: C/image.c.page:29 C/image.js.page:28 C/image.py.page:128 #: C/image.vala.page:28 C/label.c.page:33 C/label.js.page:26 #: C/label.py.page:103 C/label.vala.page:27 C/linkbutton.c.page:28 #: C/linkbutton.js.page:26 C/linkbutton.py.page:45 C/linkbutton.vala.page:26 #: C/menubar.c.page:33 C/menubar.py.page:184 C/menubar.vala.page:188 #: C/menubutton.c.page:36 C/menubutton.js.page:29 C/menubutton.py.page:54 #: C/menubutton.vala.page:29 C/messagedialog.c.page:32 #: C/messagedialog.js.page:190 C/messagedialog.py.page:55 #: C/messagedialog.vala.page:27 C/paned.c.page:34 C/paned.js.page:34 #: C/paned.py.page:40 C/paned.vala.page:34 C/progressbar.c.page:29 #: C/progressbar.js.page:35 C/progressbar.py.page:55 C/progressbar.vala.page:26 #: C/radiobutton.c.page:30 C/radiobutton.py.page:47 C/radiobutton.vala.page:29 #: C/scale.c.page:30 C/scale.py.page:55 C/scale.vala.page:28 #: C/scrolledwindow.c.page:30 C/scrolledwindow.js.page:34 #: C/scrolledwindow.py.page:43 C/scrolledwindow.vala.page:27 #: C/separator.c.page:36 C/separator.py.page:37 C/separator.vala.page:38 #: C/spinbutton.c.page:31 C/spinbutton.py.page:47 C/spinbutton.vala.page:28 #: C/spinner.c.page:29 C/spinner.js.page:26 C/spinner.py.page:40 #: C/spinner.vala.page:26 C/statusbar.c.page:32 C/statusbar.py.page:51 #: C/statusbar.vala.page:29 C/switch.c.page:29 C/switch.py.page:43 #: C/switch.vala.page:32 C/textview.c.page:32 C/textview.py.page:94 #: C/textview.vala.page:31 C/togglebutton.c.page:32 C/togglebutton.py.page:42 #: C/togglebutton.vala.page:29 C/toolbar.c.page:31 C/toolbar.js.page:27 #: C/toolbar.py.page:53 C/toolbar.vala.page:30 C/toolbar_builder.py.page:192 #: C/toolbar_builder.vala.page:147 C/tooltip.c.page:36 C/tooltip.js.page:35 #: C/tooltip.py.page:57 C/tooltip.vala.page:36 #: C/treeview_advanced_liststore.py.page:42 #: C/treeview_cellrenderertoggle.py.page:42 #: C/treeview_simple_liststore.js.page:273 #: C/treeview_simple_liststore.py.page:43 #: C/treeview_simple_liststore.vala.page:28 C/treeview_treestore.py.page:42 #: C/widget_drawing.py.page:36 C/window.c.page:30 C/window.py.page:62 #: C/window.vala.page:34 msgid "In this sample we used the following:" msgstr "Dans cet exemple, les éléments suivants sont utilisés :" #. (itstool) path: item/p #: C/aboutdialog.c.page:35 C/button.c.page:34 C/combobox.c.page:35 #: C/dialog.c.page:34 C/entry.c.page:32 C/grid.c.page:32 #: C/GtkApplicationWindow.c.page:30 C/image.c.page:33 C/label.c.page:37 #: C/linkbutton.c.page:32 C/messagedialog.c.page:36 C/progressbar.c.page:33 #: C/radiobutton.c.page:34 C/scale.c.page:34 C/spinbutton.c.page:35 #: C/spinner.c.page:33 C/statusbar.c.page:36 C/switch.c.page:33 #: C/textview.c.page:36 C/togglebutton.c.page:36 C/window.c.page:34 msgid "" "GtkApplication" msgstr "" "GtkApplication" #. (itstool) path: item/p #: C/aboutdialog.c.page:36 C/button.c.page:35 C/combobox.c.page:36 #: C/dialog.c.page:35 C/entry.c.page:33 C/grid.c.page:33 C/linkbutton.c.page:33 #: C/messagedialog.c.page:38 C/progressbar.c.page:34 C/radiobutton.c.page:35 #: C/scale.c.page:35 C/spinbutton.c.page:36 C/spinner.c.page:34 #: C/statusbar.c.page:37 C/switch.c.page:34 C/textview.c.page:37 #: C/togglebutton.c.page:37 C/window.c.page:35 msgid "" "GtkWindow" msgstr "" "GtkWindow" #. (itstool) path: item/p #: C/aboutdialog.c.page:37 msgid "" "GtkAboutDialog" msgstr "" "GtkAboutDialog" #. (itstool) path: item/p #: C/aboutdialog.c.page:38 C/aboutdialog.py.page:48 C/messagedialog.c.page:42 #: C/messagedialog.py.page:64 msgid "" "GMenu" msgstr "" "GMenu" #. (itstool) path: item/p #: C/aboutdialog.c.page:39 C/messagedialog.c.page:41 msgid "" "GActionMap" msgstr "" "GActionMap" #. (itstool) path: info/title #: C/aboutdialog.js.page:7 msgctxt "text" msgid "AboutDialog (JavaScript)" msgstr "AboutDialog (JavaScript)" #. (itstool) path: page/p #: C/aboutdialog.js.page:22 msgid "" "A modal dialog window which shows information about an application and its " "creators. This one is triggered by clicking \"About\" in the application's " "menu, which is normally a good place to put it." msgstr "" "Une boîte de dialogue modale qui affiche des informations sur une " "application ainsi que sur ses auteurs. Celle-ci est activée en cliquant sur " "« À propos » dans le menu de l'application, ce qui est d'habitude " "l'emplacement approprié." #. (itstool) path: page/code #: C/aboutdialog.js.page:24 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class AboutDialogExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsaboutdialog',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal creates the menu and builds the UI\n" " _onStartup() {\n" " this._initMenus();\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"AboutDialog Example\",\n" " default_height: 250,\n" " default_width: 350 });\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " // Create the application menu\n" " _initMenus() {\n" " let menu = new Gio.Menu();\n" " menu.append(\"About\", 'app.about');\n" " menu.append(\"Quit\",'app.quit');\n" " this.application.set_app_menu(menu);\n" "\n" " // Create the \"About\" menu option and have it call the _showAbout() function\n" " let aboutAction = new Gio.SimpleAction({ name: 'about' });\n" " aboutAction.connect('activate', () => { this._showAbout(); });\n" " this.application.add_action(aboutAction);\n" "\n" " // Create the \"Quit\" menu option and have it close the window\n" " let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n" " quitAction.connect('activate', () => { this._window.destroy(); });\n" " this.application.add_action(quitAction);\n" " }\n" "\n" " _showAbout() {\n" "\n" " // String arrays of the names of the people involved in the project\n" " var authors = [\"GNOME Documentation Team\"];\n" " var documenters = [\"GNOME Documentation Team\"];\n" "\n" " // Create the About dialog\n" " let aboutDialog = new Gtk.AboutDialog({ title: \"AboutDialog Example\",\n" " program_name: \"GtkApplication Example\",\n" " copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\",\n" " authors: authors,\n" " documenters: documenters,\n" " website: \"http://developer.gnome.org\",\n" " website_label: \"GNOME Developer Website\" });\n" "\n" " // Attach the About dialog to the window\n" " aboutDialog.modal = true;\n" " aboutDialog.transient_for = this._window;\n" "\n" " // Show the About dialog\n" " aboutDialog.show();\n" "\n" " // Connect the Close button to the destroy signal for the dialog\n" " aboutDialog.connect('response', function() {\n" " aboutDialog.destroy();\n" " });\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new AboutDialogExample();\n" "app.application.run(ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/aboutdialog.js.page:29 C/gmenu.c.page:32 C/gmenu.js.page:30 #: C/gmenu.py.page:80 C/messagedialog.js.page:194 C/switch.js.page:266 msgid "" "GMenu" msgstr "" "GMenu" #. (itstool) path: item/p #: C/aboutdialog.js.page:30 C/filechooserdialog.py.page:80 C/gmenu.c.page:33 #: C/gmenu.js.page:31 C/gmenu.py.page:81 C/menubar.c.page:39 #: C/messagedialog.js.page:195 C/messagedialog.py.page:62 C/switch.js.page:267 msgid "" "GSimpleAction" msgstr "" "GSimpleAction" #. (itstool) path: item/p #: C/aboutdialog.js.page:31 msgid "" "Gtk.AboutDialog" msgstr "" "Gtk.AboutDialog" #. (itstool) path: item/p #: C/aboutdialog.js.page:32 C/button.js.page:31 C/checkbutton.js.page:137 #: C/comboboxtext.js.page:181 C/combobox.js.page:238 C/dialog.js.page:30 #: C/entry.js.page:30 C/grid.js.page:34 C/GtkApplicationWindow.js.page:31 #: C/image.js.page:32 C/label.js.page:30 C/linkbutton.js.page:30 #: C/messagedialog.js.page:196 C/progressbar.js.page:40 #: C/radiobutton.js.page:276 C/scale.js.page:211 C/spinbutton.js.page:202 #: C/spinner.js.page:31 C/statusbar.js.page:223 C/switch.js.page:268 #: C/textview.js.page:250 C/togglebutton.js.page:155 #: C/treeview_simple_liststore.js.page:277 C/window.js.page:39 msgid "" "Gtk.Application" msgstr "" "Gtk.Application" #. (itstool) path: item/p #: C/aboutdialog.js.page:33 C/button.js.page:32 C/checkbutton.js.page:138 #: C/comboboxtext.js.page:182 C/combobox.js.page:239 C/dialog.js.page:31 #: C/entry.js.page:31 C/grid.js.page:35 C/GtkApplicationWindow.js.page:32 #: C/image.js.page:33 C/label.js.page:31 C/linkbutton.js.page:31 #: C/messagedialog.js.page:197 C/progressbar.js.page:41 #: C/radiobutton.js.page:277 C/scale.js.page:212 C/spinbutton.js.page:203 #: C/spinner.js.page:32 C/statusbar.js.page:224 C/switch.js.page:269 #: C/textview.js.page:251 C/togglebutton.js.page:156 #: C/treeview_simple_liststore.js.page:278 msgid "" "Gtk.ApplicationWindow" msgstr "" "Gtk.ApplicationWindow" #. (itstool) path: info/title #: C/aboutdialog.py.page:8 msgctxt "text" msgid "AboutDialog (Python)" msgstr "AboutDialog (Python)" #. (itstool) path: credit/name #: C/aboutdialog.py.page:14 C/beginner.js.page:16 C/beginner.py.page:19 #: C/beginner.vala.page:19 C/button.py.page:15 C/buttonbox.py.page:15 #: C/checkbutton.py.page:14 C/colorbutton.py.page:14 C/combobox.py.page:15 #: C/combobox_multicolumn.py.page:14 C/dialog.py.page:15 C/entry.py.page:15 #: C/filechooserdialog.py.page:17 C/fontchooserwidget.py.page:15 #: C/gmenu.py.page:21 C/grid.py.page:21 C/GtkApplicationWindow.py.page:20 #: C/guitar-tuner.c.page:23 C/guitar-tuner.cpp.page:21 #: C/guitar-tuner.py.page:23 C/guitar-tuner.py.page:28 #: C/guitar-tuner.vala.page:26 C/image.py.page:15 C/image-viewer.c.page:23 #: C/image-viewer.cpp.page:21 C/image-viewer.js.page:23 #: C/image-viewer.py.page:23 C/image-viewer.vala.page:31 C/js.page:16 #: C/label.py.page:17 C/linkbutton.py.page:14 C/magic-mirror.vala.page:23 #: C/menubar.py.page:20 C/menubutton.py.page:20 C/message-board.c.page:20 #: C/messagedialog.py.page:14 C/model-view-controller.py.page:21 #: C/paned.py.page:14 C/photo-wall.c.page:22 C/progressbar.py.page:14 #: C/properties.py.page:21 C/py.page:15 C/radiobutton.py.page:15 #: C/record-collection.js.page:23 C/scale.py.page:15 #: C/scrolledwindow.py.page:14 C/separator.py.page:15 #: C/signals-callbacks.py.page:21 C/spinbutton.py.page:15 C/spinner.py.page:14 #: C/statusbar.py.page:15 C/strings.py.page:21 C/switch.py.page:14 #: C/textview.py.page:22 C/togglebutton.py.page:14 C/toolbar.py.page:15 #: C/toolbar_builder.py.page:22 C/tooltip.py.page:15 #: C/treeview_advanced_liststore.py.page:14 #: C/treeview_cellrenderertoggle.py.page:14 #: C/treeview_simple_liststore.py.page:15 C/treeview_treestore.py.page:15 #: C/tutorial.py.page:20 C/vala.page:15 C/weatherApp.js.page:17 #: C/widget_drawing.py.page:13 C/window.py.page:20 msgid "Marta Maria Casetti" msgstr "Marta Maria Casetti" #. (itstool) path: info/desc #: C/aboutdialog.py.page:19 msgid "A window that displays information about an application" msgstr "" "Une boîte de dialogue qui affiche des informations à propos d'une application" #. (itstool) path: page/p #: C/aboutdialog.py.page:24 msgid "" "An AboutDialog example using Gtk.ApplicationWindow and Menu (the \"about\" " "is displayed if \"About\" in the menu is selected)." msgstr "" "Un exemple AboutDialog utilisant Gtk.ApplicationWindow et Menu (le « about » " "s'affiche si « À propos » a été sélectionné dans le menu)." #. (itstool) path: section/title #: C/aboutdialog.py.page:29 C/button.py.page:31 C/buttonbox.js.page:30 #: C/buttonbox.py.page:31 C/checkbutton.py.page:29 C/colorbutton.js.page:28 #: C/colorbutton.py.page:29 C/combobox.py.page:30 #: C/combobox_multicolumn.py.page:29 C/combobox_multicolumn.vala.page:29 #: C/dialog.py.page:30 C/entry.py.page:35 C/filechooserdialog.py.page:53 #: C/fontchooserwidget.js.page:29 C/fontchooserwidget.py.page:31 #: C/fontchooserwidget.vala.page:29 C/gmenu.py.page:36 C/grid.py.page:37 #: C/GtkApplicationWindow.py.page:35 C/image.py.page:41 C/label.py.page:37 #: C/linkbutton.py.page:30 C/menubutton.c.page:30 C/menubutton.py.page:37 #: C/messagedialog.py.page:29 C/paned.c.page:28 C/paned.js.page:28 #: C/paned.py.page:29 C/paned.vala.page:28 C/progressbar.py.page:39 #: C/radiobutton.py.page:30 C/scale.py.page:30 C/scrolledwindow.js.page:28 #: C/scrolledwindow.py.page:29 C/separator.c.page:30 C/separator.py.page:31 #: C/separator.vala.page:32 C/spinbutton.py.page:30 C/spinner.py.page:29 #: C/statusbar.py.page:30 C/switch.py.page:31 C/textview.py.page:44 #: C/togglebutton.py.page:29 C/toolbar.py.page:31 C/toolbar_builder.py.page:164 #: C/tooltip.c.page:30 C/tooltip.js.page:29 C/tooltip.py.page:31 #: C/tooltip.vala.page:30 C/treeview_advanced_liststore.py.page:29 #: C/treeview_cellrenderertoggle.py.page:29 #: C/treeview_simple_liststore.py.page:30 C/treeview_treestore.py.page:30 #: C/widget_drawing.py.page:28 C/window.py.page:45 msgid "Code used to generate this example" msgstr "Code utilisé pour générer cet exemple" #. (itstool) path: section/code #: C/aboutdialog.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gio\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " # constructor for a window (the parent window)\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"AboutDialog Example\", application=app)\n" " self.set_default_size(200, 200)\n" "\n" " # create the about_action (a Gio.SimpleAction)\n" " about_action = Gio.SimpleAction.new(\"about\", None)\n" " # connect the signal from the action to the function about_cb()\n" " about_action.connect(\"activate\", self.about_cb)\n" " # add the action to the application\n" " app.add_action(about_action)\n" "\n" " # callback function for the about_action's \"activate\" signal\n" " def about_cb(self, action, parameter):\n" " # a Gtk.AboutDialog\n" " aboutdialog = Gtk.AboutDialog()\n" "\n" " # lists of authors and documenters (will be used later)\n" " authors = [\"GNOME Documentation Team\"]\n" " documenters = [\"GNOME Documentation Team\"]\n" "\n" " # we fill in the aboutdialog\n" " aboutdialog.set_program_name(\"AboutDialog Example\")\n" " aboutdialog.set_copyright(\n" " \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n" " aboutdialog.set_authors(authors)\n" " aboutdialog.set_documenters(documenters)\n" " aboutdialog.set_website(\"http://developer.gnome.org\")\n" " aboutdialog.set_website_label(\"GNOME Developer Website\")\n" "\n" " # we do not want to show the title, which by default would be \"About AboutDialog Example\"\n" " # we have to reset the title of the messagedialog window after setting\n" " # the program name\n" " aboutdialog.set_title(\"\")\n" "\n" " # to close the aboutdialog when \"close\" is clicked we connect the\n" " # \"response\" signal to on_close\n" " aboutdialog.connect(\"response\", self.on_close)\n" " # show the aboutdialog\n" " aboutdialog.show()\n" "\n" " # destroy the aboutdialog\n" " def on_close(self, action, parameter):\n" " action.destroy()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def quit_cb(self, action, parameter):\n" " self.quit()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" " # create a menu (a Gio.Menu)\n" " menu = Gio.Menu()\n" " # append a menu item with label \"About\" and action \"app.about\"\n" " menu.append(\"About\", \"app.about\")\n" " # append a menu item with label \"Quit\" and action \"app.quit\"\n" " menu.append(\"Quit\", \"app.quit\")\n" " # set menu as the menu for the application\n" " self.set_app_menu(menu)\n" "\n" " # a new simpleaction - for the application\n" " quit_action = Gio.SimpleAction.new(\"quit\", None)\n" " quit_action.connect(\"activate\", self.quit_cb)\n" " self.add_action(quit_action)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/aboutdialog.py.page:36 msgid "Useful methods for an AboutDialog widget" msgstr "Méthodes utiles pour un composant graphique AboutDialog" #. (itstool) path: section/p #: C/aboutdialog.py.page:37 msgid "" "In line 15 the signal \"activate\" is connected to the callback " "function about_cb() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: section/title #: C/aboutdialog.py.page:41 C/button.py.page:52 C/buttonbox.js.page:35 #: C/buttonbox.py.page:46 C/checkbutton.py.page:42 C/colorbutton.js.page:33 #: C/colorbutton.py.page:40 C/combobox.py.page:42 #: C/combobox_multicolumn.py.page:41 C/combobox_multicolumn.vala.page:35 #: C/dialog.py.page:46 C/entry.py.page:61 C/filechooserdialog.py.page:70 #: C/fontchooserwidget.js.page:34 C/fontchooserwidget.py.page:44 #: C/fontchooserwidget.vala.page:34 C/gmenu.py.page:77 C/grid.py.page:54 #: C/GtkApplicationWindow.py.page:50 C/image.py.page:126 C/label.py.page:102 #: C/linkbutton.py.page:44 C/menubar.py.page:183 C/menubutton.c.page:35 #: C/menubutton.py.page:53 C/messagedialog.py.page:54 C/paned.c.page:33 #: C/paned.js.page:33 C/paned.py.page:39 C/paned.vala.page:33 #: C/progressbar.py.page:54 C/radiobutton.py.page:46 C/scale.py.page:54 #: C/scrolledwindow.js.page:33 C/scrolledwindow.py.page:42 #: C/spinbutton.py.page:46 C/spinner.py.page:39 C/statusbar.py.page:50 #: C/switch.py.page:42 C/textview.py.page:93 C/togglebutton.py.page:41 #: C/toolbar.py.page:52 C/toolbar_builder.py.page:191 C/tooltip.c.page:35 #: C/tooltip.js.page:34 C/tooltip.py.page:56 C/tooltip.vala.page:35 #: C/treeview_advanced_liststore.py.page:41 #: C/treeview_cellrenderertoggle.py.page:41 #: C/treeview_simple_liststore.py.page:42 C/treeview_treestore.py.page:41 #: C/widget_drawing.py.page:35 C/window.py.page:60 msgid "API References" msgstr "Références API" #. (itstool) path: item/p #: C/aboutdialog.py.page:46 msgid "" "GtkAboutDialog" msgstr "" "GtkAboutDialog" #. (itstool) path: item/p #: C/aboutdialog.py.page:47 C/checkbutton.py.page:46 C/grid.py.page:58 #: C/GtkApplicationWindow.py.page:56 C/separator.c.page:38 msgid "" "GtkApplicationWindow" msgstr "" "GtkApplicationWindow" #. (itstool) path: item/p #: C/aboutdialog.py.page:49 C/checkbutton.py.page:45 C/grid.py.page:57 #: C/GtkApplicationWindow.py.page:55 C/messagedialog.py.page:65 #: C/window.py.page:64 msgid "" "GtkApplication" msgstr "" "GtkApplication" #. (itstool) path: info/title #: C/aboutdialog.vala.page:8 msgctxt "text" msgid "AboutDialog (Vala)" msgstr "AboutDialog (Vala)" #. (itstool) path: credit/name #: C/aboutdialog.vala.page:15 C/gmenu.vala.page:14 msgid "Ryan Lortie" msgstr "Ryan Lortie" #. (itstool) path: credit/name #: C/aboutdialog.vala.page:21 C/beginner.py.page:15 C/beginner.vala.page:15 #: C/button.vala.page:14 C/c.page:14 C/checkbutton.c.page:13 #: C/checkbutton.vala.page:13 C/colorbutton.vala.page:15 C/combobox.c.page:18 #: C/combobox.vala.page:13 C/combobox_multicolumn.vala.page:14 C/cpp.page:11 #: C/dialog.vala.page:13 C/entry.vala.page:13 C/filechooserdialog.vala.page:16 #: C/gmenu.c.page:13 C/gmenu.js.page:13 C/gmenu.py.page:15 C/gmenu.vala.page:20 #: C/grid.py.page:15 C/grid.vala.page:15 C/GtkApplicationWindow.c.page:13 #: C/GtkApplicationWindow.js.page:13 C/GtkApplicationWindow.py.page:15 #: C/GtkApplicationWindow.vala.page:13 C/guitar-tuner.vala.page:22 #: C/hello-world.c.page:20 C/hello-world.js.page:20 C/hello-world.py.page:20 #: C/hello-world.vala.page:20 C/image.vala.page:13 C/image-viewer.vala.page:27 #: C/index.page:23 C/js.page:12 C/label.vala.page:13 C/linkbutton.vala.page:13 #: C/menubar.py.page:15 C/menubar.vala.page:15 C/menubutton.c.page:13 #: C/menubutton.py.page:14 C/menubutton.vala.page:13 #: C/messagedialog.vala.page:13 C/paned.c.page:13 C/paned.vala.page:13 #: C/progressbar.vala.page:13 C/py.page:11 C/radiobutton.vala.page:16 #: C/response-type.page:9 C/scale.vala.page:15 C/scrolledwindow.vala.page:14 #: C/separator.c.page:14 C/separator.vala.page:16 C/spinbutton.vala.page:15 #: C/spinner.vala.page:13 C/statusbar.vala.page:16 C/switch.vala.page:17 #: C/textview.vala.page:13 C/togglebutton.vala.page:16 C/toolbar.js.page:13 #: C/toolbar.vala.page:14 C/toolbar_builder.py.page:16 #: C/toolbar_builder.vala.page:15 C/tooltip.c.page:14 C/tooltip.vala.page:14 #: C/treeview_simple_liststore.vala.page:15 C/tutorial.py.page:15 #: C/vala.page:11 C/window.c.page:13 C/window.py.page:15 C/window.vala.page:13 msgid "Tiffany Antopolski" msgstr "Tiffany Antopolski" #. (itstool) path: page/code #: C/aboutdialog.vala.page:34 #, no-wrap msgid "" "/* A window in the application */\n" "public class Window : Gtk.ApplicationWindow {\n" "\n" "\t/* The constructor */\n" "\tpublic Window (Application app) {\n" "\t\tObject (application: app, title: \"AboutDialog Example\");\n" "\n" "\t\tvar about_action = new SimpleAction (\"about\", null);\n" "\n" "\t\tabout_action.activate.connect (this.about_cb);\n" "\t\tthis.add_action (about_action);\n" "\t\tthis.show_all ();\n" "\t}\n" "\n" "\t/* This is the callback function connected to the 'activate' signal\n" "\t * of the SimpleAction about_action.\n" "\t */\n" "\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n" "\t\tstring[] authors = { \"GNOME Documentation Team\", null };\n" "\t\tstring[] documenters = { \"GNOME Documentation Team\", null };\n" "\n" "\t\tGtk.show_about_dialog (this,\n" " \"program-name\", (\"GtkApplication Example\"),\n" " \"copyright\", (\"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\"),\n" " \"authors\", authors,\n" " \"documenters\", documenters,\n" " \"website\", \"http://developer.gnome.org\",\n" " \"website-label\", (\"GNOME Developer Website\"),\n" " null);\n" "\t}\n" "}\n" "\n" "/* This is the Application */\n" "public class Application : Gtk.Application {\n" "\n" "\t/* Here we override the activate signal of GLib.Application */\n" "\tprotected override void activate () {\n" "\t\tnew Window (this);\n" "\t}\n" "\n" "\t/* Here we override the startup signal of GLib.Application */\n" "\tprotected override void startup () {\n" "\n" "\t\tbase.startup ();\n" "\n" "\t\tvar menu = new Menu ();\n" "\t\tmenu.append (\"About\", \"win.about\");\n" "\t\tmenu.append (\"Quit\", \"app.quit\");\n" "\t\tthis.app_menu = menu;\n" "\n" "\t\tvar quit_action = new SimpleAction (\"quit\", null);\n" "\t\t//quit_action.activate.connect (this.quit);\n" "\t\tthis.add_action (quit_action);\n" "\t}\n" "\n" "\t/* The constructor */\n" "\tpublic Application () {\n" "\t\tObject (application_id: \"org.example.application\");\n" "\t}\n" "}\n" "\n" "/* main function creates Application and runs it */\n" "int main (string[] args) {\n" "\treturn new Application ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/aboutdialog.vala.page:39 C/gmenu.vala.page:39 C/window.vala.page:38 msgid "" "Gtk." "Application" msgstr "" "Gtk." "Application" #. (itstool) path: item/p #: C/aboutdialog.vala.page:40 C/gmenu.vala.page:40 #: C/GtkApplicationWindow.vala.page:32 C/label.vala.page:32 msgid "" "Gtk.ApplicationWindow" msgstr "" "Gtk.ApplicationWindow" #. (itstool) path: item/p #: C/aboutdialog.vala.page:41 msgid "" "set_default_size" msgstr "" "set_default_size" #. (itstool) path: info/desc #: C/audio-player.vala.page:10 msgid "Coming soon..." msgstr "Prochainement..." #. (itstool) path: credit/name #: C/audio-player.vala.page:14 C/guitar-tuner.c.page:15 #: C/guitar-tuner.cpp.page:13 C/guitar-tuner.py.page:15 #: C/guitar-tuner.vala.page:14 C/image-viewer.c.page:15 #: C/image-viewer.cpp.page:13 C/image-viewer.vala.page:15 #: C/record-collection.js.page:15 msgid "GNOME Documentation Project" msgstr "Projet de Documentation GNOME" #. (itstool) path: page/title #: C/audio-player.vala.page:19 msgid "Audio player" msgstr "Lecteur audio" #. (itstool) path: credit/name #: C/beginner.js.page:11 C/grid.js.page:13 C/guitar-tuner.js.page:12 #: C/hello-world.c.page:15 C/hello-world.js.page:15 C/hello-world.py.page:15 #: C/hello-world.vala.page:15 C/weatherApp.js.page:12 #: C/weatherAppMain.js.page:11 C/weatherAutotools.js.page:11 #: C/weatherGeonames.js.page:11 msgid "Susanna Huhtanen" msgstr "Susanna Huhtanen" #. (itstool) path: credit/years #: C/beginner.js.page:18 C/beginner.py.page:21 C/beginner.vala.page:21 #: C/buttonbox.js.page:16 C/colorbutton.js.page:15 #: C/combobox_multicolumn.vala.page:16 C/fontchooserwidget.js.page:15 #: C/fontchooserwidget.vala.page:15 C/guitar-tuner.c.page:25 #: C/guitar-tuner.cpp.page:23 C/guitar-tuner.py.page:25 #: C/guitar-tuner.py.page:30 C/guitar-tuner.vala.page:28 #: C/image-viewer.c.page:25 C/image-viewer.cpp.page:23 #: C/image-viewer.js.page:25 C/image-viewer.py.page:25 #: C/image-viewer.vala.page:33 C/js.page:18 C/magic-mirror.vala.page:25 #: C/menubutton.c.page:15 C/message-board.c.page:22 C/paned.js.page:15 #: C/paned.vala.page:15 C/photo-wall.c.page:24 C/py.page:17 #: C/record-collection.js.page:25 C/scrolledwindow.js.page:15 #: C/separator.c.page:16 C/separator.vala.page:18 C/tooltip.c.page:16 #: C/tooltip.js.page:16 C/tooltip.vala.page:16 C/tutorial.py.page:27 #: C/vala.page:17 C/weatherApp.js.page:19 C/widget_drawing.py.page:15 msgid "2013" msgstr "2013" #. (itstool) path: info/desc #: C/beginner.js.page:21 msgid "" "A beginner's guide to writing GNOME applications in JavaScript, including " "code samples and practice exercises." msgstr "" "Un guide pour débuter la programmation d'applications GNOME en JavaScript, " "incluant des exemples de code et des exercices pratiques." #. (itstool) path: page/title #: C/beginner.js.page:24 C/beginner.vala.page:25 msgid "Tutorial for beginners and code samples" msgstr "Tutoriel pour débutants et exemples de code" #. (itstool) path: synopsis/p #: C/beginner.js.page:26 #, fuzzy #| msgid "" #| "JavaScript is one of the most popular programming languages on the web. " #| "It's not just for the web, though. If you have even a basic understanding " #| "of JavaScript, you can write full-fledged applications for GNOME. GNOME Documents is " #| "written in JavaScript, and so is GNOME Shell, the most basic part of GNOME." msgid "" "JavaScript is one of the most popular programming languages on the web. It's " "not just for the web, though. If you have even a basic understanding of " "JavaScript, you can write full-fledged applications for GNOME. GNOME Documents is written " "in JavaScript, and so is GNOME Shell, the most basic part of GNOME." msgstr "" "JavaScript est l'un des langages de programmation les plus courants sur le " "Web. Il n'est cependant pas seulement réservé au Web. Même si vous n'avez " "que des notions de base en JavaScript, vous pouvez quand même programmer des " "applications complètes pour GNOME. GNOME Documents est programmé en JavaScript, de même " "que GNOME Shell, un morceau fondamental de GNOME." #. (itstool) path: note/p #: C/beginner.js.page:27 msgid "" "GNOME Shell is what you see when you click on \"Activities\" in the top-left " "corner of your screen. It also controls the clock and the rest of the top " "panel. Besides showing how you to write GNOME applications, these tutorials " "will also show you how to use JavaScript to write GNOME Shell extensions, " "which give it new features or change the way it does things." msgstr "" "GNOME Shell est le bureau qui s'affiche quand vous cliquez sur « Activités » " "dans le coin supérieur gauche de votre écran. Il contrôle aussi l'horloge et " "toute la barre supérieure. En plus de vous guider dans la programmation " "d'applications GNOME, ces tutoriels vont aussi vous montrer comment utiliser " "JavaScript pour programmer des extensions pour GNOME Shell, afin de lui " "apporter de nouvelles fonctionnalités ou modifier son comportement." #. (itstool) path: section/title #: C/beginner.js.page:31 msgid "Getting Started" msgstr "Premiers pas" #. (itstool) path: section/p #: C/beginner.js.page:32 msgid "" "These tutorials are designed for people who already know how to write in " "JavaScript, and who have GNOME installed on their computers already, but who " "are new to developing GNOME applications. If you don't already know " "JavaScript, or if you need help getting GNOME set up, take a look at these " "resources first:" msgstr "" "Ces tutoriels sont destinés à des personnes ayant déjà des connaissances en " "JavaScript et qui ont déjà installé GNOME comme interface de bureau sur leur " "ordinateur, mais qui n'ont encore jamais développé d'application GNOME. Si " "vous n'avez pas de connaissance en JavaScript, ou si vous avez besoin d'aide " "pour installer GNOME, consultez d'abord ces ressources :" #. (itstool) path: item/p #: C/beginner.js.page:34 msgid "" "Eloquent " "JavaScript is a free, Creative Commons-licensed book, which explains " "the basics of JavaScript programming. Since you won't be writing JavaScript " "for the web, you only need to read up to chapter 10 or so." msgstr "" "Eloquent " "JavaScript est un livre gratuit, sous licence Creative Commons et qui " "explique les bases de la programmation en JavaScript. Comme vous n'allez pas " "programmer en JavaScript pour le Web, il vous suffit de lire jusqu'au " "chapitre 10 environ." #. (itstool) path: item/p #: C/beginner.js.page:35 msgid "" "Download GNOME as " "part of a distribution, like Fedora, openSUSE, or Ubuntu. Each distribution " "has its own instructions for how to get GNOME." msgstr "" "Procurez-vous GNOME pour une distribution, comme Fedora, openSUSE ou Ubuntu. Chaque " "distribution possède son propre moyen d'installer GNOME." #. (itstool) path: item/p #: C/beginner.js.page:36 msgid "" "Set up gedit for writing applications. " "GNOME's text editor, gedit, is sometimes just called \"text editor\"." msgstr "" "Configurer Gedit pour écrire des " "applications. Gedit est l'éditeur de texte de GNOME et parfois simplement " "appelé « éditeur de texte »." #. (itstool) path: section/title #: C/beginner.js.page:42 C/beginner.vala.page:42 C/c.page:113 msgid "Tutorials" msgstr "Tutoriels" #. (itstool) path: section/title #: C/beginner.js.page:46 C/beginner.vala.page:46 C/py.page:32 msgid "Code samples" msgstr "Exemples de code" #. (itstool) path: section/p #: C/beginner.js.page:47 msgid "" "These samples show how to use widgets in your GNOME applications. Each one " "demonstrates a complete application which showcases the featured widget. At " "the end of each sample, you will find links to more detailed reference " "material." msgstr "" "Ces exemples montrent la manière d'utiliser des éléments graphiques dans vos " "applications GNOME. Chacun d'eux fait la démonstration d'une application " "complète mettant en valeur un composant graphique en particulier. À la fin " "de chaque exemple, vous trouverez des liens vers de plus amples informations." #. (itstool) path: section/p #: C/beginner.js.page:48 C/beginner.vala.page:47 C/c.page:91 msgid "To run the code samples:" msgstr "Pour exécuter les exemples de code :" #. (itstool) path: item/p #: C/beginner.js.page:50 msgid "Copy and paste the code into filename.js" msgstr "Copiez puis collez le code dans nomdufichier.js" #. (itstool) path: item/p #: C/beginner.js.page:51 msgid "In the terminal, type:" msgstr "Saisissez dans le terminal :" #. (itstool) path: item/screen #: C/beginner.js.page:52 #, no-wrap msgid "gjs filename.js" msgstr "gjs nomdufichier.js" #. (itstool) path: section/title #: C/beginner.js.page:55 C/beginner.py.page:32 C/beginner.vala.page:58 #: C/c.page:118 msgid "Windows" msgstr "Fenêtres" #. (itstool) path: section/title #: C/beginner.js.page:57 C/beginner.py.page:34 C/beginner.vala.page:61 #: C/c.page:121 msgid "Display widgets" msgstr "Éléments graphiques d'affichage" #. (itstool) path: section/title #: C/beginner.js.page:59 C/beginner.py.page:36 C/beginner.vala.page:63 #: C/c.page:123 msgid "Buttons and toggles" msgstr "Boutons et inverseurs" #. (itstool) path: section/title #: C/beginner.js.page:61 C/beginner.py.page:38 C/beginner.vala.page:65 #: C/c.page:125 msgid "Numeric and text data entry" msgstr "Entrée de données numériques et de texte" #. (itstool) path: section/title #: C/beginner.js.page:63 C/beginner.py.page:40 C/beginner.vala.page:67 #: C/c.page:127 msgid "Multiline text editor" msgstr "Éditeur de texte multiligne" #. (itstool) path: section/title #: C/beginner.js.page:65 C/beginner.py.page:42 C/beginner.vala.page:69 #: C/c.page:129 msgid "Menu, combo box and toolbar widgets" msgstr "Menu, boîte combinée et éléments graphiques de barre d'outils" #. (itstool) path: section/title #: C/beginner.js.page:67 C/beginner.py.page:44 C/beginner.vala.page:71 #: C/c.page:131 msgid "TreeView widget" msgstr "Élément graphique arborescent" #. (itstool) path: section/title #. (itstool) path: steps/title #: C/beginner.js.page:69 C/beginner.py.page:46 C/beginner.vala.page:73 #: C/c.page:133 C/tutorial.py.page:127 msgid "Selectors" msgstr "Sélecteurs" #. (itstool) path: section/title #: C/beginner.js.page:70 C/beginner.py.page:47 C/beginner.vala.page:74 #: C/c.page:134 msgid "File selectors" msgstr "Sélecteurs de fichiers" #. (itstool) path: section/title #: C/beginner.js.page:72 C/beginner.py.page:49 C/beginner.vala.page:76 #: C/c.page:136 msgid "Font selectors" msgstr "Sélecteurs de polices" #. (itstool) path: section/title #: C/beginner.js.page:74 C/beginner.py.page:51 C/beginner.vala.page:78 #: C/c.page:138 msgid "Color Selectors" msgstr "Sélecteurs de couleurs" #. (itstool) path: section/title #: C/beginner.js.page:77 C/beginner.py.page:54 C/beginner.vala.page:81 #: C/c.page:141 msgid "Layout containers" msgstr "Conteneurs d'agencement" #. (itstool) path: section/title #: C/beginner.js.page:79 C/beginner.py.page:56 C/beginner.vala.page:83 #: C/c.page:143 msgid "Ornaments" msgstr "Décorations" #. (itstool) path: section/title #: C/beginner.js.page:81 C/beginner.py.page:58 C/beginner.vala.page:85 #: C/c.page:145 msgid "Scrolling" msgstr "Barre de défilement" #. (itstool) path: section/title #: C/beginner.js.page:83 C/beginner.py.page:60 C/beginner.vala.page:87 #: C/c.page:147 msgid "Miscellaneous" msgstr "Divers" #. (itstool) path: section/title #: C/beginner.js.page:88 C/beginner.vala.page:92 C/menubar.vala.page:198 msgid "Exercises" msgstr "Exercices" #. (itstool) path: info/title #: C/beginner.py.page:9 msgctxt "text" msgid "GTK+ widgets sample code (Python)" msgstr "Exemple de code pour composants graphiques GTK (Python)" #. (itstool) path: info/desc #: C/beginner.py.page:13 msgid "" "A guide to GUI programming using GTK+, including code samples and practice " "exercises." msgstr "" "Un guide pour la programmation d'interfaces graphiques avec GTK+, incluant " "des exemples de code et des exercices pratiques." #. (itstool) path: page/title #: C/beginner.py.page:25 msgid "GTK+ widgets sample code" msgstr "" #. (itstool) path: synopsis/p #: C/beginner.py.page:27 msgid "" "If you are a beginner and you would like a tutorial to guide you step by " "step in an exploration of what you can do with GTK+ 3, you should go to the " " page. If you are looking for a specific widget, " "you can find it in the sections below." msgstr "" "Si vous êtes débutant et que vous souhaitez un tutoriel pas à pas pour vous " "guider dans la découverte des possibilités de GTK+ 3, vous devriez consulter " "cette page . Si vous recherchez un composant " "graphique en particulier, vous le trouverez dans les sections ci-dessous." #. (itstool) path: section/title #: C/beginner.py.page:64 msgid "Theory pages" msgstr "" #. (itstool) path: info/title #: C/beginner.vala.page:9 msgctxt "text" msgid "Tutorial for beginners (Vala)" msgstr "Tutoriel pour débutants (Vala)" #. (itstool) path: info/desc #: C/beginner.vala.page:13 msgid "" "A beginner's guide to GUI programming using GTK+, including code samples and " "practice exercises." msgstr "" "Un guide du débutant en programmation d'interfaces graphiques avec GTK+, " "incluant des exemples de code et des exercices pratiques." #. (itstool) path: synopsis/p #: C/beginner.vala.page:27 msgid "" "Although these tutorials are designed for beginners, we can't cover all the " "basics. Before attempting to follow these tutorials, you are expected to be " "familiar with the following concepts:" msgstr "" "Bien que ces tutoriels soient conçus pour les débutants, ils ne couvrent pas " "toutes les bases de la programmation. Avant d'essayer de suivre ces " "tutoriels, vous devez être à l'aise avec les concepts suivants :" #. (itstool) path: item/p #: C/beginner.vala.page:29 msgid "Object oriented programming" msgstr "La programmation orientée objet" #. (itstool) path: item/p #: C/beginner.vala.page:30 msgid "The Vala programming language:" msgstr "Le langage de programmation Vala :" #. (itstool) path: item/p #: C/beginner.vala.page:32 msgid "" "The Vala Tutorial" msgstr "" "Tutoriel Vala" #. (itstool) path: item/p #: C/beginner.vala.page:33 msgid "" "Sample " "Vala code" msgstr "" #. (itstool) path: synopsis/p #: C/beginner.vala.page:38 msgid "" "By following these tutorials you will learn the basics of GUI programming " "using GTK+." msgstr "" "En suivant ces tutoriels, vous apprendrez les bases de la programmation " "d'interfaces graphiques en GTK+." #. (itstool) path: item/p #: C/beginner.vala.page:51 msgid "Copy and paste the code into filename.vala" msgstr "Copiez puis collez le code dans nomdufichier.vala" #. (itstool) path: item/p #: C/beginner.vala.page:52 C/c.page:98 msgid "In the terminal type:" msgstr "Saisissez dans le terminal :" #. (itstool) path: item/screen #: C/beginner.vala.page:53 #, no-wrap msgid "valac --pkg gtk+-3.0 filename.vala" msgstr "valac --pkg gtk+-3.0 nomdufichier.vala" #. (itstool) path: item/screen #: C/beginner.vala.page:54 C/c.page:100 #, no-wrap msgid "./filename" msgstr "./nomdufichier" #. (itstool) path: info/title #: C/button.c.page:8 msgctxt "text" msgid "Button (C)" msgstr "Button (C)" #. (itstool) path: info/desc #: C/button.c.page:20 C/button.py.page:20 C/button.vala.page:19 msgid "A button widget which emits a signal when clicked" msgstr "Un bouton qui émet un signal quand il est cliqué" #. (itstool) path: page/title #: C/button.c.page:23 C/button.js.page:21 C/button.py.page:23 msgid "Button" msgstr "Button" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/button.c.page:25 C/button.js.page:22 C/button.py.page:25 #: C/button.vala.page:24 #, fuzzy #| msgid "@@image: 'media/button.png'; md5=8d69efbb3a0d3e043af6139b6492171c" msgctxt "_" msgid "external ref='media/button.png' md5='8d69efbb3a0d3e043af6139b6492171c'" msgstr "@@image: 'media/button.png'; md5=8d69efbb3a0d3e043af6139b6492171c" #. (itstool) path: page/p #: C/button.c.page:26 msgid "" "A button widget connected to a callback function that reverses its label " "when clicked." msgstr "" "Un bouton connecté à une fonction de rappel qui inverse son étiquette quand " "il est cliqué." #. (itstool) path: page/code #: C/button.c.page:28 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/*This is the callback function. It is a handler function which \n" "reacts to the signal. In this case, it will cause the button label's \n" "string to reverse.*/\n" "static void\n" "button_clicked (GtkButton *button,\n" " gpointer user_data)\n" "{\n" " const char *old_label;\n" " char *new_label;\n" "\n" " old_label = gtk_button_get_label (button);\n" " new_label = g_utf8_strreverse (old_label, -1);\n" "\n" " gtk_button_set_label (button, new_label);\n" " g_free (new_label);\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *button;\n" "\n" " /*Create a window with a title and a default size*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n" "\n" " /*Create a button with a label, and add it to the window*/\n" " button = gtk_button_new_with_label (\"Click Me\");\n" " gtk_container_add (GTK_CONTAINER (window), button);\n" "\n" " /*Connecting the clicked signal to the callback function*/\n" " g_signal_connect (GTK_BUTTON (button),\n" " \"clicked\", \n" " G_CALLBACK (button_clicked), \n" " G_OBJECT (window));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/button.c.page:36 C/buttonbox.py.page:51 C/grid.c.page:35 msgid "" "GtkButton" msgstr "" "GtkButton" #. (itstool) path: item/p #: C/button.c.page:37 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Unicode Manipulation" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/button.js.page:8 msgctxt "text" msgid "Button (JavaScript)" msgstr "Button (JavaScript)" #. (itstool) path: info/desc #: C/button.js.page:18 msgid "A button which can be connected to other widgets" msgstr "Un bouton qui peut être connecté à d'autres composants graphiques." #. (itstool) path: page/p #: C/button.js.page:23 msgid "A button widget that changes its label when you click it." msgstr "Un bouton qui change d'étiquette quand il est cliqué." #. (itstool) path: page/code #: C/button.js.page:25 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ButtonExample {\n" "\n" " /* Create the application itself\n" " This boilerplate code is needed to build any GTK+ application. */\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jsbutton',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present ();\n" " }\n" "\n" " // Callback function for 'startup' signal initializes menus and builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"GNOME Button\",\n" " default_height: 50,\n" " default_width: 250 });\n" "\n" " // Create the button\n" " this.Button = new Gtk.Button ({label: \"Click Me\"});\n" " this._window.add (this.Button);\n" "\n" " // Bind it to a function that says what to do when the button is clicked\n" " this.Button.connect (\"clicked\", this._clickHandler.bind(this));\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " // Here's the function that says what happens when the button is clicked\n" " _clickHandler() {\n" " this.Button.set_label (\"Clicked!\");\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new ButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/button.js.page:33 C/grid.js.page:36 msgid "" "Gtk.Button" msgstr "" "Gtk.Button" #. (itstool) path: info/title #: C/button.py.page:8 msgctxt "text" msgid "Button (Python)" msgstr "Button (Python)" #. (itstool) path: page/p #: C/button.py.page:26 C/button.vala.page:25 msgid "A button widget connected to a simple callback function." msgstr "Un bouton connecté à une fonction de rappel simple." #. (itstool) path: section/code #: C/button.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n" " self.set_default_size(250, 50)\n" "\n" " # a button\n" " button = Gtk.Button()\n" " # with a label\n" " button.set_label(\"Click me\")\n" " # connect the signal \"clicked\" emitted by the button\n" " # to the callback function do_clicked\n" " button.connect(\"clicked\", self.do_clicked)\n" " # add the button to the window\n" " self.add(button)\n" "\n" " # callback function connected to the signal \"clicked\" of the button\n" " def do_clicked(self, button):\n" " print(\"You clicked me!\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/button.py.page:36 msgid "Useful methods for a Button widget" msgstr "Méthode utiles pour un composant graphique Button" #. (itstool) path: section/p #: C/button.py.page:37 msgid "" "In line 16 the \"clicked\" signal from the button is connected " "to the callback function do_clicked() using widget.connect(signal, callback function). See " " for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/button.py.page:39 msgid "" "set_relief(Gtk.ReliefStyle.NONE) sets to none the relief style " "of the edges of the Gtk.Button - as opposed to Gtk.ReliefStyle.NORMAL." msgstr "" "La méthode set_relief(Gtk.ReliefStyle.NONE) annule le style en " "relief des bordures du Gtk.Button - à l'opposé, Gtk.ReliefStyle." "NORMAL le rétablit." #. (itstool) path: item/p #: C/button.py.page:40 msgid "" "If the label of the button is a stock icon, " "set_use_stock(True) sets the label as the name of the " "corresponding stock icon." msgstr "" "Si l'étiquette du bouton est issue de la collection d'icônes, la " "méthode set_use_stock(True) assigne l'étiquette comme étant le " "nom de l'icône correspondante de la collection." #. (itstool) path: item/p #: C/button.py.page:41 msgid "" "To set an image (e.g. a stock image) for the button button:" msgstr "" "Pour assigner une image (par ex. une image de la collection d'images) au " "bouton button :" #. (itstool) path: item/code #: C/button.py.page:42 #, no-wrap msgid "" "\n" "image = Gtk.Image()\n" "image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON)\n" "button.set_image(image)" msgstr "" "\n" "image = Gtk.Image()\n" "image.set_from_stock(Gtk.STOCK_ABOUT, Gtk.IconSize.BUTTON)\n" "button.set_image(image)" #. (itstool) path: item/p #: C/button.py.page:46 msgid "" "You should not set a label for the button after this, otherwise it will show " "the label and not the image." msgstr "" "Vous ne devez plus assigner d'étiquette au bouton après cela, sinon il " "affichera l'étiquette au lieu de l'image." #. (itstool) path: item/p #: C/button.py.page:47 msgid "" "If we use set_focus_on_click(False) the button will not grab " "focus when it is clicked by the mouse. This could be useful in places like " "toolbars, so that the keyboard focus is not removed from the main area of " "the application." msgstr "" "La fonction set_focus_on_click(False) empêche le bouton de " "prendre le focus quand vous cliquez dessus avec la souris. Cela peut être " "utile dans les barres d'outils, afin que la zone principale de l'application " "ne perde pas le focus clavier." #. (itstool) path: item/p #: C/button.py.page:55 msgid "" "GtkButton" msgstr "" "GtkButton" #. (itstool) path: item/p #: C/button.py.page:56 C/dialog.py.page:52 C/label.py.page:106 #: C/linkbutton.py.page:47 C/messagedialog.py.page:61 C/radiobutton.py.page:49 #: C/separator.py.page:39 C/window.py.page:65 msgid "" "GtkWindow" msgstr "" "GtkWindow" #. (itstool) path: info/title #: C/button.vala.page:8 msgctxt "text" msgid "Button (Vala)" msgstr "Button (Vala)" #. (itstool) path: page/title #: C/button.vala.page:22 msgid "Button widget" msgstr "Composant graphique Button" #. (itstool) path: page/code #: C/button.vala.page:27 #, no-wrap msgid "" "\n" "/* A window in the application */\n" "public class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* The constructor of the window */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"GNOME Button\");\n" "\n" "\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n" "\t\tbutton.clicked.connect (this.reverse_label);\n" "\t\tbutton.show ();\n" "\n" "\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n" "\t\tthis.set_default_size (250,50);\n" "\t\tthis.add (button);\n" "\t}\n" "\n" "\t/* The callback function connected to the\n" "\t * 'clicked' signal of the button.\n" "\t */\n" "\tvoid reverse_label (Gtk.Button button) {\n" "\t\tbutton.label = button.label.reverse ();\n" "\t}\n" "}\n" "\n" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\n" "\t/* This is the constructor */\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\t}\n" "\n" "\t/* Override the activate signal of GLib.Application */\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: page/p #: C/button.vala.page:29 msgid "" "In this sample we used the following: Gtk.Button" msgstr "" "Dans cet exemple, nous avons utilisé un Gtk.Button" #. (itstool) path: info/title #: C/buttonbox.js.page:8 msgctxt "text" msgid "ButtonBox (JavaScript)" msgstr "ButtonBox (JavaScript)" #. (itstool) path: credit/name #: C/buttonbox.js.page:14 C/colorbutton.js.page:13 #: C/fontchooserwidget.js.page:13 C/paned.js.page:13 #: C/scrolledwindow.js.page:13 C/tooltip.js.page:14 msgid "Meg Ford" msgstr "Meg Ford" #. (itstool) path: info/desc #: C/buttonbox.js.page:19 C/buttonbox.py.page:20 msgid "A container for arranging buttons" msgstr "" #. (itstool) path: page/title #. (itstool) path: steps/title #: C/buttonbox.js.page:22 C/buttonbox.py.page:23 C/tutorial.py.page:92 #, fuzzy #| msgid "Button" msgid "ButtonBox" msgstr "ButtonBox" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/buttonbox.js.page:24 C/buttonbox.py.page:25 #, fuzzy #| msgid "@@image: 'media/toolbar.png'; md5=f0350855eedf6343952b72d6d906f738" msgctxt "_" msgid "" "external ref='media/buttonbox_calculator.png' " "md5='ce0de08b7ac66f517290e33e6d33d508'" msgstr "@@image: 'media/toolbar.png'; md5=f0350855eedf6343952b72d6d906f738" #. (itstool) path: page/p #: C/buttonbox.js.page:25 C/buttonbox.py.page:26 msgid "A calculator - the buttons are enclosed in horizontal ButtonBoxes." msgstr "" #. (itstool) path: section/code #: C/buttonbox.js.page:31 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const GObject = imports.gi.GObject;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ButtonBoxExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsbuttonbox'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this.window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" " // Create the application window\n" " this.window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Calculator\",\n" " default_width: 350,\n" " default_height: 200,\n" " border_width: 10 });\n" " this.entry = new Gtk.Entry();\n" " this.entry.set_text('0');\n" " // text aligned on the right\n" " this.entry.set_alignment(1);\n" " // the text in the entry cannot be modified by writing in it\n" " this.entry.set_can_focus(false);\n" "\n" " // a grid\n" " this.grid = new Gtk.Grid();\n" " this.grid.set_row_spacing(5);\n" " \n" " // to attach the entry\n" " this.grid.attach(this.entry, 0, 0, 1, 1);\n" " \n" " // the labels for the buttons\n" " this.buttons = [ 7, 8, 9, '/', 4, 5, 6, '*', 1, 2, 3, '-', 'C', 0, '=', '+' ];\n" " \n" " // each row is a ButtonBox, attached to the grid \n" " for (let i = 0; i < 4; i++) {\n" " this.hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL);\n" " this.hbox.set_spacing(5);\n" " this.grid.attach(this.hbox, 0, i + 1, 1, 1);\n" " // each ButtonBox has 4 buttons, connected to the callback function\n" " for (let j= 0; j < 4; j++) {\n" " this.button = new Gtk.Button();\n" " this.buttonLabel = (this.buttons[i * 4 + j].toString());\n" " this.button.set_label(this.buttonLabel);\n" " this.button.set_can_focus(false);\n" " this.button.connect(\"clicked\", this._buttonClicked.bind(this));\n" " this.hbox.add(this.button);\n" " }\n" " }\n" " \n" " // some variables for the calculations\n" " this.firstNumber = 0;\n" " this.secondNumber = 0;\n" " this.counter = 0;\n" " this.operation = \"\";\n" "\n" " // add the grid to the window\n" " this.window.add(this.grid);\n" " this.window.show_all();\n" " }\n" "\n" " // callback function for all the buttons\n" " _buttonClicked(button) {\n" " this.button = button;\n" " // for the operations\n" " if (this.button.get_label() == '+') {\n" " this.counter += 1 \n" " if (this.counter > 1)\n" " this._doOperation();\n" " this.entry.set_text('0');\n" " this.operation = \"plus\";\n" " }\n" "\n" " else if (this.button.get_label() == '-') {\n" " this.counter += 1;\n" " if (this.counter > 1)\n" " this._doOperation();\n" " this.entry.set_text('0');\n" " this.operation = \"minus\";\n" " }\n" "\n" " else if (this.button.get_label() == '*') {\n" " this.counter += 1; \n" " if (this.counter > 1)\n" " this._doOperation();\n" " this.entry.set_text('0');\n" " this.operation = \"multiplication\";\n" " }\n" "\n" " else if (this.button.get_label() == '/') {\n" " this.counter += 1 \n" " if (this.counter > 1)\n" " this._doOperation();\n" " this.entry.set_text('0');\n" " this.operation = \"division\";\n" " }\n" "\n" " // for =\n" " else if (this.button.get_label() == '=') {\n" " this._doOperation();\n" " this.entry.set_text(this.firstNumber.toString());\n" " this.counter = 1;\n" " }\n" "\n" " // for Cancel\n" " else if (this.button.get_label() == 'C') {\n" " this.firstNumber = 0;\n" " this.secondNumber = 0;\n" " this.counter = 0;\n" " this.entry.set_text('0');\n" " this.operation = \"\";\n" " }\n" "\n" " // for a digit button\n" " else {\n" " this.newDigit = parseInt(this.button.get_label());\n" " if (this.entry.get_text() == \"error\")\n" " this.number = 0;\n" " else\n" " this.number = parseInt(this.entry.get_text());\n" " this.number = this.number * 10 + this.newDigit; \n" " if (this.counter == 0)\n" " this.firstNumber = this.number;\n" " else\n" " this.secondNumber = this.number;\n" " this.entry.set_text(this.number.toString());\n" " }\n" " }\n" "\n" " _doOperation() {\n" " if (this.operation == \"plus\") {\n" " this.firstNumber += this.secondNumber;\n" " } else if (this.operation == \"minus\") {\n" " this.firstNumber -= this.secondNumber;\n" " } else if (this.operation == \"multiplication\") {\n" " this.firstNumber *= this.secondNumber;\n" " } else if (this.operation == \"division\") {\n" " if (this.secondNumber != 0) {\n" " this.firstNumber /= this.secondNumber;\n" " } else {\n" " this.firstNumber = 0; \n" " this.secondNumber = 0;\n" " this.counter = 0; \n" " this.entry.set_text(\"error\");\n" " this.operation = \"\";\n" "\n" " return\n" " }\n" " } else {\n" " this.firstNumber = 0;\n" " this.secondNumber = 0;\n" " this.counter = 0;\n" " this.entry.set_text(\"error\");\n" " }\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new ButtonBoxExample();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/buttonbox.js.page:38 msgid "" "GtkButtonBox" msgstr "" "GtkButtonBox" #. (itstool) path: item/p #: C/buttonbox.js.page:39 msgid "" "GtkBox" msgstr "" "GtkBox" #. (itstool) path: item/p #: C/buttonbox.js.page:40 msgid "" "GtkButton" msgstr "" "GtkButton" #. (itstool) path: item/p #: C/buttonbox.js.page:41 msgid "" "GtkEntry" msgstr "" "GtkEntry" #. (itstool) path: item/p #: C/buttonbox.js.page:42 msgid "" "GtkGrid" msgstr "" "GtkGrid" #. (itstool) path: info/title #: C/buttonbox.py.page:8 msgctxt "text" msgid "ButtonBox (Python)" msgstr "ButtonBox (Python)" #. (itstool) path: section/code #: C/buttonbox.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Calculator\", application=app)\n" " self.set_default_size(350, 200)\n" " self.set_border_width(10)\n" "\n" " # an entry\n" " self.entry = Gtk.Entry()\n" " # with an initial text\n" " self.entry.set_text('0')\n" " # text aligned on the right\n" " self.entry.set_alignment(1)\n" " # the text in the entry cannot be modified writing in it\n" " self.entry.set_can_focus(False)\n" "\n" " # a grid\n" " grid = Gtk.Grid()\n" " grid.set_row_spacing(5)\n" "\n" " # to attach the entry\n" " grid.attach(self.entry, 0, 0, 1, 1)\n" "\n" " # the labels for the buttons\n" " buttons = [7, 8, 9, '/',\n" " 4, 5, 6, '*',\n" " 1, 2, 3, '-',\n" " 'C', 0, '=', '+']\n" "\n" " # each row is a ButtonBox, attached to the grid\n" " for i in range(4):\n" " hbox = Gtk.ButtonBox.new(Gtk.Orientation.HORIZONTAL)\n" " hbox.set_spacing(5)\n" " grid.attach(hbox, 0, i + 1, 1, 1)\n" " # each ButtonBox has 4 buttons, connected to the callback function\n" " for j in range(4):\n" " button = Gtk.Button(label=buttons[i * 4 + j])\n" " button.set_can_focus(False)\n" " button.connect(\"clicked\", self.button_clicked)\n" " hbox.add(button)\n" "\n" " # some variables for the calculations\n" " self.first_number = 0\n" " self.second_number = 0\n" " self.counter = 0\n" " self.operation = \"\"\n" "\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" " # callback function for all the buttons\n" " def button_clicked(self, button):\n" " # for the operations\n" " if button.get_label() == '+':\n" " self.counter += 1\n" " if self.counter > 1:\n" " self.do_operation()\n" " self.entry.set_text('0')\n" " self.operation = \"plus\"\n" " elif button.get_label() == '-':\n" " self.counter += 1\n" " if self.counter > 1:\n" " self.do_operation()\n" " self.entry.set_text('0')\n" " self.operation = \"minus\"\n" " elif button.get_label() == '*':\n" " self.counter += 1\n" " if self.counter > 1:\n" " self.do_operation()\n" " self.entry.set_text('0')\n" " self.operation = \"multiplication\"\n" " elif button.get_label() == '/':\n" " self.counter += 1\n" " if self.counter > 1:\n" " self.do_operation()\n" " self.entry.set_text('0')\n" " self.operation = \"division\"\n" " # for =\n" " elif button.get_label() == '=':\n" " self.do_operation()\n" " self.entry.set_text(str(self.first_number))\n" " self.counter = 1\n" " # for Cancel\n" " elif button.get_label() == 'C':\n" " self.first_number = 0\n" " self.second_number = 0\n" " self.counter = 0\n" " self.entry.set_text('')\n" " self.operation = \"\"\n" " # for a digit button\n" " else:\n" " new_digit = int(button.get_label())\n" " if self.entry.get_text() == 'error':\n" " number = 0\n" " else:\n" " number = int(self.entry.get_text())\n" " number = number * 10 + new_digit\n" " if self.counter == 0:\n" " self.first_number = number\n" " else:\n" " self.second_number = number\n" " self.entry.set_text(str(number))\n" "\n" " def do_operation(self):\n" " if self.operation == \"plus\":\n" " self.first_number += self.second_number\n" " elif self.operation == \"minus\":\n" " self.first_number -= self.second_number\n" " elif self.operation == \"multiplication\":\n" " self.first_number *= self.second_number\n" " elif self.operation == \"division\":\n" " try:\n" " self.first_number /= self.second_number\n" " except ZeroDivisionError:\n" " self.first_number = 0\n" " self.second_number = 0\n" " self.counter = 0\n" " self.entry.set_text('error')\n" " self.operation = \"\"\n" " return\n" " else:\n" " self.first_number = 0\n" " self.second_number = 0\n" " self.counter = 0\n" " self.entry.set_text('error')\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/buttonbox.py.page:36 #, fuzzy #| msgid "Useful methods for a Button widget" msgid "Useful methods for a ButtonBox widget" msgstr "Méthode utiles pour un élément graphique Bouton" #. (itstool) path: item/p #: C/buttonbox.py.page:38 msgid "" "The layout of the ButtonBox are set with set_layout(layout), " "where layout can be Gtk.ButtonBoxStyle.SPREAD " "(buttons are evenly spread across the box), Gtk.ButtonBoxStyle.EDGE (buttons are placed at the edges of the box), Gtk.ButtonBoxStyle." "START (buttons are grouped towards the start of the box), Gtk." "ButtonBoxStyle.END (buttons are grouped towards the end of the box), " "Gtk.ButtonBoxStyle.CENTER (buttons are centered in the box)." msgstr "" #. (itstool) path: item/p #: C/buttonbox.py.page:39 msgid "" "set_child_secondary(button, is_secondary) sets whether " "button should appear in a secondary group of children. A " "typical use of a secondary child is the help button in a dialog. This group " "appears after the other children if the style is START, " "SPREAD or EDGE, and before the other children if " "the style is END. If the style is START or " "END, then the secondary children are aligned at the other end " "of the button box from the main children. For the other styles, they appear " "immediately next to the main children." msgstr "" #. (itstool) path: item/p #: C/buttonbox.py.page:40 msgid "" "set_child_non_homogeneous(button, is_non_homogeneous) sets " "whether the child is exempted from homogeneous sizing. Default value is " "False." msgstr "" #. (itstool) path: item/p #: C/buttonbox.py.page:41 msgid "" "set_spacing(spacing) sets the spacing, in pixels, between the " "buttons of the box." msgstr "" "set_spacing(spacing) fixe l'espacement, en pixels, entre les " "boutons de la boîte." #. (itstool) path: item/p #: C/buttonbox.py.page:49 msgid "" "GtkButtonBox" msgstr "" "GtkButtonBox" #. (itstool) path: item/p #: C/buttonbox.py.page:50 msgid "" "GtkBox" msgstr "" "GtkBox" #. (itstool) path: item/p #: C/buttonbox.py.page:52 C/entry.c.page:34 msgid "" "GtkEntry" msgstr "" "GtkEntry" #. (itstool) path: item/p #: C/buttonbox.py.page:53 C/grid.c.page:36 C/radiobutton.c.page:37 #: C/spinbutton.c.page:40 C/statusbar.c.page:40 C/switch.c.page:37 #: C/togglebutton.c.page:40 msgid "" "GtkGrid" msgstr "" "GtkGrid" #. (itstool) path: info/title #: C/c.page:9 msgctxt "link" msgid "C" msgstr "C" #. (itstool) path: credit/name #: C/c.page:18 msgid "Bastian Ilso" msgstr "" #. (itstool) path: info/desc #: C/c.page:24 #, fuzzy #| msgid "Tutorials, code samples, and plaform demos in C" msgid "Tutorials and code samples in C." msgstr "Tutoriels, exemples de code et démonstrations de la plateforme en C" #. (itstool) path: page/title #: C/c.page:27 #, fuzzy #| msgid "Platform demos in C++" msgid "Platform Demos in C" msgstr "Exemples de la plateforme en langage C++" #. (itstool) path: section/title #: C/c.page:31 msgid "Prerequisites" msgstr "" #. (itstool) path: section/p #: C/c.page:33 msgid "" "To compile these platform demos you will need a C compiler, for example " "gcc. You will also need GTK+ 3 " "including headers and pkg-config files. Linux distributions usually abstract " "GTK+ 3 headers and pkg-config files into separate packages called gtk3-" "devel, gtk3-dev or similar." msgstr "" #. (itstool) path: section/title #: C/c.page:44 msgid "Guidelines for new developers" msgstr "" #. (itstool) path: section/p #: C/c.page:46 msgid "" "Beyond the prerequisites mentioned above, several tools has been developed " "to assist you further in developing your GNOME application. GNOME also " "recommends a specific coding style and conventions which this section will " "elaborate further upon." msgstr "" #. (itstool) path: section/title #: C/c.page:52 msgid "Recommended tools" msgstr "" #. (itstool) path: item/p #: C/c.page:56 msgid "" "DevHelp: An API " "documentation browser for GNOME." msgstr "" #. (itstool) path: item/p #: C/c.page:60 msgid "" "A GNOME IDE (Integrated Development Environment). An IDE can assist you in " "writing and debugging C code, for example Builder or Anjuta." msgstr "" #. (itstool) path: item/p #: C/c.page:66 #, fuzzy #| msgid "" #| "To create the toolbar using the Glade Interface Designer:" msgid "" "Glade: A user interface " "designer for GTK+ Applications." msgstr "" "Pour créer la barre d'outils avec Glade :" #. (itstool) path: item/p #: C/c.page:70 msgid "" "An IRC Client, for example Polari or Empathy. If you run into problems while following the beginner " "tutorials, join #gnome on irc.gnome.org." msgstr "" #. (itstool) path: section/title #: C/c.page:80 msgid "Coding Style" msgstr "" #. (itstool) path: section/p #: C/c.page:82 msgid "" "Most applications in the GNOME project is written in the GNU style of " "indentation. The tutorials and code examples presented are following this " "convention and you are recommended to do so too." msgstr "" #. (itstool) path: section/title #: C/c.page:89 msgid "Executing Code" msgstr "" #. (itstool) path: item/p #: C/c.page:95 msgid "Copy and paste the code into filename.c" msgstr "Copiez et collez le code dans nomdufichier.c" #. (itstool) path: item/screen #: C/c.page:99 #, fuzzy, no-wrap #| msgid "gcc filename.c `pkg-config --cflags --libs gtk+-3.0` -o filename\n" msgid "gcc filename.c `pkg-config --cflags --libs gtk+-3.0` -o filename" msgstr "gcc nomdufichier.c `pkg-config --cflags --libs gtk+-3.0` -o nomdufichier\n" #. (itstool) path: note/p #: C/c.page:105 msgid "" "For more information about compiling GTK+ programs see Compiling GTK+ " "Applications on UNIX." msgstr "" "Pour plus d'informations, consultez Compiler des applications GTK+ sur UNIX." #. (itstool) path: section/title #: C/c.page:117 #, fuzzy #| msgid "Code samples" msgid "Widget Code Examples" msgstr "Exemples de code" #. (itstool) path: info/title #: C/checkbutton.c.page:8 msgctxt "text" msgid "CheckButton (C)" msgstr "CheckButton (C)" #. (itstool) path: info/desc #: C/checkbutton.c.page:18 msgid "Create widgets with a discrete ToggleButton" msgstr "Créer des composants graphiques avec un ToggleButton" #. (itstool) path: page/title #: C/checkbutton.c.page:21 C/checkbutton.js.page:21 C/checkbutton.py.page:22 #: C/checkbutton.vala.page:21 msgid "CheckButton" msgstr "CheckButton" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/checkbutton.c.page:22 C/checkbutton.js.page:22 C/checkbutton.py.page:23 #: C/checkbutton.vala.page:22 #, fuzzy #| msgid "" #| "@@image: 'media/checkbutton.png'; md5=7921a6812c87dd2b3781f4fad241e858" msgctxt "_" msgid "" "external ref='media/checkbutton.png' md5='7921a6812c87dd2b3781f4fad241e858'" msgstr "@@image: 'media/checkbutton.png'; md5=7921a6812c87dd2b3781f4fad241e858" #. (itstool) path: page/p #: C/checkbutton.c.page:23 C/checkbutton.py.page:24 C/checkbutton.vala.page:23 msgid "This CheckButton toggles the title." msgstr "Cette CaseAcocher inverse le titre." #. (itstool) path: page/code #: C/checkbutton.c.page:25 #, no-wrap msgid "" "#include <gtk/gtk.h>\n" "\n" "/* signal handler for \"toggled\" signal of the CheckButton */\n" "static void\n" "toggled_cb (GtkToggleButton *toggle_button,\n" " gpointer user_data)\n" "{\n" " GtkWindow *window = user_data;\n" "\n" " if (gtk_toggle_button_get_active (toggle_button))\n" " gtk_window_set_title (window, \"CheckButton Example\");\n" " else\n" " gtk_window_set_title (window, \"\");\n" "}\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *checkbutton;\n" "\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"CheckButton Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n" "\n" " checkbutton = gtk_check_button_new_with_label (\"Show Title\");\n" " gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), TRUE);\n" " g_signal_connect (GTK_TOGGLE_BUTTON (checkbutton), \"toggled\", G_CALLBACK (toggled_cb), window);\n" " gtk_container_add (GTK_CONTAINER (window), checkbutton);\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.example.checkbutton\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/checkbutton.c.page:30 msgid "" "GtkCheckButton" msgstr "" "GtkCheckButton" #. (itstool) path: info/title #: C/checkbutton.js.page:8 msgctxt "text" msgid "CheckButton (JavaScript)" msgstr "CheckButton (JavaScript)" #. (itstool) path: info/desc #: C/checkbutton.js.page:18 msgid "A box which can be checked or unchecked" msgstr "Une case que l'on peut cocher ou décocher" #. (itstool) path: page/p #: C/checkbutton.js.page:23 msgid "" "This application has a CheckButton. Whether the box is checked dictates " "whether the window's title bar shows anything." msgstr "" "Cette application possède un CheckButton. L'état de la case – cochée ou " "non – indique s'il y a quelque chose d'affiché ou non dans la barre de titre " "de la fenêtre." #. (itstool) path: page/p #: C/checkbutton.js.page:24 msgid "" "A CheckButton sends the \"toggled\" signal when it's checked or unchecked. " "While it's checked, the \"active\" property is true. While it's not, \"active" "\" tests as false." msgstr "" "Un CheckButton envoie le signal d'inversion « toggled » quand il est cochée " "ou décochée. Tant qu'il est coché, la propriété « active » est vraie et tant " "qu'elle ne l'est pas, elle est fausse." #. (itstool) path: section/title #: C/checkbutton.js.page:28 C/comboboxtext.js.page:30 C/combobox.js.page:33 #: C/guitar-tuner.js.page:55 C/hello-world.js.page:53 C/hello-world.py.page:46 #: C/messagedialog.js.page:31 C/radiobutton.js.page:28 C/scale.js.page:28 #: C/spinbutton.js.page:31 C/statusbar.js.page:28 C/switch.js.page:35 #: C/textview.js.page:38 C/togglebutton.js.page:28 #: C/treeview_simple_liststore.js.page:37 C/weatherAppMain.js.page:41 msgid "Libraries to import" msgstr "Bibliothèques à importer" #. (itstool) path: section/code #: C/checkbutton.js.page:29 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "#!/usr/bin/gjs\n" #| "\n" #| "const Gtk = imports.gi.Gtk;\n" #| "const Lang = imports.lang;\n" msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" msgstr "" "\n" "#!/usr/bin/gjs\n" "\n" "const Gtk = imports.gi.Gtk;\n" "const Lang = imports.lang;\n" #. (itstool) path: section/p #: C/checkbutton.js.page:37 C/comboboxtext.js.page:37 C/combobox.js.page:42 #: C/messagedialog.js.page:39 C/radiobutton.js.page:36 C/scale.js.page:36 #: C/spinbutton.js.page:39 C/statusbar.js.page:36 C/switch.js.page:43 #: C/textview.js.page:45 C/togglebutton.js.page:36 #: C/treeview_simple_liststore.js.page:46 msgid "" "These are the libraries we need to import for this application to run. " "Remember that the line which tells GNOME that we're using Gjs always needs " "to go at the start." msgstr "" "Ce sont les bibliothèques que nous devons importer pour faire fonctionner " "cette application. N'oubliez pas que la ligne qui informe GNOME que nous " "allons utiliser Gjs doit toujours se trouver au début." #. (itstool) path: section/title #: C/checkbutton.js.page:41 C/comboboxtext.js.page:41 C/combobox.js.page:46 #: C/messagedialog.js.page:43 C/radiobutton.js.page:40 C/scale.js.page:40 #: C/spinbutton.js.page:43 C/statusbar.js.page:40 C/switch.js.page:47 #: C/textview.js.page:49 C/togglebutton.js.page:40 #: C/treeview_simple_liststore.js.page:50 msgid "Creating the application window" msgstr "Création de la fenêtre de l'application" #. (itstool) path: section/code #: C/checkbutton.js.page:42 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "const WelcomeToTheGrid = new Lang.Class({\n" #| " Name: 'Welcome to the Grid',\n" #| "\n" #| " // Create the application itself\n" #| " _init: function() {\n" #| " this.application = new Gtk.Application();\n" #| "\n" #| " // Connect 'activate' and 'startup' signals to the callback functions\n" #| " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" #| " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" #| " },\n" #| "\n" #| " // Callback function for 'activate' signal presents windows when active\n" #| " _onActivate: function() {\n" #| " this._window.present();\n" #| " },\n" #| "\n" #| " // Callback function for 'startup' signal builds the UI\n" #| " _onStartup: function() {\n" #| " this._buildUI ();\n" #| " },\n" msgid "" "\n" "class CheckButtonExample {\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jscheckbutton',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI ();\n" " }\n" msgstr "" "\n" "const WelcomeToTheGrid = new Lang.Class({\n" " Name: 'Bienvenue devant la Grid',\n" "\n" " // Création de l'application\n" " _init: function() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connection des signaux 'activate' et 'startup' aux fonctions de rappel\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'activate' présente la fenêtre quand elle est activée\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'startup' construise l'interface graphique\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" #. (itstool) path: section/p #: C/checkbutton.js.page:66 msgid "" "All the code for this sample goes in the CheckButtonExample class. The above " "code creates a Gtk.Application for our widgets and window to " "go in." msgstr "" "Tout le code de cet exemple va dans la classe CheckButtonExample. Le code ci-" "dessus crée une Gtk.Application qui contiendra la fenêtre et " "nos composants graphiques." #. (itstool) path: section/code #: C/checkbutton.js.page:67 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 100,\n" " default_width: 300,\n" " border_width: 10,\n" " title: \"CheckButton Example\"});\n" msgstr "" #. (itstool) path: section/p #: C/checkbutton.js.page:80 msgid "" "The _buildUI function is where we put all the code to create the " "application's user interface. The first step is creating a new Gtk.ApplicationWindow to put all our " "widgets into." msgstr "" "Mettons tout le code nécessaire à la création de l'interface utilisateur " "dans la fonction _buildUI. Créons maintenant une nouvelle Gtk.ApplicationWindow pour y mettre " "tous nos composants graphiques." #. (itstool) path: section/title #: C/checkbutton.js.page:84 msgid "Creating the checkbutton" msgstr "Création de la case à cocher" #. (itstool) path: section/code #: C/checkbutton.js.page:85 #, no-wrap msgid "" "\n" " // Create the check button\n" " this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n" " this._window.add (this._button);\n" "\n" " // Have the check button be checked by default\n" " this._button.set_active (true);\n" "\n" " // Connect the button to a function that does something when it's toggled\n" " this._button.connect (\"toggled\", this._toggledCB.bind(this));\n" msgstr "" #. (itstool) path: section/p #: C/checkbutton.js.page:96 msgid "" "This code creates the checkbutton itself. The label next to the checkbutton " "is created by giving the checkbutton the \"label\" property and assigning a " "string value to it. Since this checkbutton toggles whether the window title " "is on or off, and the window title will be on to start with, we want the box " "to be checked by default. Whenever the user checks or unchecks the box, we " "call the _toggledCB function." msgstr "" "Ce code ne génère que la case à cocher. Pour créer l'étiquette à côté de la " "case à cocher, il faut donner à la case à cocher la propriété « label » et " "lui assigner une valeur de chaîne. Comme la case à cocher s'inverse selon " "que le titre de la fenêtre s'affiche ou non (et nous le mettons en position " "affiché pour commencer), il faut que la case soit cochée par défaut. " "Ensuite, à chaque fois que l'utilisateur coche ou décoche la case, nous " "appelons la fonction _toggledCB." #. (itstool) path: section/code #: C/checkbutton.js.page:97 #, no-wrap msgid "" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" msgstr "" #. (itstool) path: section/p #: C/checkbutton.js.page:102 msgid "" "This code finishes up creating the UI, by telling the window to show itself " "and all child widgets (which is just the checkbutton in this case)." msgstr "" "Ce code termine la création de l'interface utilisateur en indiquant à la " "fenêtre de s'afficher toute seule avec tous ses composants graphiques " "enfants (il n'y a que la case à cocher dans cet exemple)." #. (itstool) path: section/title #: C/checkbutton.js.page:106 msgid "Function which handles the checkbutton's toggling" msgstr "Fonction prenant en charge l'inversion de la case à cocher" #. (itstool) path: section/code #: C/checkbutton.js.page:107 #, no-wrap msgid "" "\n" " _toggledCB() {\n" "\n" " // Make the window title appear or disappear when the checkbox is toggled\n" " if (this._button.get_active() == true)\n" " this._window.set_title (\"CheckButton Example\");\n" " else\n" " this._window.set_title (\"\");\n" "\n" " }\n" "\n" "};\n" msgstr "" #. (itstool) path: section/p #: C/checkbutton.js.page:120 msgid "" "If the checkbutton is toggled from on to off, we want the window title to " "disappear. If it's toggled from off to on, we want it to reappear. We can " "tell which way it was toggled by testing to see whether it's active " "(checked) or not afterwards. A simple if / else statement which calls the " "checkbutton's get_active() method will work for this." msgstr "" "Nous voulons que le titre de la fenêtre disparaisse quand la case à cocher " "devient décochée, et qu'elle réapparaisse quand elle devient cochée. Pour " "savoir quel est son état, il nous faut la tester. Nous appellerons pour cela " "la méthode get_active() dans un bloc if ou else." #. (itstool) path: section/code #: C/checkbutton.js.page:121 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new CheckButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/checkbutton.js.page:126 msgid "" "Finally, we create a new instance of the finished CheckButtonExample class, " "and set the application running." msgstr "" "Enfin, nous créons un nouvel exemple de la classe CheckButtonExample et " "démarrons l'application." #. (itstool) path: section/code #: C/checkbutton.js.page:131 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class CheckButtonExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jscheckbutton',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 100,\n" " default_width: 300,\n" " border_width: 10,\n" " title: \"CheckButton Example\"});\n" "\n" " // Create the check button\n" " this._button = new Gtk.CheckButton ({label: \"Show Title\"});\n" " this._window.add (this._button);\n" "\n" " // Have the check button be checked by default\n" " this._button.set_active (true);\n" "\n" " // Connect the button to a function that does something when it's toggled\n" " this._button.connect (\"toggled\", this._toggledCB.bind(this));\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _toggledCB() {\n" "\n" " // Make the window title appear or disappear when the checkbox is toggled\n" " if (this._button.get_active() == true)\n" " this._window.set_title (\"CheckButton Example\");\n" " else\n" " this._window.set_title (\"\");\n" "\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new CheckButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/title #: C/checkbutton.js.page:135 C/comboboxtext.js.page:176 C/combobox.js.page:233 #: C/messagedialog.js.page:189 C/radiobutton.js.page:274 C/scale.js.page:208 #: C/spinbutton.js.page:199 C/statusbar.js.page:221 C/switch.js.page:264 #: C/textview.js.page:248 C/togglebutton.js.page:153 #: C/treeview_simple_liststore.js.page:272 msgid "In-depth documentation" msgstr "Documentation approfondie" #. (itstool) path: item/p #: C/checkbutton.js.page:139 msgid "" "Gtk.CheckButton" msgstr "" "Gtk.CheckButton" #. (itstool) path: info/title #: C/checkbutton.py.page:8 msgctxt "text" msgid "CheckButton (Python)" msgstr "CheckButton (Python)" #. (itstool) path: info/desc #: C/checkbutton.py.page:19 msgid "A toggle button in a window" msgstr "Un bouton de basculement dans une fenêtre" #. (itstool) path: section/code #: C/checkbutton.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"CheckButton Example\", application=app)\n" " self.set_default_size(300, 100)\n" " self.set_border_width(10)\n" "\n" " # a new checkbutton\n" " button = Gtk.CheckButton()\n" " # with a label\n" " button.set_label(\"Show Title\")\n" " # connect the signal \"toggled\" emitted by the checkbutton\n" " # with the callback function toggled_cb\n" " button.connect(\"toggled\", self.toggled_cb)\n" " # by default, the checkbutton is active\n" " button.set_active(True)\n" "\n" " # add the checkbutton to the window\n" " self.add(button)\n" "\n" " # callback function\n" " def toggled_cb(self, button):\n" " # if the togglebutton is active, set the title of the window\n" " # as \"Checkbutton Example\"\n" " if button.get_active():\n" " self.set_title(\"CheckButton Example\")\n" " # else, set it as \"\" (empty string)\n" " else:\n" " self.set_title(\"\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/checkbutton.py.page:36 msgid "Useful methods for a CheckButton widget" msgstr "Méthodes utiles pour un composant graphique CheckButton" #. (itstool) path: section/p #: C/checkbutton.py.page:37 msgid "" "In line 17 the \"toggled\" signal is connected to the callback " "function toggled_cb() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/checkbutton.py.page:47 C/togglebutton.py.page:44 msgid "" "GtkToggleButton" msgstr "" "GtkToggleButton" #. (itstool) path: item/p #: C/checkbutton.py.page:48 msgid "" "GtkCheckButton" msgstr "" "GtkCheckButton" #. (itstool) path: info/title #: C/checkbutton.vala.page:8 msgctxt "text" msgid "CheckButton (Vala)" msgstr "CheckButton (Vala)" #. (itstool) path: info/desc #: C/checkbutton.vala.page:18 #, fuzzy #| msgid "Create widgets with a disrete toggle button" msgid "Create widgets with a discrete toggle button" msgstr "Créer des éléments graphiques avec un bouton d'inversion discret" #. (itstool) path: page/code #: C/checkbutton.vala.page:25 #, no-wrap msgid "" "/* A window in the application */\n" "class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* The constructor */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"CheckButton Example\");\n" "\n" "\t\tthis.set_default_size (300, 100);\n" "\t\tthis.border_width = 10;\n" "\n" "\t\tvar checkbutton = new Gtk.CheckButton.with_label (\"Show Title\");\n" "\n" "\t\t/* Connect the checkbutton to the\n" "\t\t * callback function (aka. signal handler).\n" "\t\t */\n" "\t\tcheckbutton.toggled.connect (this.toggled_cb);\n" "\n" "\t\t/* Add the button to the this window */\n" "\t\tthis.add (checkbutton);\n" "\n" "\t\tcheckbutton.set_active (true);\n" "\t\tcheckbutton.show ();\n" "\t}\n" "\n" "\t/* The signal handler for the 'toggled' signal of the checkbutton. */\n" "\tvoid toggled_cb (Gtk.ToggleButton checkbutton) {\n" "\t\tif (checkbutton.get_active())\n" "\t\t\tthis.set_title (\"CheckButton Example\");\n" "\t\telse\n" "\t\t\tthis.set_title (\"\");\n" "\t}\n" "}\n" "\n" "/* This is the application */\n" "class MyApplication : Gtk.Application {\n" "\n" "\t/* The constructor */\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.checkbutton\");\n" "\t}\n" "\n" "\t/* Override the activate signal of GLib.Application */\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "}\n" "\n" "/* main creates and runs the application */\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/checkbutton.vala.page:30 msgid "" "Gtk." "CheckButton" msgstr "" "Gtk." "CheckButton" #. (itstool) path: info/title #: C/colorbutton.js.page:8 msgctxt "text" msgid "ColorButton (JavaScript)" msgstr "ColorButton (JavaScript)" #. (itstool) path: info/desc #: C/colorbutton.js.page:18 C/colorbutton.py.page:19 C/colorbutton.vala.page:20 msgid "A button to launch a color selection dialog" msgstr "Un bouton pour ouvrir une boîte de dialogue de sélection de couleur" #. (itstool) path: page/title #: C/colorbutton.js.page:21 C/colorbutton.py.page:22 C/colorbutton.vala.page:23 msgid "ColorButton" msgstr "ColorButton" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/colorbutton.js.page:22 C/colorbutton.py.page:23 C/colorbutton.vala.page:24 #, fuzzy #| msgid "" #| "@@image: 'media/colorbutton.png'; md5=904539d26fe367bf99f9a0961cfc9a03" msgctxt "_" msgid "" "external ref='media/colorbutton.png' md5='904539d26fe367bf99f9a0961cfc9a03'" msgstr "@@image: 'media/colorbutton.png'; md5=904539d26fe367bf99f9a0961cfc9a03" #. (itstool) path: page/p #: C/colorbutton.js.page:23 C/colorbutton.py.page:24 msgid "" "This ColorButton launches a color selection dialog and prints in the " "terminal the RGB values of the color selected." msgstr "" "Ce ColorButton ouvre une boîte de dialogue pour sélectionner une couleur et " "affiche dans le terminal les valeurs RVB de la couleur sélectionnée." #. (itstool) path: section/code #: C/colorbutton.js.page:29 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gdk = '3.0';\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gdk = imports.gi.Gdk;\n" "const GObject = imports.gi.GObject;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ColorbuttonExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application ({ application_id: 'org.example.jscolorbutton' });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this.window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this.window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"ColorButton\",\n" " default_width: 150,\n" " default_height: 50,\n" " border_width: 10 });\n" "\n" " this.button = new Gtk.ColorButton();\n" " this.color = new Gdk.RGBA();\n" " this.color.red = 0.0;\n" " this.color.green = 0.0;\n" " this.color.blue = 1.0;\n" " this.color.alpha = 0.5;\n" " this.button.set_rgba(this.color);\n" " this.button.connect(\"color-set\", this.onColorChosen.bind(this));\n" " this.label = new Gtk.Label();\n" " this.label.set_text(\"Click to choose a color\");\n" "\n" " let grid = new Gtk.Grid();\n" " grid.attach(this.button, 0, 0, 2, 1);\n" " grid.attach(this.label, 0, 1, 2, 1);\n" " this.window.add(grid);\n" " this.window.show_all();\n" " }\n" "\n" " onColorChosen() {\n" " let colorName = this.color.to_string();\n" " this.label.set_text(\"You chose the color \" + colorName);\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new ColorbuttonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/colorbutton.js.page:36 msgid "" "GtkColorButton" msgstr "" "GtkColorButton" #. (itstool) path: item/p #: C/colorbutton.js.page:37 C/colorbutton.py.page:45 msgid "" "RGBA Colors" msgstr "" "RGBA Colors" #. (itstool) path: info/title #: C/colorbutton.py.page:8 msgctxt "text" msgid "ColorButton (Python)" msgstr "ColorButton (Python)" #. (itstool) path: section/code #: C/colorbutton.py.page:30 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gdk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"ColorButton\", application=app)\n" " self.set_default_size(150, 50)\n" " self.set_border_width(10)\n" "\n" " # a colorbutton (which opens a dialogue window in\n" " # which we choose a color)\n" " self.button = Gtk.ColorButton()\n" " # with a default color (blue, in this instance)\n" " color = Gdk.RGBA()\n" " color.red = 0.0\n" " color.green = 0.0\n" " color.blue = 1.0\n" " color.alpha = 0.5\n" " self.button.set_rgba(color)\n" "\n" " # choosing a color in the dialogue window emits a signal\n" " self.button.connect(\"color-set\", self.on_color_chosen)\n" "\n" " # a label\n" " label = Gtk.Label()\n" " label.set_text(\"Click to choose a color\")\n" "\n" " # a grid to attach button and label\n" " grid = Gtk.Grid()\n" " grid.attach(self.button, 0, 0, 2, 1)\n" " grid.attach(label, 0, 1, 2, 1)\n" " self.add(grid)\n" "\n" " # if a new color is chosen, we print it as rgb(r,g,b) in the terminal\n" " def on_color_chosen(self, user_data):\n" " print(\"You chose the color: \" + self.button.get_rgba().to_string())\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/colorbutton.py.page:34 msgid "Useful methods for a ColorButton widget" msgstr "Méthode utiles pour un composant graphique ColorButton" #. (itstool) path: section/p #: C/colorbutton.py.page:35 msgid "" "set_color(color), where the color is defined as in " "the example, sets the color of the ColorButton, which by default is black. " "get_color() returns the color." msgstr "" #. (itstool) path: section/p #: C/colorbutton.py.page:36 msgid "" "In line 23 the \"color-set\" signal is connected to the " "callback function on_color_chosen() using widget.connect(signal, callback function). See " " for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/colorbutton.py.page:43 msgid "" "GtkColorButton" msgstr "" "GtkColorButton" #. (itstool) path: item/p #: C/colorbutton.py.page:44 msgid "" "GtkColorChooser" msgstr "" "GtkColorChooser" #. (itstool) path: info/title #: C/colorbutton.vala.page:8 msgctxt "text" msgid "ColorButton (Vala)" msgstr "ColorButton (Vala)" #. (itstool) path: page/p #: C/colorbutton.vala.page:25 msgid "RGB values of the selected color are shown in the label." msgstr "" "Les valeurs RVB de la couleur sélectionnée sont affichées dans cette " "étiquette." #. (itstool) path: page/code #: C/colorbutton.vala.page:27 #, no-wrap msgid "" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\tGtk.Label label;\n" "\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\t\t/* Create the window of this application and show it. */\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\twindow.title = \"ColorButton\";\n" "\t\twindow.set_default_size (150, 50);\n" "\t\twindow.set_border_width (10);\n" "\n" "\t\t/* Create a new ColorButton with default blue. */\n" "\t\tvar blue = Gdk.RGBA ();\n" "\t\tblue.parse (\"blue\");\n" "\t\tvar colorbutton = new Gtk.ColorButton.with_rgba (blue);\n" "\n" "\t\tlabel = new Gtk.Label (\"Click to choose a color\");\n" "\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tgrid.attach (colorbutton, 0, 0, 1, 1);\n" "\t\tgrid.attach_next_to (label, colorbutton, Gtk.PositionType.BOTTOM, 1, 1);\n" "\n" "\t\tcolorbutton.color_set.connect (this.on_color_set);\n" "\n" "\t\twindow.add (grid);\n" "\t\twindow.show_all ();\n" "\t}\n" "\n" "\tvoid on_color_set (Gtk.ColorButton button) {\n" "\t\tvar color = button.get_rgba ();\n" "\t\tlabel.set_text (\"RGBA: \" + color.to_string());\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/colorbutton.vala.page:32 msgid "" "Gtk." "ColorButton" msgstr "" "Gtk." "ColorButton" #. (itstool) path: item/p #: C/colorbutton.vala.page:33 msgid "Gdk.RGBA" msgstr "" "Gdk.RGBA" #. (itstool) path: info/title #: C/comboboxtext.js.page:8 msgctxt "text" msgid "ComboBoxText (JavaScript)" msgstr "ComboBoxText (JavaScript)" #. (itstool) path: info/desc #: C/comboboxtext.js.page:20 msgid "A text-only drop-down menu" msgstr "Un menu déroulant pour texte uniquement" #. (itstool) path: page/title #: C/comboboxtext.js.page:23 msgid "ComboBoxText" msgstr "ComboBoxText" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/comboboxtext.js.page:24 C/combobox.c.page:26 C/combobox.py.page:24 #: C/combobox.vala.page:22 #, fuzzy #| msgid "@@image: 'media/combobox.png'; md5=ab9e91bc1a58fe866cb00dd52159251d" msgctxt "_" msgid "" "external ref='media/combobox.png' md5='ab9e91bc1a58fe866cb00dd52159251d'" msgstr "@@image: 'media/combobox.png'; md5=ab9e91bc1a58fe866cb00dd52159251d" #. (itstool) path: page/p #: C/comboboxtext.js.page:25 msgid "" "A ComboBox is a drop-down menu. The difference between a ComboBox and a ComboBoxText is that a ComboBoxText " "just has basic text options, while a full ComboBox uses a ListStore or " "TreeStore (which are basically spreadsheets) to show things like branching " "options, or pictures to go alongside each choice." msgstr "" "Une ComboBox est un menu déroulant. La différence entre une ComboBox et une ComboBoxText est que cette dernière " "ne possède que des options texte de base, alors que la ComboBox utilise un " "ListStore ou un TreeStore (qui sont en gros des feuilles de calcul) pour " "afficher des éléments arborescents ou des images à côté de chaque choix." #. (itstool) path: note/p #: C/comboboxtext.js.page:26 msgid "" "Unless you need the added features of a full ComboBox, or are comfortable " "working with ListStores and TreeStores, you may find it a lot simpler to use " "a ComboBoxText whenever possible." msgstr "" "À moins que vous n'ayez besoin des fonctions supplémentaires d'une ComboBox, " "ou si vous vous sentez à l'aise dans la manipulation des ListStore et " "TreeStore, il est préférable d'utiliser la simplicité d'une ComboBoxText " "chaque fois que possible." #. (itstool) path: section/code #: C/comboboxtext.js.page:31 C/textview.js.page:39 #, no-wrap msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "const Gtk = imports.gi.Gtk;\n" "const Lang = imports.lang;\n" msgstr "" "\n" "#!/usr/bin/gjs\n" "\n" "const Gtk = imports.gi.Gtk;\n" "const Lang = imports.lang;\n" #. (itstool) path: section/code #: C/comboboxtext.js.page:42 #, no-wrap msgid "" "\n" "const ComboBoxTextExample = new Lang.Class ({\n" " Name: 'ComboBoxText Example',\n" "\n" " // Create the application itself\n" " _init: function () {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jscomboboxtext'});\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate: function () {\n" " this._window.present ();\n" " },\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup: function () {\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/comboboxtext.js.page:66 C/messagedialog.js.page:70 msgid "" "All the code for this sample goes in the MessageDialogExample class. The " "above code creates a Gtk.Application for our widgets and window " "to go in." msgstr "" "Tout le code de cet exemple va dans la classe MessageDialogExample. Le code " "ci-dessus crée une Gtk.Application pour nos composants " "graphiques et la fenêtre qui les contient." #. (itstool) path: section/code #: C/comboboxtext.js.page:67 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function () {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Welcome to GNOME\",\n" " default_width: 200,\n" " border_width: 10 });\n" msgstr "" #. (itstool) path: section/p #: C/comboboxtext.js.page:79 C/combobox.js.page:83 C/messagedialog.js.page:84 #: C/radiobutton.js.page:79 C/scale.js.page:78 C/spinbutton.js.page:81 #: C/switch.js.page:88 C/textview.js.page:88 C/togglebutton.js.page:81 #: C/treeview_simple_liststore.js.page:90 msgid "" "The _buildUI function is where we put all the code to create the " "application's user interface. The first step is creating a new Gtk.ApplicationWindow to put all our " "widgets into." msgstr "" "La fonction _buildUI est l'endroit où nous mettons tout le code nécessaire à " "la création de l'interface utilisateur de l'application. La première étape " "consiste à créer une Gtk." "ApplicationWindow pour y mettre tous nos éléments graphiques." #. (itstool) path: section/title #: C/comboboxtext.js.page:83 msgid "Creating the ComboBoxText" msgstr "Création de la ComboBoxText" #. (itstool) path: section/code #: C/comboboxtext.js.page:84 #, no-wrap msgid "" "\n" " // Create the combobox\n" " this._comboBoxText = new Gtk.ComboBoxText();\n" "\n" " // Populate the combobox\n" " let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n" " for (let i = 0; i < distros.length; i++)\n" " this._comboBoxText.append_text (distros[i]);\n" " this._comboBoxText.set_active (0);\n" "\n" " // Connect the combobox's 'changed' signal to our callback function\n" " this._comboBoxText.connect ('changed', Lang.bind (this, this._onComboChanged));\n" msgstr "" #. (itstool) path: section/p #: C/comboboxtext.js.page:97 msgid "" "After we create the ComboBoxText, we use its append_text method " "to add text strings to it. Like the entries in an array, they each have a " "number for an ID, starting with 0. To make things simpler, you can actually " "create an array for your ComboBoxText entries, then use a for loop to append " "them in order, like we did here." msgstr "" "Après avoir créé la ComboBoxText, utilisons la méthode append_text pour lui ajouter des chaînes de texte. Comme les entrées d'un tableau, " "les chaînes ont chacune un nombre comme identifiant, en commençant par 0. " "Pour simplifier les choses, créons un tableau pour les entrées de la " "ComboBoxText et utilisons une boucle pour les ajouter dans l'ordre, comme " "ici." #. (itstool) path: section/p #: C/comboboxtext.js.page:98 msgid "" "After we populate the ComboBoxText, we set its first entry to be active, so " "that we'll see the \"Select distribution\" line before we click on it. Then " "we connect its changed signal to the _onComboChanged function, " "so that it's called whenever you make a new selection from the drop-down " "menu." msgstr "" "Après avoir garni la ComboBoxText, définissons sa première entrée pour " "qu'elle devienne active, nous pouvons ainsi voir la ligne « Select " "distribution » avant de cliquer dessus. Connectons ensuite son signal " "changed à la fonction _onComboChanged, pour qu'elle soit " "appelée à chaque fois que vous faites une nouvelle sélection dans le menu " "déroulant." #. (itstool) path: note/p #: C/comboboxtext.js.page:99 msgid "" "If you'd like to add an entry to a ComboBoxText, you can use the " "insert_text method. And if you'd rather use a text string as an " "ID for each entry than rely on numbers alone, you can use the append and insert methods. See the links at the bottom of this " "tutorial for the details of how to use them." msgstr "" "Pour ajouter une entrée dans une ComboBoxText, utilisez la méthode " "insert_text. Pour utiliser une chaîne texte plutôt qu'un " "identifiant pour chaque entrée se référant à un nombre seul, utilisez les " "méthodes append et insert. Reportez-vous aux liens " "au bas de ce tutoriel pour de plus amples informations sur leur utilisation." #. (itstool) path: section/code #: C/comboboxtext.js.page:101 #, no-wrap msgid "" "\n" " // Add the combobox to the window\n" " this._window.add (this._comboBoxText);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/comboboxtext.js.page:109 msgid "" "Finally, we add the ComboBoxText to the window, and tell the window to show " "itself and the widget inside it." msgstr "" "Enfin, ajoutons la ComboBoxText à la fenêtre et indiquons à la fenêtre de " "s'afficher avec ses éléments graphiques à l'intérieur." #. (itstool) path: section/title #: C/comboboxtext.js.page:113 C/combobox.js.page:170 C/radiobutton.js.page:181 msgid "Function which handles your selection" msgstr "Fonction prenant en charge votre sélection" #. (itstool) path: section/code #: C/comboboxtext.js.page:114 #, no-wrap msgid "" "\n" " _onComboChanged: function () {\n" "\n" " // The responses we'll use for our messagedialog\n" " let responses = [\"\",\n" " \"Fedora is a community distro sponsored by Red Hat.\",\n" " \"Mint is a popular distro based on Ubuntu.\",\n" " \"SUSE is a name shared by two separate distros.\"];\n" msgstr "" #. (itstool) path: section/p #: C/comboboxtext.js.page:123 msgid "" "We're going to create a pop-up MessageDialog, which shows you a message based on which distro you " "select. First, we create the array of responses to use. Since the first " "string in our ComboBoxText is just the \"Select distribution\" message, we " "make the first string in our array blank." msgstr "" "Nous allons créer une MessageDialog " "qui affiche un message en fonction de la distribution sélectionnée. Créons " "d'abord le tableau des réponses à utiliser. Comme la première chaîne de " "notre ComboBoxText est justement le message « Select distribution », " "laissons celle-ci vide." #. (itstool) path: section/code #: C/comboboxtext.js.page:125 #, no-wrap msgid "" "\n" " // Which combobox item is active?\n" " let activeItem = this._comboBoxText.get_active();\n" "\n" " // No messagedialog if you chose \"Select distribution\"\n" " if (activeItem != 0) {\n" " this._popUp = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " buttons: Gtk.ButtonsType.OK,\n" " message_type: Gtk.MessageType.INFO,\n" " text: responses[activeItem]});\n" "\n" " // Connect the OK button to a handler function\n" " this._popUp.connect ('response', Lang.bind (this, this._onDialogResponse));\n" "\n" " // Show the messagedialog\n" " this._popUp.show();\n" " }\n" "\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/comboboxtext.js.page:147 msgid "" "Before showing a MessageDialog, we first test to make sure you didn't choose " "the \"Select distribution\" message. After that, we set its text to be the " "entry in the array that corresponds to the active entry in our ComboBoxText. " "We do that using the get_active method, which returns the " "number ID of your selection." msgstr "" "Avant d'afficher une MessageDialog, vérifions d'abord que vous n'avez pas " "choisi le message « Select distribution ». Ensuite, définissons son texte " "comme étant l'entrée dans le tableau qui correspond à l'entrée active de " "notre ComboBoxText. Cela se fait avec la méthode get_active, " "qui renvoie l'identifiant numérique de votre sélection." #. (itstool) path: note/p #: C/comboboxtext.js.page:148 msgid "" "Other methods you can use include get_active_id, which returns " "the text ID assigned by append, and get_active_text, which returns the full text of the string you selected." msgstr "" "Il existe d'autres méthodes alternatives : get_active_id, qui " "renvoie l'identifiant texte assigné par append, et " "get_active_text, qui renvoie le texte complet de la chaîne " "sélectionnée." #. (itstool) path: section/p #: C/comboboxtext.js.page:149 C/combobox.js.page:206 msgid "" "After we create the MessageDialog, we connect its response signal to the " "_onDialogResponse function, then tell it to show itself." msgstr "" "Une fois la MessageDialog terminée, connectons son signal de retour à la " "fonction _onDialogResponse et indiquons lui de s'afficher toute seule." #. (itstool) path: section/code #: C/comboboxtext.js.page:151 #, no-wrap msgid "" "\n" " _onDialogResponse: function () {\n" "\n" " this._popUp.destroy ();\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/comboboxtext.js.page:160 C/combobox.js.page:217 msgid "" "Since the only button the MessageDialog has is an OK button, we don't need " "to test its response_id to see which button was clicked. All we do here is " "destroy the popup." msgstr "" "Comme le seul bouton de la MessageDialog est le bouton OK, il n'est pas " "nécessaire de vérifier son response_id pour savoir quel bouton a été cliqué. " "Tout ce que nous faisons ici est détruire le message surgissant." #. (itstool) path: section/code #: C/comboboxtext.js.page:162 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new ComboBoxTextExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/comboboxtext.js.page:167 msgid "" "Finally, we create a new instance of the finished ComboBoxTextExample class, " "and set the application running." msgstr "" "Enfin, nous créons un nouvel exemple de la classe ComboBoxTextExample " "terminée et démarrons l'application." #. (itstool) path: section/code #: C/comboboxtext.js.page:172 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ComboBoxTextExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jscomboboxtext'});\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present ();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Welcome to GNOME\",\n" " default_width: 200,\n" " border_width: 10 });\n" "\n" " // Create the combobox\n" " this._comboBoxText = new Gtk.ComboBoxText();\n" "\n" " // Populate the combobox\n" " let distros = [\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"];\n" " for (let i = 0; i < distros.length; i++)\n" " this._comboBoxText.append_text (distros[i]);\n" " this._comboBoxText.set_active (0);\n" "\n" " // Connect the combobox's 'changed' signal to our callback function\n" " this._comboBoxText.connect ('changed', this._onComboChanged.bind(this));\n" "\n" " // Add the combobox to the window\n" " this._window.add (this._comboBoxText);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _onComboChanged() {\n" "\n" " // The responses we'll use for our messagedialog\n" " let responses = [\"\",\n" " \"Fedora is a community distro sponsored by Red Hat.\",\n" " \"Mint is a popular distro based on Ubuntu.\",\n" " \"SUSE is a name shared by two separate distros.\"];\n" "\n" " // Which combobox item is active?\n" " let activeItem = this._comboBoxText.get_active();\n" "\n" " // No messagedialog if you chose \"Select distribution\"\n" " if (activeItem != 0) {\n" " this._popUp = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " buttons: Gtk.ButtonsType.OK,\n" " message_type: Gtk.MessageType.INFO,\n" " text: responses[activeItem]});\n" "\n" " // Connect the OK button to a handler function\n" " this._popUp.connect ('response', this._onDialogResponse.bind(this));\n" "\n" " // Show the messagedialog\n" " this._popUp.show();\n" " }\n" "\n" " }\n" "\n" " _onDialogResponse() {\n" "\n" " this._popUp.destroy ();\n" "\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new ComboBoxTextExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/comboboxtext.js.page:183 msgid "" "Gtk.ComboBoxText" msgstr "" "Gtk.ComboBoxText" #. (itstool) path: item/p #: C/comboboxtext.js.page:184 C/combobox.js.page:244 C/entry.js.page:33 #: C/messagedialog.js.page:198 msgid "" "Gtk.MessageDialog" msgstr "" "Gtk.MessageDialog" #. (itstool) path: info/title #: C/combobox.c.page:8 msgctxt "text" msgid "ComboBox (C)" msgstr "ComboBox (C)" #. (itstool) path: info/desc #: C/combobox.c.page:22 C/combobox.py.page:20 C/combobox.vala.page:18 #: C/combobox_multicolumn.py.page:19 C/combobox_multicolumn.vala.page:19 msgid "A widget used to choose from a list of items" msgstr "" "Un composant graphique utilisé pour effectuer un choix dans une liste " "d'éléments" #. (itstool) path: page/title #: C/combobox.c.page:25 C/combobox.js.page:25 C/combobox.vala.page:21 msgid "ComboBox" msgstr "ComboBox" #. (itstool) path: page/p #: C/combobox.c.page:27 C/combobox.vala.page:23 msgid "This ComboBox prints to the terminal when you change your selection." msgstr "" "Cette ComboBox s'affiche dans le terminal quand vous modifiez votre " "sélection." #. (itstool) path: page/code #: C/combobox.c.page:29 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "/* This is the callback function. It is a handler function which reacts to the\n" " * signal. In this case, if the row selected is not the first one of the\n" " * ComboBox, we write its value in the terminal for the user.\n" " */\n" "static void\n" "on_changed (GtkComboBox *widget,\n" " gpointer user_data)\n" "{\n" " GtkComboBox *combo_box = widget;\n" "\n" " if (gtk_combo_box_get_active (combo_box) != 0) {\n" " gchar *distro = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT(combo_box));\n" " g_print (\"You chose %s\\n\", distro);\n" " g_free (distro);\n" " }\n" "\n" "}\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " gint i;\n" " GtkWidget *view;\n" " GtkWidget *window;\n" " GtkWidget *combo_box;\n" "\n" " /* Create a window with a title, border width, and a default size. Setting the\n" " * size to -1 means to use the \"natural\" default size.\n" " * (the size request of the window)\n" " */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 200, -1);\n" " gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n" "\n" "\n" " /* Create the combo box and append your string values to it. */\n" " combo_box = gtk_combo_box_text_new ();\n" " const char *distros[] = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n" "\n" " \n" " /* G_N_ELEMENTS is a macro which determines the number of elements in an array.*/ \n" " for (i = 0; i < G_N_ELEMENTS (distros); i++){\n" " \tgtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo_box), distros[i]);\n" " }\n" "\n" " /* Choose to set the first row as the active one by default, from the beginning */\n" " gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);\n" "\n" " /* Connect the signal emitted when a row is selected to the appropriate\n" " * callback function.\n" " */\n" " g_signal_connect (combo_box,\n" " \"changed\",\n" " G_CALLBACK (on_changed),\n" " NULL);\n" "\n" " /* Add it to the window */\n" " gtk_container_add (GTK_CONTAINER (window), combo_box);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/combobox.c.page:37 msgid "" "GtkComboBoxText" msgstr "" "GtkComboBoxText" #. (itstool) path: info/title #: C/combobox.js.page:8 msgctxt "text" msgid "ComboBox (JavaScript)" msgstr "ComboBox (JavaScript)" #. (itstool) path: info/desc #: C/combobox.js.page:22 #, fuzzy #| msgid "A text-only drop-down menu" msgid "A customizable drop-down menu" msgstr "Un menu déroulant texte seul" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/combobox.js.page:26 C/combobox_multicolumn.py.page:23 #: C/combobox_multicolumn.vala.page:23 #, fuzzy #| msgid "" #| "@@image: 'media/combobox_multicolumn.png'; " #| "md5=43f16648fb11ebc7d2f70825ed0f63b3" msgctxt "_" msgid "" "external ref='media/combobox_multicolumn.png' " "md5='43f16648fb11ebc7d2f70825ed0f63b3'" msgstr "" "@@image: 'media/combobox_multicolumn.png'; " "md5=43f16648fb11ebc7d2f70825ed0f63b3" #. (itstool) path: page/p #: C/combobox.js.page:27 msgid "" "A ComboBox is an extremely customizable drop-down menu. It holds the " "equivalent of a TreeView " "widget that appears when you click on it, complete with a ListStore " "(basically a spreadsheet) that says what's in the rows and columns. In this " "example, our ListStore has the name of each option in one column, and the " "name of a stock icon in the other, which the ComboBox then turns into an " "icon for each option." msgstr "" #. (itstool) path: page/p #: C/combobox.js.page:28 msgid "" "You select a whole horizontal row at a time, so the icons aren't treated as " "separate options. They and the text beside them make up each option you can " "click on." msgstr "" #. (itstool) path: note/p #: C/combobox.js.page:29 msgid "" "Working with a ListStore can be time-consuming. If you just want a simple " "text-only drop-down menu, take a look at the ComboBoxText. It doesn't take as much time to set up, and is " "easier to work with." msgstr "" #. (itstool) path: section/code #: C/combobox.js.page:34 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "#!/usr/bin/gjs\n" #| "\n" #| "const Gtk = imports.gi.Gtk;\n" #| "const Lang = imports.lang;\n" msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const GObject = imports.gi.GObject;\n" "const Gtk = imports.gi.Gtk;\n" msgstr "" "\n" "#!/usr/bin/gjs\n" "\n" "const Gtk = imports.gi.Gtk;\n" "const Lang = imports.lang;\n" #. (itstool) path: section/code #: C/combobox.js.page:47 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "const WelcomeToTheGrid = new Lang.Class({\n" #| " Name: 'Welcome to the Grid',\n" #| "\n" #| " // Create the application itself\n" #| " _init: function() {\n" #| " this.application = new Gtk.Application();\n" #| "\n" #| " // Connect 'activate' and 'startup' signals to the callback functions\n" #| " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" #| " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" #| " },\n" #| "\n" #| " // Callback function for 'activate' signal presents windows when active\n" #| " _onActivate: function() {\n" #| " this._window.present();\n" #| " },\n" #| "\n" #| " // Callback function for 'startup' signal builds the UI\n" #| " _onStartup: function() {\n" #| " this._buildUI ();\n" #| " },\n" msgid "" "\n" "class ComboBoxExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jscombobox'});\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present ();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI ();\n" " }\n" msgstr "" "\n" "const WelcomeToTheGrid = new Lang.Class({\n" " Name: 'Bienvenue devant la Grid',\n" "\n" " // Création de l'application\n" " _init: function() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connection des signaux 'activate' et 'startup' aux fonctions de rappel\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'activate' présente la fenêtre quand elle est activée\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'startup' construise l'interface graphique\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" #. (itstool) path: section/p #: C/combobox.js.page:70 #, fuzzy #| msgid "" #| "All the code for this sample goes in the CheckButtonExample class. The " #| "above code creates a Gtk.Application for our widgets " #| "and window to go in." msgid "" "All the code for this sample goes in the ComboBoxExample class. The above " "code creates a Gtk.Application for our widgets and window to " "go in." msgstr "" "Tout le code de cet exemple va dans la classe CheckButtonExample. Le code ci-" "dessus crée une Gtk.Application pour nos éléments graphiques " "et la fenêtre qui les contient." #. (itstool) path: section/code #: C/combobox.js.page:71 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Welcome to GNOME\",\n" " default_width: 200,\n" " border_width: 10 });\n" msgstr "" #. (itstool) path: section/title #: C/combobox.js.page:87 C/treeview_simple_liststore.js.page:94 msgid "Creating the ListStore" msgstr "Création du ListStore" #. (itstool) path: section/code #: C/combobox.js.page:88 #, no-wrap msgid "" "\n" " // Create the liststore to put our options in\n" " this._listStore = new Gtk.ListStore();\n" " this._listStore.set_column_types ([\n" " GObject.TYPE_STRING,\n" " GObject.TYPE_STRING]);\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:95 msgid "" "This ListStore works like the one used in the TreeView example. We're giving it " "two columns, both strings, because one of them will contain the names of " "stock Gtk icons." msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:96 msgid "" "If we'd wanted to use our own icons that weren't already built in to GNOME, " "we'd have needed to use the gtk.gdk.Pixbuf type instead. Here " "are a few other types you can use:" msgstr "" #. (itstool) path: item/p #: C/combobox.js.page:98 C/treeview_simple_liststore.js.page:107 msgid "GObject.TYPE_BOOLEAN -- True or false" msgstr "GObject.TYPE_BOOLEAN -- true ou false" #. (itstool) path: item/p #: C/combobox.js.page:99 C/treeview_simple_liststore.js.page:108 msgid "" "GObject.TYPE_FLOAT -- A floating point number (one with a " "decimal point)" msgstr "GObject.TYPE_FLOAT -- un nombre à virgule flottante" #. (itstool) path: item/p #: C/combobox.js.page:100 C/treeview_simple_liststore.js.page:109 msgid "GObject.TYPE_STRING -- A string of letters and numbers" msgstr "" "GObject.TYPE_STRING -- une chaîne de caractères (lettres ou " "chiffres)" #. (itstool) path: note/p #: C/combobox.js.page:102 C/treeview_simple_liststore.js.page:113 msgid "" "You need to put the line const GObject = imports.gi.GObject; at " "the start of your application's code, like we did in this example, if you " "want to be able to use GObject types." msgstr "" "Pour pouvoir utiliser les types GObject, vous devez placer la ligne " "const GObject = imports.gi.GObject; au début du code de votre " "application, comme nous l'avons fait dans cet exemple." #. (itstool) path: section/code #: C/combobox.js.page:104 #, no-wrap msgid "" "\n" " // This array holds our list of options and their icons\n" " let options = [{ name: \"Select\" },\n" " { name: \"New\", icon: Gtk.STOCK_NEW },\n" " { name: \"Open\", icon: Gtk.STOCK_OPEN },\n" " { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n" "\n" " // Put the options in the liststore\n" " for (let i = 0; i < options.length; i++ ) {\n" " let option = options[i];\n" " let iter = this._listStore.append();\n" " this._listStore.set (iter, [0], [option.name]);\n" " if ('icon' in option)\n" " this._listStore.set (iter, [1], [option.icon]);\n" " }\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:120 msgid "" "Here we create an array of the text options and their corresponding icons, " "then put them into the ListStore in much the same way we would for a TreeView's ListStore. We only " "want to put an icon in if there's actually an icon in the options array, so " "we make sure to check for that first." msgstr "" #. (itstool) path: note/p #: C/combobox.js.page:121 msgid "" "\"Select\" isn't really an option so much as an invitation to click on our " "ComboBox, so it doesn't need an icon." msgstr "" #. (itstool) path: section/title #: C/combobox.js.page:125 msgid "Creating the ComboBox" msgstr "Création de la ComboBox" #. (itstool) path: section/code #: C/combobox.js.page:126 #, no-wrap msgid "" "\n" " // Create the combobox\n" " this._comboBox = new Gtk.ComboBox({\n" " model: this._listStore});\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:131 msgid "" "Each ComboBox has an underlying \"model\" it takes all its options from. You " "can use a TreeStore if you want to have a ComboBox with branching options. " "In this case, we're just using the ListStore we already created." msgstr "" #. (itstool) path: section/code #: C/combobox.js.page:132 #, no-wrap msgid "" "\n" " // Create some cellrenderers for the items in each column\n" " let rendererPixbuf = new Gtk.CellRendererPixbuf();\n" " let rendererText = new Gtk.CellRendererText();\n" "\n" " // Pack the renderers into the combobox in the order we want to see\n" " this._comboBox.pack_start (rendererPixbuf, false);\n" " this._comboBox.pack_start (rendererText, false);\n" "\n" " // Set the renderers to use the information from our liststore\n" " this._comboBox.add_attribute (rendererText, \"text\", 0);\n" " this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:145 msgid "" "This part, again, works much like creating CellRenderers and packing them " "into the columns of a TreeView. The biggest difference is that we don't need to create the ComboBox's " "columns as separate objects. We just pack the CellRenderers into it in the " "order we want them to show up, then tell them to pull information from the " "ListStore (and what type of information we want them to expect)." msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:146 msgid "" "We use a CellRendererText to show the text, and a CellRendererPixbuf to show " "the icons. We can store the names of the icons' stock types as strings, but " "when we display them we need a CellRenderer that's designed for pictures." msgstr "" #. (itstool) path: note/p #: C/combobox.js.page:147 msgid "" "Just like with a TreeView, the \"model\" (in this case a ListStore) and the " "\"view\" (in this case our ComboBox) are separate. Because of that, we can " "do things like have the columns in one order in the ListStore, and then pack " "the CellRenderers that correspond to those columns into the ComboBox in a " "different order. We can even create a TreeView or other widget that shows " "the information in the ListStore in a different way, without it affecting " "our ComboBox." msgstr "" #. (itstool) path: section/code #: C/combobox.js.page:149 #, no-wrap msgid "" "\n" " // Set the first row in the combobox to be active on startup\n" " this._comboBox.set_active (0);\n" "\n" " // Connect the combobox's 'changed' signal to our callback function\n" " this._comboBox.connect ('changed', this._onComboChanged.bind(this));\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:156 msgid "" "We want the \"Select\" text to be the part people see at first, that gets " "them to click on the ComboBox. So we set it to be the active entry. We also " "connect the ComboBox's changed signal to a callback function, " "so that any time someone clicks on a new option something happens. In this " "case, we're just going to show a popup with a little haiku." msgstr "" #. (itstool) path: section/code #: C/combobox.js.page:158 #, no-wrap msgid "" "\n" " // Add the combobox to the window\n" " this._window.add (this._comboBox);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:166 msgid "" "Finally, we add the ComboBox to the window, and tell the window to show " "itself and everything inside it." msgstr "" "Enfin, ajoutons la ComboBox à la fenêtre et indiquons à la fenêtre de " "s'afficher avec ses éléments graphiques à l'intérieur." #. (itstool) path: section/code #: C/combobox.js.page:171 #, no-wrap msgid "" "\n" " _selected() {\n" "\n" " // The silly pseudohaiku that we'll use for our messagedialog\n" " let haiku = [\"\",\n" " \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n" " \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n" " \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:180 msgid "" "We're going to create a pop-up MessageDialog, which shows you a silly haiku based on which distro " "you select. First, we create the array of haiku to use. Since the first " "string in our ComboBox is just the \"Select\" message, we make the first " "string in our array blank." msgstr "" "Nous allons créer une MessageDialog " "qui affiche un message en fonction de la distribution sélectionnée. Créons " "d'abord le tableau des réponses à utiliser. Comme la première chaîne de " "notre ComboBox est justement le message « Select distribution », laissons " "celle-ci vide." #. (itstool) path: section/code #: C/combobox.js.page:182 #, no-wrap msgid "" "\n" " // Which combobox item is active?\n" " let activeItem = this._comboBox.get_active();\n" "\n" " // No messagedialog if you choose \"Select\"\n" " if (activeItem != 0) {\n" " this._popUp = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " buttons: Gtk.ButtonsType.OK,\n" " message_type: Gtk.MessageType.INFO,\n" " text: haiku[activeItem]});\n" "\n" " // Connect the OK button to a handler function\n" " this._popUp.connect ('response', this._onDialogResponse.bind(this));\n" "\n" " // Show the messagedialog\n" " this._popUp.show();\n" " }\n" "\n" " }\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:204 msgid "" "Before showing a MessageDialog, we first test to make sure you didn't choose " "the \"Select\" message. After that, we set its text to be the haiku in the " "array that corresponds to the active entry in our ComboBoxText. We do that " "using the get_active method, which returns the number ID of " "your selection." msgstr "" "Avant d'afficher une MessageDialog, vérifions d'abord que vous n'avez pas " "choisi le message « Select distribution ». Ensuite, définissons son texte " "comme étant l'entrée dans le tableau qui correspond à l'entrée active de " "notre ComboBoxText. Cela se fait avec la méthode get_active, " "qui renvoie l'identifiant numérique de votre sélection." #. (itstool) path: note/p #: C/combobox.js.page:205 #, fuzzy #| msgid "" #| "Other methods you can use include get_active_id, which " #| "returns the text ID assigned by append, and " #| "get_active_text, which returns the full text of the string " #| "you selected." msgid "" "Other methods you can use include get_active_id, which returns " "the text ID assigned by append, and get_active_text, which returns the full text of the string you selected." msgstr "" "Il existe d'autres méthodes alternatives : get_active_id, qui " "renvoie l'identifiant texte assigné par append, et " "get_active_text, qui renvoie le texte complet de la chaîne " "sélectionnée." #. (itstool) path: section/code #: C/combobox.js.page:208 #, no-wrap msgid "" "\n" " _onDialogResponse() {\n" "\n" " this._popUp.destroy ();\n" "\n" " }\n" "\n" "};\n" msgstr "" #. (itstool) path: section/code #: C/combobox.js.page:219 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new ComboBoxExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/combobox.js.page:224 #, fuzzy #| msgid "" #| "Finally, we create a new instance of the finished ComboBoxTextExample " #| "class, and set the application running." msgid "" "Finally, we create a new instance of the finished ComboBoxExample class, and " "set the application running." msgstr "" "Enfin, nous créons un nouvel exemple de la classe ComboBoxTextExample " "terminée et démarrons l'application." #. (itstool) path: section/code #: C/combobox.js.page:229 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const GObject = imports.gi.GObject;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ComboBoxExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jscombobox'});\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present ();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Welcome to GNOME\",\n" " default_width: 200,\n" " border_width: 10 });\n" "\n" " // Create the liststore to put our options in\n" " this._listStore = new Gtk.ListStore();\n" " this._listStore.set_column_types ([\n" " GObject.TYPE_STRING,\n" " GObject.TYPE_STRING]);\n" "\n" " // This array holds our list of options and their icons\n" " let options = [{ name: \"Select\" },\n" " { name: \"New\", icon: Gtk.STOCK_NEW },\n" " { name: \"Open\", icon: Gtk.STOCK_OPEN },\n" " { name: \"Save\", icon: Gtk.STOCK_SAVE }];\n" "\n" " // Put the options in the liststore\n" " for (let i = 0; i < options.length; i++ ) {\n" " let option = options[i];\n" " let iter = this._listStore.append();\n" " this._listStore.set (iter, [0], [option.name]);\n" " if ('icon' in option)\n" " this._listStore.set (iter, [1], [option.icon]);\n" " }\n" "\n" " // Create the combobox\n" " this._comboBox = new Gtk.ComboBox({\n" " model: this._listStore});\n" "\n" " // Create some cellrenderers for the items in each column\n" " let rendererPixbuf = new Gtk.CellRendererPixbuf();\n" " let rendererText = new Gtk.CellRendererText();\n" "\n" " // Pack the renderers into the combobox in the order we want to see\n" " this._comboBox.pack_start (rendererPixbuf, false);\n" " this._comboBox.pack_start (rendererText, false);\n" "\n" " // Set the renderers to use the information from our liststore\n" " this._comboBox.add_attribute (rendererText, \"text\", 0);\n" " this._comboBox.add_attribute (rendererPixbuf, \"stock_id\", 1);\n" "\n" " // Set the first row in the combobox to be active on startup\n" " this._comboBox.set_active (0);\n" "\n" " // Connect the combobox's 'changed' signal to our callback function\n" " this._comboBox.connect ('changed', this._onComboChanged.bind(this));\n" "\n" " // Add the combobox to the window\n" " this._window.add (this._comboBox);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _onComboChanged() {\n" "\n" " // The silly pseudohaiku that we'll use for our messagedialog\n" " let haiku = [\"\",\n" " \"You ask for the new\\nwith no thought for the aged\\nlike fallen leaves trod.\",\n" " \"Like a simple clam\\nrevealing a lustrous pearl\\nit opens for you.\",\n" " \"A moment in time\\na memory on the breeze\\nthese things can't be saved.\"];\n" "\n" " // Which combobox item is active?\n" " let activeItem = this._comboBox.get_active();\n" "\n" " // No messagedialog if you choose \"Select\"\n" " if (activeItem != 0) {\n" " this._popUp = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " buttons: Gtk.ButtonsType.OK,\n" " message_type: Gtk.MessageType.INFO,\n" " text: haiku[activeItem]});\n" "\n" " // Connect the OK button to a handler function\n" " this._popUp.connect ('response', this._onDialogResponse.bind(this));\n" "\n" " // Show the messagedialog\n" " this._popUp.show();\n" " }\n" "\n" " }\n" "\n" " _onDialogResponse() {\n" "\n" " this._popUp.destroy ();\n" "\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new ComboBoxExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/combobox.js.page:240 msgid "" "Gtk.CellRendererPixbuf" msgstr "" "Gtk.CellRendererPixbuf" #. (itstool) path: item/p #: C/combobox.js.page:241 C/treeview_simple_liststore.js.page:279 msgid "" "Gtk.CellRendererText" msgstr "" "Gtk.CellRendererText" #. (itstool) path: item/p #: C/combobox.js.page:242 msgid "" "Gtk.ComboBox" msgstr "" "Gtk.ComboBox" #. (itstool) path: item/p #: C/combobox.js.page:243 C/treeview_simple_liststore.js.page:280 msgid "" "Gtk.ListStore" msgstr "" "Gtk.ListStore" #. (itstool) path: item/p #: C/combobox.js.page:245 C/treeview_simple_liststore.js.page:281 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gtk.TreeIter" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: info/title #: C/combobox.py.page:8 C/combobox_multicolumn.py.page:8 #, fuzzy #| msgid "ComboBox" msgctxt "text" msgid "ComboBox (Python)" msgstr "BoiteCombinee" #. (itstool) path: page/title #: C/combobox.py.page:23 #, fuzzy #| msgid "ComboBox" msgid "ComboBox (one column)" msgstr "BoiteCombinee" #. (itstool) path: page/p #: C/combobox.py.page:25 C/combobox_multicolumn.py.page:24 #: C/combobox_multicolumn.vala.page:24 msgid "This ComboBox prints to the terminal your selection when you change it." msgstr "" "Cette BoiteCombinee affiche votre sélection dans le terminal quand vous la " "modifiez." #. (itstool) path: section/code #: C/combobox.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "distros = [[\"Select distribution\"], [\"Fedora\"], [\"Mint\"], [\"Suse\"]]\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(200, -1)\n" " self.set_border_width(10)\n" "\n" " # the data in the model, of type string\n" " listmodel = Gtk.ListStore(str)\n" " # append the data in the model\n" " for i in range(len(distros)):\n" " listmodel.append(distros[i])\n" "\n" " # a combobox to see the data stored in the model\n" " combobox = Gtk.ComboBox(model=listmodel)\n" "\n" " # a cellrenderer to render the text\n" " cell = Gtk.CellRendererText()\n" "\n" " # pack the cell into the beginning of the combobox, allocating\n" " # no more space than needed\n" " combobox.pack_start(cell, False)\n" " # associate a property (\"text\") of the cellrenderer (cell) to a column (column 0)\n" " # in the model used by the combobox\n" " combobox.add_attribute(cell, \"text\", 0)\n" "\n" " # the first row is the active one by default at the beginning\n" " combobox.set_active(0)\n" "\n" " # connect the signal emitted when a row is selected to the callback\n" " # function\n" " combobox.connect(\"changed\", self.on_changed)\n" "\n" " # add the combobox to the window\n" " self.add(combobox)\n" "\n" " def on_changed(self, combo):\n" " # if the row selected is not the first one, write its value on the\n" " # terminal\n" " if combo.get_active() != 0:\n" " print(\"You chose \" + str(distros[combo.get_active()][0]) + \".\")\n" " return True\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/combobox.py.page:35 C/combobox_multicolumn.py.page:35 msgid "Useful methods for a ComboBox widget" msgstr "Méthode utiles pour un élément graphique BoiteCombinee" #. (itstool) path: section/p #: C/combobox.py.page:36 C/combobox_multicolumn.py.page:36 #, fuzzy #| msgid "" #| "The ComboBox widget is designed around a Model/View/Controller " #| "design. For more information, and for a list of useful methods for " #| "ComboBox and TreeModel, see here." msgid "" "The ComboBox widget is designed around a Model/View/Controller " "design: the Model stores the data; the View gets change " "notifications and displays the content of the model; the Controller, finally, changes the state of the model and notifies the view of these " "changes. For more information and for a list of useful methods for ComboBox " "see ." msgstr "" "La BoiteCombinee est construite autour d'un concept Modèle/Vue/" "Contrôleur. Pour de plus amples informations et pour obtenir une liste " "des méthodes utiles pour une BoiteCombinee et un ModeleArborescent, allez " "ici." #. (itstool) path: section/p #: C/combobox.py.page:37 msgid "" "In line 35 the \"changed\" signal is connected to the callback " "function on_changed() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/combobox.py.page:45 C/combobox_multicolumn.py.page:44 #: C/model-view-controller.py.page:190 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkComboBox" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/combobox.py.page:46 C/combobox_multicolumn.py.page:45 #: C/treeview_advanced_liststore.py.page:46 #: C/treeview_simple_liststore.py.page:47 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkListStore" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/combobox.py.page:47 C/combobox_multicolumn.py.page:46 #: C/treeview_advanced_liststore.py.page:47 #: C/treeview_cellrenderertoggle.py.page:47 #: C/treeview_simple_liststore.py.page:48 C/treeview_treestore.py.page:47 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkCellRendererText" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/combobox.py.page:48 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkCellLayout" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/combobox.py.page:49 C/combobox_multicolumn.py.page:49 #: C/treeview_advanced_liststore.py.page:49 #: C/treeview_simple_liststore.py.page:50 msgid "" "pygobject - Python bindings for GObject Introspection" msgstr "" #. (itstool) path: info/title #: C/combobox.vala.page:8 C/combobox_multicolumn.vala.page:8 #, fuzzy #| msgid "ComboBox" msgctxt "text" msgid "ComboBox (Vala)" msgstr "BoiteCombinee" #. (itstool) path: page/code #: C/combobox.vala.page:25 #, no-wrap msgid "" "/* A window in the application */\n" "class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* An instance array of linux distributions belonging to this window. */\n" "\tstring[] distros = {\"Select distribution\", \"Fedora\", \"Mint\", \"Suse\"};\n" "\n" "\t/* This enum makes the code more readable when we refer to\n" "\t * the column as Column.DISTRO, instead of just 0.\n" "\t */\n" "\tenum Column {\n" "\t\tDISTRO\n" "\t}\n" "\n" "\t/* Constructor */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Welcome to GNOME\");\n" "\n" "\t\tthis.set_default_size (200, -1);\n" "\t\tthis.border_width = 10;\n" "\n" "\t\tGtk.ListStore liststore = new Gtk.ListStore (1, typeof (string));\n" "\n" "\t\tfor (int i = 0; i < distros.length; i++){\n" "\t\t\tGtk.TreeIter iter;\n" "\t\t\tliststore.append (out iter);\n" "\t\t\tliststore.set (iter, Column.DISTRO, distros[i]);\n" "\t\t}\n" "\n" "\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n" "\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n" "\t\tcombobox.pack_start (cell, false);\n" "\n" "\t\tcombobox.set_attributes (cell, \"text\", Column.DISTRO);\n" "\n" "\t\t/* Set the first item in the list to be selected (active). */\n" "\t\tcombobox.set_active (0);\n" "\n" "\t\t/* Connect the 'changed' signal of the combobox\n" "\t\t * to the signal handler (aka. callback function).\n" "\t\t */\n" "\t\tcombobox.changed.connect (this.item_changed);\n" "\n" "\t\t/* Add the combobox to this window */\n" "\t\tthis.add (combobox);\n" "\t\tcombobox.show ();\n" "\t}\n" "\n" "\t/* Signal handler for the 'changed' signal of the combobox. */\n" "\tvoid item_changed (Gtk.ComboBox combo) {\n" "\t\tif (combo.get_active () !=0) {\n" "\t\t\tprint (\"You chose \" + distros [combo.get_active ()] +\"\\n\");\n" "\t\t}\n" "\t}\n" "}\n" "\n" "/* This is the application */\n" "class MyApplication : Gtk.Application {\n" "\n" "\t/* Constructor */\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\t}\n" "\n" "\t/* Override the activate signal of GLib.Application,\n" "\t * which is inherited by Gtk.Application.\n" "\t */\n" "\tprotected override void activate () {\n" "\n" "\t\t/* Create the window of this application\n" "\t\t * and show it.\n" "\t\t */\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application */\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/combobox.vala.page:30 C/treeview_simple_liststore.vala.page:33 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "ListStore" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/combobox.vala.page:31 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "ComboBox" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/combobox.vala.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "CellRendererText" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/combobox.vala.page:33 #, fuzzy #| msgid "" #| "The method set_default_size" msgid "" "set_attributes" msgstr "" "La méthode set_default_size" #. (itstool) path: page/title #: C/combobox_multicolumn.py.page:22 C/combobox_multicolumn.vala.page:22 #, fuzzy #| msgid "ComboBox" msgid "ComboBox (two columns)" msgstr "BoiteCombinee" #. (itstool) path: section/code #: C/combobox_multicolumn.py.page:30 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "actions = [[\"Select\", None],\n" " [\"New\", Gtk.STOCK_NEW],\n" " [\"Open\", Gtk.STOCK_OPEN],\n" " [\"Save\", Gtk.STOCK_SAVE]]\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(200, -1)\n" " self.set_border_width(10)\n" "\n" " # the data in the model, of type string on two columns\n" " listmodel = Gtk.ListStore(str, str)\n" " # append the data\n" " for i in range(len(actions)):\n" " listmodel.append(actions[i])\n" "\n" " # a combobox to see the data stored in the model\n" " combobox = Gtk.ComboBox(model=listmodel)\n" "\n" " # cellrenderers to render the data\n" " renderer_pixbuf = Gtk.CellRendererPixbuf()\n" " renderer_text = Gtk.CellRendererText()\n" "\n" " # we pack the cell into the beginning of the combobox, allocating\n" " # no more space than needed;\n" " # first the image, then the text;\n" " # note that it does not matter in which order they are in the model,\n" " # the visualization is decided by the order of the cellrenderers\n" " combobox.pack_start(renderer_pixbuf, False)\n" " combobox.pack_start(renderer_text, False)\n" "\n" " # associate a property of the cellrenderer to a column in the model\n" " # used by the combobox\n" " combobox.add_attribute(renderer_text, \"text\", 0)\n" " combobox.add_attribute(renderer_pixbuf, \"stock_id\", 1)\n" "\n" " # the first row is the active one at the beginning\n" " combobox.set_active(0)\n" "\n" " # connect the signal emitted when a row is selected to the callback\n" " # function\n" " combobox.connect(\"changed\", self.on_changed)\n" "\n" " # add the combobox to the window\n" " self.add(combobox)\n" "\n" " def on_changed(self, combo):\n" " # if the row selected is not the first one, write on the terminal\n" " # the value of the first column in the model\n" " if combo.get_active() != 0:\n" " print(\"You chose \" + str(actions[combo.get_active()][0]) + \"\\n\")\n" " return True\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/p #: C/combobox_multicolumn.py.page:37 msgid "" "In line 45 the \"changed\" signal is connected to the callback " "function on_changed() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/combobox_multicolumn.py.page:47 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkCellRendererPixbuf" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/combobox_multicolumn.py.page:48 C/combobox_multicolumn.vala.page:42 #: C/toolbar.py.page:58 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Stock Items" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: section/code #: C/combobox_multicolumn.vala.page:30 #, no-wrap msgid "" "class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\tstring[] file = {\"Select\", \"New\", \"Open\", \"Save\"};\n" "\tstring[] stock_item = {\"\",\"gtk-new\", \"gtk-open\", \"gtk-save\"};\n" "\n" "\tenum Column {\n" "\t\tFILE,\n" "\t\tSTOCK_ITEM\t\n" "\t}\n" "\n" "\t/* Constructor */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Welcome to GNOME\");\n" "\n" "\t\tthis.set_default_size (200, -1);\n" "\t\tthis.border_width = 10;\n" "\n" "\t\tGtk.ListStore liststore = new Gtk.ListStore (2, typeof (string), typeof (string));\n" "\n" "\t\tfor (int i = 0; i < file.length; i++){\n" "\t\t\tGtk.TreeIter iter;\n" "\t\t\tliststore.append (out iter);\n" "\t\t\tliststore.set (iter, Column.FILE, file[i]);\n" "\t\t\tliststore.set (iter, Column.STOCK_ITEM, stock_item[i]);\n" "\t\t}\n" "\n" "\t\tGtk.ComboBox combobox = new Gtk.ComboBox.with_model (liststore);\n" "\n" "\t\t/* CellRenderers render the data. */\n" "\t\tGtk.CellRendererText cell = new Gtk.CellRendererText ();\n" "\t\tGtk.CellRendererPixbuf cell_pb = new Gtk.CellRendererPixbuf ();\n" "\t\t\n" " /* we pack the cell into the beginning of the combobox, allocating\n" "\t\t * no more space than needed;\n" "\t\t * first the image, then the text;\n" "\t\t * note that it does not matter in which order they are in the model,\n" "\t\t * the visualization is decided by the order of the cellrenderers\n" "\t\t */\n" "\t\tcombobox.pack_start (cell_pb, false);\n" "\t\tcombobox.pack_start (cell, false);\n" "\n" "\t\t/* associate a property of the cellrenderer to a column in the model\n" "\t\t * used by the combobox\n" "\t\t */\n" "\t\tcombobox.set_attributes (cell_pb, \"stock_id\", Column.STOCK_ITEM);\n" "\t\tcombobox.set_attributes (cell, \"text\", Column.FILE);\n" "\n" "\t\t/* Set the first item in the list to be selected (active). */\n" "\t\tcombobox.set_active (0);\n" "\n" "\t\t/* Connect the 'changed' signal of the combobox\n" "\t\t * to the signal handler (aka. callback function).\n" "\t\t */\n" "\t\tcombobox.changed.connect (this.item_changed);\n" "\n" "\t\t/* Add the combobox to this window */\n" "\t\tthis.add (combobox);\n" "\t\tcombobox.show ();\n" "\t}\n" "\n" "\tvoid item_changed (Gtk.ComboBox combo) {\n" "\t\tif (combo.get_active () !=0) {\n" "\t\t\tprint (\"You chose \" + file [combo.get_active ()] +\"\\n\");\n" "\t\t}\n" "\t}\n" "}\n" "\n" "class MyApplication : Gtk.Application {\n" " protected override void activate () {\n" " new MyWindow (this).show ();\n" " }\n" "}\n" "\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/combobox_multicolumn.vala.page:38 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkComboBox" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/combobox_multicolumn.vala.page:39 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkListStore" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/combobox_multicolumn.vala.page:40 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkCellRendererText" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/combobox_multicolumn.vala.page:41 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkCellRendererPixbuf" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/cpp.page:7 #, fuzzy #| msgid "C++" msgctxt "link" msgid "C++" msgstr "C++" #. (itstool) path: page/title #: C/cpp.page:16 #, fuzzy #| msgid "Tutorials, code samples, and plaform demos in C" msgid "Code samples and platform demos in C++" msgstr "Tutoriels, exemples de code et démonstrations de la plateforme en C" #. (itstool) path: section/title #: C/cpp.page:21 C/js.page:36 C/py.page:39 C/vala.page:30 #, fuzzy #| msgid "A basic \"hello, world\" application" msgid "Examples of applications" msgstr "Une application basique « hello, world »" #. (itstool) path: info/title #: C/dialog.c.page:8 #, fuzzy #| msgid "Dialog" msgctxt "text" msgid "Dialog (C)" msgstr "Boîte de dialogue" #. (itstool) path: info/desc #: C/dialog.c.page:20 C/dialog.js.page:18 C/dialog.py.page:20 #: C/dialog.vala.page:18 msgid "A popup window" msgstr "Une fenêtre surgissante" #. (itstool) path: page/title #: C/dialog.c.page:23 C/dialog.js.page:21 C/dialog.py.page:23 #: C/dialog.vala.page:21 msgid "Dialog" msgstr "Boîte de dialogue" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/dialog.c.page:25 C/dialog.js.page:22 C/dialog.py.page:24 #: C/dialog.vala.page:22 #, fuzzy #| msgid "@@image: 'media/dialog.png'; md5=c90a33386a600e892fe623d4072c8c38" msgctxt "_" msgid "external ref='media/dialog.png' md5='c90a33386a600e892fe623d4072c8c38'" msgstr "@@image: 'media/dialog.png'; md5=c90a33386a600e892fe623d4072c8c38" #. (itstool) path: page/p #: C/dialog.c.page:26 msgid "A dialog window that pops up when a button is pressed." msgstr "Une boîte de dialogue qui surgit quand un bouton est enfoncé." #. (itstool) path: page/code #: C/dialog.c.page:28 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" " \n" "\n" "/*Callback function in which reacts to the \"response\" signal. Be sure to place \n" "it before the function it is called in*/\n" "static void\n" "on_response (GtkDialog *dialog,\n" " gint response_id,\n" " gpointer user_data)\n" "{\n" " /*For demonstration purposes, this will show the int value \n" " of the response type*/\n" " g_print (\"response is %d\\n\", response_id);\n" " \n" " /*This will cause the dialog to be destroyed*/\n" " gtk_widget_destroy (GTK_WIDGET (dialog));\n" "}\n" "\n" "\n" "\n" "/*Callback function in which reacts to the \"clicked\" signal*/\n" "static void\n" "show_dialog (GtkButton *button,\n" " gpointer user_data)\n" "{\n" " GtkWindow *window = user_data;\n" " GtkWidget *dialog;\n" " GtkWidget *content_area;\n" " GtkWidget *label;\n" "\n" " gint response_id;\n" "\n" " /*Create the dialog window. Modal windows prevent interaction with other \n" " windows in the same application*/\n" " dialog = gtk_dialog_new_with_buttons (\"A Gtk+ Dialog\", \n" " window, \n" " GTK_DIALOG_MODAL, \n" " GTK_STOCK_OK, \n" " GTK_RESPONSE_OK, \n" " NULL);\n" "\n" " /*Create a label and attach it to the content area of the dialog*/\n" " content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));\n" " label = gtk_label_new (\"This demonstrates a dialog with a label\");\n" " gtk_container_add (GTK_CONTAINER (content_area), label);\n" "\n" " /*The main purpose of this is to show dialog's child widget, label*/\n" " gtk_widget_show_all (dialog);\n" " \n" " /*Connecting the \"response\" signal from the user to the associated\n" " callback function*/\n" " g_signal_connect (GTK_DIALOG (dialog), \n" " \"response\", \n" " G_CALLBACK (on_response), \n" " NULL);\n" "\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *button;\n" " \n" " /*Create a window with a title and a default size*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"GNOME Button\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n" "\n" " /*Create a button with a label, and add it to the window*/\n" " button = gtk_button_new_with_label (\"Click Me\");\n" " gtk_container_add (GTK_CONTAINER (window), button);\n" " \n" " /*Connecting the clicked signal to the callback*/\n" " g_signal_connect (GTK_BUTTON (button), \n" " \"clicked\", \n" " G_CALLBACK (show_dialog), \n" " GTK_WINDOW (window));\n" " \n" " gtk_widget_show_all (window);\n" "}\n" " \n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" " \n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " \n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/dialog.c.page:36 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkDialog" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/dialog.c.page:37 C/radiobutton.c.page:36 C/spinbutton.c.page:38 #: C/switch.c.page:35 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkLabel" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/dialog.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Dialog (JavaScript)" msgstr "JavaScript" #. (itstool) path: page/p #: C/dialog.js.page:23 msgid "" "A customizable popup window, which has a content area and an action area. " "This example dialog's content area contains a short message, and its action " "area contains a button which dismisses the dialog." msgstr "" "Une fenêtre surgissante personnalisable, avec une zone de contenu et une " "zone d'action. Cet exemple de boîte de dialogue montre que dans la zone de " "contenu il y a un petit message et dans la zone d'action il y a un bouton " "qui ferme la boîte." #. (itstool) path: page/code #: C/dialog.js.page:25 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class DialogExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jsdialog',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Gtk.Dialog Example\",\n" " default_height: 50,\n" " default_width: 250 });\n" "\n" " // Create a button\n" " this._button = new Gtk.Button ({label: \"Click Me\"});\n" " this._window.add (this._button);\n" "\n" " // Bind it to the function that creates the dialog\n" " this._button.connect (\"clicked\", this._createDialog.bind(this));\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _createDialog() {\n" "\n" " // Create the dialog\n" " this._dialog = new Gtk.Dialog ({ transient_for: this._window,\n" " modal: true,\n" " title: \"A Gtk+ dialog\" });\n" "\n" " // Create the dialog's content area, which contains a message\n" " this._contentArea = this._dialog.get_content_area();\n" " this._message = new Gtk.Label ({label: \"This demonstrates a dialog with a label\"});\n" " this._contentArea.add (this._message);\n" "\n" " // Create the dialog's action area, which contains a stock OK button\n" " this._actionArea = this._dialog.get_action_area();\n" " this._OKButton = Gtk.Button.new_from_stock (Gtk.STOCK_OK);\n" " this._actionArea.add (this._OKButton);\n" "\n" " // Connect the button to the function that handles what it does\n" " this._OKButton.connect (\"clicked\", this._OKHandler.bind(this));\n" "\n" " this._dialog.show_all();\n" " }\n" "\n" " _OKHandler(dialog, response_id) {\n" "\n" " // Destroy the dialog\n" " this._dialog.destroy();\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new DialogExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/dialog.js.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Dialog" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/dialog.py.page:8 #, fuzzy #| msgid "AboutDialog" msgctxt "text" msgid "Dialog (Python)" msgstr "AboutDialog" #. (itstool) path: page/p #: C/dialog.py.page:25 msgid "A dialog with the response signal connected to a callback function." msgstr "" "Une boîte de dialogue avec le signal de réponse connecté à une fonction de " "rappel." #. (itstool) path: section/code #: C/dialog.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # construct a window (the parent window)\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"GNOME Button\", application=app)\n" " self.set_default_size(250, 50)\n" "\n" " # a button on the parent window\n" " button = Gtk.Button(\"Click me\")\n" " # connect the signal \"clicked\" of the button with the function\n" " # on_button_click()\n" " button.connect(\"clicked\", self.on_button_click)\n" " # add the button to the window\n" " self.add(button)\n" "\n" " # callback function for the signal \"clicked\" of the button in the parent\n" " # window\n" " def on_button_click(self, widget):\n" " # create a Gtk.Dialog\n" " dialog = Gtk.Dialog()\n" " dialog.set_title(\"A Gtk+ Dialog\")\n" " # The window defined in the constructor (self) is the parent of the dialog.\n" " # Furthermore, the dialog is on top of the parent window\n" " dialog.set_transient_for(self)\n" " # set modal true: no interaction with other windows of the application\n" " dialog.set_modal(True)\n" " # add a button to the dialog window\n" " dialog.add_button(button_text=\"OK\", response_id=Gtk.ResponseType.OK)\n" " # connect the \"response\" signal (the button has been clicked) to the\n" " # function on_response()\n" " dialog.connect(\"response\", self.on_response)\n" "\n" " # get the content area of the dialog, add a label to it\n" " content_area = dialog.get_content_area()\n" " label = Gtk.Label(\"This demonstrates a dialog with a label\")\n" " content_area.add(label)\n" " # show the dialog\n" " dialog.show_all()\n" "\n" " def on_response(self, widget, response_id):\n" " print(\"response_id is\", response_id)\n" " # destroy the widget (the dialog) when the function on_response() is called\n" " # (that is, when the button of the dialog has been clicked)\n" " widget.destroy()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/dialog.py.page:37 msgid "Useful methods for a Dialog widget" msgstr "Méthodes utiles pour un élément graphique BoiteDeDialogue" #. (itstool) path: section/p #: C/dialog.py.page:38 msgid "" "In line 16 the signal \"clicked\" is connected to the callback " "function on_button_click() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/dialog.py.page:40 msgid "" "Instead of set_modal(True) we could have " "set_modal(False) followed by " "set_destroy_with_parent(True) that would destroy the dialog " "window if the main window is closed." msgstr "" "Au lieu de set_modal(True), nous pouvons avoir " "set_modal(False) suivi de la méthode " "set_destroy_with_parent(True), qui détruit la boîte de dialogue " "quand on ferme la fenêtre principale." #. (itstool) path: item/p #: C/dialog.py.page:41 msgid "" "add_button(button_text=\"The Answer\", response_id=42), where " "42 is any integer, is an alternative to " "add_button(button_text=\"text\", response_id=Gtk.ResponseType." "RESPONSE), where RESPONSE could be one of OK, " "CANCEL, CLOSE, YES, NO, APPLY, HELP, which in turn correspond to the " "integers -5, -6,..., -11." msgstr "" "La méthode add_button(button_text=\"The Answer\", response_id=42), où 42 est un nombre entier, est une alternative à la " "fonction add_button(button_text=\"text\", response_id=Gtk.ResponseType." "RESPONSE), où RESPONSE peut être l'une des valeurs " "OK, CANCEL, CLOSE, YES, NO, APPLY, HELP qui correspondent aux " "nombres entiers -5, -6,..., -11." #. (itstool) path: item/p #: C/dialog.py.page:51 C/messagedialog.py.page:60 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkDialog" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/dialog.vala.page:8 #, fuzzy #| msgid "Dialog" msgctxt "text" msgid "Dialog (Vala)" msgstr "Boîte de dialogue" #. (itstool) path: page/p #: C/dialog.vala.page:23 msgid "A dialog with the response signal hooked up to a callback function." msgstr "" "Une boîte de dialogue avec le signal de réponse connecté à une fonction de " "rappel." #. (itstool) path: page/code #: C/dialog.vala.page:25 #, no-wrap msgid "" "\n" "/* A window in the application. */\n" "public class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* Constructor */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"GNOME Button\");\n" "\n" "\t\tthis.window_position = Gtk.WindowPosition.CENTER;\n" "\t\tthis.set_default_size (250,50);\n" "\n" "\t\tvar button = new Gtk.Button.with_label (\"Click Me\");\n" "\n" "\t\t/* Connect the button's \"clicked\" signal to\n" "\t\t * the signal handler (aka. this.callback function).\n" "\t\t */\n" "\t\tbutton.clicked.connect (this.on_button_click);\n" "\n" "\t\t/* Add the button to this window and show it. */\n" "\t\tthis.add (button);\n" "\t\tbutton.show ();\n" "\t}\n" "\n" "\t/* The signal handler for the buttons 'clicked' signal. */\n" "\tvoid on_button_click (Gtk.Button button) {\n" "\t\tvar dialog = new Gtk.Dialog.with_buttons (\"A Gtk+ Dialog\", this,\n" " Gtk.DialogFlags.MODAL,\n" " Gtk.Stock.OK,\n" " Gtk.ResponseType.OK, null);\n" "\n" "\t\tvar content_area = dialog.get_content_area ();\n" "\t\tvar label = new Gtk.Label (\"This demonstrates a dialog with a label\");\n" "\n" "\t\tcontent_area.add (label);\n" "\n" "\t\t/* Connect the 'response' signal of the dialog\n" "\t\t * the signal handler. It is emitted when the dialog's\n" "\t\t * OK button is clicked.\n" "\t\t */\n" "\t\tdialog.response.connect (on_response);\n" "\n" "\t\t/* Show the dialog and all the widgets. */\n" "\t\tdialog.show_all ();\n" "\t}\n" "\n" "\t/* Signal handler for the 'response' signal of the dialog. */\n" " void on_response (Gtk.Dialog dialog, int response_id) {\n" "\n" " /* To see the int value of the ResponseType. This is only\n" "\t\t * for demonstration purposes.*/\n" " print (\"response is %d\\n\", response_id);\n" "\n" "\t\t/* This causes the dialog to be destroyed. */\n" " dialog.destroy ();\n" " }\n" "\n" "}\n" "\n" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\n" "\t/* The constructor of the application. */\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\t}\n" "\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\n" "\t\t/* Create a window for the this application and show it. */\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "}\n" "\n" "/* The main function creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/dialog.vala.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Dialog" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/dialog.vala.page:33 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk.Dialog.with_buttons" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/dialog.vala.page:34 C/label.vala.page:33 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Label" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/dialog.vala.page:35 #, fuzzy #| msgid "" #| "The method set_default_size" msgid "" "get_content_area" msgstr "" "La méthode set_default_size" #. (itstool) path: info/title #: C/entry.c.page:8 #, fuzzy #| msgid "Entry" msgctxt "text" msgid "Entry (C)" msgstr "Entrée" #. (itstool) path: info/desc #: C/entry.c.page:18 C/entry.py.page:25 C/entry.vala.page:18 msgid "A single line text entry field" msgstr "Un champ de saisie de texte sur une ligne" #. (itstool) path: page/title #: C/entry.c.page:21 C/entry.js.page:21 C/entry.py.page:28 C/entry.vala.page:21 msgid "Entry" msgstr "Entrée" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/entry.c.page:23 C/entry.js.page:22 C/entry.py.page:29 C/entry.vala.page:22 #, fuzzy #| msgid "@@image: 'media/entry.png'; md5=8a828cffdcbaa4bad83342e109f28cc8" msgctxt "_" msgid "external ref='media/entry.png' md5='8a828cffdcbaa4bad83342e109f28cc8'" msgstr "@@image: 'media/entry.png'; md5=8a828cffdcbaa4bad83342e109f28cc8" #. (itstool) path: page/p #: C/entry.c.page:24 C/entry.vala.page:23 msgid "This application greets you in the terminal." msgstr "Cette application vous accueille dans le terminal." #. (itstool) path: page/code #: C/entry.c.page:26 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/*This is the callback function. It is a handler function \n" "which reacts to the signal. In this case, it will grab the \n" "text input from the entry box and print out a line to the user.*/\n" "static void\n" "on_activate (GtkEntry *entry,\n" " gpointer user_data)\n" "{\n" " const char *name;\n" " name = gtk_entry_get_text (entry);\n" "\n" " g_print (\"\\nHello %s!\\n\\n\", name);\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *entry_box;\n" "\n" " /*Create a window with a title, a default size, \n" " and a set border width*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"What is your name?\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n" " gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n" "\n" " /*Create a new entry box, and add it to the window*/\n" " entry_box = gtk_entry_new ();\n" " gtk_container_add (GTK_CONTAINER (window), entry_box);\n" "\n" " /*Connecting the activate signal to the callback*/\n" " g_signal_connect (GTK_ENTRY (entry_box), \"activate\", \n" " G_CALLBACK (on_activate), NULL);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: info/title #: C/entry.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Entry (JavaScript)" msgstr "JavaScript" #. (itstool) path: info/desc #: C/entry.js.page:18 msgid "A single-line text entry field" msgstr "Un champ de saisie de texte sur une ligne" #. (itstool) path: page/p #: C/entry.js.page:23 msgid "This application greets you by name through a pop-up window." msgstr "" "Cette application vous accueille par votre nom dans une fenêtre surgissante." #. (itstool) path: page/code #: C/entry.js.page:25 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class EntryExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsentry',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 100,\n" " default_width: 300,\n" " border_width: 10,\n" " title: \"What is your name?\"});\n" "\n" " // Create the text entry box\n" " this.entry = new Gtk.Entry ();\n" " this._window.add(this.entry);\n" "\n" " // Connect the text entry box to a function that responds to what you type in\n" " this.entry.connect(\"activate\", this._hello.bind(this));\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _hello() {\n" "\n" " // Create a popup dialog to greet the person who types in their name\n" " this._greeter = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " text: \"Hello, \" + this.entry.get_text() + \"!\",\n" " message_type: Gtk.MessageType.OTHER,\n" " buttons: Gtk.ButtonsType.OK,\n" " });\n" "\n" " // Show the popup dialog\n" " this._greeter.show();\n" "\n" " // Bind the OK button to the function that closes the popup\n" " this._greeter.connect (\"response\", this._okClicked.bind(this));\n" " }\n" "\n" " _okClicked() {\n" " this._greeter.destroy();\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new EntryExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/entry.js.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Entry" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/entry.py.page:8 #, fuzzy #| msgid "Python" msgctxt "text" msgid "Entry (Python)" msgstr "Python" #. (itstool) path: credit/name #: C/entry.py.page:21 C/label.py.page:22 C/model-view-controller.py.page:16 #: C/properties.py.page:16 C/signals-callbacks.py.page:16 C/strings.py.page:16 #: C/textview.py.page:16 C/toolbar_builder.py.page:28 msgid "Sebastian Pölsterl" msgstr "Sebastian Pölsterl" #. (itstool) path: credit/years #: C/entry.py.page:23 C/index.page:20 C/model-view-controller.py.page:18 #: C/properties.py.page:18 C/signals-callbacks.py.page:18 C/strings.py.page:18 #: C/textview.py.page:18 C/toolbar_builder.py.page:30 msgid "2011" msgstr "2011" #. (itstool) path: page/p #: C/entry.py.page:30 msgid "This application greets you in the terminal with the name you provide." msgstr "" "Cette application vous accueille dans le terminal avec le nom que vous " "fournissez." #. (itstool) path: section/code #: C/entry.py.page:36 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"What is your name?\", application=app)\n" " self.set_default_size(300, 100)\n" " self.set_border_width(10)\n" "\n" " # a single line entry\n" " name_box = Gtk.Entry()\n" " # emits a signal when the Enter key is pressed, connected to the\n" " # callback function cb_activate\n" " name_box.connect(\"activate\", self.cb_activate)\n" "\n" " # add the Gtk.Entry to the window\n" " self.add(name_box)\n" "\n" " # the content of the entry is used to write in the terminal\n" " def cb_activate(self, entry):\n" " # retrieve the content of the widget\n" " name = entry.get_text()\n" " # print it in a nice form in the terminal\n" " print(\"Hello \" + name + \"!\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/entry.py.page:40 msgid "Useful methods for an Entry widget" msgstr "Méthodes utiles pour un élément graphique Entrée" #. (itstool) path: section/p #: C/entry.py.page:41 #, fuzzy #| msgid "" #| "For an explanation of signals and callback functions, see this page. Some of the signals that a Gtk." #| "Entry widget can emit are: \"activate\" (emitted when the " #| "user activates the Entry key); \"backspace\" (emitted when " #| "the user activates the Backspace or Shift-Backspace keys); \"copy-" #| "clipboard\" (Ctrl-c and Ctrl-Insert); \"paste-clipboard\" (Ctrl-v and Shift-Insert); \"delete-from-cursor\" " #| "(Delete, for deleting a character; Ctrl-Delete, for deleting a word); " #| "\"icon-press\" (emitted when the user clicks an activable " #| "icon); \"icon-release\" (emitted on the button release from " #| "a mouse click over an activable icon); \"insert-at-cursor\" " #| "(emitted when the user initiates the insertion of a fixed string at the " #| "cursor); \"move-cursor\" (emitted when the user initiates a " #| "cursor movement); \"populate-popup\" (emitted before showing " #| "the context menu of the entry; it can be used to add items to it)." msgid "" "In line 14 the signal \"activate\" is connected to the callback " "function cb_activate() using widget." "connect(signal, callback function). See for a more detailed explanation. Some of the " "signals that a Gtk.Entry widget can emit are: \"activate\" " "(emitted when the user activates the Entry key); \"backspace\" " "(emitted when the user activates the Backspace or Shift-Backspace keys); " "\"copy-clipboard\" (Ctrl-c and Ctrl-Insert); \"paste-" "clipboard\" (Ctrl-v and Shift-Insert); \"delete-from-cursor\" (Delete, for deleting a character; Ctrl-Delete, for deleting a word); " "\"icon-press\" (emitted when the user clicks an activatable " "icon); \"icon-release\" (emitted on the button release from a " "mouse click over an activatable icon); \"insert-at-cursor\" " "(emitted when the user initiates the insertion of a fixed string at the " "cursor); \"move-cursor\" (emitted when the user initiates a " "cursor movement); \"populate-popup\" (emitted before showing " "the context menu of the entry; it can be used to add items to it)." msgstr "" "Pour de plus amples informations sur les signaux et les fonctions de rappel, " "consultez cette page. Voici " "quelques uns des signaux qu'un élément graphique Gtk.Entry peut émettre : " "\"activate\" (émis quand l'utilisateur appuie sur la touche " "Entrée) ; \"backspace\" (émis quand l'utilisateur appuie soit " "sur la touche Retour arrière, soit sur la combinaison de touches Maj+Retour " "arrière) ; \"copy-clipboard\" (Ctrl+c et Ctrl+Inser) ; " "\"paste-clipboard\" (Ctrl+v et Ctrl+Inser) ; \"delete-from-" "cursor\" (Suppr pour supprimer un caractère et Ctrl+Suppr pour " "supprimer un mot) ; \"icon-press\" (émis quand l'utilisateur " "clique sur une icône activable) ; \"icon-release\" (émis lors " "du relâchement du bouton après un clic de souris sur une icône activable) ; " "\"insert-at-cursor\" (émis quand l'utilisateur commence " "l'insertion du premier caractère d'une chaîne à l'emplacement du curseur) ; " "\"move-cursor\" (émis quand l'utilisateur commence à déplacer " "le curseur) ; \"populate-popup \" (émis avant d'afficher le " "menu contextuel de l'entrée ; il peut servir à y ajouter des éléments)." #. (itstool) path: item/p #: C/entry.py.page:43 msgid "" "get_buffer() and set_buffer(buffer), where " "buffer is a Gtk.EntryBuffer object, can be used to get and set " "the buffer for the entry." msgstr "" "Les méthodes get_buffer() et set_buffer(tampon), " "où tampon est un objet Gtk.EntryBuffer, peuvent être utilisées " "pour obtenir et définir le tampon de l'entrée." #. (itstool) path: item/p #: C/entry.py.page:44 msgid "" "get_text() and set_text(\"some text\") can be used " "to get and set the content for the entry." msgstr "" "Les fonctions get_text() et set_text(\"some text\") peuvent être utilisées pour obtenir et définir le contenu de l'entrée." #. (itstool) path: item/p #: C/entry.py.page:45 msgid "get_text_length() is self-explanatory." msgstr "La méthode get_text_length() parle d'elle-même." #. (itstool) path: item/p #: C/entry.py.page:46 msgid "" "get_text_area() gets the area where the entry's text is drawn." msgstr "" "La méthode get_text_area() obtient la position où le texte de " "l'entrée est dessiné." #. (itstool) path: item/p #: C/entry.py.page:47 #, fuzzy #| msgid "" #| "If we set set_visibility(False) the characters in the entry " #| "are displayed as the invisible char. This is the best available in the " #| "current font, but it can be changed with set_invisible_char(ch), where ch is a Unicode charcater. The latter method is " #| "reversed by unset_invisbile_char()." msgid "" "If we set set_visibility(False) the characters in the entry are " "displayed as the invisible char. This is the best available in the current " "font, but it can be changed with set_invisible_char(ch), where " "ch is a Unicode character. The latter method is reversed by " "unset_invisible_char()." msgstr "" "Si nous définissons la méthode set_visibility(False), les " "caractères de l'entrée sont affichés en tant que caractères invisibles. " "C'est la meilleur police disponible dans le type actuel, mais peut être " "modifié à l'aide de set_invisible_char(ch), où ch " "est un caractère Unicode. Nous pouvons inverser cette denière fonction avec " "unset_invisible_char()." #. (itstool) path: item/p #: C/entry.py.page:48 msgid "" "set_max_length(int), where int is an integer, " "truncates every entry longer than int to have the desired " "maximum length." msgstr "" "La méthode set_max_length(int), où int est un " "nombre entier, coupe chaque entrée plus longue que int afin " "d'obtenir la longueur maximum désirée." #. (itstool) path: item/p #: C/entry.py.page:49 msgid "" "By default, if you press the Entry key the Gtk.Entry emits the signal " "\"activate\". If you would like to activate the default widget for " "the window (set using set_default(widget) on the window), then " "use set_activates_default(True)." msgstr "" "Par défaut, si vous appuyez sur la touche Entrée, Gtk.Entry émet le signal " "\"activate\". Si vous préférez activer l'élément graphique par " "défaut de la fenêtre (défini par la méthode set_default(widget) " "pour la fenêtre), utilisez alors set_activates_default(True)." #. (itstool) path: item/p #: C/entry.py.page:50 msgid "To set a frame around the entry: set_has_frame(True)." msgstr "" "Pour définir un cadre autour de l'entrée, utilisez la méthode " "set_has_frame(True)." #. (itstool) path: item/p #: C/entry.py.page:51 msgid "" "set_placeholder_text(\"some text\") sets the text to be " "displayed in the entry when it is empty and unfocused." msgstr "" "La méthode set_placeholder_text(« texte ») définit le texte " "pour qu'il s'affiche dans l'entrée quand il est vide et inactif." #. (itstool) path: item/p #: C/entry.py.page:52 msgid "" "set_overwrite_mode(True) and set_overwrite_mode(False) are self-explanatory." msgstr "" "Les méthodes set_overwrite_mode(True) et " "set_overwrite_mode(False) parlent d'elles-mêmes." #. (itstool) path: item/p #: C/entry.py.page:53 msgid "" "If we have set_editable(False) the user cannot edit the text in " "the widget." msgstr "" "La méthode set_editable(False) n'autorise pas l'utilisateur à " "modifier le texte dans l'élément graphique." #. (itstool) path: item/p #: C/entry.py.page:54 #, fuzzy #| msgid "" #| "set_completion(completion), where completion is " #| "a Gtk.EntryCompletion, sets completion - or disables " #| "it if completion is None." msgid "" "set_completion(completion), where completion is a " "Gtk.EntryCompletion, sets completion - or disables it " "if completion is None." msgstr "" "La méthode set_completion(completion), où completion est une Gtk.EntryCompletion, active la " "complétion - ou la désactive si completion est None." #. (itstool) path: item/p #: C/entry.py.page:55 msgid "" "An Entry widget can display progress or activity information behind the " "text. We use set_progress_fraction(fraction), where " "fraction is a float between 0.0 and " "1.0 inclusive, to fill in the given fraction of the bar. We use " "set_progress_pulse_step() to set the fraction of total entry " "width to move the progress bouncing block for each call to " "progress_pulse(). The latter method indicates that some " "progress is made, and causes the progress indicator of the entry to enter " "\"activity mode\", where a block bounces back and forth. Each call to " "progress_pulse() causes the block to move by a little bit (the " "amount of movement per pulse is determined, as said before, by " "set_progress_pulse_step())." msgstr "" "Un élément graphique Entry peut afficher la progression ou les informations " "d'activité derrière le texte. La méthode " "set_progress_fraction(fraction), où fraction est " "un nombre flottant float compris entre 0.0 et " "1.0 inclus, sert à remplir la fraction définie de la barre de " "progression. La méthode set_progress_pulse_step() définit la " "fraction de la largeur totale de l'entrée qui va se remplir d'un bloc à " "chaque appel à progress_pulse(). Cette dernière fonction " "indique qu'une progression est en cours et passe l'indicateur de progression " "sur \"activity mode\", ce qui fait avancer ou reculer un bloc. Chaque appel " "à progress_pulse() fait un petit peu bouger le bloc " "(l'amplitude du mouvement par pulsation est définie par " "set_progress_pulse_step()), comme expliqué précédemment." #. (itstool) path: item/p #: C/entry.py.page:56 msgid "" "An Entry widget can also show icons. These icons can be activatable by " "clicking, can be set up as drag source and can have tooltips. To add an " "icon, use set_icon_from_stock(icon_position, stock_id), or one " "of set_icon_from_pixbuf(icon_position, pixbuf), " "set_icon_from_icon_name(icon_position, icon_name), where " "icon_position is one of Gtk.EntryIconPosition.PRIMARY (to set the icon at the beginning of the entry) Gtk." "EntryIconPosition.SECONDARY (to set the icon at the end of the " "entry). To set a tooltip on an icon, use " "set_icon_tooltip_text(\"tooltip text\") or " "set_icon_tooltip_markup(\"tooltip text in Pango markup language\")." msgstr "" "Un élément graphique Entry peut aussi afficher des icônes. Ces icônes sont " "activables d'un clic de souris, ou peuvent être définies comme étant la " "source d'un élément glissable et comporter des infobulles. Pour ajouter une " "icône de la collection, utilisez la méthode " "set_icon_from_stock(icon_position, stock_id), ou bien l'une des " "méthodes suivantes : set_icon_from_pixbuf(icon_position, pixbuf) ; set_icon_from_icon_name(icon_position, icon_name), où " "icon_position est l'une des deux positions Gtk." "EntryIconPosition.PRIMARY (pour positionner l'icône au début de " "l'entrée) ou Gtk.EntryIconPosition.SECONDARY (pour positionner " "l'icône à la fin de l'entrée). Pour ajouter une infobulle à une icône, " "utiliser l'une des deux fonctions set_icon_tooltip_text(\"tooltip text" "\") ou set_icon_tooltip_markup(\"tooltip text in Pango markup " "language\")." #. (itstool) path: item/p #: C/entry.py.page:64 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkEntry" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/entry.vala.page:8 #, fuzzy #| msgid "Entry" msgctxt "text" msgid "Entry (Vala)" msgstr "Entrée" #. (itstool) path: page/code #: C/entry.vala.page:25 #, no-wrap msgid "" "/* A window in the application. */\n" "class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* Constructor */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"What is your name?\");\n" "\n" "\t\tvar name_box = new Gtk.Entry ();\n" "\n" "\t\t/* Connect to the signal handler. */\n" "\t\tname_box.activate.connect (this.on_activate);\n" "\t\tname_box.show ();\n" "\n" "\t\tthis.set_default_size (300, 100);\n" "\t\tthis.border_width = 10;\n" "\n" "\t\t/* Add the name_box to this window. */\n" "\t\tthis.add (name_box);\n" "\t}\n" "\n" "\t/* Signal handler (aka. callback function) for the 'activate'\n" "\t * signal of a Gtk.Entry.\n" "\t */\n" "\tvoid on_activate (Gtk.Entry entry) {\n" "\t\tname = entry.get_text ();\n" "\t\tprint (\"\\nHello \" + name + \"!\\n\\n\");\n" "\t}\n" "}\n" "\n" "/* This is the application. */\n" "class MyApplication : Gtk.Application {\n" "\n" "\t/* Constructor for the application. */\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\t}\n" "\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\n" "\t\t/* Create a new window for this application\n" "\t\t * and show it. */\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "}\n" "\n" "/* The main function creates and runs the application. */\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/entry.vala.page:30 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Entry" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/filechooserdialog.py.page:8 #, fuzzy #| msgid "FileChooserDialog" msgctxt "text" msgid "FileChooserDialog (Python)" msgstr "Boîte de dialogue FileChooser" #. (itstool) path: info/desc #: C/filechooserdialog.py.page:22 #, fuzzy #| msgid "A dialog suitable for \"Open\" and \"Save\" commands." msgid "A dialog suitable for \"Open\" and \"Save\" commands" msgstr "Une boîte de dialogue qui convient aux commandes « open » et « save »." #. (itstool) path: page/title #: C/filechooserdialog.py.page:25 C/filechooserdialog.vala.page:24 msgid "FileChooserDialog" msgstr "Boîte de dialogue FileChooser" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/filechooserdialog.py.page:26 #, fuzzy #| msgid "@@image: 'media/image.png'; md5=9416aa74d9d6a857783f7a36338e7a02" msgctxt "_" msgid "" "external ref='media/filechooserdialog_save.png' " "md5='3a7a3b71b9d3a36066857843b68ff27f'" msgstr "@@image: 'media/image.png'; md5=9416aa74d9d6a857783f7a36338e7a02" #. (itstool) path: page/p #: C/filechooserdialog.py.page:27 msgid "" "This FileChooserDialog saves a text document, which can be opened or written " "from scratch in a TextView (see below)." msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/filechooserdialog.py.page:28 #, fuzzy #| msgid "" #| "@@image: 'media/fontchooserwidget.png'; " #| "md5=9161245e307b432ae1313e9a9941edae" msgctxt "_" msgid "" "external ref='media/filechooserdialog_menu.png' " "md5='8a75f04127a70eba0ed68a9eb1d3bbca'" msgstr "" "@@image: 'media/fontchooserwidget.png'; md5=9161245e307b432ae1313e9a9941edae" #. (itstool) path: page/p #: C/filechooserdialog.py.page:29 msgid "It is also possible to call a FileChooserDialog to open a new document." msgstr "" #. (itstool) path: section/title #: C/filechooserdialog.py.page:34 #, fuzzy #| msgid "Code used to generate this example" msgid "Steps to recreate the example" msgstr "Code utilisé pour générer cet exemple" #. (itstool) path: item/p #: C/filechooserdialog.py.page:36 msgid "" "Create a file .ui to describe an app-menu with items \"New\", \"Open\", " "\"Save\", \"Save as\", and \"Quit\". This can be done with Glade or in a " "text editor. See " msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:37 msgid "" "Create a Python program for a Gtk.TextView with a Gtk.Buffer self." "buffer, and a self.file which will be a Gio.File and we " "set initially as None." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:38 msgid "" "In this program, create also the actions corresponding to the items in the " "app-menu, connect them to callback functions, and import the menu in the " "do_startup() method with a Gtk.Builder." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:39 msgid "" "\"New\" and \"Quit\" actions and callback functions are quite " "straightforward, see . See for a more detailed explanation of signals and callback " "functions." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:40 msgid "" "\"Open\" callback should create and open a Gtk.FileChooserDialog for \"Open" "\", connected with another callback function for each of the two \"Open\" " "and \"Cancel\" buttons of the FileChooserDialog." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:41 msgid "" "\"Save as\" works basically as \"Open\", but the callback function of the " "\"Save\" button depends on a more complex method save_to_file()." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:42 msgid "" "\"Save\" can be reduced to the case where the file is None, " "that is the case where self.file is a new file, which in turn " "is the case \"Save as\"; and to the case where the file is not None, which in turn is reduced to save_to_file()." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:43 msgid "" "Finally, the method save_to_file(): see , " "lines 146 - 175." msgstr "" #. (itstool) path: section/title #: C/filechooserdialog.py.page:48 #, fuzzy #| msgid "XML UI file which creates the app-menu" msgid "XML file which creates the app-menu" msgstr "Fichier XML interface utilisateur créant l'app-menu" #. (itstool) path: section/code #: C/filechooserdialog.py.page:49 C/filechooserdialog.vala.page:30 #, no-wrap msgid "" "<?xml version=\"1.0\"?>\n" "<interface>\n" " <menu id=\"appmenu\">\n" " <section>\n" " <item>\n" " <attribute name=\"label\">New</attribute>\n" " <attribute name=\"action\">win.new</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Open</attribute>\n" " <attribute name=\"action\">win.open</attribute>\n" " </item>\n" " </section>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">Save</attribute>\n" " <attribute name=\"action\">win.save</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Save As...</attribute>\n" " <attribute name=\"action\">win.save-as</attribute>\n" " </item>\n" " </section>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">Quit</attribute>\n" " <attribute name=\"action\">app.quit</attribute>\n" " </item>\n" " </section>\n" " </menu>\n" "</interface>\n" msgstr "" #. (itstool) path: section/code #: C/filechooserdialog.py.page:54 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gdk\n" "from gi.repository import Gio\n" "from gi.repository import GObject\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(\n" " self, title=\"FileChooserDialog Example\", application=app)\n" " self.set_default_size(400, 400)\n" "\n" " # the actions for the window menu, connected to the callback functions\n" " new_action = Gio.SimpleAction.new(\"new\", None)\n" " new_action.connect(\"activate\", self.new_callback)\n" " self.add_action(new_action)\n" "\n" " open_action = Gio.SimpleAction.new(\"open\", None)\n" " open_action.connect(\"activate\", self.open_callback)\n" " self.add_action(open_action)\n" "\n" " save_action = Gio.SimpleAction.new(\"save\", None)\n" " save_action.connect(\"activate\", self.save_callback)\n" " self.add_action(save_action)\n" "\n" " save_as_action = Gio.SimpleAction.new(\"save-as\", None)\n" " save_as_action.connect(\"activate\", self.save_as_callback)\n" " self.add_action(save_as_action)\n" "\n" " # the file\n" " self.file = None\n" "\n" " # the textview with the buffer\n" " self.buffer = Gtk.TextBuffer()\n" " textview = Gtk.TextView(buffer=self.buffer)\n" " textview.set_wrap_mode(Gtk.WrapMode.WORD)\n" "\n" " # a scrolled window for the textview\n" " self.scrolled_window = Gtk.ScrolledWindow()\n" " self.scrolled_window.set_policy(\n" " Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n" " self.scrolled_window.add(textview)\n" " self.scrolled_window.set_border_width(5)\n" "\n" " # add the scrolled window to the window\n" " self.add(self.scrolled_window)\n" "\n" " # callback for new\n" " def new_callback(self, action, parameter):\n" " self.buffer.set_text(\"\")\n" " print(\"New file created\")\n" "\n" " # callback for open\n" " def open_callback(self, action, parameter):\n" " # create a filechooserdialog to open:\n" " # the arguments are: title of the window, parent_window, action,\n" " # (buttons, response)\n" " open_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n" " Gtk.FileChooserAction.OPEN,\n" " (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n" " Gtk.STOCK_OPEN, Gtk.ResponseType.ACCEPT))\n" "\n" " # not only local files can be selected in the file selector\n" " open_dialog.set_local_only(False)\n" " # dialog always on top of the textview window\n" " open_dialog.set_modal(True)\n" " # connect the dialog with the callback function open_response_cb()\n" " open_dialog.connect(\"response\", self.open_response_cb)\n" " # show the dialog\n" " open_dialog.show()\n" "\n" " # callback function for the dialog open_dialog\n" " def open_response_cb(self, dialog, response_id):\n" " open_dialog = dialog\n" " # if response is \"ACCEPT\" (the button \"Open\" has been clicked)\n" " if response_id == Gtk.ResponseType.ACCEPT:\n" " # self.file is the file that we get from the FileChooserDialog\n" " self.file = open_dialog.get_file()\n" " # an empty string (provisionally)\n" " content = \"\"\n" " try:\n" " # load the content of the file into memory:\n" " # success is a boolean depending on the success of the operation\n" " # content is self-explanatory\n" " # etags is an entity tag (can be used to quickly determine if the\n" " # file has been modified from the version on the file system)\n" " [success, content, etags] = self.file.load_contents(None)\n" " except GObject.GError as e:\n" " print(\"Error: \" + e.message)\n" " # set the content as the text into the buffer\n" " self.buffer.set_text(content, len(content))\n" " print(\"opened: \" + open_dialog.get_filename())\n" " # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n" " elif response_id == Gtk.ResponseType.CANCEL:\n" " print(\"cancelled: FileChooserAction.OPEN\")\n" " # destroy the FileChooserDialog\n" " dialog.destroy()\n" "\n" " # callback function for save_as\n" " def save_as_callback(self, action, parameter):\n" " # create a filechooserdialog to save:\n" " # the arguments are: title of the window, parent_window, action,\n" " # (buttons, response)\n" " save_dialog = Gtk.FileChooserDialog(\"Pick a file\", self,\n" " Gtk.FileChooserAction.SAVE,\n" " (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,\n" " Gtk.STOCK_SAVE, Gtk.ResponseType.ACCEPT))\n" " # the dialog will present a confirmation dialog if the user types a file name that\n" " # already exists\n" " save_dialog.set_do_overwrite_confirmation(True)\n" " # dialog always on top of the textview window\n" " save_dialog.set_modal(True)\n" " # if self.file has already been saved\n" " if self.file is not None:\n" " try:\n" " # set self.file as the current filename for the file chooser\n" " save_dialog.set_file(self.file)\n" " except GObject.GError as e:\n" " print(\"Error: \" + e.message)\n" " # connect the dialog to the callback function save_response_cb()\n" " save_dialog.connect(\"response\", self.save_response_cb)\n" " # show the dialog\n" " save_dialog.show()\n" "\n" " # callback function for the dialog save_dialog\n" " def save_response_cb(self, dialog, response_id):\n" " save_dialog = dialog\n" " # if response is \"ACCEPT\" (the button \"Save\" has been clicked)\n" " if response_id == Gtk.ResponseType.ACCEPT:\n" " # self.file is the currently selected file\n" " self.file = save_dialog.get_file()\n" " # save to file (see below)\n" " self.save_to_file()\n" " # if response is \"CANCEL\" (the button \"Cancel\" has been clicked)\n" " elif response_id == Gtk.ResponseType.CANCEL:\n" " print(\"cancelled: FileChooserAction.SAVE\")\n" " # destroy the FileChooserDialog\n" " dialog.destroy()\n" "\n" " # callback function for save\n" " def save_callback(self, action, parameter):\n" " # if self.file is not already there\n" " if self.file is not None:\n" " self.save_to_file()\n" " # self.file is a new file\n" " else:\n" " # use save_as\n" " self.save_as_callback(action, parameter)\n" "\n" " # save_to_file\n" " def save_to_file(self):\n" " # get the content of the buffer, without hidden characters\n" " [start, end] = self.buffer.get_bounds()\n" " current_contents = self.buffer.get_text(start, end, False)\n" " # if there is some content\n" " if current_contents != \"\":\n" " # set the content as content of self.file.\n" " # arguments: contents, etags, make_backup, flags, GError\n" " try:\n" " self.file.replace_contents(current_contents,\n" " None,\n" " False,\n" " Gio.FileCreateFlags.NONE,\n" " None)\n" " print(\"saved: \" + self.file.get_path())\n" " except GObject.GError as e:\n" " print(\"Error: \" + e.message)\n" " # if the contents are empty\n" " else:\n" " # create (if the file does not exist) or overwrite the file in readwrite mode.\n" " # arguments: etags, make_backup, flags, GError\n" " try:\n" " self.file.replace_readwrite(None,\n" " False,\n" " Gio.FileCreateFlags.NONE,\n" " None)\n" " print(\"saved: \" + self.file.get_path())\n" " except GObject.GError as e:\n" " print(\"Error: \" + e.message)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" " # app action quit, connected to the callback function\n" " quit_action = Gio.SimpleAction.new(\"quit\", None)\n" " quit_action.connect(\"activate\", self.quit_callback)\n" " self.add_action(quit_action)\n" "\n" " # get the menu from the ui file with a builder\n" " builder = Gtk.Builder()\n" " try:\n" " builder.add_from_file(\"filechooserdialog.ui\")\n" " except:\n" " print(\"file not found\")\n" " sys.exit()\n" " menu = builder.get_object(\"appmenu\")\n" " self.set_app_menu(menu)\n" "\n" " # callback function for quit\n" " def quit_callback(self, action, parameter):\n" " self.quit()\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/filechooserdialog.py.page:58 #, fuzzy #| msgid "Useful methods for a FontChooserWidget" msgid "Useful methods for a FileChooserDialog" msgstr "Méthodes utiles pour un élément graphique GtkFontChooser" #. (itstool) path: section/p #: C/filechooserdialog.py.page:59 msgid "" "Note that the action of the FileChooserDialog can be one of the following: " "Gtk.FileChooserAction.OPEN (the file chooser will only let the " "user pick an existing file) Gtk.FileChooserAction.SAVE (the " "file chooser will let the user pick an existing file, or type in a new " "filename), Gtk.FileChooserAction.SELECT_FOLDER (the file " "chooser will let the user pick an existing folder), Gtk." "FileChooserAction.CREATE_FOLDER (the file chooser will let the user " "name an existing or new folder)." msgstr "" #. (itstool) path: section/p #: C/filechooserdialog.py.page:60 msgid "Besides the methods used in the , we have:" msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:62 msgid "" "set_show_hidden(True) is used to display hidden files and " "folders." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:63 msgid "" "set_select_multiple(True) sets that multiple files can be " "selected. This is only relevant if the mode is Gtk.FileChooserAction." "OPEN or Gtk.FileChooserAction.SELECT_FOLDER." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:64 msgid "" "In a \"Save as\" dialog, set_current_name(current_name) sets " "current_name in the file selector, as if entered by the user; " "current_name can be something like Untitled.txt. This " "method should not be used except in a \"Save as\" dialog." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:65 msgid "" "The default current folder is \"recent items\". To set another folder use " "set_current_folder_uri(uri); but note you should use this " "method and cause the file chooser to show a specific folder only when you " "are doing a \"Save as\" command and you already have a file saved somewhere." msgstr "" #. (itstool) path: item/p #: C/filechooserdialog.py.page:73 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkFileChooserDialog" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/filechooserdialog.py.page:74 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkFileChooser" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/filechooserdialog.py.page:75 C/image.c.page:34 C/label.c.page:38 #: C/menubar.c.page:38 C/scrolledwindow.c.page:35 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/filechooserdialog.py.page:76 C/textview.c.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTextView" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/filechooserdialog.py.page:77 C/textview.c.page:38 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTextBuffer" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/filechooserdialog.py.page:78 C/scrolledwindow.c.page:36 #: C/textview.c.page:40 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkScrolledWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/filechooserdialog.py.page:79 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GFile" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/filechooserdialog.py.page:81 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkBuilder" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/filechooserdialog.vala.page:8 #, fuzzy #| msgid "FileChooserDialog" msgctxt "text" msgid "FileChooserDialog (Vala)" msgstr "Boîte de dialogue FileChooser" #. (itstool) path: info/desc #: C/filechooserdialog.vala.page:21 msgid "A dialog suitable for \"Open\" and \"Save\" commands." msgstr "Une boîte de dialogue qui convient aux commandes « open » et « save »." #. (itstool) path: section/title #: C/filechooserdialog.vala.page:26 msgid "Overview of the example" msgstr "Vue d'ensemble de l'exemple" #. (itstool) path: section/p #: C/filechooserdialog.vala.page:27 msgid "" "This example demonstrates how the FileChooserDialog can be used. It is " "incorporated into a very simple text editor application. All the actions, including the \"open\", \"save\" " "and \"save-as\" commands can be found in the app-" "menu. Here, the app-menu is created using an XML UI file, which is " "then imported into the application using Gtk.Builder." msgstr "" "Cet exemple montre l'utilisation d'une boîte de dialogue FileChooser. Elle " "est intégrée dans une application éditeur de texte très simple. Toutes les " "actions, y compris les commandes " "« open », « save » et « save-as » sont disponibles dans app-menu. Ici, nous créons l'app-menu avec un fichier " "interface utilisateur en XML, qui est ensuite importé dans l'application " "avec Gtk.Builder." #. (itstool) path: section/title #: C/filechooserdialog.vala.page:29 msgid "XML UI file which creates the app-menu" msgstr "Fichier XML interface utilisateur créant l'app-menu" #. (itstool) path: section/title #: C/filechooserdialog.vala.page:32 msgid "Vala Code" msgstr "Code Vala" #. (itstool) path: section/code #: C/filechooserdialog.vala.page:33 #, no-wrap msgid "" "class MyWindow: Gtk.ApplicationWindow {\n" "\n" "\t/* MyWindow instance variables. */\n" "\tGLib.File? file;\n" "\tGtk.TextBuffer buffer;\n" "\tGtk.TextView textview;\n" "\tGtk.ScrolledWindow scrolled_window;\n" "\n" "\t/* Create ActionEntries. */\n" "\tconst ActionEntry[] actions = {\n" "\t\t{ \"new\", new_cb },\n" "\t\t{ \"open\", open_cb },\n" "\t\t{ \"save\", save_cb },\n" "\t\t{ \"save-as\", save_as_cb }\n" "\t};\n" "\n" "\t/* Constructor creates MyWindow, and add the scrolled_window. */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"FileChooserDialog Example\");\n" "\t\tthis.set_default_size (400, 400);\n" "\n" "\t\t/* Add the ActionEntries to MyWindow. */\n" "\t\tthis.add_action_entries (actions, this);\n" "\n" "\t\tbuffer = new Gtk.TextBuffer (null); //stores text to be displayed\n" "\t\ttextview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n" "\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n" "\n" "\t\tscrolled_window = new Gtk.ScrolledWindow (null, null);\n" "\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n" "\t\t Gtk.PolicyType.AUTOMATIC);\n" "\n" "\t\tscrolled_window.add (textview);\n" "\t\tscrolled_window.set_border_width (5);\n" "\n" " this.add (scrolled_window);\n" "\t\tthis.show_all ();\n" "\t}\n" "\n" "\tvoid new_cb (SimpleAction action, Variant? parameter) {\n" "\t\tfile = null;\n" "\t\tbuffer.set_text (\"\");\n" "\t\tprint (\"New file created\\n\");\n" "\t}\n" "\n" "\t/* Create FileChooserDialog in OPEN mode. */\n" "\tvoid open_cb (SimpleAction action, Variant? parameter) {\n" "\n" "\t\tvar open_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n" "\t\t this as Gtk.Window,\n" "\t\t Gtk.FileChooserAction.OPEN,\n" "\t\t Gtk.Stock.CANCEL,\n" "\t\t Gtk.ResponseType.CANCEL,\n" "\t\t Gtk.Stock.OPEN,\n" "\t\t Gtk.ResponseType.ACCEPT);\n" "\n" "\t\topen_dialog.local_only = false; //allow for uri\n" "\t\topen_dialog.set_modal (true);\n" "\t\topen_dialog.response.connect (open_response_cb);\n" "\t\topen_dialog.show ();\n" "\t}\n" "\n" "\t/* Either open the file and load the file contents or cancel. */\n" "\tvoid open_response_cb (Gtk.Dialog dialog, int response_id) {\n" "\t\tvar open_dialog = dialog as Gtk.FileChooserDialog;\n" "\n" "\t\tswitch (response_id) {\n" "\t\t\tcase Gtk.ResponseType.ACCEPT: //open the file\n" "\t\t\t\tfile = open_dialog.get_file();\n" "\n" "\t\t\t\tuint8[] file_contents;\n" "\n" "\t\t\t\ttry {\n" "\t\t\t\t\tfile.load_contents (null, out file_contents, null);\n" "\t\t\t\t}\n" "\t\t\t\tcatch (GLib.Error err) { //handle the exception\n" "\t\t\t\t\terror (\"%s\\n\", err.message);\n" "\t\t\t\t}\n" "\t\t\t\t/* Set the buffer text to be the contents of the file. */\n" "\t\t\t\tbuffer.set_text ((string) file_contents,\n" "\t\t\t\t file_contents.length);\n" "\n" "\t\t\t\tprint (\"opened: %s\\n\", (open_dialog.get_filename ()));\n" "\t\t\t\tbreak;\n" "\n" "\t\t\tcase Gtk.ResponseType.CANCEL:\n" "\t\t\t\tprint (\"cancelled: FileChooserAction.OPEN\\n\");\n" "\t\t\t\tbreak;\n" "\t\t}\n" "\t\tdialog.destroy ();\n" "\t}\n" "\n" "\n" "\t/* Create FileChooserDialog in SAVE mode. */\n" "\tvoid save_as_cb (SimpleAction action, Variant? parameter) {\n" "\t\tvar save_dialog = new Gtk.FileChooserDialog (\"Pick a file\",\n" "\t\t this as Gtk.Window,\n" "\t\t Gtk.FileChooserAction.SAVE,\n" "\t\t Gtk.Stock.CANCEL,\n" "\t\t Gtk.ResponseType.CANCEL,\n" "\t\t Gtk.Stock.SAVE,\n" "\t\t Gtk.ResponseType.ACCEPT);\n" "\n" "\t\tsave_dialog.set_do_overwrite_confirmation (true);\n" "\t\tsave_dialog.set_modal (true);\n" "\t\tif (file != null) {\n" "\t\t\ttry {\n" "\t\t\t\t(save_dialog as Gtk.FileChooser).set_file (file);\n" "\t\t\t}\n" "\t\t\tcatch (GLib.Error error) {\n" "\t\t\t\tprint (\"%s\\n\", error.message);\n" "\t\t\t}\n" "\t\t}\n" "\t\tsave_dialog.response.connect (save_as_response_cb);\n" "\t\tsave_dialog.show ();\n" "\t}\n" "\n" "\tvoid save_as_response_cb (Gtk.Dialog dialog, int response_id) {\n" "\t\tvar save_dialog = dialog as Gtk.FileChooserDialog;\n" "\n" "\t\tswitch (response_id) {\n" "\t\t\tcase Gtk.ResponseType.ACCEPT:\n" "\t\t\t\tfile = save_dialog.get_file();\n" "\t\t\t\tthis.save_to_file ();\n" "\t\t\t\tbreak;\n" "\t\t\tdefault:\n" "\t\t\t\tbreak;\n" "\t\t}\n" "\t\t\tdialog.destroy ();\n" "\t}\n" "\n" "\t/* Save the existing contents to the file.\n" "\t * If file does not exist, call save_as_cb.\n" "\t */\n" "\tvoid save_cb (SimpleAction action, Variant? parameter) {\n" "\t\tif (file != null) {\n" "\t\t\tthis.save_to_file ();\n" "\t\t}\n" "\t\telse {\n" "\t\t\tsave_as_cb (action, parameter);\n" "\t\t}\n" "\t}\n" "\n" "\tvoid save_to_file (){\n" "\t\tGtk.TextIter start;\n" "\t\tGtk.TextIter end;\n" "\n" "\t\tbuffer.get_bounds (out start, out end);\n" "\t\tstring current_contents = buffer.get_text (start, end, false);\n" "\t\ttry {\n" "\t\t\t\tfile.replace_contents (current_contents.data, null, false,\n" "\t\t\t\t GLib.FileCreateFlags.NONE, null, null);\n" "\n" "\t\t\t\tprint (\"saved: %s\\n\", file.get_path ());\n" "\t\t}\n" "\t\tcatch (GLib.Error err) {\n" "\t\t\terror (\"%s\\n\", err.message);\n" "\t\t}\n" "\t}\n" "}\n" "\n" "/* This is the application */\n" "class MyApplication: Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show_all;\n" "\t}\n" "\n" "\tconst ActionEntry[] actions = {\n" "\t\t{ \"quit\", quit_cb }\n" "\t};\n" "\n" "\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n" "\t\tthis.quit ();\n" "\t}\n" "\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\t/* Setup actions */\n" "\t\tthis.add_action_entries (actions, this);\n" "\n" "\t\t/* Setup menus */\n" "\t\tvar builder = new Gtk.Builder ();\n" "\t\ttry {\n" "\t\t\tbuilder.add_from_file (\"filechooserdialog.ui\");\n" "\t\t} catch (GLib.Error err) {\n" "\t\t\terror (\"Unable to load file: %s\\n\", err.message);\n" "\t\t}\n" "\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: section/title #: C/filechooserdialog.vala.page:35 C/menubar.vala.page:187 msgid "Relevant API documentation" msgstr "Documentation API associée" #. (itstool) path: item/p #: C/filechooserdialog.vala.page:40 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "FileChooser" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/filechooserdialog.vala.page:41 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "FileChooserDialog" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/filechooserdialog.vala.page:42 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Builder" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/filechooserdialog.vala.page:43 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GLib." "ActionEntry" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/fontchooserwidget.js.page:8 #, fuzzy #| msgid "FontChooserWidget" msgctxt "text" msgid "FontChooserWidget (JavaScript)" msgstr "Élément graphique GtkFontChooser" #. (itstool) path: info/desc #: C/fontchooserwidget.js.page:18 C/fontchooserwidget.py.page:20 #: C/fontchooserwidget.vala.page:18 msgid "A widget to choose a font" msgstr "Un élément graphique pour choisir une police" #. (itstool) path: page/title #: C/fontchooserwidget.js.page:21 C/fontchooserwidget.py.page:23 #: C/fontchooserwidget.vala.page:21 msgid "FontChooserWidget" msgstr "Élément graphique GtkFontChooser" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/fontchooserwidget.js.page:23 C/fontchooserwidget.py.page:25 #: C/fontchooserwidget.vala.page:23 #, fuzzy #| msgid "" #| "@@image: 'media/fontchooserwidget.png'; " #| "md5=9161245e307b432ae1313e9a9941edae" msgctxt "_" msgid "" "external ref='media/fontchooserwidget.png' " "md5='9161245e307b432ae1313e9a9941edae'" msgstr "" "@@image: 'media/fontchooserwidget.png'; md5=9161245e307b432ae1313e9a9941edae" #. (itstool) path: page/p #: C/fontchooserwidget.js.page:24 C/fontchooserwidget.py.page:26 msgid "A FontChooserWidget with a callback function." msgstr "Un élément graphique GtkFontChooser avec une fonction de rappel." #. (itstool) path: section/code #: C/fontchooserwidget.js.page:30 #, no-wrap msgid "" "//!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class FontChooserWidgetExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({ application_id: 'org.example.fontchooserwidget' });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this.window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" " // Create the application window\n" " this.window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"FontChooserWidget\",\n" " default_width: 200,\n" " default_height: 200,\n" " border_width: 10 });\n" "\n" " this.fontChooser = new Gtk.FontChooserWidget();\n" " // a default font\n" " this.fontChooser.set_font(\"Sans\");\n" " // a text to preview the font\n" " this.fontChooser.set_preview_text(\"This is an example of preview text!\");\n" "\n" " // connect signal from the font chooser to the callback function\n" " this.fontChooser.connect(\"notify::font\", this._fontCb.bind(this));\n" "\n" " // add the font chooser to the window\n" " this.window.add(this.fontChooser);\n" " this.window.show_all();\n" " }\n" "\n" " // callback function:\n" " _fontCb() {\n" " // print in the terminal\n" " print(\"You chose the font \" + this.fontChooser.get_font());\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new FontChooserWidgetExample();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/fontchooserwidget.js.page:37 C/fontchooserwidget.py.page:47 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkFontChooserWidget" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/fontchooserwidget.py.page:8 #, fuzzy #| msgid "FontChooserWidget" msgctxt "text" msgid "FontChooserWidget (Python)" msgstr "Élément graphique GtkFontChooser" #. (itstool) path: section/code #: C/fontchooserwidget.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"FontChooserWidget\", application=app)\n" "\n" " # a font chooser\n" " self.font_chooser = Gtk.FontChooserWidget()\n" " # a default font\n" " self.font_chooser.set_font(\"Sans\")\n" " # a text to preview the font\n" " self.font_chooser.set_preview_text(\n" " \"This is an example of preview text!\")\n" "\n" " # connect signal from the font chooser to the callback function\n" " self.font_chooser.connect(\"notify::font\", self.font_cb)\n" "\n" " # add the font chooser to the window\n" " self.add(self.font_chooser)\n" "\n" " # callback function:\n" " def font_cb(self, event, user_data):\n" " # print in the terminal\n" " print(\"You chose the font \" + self.font_chooser.get_font())\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/fontchooserwidget.py.page:35 msgid "Useful methods for a FontChooserWidget" msgstr "Méthodes utiles pour un élément graphique GtkFontChooser" #. (itstool) path: section/p #: C/fontchooserwidget.py.page:36 msgid "" "In line 16 the \"notify::font\" signal from the widget is " "connected to the callback function font_cb() using " "widget.connect(signal, callback function). See for a more detailed " "explanation." msgstr "" #. (itstool) path: item/p #: C/fontchooserwidget.py.page:38 msgid "" "To set the font which is initially selected, use set_font(font) " "(where font is the font name) or set_font_desc(font) (where font is the PangoFontDescription)." msgstr "" "Pour définir la police initiallement sélectionnée, utilisez la méthode " "set_font(font) (où font est le nom de la police), " "ou set_font_desc(font) (où font est la " "PangoFontDescription)." #. (itstool) path: item/p #: C/fontchooserwidget.py.page:39 msgid "" "To get the selected font use get_font() or " "get_font_desc()." msgstr "" "Pour obtenir la police sélectionnée, utilisez l'une des deux méthodes " "get_font() ou get_font_desc()." #. (itstool) path: item/p #: C/fontchooserwidget.py.page:40 msgid "" "To change the text which is shown in the preview area, use " "set_preview_text()." msgstr "" "Pour modifier le texte affiché dans la position précédente, utilisez la " "méthode set_preview_text()." #. (itstool) path: info/title #: C/fontchooserwidget.vala.page:8 #, fuzzy #| msgid "FontChooserWidget" msgctxt "text" msgid "FontChooserWidget (Vala)" msgstr "Élément graphique GtkFontChooser" #. (itstool) path: credit/name #: C/fontchooserwidget.vala.page:13 #, fuzzy #| msgid "Tiffany Antopolski" msgid "Tiffany Antpoolski" msgstr "Tiffany Antopolski" #. (itstool) path: page/p #: C/fontchooserwidget.vala.page:24 #, fuzzy #| msgid "A FontChooserWidget with a callback function." msgid "A FontChooserWidget with a lambda callback function." msgstr "Un élément graphique GtkFontChooser avec une fonction de rappel." #. (itstool) path: section/code #: C/fontchooserwidget.vala.page:30 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" " internal MyWindow (MyApplication app) {\n" " Object (application: app, title: \"FontChooserWidget\");\n" "\n" "\t\tvar font_chooser = new Gtk.FontChooserWidget ();\n" "\t\tfont_chooser.set_font (\"Sans\");\n" "\t\tfont_chooser.set_preview_text (\"This is an example of preview text!\");\n" "\t\tthis.add (font_chooser);\n" "\n" "\t\tfont_chooser.notify[\"font\"].connect (() => {\n" "\t\t\tprint (\"font: %s\\n\", font_chooser.get_font ().to_string ());\n" "\t\t\tprint (\"desc: %s\\n\", font_chooser.get_font_desc ().to_string ());\n" "\t\t\tprint (\"face: %s\\n\", font_chooser.get_font_face ().get_face_name ());\n" "\t\t\tprint (\"size: %d\\n\", font_chooser.get_font_size ());\n" "\t\t\tprint (\"family: %s\\n\", font_chooser.get_font_family ().get_name ());\n" "\t\t\tprint (\"monospace: %s\\n\\n\", font_chooser.get_font_family ().is_monospace ().to_string ());\n" "\t\t});\n" "\n" " this.show_all ();\n" " }\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" " protected override void activate () {\n" " new MyWindow (this).show ();\n" " }\n" "}\n" "\n" "public int main (string[] args) {\n" " return new MyApplication ().run (args);\n" "}\n" "\n" msgstr "" #. (itstool) path: item/p #: C/fontchooserwidget.vala.page:37 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "GtkFontChooserWidget" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: info/title #: C/gmenu.c.page:8 #, fuzzy #| msgid "GMenu" msgctxt "text" msgid "GMenu (C)" msgstr "GMenu" #. (itstool) path: info/desc #: C/gmenu.c.page:18 C/gmenu.js.page:18 C/gmenu.vala.page:24 msgid "A simple implementation of GMenuModel" msgstr "Une implémentation simple de GMenuModel" #. (itstool) path: page/title #: C/gmenu.c.page:21 C/gmenu.js.page:21 C/gmenu.py.page:29 C/gmenu.vala.page:27 msgid "GMenu" msgstr "GMenu" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/gmenu.c.page:22 #, fuzzy #| msgid "@@image: 'media/gmenu.c.png'; md5=f305fc3cae8d16d72b734ee53b559e33" msgctxt "_" msgid "external ref='media/gmenu.c.png' md5='f305fc3cae8d16d72b734ee53b559e33'" msgstr "@@image: 'media/gmenu.c.png'; md5=f305fc3cae8d16d72b734ee53b559e33" #. (itstool) path: page/p #: C/gmenu.c.page:23 C/gmenu.js.page:23 C/gmenu.py.page:31 C/gmenu.vala.page:32 msgid "A GtkApplication with a simple GMenu and SimpleActions" msgstr "Une application Gtk avec un GMenu de base et des SimpleActions" #. (itstool) path: page/code #: C/gmenu.c.page:26 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "static void\n" "new_window (GSimpleAction *action,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"This does nothing. It is only a demonstration.\\n\");\n" "}\n" "\n" "static void\n" "quit (GSimpleAction *action,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GApplication *application = user_data;\n" "\n" " g_application_quit (application);\n" "}\n" "\n" "static void\n" "startup (GtkApplication *application,\n" " gpointer user_data)\n" "{\n" " static const GActionEntry actions[] = {\n" " { \"new\", new_window },\n" " { \"quit\", quit }\n" " };\n" "\n" " GMenu *menu;\n" "\n" " g_action_map_add_action_entries (G_ACTION_MAP (application), actions, G_N_ELEMENTS (actions), application);\n" "\n" " menu = g_menu_new ();\n" " g_menu_append (menu, \"New\", \"app.new\");\n" " g_menu_append (menu, \"Quit\", \"app.quit\");\n" " gtk_application_set_app_menu (application, G_MENU_MODEL (menu));\n" " g_object_unref (menu);\n" "}\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" "\n" " window = gtk_application_window_new (app);\n" "\n" " gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n" " gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n" "\n" " gtk_widget_show_all (GTK_WIDGET (window));\n" "}\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: info/title #: C/gmenu.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "GMenu (JavaScript)" msgstr "JavaScript" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/gmenu.js.page:22 #, fuzzy #| msgid "@@image: 'media/gmenu.js.png'; md5=16b8bee122197771ec8498dac42f196b" msgctxt "_" msgid "" "external ref='media/gmenu.js.png' md5='16b8bee122197771ec8498dac42f196b'" msgstr "@@image: 'media/gmenu.js.png'; md5=16b8bee122197771ec8498dac42f196b" #. (itstool) path: page/code #: C/gmenu.js.page:25 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class Application {\n" "\n" " //create the application\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.myapp',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " //connect to 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " //create the UI (in this case it's just the ApplicationWindow\n" " _buildUI() {\n" " this._window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Welcome to GNOME\" });\n" "\n" " //uncommenting the line below will change the window size\n" " //this._window.set_default_size(600, 400);\n" "\n" " //show the window and all child widgets (none in this case)\n" " this._window.show_all();\n" " }\n" "\n" " _showNew() {\n" " print(\"This doesn't do anything. It is only a demonstration.\");\n" " }\n" "\n" " _showAbout() {\n" " print(\"No AboutDialog here. This is only a demonstration.\");\n" " }\n" "\n" " //create the menu items and connect the signals to the callback functions.\n" " _initMenus() {\n" " let menu = new Gio.Menu();\n" " menu.append(\"New\",'app.new');\n" " menu.append(\"About\", 'app.about');\n" " menu.append(\"Quit\",'app.quit');\n" " this.application.set_app_menu(menu);\n" "\n" " let newAction = new Gio.SimpleAction ({ name: 'new' });\n" " newAction.connect('activate', () => { this._showNew(); });\n" " this.application.add_action(newAction);\n" "\n" " let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n" " aboutAction.connect('activate', () => { this._showAbout(); });\n" " this.application.add_action(aboutAction);\n" "\n" " let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n" " quitAction.connect('activate', () => { this._window.destroy(); });\n" " this.application.add_action(quitAction);\n" " }\n" "\n" " //callback function for 'activate' signal\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " //callback function for 'startup' signal\n" " _onStartup() {\n" " //You must call _initMenus() before calling _buildUI().\n" " this._initMenus();\n" " this._buildUI();\n" " }\n" "};\n" "\n" "//run the application\n" "let app = new Application ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: info/title #: C/gmenu.py.page:8 #, fuzzy #| msgid "Python" msgctxt "text" msgid "GMenu (Python)" msgstr "Python" #. (itstool) path: info/desc #: C/gmenu.py.page:26 msgid "A simple implementation of GMenu" msgstr "Une implémentation simple de GMenu" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/gmenu.py.page:30 #, fuzzy #| msgid "@@image: 'media/gmenu.py.png'; md5=52c68b34d5d566f37e9f803dedb6353a" msgctxt "_" msgid "" "external ref='media/gmenu.py.png' md5='52c68b34d5d566f37e9f803dedb6353a'" msgstr "@@image: 'media/gmenu.py.png'; md5=52c68b34d5d566f37e9f803dedb6353a" #. (itstool) path: section/code #: C/gmenu.py.page:37 #, no-wrap msgid "" "\n" " from gi.repository import Gtk\n" "from gi.repository import Gio\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " # start the application\n" " Gtk.Application.do_startup(self)\n" "\n" " # create a menu\n" " menu = Gio.Menu()\n" " # append to the menu three options\n" " menu.append(\"New\", \"app.new\")\n" " menu.append(\"About\", \"app.about\")\n" " menu.append(\"Quit\", \"app.quit\")\n" " # set the menu as menu of the application\n" " self.set_app_menu(menu)\n" "\n" " # create an action for the option \"new\" of the menu\n" " new_action = Gio.SimpleAction.new(\"new\", None)\n" " # connect it to the callback function new_cb\n" " new_action.connect(\"activate\", self.new_cb)\n" " # add the action to the application\n" " self.add_action(new_action)\n" "\n" " # option \"about\"\n" " about_action = Gio.SimpleAction.new(\"about\", None)\n" " about_action.connect(\"activate\", self.about_cb)\n" " self.add_action(about_action)\n" "\n" " # option \"quit\"\n" " quit_action = Gio.SimpleAction.new(\"quit\", None)\n" " quit_action.connect(\"activate\", self.quit_cb)\n" " self.add_action(quit_action)\n" "\n" " # callback function for \"new\"\n" " def new_cb(self, action, parameter):\n" " print(\"This does nothing. It is only a demonstration.\")\n" "\n" " # callback function for \"about\"\n" " def about_cb(self, action, parameter):\n" " print(\"No AboutDialog for you. This is only a demonstration.\")\n" "\n" " # callback function for \"quit\"\n" " def quit_cb(self, action, parameter):\n" " print(\"You have quit.\")\n" " self.quit()\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/gmenu.py.page:42 msgid "Useful methods for a GSimpleAction and a GMenu" msgstr "Méthodes utiles pour GSimpleAction et GMenu" #. (itstool) path: section/p #: C/gmenu.py.page:44 msgid "" "In line 33 the signal \"activate\" from the action " "new_action (not the menu!) is connected to the callback " "function new_cb() using action." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: section/p #: C/gmenu.py.page:46 msgid "Useful methods for a GSimpleAction:" msgstr "Méthodes utiles pour GSimpleAction :" #. (itstool) path: item/p #: C/gmenu.py.page:48 msgid "" "To create a new action that is stateless, that is, an action that " "do not retain or depend on a state given by the action itself, use" msgstr "" "Pour créer une nouvelle action qui est stateless, c-à-d. une action " "qui ne retient ni ne dépend d'un état définit par l'action elle-même, " "utilisez" #. (itstool) path: item/code #: C/gmenu.py.page:49 #, no-wrap msgid "" "\n" "action = Gio.SimpleAction.new(\"name\", parameter_type)" msgstr "" "\n" "action = Gio.SimpleAction.new(« nom », parameter_type)" #. (itstool) path: item/p #: C/gmenu.py.page:51 msgid "" "where \"name\" is the name of the action and " "parameter_type is the type of the parameters that the action " "receives when being activated. This can be None, or GLib." "VariantType.new('s') if the parameter is of type str, or " "instead of 's' a character as described here. To " "create a new stateful (i.e. not stateless) action, use" msgstr "" "où « nom » est le nom de l'action et parameter_type est le type de paramètre que l'action reçoit quand elle est activée. " "Ce peut être None, ou GLib.VariantType.new('s') si " "le paramètre est du type str, ou au lieu de 's', " "un caractère tel que décrit ici." #. (itstool) path: item/code #: C/gmenu.py.page:52 #, no-wrap msgid "" "\n" "action = Gio.SimpleAction.new_stateful(\"name\", parameter_type, initial_state)" msgstr "" "\n" "action = Gio.SimpleAction.new_stateful(« nom », parameter_type, initial_state)" #. (itstool) path: item/p #: C/gmenu.py.page:54 #, fuzzy #| msgid "" #| "where initial_state is defined as a GVariant - for instance " #| "Glib.Variant.new_string('start'); for a list of possiblities " #| "see here." msgid "" "where initial_state is defined as a GVariant - for instance " "Glib.Variant.new_string('start'); for a list of possibilities " "see here." msgstr "" "où initial_state est défini comme étant une GVariant - par " "exemple Glib.Variant.new_string('start') ; voyez ici " "pour accéder à une liste des possibilités." #. (itstool) path: item/p #: C/gmenu.py.page:55 msgid "" "set_enabled(True) sets the action as enabled; an action must be " "enabled in order to be activated or in order to have its state changed from " "outside callers. This should only be called by the implementor of the " "action. Users of the action should not attempt to modify its enabled flag." msgstr "" "La méthode set_enabled(True) définit l'action à enabled ; une " "action doit être en position enabled pour pouvoir être activée ou pour voir " "son état modifié par des appels extérieurs. La fonction ne peut être appelée " "que par l'implémenteur de l'action. Les utilisateurs de l'action ne doivent " "pas tenter de modifier son drapeau enabled." #. (itstool) path: item/p #: C/gmenu.py.page:56 msgid "" "set_state(state), where state is a GVariant, sets " "the state of the action, updating the 'state' property to the given value. " "This should only be called by the implementor of the action; users of the " "action should instead call change_state(state) (where " "state is as above) to request the change." msgstr "" "La fonction set_state(state), où state est une " "GVariant, définit l'état de l'action en mettant à jour la propriété " "« state » à la valeur donnée. Elle ne peut être appelée que par " "l'implémenteur de l'action ; par contre, les utilisateurs peuvent appeler " "change_state(state) (où state est une GVariant) " "pour demander le changement d'état." #. (itstool) path: section/p #: C/gmenu.py.page:59 msgid "Useful methods for a GMenu:" msgstr "Méthodes utiles pour un GMenu :" #. (itstool) path: item/p #: C/gmenu.py.page:61 msgid "" "To insert an item in the menu in position position, use " "insert(position, label, detailed_action), where label is the label that will appear in the menu and detailed_action is a string composed of the name of the action to which we prepend the " "prefix app.. A more detailed discussion of this can be found in " "." msgstr "" "Pour insérer un élément dans le menu à la position, utilisez la " "méthode insert(position, label, detailed_action), où " "label est l'étiquette qui s'affiche dans le menu et " "detailed_action est une chaîne de caractères composée du nom de " "l'action à laquelle vous ajoutez le préfixe app.. Pour de plus " "amples détails, consultez ." #. (itstool) path: item/p #: C/gmenu.py.page:62 msgid "" "To append or prepend an item in the menu use respectively " "append(label, detailed_action) and prepend(label, " "detailed_action)." msgstr "" "Pour joindre ou ajouter un élément dans le menu, utilisez respectivement les " "méthodes append(label, detailed_action) et prepend(label, " "detailed_action)." #. (itstool) path: item/p #: C/gmenu.py.page:63 msgid "" "Another way of adding items to the menu is to create them as " "GMenuItems and use insert_item(position, item), " "append_item(item), or prepend_item(item); so for " "instance we might have:" msgstr "" "Une autre méthode pour ajouter des éléments au menu est de les créer comme " "des éléments GMenuItem et d'utiliser l'une des fonctions " "insert_item(position, item), append_item(item), ou " "prepend_item(item) ; par exemple :" #. (itstool) path: item/code #: C/gmenu.py.page:64 #, no-wrap msgid "" "\n" "about = Gio.MenuItem.new(\"About\", \"app.about\")\n" "menu.append_item(about)" msgstr "" "\n" "about = Gio.MenuItem.new(\"About\", \"app.about\")\n" "menu.append_item(about)" #. (itstool) path: item/p #: C/gmenu.py.page:68 msgid "" "We can also add a whole subsection in a menu using " "insert_section(position, label, section), " "append_section(label, section), or prepend_section(label, " "section), where label is the title of the subsection." msgstr "" "Nous pouvons aussi ajouter une sous-section entière dans un menu avec " "insert_section(position, label, section), " "append_section(label, section), ou prepend_section(label, " "section), où label est le titre de la sous-section." #. (itstool) path: item/p #: C/gmenu.py.page:69 msgid "" "To add a submenu that will expand and collapse, use " "insert_submenu(position, label, section), " "append_submenu(label, section), or prepend_submenu(label, " "section), where label is the title of the subsection." msgstr "" "Pour ajouter un sous-menu qui va s'étendre et se contracter, utilisez l'une " "des méthodes insert_submenu(position, label, section), " "append_submenu(label, section), ou bien " "prepend_submenu(label, section), où label est le " "titre du sous-menu." #. (itstool) path: item/p #: C/gmenu.py.page:70 #, fuzzy msgid "To remove an item from the menu, use remove(position)." msgstr "" "Pour supprimer un élément du menu, utilisez la fonction " "remove(position)." #. (itstool) path: item/p #: C/gmenu.py.page:71 msgid "To set a label for the menu, use set_label(label)." msgstr "" "Pour définir une étiquette pour le menu, utilisez la méthode " "set_label(label)." #. (itstool) path: item/p #: C/gmenu.py.page:82 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GVariantType" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/gmenu.py.page:83 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GVariant" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/gmenu.vala.page:8 #, fuzzy #| msgid "MenuBar" msgctxt "text" msgid "GMenu (Vala)" msgstr "BarreDeMenu" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/gmenu.vala.page:28 #, fuzzy #| msgid "" #| "@@image: 'media/gmenu.vala.png'; md5=7a9f381fc3ed5bf8d1c50d2acb095400" msgctxt "_" msgid "" "external ref='media/gmenu.vala.png' md5='7a9f381fc3ed5bf8d1c50d2acb095400'" msgstr "@@image: 'media/gmenu.vala.png'; md5=7a9f381fc3ed5bf8d1c50d2acb095400" #. (itstool) path: note/p #: C/gmenu.vala.page:30 #, fuzzy #| msgid "You need to be running Gtk+-3.4 or later for this to work" msgid "" "You need to be running GTK+-3.4 or later for this to " "work" msgstr "" "Pour que cela fonctionne, il vous faut avoir installé Gtk+-3.4 ou supérieur" #. (itstool) path: page/code #: C/gmenu.vala.page:34 #, no-wrap msgid "" "/* A window in the application. */\n" "public class Window : Gtk.ApplicationWindow {\n" "\n" "\t/* Constructor */\n" "\tpublic Window (Application app) {\n" "\t\tObject (application: app, title: \"Gmenu Example\");\n" "\n" "\t\tvar about_action = new SimpleAction (\"about\", null);\n" "\n" "\t\t/* Connect the 'activate' signal to the\n" "\t\t * signal handler (aka. callback).\n" "\t\t */\n" "\t\tabout_action.activate.connect (this.about_cb);\n" "\n" "\t\t/* Add the action to this window. */\n" "\t\tthis.add_action (about_action);\n" "\n" "\t\tthis.show ();\n" "\t}\n" "\n" "\t/* Signal handler for 'activate' signal of the SimpleAction. */\n" "\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n" "\t\tprint (\"This does nothing. It is only a demonstration.\\n\");\n" "\t}\n" "}\n" "\n" "/* This is the Application. */\n" "public class Application : Gtk.Application {\n" "\n" "\t/* Constructor */\n" "\tpublic Application () {\n" "\t\tObject (application_id: \"org.example.application\");\n" "\t}\n" "\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\n" "\t\t/* Create a new window for this application. */\n" "\t\tnew Window (this);\n" "\t}\n" "\n" "\t/* Override the 'startup' signal of GLib.Application. */\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\tvar menu = new Menu ();\n" "\t\tmenu.append (\"About\", \"win.about\");\n" "\t\tmenu.append (\"Quit\", \"app.quit\");\n" "\t\tthis.app_menu = menu;\n" "\n" "\t\tvar quit_action = new SimpleAction (\"quit\", null);\n" "\t\tquit_action.activate.connect (this.quit);\n" "\t\tthis.add_action (quit_action);\n" "\t}\n" "}\n" "\n" "/* main function creates Application and runs it. */\n" "int main (string[] args) {\n" "\treturn new Application ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/gmenu.vala.page:41 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Menu" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/gmenu.vala.page:42 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "append" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/gmenu.vala.page:43 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "SimpleAction" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/gmenu.vala.page:44 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "add_action" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: info/title #: C/grid.c.page:8 #, fuzzy #| msgid "Grid" msgctxt "text" msgid "Grid (C)" msgstr "Grille" #. (itstool) path: info/desc #: C/grid.c.page:18 C/grid.js.page:22 C/grid.py.page:26 C/grid.vala.page:20 msgid "Pack widgets in rows and columns" msgstr "Ranger les éléments graphiques en lignes et colonnes" #. (itstool) path: page/title #: C/grid.c.page:21 C/grid.js.page:25 C/grid.py.page:29 msgid "Grid" msgstr "Grille" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/grid.c.page:23 C/grid.js.page:26 C/grid.vala.page:24 #, fuzzy #| msgid "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" msgctxt "_" msgid "external ref='media/grid.png' md5='27d45da115401127456a3b854dcfc5be'" msgstr "@@image: 'media/grid.png'; md5=27d45da115401127456a3b854dcfc5be" #. (itstool) path: page/p #: C/grid.c.page:24 C/grid.vala.page:25 msgid "A button widget connected to a progress bar." msgstr "Un élément graphique bouton connecté à une barre de progression." #. (itstool) path: page/code #: C/grid.c.page:26 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/*Signal handler for the \"clicked\" signal of the Button. Each\n" "click generates a progress bar pulse*/\n" "static void\n" "on_button_click (GtkButton *button,\n" " gpointer user_data)\n" "{\n" " GtkProgressBar *progress_bar = user_data;\n" " gtk_progress_bar_pulse (progress_bar);\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *grid;\n" " GtkWidget *window;\n" " GtkWidget *button;\n" " GtkWidget *progress_bar;\n" "\n" " /*Create the window and set a title*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Grid Example\");\n" "\n" " /*Create a button with a label*/\n" " button = gtk_button_new_with_label (\"Button\");\n" "\n" " /*Create the progress bar*/\n" " progress_bar = gtk_progress_bar_new ();\n" "\n" " /*Create a grid and attach the button and progress bar\n" " accordingly*/\n" " grid = gtk_grid_new ();\n" " gtk_grid_attach (GTK_GRID (grid), button, 1, 1, 1, 1);\n" " gtk_grid_attach_next_to (GTK_GRID (grid), \n" " progress_bar, \n" " button, \n" " GTK_POS_BOTTOM, 1, 1);\n" "\n" " /*Connecting the clicked signal to the callback function*/\n" " g_signal_connect (GTK_BUTTON (button), \"clicked\", \n" " G_CALLBACK (on_button_click), progress_bar);\n" "\n" " gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/grid.c.page:34 C/progressbar.c.page:35 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkProgressBar" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/grid.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Grid (JavaScript)" msgstr "JavaScript" #. (itstool) path: page/p #: C/grid.js.page:27 msgid "" "A button widget connected to a progress bar, inside of a grid which handles " "the layout." msgstr "" "Un élément graphique bouton connecté à une barre de progression, à " "l'intérieur d'une grille qui gère l'agencement." #. (itstool) path: page/code #: C/grid.js.page:29 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class GridExample {\n" "\n" " /* Create the application itself\n" " This boilerplate code is needed to build any GTK+ application. */\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jsgrid',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal initializes menus and builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Grid Example\"});\n" "\n" " // Create the grid\n" " this.Grid = new Gtk.Grid ();\n" "\n" " // Create the widgets inside the grid\n" " this.progressBar = new Gtk.ProgressBar ();\n" " this.Button = new Gtk.Button ({ label: \"Button\" });\n" " this.Button.connect (\"clicked\", this._clickHandler.bind(this));\n" "\n" " // Assemble the grid\n" " this._window.add (this.Grid);\n" " this.Grid.attach (this.Button, 1, 1, 1, 1);\n" " this.Grid.attach_next_to (this.progressBar, this.Button, Gtk.PositionType.BOTTOM, 1, 1);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " // Here's the function that says what happens when the button is clicked\n" " _clickHandler() {\n" " this.progressBar.pulse ();\n" " }\n" "\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new GridExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/grid.js.page:37 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Grid" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/grid.js.page:38 C/progressbar.js.page:42 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gtk.ProgressBar" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: info/title #: C/grid.py.page:8 #, fuzzy #| msgid "Python" msgctxt "text" msgid "Grid (Python)" msgstr "Python" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/grid.py.page:31 #, fuzzy #| msgid "" #| "@@image: 'media/grid_simple.png'; md5=c806f2e69b30373d4d2e08b41d6cc1f6" msgctxt "_" msgid "" "external ref='media/grid_simple.png' md5='c806f2e69b30373d4d2e08b41d6cc1f6'" msgstr "@@image: 'media/grid_simple.png'; md5=c806f2e69b30373d4d2e08b41d6cc1f6" #. (itstool) path: page/p #: C/grid.py.page:32 msgid "Some labels in a grid." msgstr "Quelques étiquettes dans une grille." #. (itstool) path: section/code #: C/grid.py.page:38 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Grid Example\", application=app)\n" "\n" " # three labels\n" " label_top_left = Gtk.Label(label=\"This is Top Left\")\n" " label_top_right = Gtk.Label(label=\"This is Top Right\")\n" " label_bottom = Gtk.Label(label=\"This is Bottom\")\n" "\n" " # a grid\n" " grid = Gtk.Grid()\n" "\n" " # some space between the columns of the grid\n" " grid.set_column_spacing(20)\n" "\n" " # in the grid:\n" " # attach the first label in the top left corner\n" " grid.attach(label_top_left, 0, 0, 1, 1)\n" " # attach the second label\n" " grid.attach(label_top_right, 1, 0, 1, 1)\n" " # attach the third label below the first label\n" " grid.attach_next_to(\n" " label_bottom, label_top_left, Gtk.PositionType.BOTTOM, 2, 1)\n" "\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/grid.py.page:42 msgid "Useful methods for a Grid widget" msgstr "Méthodes utiles pour un élément graphique Grille" #. (itstool) path: item/p #: C/grid.py.page:45 msgid "" "To attach a widget child in position left, top in " "a slot of given width, height use attach(child, top, " "left, width, height). If a widget sibling is already in " "place, we can also use attach_next_to(child, sibling, side, width, " "height), where side is one of Gtk.PositionType." "LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM." msgstr "" "Pour joindre un élément graphique enfant à l'emplacement " "gauche, superieur dans un créneaux de taille largeur, " "hauteur donné, utilisez la méthode attach(enfant, superieur, " "gauche, largeur, hauteur). S'il y a déjà un élément graphique " "sibling à cette place, utilisez la fonction " "attach_next_to(enfant, sibling, side, largeur, hauteur), où " "side est l'une des positions Gtk.PositionType.LEFT, Gtk." "PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM." #. (itstool) path: item/p #: C/grid.py.page:46 #, fuzzy #| msgid "" #| "insert_row(position) and insert_column(position) do exactly what they say; children which are attached at or below " #| "this position are moved one row down, and children which span across this " #| "position are grown to span the new row. insert_next_to(sibling, " #| "side) inserts a row or column at the specified position. The new " #| "row or column is placed next to sibling, on the side " #| "determined by side; if side is Gtk.PositionType.TOP or Gtk.PositionType.BOTTOM, a row is inserted, if side " #| "is Gtk.PositionType.LEFT of Gtk.PositionType.RIGHT, a column is inserted." msgid "" "insert_row(position) and insert_column(position) " "do exactly what they say; children which are attached at or below this " "position are moved one row down, and children which span across this " "position are grown to span the new row. insert_next_to(sibling, side) inserts a row or column at the specified position. The new row or " "column is placed next to sibling, on the side determined by " "side; if side is Gtk.PositionType.TOP or Gtk." "PositionType.BOTTOM, a row is inserted, if side is Gtk." "PositionType.LEFT or Gtk.PositionType.RIGHT, a column is " "inserted." msgstr "" "Les méthodes insert_row(position) et " "insert_column(position) font littéralement ce qu'elles " "indiquent ; les enfants liés à ou au-dessous de cette position sont " "descendus une ligne plus bas et les enfants qui s'étendent sur cette " "position sont agrandis pour s'étendre sur la nouvelle ligne. La fonction " "insert_next_to(sibling, side) insère une ligne ou une colonne à " "la position spécifiée. La nouvelle ligne ou nouvelle colonne est placée à " "côté de sibling, du côté défini par side ; si side " "est défini à Gtk.PositionType.TOP ou à Gtk.PositionType." "BOTTOM, une ligne est insérée ; si side est défini à Gtk." "PositionType.LEFT ou à Gtk.PositionType.RIGHT, une " "colonne est insérée." #. (itstool) path: item/p #: C/grid.py.page:47 msgid "" "set_row_homogeneous(True) and " "set_column_homogeneous(True) ensure that (respectively) every " "row or every column has the same width or height." msgstr "" "Les méthodes set_row_homogeneous(True) et " "set_column_homogeneous(True) vérifient que chaque ligne ou " "chaque colonne a la même largeur ou la même hauteur." #. (itstool) path: item/p #: C/grid.py.page:48 #, fuzzy #| msgid "" #| "set_row_spacing(spacing) and " #| "set_column_spacing(spacing) force a spacing between " #| "(respectively) rows or columns. The value of spacing can be " #| "between 0, which is the default value, and 32767" msgid "" "set_row_spacing(spacing) and set_column_spacing(spacing) force a spacing between (respectively) rows or columns. The value of " "spacing can be between 0, which is the default " "value, and 32767." msgstr "" "Les méthodes set_row_spacing(espace) et " "set_column_spacing(espace) forcent un espace entre " "(respectivement) les lignes ou les colonnes. La valeur de espace peut être comprise entre 0, qui est la valeur par défaut " "et 32767" #. (itstool) path: item/p #: C/grid.py.page:59 C/label.py.page:105 C/separator.c.page:41 #: C/separator.py.page:42 C/switch.py.page:46 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkLabel" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/grid.py.page:60 C/paned.c.page:38 C/paned.py.page:44 #: C/scrolledwindow.py.page:47 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkImage" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/grid.py.page:61 C/radiobutton.py.page:50 C/separator.c.page:40 #: C/separator.py.page:41 C/switch.py.page:47 C/toolbar_builder.py.page:196 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkGrid" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/grid.vala.page:8 #, fuzzy #| msgid "Window (Vala)" msgctxt "text" msgid "Grid (Vala)" msgstr "Fenêtre (Vala)" #. (itstool) path: page/title #: C/grid.vala.page:23 msgid "Grid widget" msgstr "Élément graphique Grille" #. (itstool) path: page/code #: C/grid.vala.page:27 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\tGtk.Widget progress_bar;\n" "\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Grid Example\");\n" "\t\tvar grid = new Gtk.Grid();\n" "\t\tprogress_bar = new Gtk.ProgressBar ();\n" "\t\tprogress_bar.show ();\n" "\n" "\t\tvar button = new Gtk.Button.with_label (\"Button\");\n" "\t\tbutton.clicked.connect (on_button_click);\n" "\t\tbutton.show ();\n" "\n" "\t\tthis.add(grid);\n" "\t\tgrid.attach(button, 0, 1, 1, 1);\n" "\t\tgrid.attach_next_to (progress_bar, button, Gtk.PositionType.BOTTOM, 1, 1);\n" "\t\tgrid.show ();\n" "\t}\n" "\n" "\tvoid on_button_click (Gtk.Button button) {\n" "\t\t(progress_bar as Gtk.ProgressBar).pulse ();\n" "\t}\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/grid.vala.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Grid" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/GtkApplicationWindow.c.page:8 #, fuzzy #| msgid "ApplicationWindow" msgctxt "text" msgid "ApplicationWindow (C)" msgstr "ApplicationWindow" #. (itstool) path: info/desc #: C/GtkApplicationWindow.c.page:18 msgid "A toplevel window which can contain other widgets, and support GMenu" msgstr "" "Une fenêtre de niveau supérieur qui peut contenir d'autres éléments " "graphiques et prend en charge GMenu." #. (itstool) path: page/title #: C/GtkApplicationWindow.c.page:21 C/GtkApplicationWindow.js.page:21 #: C/GtkApplicationWindow.py.page:28 C/GtkApplicationWindow.vala.page:21 msgid "ApplicationWindow" msgstr "ApplicationWindow" #. (itstool) path: page/media #. (itstool) path: td/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/GtkApplicationWindow.c.page:22 C/GtkApplicationWindow.js.page:22 #: C/GtkApplicationWindow.py.page:29 C/GtkApplicationWindow.vala.page:22 #: C/window.c.page:22 C/window.js.page:25 C/window.py.page:33 #: C/window.vala.page:25 #, fuzzy #| msgid "@@image: 'media/window.png'; md5=eb0cde3530978619c25bddfaeb453345" msgctxt "_" msgid "external ref='media/window.png' md5='eb0cde3530978619c25bddfaeb453345'" msgstr "@@image: 'media/window.png'; md5=eb0cde3530978619c25bddfaeb453345" #. (itstool) path: page/p #: C/GtkApplicationWindow.c.page:23 msgid "A minimal GtkApplication with a GtkApplicationWindow" msgstr "Une application Gtk minimale avec une GtkApplicationWindow" #. (itstool) path: page/code #: C/GtkApplicationWindow.c.page:25 #, no-wrap msgid "" "#include <gtk/gtk.h>\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" "\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/GtkApplicationWindow.c.page:31 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkApplicationWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/GtkApplicationWindow.js.page:8 #, fuzzy #| msgid "ApplicationWindow" msgctxt "text" msgid "ApplicationWindow (JavaScript)" msgstr "ApplicationWindow" #. (itstool) path: info/desc #: C/GtkApplicationWindow.js.page:18 C/GtkApplicationWindow.py.page:25 #: C/GtkApplicationWindow.vala.page:18 msgid "GtkWindow subclass with GtkApplication support" msgstr "Sous-classe GtkWindow avec la prise en charge de GtkApplication" #. (itstool) path: page/p #: C/GtkApplicationWindow.js.page:23 msgid "A simple GtkApplicationWindow which can support Menus." msgstr "Une simple GtkApplicationWindow qui prend en charge les menus." #. (itstool) path: page/code #: C/GtkApplicationWindow.js.page:25 #, no-wrap msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class Application {\n" "\n" " //create the application\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.myapp',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " //connect to 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " //create the UI (in this case it's just the ApplicationWindow\n" " _buildUI() {\n" " this._window = new Gtk.ApplicationWindow({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Welcome to GNOME\" });\n" "\n" " //uncommenting the line below will change the window size\n" " //this._window.set_default_size(600, 400);\n" "\n" " //show the window and all child widgets (none in this case)\n" " this._window.show_all();\n" " }\n" "\n" " //callback function for 'activate' signal\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " //callback function for 'startup' signal\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "};\n" "\n" "//run the application\n" "let app = new Application ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: info/title #: C/GtkApplicationWindow.py.page:8 #, fuzzy #| msgid "ApplicationWindow" msgctxt "text" msgid "ApplicationWindow (Python)" msgstr "ApplicationWindow" #. (itstool) path: page/p #: C/GtkApplicationWindow.py.page:30 #, fuzzy #| msgid "The simplest GtkApplication Window which can support Menus." msgid "" "The simplest GtkApplication Window which can support ." msgstr "L'application Gtk la plus simple qui prend en charge les menus." #. (itstool) path: section/code #: C/GtkApplicationWindow.py.page:37 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "# a Gtk ApplicationWindow\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # constructor: the title is \"Welcome to GNOME\" and the window belongs\n" " # to the application app\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" " # constructor of the Gtk Application\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " # create and activate a MyWindow, with self (the MyApplication) as\n" " # application the window belongs to.\n" " # Note that the function in C activate() becomes do_activate() in Python\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " # show the window and all its content\n" " # this line could go in the constructor of MyWindow as well\n" " win.show_all()\n" "\n" " # start up the application\n" " # Note that the function in C startup() becomes do_startup() in Python\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "# create and run the application, exit with the value returned by\n" "# running the program\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/GtkApplicationWindow.py.page:41 msgid "Useful methods for a Gtk.ApplicationWindow widget" msgstr "Méthodes utiles pour un élément graphique Gtk.ApplicationWindow" #. (itstool) path: item/p #: C/GtkApplicationWindow.py.page:44 C/window.py.page:54 msgid "" "set_default_size(200, 100) sets the default size of the window " "to a width of 200 and a height of 100; if instead " "of a positive number we pass -1 we have the default size." msgstr "" "set_default_size(200, 100) définit la taille par défaut de la " "fenêtre à une largeur de 200 et une hauteur de 100 ; si, au lieu d'un nombre positif, vous lui transmettez -1, vous obtenez la taille par défaut." #. (itstool) path: item/p #: C/GtkApplicationWindow.py.page:45 C/window.py.page:55 msgid "" "set_position(Gtk.WindowPosition.CENTER) centers the window. " "Other options are Gtk.WindowPosition.NONE, Gtk.WindowPosition.MOUSE, " "Gtk.WindowPosition.CENTER_ALWAYS, Gtk.WindowPosition.CENTER_ON_PARENT." msgstr "" "set_position(Gtk.WindowPosition.CENTER) place la fenêtre au " "centre de l'écran. Les autres options possibles sont : Gtk." "WindowPosition.NONE, Gtk.WindowPosition.MOUSE, Gtk.WindowPosition." "CENTER_ALWAYS, Gtk.WindowPosition.CENTER_ON_PARENT." #. (itstool) path: info/title #: C/GtkApplicationWindow.vala.page:8 #, fuzzy #| msgid "ApplicationWindow" msgctxt "text" msgid "ApplicationWindow (Vala)" msgstr "ApplicationWindow" #. (itstool) path: page/p #: C/GtkApplicationWindow.vala.page:23 msgid "The simplest GtkApplication Window which can support Menus." msgstr "L'application Gtk la plus simple qui prend en charge les menus." #. (itstool) path: page/code #: C/GtkApplicationWindow.vala.page:25 #, no-wrap msgid "" "\n" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\t\t/* Create the window of this application and show it. */\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\twindow.title = \"Welcome to GNOME\";\n" "\t\twindow.show ();\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/GtkApplicationWindow.vala.page:31 C/label.vala.page:31 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk.Application" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: info/title #: C/guitar-tuner.c.page:8 #, fuzzy #| msgid "Guitar Tuner" msgctxt "text" msgid "Guitar tuner (C)" msgstr "Accordeur de guitare" #. (itstool) path: info/desc #: C/guitar-tuner.c.page:11 C/guitar-tuner.py.page:11 #, fuzzy #| msgid "" #| "Use Gtk+ and GStreamer to build a simple guitar tuner application for " #| "GNOME. Shows off how to use the interface designer." msgid "" "Use GTK+ and GStreamer to build a simple guitar tuner application for GNOME. " "Shows off how to use the interface designer." msgstr "" "Utilisation de Gtk+ et de GStreamer pour construire une application " "d'accordeur de guitare simple pour GNOME. Explications sur la manière " "d'utiliser le concepteur d'interface." #. (itstool) path: credit/name #: C/guitar-tuner.c.page:19 C/guitar-tuner.cpp.page:17 #: C/guitar-tuner.py.page:19 C/guitar-tuner.vala.page:18 #: C/image-viewer.c.page:19 C/image-viewer.cpp.page:17 #: C/image-viewer.js.page:19 C/image-viewer.py.page:19 #: C/image-viewer.vala.page:19 C/index.page:18 C/magic-mirror.vala.page:19 #: C/photo-wall.c.page:18 C/record-collection.js.page:19 msgid "Johannes Schmid" msgstr "Johannes Schmid" #. (itstool) path: page/title #: C/guitar-tuner.c.page:29 C/guitar-tuner.cpp.page:27 #: C/guitar-tuner.js.page:20 C/guitar-tuner.py.page:34 #: C/guitar-tuner.vala.page:32 #, fuzzy #| msgid "Guitar Tuner" msgid "Guitar tuner" msgstr "Accordeur de guitare" #. (itstool) path: synopsis/p #: C/guitar-tuner.c.page:32 C/guitar-tuner.cpp.page:30 #: C/guitar-tuner.py.page:37 msgid "" "In this tutorial, we're going to make a program which plays tones that you " "can use to tune a guitar. You will learn how to:" msgstr "" "Dans ce tutoriel, nous allons écrire un programme qui émet des sons servant " "à accorder une guitare. Nous allons apprendre comment :" #. (itstool) path: item/p #: C/guitar-tuner.c.page:34 C/guitar-tuner.cpp.page:32 #: C/guitar-tuner.py.page:39 msgid "Set up a basic project in Anjuta" msgstr "créer un projet basique dans Anjuta," #. (itstool) path: item/p #: C/guitar-tuner.c.page:35 C/guitar-tuner.cpp.page:33 #: C/guitar-tuner.py.page:40 msgid "Create a simple GUI with Anjuta's UI designer" msgstr "" "créer une interface graphique simple avec le concepteur d'interface " "utilisateur d'Anjuta," #. (itstool) path: item/p #: C/guitar-tuner.c.page:36 C/guitar-tuner.cpp.page:34 #: C/guitar-tuner.py.page:41 msgid "Use GStreamer to play sounds" msgstr "utiliser GStreamer pour émettre des sons." #. (itstool) path: synopsis/p #: C/guitar-tuner.c.page:38 C/guitar-tuner.cpp.page:36 #: C/guitar-tuner.py.page:43 C/guitar-tuner.vala.page:41 #: C/image-viewer.js.page:39 C/image-viewer.py.page:39 #: C/image-viewer.vala.page:46 C/magic-mirror.vala.page:39 msgid "You'll need the following to be able to follow this tutorial:" msgstr "Vous avez besoin de ce qui suit pour pouvoir suivre ce tutoriel :" #. (itstool) path: item/p #: C/guitar-tuner.c.page:40 C/guitar-tuner.cpp.page:38 #: C/guitar-tuner.py.page:45 C/image-viewer.js.page:41 #: C/image-viewer.py.page:41 C/magic-mirror.vala.page:41 msgid "An installed copy of the Anjuta IDE" msgstr "" "l'installation du paquet Anjuta IDE," #. (itstool) path: item/p #: C/guitar-tuner.c.page:41 msgid "Basic knowledge of the C programming language" msgstr "des connaissances de base de la programmation en langage C" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/guitar-tuner.c.page:45 C/guitar-tuner.cpp.page:43 #: C/guitar-tuner.js.page:37 C/guitar-tuner.py.page:50 #: C/guitar-tuner.vala.page:48 #, fuzzy #| msgid "" #| "@@image: 'media/guitar-tuner.png'; md5=35e615e0f5e293671d00c5c414ac2f6b" msgctxt "_" msgid "" "external ref='media/guitar-tuner.png' md5='35e615e0f5e293671d00c5c414ac2f6b'" msgstr "" "@@image: 'media/guitar-tuner.png'; md5=35e615e0f5e293671d00c5c414ac2f6b" #. (itstool) path: section/title #: C/guitar-tuner.c.page:48 C/guitar-tuner.cpp.page:46 #: C/guitar-tuner.py.page:53 C/image-viewer.c.page:42 #: C/image-viewer.cpp.page:40 C/image-viewer.js.page:50 #: C/image-viewer.py.page:49 C/image-viewer.vala.page:57 #: C/magic-mirror.vala.page:50 C/message-board.c.page:46 C/photo-wall.c.page:52 #: C/record-collection.js.page:53 msgid "Create a project in Anjuta" msgstr "Création d'un projet dans Anjuta" #. (itstool) path: section/p #: C/guitar-tuner.c.page:49 C/guitar-tuner.cpp.page:47 #: C/guitar-tuner.py.page:54 C/guitar-tuner.vala.page:52 #: C/image-viewer.c.page:43 C/image-viewer.cpp.page:41 #: C/image-viewer.js.page:51 C/image-viewer.py.page:50 #: C/image-viewer.vala.page:58 C/magic-mirror.vala.page:51 #: C/photo-wall.c.page:53 C/record-collection.js.page:54 msgid "" "Before you start coding, you'll need to set up a new project in Anjuta. This " "will create all of the files you need to build and run the code later on. " "It's also useful for keeping everything together." msgstr "" "Avant de commencer à programmer, vous devez ouvrir un nouveau projet dans " "Anjuta. Ceci crée tous les fichiers qui vous sont nécessaires pour " "construire et exécuter votre programme plus tard. C'est aussi utile pour " "tout regrouper en un seul endroit." #. (itstool) path: item/p #: C/guitar-tuner.c.page:52 C/guitar-tuner.cpp.page:50 #: C/guitar-tuner.py.page:57 C/image-viewer.c.page:46 #: C/image-viewer.cpp.page:44 C/image-viewer.js.page:54 #: C/image-viewer.py.page:53 C/magic-mirror.vala.page:54 C/photo-wall.c.page:56 #: C/record-collection.js.page:57 msgid "" "Start Anjuta and click FileNewProject to open the project wizard." msgstr "" "Lancez Anjuta et cliquez sur FichierNouveauProjet pour ouvrir l'assistant de création de projet." #. (itstool) path: item/p #: C/guitar-tuner.c.page:55 #, fuzzy #| msgid "" #| "Choose Gtk+ (Simple) from the C tab, click " #| "Continue, and fill out your details on the next few pages. Use " #| "guitar-tuner as project name and directory." msgid "" "Choose GTK+ (Simple) from the C tab, click " "Continue, and fill out your details on the next few pages. Use " "guitar-tuner as project name and directory." msgstr "" "Sélectionnez Gtk+ (Simple) dans l'onglet C, cliquez " "sur Continuer et saisissez vos informations sur les pages " "suivantes. Utilisez guitar-tuner comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/guitar-tuner.c.page:58 msgid "" "Make sure that Configure external packages is switched ON. On the next page, select gstreamer-0.10 from the list to " "include the GStreamer library in your project." msgstr "" "Assurez-vous que Configuration des paquets externes est basculée " "sur I. Sur la page suivante, choisissez gstreamer-0.10 " "dans la liste pour inclure la bibliothèque GStreamer à votre projet." #. (itstool) path: item/p #: C/guitar-tuner.c.page:62 C/image-viewer.c.page:57 C/photo-wall.c.page:71 msgid "" "Click Apply and the project will be created for you. Open " "src/main.c from the Project or File tabs. " "You should see some code which starts with the lines:" msgstr "" "Cliquez sur Appliquer et votre projet est créé. Ouvrez src/" "main.c depuis l'onglet Projet ou l'onglet Fichiers. Vous devez voir apparaître du code commençant par les lignes :" #. (itstool) path: item/code #: C/guitar-tuner.c.page:63 C/image-viewer.c.page:58 C/photo-wall.c.page:72 #, no-wrap msgid "" "\n" "#include <config.h>\n" "#include <gtk/gtk.h>" msgstr "" #. (itstool) path: section/title #: C/guitar-tuner.c.page:71 C/guitar-tuner.cpp.page:69 #: C/guitar-tuner.vala.page:74 C/image-viewer.c.page:66 #: C/image-viewer.cpp.page:66 C/image-viewer.vala.page:113 #: C/magic-mirror.vala.page:78 msgid "Build the code for the first time" msgstr "Première construction du programme" #. (itstool) path: section/p #: C/guitar-tuner.c.page:72 msgid "" "C is a rather verbose language, so don't be surprised that the file contains " "quite a lot of code. Most of it is template code. It loads an (empty) window " "from the user interface description file and shows it. More details are " "given below; skip this list if you understand the basics:" msgstr "" "« C » est un langage plutôt verbeux, donc ne soyez pas surpris par la " "quantité de code que contient le fichier. La plupart du code est générique. " "Il charge une fenêtre (vide) à partir du fichier de description de " "l'interface et l'affiche. Vous trouverez plus de détails ci-dessous ; passez " "cette liste si vous comprenez les bases :" #. (itstool) path: item/p #: C/guitar-tuner.c.page:76 C/image-viewer.c.page:71 msgid "" "The three #include lines at the top include the config (useful autoconf build defines), gtk (user interface) and " "gi18n (internationalization) libraries. Functions from these " "libraries are used in the rest of the code." msgstr "" "Les trois lignes #include du haut incorporent les bibliothèques " "config (définitions utiles pour la construction autoconf), " "gtk (interface utilisateur) et gi18n (pour " "internationalisation). Les fonctions de ces bibliothèques seront utilisées " "dans le reste du programme." #. (itstool) path: item/p #: C/guitar-tuner.c.page:79 msgid "" "The create_window function creates a new window by opening a " "GtkBuilder file (src/guitar-tuner.ui, defined a few lines " "above), connecting its signals and then displaying it in a window. The " "GtkBuilder file contains a description of a user interface and all of its " "elements. You can use Anjuta's editor to design GtkBuilder user interfaces." msgstr "" "La fonction create_window crée une nouvelle fenêtre en ouvrant " "un fichier GtkBuilder (src/guitar-tuner.ui, défini quelques " "lignes plus haut), en connectant ses signaux et en l'affichant dans une " "fenêtre. Le fichier GtkBuilder contient une description de l'interface " "utilisateur et de tous ses éléments. Vous pouvez utiliser l'éditeur d'Anjuta " "pour concevoir des interfaces utilisateur GtkBuilder." #. (itstool) path: item/p #: C/guitar-tuner.c.page:80 C/image-viewer.c.page:75 #: C/image-viewer.vala.page:123 msgid "" "Connecting signals is how you define what happens when you push a button, or " "when some other event happens. Here, the destroy function is " "called (and quits the app) when you close the window." msgstr "" "Connecter des signaux, c'est décider de ce qui doit se passer quand on " "appuie sur un bouton ou quand quelque chose d'autre se produit. Ici, la " "fonction destroy est appelée (et quitte l'application) quand la " "fenêtre est fermée." #. (itstool) path: item/p #: C/guitar-tuner.c.page:83 C/image-viewer.c.page:78 msgid "" "The main function is run by default when you start a C " "application. It calls a few functions which set up and then run the " "application. The gtk_main function starts the GTK main loop, " "which runs the user interface and starts listening for events (like clicks " "and key presses)." msgstr "" "La fonction main est exécutée par défaut quand vous lancez une " "application C. Elle appelle d'autres fonctions qui configurent puis lancent " "l'application. La fonction gtk_main démarre la boucle " "principale de GTK, qui lance l'interface utilisateur et commence à écouter " "les événements (comme des clics de souris ou des appuis sur des touches)." #. (itstool) path: item/p #: C/guitar-tuner.c.page:86 C/image-viewer.c.page:81 msgid "" "The ENABLE_NLS conditional definition sets up gettext, which is a framework for translating applications. These functions " "specify how translation tools should handle your app when you run them." msgstr "" "La définition conditionnelle ENABLE_NLS configure " "gettext qui est un environnement pour la traduction des " "applications. Ces fonctions définissent la façon dont les objets de " "traduction doivent prendre en charge votre application quand vous l'exécutez." #. (itstool) path: section/p #: C/guitar-tuner.c.page:90 C/guitar-tuner.cpp.page:84 C/image-viewer.c.page:85 #: C/image-viewer.cpp.page:82 C/image-viewer.vala.page:133 #: C/magic-mirror.vala.page:93 msgid "" "This code is ready to be used, so you can compile it by clicking " "BuildBuild Project (or press " "ShiftF7)." msgstr "" "Le programme est prêt à être utilisé, donc vous pouvez le compiler en " "cliquant sur ConstruireConstruire le projet ou en appuyant sur MajF7." #. (itstool) path: section/p #: C/guitar-tuner.c.page:91 C/guitar-tuner.cpp.page:85 C/image-viewer.c.page:86 #: C/image-viewer.cpp.page:83 msgid "" "Press Execute on the next window that appears to configure a " "debug build. You only need to do this once, for the first build." msgstr "" "Cliquez sur Exécuter dans la fenêtre suivante pour configurer une " "construction avec débogage. Vous ne devez le faire qu'une seule fois, lors " "de la première exécution." #. (itstool) path: section/title #: C/guitar-tuner.c.page:95 C/guitar-tuner.cpp.page:89 #: C/guitar-tuner.py.page:96 C/guitar-tuner.vala.page:96 msgid "Create the user interface" msgstr "Création de l'interface utilisateur" #. (itstool) path: section/p #: C/guitar-tuner.c.page:96 C/guitar-tuner.cpp.page:90 msgid "" "A description of the user interface (UI) is contained in the GtkBuilder " "file. To edit the user interface, open src/guitar_tuner.ui. " "This will switch to the interface designer. The design window is in the " "center; widgets and widgets' properties are on the left, and the palette of " "available widgets is on the right." msgstr "" "Une description de l'interface utilisateur est contenue dans le fichier " "GtkBuilder. Pour la modifier, ouvrez le fichier src/guitar_tuner.ui. Ceci vous bascule vers le concepteur d'interface. La fenêtre de " "conception se trouve au centre ; les éléments graphiques et leurs propriétés " "sont sur la gauche et la palette des composants graphiques disponibles est " "sur la droite." #. (itstool) path: section/p #: C/guitar-tuner.c.page:98 C/guitar-tuner.cpp.page:92 #: C/guitar-tuner.py.page:99 msgid "" "The layout of every UI in GTK+ is organized using boxes and tables. Let's " "use a vertical GtkButtonBox here to assign six GtkButtons, one for each of the six guitar strings." msgstr "" "La disposition de toute interface utilisateur dans GTK+ est organisée à " "l'aide de boîtes et de tableaux. Dans cet exemple, prenons une " "GtkButtonBox verticale pour y mettre six GtkButtons, " "un pour chacune des six cordes de la guitare." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/guitar-tuner.c.page:100 C/guitar-tuner.cpp.page:94 #: C/guitar-tuner.py.page:101 C/guitar-tuner.vala.page:101 #, fuzzy #| msgid "" #| "@@image: 'media/guitar-tuner-glade.png'; " #| "md5=f6606525443ab2160f53a87a454364d0" msgctxt "_" msgid "" "external ref='media/guitar-tuner-glade.png' " "md5='f6606525443ab2160f53a87a454364d0'" msgstr "" "@@image: 'media/guitar-tuner-glade.png'; md5=f6606525443ab2160f53a87a454364d0" #. (itstool) path: item/p #: C/guitar-tuner.c.page:104 C/guitar-tuner.cpp.page:98 #: C/guitar-tuner.py.page:105 msgid "" "Select a GtkButtonBox from the Container section of " "the Palette on the right and put it into the window. In the " "Properties pane, set the number of elements to 6 (for the six " "strings) and the orientation to vertical." msgstr "" "Choisissez une GtkButtonBox (Boîte) dans la section " "Conteneurs de la Palette à droite et mettez-la dans la " "fenêtre. Dans l'onglet Propriétés, définissez le nombre " "d'éléments à 6 (pour les six cordes) et l'orientation à verticale." #. (itstool) path: item/p #: C/guitar-tuner.c.page:108 C/guitar-tuner.cpp.page:102 #: C/guitar-tuner.py.page:109 msgid "" "Now, choose a GtkButton from the palette and put it into the " "first part of the box." msgstr "" "Ensuite, choisissez un GtkButton (Bouton) dans la palette et " "mettez-le dans la première partie de la boîte." #. (itstool) path: item/p #: C/guitar-tuner.c.page:111 C/guitar-tuner.py.page:112 msgid "" "While the button is still selected, change the Label property in " "the Widgets tab to E. This will be the low E string." msgstr "" "Pendant que le bouton est encore sélectionné, modifiez la propriété " "Étiquette dans l'onglet Composants graphiques à " "E. C'est la corde E du bas." #. (itstool) path: item/p #: C/guitar-tuner.c.page:114 C/guitar-tuner.py.page:115 msgid "" "Switch to the Signals tab (inside the Widgets tab) and " "look for the clicked signal of the button. You can use this to " "connect a signal handler that will be called when the button is clicked by " "the user. To do this, click on the signal and type on_button_clicked in the Handler column and press Return." msgstr "" "Passez à l'onglet Signaux (dans l'onglet Composants " "graphiques) et recherchez le signal clicked du bouton. " "Vous pouvez l'utiliser pour connecter un gestionnaire de signal qui sera " "appelé quand le bouton est cliqué. Pour cela, cliquez sur le signal et " "saisissez on_button_clicked dans la colonne Gestionnaire et appuyez sur Entrée." #. (itstool) path: item/p #: C/guitar-tuner.c.page:117 C/guitar-tuner.py.page:118 #: C/guitar-tuner.vala.page:122 msgid "" "Repeat the above steps for the other buttons, adding the next 5 strings with " "the names A, D, G, B, and e." msgstr "" "Répétez cette procédure pour les autres boutons, ce qui ajoute les 5 autres " "cordes nommées A, D, G, B et e." #. (itstool) path: item/p #: C/guitar-tuner.c.page:120 C/guitar-tuner.py.page:121 #: C/guitar-tuner.vala.page:125 msgid "" "Save the UI design (by clicking FileSave) and keep it open." msgstr "" "Enregistrez le fichier de conception de l'interface utilisateur (en cliquant " "sur FichierEnregistrer) et laissez-le " "ouvert." #. (itstool) path: section/title #: C/guitar-tuner.c.page:126 C/guitar-tuner.vala.page:203 msgid "Creating the signal handler" msgstr "Création du gestionnaire de signal" #. (itstool) path: section/p #: C/guitar-tuner.c.page:127 C/guitar-tuner.py.page:128 msgid "" "In the UI designer, you made it so that all of the buttons will call the " "same function, on_button_clicked, when they are clicked. We need " "to add that function in the source file." msgstr "" "Dans le concepteur d'interface utilisateur, il a été fait en sorte que tous " "les boutons appellent la même fonction, on_button_clicked quand " "ils sont cliqués. Nous devons ajouter cette fonction dans notre fichier " "source." #. (itstool) path: section/p #: C/guitar-tuner.c.page:128 msgid "" "To do this, open main.c while the user interface file is still " "open. Switch to the Signals tab, which you already used to set " "the signal name. Now take the row where you set the clicked " "signal and drag it into to the source file at a position that is outside any " "function. The following code will be added to your source file:" msgstr "" "Pour cela, ouvrez main.c pendant que le fichier de l'interface " "utilisateur est encore ouvert. Allez au même onglet Signaux que " "vous aviez déjà utilisé pour nommer le signal. Prenez la ligne où vous aviez " "défini le signal clicked et faites la glisser quelque part à " "l'extérieur d'une fonction dans le fichier source. Le code suivant s'ajoute " "à votre fichier source :" #. (itstool) path: section/code #: C/guitar-tuner.c.page:131 #, no-wrap msgid "" "\n" "void on_button_clicked (GtkWidget* button, gpointer user_data)\n" "{\n" "\n" "}" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.c.page:136 msgid "" "This signal handler has two arguments: a pointer to the GtkWidget that called the function (in our case, always a GtkButton), and a pointer to some \"user data\" that you can define, but which " "we won't be using here. (You can set the user data by calling " "gtk_builder_connect_signals; it is normally used to pass a " "pointer to a data structure that you might need to access inside the signal " "handler.)" msgstr "" "Ce récepteur de signal a deux arguments : un pointeur vers le " "GtkWidget qui a appelé la fonction (dans notre cas, toujours un " "GtkButton) et un pointeur sur des « données " "utilisateur » (user_data) que vous pouvez définir, mais que nous n'utilisons " "pas ici (les données utilisateur peuvent être définies par un appel à la " "fonction gtk_builder_connect_signals ; il sert normalement à " "transmettre un pointeur à une structure de données auxquelles vous pouvez " "avoir besoin d'accéder à l'intérieur du gestionnaire de signal)." #. (itstool) path: section/p #: C/guitar-tuner.c.page:137 C/guitar-tuner.py.page:136 msgid "" "For now, we'll leave the signal handler empty while we work on writing the " "code to produce sounds." msgstr "" "Laissons le gestionnaire de signal vide pour l'instant et écrivons le code " "qui produit les sons." #. (itstool) path: section/title #: C/guitar-tuner.c.page:141 C/guitar-tuner.cpp.page:118 #: C/guitar-tuner.js.page:39 C/guitar-tuner.py.page:140 #: C/guitar-tuner.vala.page:131 msgid "GStreamer pipelines" msgstr "Les pipelines GStreamer" #. (itstool) path: section/p #: C/guitar-tuner.c.page:142 C/guitar-tuner.js.page:40 #: C/guitar-tuner.py.page:141 msgid "" "GStreamer is GNOME's multimedia framework — you can use it for playing, " "recording, and processing video, audio, webcam streams and the like. Here, " "we'll be using it to produce single-frequency tones." msgstr "" "GStreamer est l'architecture multimédia de GNOME — vous pouvez vous en " "servir pour des jeux, des enregistrements, pour traiter des flux vidéo, " "audio, de webcam entre autres. Ici, nous allons nous en servir pour émettre " "des tonalités à une seule fréquence." #. (itstool) path: section/p #: C/guitar-tuner.c.page:143 C/guitar-tuner.cpp.page:121 #: C/guitar-tuner.js.page:41 C/guitar-tuner.py.page:142 msgid "" "Conceptually, GStreamer works as follows: You create a pipeline " "containing several processing elements going from the source to the " "sink (output). The source can be an image file, a video, or a music " "file, for example, and the output could be a widget or the soundcard." msgstr "" "Le concept de GStreamer est le suivant : il y a création d'un pipeline contenant plusieurs éléments de traitement en provenance d'une " "source à destination d'un collecteur (sortie). La source " "peut être un fichier image, une vidéo ou un fichier musical, par exemple, et " "la sortie un élément graphique ou une carte son." #. (itstool) path: section/p #: C/guitar-tuner.c.page:144 C/guitar-tuner.cpp.page:122 #: C/guitar-tuner.js.page:42 C/guitar-tuner.py.page:143 #: C/guitar-tuner.vala.page:134 msgid "" "Between source and sink, you can apply various filters and converters to " "handle effects, format conversions and so on. Each element of the pipeline " "has properties which can be used to change its behaviour." msgstr "" "Entre la source et le collecteur, vous pouvez appliquer différents filtres " "et convertisseurs pour prendre en charge les effets, les conversions de " "format et ainsi de suite. Chaque élément du pipeline possède des propriétés " "pouvant être utilisées pour modifier son comportement." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/guitar-tuner.c.page:145 C/guitar-tuner.cpp.page:123 #: C/guitar-tuner.js.page:43 C/guitar-tuner.py.page:144 #: C/guitar-tuner.vala.page:135 #, fuzzy #| msgid "" #| "@@image: 'media/guitar-tuner-pipeline.png'; " #| "md5=5adc952909d92af5dae6954781b4ad5f" msgctxt "_" msgid "" "external ref='media/guitar-tuner-pipeline.png' " "md5='5adc952909d92af5dae6954781b4ad5f'" msgstr "" "@@image: 'media/guitar-tuner-pipeline.png'; " "md5=5adc952909d92af5dae6954781b4ad5f" #. (itstool) path: media/p #: C/guitar-tuner.c.page:146 C/guitar-tuner.cpp.page:124 #: C/guitar-tuner.js.page:44 C/guitar-tuner.py.page:145 #: C/guitar-tuner.vala.page:136 msgid "An example GStreamer pipeline." msgstr "Un exemple de pipeline GStreamer." #. (itstool) path: section/title #: C/guitar-tuner.c.page:151 C/guitar-tuner.py.page:150 #: C/guitar-tuner.vala.page:141 msgid "Set up the pipeline" msgstr "Configuration du pipeline" #. (itstool) path: section/p #: C/guitar-tuner.c.page:152 C/guitar-tuner.cpp.page:135 #: C/guitar-tuner.py.page:151 msgid "" "In this simple example we will use a tone generator source called " "audiotestsrc and send the output to the default system sound " "device, autoaudiosink. We only need to configure the frequency " "of the tone generator; this is accessible through the freq " "property of audiotestsrc." msgstr "" "Dans ce petit exemple, nous utilisons une source génératrice de son de " "fréquence pure appelée audiotestsrc et envoyons sa sortie au " "périphérique son par défaut du système, autoaudiosink. Il nous " "faut seulement configurer la fréquence du générateur accessible depuis la " "propriété freq de audiotestsrc." #. (itstool) path: section/p #: C/guitar-tuner.c.page:154 #, fuzzy #| msgid "" #| "Insert the following line into main.c, just below the " #| "]]> line:" msgid "" "Insert the following line into main.c, just below the " "#include <gtk/gtk.h> line:" msgstr "" "Insérez la ligne suivante dans le fichier main.c, juste en " "dessous de la ligne ]]> :" #. (itstool) path: section/code #: C/guitar-tuner.c.page:155 #, fuzzy, no-wrap #| msgid "#include <webkit/webkit.h>" msgid "#include <gst/gst.h>" msgstr "#include <webkit/webkit.h>" #. (itstool) path: section/p #: C/guitar-tuner.c.page:156 msgid "" "This includes the GStreamer library. You also need to add a line to " "initialize GStreamer; put the following code on the line above the " "gtk_init call in the main function:" msgstr "" "Cela inclut la bibliothèque de GStreamer. Ajoutez aussi une ligne pour " "initialiser GStreamer ; mettez le code suivant dans la ligne au-dessus de " "gtk_init dans la fonction main :" #. (itstool) path: section/code #: C/guitar-tuner.c.page:157 #, fuzzy, no-wrap #| msgid "\tGst::init (argc, argv);" msgid "gst_init (&argc, &argv);" msgstr "\tGst::init (argc, argv);" #. (itstool) path: section/p #: C/guitar-tuner.c.page:158 msgid "" "Then, copy the following function into main.c above the empty " "on_button_clicked function:" msgstr "" "Ensuite, copiez la fonction suivante dans le fichier main.c au-" "dessus de la fonction vide on_button_clicked :" #. (itstool) path: section/code #: C/guitar-tuner.c.page:159 #, no-wrap msgid "" "static void\n" "play_sound (gdouble frequency)\n" "{\n" "\tGstElement *source, *sink;\n" "\tGstElement *pipeline;\n" "\n" "\tpipeline = gst_pipeline_new (\"note\");\n" "\tsource = gst_element_factory_make (\"audiotestsrc\",\n" "\t \"source\");\n" "\tsink = gst_element_factory_make (\"autoaudiosink\",\n" "\t \"output\");\n" "\n" "\t/* set frequency */\n" "\tg_object_set (source, \"freq\", frequency, NULL);\n" "\n" "\tgst_bin_add_many (GST_BIN (pipeline), source, sink, NULL);\n" "\tgst_element_link (source, sink);\n" "\n" "\tgst_element_set_state (pipeline, GST_STATE_PLAYING);\n" "\n" "\t/* stop it after 500ms */\n" "\tg_timeout_add (LENGTH, (GSourceFunc) pipeline_stop, pipeline);\n" "}" msgstr "" #. (itstool) path: item/p #: C/guitar-tuner.c.page:185 msgid "" "The first five lines create source and sink GStreamer elements " "(GstElement), and a pipeline element (which will be used as a " "container for the other two elements). The pipeline is given the name \"note" "\"; the source is named \"source\" and is set to the audiotestsrc source; and the sink is named \"output\" and set to the " "autoaudiosink sink (default sound card output)." msgstr "" "Les cinq premières lignes créent les éléments GStreamer source et sink " "(collecteur) et un élément pipeline (qui sera utilisé comme conteneur pour " "les deux autres éléments). Le pipeline est nommé « note » ; la source est " "nommée « source » et définie comme étant le connecteur audiotestsrc et le collecteur est nommé « output » et défini comme étant le " "connecteur autoaudiosink (qui est la sortie par défaut de la " "carte son)." #. (itstool) path: item/p #: C/guitar-tuner.c.page:188 msgid "" "The call to g_object_set sets the freq property of " "the source element to frequency, which is passed as an argument " "to the play_sound function. This is just the frequency of the " "note in Hertz; some useful frequencies will be defined later on." msgstr "" "L'appel à g_object_set définit la propriété freq " "de l'élément source à frequency qui est transmis comme argument " "de la fonction play_sound. Il s'agit simplement de la fréquence " "de la note de musique en Hertz ; certaines fréquences utiles seront définies " "plus tard." #. (itstool) path: item/p #: C/guitar-tuner.c.page:191 msgid "" "gst_bin_add_many puts the source and sink into the pipeline. " "The pipeline is a GstBin, which is just an element that can " "contain multiple other GStreamer elements. In general, you can add as many " "elements as you like to the pipeline by adding more arguments to " "gst_bin_add_many." msgstr "" "gst_bin_add_many place la source et le collecteur dans le " "pipeline. Le pipeline est un GstBin qui est juste un élément " "qui peut contenir beaucoup d'autres éléments GStreamer. En général, vous " "pouvez ajouter autant d'éléments que vous voulez au pipeline en ajoutant " "d'autres d'arguments à gst_bin_add_many." #. (itstool) path: item/p #: C/guitar-tuner.c.page:194 msgid "" "Next, gst_element_link is used to connect the elements " "together, so the output of source (a tone) goes into the input " "of sink (which is then output to the sound card). " "gst_element_set_state is then used to start playback, by " "setting the state of the pipeline to playing (GST_STATE_PLAYING)." msgstr "" "Ensuite, gst_element_link est utilisé pour connecter les " "éléments ensemble, de sorte que la sortie de la source (une note) va à " "l'entrée du collecteur (et est ensuite envoyée à la carte son). " "gst_element_set_state sert enfin à démarrer la lecture en " "basculant l'état du pipeline à « playing » (lecture) " "(GST_STATE_PLAYING)." #. (itstool) path: section/title #: C/guitar-tuner.c.page:201 C/guitar-tuner.py.page:191 msgid "Stopping playback" msgstr "Arrêt de la lecture" #. (itstool) path: section/p #: C/guitar-tuner.c.page:202 msgid "" "We don't want to play an annoying tone forever, so the last thing " "play_sound does is to call g_timeout_add. This " "sets a timeout for stopping the sound; it waits for LENGTH " "milliseconds before calling the function pipeline_stop, and " "will keep calling it until pipeline_stop returns FALSE." msgstr "" "Comme nous ne voulons pas jouer indéfiniment une note ennuyeuse, la dernière " "chose que fait play_sound est d'appeler g_timeout_add qui définit un délai avant la coupure du son ; cela attend " "LENGTH millisecondes avant d'appeler la fonction " "pipeline_stop et continuera à l'appeler jusqu'à ce que " "pipeline_stop renvoie la valeur FALSE." #. (itstool) path: section/p #: C/guitar-tuner.c.page:203 msgid "" "Now, we'll write the pipeline_stop function which is called by " "g_timeout_add. Insert the following code above the " "play_sound function:" msgstr "" "Écrivons maintenant la fonction pipeline_stop qui est appelée " "par g_timeout_add. Insérez le code suivant au-dessus " "de la fonction play_sound :" #. (itstool) path: section/code #: C/guitar-tuner.c.page:204 #, no-wrap msgid "" "\n" "#define LENGTH 500 /* Length of playing in ms */\n" "\n" "static gboolean\n" "pipeline_stop (GstElement* pipeline)\n" "{\n" "\tgst_element_set_state (pipeline, GST_STATE_NULL);\n" "\tg_object_unref (pipeline);\n" "\n" "\treturn FALSE;\n" "}" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.c.page:215 #, fuzzy #| msgid "" #| "The call to gst_element_set_state pauses the playback of the " #| "pipeline and g_object_unref unreferences the pipeline, " #| "destroying it and freeing its memory." msgid "" "The call to gst_element_set_state stops the playback of the " "pipeline and g_object_unref unreferences the pipeline, " "destroying it and freeing its memory." msgstr "" "L'appel à gst_element_set_state met en pause la lecture du " "pipeline et g_object_unref déréférence le pipeline, le " "détruisant ainsi et effaçant sa mémoire." #. (itstool) path: section/title #: C/guitar-tuner.c.page:219 C/guitar-tuner.py.page:208 msgid "Define the tones" msgstr "Définition des notes" #. (itstool) path: section/p #: C/guitar-tuner.c.page:220 msgid "" "We want to play the correct sound when the user clicks a button. First of " "all, we need to know the frequencies for the six guitar strings, which are " "defined (at the top of main.c) as follows:" msgstr "" "Nous voulons jouer la note adéquate quand l'utilisateur clique sur un " "bouton. Avant tout, nous devons connaître la fréquence de chacune des six " "cordes de la guitare qui sont définies (au début du fichier main.c) ainsi :" #. (itstool) path: section/code #: C/guitar-tuner.c.page:221 #, no-wrap msgid "" "\n" "/* Frequencies of the strings */\n" "#define NOTE_E 329.63\n" "#define NOTE_A 440\n" "#define NOTE_D 587.33\n" "#define NOTE_G 783.99\n" "#define NOTE_B 987.77\n" "#define NOTE_e 1318.5" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.c.page:229 C/guitar-tuner.py.page:222 msgid "" "Now to flesh out the signal handler that we defined earlier, " "on_button_clicked. We could have connected every button to a " "different signal handler, but that would lead to a lot of code duplication. " "Instead, we can use the label of the button to figure out which button was " "clicked:" msgstr "" "Maintenant, nous allons étoffer le gestionnaire de signal " "on_button_clicked défini auparavant. Nous aurions pu connecter " "chaque bouton à un gestionnaire différent, mais cela aurait dupliqué " "beaucoup de code. Au lieu de ça, nous allons plutôt utiliser l'étiquette du " "bouton pour déterminer le bouton cliqué :" #. (itstool) path: section/code #: C/guitar-tuner.c.page:230 #, no-wrap msgid "" "\n" "/* Callback for the buttons */\n" "void on_button_clicked (GtkButton* button,\n" " gpointer user_data)\n" "{\n" "\tconst gchar* text = gtk_button_get_label (button);\n" "\n" "\tif (g_str_equal (text, _(\"E\")))\n" "\t play_sound (NOTE_E);\n" "\telse if (g_str_equal (text, _(\"A\")))\n" "\t play_sound (NOTE_A);\n" "\telse if (g_str_equal (text, _(\"G\")))\n" "\t play_sound (NOTE_G);\n" "\telse if (g_str_equal (text, _(\"D\")))\n" "\t play_sound (NOTE_D);\n" "\telse if (g_str_equal (text, _(\"B\")))\n" "\t play_sound (NOTE_B);\n" "\telse if (g_str_equal (text, _(\"e\")))\n" "\t play_sound (NOTE_e);\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.c.page:251 #, fuzzy #| msgid "" #| "A pointer to the GtkButton that was clicked is passed as an " #| "argument (button) to on_button_clicked. We can " #| "get the label of that button by using gtk_bin_get_child, and " #| "then get the text from that label using gtk_label_get_label." msgid "" "A pointer to the GtkButton that was clicked is passed as an " "argument (button) to on_button_clicked. We can get " "the text of that button using gtk_button_get_label." msgstr "" "Un pointeur vers le bouton GtkButton qui a été cliqué est " "transmis comme argument (button) à on_button_clicked. On peut obtenir l'étiquette de ce bouton en utilisant " "gtk_bin_get_child puis en extrayant le texte de cette étiquette " "avec gtk_label_get_label." #. (itstool) path: section/p #: C/guitar-tuner.c.page:252 #, fuzzy #| msgid "" #| "The label text is then compared to the notes that we have using " #| "g_str_equal, and play_sound is called with the " #| "frequency appropriate for that note. This plays the tone; we have a " #| "working guitar tuner!" msgid "" "The text is then compared to the notes that we have using g_str_equal, and play_sound is called with the frequency appropriate " "for that note. This plays the tone; we have a working guitar tuner!" msgstr "" "On compare ensuite le texte de cette étiquette à la note à l'aide de la " "fonction g_str_equal et play_sound est appelée " "avec la fréquence appropriée à cette note. Cela joue la note ; nous avons un " "accordeur de guitare opérationnel !" #. (itstool) path: section/title #: C/guitar-tuner.c.page:256 C/guitar-tuner.cpp.page:255 #: C/guitar-tuner.vala.page:253 C/image-viewer.c.page:222 #: C/image-viewer.cpp.page:210 C/image-viewer.vala.page:280 #: C/photo-wall.c.page:392 msgid "Build and run the application" msgstr "Construction et lancement de l'application" #. (itstool) path: section/p #: C/guitar-tuner.c.page:257 C/guitar-tuner.vala.page:254 #: C/image-viewer.c.page:223 C/image-viewer.cpp.page:211 #: C/image-viewer.vala.page:281 msgid "" "All of the code should now be ready to go. Click BuildBuild Project to build everything again, and then " "RunExecute to start the application." msgstr "" "À ce stade, tout le programme est fonctionnel. Cliquez sur " "ConstruireConstruire le projet pour " "tout reconstruire et faites ExécuterExécuter pour lancer l'application." #. (itstool) path: section/p #: C/guitar-tuner.c.page:258 C/guitar-tuner.cpp.page:257 #: C/guitar-tuner.vala.page:255 msgid "" "If you haven't already done so, choose the Debug/src/guitar-tuner application in the dialog that appears. Finally, hit Run " "and enjoy!" msgstr "" "Si ce n'est déjà fait, choisissez l'application Debug/src/guitar-" "tuner dans la boîte de dialogue qui s'affiche. Enfin, cliquez sur " "Exécuter et amusez-vous !" #. (itstool) path: section/title #: C/guitar-tuner.c.page:262 C/guitar-tuner.cpp.page:261 #: C/guitar-tuner.js.page:242 C/guitar-tuner.py.page:240 #: C/guitar-tuner.vala.page:259 C/image-viewer.c.page:228 #: C/image-viewer.cpp.page:216 C/image-viewer.js.page:316 #: C/image-viewer.py.page:230 C/image-viewer.vala.page:288 #: C/magic-mirror.vala.page:150 C/photo-wall.c.page:400 #: C/record-collection.js.page:297 msgid "Reference Implementation" msgstr "Implémentation de référence" #. (itstool) path: section/p #: C/guitar-tuner.c.page:263 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: section/title #: C/guitar-tuner.c.page:267 C/guitar-tuner.cpp.page:274 #: C/guitar-tuner.py.page:245 C/guitar-tuner.vala.page:270 #: C/image-viewer.c.page:233 C/image-viewer.cpp.page:221 #: C/image-viewer.js.page:321 C/image-viewer.py.page:235 #: C/image-viewer.vala.page:293 msgid "Next steps" msgstr "Les étapes suivantes" #. (itstool) path: section/p #: C/guitar-tuner.c.page:268 C/guitar-tuner.cpp.page:275 #: C/guitar-tuner.py.page:246 C/guitar-tuner.vala.page:271 #: C/image-viewer.c.page:234 C/image-viewer.cpp.page:222 #: C/image-viewer.js.page:322 C/image-viewer.py.page:236 #: C/image-viewer.vala.page:294 msgid "Here are some ideas for how you can extend this simple demonstration:" msgstr "Voici quelques idées sur la manière d'étendre ce simple exemple :" #. (itstool) path: item/p #: C/guitar-tuner.c.page:271 C/guitar-tuner.cpp.page:278 #: C/guitar-tuner.py.page:249 C/guitar-tuner.vala.page:274 msgid "Have the program automatically cycle through the notes." msgstr "" "Faire que le programme joue automatiquement les notes de manière cyclique." #. (itstool) path: item/p #: C/guitar-tuner.c.page:274 C/guitar-tuner.cpp.page:281 #: C/guitar-tuner.py.page:252 C/guitar-tuner.vala.page:277 msgid "Make the program play recordings of real guitar strings being plucked." msgstr "" "Faire que le programme lise des enregistrements de vraies cordes de guitare " "pincées." #. (itstool) path: item/p #: C/guitar-tuner.c.page:275 C/guitar-tuner.cpp.page:282 #: C/guitar-tuner.py.page:253 C/guitar-tuner.vala.page:278 msgid "" "To do this, you would need to set up a more complicated GStreamer pipeline " "which allows you to load and play back music files. You'll have to choose " "decoder and demuxer GStreamer elements based on the file format of " "your recorded sounds — MP3s use different elements to Ogg Vorbis files, for " "example." msgstr "" "Pour y parvenir, vous devrez configurer un pipeline GStreamer un peu plus " "sophistiqué qui vous permette de charger et lire des fichiers musicaux. Vous " "devrez choisir des éléments GStreamer décodeur et démuxeur " "basés sur le format des sons enregistrés — par exemple, les MP3 utilisent " "des éléments différents de ceux des fichiers Ogg Vorbis." #. (itstool) path: item/p #: C/guitar-tuner.c.page:276 C/guitar-tuner.cpp.page:283 #: C/guitar-tuner.py.page:254 C/guitar-tuner.vala.page:279 msgid "" "You might need to connect the elements in more complicated ways too. This " "could involve using GStreamer concepts that we didn't cover in this tutorial, such as pads. You may also find the gst-inspect " "command useful." msgstr "" "Il vous faudra aussi peut-être connecter les éléments de façon plus " "complexe. Vous aurez sans doute besoin de consulter les concepts GStreamer que nous ne couvrons pas dans ce " "tutoriel, comme les pads. La " "commande gst-inspect peut également vous être utile." #. (itstool) path: item/p #: C/guitar-tuner.c.page:279 C/guitar-tuner.cpp.page:286 #: C/guitar-tuner.py.page:257 C/guitar-tuner.vala.page:282 msgid "Automatically analyze notes that the user plays." msgstr "Analyser automatiquement les notes jouées par l'utilisateur." #. (itstool) path: item/p #: C/guitar-tuner.c.page:280 C/guitar-tuner.cpp.page:287 #: C/guitar-tuner.py.page:258 C/guitar-tuner.vala.page:283 msgid "" "You could connect a microphone and record sounds from it using an input source. Perhaps some form of spectrum analysis would allow you to " "figure out what notes are being played?" msgstr "" "Vous pourriez branchez un microphone et enregistrez les sons obtenus en " "utilisant l'entrée source. Peut-être qu'une espèce d'analyseur de spectre peut vous aider à trouver les notes jouées ?" #. (itstool) path: info/desc #: C/guitar-tuner.cpp.page:9 msgid "" "Use GTKmm and GStreamermm to build a simple guitar tuner application for " "GNOME. Shows off how to use the interface designer." msgstr "" "Utilisation de GTKmm et de GStreamermm pour construire une application " "accordeur de guitare simple pour GNOME. Explications sur la manière " "d'utiliser le concepteur d'interface." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:39 msgid "Basic knowledge of the C++ programming language" msgstr "des connaissances de base de la programmation en langage C++." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:53 msgid "" "Choose GTKmm (Simple) from the C++ tab, click " "Forward, and fill out your details on the next few pages. Use " "guitar-tuner as project name and directory." msgstr "" "Sélectionnez GTKmm (Simple) dans l'onglet C++, cliquez " "sur Continuer et saisissez vos informations sur les pages " "suivantes. Utilisez guitar-tuner comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:56 msgid "" "Make sure that Configure external packages is selected. On the " "next page, select gstreamermm-0.10 from the list to include the " "GStreamermm library in your project." msgstr "" "Assurez-vous que Configuration des paquets externes est activé. " "Sur la page suivante, choisissez gstreamermm-0.10 dans la liste " "pour inclure la bibliothèque GStreamermm à votre projet." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:60 msgid "" "Click Finished and the project will be created for you. Open " "src/main.cc from the Project or File " "tabs. You should see some code which starts with the lines:" msgstr "" "Cliquez sur Appliquer et votre projet est créé. Ouvrez src/" "main.cc depuis l'onglet Projet ou l'onglet Fichiers. Vous devez voir apparaître du code commençant par les lignes :" #. (itstool) path: item/code #: C/guitar-tuner.cpp.page:61 #, no-wrap msgid "" "\n" "#include <gtkmm.h>\n" "#include <iostream>" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:70 C/image-viewer.cpp.page:67 msgid "" "This is a very basic C++ code setting up GTKmm. More details are given " "below; skip this list if you understand the basics:" msgstr "" "C'est un programme C++ très basique pour configurer GTKmm. Vous trouverez " "plus de détails ci-dessous ; passez cette liste si vous comprenez les bases :" #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:74 msgid "" "The three #include lines at the top include the config (useful autoconf build defines), gtkmm (user interface) " "and iostream (STL). Functions from these libraries are used in " "the rest of the code." msgstr "" "Les trois lignes #include du haut incorporent les bibliothèques " "config (définitions utiles pour la construction autoconf), " "gtkmm (interface utilisateur) et iostream (STL). " "Les fonctions de ces bibliothèques seront utilisées dans le reste du " "programme." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:77 msgid "" "The main function creates a new window by opening a GtkBuilder " "file (src/guitar-tuner.ui, defined a few lines above) and then " "displaying it in a window. The GtkBuilder file contains a description of a " "user interface and all of its elements. You can use Anjuta's editor to " "design GtkBuilder user interfaces." msgstr "" "La fonction main crée une nouvelle fenêtre en ouvrant un " "fichier GtkBuilder (src/guitar-tuner.ui, défini quelques lignes " "plus haut) et en l'affichant. Le fichier GtkBuilder contient une description " "de l'interface utilisateur et de tous ses éléments. Vous pouvez utiliser " "l'éditeur d'Anjuta pour concevoir des interfaces utilisateur GtkBuilder." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:80 msgid "" "Afterwards it calls a few functions which set up and then run the " "application. The kit.run function starts the GTKmm main loop, " "which runs the user interface and starts listening for events (like clicks " "and key presses)." msgstr "" "Ensuite quelques fonctions sont appelées pour configurer puis exécuter " "l'application. La fonction kit.run démarre la boucle principale " "de GTKmm qui affiche l'interface utilisateur et commence à écouter les " "événements (comme des clics de souris ou des appuis sur des touches)." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:105 msgid "" "While the button is still selected, change the Label property in " "the Widgets tab to E. This will be the low E string. " "Also change the Name property to button_E. This is the " "name we will refer to the widget later in code." msgstr "" "Pendant que le bouton est encore sélectionné, modifiez la propriété " "Étiquette dans l'onglet Composants graphiques à " "E. Ce sera la corde E du bas. Modifiez aussi la propriété " "Nom en bouton_E. Nous nous référerons à cet élément " "graphique par ce nom plus tard dans le programme." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:109 msgid "" "Repeat the above steps for the other buttons, adding the next 5 strings with " "the labels A, D, G, B, and e " "and the names button_A, etc." msgstr "" "Répétez cette procédure pour les autres boutons, en ajoutant les 5 cordes " "suivantes avec les étiquettes A, D, G, B " "et e et les noms des bouton_A, etc. correspondants." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:112 msgid "" "Save the UI design (by clicking FileSave) and close the file." msgstr "" "Enregistrez le fichier de conception de l'interface utilisateur (en cliquant " "sur FichierEnregistrer) et fermez le " "fichier." #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:119 msgid "" "GStreamer is GNOME's multimedia framework — you can use it for playing, " "recording, and processing video, audio, webcam streams and the like. Here, " "we'll be using it to produce single-frequency tones. GStreamermm is the C++ " "binding to GStreamer which we will use here." msgstr "" "GStreamer est l'architecture multimédia de GNOME — vous pouvez vous en " "servir pour des jeux, des enregistrements, pour traiter des flux vidéo, " "audio, de webcam entre autres. Ici, nous allons nous en servir pour émettre " "des tonalités à une seule fréquence. GStreamermm est le lien C++ à GStreamer " "que nous utilisons dans cet exemple." #. (itstool) path: section/title #: C/guitar-tuner.cpp.page:129 msgid "Using GStreamermm" msgstr "Utilisation de GStreamermm" #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:130 msgid "" "To use GStreamermm, it has to be initialised. We do that by adding the " "following line of code next to the Gtk::Main kit(argc, argv); " "line in main.cc:" msgstr "" "Pour utiliser GStreamermm, il faut l'initialiser. Ajoutez la ligne de code " "suivante en dessous de la ligne Gtk::Main kit(argc, argv); du " "fichier main.cc :" #. (itstool) path: section/code #: C/guitar-tuner.cpp.page:132 #, no-wrap msgid "\tGst::init (argc, argv);" msgstr "\tGst::init (argc, argv);" #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:133 msgid "" "While we are on it, also make sure that the gstreamermm.h is " "included in main.cc properly." msgstr "" "Vérifiez que le fichier gstreamermm.h est correctement inclus " "dans main.cc." #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:137 msgid "" "To simplify the handling of the pipeline we will define a helper class " "Sound. We do that in main.cc in order to keep this " "example simple, whereas you might usually want to use a separate file:" msgstr "" "Pour simplifier la gestion du pipeline, nous définissons une classe " "assistant Sound. Ceci est réalisé dans le fichier main." "cc pour garder toute sa simplicité à cet exemple, alors que " "normalement vous le feriez dans un fichier séparé :" #. (itstool) path: section/code #: C/guitar-tuner.cpp.page:140 #, no-wrap msgid "" "\n" "class Sound\n" "{\n" "\tpublic:\n" "\t\tSound();\n" "\n" "\t\tvoid start_playing(double frequency);\n" "\t\tbool stop_playing();\n" "\n" "\tprivate:\n" "\t\tGlib::RefPtr<Gst::Pipeline> m_pipeline;\n" "\t\tGlib::RefPtr<Gst::Element> m_source;\n" "\t\tGlib::RefPtr<Gst::Element> m_sink;\n" "};\n" "\n" "Sound::Sound()\n" "{\n" "\tm_pipeline = Gst::Pipeline::create(\"note\");\n" "\tm_source = Gst::ElementFactory::create_element(\"audiotestsrc\",\n" "\t \"source\");\n" "\tm_sink = Gst::ElementFactory::create_element(\"autoaudiosink\",\n" "\t \"output\");\n" "\tm_pipeline->add(m_source);\n" "\tm_pipeline->add(m_sink);\n" "\tm_source->link(m_sink);\n" "}\n" "\n" "void Sound::start_playing (double frequency)\n" "{\n" "\tm_source->set_property(\"freq\", frequency);\n" "\tm_pipeline->set_state(Gst::STATE_PLAYING);\n" "\n" "\t/* stop it after 200ms */\n" "\tGlib::signal_timeout().connect(sigc::mem_fun(*this, &Sound::stop_playing),\n" "\t 200);\n" "}\n" "\n" "bool Sound::stop_playing()\n" "{\n" "\tm_pipeline->set_state(Gst::STATE_NULL);\n" "\treturn false;\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:184 msgid "The code has the following purpose:" msgstr "L'objectif du programme est le suivant :" #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:187 msgid "" "In the constructor, source and sink GStreamer elements (Gst::Element) are created, and a pipeline element (which will be used as a " "container for the other two elements). The pipeline is given the name \"note" "\"; the source is named \"source\" and is set to the audiotestsrc source; and the sink is named \"output\" and set to the " "autoaudiosink sink (default sound card output). After the " "elements have been added to the pipeline and linked together, the pipeline " "is ready to run." msgstr "" "Le constructeur crée les éléments GStreamer source et sink (collecteur) " "(Gst.Element) et un élément pipeline (qui sera utilisé comme " "conteneur pour les deux autres). Le pipeline est nommé « note » ; la source " "est nommée « source » et définie comme étant le connecteur " "audiotestsrc et le collecteur est nommé « output » et défini " "comme étant le connecteur autoaudiosink (qui est la sortie par " "défaut de la carte son). Après avoir lié entre eux et ajouté les éléments au " "pipeline, il est prêt à fonctionner." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:190 msgid "" "start_playing sets the source element to play a particular " "frequency and then starts the pipeline so the sound actually starts playing. " "As we don't want to have the annoying sound for ages, a timeout is set up to " "stop the pipeline after 200 ms by calling stop_playing." msgstr "" "start_playing définit l'élément source à une fréquence donnée " "et démarre réellement le pipeline pour commencer à diffuser le son. Comme " "nous ne voulons pas jouer indéfiniment une note ennuyeuse, un délai de 200 " "ms est défini avant d'interrompre le pipeline en appelant la fonction " "stop_playing." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:195 msgid "" "In stop_playing which is called when the timeout has elapsed, " "the pipeline is stopped and as such there isn't any sound output anymore. As " "GStreamermm uses reference counting through the Glib::RefPtr " "object, the memory is automatically freed once the Sound class " "is destroyed." msgstr "" "Dans stop_playing, après que la durée soit échue, le pipeline " "s'arrête et donc il n'y a plus de sortie son. Comme GStreamer utilise le " "comptage des références à l'objet Glib::RefPtr, la mémoire est " "automatiquement libérée dès que la classe Sound est détruite." #. (itstool) path: section/title #: C/guitar-tuner.cpp.page:203 msgid "Connecting the signals" msgstr "Connexion des signaux" #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:204 msgid "" "We want to play the correct sound when the user clicks a button. That means " "that we have to connect to the signal that is fired when the user clicks the " "button. We also want to provide information to the called function which " "tone to play. GTKmm makes that quite easy as we can easily bind information " "with the sigc library." msgstr "" "Nous voulons jouer la note adéquate quand l'utilisateur clique sur un " "bouton. Cela signifie que nous devons connecter le signal émis par ce " "bouton. Nous voulons aussi informer la fonction appelée du son à diffuser. " "GTKmm rend la chose facile car il est facile de lier des informations avec " "la bibliothèque sigc." #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:209 msgid "" "The function that is called when the user clicks a button can be pretty " "simple, as all the interesting stuff is done in the helper class now:" msgstr "" "La fonction appelée lors d'un clic sur un bouton peut être très simple, car " "tout le travail intéressant se fait maintenant dans la classe assistant :" #. (itstool) path: section/code #: C/guitar-tuner.cpp.page:211 #, no-wrap msgid "" "\n" "static void\n" "on_button_clicked(double frequency, Sound* sound)\n" "{\n" "\tsound->start_playing (frequency);\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:218 msgid "" "It only calls the helper class we defined before to play the correct " "frequencies. With some more clever code we would also have been able to " "directly connect to the class without using the function but we will leave " "that to use as an exercise." msgstr "" "Elle ne fait qu'appeler la classe assistant que nous avons configurée " "auparavant pour diffuser la fréquence appropriée. Avec un programme un peu " "plus malin, nous aurions pu aussi nous connecter directement à la classe " "sans passer par la fonction, mais laissons cela pour un exercice futur." #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:222 msgid "" "The code to set up the signals should be added to the main() " "function just after the builder->get_widget(\"main_window\", " "main_win); line:" msgstr "" "Le code qui configure les signaux doit être ajouté à la fonction " "main(), juste après la ligne builder->" "get_widget(\"main_window\",main_win); :" #. (itstool) path: section/code #: C/guitar-tuner.cpp.page:224 #, no-wrap msgid "" "\n" "Sound sound;\n" "Gtk::Button* button;\n" "\n" "builder->get_widget(\"button_E\", button);\n" "button->signal_clicked().connect (sigc::bind<double, Sound*>(sigc::ptr_fun(&on_button_clicked),\n" " 329.63, &sound));\n" msgstr "" #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:234 msgid "" "At first we create an instance of our helper class that we want to use now " "and declare a variable for the button we want to connect to." msgstr "" "D'abord, nous créons une instance de notre classe assistant que nous voulons " "maintenant utiliser et déclarons une variable pour le bouton que nous " "voulons connecter." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:238 msgid "" "Next, we receive the button object from the user interface that was created " "out of the user interface file. Remember that button_E is the name " "we gave to the first button." msgstr "" "Ensuite, nous récupérons l'objet bouton de l'interface utilisateur qui a été " "créé à partir du fichier de l'interface utilisateur. Souvenez-vous que " "bouton_E est le nom que nous avons donné au premier bouton." #. (itstool) path: item/p #: C/guitar-tuner.cpp.page:242 msgid "" "Finally we connect the clicked signal. This isn't fully " "straightforward because this is done in a fully type-safe way and we " "actually want to pass the frequency and our helper class to the signal " "handler. sigc::ptr_fun(&on_button_clicked) creates a " "slot for the on_button_clicked method we defined " "above. With sigc::bind we are able to pass additional arguments " "to the slot and in this case we pass the frequency (as double) and our " "helper class." msgstr "" "Enfin, nous connectons le signal clicked. Il est vrai que cela ne " "paraît pas très simple car nous prenons beaucoup de précautions sur le type " "des variables et que nous désirons en réalité transmettre notre classe " "assistant et la fréquence au récepteur de signal. sigc::ptr_fun(&" "on_button_clicked) crée un connecteur pour la méthode " "on_button_clicked définie plus haut. Nous pouvons transmettre " "d'autres arguments avec sigc::bind et dans notre exemple, nous " "transmettons la fréquence (de type « double ») et notre classe assistant." #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:249 msgid "" "Now that we have set up the E button we also need to connect the " "other buttons according to their frequencies: 440 for A, 587.33 for D, " "783.99 for G, 987.77 for B and 1318.5 for the high E. This is done in the " "same way, just passing a different frequency to the handler." msgstr "" "Après avoir configuré le bouton E, nous devons connecter les autres " "boutons en fonction de leur fréquence : 440 pour A, 587,33 pour D, 783,99 " "pour G, 987,77 pour B et 1318,5 pour E aiguë. Le processus est le même, " "seule la fréquence transmise au récepteur change." #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:256 msgid "" "All of the code should now be ready to go. Click BuildBuild Project to build everything again, and then " "RunRun to start the application." msgstr "" "À ce stade, tout le programme est fonctionnel. Cliquez sur " "ConstruireConstruire le projet pour " "tout reconstruire et faites ExécuterExécuter pour lancer l'application." #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:262 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: section/title #: C/guitar-tuner.cpp.page:266 msgid "Further Reading" msgstr "Lecture complémentaire" #. (itstool) path: section/p #: C/guitar-tuner.cpp.page:267 msgid "" "Many of the things shown above are explained in detail in the GTKmm book " "which also covers a lot more key concept for using the full power of GTKmm. " "You might also be interested in the GStreamermm reference documentation." msgstr "" "Pour des informations plus détaillées sur les exemples ci-dessus, consultez " "le manuel de GTKmm qui couvre beaucoup plus de sujets clés pour " "utiliser toute la puissance de GTKmm, ainsi que la documentation de référence de " "gstreamermm." #. (itstool) path: info/title #: C/guitar-tuner.js.page:7 #, fuzzy #| msgid "Guitar Tuner" msgctxt "text" msgid "Guitar tuner (JavaScript)" msgstr "Accordeur de guitare" #. (itstool) path: info/desc #: C/guitar-tuner.js.page:17 #, fuzzy #| msgid "" #| "Use Gtk+ and GStreamer to build a simple guitar tuner application for " #| "GNOME." msgid "" "Use GTK+ and GStreamer to build a simple guitar tuner application for GNOME." msgstr "" "Utilisation de Gtk+ et de GStreamer pour construire une application " "d'accordeur de guitare simple pour GNOME." #. (itstool) path: synopsis/p #: C/guitar-tuner.js.page:23 msgid "" "In this tutorial we'll construct a small application, Guitar Tuner, using " "JavaScript and GTK+ and GStreamer. To do and run all the code examples " "yourself, you need an editor to write code in, terminal and GNOME 3. or " "higher installed into your computer." msgstr "" "Dans ce tutoriel, nous allons construire une petite application, Accordeur " "de guitare, utilisant JavaScript, GTK+ et GStreamer. Pour écrire et lancer " "tous les exemples de code vous-même, vous avez besoin d'un éditeur pour " "écrire le code, de Terminal et d'un ordinateur sur lequel GNOME 3 ou " "supérieur est installé. Dans ce guide, nous illustrerons les éléments " "suivants :" #. (itstool) path: item/p #: C/guitar-tuner.js.page:25 #, fuzzy #| msgid "An example GStreamer pipeline." msgid "GStreamer pipelines" msgstr "Un exemple de pipeline GStreamer." #. (itstool) path: item/p #: C/guitar-tuner.js.page:26 C/weatherAppMain.js.page:23 #, fuzzy #| msgid "Script for running the application" msgid "Script for running the application" msgstr "Script de lancement de l'application" #. (itstool) path: item/p #: C/guitar-tuner.js.page:27 C/weatherAppMain.js.page:24 msgid "Libraries to import" msgstr "" #. (itstool) path: item/p #: C/guitar-tuner.js.page:28 C/weatherAppMain.js.page:25 #, fuzzy #| msgid "Creating the main window for the application" msgid "" "Creating the main window for the application" msgstr "Création de la fenêtre principale de l'application" #. (itstool) path: item/p #: C/guitar-tuner.js.page:29 msgid "Buttons for the tunes" msgstr "" #. (itstool) path: item/p #: C/guitar-tuner.js.page:30 #, fuzzy #| msgid "Making the sounds with GStreamer" msgid "Making the sounds with GStreamer" msgstr "Création des sons avec GStreamer" #. (itstool) path: item/p #: C/guitar-tuner.js.page:31 #, fuzzy #| msgid "Connecting buttons to playSound" msgid "Connecting buttons to playSound" msgstr "Connexion des boutons à playSound" #. (itstool) path: item/p #: C/guitar-tuner.js.page:32 msgid "The whole program" msgstr "" #. (itstool) path: item/p #: C/guitar-tuner.js.page:33 #, fuzzy #| msgid "Running the application form Terminal" msgid "Running the application form Terminal" msgstr "Exécution de l'application à partir de Terminal" #. (itstool) path: page/p #: C/guitar-tuner.js.page:36 C/weatherApp.js.page:40 msgid "After reading this tutorial, you should see this in your screen:" msgstr "" "Après avoir suivi ce tutoriel, vous devriez voir ceci sur votre écran :" #. (itstool) path: section/title #: C/guitar-tuner.js.page:48 C/hello-world.js.page:46 #: C/weatherAppMain.js.page:33 msgid "Script for running the application" msgstr "Script de lancement de l'application" #. (itstool) path: section/code #: C/guitar-tuner.js.page:49 C/weatherAppMain.js.page:34 #, no-wrap msgid "" "\n" " #!/usr/bin/gjs" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.js.page:51 msgid "" "This line tells how to run the script. It needs to be the first line of the " "code and it needs to be executable. To get the execution rights go to " "terminal and run in right folder: chmod +x scriptname. Or you can use the " "graphical filemanager. Just go to the right folder where your code is, right " "click you code file, choose properties, click the permissions tab and check " "the box for allow executing file as a program" msgstr "" "Cette ligne indique comment lancer le script. Elle doit être la première " "ligne de code et le script doit être exécutable. Pour donner les bonnes " "permissions, allez dans Terminal et lancer dans le dossier correct la " "commande : chmod +x nomduscript. Vous pouvez aussi utiliser le gestionnaire " "de fichiers graphique. Déplacez-vous dans le bon dossier où se trouve votre " "code, faites un clic-droit sur le fichier, sélectionnez Propriétés, cliquez " "sur l'onglet Permissions et cochez la case pour permettre l'exécution du " "fichier comme un programme." #. (itstool) path: section/code #: C/guitar-tuner.js.page:56 #, no-wrap msgid "" "\n" "var Gtk = imports.gi.Gtk;\n" "var Gst = imports.gi.Gst;\n" "\n" "const Mainloop = imports.mainloop;" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.js.page:61 msgid "" "In order to have a working program we need to import a few GObject " "Introspection -libraries to our use. For working UI, we need Gtk and for " "Gstreamer to work we need Gst. These are imported in the beginning so we " "have them at use everywhere. Also in the beginning we import a construct " "Mainloop to handle the timeout to be used with the tuning sounds." msgstr "" "Afin que le programme fonctionne, vous devez importer quelques bibliothèques " "d'introspection GObject à utiliser. Pour faire une interface graphique, nous " "avons besoin de Gtk et pour que Gstreamer fonctionne, nous avons besoin de " "Gst. Elles sont importées au début afin de pouvoir les utiliser partout " "ensuite. Nous importons également au début une boucle principale Mainloop " "pour prendre en charge le délai à utiliser avec les sons d'accordage." #. (itstool) path: section/title #: C/guitar-tuner.js.page:64 C/hello-world.js.page:61 C/hello-world.py.page:52 #: C/hello-world.vala.page:44 C/weatherAppMain.js.page:49 msgid "Creating the main window for the application" msgstr "Création de la fenêtre principale de l'application" #. (itstool) path: section/code #: C/guitar-tuner.js.page:65 #, no-wrap msgid "" "\n" "Gtk.init(null, 0);\n" "Gst.init(null, 0);\n" "\n" "var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n" "guitarwindow.title = \"Guitar Tuner\";\n" "guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n" "\n" "guitarwindow.show();\n" "Gtk.main();" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.js.page:75 msgid "" "Importing Gtk and Gst is not enough, we need to initialize them in order to " "get them working. When Gtk and Gst are up and running we need to create the " "window for the application. Later we are going to put all the buttons for " "making sounds inside this window. In order to get the window showing, we " "need to tell it to show and we need also to run the code with the Gtk.main()" msgstr "" "L'importation de Gtk et Gst n'est pas suffisante, nous devons les " "initialiser afin qu'elles fonctionnent. Lorsque c'est fait, nous devons " "créer la fenêtre de l'application. Plus tard, nous allons placer tous les " "boutons pour faire les sons dans cette fenêtre. Afin que la fenêtre " "s'affiche, nous devons lui dire de s'afficher et nous avons besoin de lancer " "le code avec Gtk.main()." #. (itstool) path: section/title #: C/guitar-tuner.js.page:78 msgid "Buttons for the tunes" msgstr "Les boutons pour les sons" #. (itstool) path: section/code #: C/guitar-tuner.js.page:79 #, no-wrap msgid "" "\n" "var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n" "\n" "var E = new Gtk.Button({label: \"E\"});\n" "var A = new Gtk.Button({label: \"A\"});\n" "var D = new Gtk.Button({label: \"D\"});\n" "var G = new Gtk.Button({label: \"G\"});\n" "var B = new Gtk.Button({label: \"B\"});\n" "var e = new Gtk.Button({label: \"e\"});\n" "\n" "guitar_box.add(E);\n" "guitar_box.add(A);\n" "guitar_box.add(D);\n" "guitar_box.add(G);\n" "guitar_box.add(B);\n" "guitar_box.add(e);\n" "\n" "guitarwindow.add(guitar_box);\n" "\n" "guitar_box.show_all();" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.js.page:99 msgid "" "Because Gtk.Window can only contain a single widget, we need to create " "something under it to be able to add all the necessary buttons inside it. In " "this example we use Buttonbox. After creating the Buttonbox we create " "buttons with necessary labels. After we have the buttons we need to add them " "to the Buttonbox and the Buttonbox must be added to the Gtk.Window and " "everything in the Buttonbox must be shown." msgstr "" "Puisque Gtk.Window ne peut contenir qu'un seul élément graphique, nous " "devons créer quelque chose en dessous pour pouvoir ajouter tous les boutons " "nécessaires à l'intérieur. Dans cet exemple, nous utilisons Buttonbox. Après " "la création de Buttonbox, nous créons les boutons avec les étiquettes " "nécessaires. Après l'obtention des boutons, nous devons les ajouter au " "Buttonbox et celui-ci doit être ajouté au Gtk.Window et tout ce qui est dans " "Buttonbox doit être affiché." #. (itstool) path: section/p #: C/guitar-tuner.js.page:100 msgid "" "After this stage you should have a window appearing to your screen showing 6 " "buttons. Right now the buttons don't do anything and we shall address that " "issue later. Before we can connect the button signals to something we need " "to code that something first." msgstr "" "Après cette étape, vous devriez voir s'afficher une fenêtre à l'écran avec " "les 6 boutons. Pour l'instant, les boutons n'ont aucune action et nous " "verrons cela plus tard. Pour pouvoir connecter les signaux des boutons à " "quelque chose, il nous faut d'abord coder ce quelque chose." #. (itstool) path: section/title #: C/guitar-tuner.js.page:103 msgid "Making the sounds with GStreamer" msgstr "Création des sons avec GStreamer" #. (itstool) path: section/code #: C/guitar-tuner.js.page:104 #, no-wrap msgid "" "\n" "var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n" "\n" "function playSound(frequency){\n" " var pipeline = new Gst.Pipeline({name: \"note\"});\n" " var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n" " var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n" "\n" " source.set_property('freq', frequency);\n" " pipeline.add(source);\n" " pipeline.add(sink);\n" " source.link(sink);\n" " pipeline.set_state(Gst.State.PLAYING);\n" "\n" " Mainloop.timeout_add(500, function () {\n" " pipeline.set_state(Gst.State.NULL);\n" "\t return false;\n" " });\n" "}" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.js.page:123 #, fuzzy #| msgid "" #| "The first thing we need to do is decide what tunes we want to make when " #| "we push a button. The frequencies list takes care of that. After that we " #| "get to actually making the sounds with the function playSound. For " #| "function playSound we give as an input a frequency (that we just defined " #| "in the frequencies variable). First thing we need to construct is a " #| "pipeline, a source and a sink. For the source we set the frequency. To " #| "the pipeline we add both the source and the sink and then we tell it to " #| "keep playing. As a last thing we use the const Mainloop to get the " #| "pipeline to pause after a 500ms." msgid "" "The first thing we need to do is decide what tunes we want to make when we " "push a button. The frequencies list takes care of that. After that we get to " "actually making the sounds with the function playSound. For function " "playSound we give as an input a frequency (that we just defined in the " "frequencies variable). First thing we need to construct is a pipeline, a " "source and a sink. For the source we set the frequency. To the pipeline we " "add both the source and the sink and then we tell it to keep playing. As a " "last thing we use the const Mainloop to get the pipeline to stop after a " "500ms." msgstr "" "La chose à faire en premier est de décider quel son doit être émis à l'appui " "sur un bouton. La liste des fréquences gère cela. Ensuite, il nous faut " "émettre les sons avec la fonction playSound, à laquelle nous donnons en " "entrée une fréquence (définie par les variables fréquences). Construisons " "d'abord un pipeline, une source et un collecteur. Définissons la fréquence " "pour la source, ajoutons la source et le collecteur au pipeline et faisons " "le jouer. Enfin, utilisons la constante Mainloop pour arrêter l'émission du " "son après 500ms." #. (itstool) path: section/p #: C/guitar-tuner.js.page:124 #, fuzzy #| msgid "" #| "Now we have the method of playing a tune when clicking a button. Next " #| "well make the conncetions between pushing a button and playing the " #| "correct sound from that button." msgid "" "Now we have the method of playing a tune when clicking a button. Next well " "make the connections between pushing a button and playing the correct sound " "from that button." msgstr "" "Maintenant, nous avons la bonne méthode pour émettre un son après appui sur " "un bouton. Faisons ensuite la connexion entre l'appui sur un bouton et " "l'émission du son correct relié à ce bouton." #. (itstool) path: section/title #: C/guitar-tuner.js.page:127 msgid "Connecting buttons to playSound" msgstr "Connexion des boutons à playSound" #. (itstool) path: section/code #: C/guitar-tuner.js.page:128 #, no-wrap msgid "" "\n" "E.connect(\"clicked\", function() {\n" " playSound(frequencies.E);\n" "});\n" "A.connect(\"clicked\", function(){\n" " playSound(frequencies.A);\n" "});\n" "D.connect(\"clicked\", function(){\n" " playSound(frequencies.D);\n" "});\n" "G.connect(\"clicked\", function(){\n" " playSound(frequencies.G);\n" "});\n" "B.connect(\"clicked\", function(){\n" " playSound(frequencies.B);\n" "});\n" "e.connect(\"clicked\", function(){\n" " playSound(frequencies.e);\n" "});" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.js.page:147 #, fuzzy #| msgid "" #| "The method of connecting button clicks to playSound with the correct tune " #| "is by using the connect method of the button widget. So we choose a " #| "button to be connected and type E.connect(\"clicked\", function()" #| "{playSound(frequencies.E);}); The connect tells that when pushing E, " #| "something should happen. The \"clicked\" tells the type of something " #| "happening to E and then in the function(){}; we the playSound happen with " #| "the correct tune that should be associated to the button." msgid "" "The method of connecting button clicks to playSound with the correct tune is " "by using the connect method of the button widget. So we choose a button to " "be connected and type E.connect(\"clicked\", function()" "{playSound(frequencies.E);}); The connect tells that " "when pushing E, something should happen. The clicked tells the " "type of the signal happening to E and then in the function(){}; " "we call playSound with the correct note that should be associated with the " "button." msgstr "" "Pour connecter les clics des boutons à la fonction playSound avec la " "tonalité correcte, utilisez la méthode connect de l'élément graphique " "button : choisissez un bouton à connecter et saisissez E.connect(\"clicked" "\", function(){playSound(frequencies.E);}) ; la connection indique qu'en " "appuyant sur E, quelque chose doit se produire. « clicked » indique ce qui " "arrive à E et ensuite ce qui se passe dans la function(){} ; enfin la " "fonction playSound renvoie la tonalité correcte à associer au bouton." #. (itstool) path: section/title #: C/guitar-tuner.js.page:157 msgid "The whole program" msgstr "Le programme complet" #. (itstool) path: section/p #: C/guitar-tuner.js.page:158 #, fuzzy #| msgid "" #| "So this is what all the parts combined looks like. When running this " #| "code, you should be able to tune your guitar(if you have correctly " #| "calibrated speakers)." msgid "" "So this is what all the parts combined looks like. When running this code, " "you should be able to tune your guitar (if you have correctly calibrated " "speakers)." msgstr "" "Voici donc ce que donne toutes les parties assemblées. Lorsque vous exécutez " "ce code, vous devriez être capable d'accorder votre guitare (si vous avez " "correctement calibré vos haut-parleurs)." #. (itstool) path: section/code #: C/guitar-tuner.js.page:159 #, no-wrap msgid "" "\n" "#!/usr/bin/gjs\n" "var Gtk = imports.gi.Gtk;\n" "var Gst = imports.gi.Gst;\n" "\n" "const Mainloop = imports.mainloop;\n" "\n" "Gtk.init(null, 0);\n" "Gst.init(null, 0);\n" "\n" "var guitarwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL, border_width: 100});\n" "guitarwindow.title = \"Guitar Tuner\";\n" "guitarwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n" "\n" "var guitar_box = new Gtk.ButtonBox ({orientation: Gtk.Orientation.VERTICAL, spacing: 10});\n" "\n" "var E = new Gtk.Button({label: \"E\"});\n" "var A = new Gtk.Button({label: \"A\"});\n" "var D = new Gtk.Button({label: \"D\"});\n" "var G = new Gtk.Button({label: \"G\"});\n" "var B = new Gtk.Button({label: \"B\"});\n" "var e = new Gtk.Button({label: \"e\"});\n" "\n" "var frequencies = {E: 329.63, A: 440,\tD: 587.33,\tG: 783.99,\tB: 987.77,\te: 1318.5}\n" "\n" "\n" "function playSound(frequency){\n" " var pipeline = new Gst.Pipeline({name: \"note\"});\n" "\n" " var source = Gst.ElementFactory.make(\"audiotestsrc\",\"source\");\n" " var sink = Gst.ElementFactory.make(\"autoaudiosink\",\"output\");\n" "\n" " source.set_property('freq', frequency);\n" " pipeline.add(source);\n" " pipeline.add(sink);\n" " source.link(sink);\n" " pipeline.set_state(Gst.State.PLAYING);\n" "\n" " Mainloop.timeout_add(500, function () {\n" " pipeline.set_state(Gst.State.NULL);\n" "\t return false;\n" "});\n" "}\n" "\n" "E.connect(\"clicked\", function() {\n" " playSound(frequencies.E);\n" "});\n" "A.connect(\"clicked\", function(){\n" " playSound(frequencies.A);\n" "});\n" "D.connect(\"clicked\", function(){\n" " playSound(frequencies.D);\n" "});\n" "G.connect(\"clicked\", function(){\n" " playSound(frequencies.G);\n" "});\n" "B.connect(\"clicked\", function(){\n" " playSound(frequencies.B);\n" "});\n" "e.connect(\"clicked\", function(){\n" " playSound(frequencies.e);\n" "});\n" "\n" "guitar_box.add(E);\n" "guitar_box.add(A);\n" "guitar_box.add(D);\n" "guitar_box.add(G);\n" "guitar_box.add(B);\n" "guitar_box.add(e);\n" "\n" "guitarwindow.add(guitar_box);\n" "\n" "guitar_box.show_all();\n" "guitarwindow.show();\n" "Gtk.main();" msgstr "" #. (itstool) path: section/title #: C/guitar-tuner.js.page:237 msgid "Running the application form Terminal" msgstr "Exécution de l'application à partir de Terminal" #. (itstool) path: section/p #: C/guitar-tuner.js.page:238 msgid "" "To run this application open Terminal, go to the folder where your " "application is stored and then run" msgstr "" "Pour lancer cette application, ouvrez Terminal, allez dans le dossier où " "votre application est enregistrée et lancez" #. (itstool) path: section/screen #: C/guitar-tuner.js.page:238 #, no-wrap msgid " $ GJS_PATH=`pwd` gjs guitarTuner.js " msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.js.page:243 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: info/title #: C/guitar-tuner.py.page:8 #, fuzzy #| msgid "Guitar Tuner" msgctxt "text" msgid "Guitar tuner (Python)" msgstr "Accordeur de guitare" #. (itstool) path: item/p #: C/guitar-tuner.py.page:46 msgid "Basic knowledge of the Python programming language" msgstr "de connaissances de base du langage de programmation Python." #. (itstool) path: item/p #: C/guitar-tuner.py.page:60 msgid "" "Choose PyGTK (automake) from the Python tab, click " "Continue, and fill out your details on the next few pages. Use " "guitar-tuner as project name and directory." msgstr "" "Sélectionnez PyGTK (automake) dans l'onglet Python, " "cliquez sur Continuer et saisissez vos informations sur les pages " "suivantes. Utilisez guitar-tuner comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/guitar-tuner.py.page:63 msgid "" "Click Apply and the project will be created for you. Open " "src/guitar_tuner.py from the Project or File tabs. You should see some code which starts with the lines:" msgstr "" "Cliquez sur Appliquer et le projet est créé. Ouvrez src/" "guitar_tuner.py depuis l'onglet Projet ou l'onglet " "Fichiers. Vous devez voir apparaître du code commençant par les " "lignes :" #. (itstool) path: item/code #: C/guitar-tuner.py.page:64 #, no-wrap msgid "" "\n" "from gi.repository import Gtk, GdkPixbuf, Gdk\n" "import os, sys" msgstr "" #. (itstool) path: section/title #: C/guitar-tuner.py.page:72 msgid "Run the code for the first time" msgstr "Exécution du programme pour la première fois" #. (itstool) path: section/p #: C/guitar-tuner.py.page:73 msgid "" "Most of the code in the file is template code. It loads an (empty) window " "from the user interface description file and shows it. More details are " "given below; skip this list if you understand the basics:" msgstr "" "La plupart du code dans ce fichier est générique. Il charge une fenêtre " "(vide) à partir du fichier de description de l'interface et l'affiche. Vous " "trouverez plus de détails ci-dessous ; passez cette liste si vous comprenez " "les bases :" # Bruno : Pas de "include the" #. (itstool) path: item/p #: C/guitar-tuner.py.page:77 msgid "" "The import lines at the top include the tell Python to load the " "user interface and system libraries needed." msgstr "" "Les lignes import tout en haut, indiquent à Python de charger " "l'interface utilisateur et les bibliothèques système nécessaires." #. (itstool) path: item/p #: C/guitar-tuner.py.page:81 msgid "" "A class is declared that will be the main class for our application. In the " "__init__ method the main window is loaded from the GtkBuilder " "file (src/guitar-tuner.ui) and the signals are connected." msgstr "" "Nous déclarons une classe qui est la classe principale de notre application. " "Dans la méthode __init__, la fenêtre principale est chargée " "depuis le fichier GtkBuilder (src/guitar-tuner.ui) et les " "signaux sont connectés." #. (itstool) path: item/p #: C/guitar-tuner.py.page:84 msgid "" "Connecting signals is how you define what happens when you push a button, or " "when some other event happens. Here, the destroy method is " "called (and quits the app) when you close the window." msgstr "" "Connecter des signaux, c'est décider de ce qui doit se passer quand on " "appuie sur un bouton ou quand quelque chose d'autre se produit. Ici, la " "méthode destroy est appelée (et quitte l'application) quand la " "fenêtre est fermée." #. (itstool) path: item/p #: C/guitar-tuner.py.page:87 msgid "" "The main function is run by default when you start a Python " "application. It just creates an instance of the main class and starts the " "main loop to bring up the window." msgstr "" "La fonction main est exécutée par défaut quand vous lancez une " "application Python. Elle crée juste une instance de la classe principale et " "démarre la boucle principale pour afficher la fenêtre." #. (itstool) path: section/p #: C/guitar-tuner.py.page:92 msgid "" "This code is ready to be used, so you can run it by clicking " "RunExecute." msgstr "" "Le programme est prêt à être utilisé et vous pouvez l'exécuter avec " "ExécuterExécuter." #. (itstool) path: section/p #: C/guitar-tuner.py.page:97 msgid "" "A description of the user interface (UI) is contained in the GtkBuilder " "file. To edit the user interface, open src/guitar_tuner.ui. " "This will switch to the interface designer. The design window is in the " "center; widgets and widgets' properties are on the right, and the palette of " "available widgets is on the left." msgstr "" "Une description de l'interface utilisateur est contenue dans le fichier " "GtkBuilder. Pour la modifier, ouvrez le fichier src/guitar_tuner.ui. Ceci vous bascule vers le concepteur d'interface. La fenêtre de " "conception se trouve au centre ; les éléments graphiques et leurs propriétés " "sont sur la droite et la palette des composants graphiques disponibles est " "sur la gauche." #. (itstool) path: section/title #: C/guitar-tuner.py.page:127 msgid "Write the signal handler" msgstr "Écriture du gestionnaire de signal" #. (itstool) path: section/p #: C/guitar-tuner.py.page:129 msgid "" "To do this, open guitar_tuner.py while the user interface file " "is still open. Switch to the Signals tab, which you already used " "to set the signal name. Now take the row where you set the clicked signal and drag it into to the source file inside the class. The " "following code will be added to your source file:" msgstr "" "Pour cela, ouvrez guitar_tuner.py pendant que le fichier " "interface utilisateur est encore ouvert. Allez au même onglet Signaux que vous aviez déjà utilisé pour nommer le signal. Prenez la ligne où " "vous aviez défini le signal clicked et faites-la glisser dans la " "classe du fichier source. Le code suivant s'ajoute à votre fichier source :" #. (itstool) path: section/code #: C/guitar-tuner.py.page:131 #, no-wrap msgid "" "\n" "def on_button_clicked (self, button):\n" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.py.page:135 msgid "" "This signal handler has two arguments: the usual Python class pointer, and " "the Gtk.Button that called the function." msgstr "" "Ce récepteur de signal possède deux arguments : le pointeur classique de " "Python et Gtk.Button qui appelle la fonction." #. (itstool) path: section/p #: C/guitar-tuner.py.page:153 msgid "" "Change the import line in guitar_tuner.py, just at the " "beginning to :" msgstr "" "Modifiez la ligne import au début du fichier guitar_tuner.py " "en :" #. (itstool) path: section/code #: C/guitar-tuner.py.page:154 #, no-wrap msgid "from gi.repository import Gtk, Gst, GObject " msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.py.page:155 msgid "" "The Gst includes the GStreamer library. You also need to " "initialise GStreamer properly which is done in the main() " "method with this call added above the app = GUI() line:" msgstr "" "Gst contient la bibliothèque de GStreamer. Il vous faut aussi " "initialiser correctement GStreamer ce qui est réalisé dans la méthode " "main() par cet appel à ajouter au-dessus de la ligne app " "= GUI() :" #. (itstool) path: section/code #: C/guitar-tuner.py.page:158 #, no-wrap msgid "Gst.init_check(sys.argv)" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.py.page:159 msgid "" "Then, copy the following function into the class in guitar_tuner.py somewhere:" msgstr "" "Copiez ensuite la fonction suivante quelque part dans la classe de " "guitar_tuner.py :" #. (itstool) path: section/code #: C/guitar-tuner.py.page:160 #, no-wrap msgid "" "\n" "def play_sound(self, frequency):\n" "\tpipeline = Gst.Pipeline(name='note')\n" "\tsource = Gst.ElementFactory.make('audiotestsrc', 'src')\n" "\tsink = Gst.ElementFactory.make('autoaudiosink', 'output')\n" "\n" "\tsource.set_property('freq', frequency)\n" "\tpipeline.add(source)\n" "\tpipeline.add(sink)\n" "\tsource.link(sink)\n" "\tpipeline.set_state(Gst.State.PLAYING)\n" "\n" "\tGObject.timeout_add(self.LENGTH, self.pipeline_stop, pipeline)" msgstr "" #. (itstool) path: item/p #: C/guitar-tuner.py.page:175 msgid "" "The first three lines create source and sink GStreamer elements and a " "pipeline element (which will be used as a container for the other two " "elements). The pipeline is given the name \"note\"; the source is named " "\"source\" and is set to the audiotestsrc source; and the sink " "is named \"output\" and set to the autoaudiosink sink (default " "sound card output)." msgstr "" "Les trois premières lignes créent les éléments GStreamer source et sink " "(collecteur) et un élément pipeline (qui sera utilisé comme conteneur pour " "les deux autres éléments). Le pipeline est nommé « note » ; la source est " "nommée « source » et est définie comme étant le connecteur " "audiotestsrc et le collecteur est nommé « output » et est " "défini comme étant le connecteur autoaudiosink (qui est la " "sortie par défaut de la carte son)." #. (itstool) path: item/p #: C/guitar-tuner.py.page:178 msgid "" "The call to source.set_property sets the freq " "property of the source element to frequency, which was passed " "as an argument to the play_sound function. This is just the " "frequency of the note in Hertz; some useful frequencies will be defined " "later on." msgstr "" "L'appel à source.set_property définit la propriété freq de l'élément source à frequency qui est transmis comme " "argument de la fonction play_sound. Il s'agit simplement de la " "fréquence de la note de musique en Hertz ; certaines fréquences utiles " "seront définies plus tard." #. (itstool) path: item/p #: C/guitar-tuner.py.page:181 msgid "" "The next two lines call pipeline.add, putting the source and " "sink into the pipeline. The pipeline can contain multiple other GStreamer " "elements. In general, you can add as many elements as you like to the " "pipeline by calling its add method repeatedly." msgstr "" "Les deux lignes suivantes appellent pipeline.add qui place la " "source et le collecteur dans le pipeline. Le pipeline peut contenir beaucoup " "d'autres éléments GStreamer. En général, vous pouvez ajouter autant " "d'éléments que vous voulez au pipeline en faisant autant d'appels " "supplémentaires à add." #. (itstool) path: item/p #: C/guitar-tuner.py.page:184 msgid "" "Next pipeline.set_state is used to start playback, by setting " "the state of the pipeline to playing (Gst.State.PLAYING)." msgstr "" "Ensuite, pipeline.set_state est utilisé pour démarrer la " "lecture en basculant l'état du pipeline à « playing » (lecture) (Gst." "State.PLAYING)." #. (itstool) path: section/p #: C/guitar-tuner.py.page:192 msgid "" "We don't want to play an annoying tone forever, so the last thing " "play_sound does is to call GObject.timeout_add. " "This sets a timeout for stopping the sound; it waits for LENGTH " "milliseconds before calling the function pipeline_stop, and " "will keep calling it until pipeline_stop returns False." msgstr "" "Comme nous ne voulons pas jouer indéfiniment une note ennuyeuse, la dernière " "chose que fait play_sound est d'appeler GObject." "timeout_add qui définit un délai avant la coupure du son ; cela " "attend LENGTH millisecondes avant d'appeler la fonction " "pipeline_stop et continuera à l'appeler jusqu'à ce que " "pipeline_stop renvoie la valeur False." #. (itstool) path: section/p #: C/guitar-tuner.py.page:193 msgid "" "Now, we'll write the pipeline_stop function which is called by " "GObject.timeout_add. Insert the following code above " "the play_sound function:" msgstr "" "Écrivons maintenant la fonction pipeline_stop qui est appelée " "par GObject.timeout_add. Insérez le code suivant au-dessus de la fonction play_sound :" #. (itstool) path: section/code #: C/guitar-tuner.py.page:194 #, no-wrap msgid "" "\n" "def pipeline_stop(self, pipeline):\n" "\tpipeline.set_state(Gst.State.NULL)\n" "\treturn False\n" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.py.page:199 msgid "" "You need to define the LENGTH constant inside the class, so add " "this code at the beginning of the main class:" msgstr "" "Vous devez définir la constante LENGTH dans la classe, donc " "ajoutez ce code au début de la classe principale :" #. (itstool) path: section/code #: C/guitar-tuner.py.page:201 #, no-wrap msgid "" "\n" "LENGTH = 500\n" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.py.page:204 #, fuzzy #| msgid "" #| "The call to pipeline.set_state pauses the playback of the " #| "pipeline." msgid "" "The call to pipeline.set_state stops the playback of the " "pipeline." msgstr "" "L'appel à pipeline.set_state met en pause la lecture du " "pipeline." #. (itstool) path: section/p #: C/guitar-tuner.py.page:209 msgid "" "We want to play the correct sound when the user clicks a button. First of " "all, we need to know the frequencies for the six guitar strings, which are " "defined (at the beginning of the main class) inside a dictionary so we can " "easily map them to the names of the strings:" msgstr "" "Nous voulons jouer la note adéquate quand l'utilisateur clique sur un " "bouton. Avant tout, nous devons connaître la fréquence de chacune des six " "cordes de la guitare qui sont définies (au début de la classe principale) " "dans un dictionnaire de façon à pouvoir facilement les associer aux noms des " "cordes :" #. (itstool) path: section/code #: C/guitar-tuner.py.page:211 #, no-wrap msgid "" "\n" "# Frequencies of the strings\n" "frequencies = {\n" "\t'E': 329.63,\n" "\t'A': 440,\n" "\t'D': 587.33,\n" "\t'G': 783.99,\n" "\t'B': 987.77,\n" "\t'e': 1318.5\n" "}\n" msgstr "" #. (itstool) path: section/code #: C/guitar-tuner.py.page:223 #, no-wrap msgid "" "\n" "def on_button_clicked(self, button):\n" "\tlabel = button.get_child()\n" "\ttext = label.get_label()\n" "\n" "\tself.play_sound (self.frequencies[text])\n" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.py.page:230 msgid "" "The button that was clicked is passed as an argument (button) " "to on_button_clicked. We can get the label of that button by " "using button.get_child, and then get the text from that label " "using label.get_label." msgstr "" "Le bouton qui a été cliqué est transmis comme argument (button) " "à on_button_clicked. On peut obtenir l'étiquette de ce bouton " "en utilisant button.get_child puis en extrayant le texte de " "cette étiquette avec label.get_label." #. (itstool) path: section/p #: C/guitar-tuner.py.page:231 msgid "" "The label text is then used as a key for the dictionary and " "play_sound is called with the frequency appropriate for that " "note. This plays the tone; we have a working guitar tuner!" msgstr "" "Le texte de cette étiquette est alors utilisé comme clé du dictionnaire et " "la fonction play_sound est appelée avec la fréquence appropriée " "à cette note. Cela joue la note ; nous avons un accordeur de guitare " "opérationnel !" #. (itstool) path: section/title #: C/guitar-tuner.py.page:235 C/image-viewer.js.page:311 #: C/image-viewer.py.page:225 C/record-collection.js.page:292 msgid "Run the application" msgstr "Exécution de l'application" #. (itstool) path: section/p #: C/guitar-tuner.py.page:236 msgid "" "All of the code should now be ready to go. Click RunExecute to start the application. Enjoy!" msgstr "" "Tout le programme nécessaire doit maintenant être fonctionnel. Cliquez sur " "ExécuterExécuter pour lancer " "l'application. Amusez-vous bien !" #. (itstool) path: section/p #: C/guitar-tuner.py.page:241 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: info/desc #: C/guitar-tuner.vala.page:10 #, fuzzy #| msgid "" #| "Use Gtk+ and GStreamer to build a simple guitar " #| "tuner application for GNOME. Shows off how to use the interface designer." msgid "" "Use GTK+ and GStreamer to build a simple guitar tuner " "application for GNOME. Shows off how to use the interface designer." msgstr "" "Utilisation de Gtk+ et de GStreamer pour construire une " "application d'accordeur de guitare simple pour GNOME. Explications sur la " "manière d'utiliser le concepteur d'interface." #. (itstool) path: synopsis/p #: C/guitar-tuner.vala.page:35 msgid "" "In this tutorial you will create an application which plays tones that you " "can use to tune a guitar. You will learn how to:" msgstr "" "Dans ce tutoriel, nous allons écrire un programme qui émet des sons servant " "à accorder une guitare. Nous allons apprendre comment :" #. (itstool) path: item/p #: C/guitar-tuner.vala.page:37 msgid "" "Set up a basic project using the Anjuta IDE." msgstr "" "paramétrer un projet de base en utilisant Anjuta IDE," #. (itstool) path: item/p #: C/guitar-tuner.vala.page:38 msgid "Create a simple GUI with Anjuta's UI designer." msgstr "" "créer une interface graphique simple avec le concepteur d'interface " "utilisateur d'Anjuta," #. (itstool) path: item/p #: C/guitar-tuner.vala.page:39 msgid "" "Use the GStreamer library to play sounds." msgstr "" "utiliser la bibliothèque GStreamer pour jouer des sons." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:43 C/image-viewer.vala.page:48 msgid "" "Basic knowledge of the Vala programming language." msgstr "" "les connaissances de base du langage de programmation Vala." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:44 C/image-viewer.vala.page:49 msgid "An installed copy of Anjuta." msgstr "une copie installée de Anjuta." #. (itstool) path: section/title #: C/guitar-tuner.vala.page:51 msgid "Create a project in Anjuta" msgstr "Création d'un projet dans Anjuta" #. (itstool) path: item/p #: C/guitar-tuner.vala.page:55 C/image-viewer.vala.page:63 msgid "" "Start Anjuta and click Create a new project or " "FileNewProject to open the " "project wizard." msgstr "" "Lancez Anjuta et cliquez sur Créer un nouveau projet " "ou FichierNouveauProjet " "pour ouvrir l'assistant de création de projet." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:58 #, fuzzy #| msgid "" #| "Click on the Vala tab and select Gtk+ (Simple). " #| "Click Continue, and fill out your details on the next few " #| "pages. Use guitar-tuner as project name and directory." msgid "" "Click on the Vala tab and select GTK+ (Simple). Click " "Continue, and fill out your details on the next few pages. Use " "guitar-tuner as project name and directory." msgstr "" "Sélectionnez Gtk+ (Simple) dans l'onglet Vala, cliquez " "sur Continuer et saisissez vos informations sur les pages " "suivantes. Utilisez guitar-tuner comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:61 msgid "" "Make sure that Configure external packages is switched ON. On the next page, select gstreamer-0.10 from the list to " "include the GStreamer library in your project. Click Continue" msgstr "" "Assurez-vous que Configuration des paquets externes est basculée " "sur I. Sur la page suivante, choisissez gstreamer-0.10 dans " "la liste pour inclure la bibliothèque GStreamer à votre projet. Cliquez sur " "Continuer." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:65 msgid "" "Click Apply and the project will be created for you. From the " "Project or Files tab, open src/guitar_tuner." "vala by double-clicking on it. You should see some code which starts " "with the lines:" msgstr "" "Cliquez sur Appliquer et votre projet est créé. Ouvrez src/" "guitar_tuner.vala en faisant un double clic depuis l'onglet " "Projet ou l'onglet Fichiers. Vous devez voir " "apparaître du code commençant par les lignes :" #. (itstool) path: item/code #: C/guitar-tuner.vala.page:66 C/magic-mirror.vala.page:70 #, no-wrap msgid "" "\n" "using GLib;\n" "using Gtk;" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.vala.page:75 msgid "" "The code loads an (empty) window from the user interface description file " "and displays it. More details are given below; you may choose to skip this " "list if you understand the basics:" msgstr "" "Ce programme charge une fenêtre (vide) à partir du fichier de description de " "l'interface et l'affiche. Vous trouverez plus de détails ci-dessous ; passez " "cette liste si vous comprenez les bases :" #. (itstool) path: item/p #: C/guitar-tuner.vala.page:79 C/magic-mirror.vala.page:82 msgid "" "The two using lines import namespaces so we don't have to name " "them explicitly." msgstr "" "Les deux lignes using importent des espaces de noms que nous " "n'aurons plus à nommer explicitement." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:82 msgid "" "The constructor of the Main class creates a new window by " "opening a GtkBuilder file (src/guitar-tuner.ui, defined a few " "lines above), connecting its signals and then displaying it in a window. " "This GtkBuilder file contains a description of a user interface and all of " "its elements. You can use Anjuta's editor to design GtkBuilder user " "interfaces." msgstr "" "Le constructeur de la classe Main crée une nouvelle fenêtre en " "ouvrant un fichier GtkBuilder (src/guitar-tuner.ui, défini " "quelques lignes plus haut), en connectant son signal puis en l'affichant " "dans une fenêtre. Ce fichier GtkBuilder contient la description d'une " "interface utilisateur et tous ses éléments. On peut utiliser l'éditeur " "d'Anjuta pour concevoir des interfaces utilisateur GtkBuilder." #. (itstool) path: note/p #: C/guitar-tuner.vala.page:84 msgid "" "Connecting signals is how you define what happens when you push a button, or " "when some other event happens. Here, the on_destroy function is " "called (and quits the app) when you close the window." msgstr "" "Connecter des signaux, c'est décider de ce qui doit se passer quand on " "appuie sur un bouton ou quand quelque chose d'autre se produit. Ici, la " "fonction on_destroy est appelée (et quitte l'application) quand " "la fenêtre est fermée." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:88 msgid "" "The static main function is run by default when you start a " "Vala application. It calls a few functions which create the Main class, set " "up and then run the application. The Gtk.main function starts " "the GTK main loop, which runs the user interface and starts listening for " "events (like clicks and key presses)." msgstr "" "La fonction statique main est exécutée par défaut quand vous " "lancez une application Vala. Elle appelle d'autres fonctions qui créent la " "classe Main, configurent puis exécutent l'application. La fonction Gtk." "Main démarre la boucle principale de GTK, qui lance l'interface " "utilisateur et commence à écouter les événements (comme des clics de souris " "ou des appuis sur des touches)." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:92 msgid "" "This code is ready to be used, so you can compile it by clicking " "BuildBuild Project (or press " "ShiftF7). When you do this, a dialog " "will appear. Change the Configuration to Default and " "then click Execute to configure the build directory. You only " "need to do this once, for the first build." msgstr "" "Le programme est prêt à être utilisé, donc vous pouvez le compiler en " "cliquant sur ConstruireConstruire le projet ou en appuyant sur MajF7. " "Ceci fait apparaître une boîte de dialogue. Pour configurer le répertoire de " "compilation, modifiez la Configuration à Par défaut et " "cliquez sur Exécuter. Il ne faut le faire qu'une seule fois, à la " "première compilation." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:97 msgid "" "A description of the user interface (UI) is contained in the GtkBuilder file " "src/guitar_tuner.ui defined at the top of the class. To edit " "the user interface, open src/guitar_tuner.ui by double-clicking " "on it in the Project or Files section. This will " "switch to the interface designer. The design window is in the center; " "Widgets and the widget properties are on the right, and the " "Palette of available widgets is on the left." msgstr "" "Une description de l'interface utilisateur est contenue dans le fichier " "GtkBuilder src/guitar_tuner.ui défini au début de la classe. " "Pour la modifier, ouvrez le fichier src/guitar_tuner.ui en " "faisant un double clic depuis les onglets Projet ou " "Fichiers. Ceci vous renvoie vers le concepteur d'interface. La " "fenêtre de conception se trouve au centre ; les éléments graphiques et leurs propriétés sont sur la droite et la palette des " "éléments graphiques disponibles est sur la gauche." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:99 msgid "" "The layout of every UI in GTK+ is organized using boxes and tables. Let's " "use a vertical GtkButtonBox here to assign six GtkButtons, one for each of " "the six guitar strings." msgstr "" "La disposition de toute interface utilisateur dans GTK+ est organisée à " "l'aide de boîtes et de tableaux. Dans cet exemple, prenons une GtkButtonBox " "verticale pour y mettre six GtkButtons, un pour chacune des six cordes de la " "guitare." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:105 msgid "" "In the Palette tab, from the Containers section, " "select a Button Box (GtkButtonBox) by clicking on the icon. Then " "click on the design window in the center to place it into the window. A " "dialog will display where you can set the Number of items to " "6. Then click Create." msgstr "" "Dans l'onglet Palette de la section Conteneurs, " "choisissez une Boîte (GtkButtonBox) en cliquant sur l'icône. " "Cliquez ensuite sur la fenêtre de conception au centre pour la placer dans " "la fenêtre. Une boîte de dialogue apparaît dans laquelle vous pouvez définir " "le nombre d'éléments à 6. Cliquez ensuite sur " "Créer." #. (itstool) path: note/p #: C/guitar-tuner.vala.page:106 msgid "" "You can also change the Number of elements and the " "Orientation in the General tab on the right." msgstr "" "Vous pouvez aussi modifier le Nombre d'éléments et " "l'Orientation dans l'onglet Général sur la droite." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:110 msgid "" "Now, from the Control and Display section of the Palette choose a Button (GtkButton) by clicking on it. Place it into " "the first section of the GtkButtonBox by clicking in the first section." msgstr "" "Maintenant, à partir de la section Contrôle et affichage de la " "section Palette, sélectionnez un Bouton (GtkButton) en " "cliquant dessus et disposez-le dans la première case du GtkButtonBox en " "cliquant sur celle-ci." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:113 msgid "" "While the button is still selected, scroll down in the General " "tab on the right to the Label property, and change it to E. This will be the low E guitar string." msgstr "" "Pendant que le bouton est encore sélectionné, déplacez-vous dans l'onglet " "Général à droite de la propriété Étiquette et modifiez-" "la en E. C'est la corde E en bas de la guitare." #. (itstool) path: note/p #: C/guitar-tuner.vala.page:114 msgid "" "The General tab is located in the Widgets section on " "the right." msgstr "" "L'onglet Général est situé dans la section Composants " "graphiques sur la droite." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:119 msgid "" "Click on the Signals tab in the Widgets section on the " "right, and look for the clicked signal of the button. You can " "use this to connect a signal handler that will be called when the button is " "clicked by the user. To do this, click on the signal and type " "main_on_button_clicked in the Handler column and " "press the Enter." msgstr "" "Passez à l'onglet Signaux dans la section Composants " "graphiques et recherchez le signal clicked du bouton. " "Vous pouvez l'utiliser pour connecter un gestionnaire de signal qui sera " "appelé quand le bouton est cliqué. Pour cela, cliquez sur le signal et " "saisissez main_on_button_clicked dans la colonne " "Gestionnaire et appuyez sur Entrée." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:132 msgid "" "This section will show you how to create the code to produce sounds. GStreamer is GNOME's multimedia framework — you can use it for " "playing, recording, and processing video, audio, webcam streams and the " "like. Here, we'll be using it to produce single-frequency tones." msgstr "" "Cette section va vous montrer comment créer un programme qui produit des " "sons. GStreamer est l'architecture multimédia de GNOME — vous " "pouvez vous en servir pour des jeux, des enregistrements, pour traiter des " "flux vidéo, audio, de webcam entre autres. Ici, nous allons nous en servir " "pour émettre des tonalités à une seule fréquence." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:133 msgid "" "Conceptually, GStreamer works as follows: You create a pipeline containing several processing " "elements going from the source to the sink (output). The " "source can be an image file, a video, or a music file, for example, and the " "output could be a widget or the soundcard." msgstr "" "Le concept de GStreamer est le suivant : il y a création d'un pipeline contenant " "plusieurs éléments de traitement en provenance d'une source à " "destination d'un collecteur (sortie). La source peut être un " "fichier image, une vidéo ou un fichier musical, par exemple, et la sortie un " "élément graphique ou une carte son." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:142 msgid "" "In this example we will use a tone generator source called " "audiotestsrc and send the output to the default system sound " "device, autoaudiosink. We only need to configure the frequency " "of the tone generator; this is accessible through the freq " "property of audiotestsrc." msgstr "" "Dans cet exemple, nous utilisons une source génératrice de son de fréquence " "pure appelée audiotestsrc et envoyons sa sortie au périphérique " "son par défaut du système, autoaudiosink. Il nous faut " "seulement configurer la fréquence du générateur accessible depuis la " "propriété freq de audiotestsrc." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:144 msgid "" "We need to add a line to initialize GStreamer; put the following code on the " "line above the Gtk.init call in the main function:" msgstr "" "Il faut ajouter une ligne pour initialiser GStreamer ; écrivez le code " "suivant dans la ligne au-dessus de l'appel à Gtk.init dans la " "fonction main :" #. (itstool) path: section/code #: C/guitar-tuner.vala.page:145 #, fuzzy, no-wrap #| msgid "\tGst::init (argc, argv);" msgid "Gst.init (ref args);" msgstr "\tGst::init (argc, argv);" #. (itstool) path: section/p #: C/guitar-tuner.vala.page:146 msgid "" "Then, copy the following function into guitar_tuner.vala inside " "our Main class:" msgstr "" "Ensuite, copiez la fonction suivante dans le fichier guitar_tuner." "vala à l'intérieur de notre classe Main :" #. (itstool) path: section/code #: C/guitar-tuner.vala.page:147 #, no-wrap msgid "" "\n" "Gst.Element sink;\n" "Gst.Element source;\n" "Gst.Pipeline pipeline;\n" "\n" "private void play_sound(double frequency)\n" "{\n" "\tpipeline = new Gst.Pipeline (\"note\");\n" "\tsource = Gst.ElementFactory.make (\"audiotestsrc\",\n" "\t \"source\");\n" "\tsink = Gst.ElementFactory.make (\"autoaudiosink\",\n" "\t \"output\");\n" "\n" "\t/* set frequency */\n" "\tsource.set (\"freq\", frequency);\n" "\n" "\tpipeline.add (source);\n" "\tpipeline.add (sink);\n" "\tsource.link (sink);\n" "\n" "\tpipeline.set_state (Gst.State.PLAYING);\n" "\n" "\t/* stop it after 200ms */\n" "\tvar time = new TimeoutSource(200);\n" "\n" "\ttime.set_callback(() => {\n" "\t\tpipeline.set_state (Gst.State.NULL);\n" "\t\treturn false;\n" "\t});\n" "\ttime.attach(null);\n" "}" msgstr "" #. (itstool) path: item/p #: C/guitar-tuner.vala.page:181 msgid "" "The first three lines create source and sink GStreamer elements (Gst.Element), and a pipeline element (which will be used as a container " "for the other two elements). Those are class variables so they are defined " "outside the method. The pipeline is given the name \"note\"; the source is " "named \"source\" and is set to the audiotestsrc source; and the " "sink is named \"output\" and set to the autoaudiosink sink " "(default sound card output)." msgstr "" "Les trois premières lignes créent les éléments GStreamer source et sink " "(collecteur) (Gst.Element) et un élément pipeline element (qui " "sera utilisé comme conteneur pour les deux autres). Ce sont des variables de " "classe et sont donc définies en dehors de la méthode. Le pipeline est nommé " "« note » ; la source est nommée « source » et le collecteur est nommé " "« output » et est défini comme étant le connecteur autoaudiosink (qui est la sortie par défaut de la carte son)." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:184 msgid "" "The call to source.set sets the freq property of the " "source element to frequency, which is passed in as an argument " "to the play_sound function. This is just the frequency of the " "note in Hertz; some useful frequencies will be defined later on." msgstr "" "L'appel à source.set définit la propriété freq de " "l'élément source à frequency qui est transmis comme argument de " "la fonction play_sound. Il s'agit simplement de la fréquence de " "la note de musique en Hertz ; certaines fréquences utiles seront définies " "plus tard." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:187 msgid "" "pipeline.add puts the source and sink into the " "pipeline. The pipeline is a Gst.Bin, which is just an element that " "can contain multiple other GStreamer elements. In general, you can add as " "many elements as you like to the pipeline by adding more calls to " "pipeline.add." msgstr "" "pipeline.add place la source et le collecteur dans le " "pipeline. Le pipeline est un Gst.Bin, c.-à-d. juste un élément qui " "peut contenir beaucoup d'autres éléments GStreamer. En général, vous pouvez " "ajouter autant d'éléments que vous voulez au pipeline en faisant autant " "d'appels supplémentaires à pipeline.add." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:190 msgid "" "Next, sink.link is used to connect the elements together, " "so the output of source (a tone) goes into the input of sink (which is then " "output to the sound card). pipeline.set_state is then used to start playback, by setting the state of the pipeline to " "playing (Gst.State.PLAYING)." msgstr "" "Ensuite, sink.link sert à lier les éléments ensemble, de sorte " "que la sortie de la source (une note) va à l'entrée du collecteur (et est " "ensuite envoyée à la carte son). pipeline.set_state sert enfin à démarrer la lecture en basculant l'état du pipeline à " "« playing » (lecture) (Gst.State.PLAYING)." #. (itstool) path: item/p #: C/guitar-tuner.vala.page:193 msgid "" "We don't want to play an annoying tone forever, so the last thing " "play_sound does is to add a TimeoutSource. This " "sets a timeout for stopping the sound; it waits for 200 milliseconds before " "calling a signal handler defined inline that stops and destroys the " "pipeline. It returns false to remove itself from the timeout, " "otherwise it would continue to be called every 200 ms." msgstr "" "Comme nous ne voulons pas jouer indéfiniment une note ennuyeuse, la dernière " "chose que fait play_sound est d'ajouter un TimeoutSource qui définit un délai avant la coupure du son ; cela attend 200 " "millisecondes avant d'appeler un gestionnaire de signal défini ici même, qui " "stoppe et détruit le pipeline. Il renvoie false pour se " "supprimer lui-même du délai d'attente, sinon il serait constamment appelé " "toutes les 200 ms." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:204 msgid "" "In the UI designer, you made it so that all of the buttons will call the " "same function, on_button_clicked, when they are clicked. Actually " "we type main_on_button_clicked which tells the UI designer that " "this method is part of our Main. We need to add that function " "in the source file." msgstr "" "Dans le concepteur d'interface utilisateur, il a été fait en sorte que tous " "les boutons appellent la même fonction, on_button_clicked quand " "ils sont cliqués. En réalité, nous saisissons main_on_button_clicked qui indique au concepteur d'interface utilisateur que cette méthode " "fait partie de notre fonction Main. Nous devons ajouter cette " "fonction dans notre fichier source." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:205 msgid "" "To do this, in the user interface file (guitar_tuner.ui) select one of the " "buttons by clicking on it, then open guitar_tuner.vala (by " "clicking on the tab in the center). Switch to the Signals tab on " "the right, which you used to set the signal name. Now take the row where you " "set the clicked signal and drag and drop it into to the source " "file at the beginning of the class. The following code will be added to your " "source file:" msgstr "" "Pour cela, dans le fichier interface utilisateur (guitar_tuner.ui), " "sélectionnez un des boutons en cliquant dessus, puis ouvrez " "guitar_tuner.vala (en cliquant sur l'onglet au milieu). Allez " "sur la droite, dans l'onglet Signaux que vous aviez déjà utilisé " "pour nommer le signal. Prenez maintenant la ligne où vous aviez défini le " "signal clicked et faites-la glisser dans le fichier source au " "début de la classe. Le code suivant s'ajoute à votre fichier source :" #. (itstool) path: section/code #: C/guitar-tuner.vala.page:207 #, no-wrap msgid "" "\n" "public void on_button_clicked (Gtk.Button sender) {\n" "\n" "}" msgstr "" #. (itstool) path: note/p #: C/guitar-tuner.vala.page:212 msgid "" "You can also just type the code at the beginning of the class instead of " "using the drag and drop." msgstr "" "Vous pouvez aussi saisir seulement le code au début de la classe au lieu " "d'utiliser le glisser-déposer." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:213 msgid "" "This signal handler has only one argument: the Gtk.Widget that called " "the function (in our case, always a Gtk.Button)." msgstr "" "Le récepteur du signal n'a qu'un seul argument : le Gtk.Widget qui a " "appelé la fonction (dans notre cas, toujours un Gtk.Button)." #. (itstool) path: section/title #: C/guitar-tuner.vala.page:219 msgid "Define the signal handler" msgstr "Définition du gestionnaire de signal" #. (itstool) path: section/p #: C/guitar-tuner.vala.page:220 msgid "" "We want to play the correct sound when the user clicks a button. For this, " "we flesh out the signal handler which we defined above, " "on_button_clicked. We could have connected every button to a " "different signal handler, but that would lead to a lot of code duplication. " "Instead, we can use the label of the button to figure out which button was " "clicked:" msgstr "" "Nous voulons jouer la note adéquate quand l'utilisateur clique sur un " "bouton. Pour cela, nous allons étoffer le gestionnaire de signal défini " "auparavant. Nous aurions pu connecter chaque bouton à un gestionnaire " "différent, mais cela aurait dupliqué beaucoup de code. Au lieu de ça, nous " "allons plutôt utiliser l'étiquette du bouton pour déterminer le bouton " "cliqué :" #. (itstool) path: section/code #: C/guitar-tuner.vala.page:221 #, no-wrap msgid "" "\n" "public void on_button_clicked (Gtk.Button sender) {\n" "\tvar label = sender.get_child () as Gtk.Label;\n" "\tswitch (label.get_label()) {\n" "\t\tcase \"E\":\n" "\t\t\tplay_sound (329.63);\n" "\t\t\tbreak;\n" "\t\tcase \"A\":\n" "\t\t\tplay_sound (440);\n" "\t\t\tbreak;\n" "\t\tcase \"D\":\n" "\t\t\tplay_sound (587.33);\n" "\t\t\tbreak;\n" "\t\tcase \"G\":\n" "\t\t\tplay_sound (783.99);\n" "\t\t\tbreak;\n" "\t\tcase \"B\":\n" "\t\t\tplay_sound (987.77);\n" "\t\t\tbreak;\n" "\t\tcase \"e\":\n" "\t\t\tplay_sound (1318);\n" "\t\t\tbreak;\n" "\t\tdefault:\n" "\t\t\tbreak;\n" "\t}\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/guitar-tuner.vala.page:248 msgid "" "The Gtk.Button that was clicked is passed as an argument " "(sender) to on_button_clicked. We can get the " "label of that button by using get_child, and then get the text " "from that label using get_label." msgstr "" "Le bouton Gtk.Button qui a été cliqué est transmis comme " "argument (sender) à on_button_clicked. Nous " "pouvons obtenir l'étiquette de ce bouton en utilisant get_child " "puis, le texte de cette étiquette en utilisant get_label." #. (itstool) path: section/p #: C/guitar-tuner.vala.page:249 msgid "" "The switch statement compares the label text to the notes that we can play, " "and play_sound is called with the frequency appropriate for " "that note. This plays the tone; we have a working guitar tuner!" msgstr "" "L'instruction « switch » compare le texte de l'étiquette à la note que nous " "pouvons jouer et play_sound est appelé avec la fréquence " "appropriée à cette note. Cela fonctionne ; nous obtenons un accordeur de " "guitare opérationnel !" #. (itstool) path: section/p #: C/guitar-tuner.vala.page:260 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: section/title #: C/guitar-tuner.vala.page:264 C/magic-mirror.vala.page:157 msgid "Further reading" msgstr "Documentation complémentaire" #. (itstool) path: section/p #: C/guitar-tuner.vala.page:265 msgid "" "To find out more about the Vala programming language you might want to check " "out the Vala Tutorial and the Vala API Documentation" msgstr "" "Pour en savoir plus à propos de la programmation en langage Vala, consultez " "le manuel Vala et " "la Documentation de Vala API." #. (itstool) path: info/desc #: C/hellognome.js.page:17 #, fuzzy #| msgid "A first Gtk application" msgid "Your first GNOME application!" msgstr "Une première application Gtk" #. (itstool) path: page/title #: C/hellognome.js.page:20 msgid "1. Hello, GNOME!" msgstr "" #. (itstool) path: synopsis/p #: C/hellognome.js.page:22 msgid "" "This tutorial will show you how to write your first GNOME application in " "JavaScript. You will use JavaScript to write for GNOME the same way you " "would for the web. Afterwards, you will learn how to use \"native\" widgets, " "to write applications that look and feel like other GNOME apps." msgstr "" #. (itstool) path: note/p #: C/hellognome.js.page:23 msgid "" "Have you gotten GNOME installed on your computer, and gedit set up to write code with? You'll want to do these " "things first." msgstr "" #. (itstool) path: section/title #: C/hellognome.js.page:29 #, fuzzy #| msgid "A button that links to a web page" msgid "Let's start with a web page" msgstr "Un bouton qui crée un lien vers une page Web" #. (itstool) path: section/p #: C/hellognome.js.page:31 msgid "" "Here's some basic HTML, CSS, and JavaScript code. Does this look familiar?" msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:32 #, no-wrap msgid "" "\n" "<!DOCTYPE html>\n" "<html>\n" " <head>\n" " <meta charset=\"utf-8\">\n" " <title>Hello, GNOME!</title>\n" "\n" " <!-- Use JavaScript to show a greeting when someone clicks the button -->\n" " <script type=\"application/javascript\">\n" " function greeting () {\n" " document.getElementById (\"greeting\").innerHTML = (\"O hai!\");\n" " }\n" " </script>\n" "\n" " <!-- Very basic CSS style using the GNOME font -->\n" " <style type=\"text/css\">\n" " body {\n" " font-face: Cantarell, sans-serif;\n" " text-align: center; }\n" " </style>\n" "\n" " </head>\n" " <body>\n" " <br /> <br />\n" " <button type=\"button\" onclick=\"greeting()\">Hello, GNOME!</button>\n" "\n" " <!-- Empty H1 element gets filled in when the button is clicked -->\n" " <h1 id=\"greeting\"></h1>\n" " </body>\n" "</html>\n" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:64 msgid "" "Let's save this as hellognome.html, and see what it looks like " "when we run it!" msgstr "" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/hellognome.js.page:66 #, fuzzy #| msgid "" #| "@@image: 'media/switchanimals.png'; md5=513ae15dcf68e15eef30b76420b8c714" msgctxt "_" msgid "" "external ref='media/hellognomewebapp.png' " "md5='948efb6148ede3bc6b47b4b0bbe4a74f'" msgstr "" "@@image: 'media/switchanimals.png'; md5=513ae15dcf68e15eef30b76420b8c714" #. (itstool) path: section/p #: C/hellognome.js.page:68 msgid "" "You can run the above code by opening hellognome.html " "in a web browser. But here, we're going to create a GNOME application that " "runs our web app inside of it, just like you see in the screenshot. You'll " "be able to resize and maximize the window, and click the X in the corner to " "close it, just like you'd expect from any other GNOME app. The difference is " "that this one will run our web code inside of it." msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:69 msgid "" "The best part? We're going to continue to use JavaScript, to write all the " "parts that make our app work with GNOME. Let's look at the code, and see how " "it's done!" msgstr "" #. (itstool) path: section/title #: C/hellognome.js.page:73 #, fuzzy #| msgid "Creating the main window for the application" msgid "Creating a GNOME window to frame our web app" msgstr "Création de la fenêtre principale de l'application" #. (itstool) path: section/p #: C/hellognome.js.page:75 msgid "" "First, we need to tell GNOME that this is a JavaScript application, which " "uses gjs. Gjs is GNOME's way of turning your JavaScript code into " "instructions it understands, so this line always has to go at the start of " "your applications." msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:76 #, no-wrap msgid "" "\n" "#!/usr/bin/gjs\n" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:79 msgid "Then we should set the versions of the libraries we'll be using." msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:80 #, no-wrap msgid "" "\n" "imports.gi.versions.Gtk = '3.0';\n" "imports.gi.versions.WebKit2 = '4.0';\n" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:84 msgid "After that, we need to tell GNOME which libraries we want to import." msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:85 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "#!/usr/bin/gjs\n" #| "\n" #| "const Gtk = imports.gi.Gtk;\n" #| "const Lang = imports.lang;\n" msgid "" "\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "const Webkit = imports.gi.WebKit2;\n" msgstr "" "\n" "#!/usr/bin/gjs\n" "\n" "const Gtk = imports.gi.Gtk;\n" "const Lang = imports.lang;\n" #. (itstool) path: section/p #: C/hellognome.js.page:90 msgid "" "Just like how add-on libraries like jQuery let us do extra things with " "JavaScript, each of these libraries gives us new capabilities for our GNOME " "apps:" msgstr "" #. (itstool) path: item/p #: C/hellognome.js.page:92 msgid "" "Gtk is the basic part of any GNOME application, which lets you " "create windows and widgets and tie them together." msgstr "" #. (itstool) path: item/p #: C/hellognome.js.page:93 msgid "" "GLib is a helper library, which lets us do things like tell " "GNOME where the hellognome.html file we created is." msgstr "" #. (itstool) path: item/p #: C/hellognome.js.page:94 msgid "" "And Webkit is a web rendering engine, which we'll use to " "basically create a browser window to open our HTML file with." msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:97 #, fuzzy #| msgid "Creating the application window" msgid "Now we create the application itself:" msgstr "Création de la fenêtre de l'application" #. (itstool) path: section/code #: C/hellognome.js.page:98 #, no-wrap msgid "" "\n" "class HelloGNOME {\n" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:101 msgid "" "This will look familiar to you if you've worked with object-oriented " "JavaScript before. That's right; our whole application is a class called " "HelloGNOME." msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:103 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "const WelcomeToTheGrid = new Lang.Class({\n" #| " Name: 'Welcome to the Grid',\n" #| "\n" #| " // Create the application itself\n" #| " _init: function() {\n" #| " this.application = new Gtk.Application();\n" #| "\n" #| " // Connect 'activate' and 'startup' signals to the callback functions\n" #| " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" #| " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" #| " },\n" #| "\n" #| " // Callback function for 'activate' signal presents windows when active\n" #| " _onActivate: function() {\n" #| " this._window.present();\n" #| " },\n" #| "\n" #| " // Callback function for 'startup' signal builds the UI\n" #| " _onStartup: function() {\n" #| " this._buildUI ();\n" #| " },\n" msgid "" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" msgstr "" "\n" "const WelcomeToTheGrid = new Lang.Class({\n" " Name: 'Bienvenue devant la Grid',\n" "\n" " // Création de l'application\n" " _init: function() {\n" " this.application = new Gtk.Application();\n" "\n" " // Connection des signaux 'activate' et 'startup' aux fonctions de rappel\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'activate' présente la fenêtre quand elle est activée\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Fonction de rappel pour que le signal 'startup' construise l'interface graphique\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" #. (itstool) path: section/p #: C/hellognome.js.page:123 msgid "" "Here's some code you will more or less copy-and-paste for every JavaScript " "application you build. It creates a new Application, and then binds its " "activate and startup signals to functions that make the window show itself " "and build its user interface, respectively." msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:124 msgid "" "What does that mean? Well, everything in a GNOME application sends out a " "signal when something important happens. A button might send out the clicked " "signal when you click on it, for instance. Our job is to connect the signals " "to functions which handle them, and make the things that we want to have " "happen occur. We do this using each object's connect method, which takes two " "arguments: The signal we want to handle, and the bound function, which we " "have to use to tell connect which function we want to have handle the signal." msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:125 msgid "" "In this case, we want _onActivate to handle the activate signal, and " "_onStartup to handle the startup signal. _onActivate just tells the window " "to present itself; so basically, whenever you Alt " "Tab to the application it appears, like you would expect " "it to. _onStartup calls _buildUI, which is the function that creates our " "user interface and is the next part that we will look at." msgstr "" #. (itstool) path: note/p #: C/hellognome.js.page:126 msgid "" "When you copy and paste the above code for your own applications, be sure to " "change the class name to a unique one each time." msgstr "" #. (itstool) path: section/title #: C/hellognome.js.page:130 msgid "Designing our window's UI" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:131 msgid "" "In the _buildUI function, we're going to tell GNOME about our window and the " "things inside it, one at a time. After that, we're going to connect " "everything together and put it all on display." msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:133 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " title: \"Welcome to GNOME\",\n" " default_height: 200,\n" " default_width: 400,\n" " window_position: Gtk.WindowPosition.CENTER });\n" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:146 msgid "" "The first object we create is an ApplicationWindow. It needs a title to go " "in the title bar, and its application property needs to be the application " "that we created, above. Beyond that, there are various ways of customizing " "how it looks, which the ApplicationWindow reference page will go into more detail about. " "As you can see here, we gave it a default height and width (measured in " "pixels), and told GNOME we want our window to appear in the center of the " "screen." msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:147 #, no-wrap msgid "" "\n" " // Create a webview to show the web app\n" " this._webView = new Webkit.WebView ();\n" "\n" " // Put the web app into the webview\n" " this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n" " \"/hellognome.html\", null));\n" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:155 msgid "" "Remember how we imported Webkit right at the start? Here we're creating a " "new instance of a Webkit class called a WebView, which is more or less a " "browser window you can put inside of your app. After that, we then give it " "the URI that we want it to load when the application starts up." msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:156 msgid "" "We could just give it a web URI, like http://gnome.org. Instead, here we use a couple of GLib helper " "functions to tell the WebView where our hellognome.html file " "is. GLib.get_current_dir returns the directory that our app's running in, " "and GLib.filename_to_uri turns our file's path and filename into a URI that " "the WebView's load_uri function understands. (filename_to_uri's second " "parameter should be null unless you know what it's used for and have a " "reason for changing it.)" msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:157 #, no-wrap msgid "" "\n" " // Put the webview into the window\n" " this._window.add (this._webView);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:167 msgid "" "Each window can hold one, and only one, widget. Normally, we'd use a " "container widget like a Grid to put multiple " "widgets into, then use the window's add function to add the Grid to it. " "Here, we just need the WebView, so that's all we add to the window. After " "that, as the last part of the _buildUI function that creates our window, we " "tell the window to show itself and its contents." msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:168 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new HelloGNOME ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:173 #, fuzzy #| msgid "" #| "Finally, we create a new instance of the finished ScaleExample class, and " #| "set the application running." msgid "" "Finally, we create a new instance of our HelloGNOME class, and tell GNOME to " "run it." msgstr "" "Enfin, nous créons un nouvel exemple de la classe ScaleExemple et démarrons " "l'application." #. (itstool) path: section/title #: C/hellognome.js.page:177 #, fuzzy #| msgid "Run the application" msgid "Running your GNOME application" msgstr "Exécution de l'application" #. (itstool) path: section/p #: C/hellognome.js.page:179 msgid "" "Now that we've created our first GNOME application, it's time to test it " "out! You don't need to compile your app or install any special software for " "this; GNOME has gjs built in, to let it run GNOME Shell. Just save " "hellognome.html and our actual application, hellognome." "js, to a directory you can get to with the terminal. (They usually " "open onto your home directory, the one that's called by your username.) " "After that, open a terminal, go there, and type:" msgstr "" #. (itstool) path: section/screen #: C/hellognome.js.page:180 #, no-wrap msgid " $ gjs hellognome.js " msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:181 msgid "" "You should see more or less the same screenshot as before, with a button " "that you can click to make a short message appear." msgstr "" #. (itstool) path: note/p #: C/hellognome.js.page:184 msgid "You can use the terminal command" msgstr "" #. (itstool) path: note/screen #: C/hellognome.js.page:185 #, no-wrap msgid " $ cd (directory name) " msgstr "" #. (itstool) path: note/p #: C/hellognome.js.page:186 msgid "" "to navigate between directories inside the Terminal, in order to get to " "where you saved the files. There is also an extension for Nautilus, GNOME's " "file manager, which lets you right-click anywhere inside it to open a " "terminal window right there. Check the app you use to install new software " "(like Add/Remove Programs or the Software Center) for it." msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:193 msgid "" "Continue on to the next tutorial to learn how to build \"native\" GNOME applications that look and feel " "like the others, instead of a webview with HTML code inside. Or take a look " "at some code samples, if you'd " "like to see example code for each Gtk widget." msgstr "" #. (itstool) path: section/p #: C/hellognome.js.page:194 msgid "" "Finally, if you want to just build GNOME applications using JavaScript " "libraries designed for the web, you can basically stop here and go do that! " "Check out the later tutorials if " "you'd like to see how to create a .desktop file for your application, which " "will let it appear in your desktop's Activities menu with all your other " "apps." msgstr "" #. (itstool) path: section/code #: C/hellognome.js.page:199 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "imports.gi.versions.WebKit2 = '4.0';\n" "\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "const Webkit = imports.gi.WebKit2;\n" "\n" "class HelloGNOME {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application ();\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " title: \"Welcome to GNOME\",\n" " default_height: 200,\n" " default_width: 400,\n" " window_position: Gtk.WindowPosition.CENTER });\n" "\n" " // Create a webview to show the web app\n" " this._webView = new Webkit.WebView ();\n" "\n" " // Put the web app into the webview\n" " this._webView.load_uri (GLib.filename_to_uri (GLib.get_current_dir() +\n" " \"/hellognome.html\", null));\n" "\n" " // Put the webview into the window\n" " this._window.add (this._webView);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new HelloGNOME ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: info/title #: C/hello-world.c.page:10 #, fuzzy #| msgid "Hello World" msgctxt "link" msgid "Hello World (C)" msgstr "Hello World" #. (itstool) path: credit/name #: C/hello-world.c.page:24 msgid "Bastian Ilsø" msgstr "" #. (itstool) path: info/desc #: C/hello-world.c.page:28 #, fuzzy #| msgid "" #| "A little bit more than a simple \"Hello world\" application - write an " #| "image viewer in GTK." msgid "Creating a small \"Hello, World\" application using GTK+." msgstr "" "Un peu plus qu'une simple application « Hello world » - écrire un visionneur " "d'images en GTK." #. (itstool) path: page/title #: C/hello-world.c.page:31 #, fuzzy #| msgid "Hello World" msgid "Hello world" msgstr "Hello World" #. (itstool) path: note/p #: C/hello-world.c.page:34 #, fuzzy #| msgid "" #| "For more information about compiling Gtk+ programs see Compiling Gtk+ " #| "Applications on UNIX." msgid "" "For a detailed walk-through of creating a GTK+ dialog in C, see Getting " "Started with GTK+" msgstr "" "Pour davantage d'informations sur la compilation des programmes Gtk+, " "consultez Compilation d'applications Gtk+ sur UNIX." #. (itstool) path: page/p #: C/hello-world.c.page:38 msgid "" "Writing a hello world GTK+ dialog in C can be done as seen in the code " "sample below:" msgstr "" #. (itstool) path: page/code #: C/hello-world.c.page:39 #, no-wrap msgid "" "\n" " #include <gtk/gtk.h>\n" "\n" "static void\n" "activate (GtkApplication* app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *label;\n" "\n" " window = gtk_application_window_new (app);\n" " label = gtk_label_new (\"Hello GNOME!\");\n" " gtk_container_add (GTK_CONTAINER (window), label);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 200, 100);\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "int\n" "main (int argc,\n" " char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (NULL, G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" "\n" " " msgstr "" #. (itstool) path: page/p #: C/hello-world.c.page:43 msgid "" "GtkApplication initializes GTK+. It also connects the x button " "that's automatically generated along with the window to the \"destroy\" " "signal. We can start building our first window. We do this by creating a " "variable called window and assigning it a " "gtk_application_window_new. The window title can be any string you want it " "to be. To be on the safe side, it's best to stick to UTF-8 encoding. The " "code above will create a dialog window similar to what can be seen below:" msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/hello-world.c.page:51 C/hello-world.js.page:28 C/hello-world.py.page:28 #: C/hello-world.vala.page:28 #, fuzzy #| msgid "" #| "@@image: 'media/helloWorldJs.png'; md5=4c88a27211dfd1b33e504c9f78602f2d" msgctxt "_" msgid "" "external ref='media/hello-world.png' md5='4c88a27211dfd1b33e504c9f78602f2d'" msgstr "" "@@image: 'media/helloWorldJs.png'; md5=4c88a27211dfd1b33e504c9f78602f2d" #. (itstool) path: info/title #: C/hello-world.js.page:9 #, fuzzy #| msgid "Hello World" msgctxt "text" msgid "Hello World (JavaScript)" msgstr "Hello World" #. (itstool) path: info/desc #: C/hello-world.js.page:24 C/hello-world.py.page:24 C/hello-world.vala.page:24 msgid "A basic \"hello, world\" application" msgstr "Une application basique « hello, world »" #. (itstool) path: page/title #: C/hello-world.js.page:27 C/hello-world.py.page:27 C/hello-world.vala.page:27 msgid "" "How to build, install and create a tar.xz of a Hello World " "program" msgstr "" #. (itstool) path: synopsis/p #: C/hello-world.js.page:30 C/hello-world.py.page:30 C/hello-world.vala.page:30 msgid "This tutorial will demonstrate how to:" msgstr "" #. (itstool) path: item/p #: C/hello-world.js.page:32 #, fuzzy #| msgid "" #| "A little bit more than a simple \"Hello world\" application - write an " #| "image viewer in GTK." msgid "create a small \"Hello, World\" application using JavaScript and GTK+" msgstr "" "Un peu plus qu'une simple application « Hello world » - écrire un visionneur " "d'images en GTK." #. (itstool) path: item/p #: C/hello-world.js.page:33 C/hello-world.py.page:33 C/hello-world.vala.page:33 msgid "make the .desktop file" msgstr "" #. (itstool) path: item/p #: C/hello-world.js.page:34 C/hello-world.py.page:34 C/hello-world.vala.page:34 msgid "how to set up the build system" msgstr "" #. (itstool) path: section/title #: C/hello-world.js.page:42 C/hello-world.py.page:42 C/hello-world.vala.page:40 #, fuzzy #| msgid "The whole program" msgid "Create the program" msgstr "Le programme complet" #. (itstool) path: section/p #: C/hello-world.js.page:47 msgid "This needs to be the first line of your script:" msgstr "" #. (itstool) path: section/code #: C/hello-world.js.page:48 #, no-wrap msgid "#!/usr/bin/gjs" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:49 msgid "" "It tells the script to use Gjs. Gjs is a JavaScript binding for GNOME." msgstr "" #. (itstool) path: section/code #: C/hello-world.js.page:54 #, fuzzy, no-wrap #| msgid "const Lang = imports.lang;" msgid "" "const Lang = imports.lang;\n" "\n" "imports.gi.versions.Gtk = '3.0'\n" "const Gtk = imports.gi.Gtk;" msgstr "const Lang = imports.lang;" #. (itstool) path: section/p #: C/hello-world.js.page:58 C/hello-world.py.page:49 #, fuzzy #| msgid "" #| "In order for our script to work with GNOME, we need to import GNOME " #| "libraries via GObject Introspection. In this case, we're importing GTK+, " #| "the most basic library that contains the graphical widgets used to make " #| "GNOME apps." msgid "" "In order for our script to work with GNOME, we need to import GNOME " "libraries via GObject Introspection. Here we import the language bindings " "and GTK+, the library which contains the graphical widgets used to make " "GNOME applications." msgstr "" "Afin que notre script fonctionne avec GNOME, nous devons importer les " "bibliothèques GNOME via l'introspection GObject. Dans ce cas, nous importons " "GTK+, la bibliothèque la plus basique qui contient les éléments graphiques " "utilisé pour faire les applications GNOME." #. (itstool) path: section/code #: C/hello-world.js.page:62 #, no-wrap msgid "" "const Application = new Lang.Class({\n" " //A Class requires an explicit Name parameter. This is the Class Name.\n" " Name: 'Application',\n" "\n" " //create the application\n" " _init: function() {\n" " this.application = new Gtk.Application();\n" "\n" " //connect to 'activate' and 'startup' signals to handlers.\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " //create the UI\n" " _buildUI: function() {\n" " this._window = new Gtk.ApplicationWindow({ application: this.application,\n" " title: \"Hello World!\" });\n" " },\n" "\n" " //handler for 'activate' signal\n" " _onActivate: function() {\n" " //show the window and all child widgets\n" " this._window.show_all();\n" " },\n" "\n" " //handler for 'startup' signal\n" " _onStartup: function() {\n" " this._buildUI();\n" " }\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:94 msgid "" "GtkApplication initializes GTK+. It also connects the x button " "that's automatically generated along with the window to the \"destroy\" " "signal." msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:95 #, fuzzy #| msgid "" #| "After importing Gtk, we need to initialize it. After that, we can start " #| "building our first window. We do this by creating a variable called " #| "mywindow and assigning it a new Gtk.Window of type TOPLEVEL." msgid "" "We can start building our first window. We do this by creating a variable " "called _window and assigning it a new Gtk.ApplicationWindow." msgstr "" "Après l'importation de Gtk, nous devons l'initialiser. Après cela, nous " "pouvons démarrer la construction de notre première fenêtre. Nous faisons " "cela en créant une variable appelée mywindow et en lui attribuant une " "nouvelle Gtk.Window de type TOPLEVEL." #. (itstool) path: section/p #: C/hello-world.js.page:96 C/hello-world.py.page:73 #, fuzzy #| msgid "" #| "After setting up our first window we'll give the window a property called " #| "title. The title can be any string you want it to be. To be on the safe " #| "side, it's best to stick to UTF-8 encoding." msgid "" "We give the window a property called title. The title can be any " "string you want it to be. To be on the safe side, it's best to stick to " "UTF-8 encoding." msgstr "" "Après la définition de notre première fenêtre, nous donnons à la fenêtre une " "propriété appelée « title ». Le titre peut être n'importe quelle chaîne de " "caractères. Pour être certain que cela fonctionne, il est préférable de se " "tenir à un codage UTF-8." #. (itstool) path: section/p #: C/hello-world.js.page:97 C/hello-world.py.page:74 C/hello-world.vala.page:57 #, fuzzy #| msgid "" #| "Now we have a window that has a title and a working \"close\" button. " #| "Let's add the actual \"Hello, world\" text." msgid "" "Now we have a window which has a title and a working \"close\" button. Let's " "add the actual \"Hello World\" text." msgstr "" "Maintenant, nous avons une fenêtre qui possède un titre et un bouton de " "fermeture fonctionnel. Ajoutons le vrai texte « Hello, world »." #. (itstool) path: section/title #: C/hello-world.js.page:100 C/hello-world.py.page:77 #: C/hello-world.vala.page:60 msgid "Label for the window" msgstr "Étiquette de la fenêtre" #. (itstool) path: section/code #: C/hello-world.js.page:101 #, no-wrap msgid "" "// Add a label widget to your window\n" "this.label = new Gtk.Label({ label: \"Hello World\" });\n" "this._window.add(this.label);\n" "this._window.set_default_size(200, 200);" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:106 #, fuzzy #| msgid "" #| "A text label is one of the GTK+ widgets we can use, on account of having " #| "imported the GTK+ library. To use it, we create a new variable called " #| "label, and assign it a new Gtk.Label. Then we give it properties inside " #| "the curly braces {}. In this case, we're setting the text that the label " #| "will hold. Finally, we tell GNOME to show the label and the window " #| "containing it to the user, and call Gtk.main() to get the app itself " #| "started." msgid "" "A text label is one of the GTK+ widgets we can use, on account of having " "imported the GTK+ library. To use it, we create a new variable called label, " "and assign it a new Gtk.Label. Then we give it properties inside the curly " "braces {}. In this case, we're setting the text that the label will hold. " "Finally, we create and run the application:" msgstr "" "Nous pouvons utiliser une étiquette de texte comme éléments graphiques GTK+ " "à condition d'avoir importer la bibliothèque GTK+. Pour l'utiliser, nous " "créons une nouvelle variable appelée « label » et lui attribuons un nouveau " "Gtk.Label. Ensuite nous lui donnons une propriété à l'intérieur des " "accolades {}. Dans ce cas, nous définissons le texte que l'étiquette " "contient. Enfin, nous disons à GNOME d'afficher l'étiquette et la fenêtre la " "contenant à l'écran et appelons Gtk.main() afin que l'application démarre " "elle-même." #. (itstool) path: section/code #: C/hello-world.js.page:108 #, no-wrap msgid "" "//run the application\n" "let app = new Application();\n" "app.application.run(ARGV);" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:112 C/hello-world.py.page:97 #: C/hello-world.vala.page:71 #, fuzzy #| msgid "" #| "For the future, keep in mind that Gtk.Window can only hold one widget at " #| "a time. To construct more elaborate programs you need to create a holder " #| "widget (Gtk.Box, Gtk.Grid, Gtk.Application, and so on) of some kind " #| "inside the window, and then add all the other widgets to it." msgid "" "Gtk.ApplicationWindow can only hold one widget at a time. To construct more " "elaborate programs you need to create a holder widget like Gtk.Grid inside " "the window, and then add all the other widgets to it." msgstr "" "À l'avenir, gardez à l'esprit que le Gtk.Window ne peut contenir qu'un seul " "élément graphique à la fois. Pour construire des programmes plus élaborés, " "vous devez créer un élément graphique conteneur (Gtk.Box, Gtk.Grid, Gtk." "Application, etc.) d'un certain type à l'intérieur de la fenêtre puis " "ajouter tous les autres éléments graphiques à l'intérieur." #. (itstool) path: section/title #: C/hello-world.js.page:116 #, fuzzy #| msgid "helloWorld.js" msgid "hello-world.js" msgstr "helloWorld.js" #. (itstool) path: section/p #: C/hello-world.js.page:117 C/hello-world.py.page:102 #: C/hello-world.vala.page:76 msgid "The complete file:" msgstr "" #. (itstool) path: section/code #: C/hello-world.js.page:118 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "const Lang = imports.lang;\n" "\n" "imports.gi.versions.Gtk = '3.0'\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class Application {\n" "\n" " //create the application\n" " constructor() {\n" " this.application = new Gtk.Application();\n" "\n" " //connect to 'activate' and 'startup' signals to handlers.\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " //create the UI\n" " _buildUI() {\n" " this._window = new Gtk.ApplicationWindow({ application: this.application,\n" " title: \"Hello World!\" });\n" " this._window.set_default_size(200, 200);\n" " this.label = new Gtk.Label({ label: \"Hello World\" });\n" " this._window.add(this.label);\n" " }\n" "\n" " //handler for 'activate' signal\n" " _onActivate() {\n" " //show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " //handler for 'startup' signal\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "};\n" "\n" "//run the application\n" "let app = new Application();\n" "app.application.run(ARGV);\n" msgstr "" #. (itstool) path: section/title #: C/hello-world.js.page:121 C/hello-world.py.page:106 #: C/hello-world.vala.page:80 #, fuzzy #| msgid "Running the application from Terminal" msgid "Running the application from terminal" msgstr "Exécution de l'application à partir de Terminal" #. (itstool) path: section/p #: C/hello-world.js.page:122 #, fuzzy #| msgid "" #| "To run this application, first save it as helloWorld.js. Then open " #| "Terminal, go to the folder where your application is stored and run" msgid "" "To run this application, first save it as hello-world.js. Then open " "Terminal, go to the folder where your application is stored and run:" msgstr "" "Pour lancer cette application, enregistrez-la d'abord sous le nom helloWorld." "js, puis ouvrez Terminal, allez dans le dossier où l'application est " "enregistrée et lancez" #. (itstool) path: section/screen #: C/hello-world.js.page:123 #, no-wrap msgid "$ gjs hello-world.js" msgstr "" #. (itstool) path: section/title #: C/hello-world.js.page:129 C/hello-world.py.page:112 #: C/hello-world.vala.page:89 msgid "The .desktop.in file" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:130 C/hello-world.py.page:113 #: C/hello-world.vala.page:90 #, fuzzy #| msgid "" #| "Running applications from the Terminal is useful at the beginning of the " #| "application making process. To have a fully working application integration in GNOME 3 requires a desktop launcher. " #| "For this you need to create a .desktop file. The .desktop " #| "file describes the application name, the used icon and various " #| "integration bits. A deeper insight to .desktop file can be " #| "found here." msgid "" "Running applications from the Terminal is useful at the beginning of the " "application making process. To have fully working application " "integration in GNOME 3 requires a desktop launcher. For this you need " "to create a .desktop file. The .desktop file " "describes the application name, the used icon and various integration bits. " "A deeper insight into the .desktop file can be found here. The ." "desktop.in file will create the .desktop." msgstr "" "Le lancement d'applications à partir de Terminal est utile au début du " "processus de création de l'application. Pour avoir une intégration de l'application fonctionnelle et complète dans GNOME " "3, il vous faut un lanceur de bureau. Pour cela vous devez créer un fichier " ".desktop. Le fichier .desktop fournit le nom de l'application, " "l'icône utilisée et les parties de l'intégration. Un aperçu complet des " "fichiers .desktop peut être trouvé ici." #. (itstool) path: note/p #: C/hello-world.js.page:133 msgid "" "Before continuing, resave hello-world.js as hello-world. Then run this in the command line:" msgstr "" #. (itstool) path: note/screen #: C/hello-world.js.page:134 #, no-wrap msgid "$ chmod +x hello-world" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:137 C/hello-world.py.page:115 #: C/hello-world.vala.page:92 #, fuzzy #| msgid "" #| "The example shows you the minimum requirements for a .desktop file." msgid "" "The example shows you the minimum requirements for a .desktop.in file." msgstr "" "L'exemple vous montre le minimum nécessaire pour un fichier .desktop." #. (itstool) path: section/code #: C/hello-world.js.page:138 C/hello-world.py.page:116 #: C/hello-world.vala.page:93 #, no-wrap msgid "" "[Desktop Entry]\n" "Version=1.0\n" "Encoding=UTF-8\n" "Name=Hello World\n" "Comment=Say Hello\n" "Exec=@prefix@/bin/hello-world\n" "Icon=application-default-icon\n" "Terminal=false\n" "Type=Application\n" "StartupNotify=true\n" "Categories=GNOME;GTK;Utility;\n" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:140 #, fuzzy #| msgid "Now let's go through some parts of the .desktop file." msgid "" "Save this as hello-world.desktop.in. Now let's go through some " "parts of the .desktop.in file." msgstr "" "Allons maintenant examiner quelques parties du fichier .desktop.­­" #. (itstool) path: item/title #. (itstool) path: td/p #: C/hello-world.js.page:142 C/hello-world.py.page:120 #: C/hello-world.vala.page:97 C/toolbar_builder.py.page:95 #: C/toolbar_builder.vala.page:78 msgid "Name" msgstr "Nom" #. (itstool) path: item/p #: C/hello-world.js.page:142 C/hello-world.py.page:120 #: C/hello-world.vala.page:97 #, fuzzy #| msgid "Run the application" msgid "The application name." msgstr "Exécution de l'application" #. (itstool) path: item/title #: C/hello-world.js.page:143 C/hello-world.py.page:121 #: C/hello-world.vala.page:98 msgid "Comment" msgstr "" #. (itstool) path: item/p #: C/hello-world.js.page:143 C/hello-world.py.page:121 #: C/hello-world.vala.page:98 #, fuzzy #| msgid "Designing the application" msgid "A short description of the application." msgstr "Conception de l'application" #. (itstool) path: item/title #: C/hello-world.js.page:144 C/hello-world.py.page:122 #: C/hello-world.vala.page:99 msgid "Exec" msgstr "" #. (itstool) path: item/p #: C/hello-world.js.page:144 C/hello-world.py.page:122 #: C/hello-world.vala.page:99 #, fuzzy #| msgid "" #| "Line 6: Specifies a command to execute when you choose the item from the " #| "menu. In this example exec just tells where to find the helloworld." #| "js file and the file takes care of the rest." msgid "" "Specifies a command to execute when you choose the application from the " "menu. In this example exec just tells where to find the hello-world file and the file takes care of the rest." msgstr "" "Ligne 6 : spécifie une commande à exécuter lorsque vous choisissez l'élément " "de menu. Dans cet exemple, « exec » indique juste où trouver le fichier " "helloworld.js et le fichier prend en charge le reste." #. (itstool) path: item/title #: C/hello-world.js.page:145 C/hello-world.py.page:123 #: C/hello-world.vala.page:100 msgid "Terminal" msgstr "" #. (itstool) path: item/p #: C/hello-world.js.page:145 C/hello-world.py.page:123 #: C/hello-world.vala.page:100 #, fuzzy #| msgid "" #| "Line 8: Specifies whether the command in the Exec key runs in a terminal " #| "window." msgid "" "Specifies whether the command in the Exec key runs in a terminal window." msgstr "" "Ligne 8 : indique si la commande de la clé Exec se lance dans une fenêtre de " "terminal." #. (itstool) path: section/p #: C/hello-world.js.page:148 C/hello-world.py.page:126 #: C/hello-world.vala.page:103 #, fuzzy #| msgid "" #| "To put your application to the right category you need to add the " #| "necessary categories to the Categories line. More information on the " #| "different categories can be found in the menu spec." msgid "" "To put your application into the appropriate category, you need to add the " "necessary categories to the Categories line. More information on the " "different categories can be found in the menu specification." msgstr "" "Pour mettre votre application dans la bonne catégorie, vous devez ajouter " "les catégories nécessaires à la ligne « Categories ». Plus d'informations " "sur les différentes catégories peuvent être trouvées dans les spécifications de menu." #. (itstool) path: section/p #: C/hello-world.js.page:149 C/hello-world.py.page:127 #: C/hello-world.vala.page:104 #, fuzzy #| msgid "" #| "In this example I used an existing icon. For a custom icon you need to " #| "have a .svg file of your icon, store it to /usr/share/icons/hicolor/" #| "scalable/apps. Write the name of your icon file to the .desktop file, on " #| "line 7. More information on icons in: Installing Icons " #| "for Themes , Installing Icons for Themes and on freedesktop.org: " #| "Specifications/icon-theme-spec." msgid "" "In this example we use an existing icon. For a custom icon you need to have " "a .svg file of your icon, stored in /usr/share/icons/hicolor/scalable/" "apps. Write the name of your icon file to the .desktop.in file, on " "line 7. More information on icons in: Installing Icons for Themes and " "on " "freedesktop.org: Specifications/icon-theme-spec." msgstr "" "Dans cet exemple, nous utilisons une icône existante. Pour une icône " "personnalisée, vous devez posséder un fichier .svg de votre icône, " "l'enregistrer dans /usr/share/icons/hicolor/scalable/apps. Inscrivez le nom " "de votre fichier icône dans le fichier .desktop en ligne 7. Plus " "d'informations sur les icônes dans : Installation d'icônes " "pour les thèmes, Installation d'icônes pour les thèmes et sur " "freedesktop.org : spécifications/icônes-thème-spécifications." #. (itstool) path: section/title #: C/hello-world.js.page:152 C/hello-world.py.page:130 #: C/hello-world.vala.page:107 msgid "The build system" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:153 C/hello-world.py.page:131 #: C/hello-world.vala.page:108 msgid "" "To make your application truly a part of the GNOME 3 system you need to " "install it with the help of autotools. The autotools build will install all " "the necessary files to all the right places." msgstr "" "Pour que votre application fasse partie intégrante de GNOME 3, vous devez " "l'installer à l'aide d'autotools. Autotools construit et installe tous les " "fichiers nécessaires et les place à leurs emplacements corrects." #. (itstool) path: section/p #: C/hello-world.js.page:154 C/hello-world.py.page:132 #: C/hello-world.vala.page:109 msgid "For this you need to have the following files:" msgstr "Auparavant, vous devez posséder les fichiers suivants :" #. (itstool) path: section/title #. (itstool) path: item/p #. (itstool) path: section/p #: C/hello-world.js.page:157 C/hello-world.py.page:135 #: C/hello-world.vala.page:112 C/weatherAutotools.js.page:40 #: C/weatherAutotools.js.page:138 msgid "autogen.sh" msgstr "autogen.sh" #. (itstool) path: section/code #: C/hello-world.js.page:158 C/hello-world.py.page:136 #: C/hello-world.vala.page:113 #, no-wrap msgid "" "#!/bin/sh\n" "\n" "set -e\n" "\n" "test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n" "test -n \"$srcdir\" || srcdir=.\n" "\n" "olddir=`pwd`\n" "cd \"$srcdir\"\n" "\n" "# This will run autoconf, automake, etc. for us\n" "autoreconf --force --install\n" "\n" "cd \"$olddir\"\n" "\n" "if test -z \"$NOCONFIGURE\"; then\n" " \"$srcdir\"/configure \"$@\"\n" "fi\n" msgstr "" #. (itstool) path: section/p #: C/hello-world.js.page:160 C/hello-world.py.page:138 #: C/hello-world.vala.page:115 #, fuzzy #| msgid "After the autogen.sh file is ready and saved run" msgid "After the autogen.sh file is ready and saved, run:" msgstr "Quand le fichier autogen.sh est prêt et enregistré, exécutez" #. (itstool) path: section/screen #: C/hello-world.js.page:161 C/hello-world.py.page:139 #: C/hello-world.vala.page:116 #, no-wrap msgid "$ chmod +x autogen.sh" msgstr "" #. (itstool) path: section/title #. (itstool) path: item/p #. (itstool) path: section/p #: C/hello-world.js.page:165 C/hello-world.py.page:143 #: C/hello-world.vala.page:120 C/weatherAutotools.js.page:38 #: C/weatherAutotools.js.page:64 msgid "Makefile.am" msgstr "Makefile.am" #. (itstool) path: section/code #: C/hello-world.js.page:166 #, no-wrap msgid "" "# The actual runnable program is set to the SCRIPTS primitive.\n" "# # Prefix bin_ tells where to copy this\n" "bin_SCRIPTS = hello-world\n" "# # List of files to be distributed\n" "EXTRA_DIST = \\\n" "\t$(bin_SCRIPTS)\n" "#\n" "# # The desktop files\n" "desktopdir = $(datadir)/applications\n" "desktop_DATA = \\\n" "\thello-world.desktop\n" msgstr "" #. (itstool) path: section/title #. (itstool) path: item/p #. (itstool) path: section/p #: C/hello-world.js.page:170 C/hello-world.py.page:148 #: C/hello-world.vala.page:125 C/weatherAutotools.js.page:39 #: C/weatherAutotools.js.page:131 msgid "configure.ac" msgstr "configure.ac" #. (itstool) path: section/code #: C/hello-world.js.page:171 C/hello-world.py.page:149 #, no-wrap msgid "" "# This file is processed by autoconf to create a configure script\n" "AC_INIT([Hello World], 1.0)\n" "AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n" "AC_CONFIG_FILES([Makefile hello-world.desktop])\n" "AC_OUTPUT\n" msgstr "" #. (itstool) path: section/title #: C/hello-world.js.page:175 C/hello-world.py.page:153 #: C/hello-world.vala.page:130 msgid "README" msgstr "README" #. (itstool) path: section/p #: C/hello-world.js.page:176 C/hello-world.py.page:154 #: C/hello-world.vala.page:131 #, fuzzy #| msgid "README: Information user should read first." msgid "Information users should read first. This file can be blank." msgstr "README : informations à lire en premier par l'utilisateur." #. (itstool) path: section/p #: C/hello-world.js.page:178 msgid "" "When you have the hello-world, hello-world.desktop.in, Makefile.am, configure.ac and autogen." "sh files with correct information and permissions, create a " "README file with installation instructions. Below is a sample " "of what suitable README instructions may look like:" msgstr "" #. (itstool) path: section/code #: C/hello-world.js.page:179 #, no-wrap msgid "" "To build and install this program, run these commands from a terminal:\n" "\n" "./autogen.sh --prefix=/home/$USER/.local\n" "make install\n" "\n" "-------------\n" "When running the first command $USER will be replaced by your username.\n" "\n" "Running the first command above creates the following files:\n" "\n" "aclocal.m4\n" "autom4te.cache\n" "config.log\n" "config.status\n" "configure\n" "hello-world.desktop\n" "install-sh\n" "missing\n" "Makefile.in\n" "Makefile\n" "\n" "Running \"make install\", installs the application in /home/your_username/.local/bin\n" "and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n" "\n" "You can now run the application by typing \"Hello World\" in the Overview.\n" "\n" "----------------\n" "To uninstall, type:\n" "\n" "make uninstall\n" "\n" "----------------\n" "To create a tarball type:\n" "\n" "make distcheck\n" "\n" "This will create hello-world-1.0.tar.xz\n" msgstr "" #. (itstool) path: info/title #: C/hello-world.py.page:9 #, fuzzy #| msgid "Hello World" msgctxt "text" msgid "Hello World (Python)" msgstr "Hello World" #. (itstool) path: item/p #: C/hello-world.py.page:32 #, fuzzy #| msgid "" #| "A little bit more than a simple \"Hello world\" application - write an " #| "image viewer in GTK." msgid "create a small \"Hello, World\" application using Python and GTK+" msgstr "" "Un peu plus qu'une simple application « Hello world » - écrire un visionneur " "d'images en GTK." #. (itstool) path: section/code #: C/hello-world.py.page:47 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys" msgstr "" #. (itstool) path: section/code #: C/hello-world.py.page:53 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "# a class to define a window\n" #| "class MyWindow(Gtk.ApplicationWindow):\n" #| " def __init__(self, app):\n" #| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" #| " self.set_default_size(200, 100)\n" #| "\n" #| "# a class to define a label\n" #| "class MyLabel(Gtk.Label):\n" #| " def __init__(self):\n" #| " Gtk.Label.__init__(self)\n" #| " self.set_text(\"Hello GNOME!\")\n" #| "\n" #| "class MyApplication(Gtk.Application):\n" #| " def __init__(self):\n" #| " Gtk.Application.__init__(self)\n" #| "\n" #| " def do_activate(self):\n" #| " # create an instance of MyWindow\n" #| " win = MyWindow(self)\n" #| " # create an instance of MyLabel\n" #| " label = MyLabel()\n" #| " # and add it to the window\n" #| " win.add(label)\n" #| " # show the window and everything on it\n" #| " win.show_all()" msgid "" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " # constructor for a Gtk.ApplicationWindow\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Hello World!\", application=app)\n" " self.set_default_size(200, 100)\n" "\n" "class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)" msgstr "" "\n" "# a class to define a window\n" "class MyWindow(Gtk.ApplicationWindow):\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(200, 100)\n" "\n" "# a class to define a label\n" "class MyLabel(Gtk.Label):\n" " def __init__(self):\n" " Gtk.Label.__init__(self)\n" " self.set_text(\"Hello GNOME!\")\n" "\n" "class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " # create an instance of MyWindow\n" " win = MyWindow(self)\n" " # create an instance of MyLabel\n" " label = MyLabel()\n" " # and add it to the window\n" " win.add(label)\n" " # show the window and everything on it\n" " win.show_all()" #. (itstool) path: section/p #: C/hello-world.py.page:71 C/hello-world.vala.page:54 msgid "" "Gtk.Application initializes GTK+. It also connects the x button " "that's automatically generated along with the window to the \"destroy\" " "signal." msgstr "" #. (itstool) path: section/p #: C/hello-world.py.page:72 #, fuzzy #| msgid "" #| "After importing Gtk, we need to initialize it. After that, we can start " #| "building our first window. We do this by creating a variable called " #| "mywindow and assigning it a new Gtk.Window of type TOPLEVEL." msgid "" "We can start building our first window. We do this by creating a class " "called MyWindow and assigning it a Gtk.ApplicationWindow." msgstr "" "Après l'importation de Gtk, nous devons l'initialiser. Après cela, nous " "pouvons démarrer la construction de notre première fenêtre. Nous faisons " "cela en créant une variable appelée mywindow et en lui attribuant une " "nouvelle Gtk.Window de type TOPLEVEL." #. (itstool) path: section/code #: C/hello-world.py.page:78 #, no-wrap msgid "" "# Add a label widget to your window\n" "\n" " # create a label\n" " label = Gtk.Label()\n" "\n" " # set the text of the label\n" " label.set_text(\"Hello GNOME!\")\n" "\n" " # add the label to the window\n" " self.add(label)" msgstr "" #. (itstool) path: section/p #: C/hello-world.py.page:89 #, fuzzy #| msgid "" #| "A text label is one of the GTK+ widgets we can use, on account of having " #| "imported the GTK+ library. To use it, we create a new variable called " #| "label, and assign it a new Gtk.Label. Then we give it properties inside " #| "the curly braces {}. In this case, we're setting the text that the label " #| "will hold. Finally, we tell GNOME to show the label and the window " #| "containing it to the user, and call Gtk.main() to get the app itself " #| "started." msgid "" "A text label is one of the GTK+ widgets we can use, on account of having " "imported the GTK+ library. To use it, we create a variable called " "label and set the text that the label will hold. Finally, we " "create and run the application:" msgstr "" "Nous pouvons utiliser une étiquette de texte comme éléments graphiques GTK+ " "à condition d'avoir importer la bibliothèque GTK+. Pour l'utiliser, nous " "créons une nouvelle variable appelée « label » et lui attribuons un nouveau " "Gtk.Label. Ensuite nous lui donnons une propriété à l'intérieur des " "accolades {}. Dans ce cas, nous définissons le texte que l'étiquette " "contient. Enfin, nous disons à GNOME d'afficher l'étiquette et la fenêtre la " "contenant à l'écran et appelons Gtk.main() afin que l'application démarre " "elle-même." #. (itstool) path: section/code #: C/hello-world.py.page:91 #, no-wrap msgid "" "#run the application\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)" msgstr "" #. (itstool) path: section/title #: C/hello-world.py.page:101 #, fuzzy #| msgid "helloWorld.js" msgid "hello-world.py" msgstr "helloWorld.js" #. (itstool) path: section/code #: C/hello-world.py.page:103 C/label.py.page:39 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "# a class to define a window\n" #| "class MyWindow(Gtk.ApplicationWindow):\n" #| " def __init__(self, app):\n" #| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" #| " self.set_default_size(200, 100)\n" #| "\n" #| "# a class to define a label\n" #| "class MyLabel(Gtk.Label):\n" #| " def __init__(self):\n" #| " Gtk.Label.__init__(self)\n" #| " self.set_text(\"Hello GNOME!\")\n" #| "\n" #| "class MyApplication(Gtk.Application):\n" #| " def __init__(self):\n" #| " Gtk.Application.__init__(self)\n" #| "\n" #| " def do_activate(self):\n" #| " # create an instance of MyWindow\n" #| " win = MyWindow(self)\n" #| " # create an instance of MyLabel\n" #| " label = MyLabel()\n" #| " # and add it to the window\n" #| " win.add(label)\n" #| " # show the window and everything on it\n" #| " win.show_all()" msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # constructor for a Gtk.ApplicationWindow\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(200, 100)\n" "\n" " # create a label\n" " label = Gtk.Label()\n" " # set the text of the label\n" " label.set_text(\"Hello GNOME!\")\n" " # add the label to the window\n" " self.add(label)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" "\n" "# a class to define a window\n" "class MyWindow(Gtk.ApplicationWindow):\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(200, 100)\n" "\n" "# a class to define a label\n" "class MyLabel(Gtk.Label):\n" " def __init__(self):\n" " Gtk.Label.__init__(self)\n" " self.set_text(\"Hello GNOME!\")\n" "\n" "class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " # create an instance of MyWindow\n" " win = MyWindow(self)\n" " # create an instance of MyLabel\n" " label = MyLabel()\n" " # and add it to the window\n" " win.add(label)\n" " # show the window and everything on it\n" " win.show_all()" #. (itstool) path: section/p #: C/hello-world.py.page:107 #, fuzzy #| msgid "" #| "To run this application, first save it as helloWorld.js. Then open " #| "Terminal, go to the folder where your application is stored and run" msgid "" "To run this application, first save it as hello-world.py. Then open " "Terminal, go to the folder where your application is stored and run:" msgstr "" "Pour lancer cette application, enregistrez-la d'abord sous le nom helloWorld." "js, puis ouvrez Terminal, allez dans le dossier où l'application est " "enregistrée et lancez" #. (itstool) path: section/screen #: C/hello-world.py.page:108 #, no-wrap msgid "$ python hello-world.py" msgstr "" #. (itstool) path: section/p #: C/hello-world.py.page:118 C/hello-world.vala.page:95 #, fuzzy #| msgid "Now let's go through some parts of the .desktop file." msgid "Now let's go through some parts of the .desktop.in file." msgstr "" "Allons maintenant examiner quelques parties du fichier .desktop.­­" #. (itstool) path: section/code #: C/hello-world.py.page:144 #, no-wrap msgid "" "# The actual runnable program is set to the SCRIPTS primitive.\n" "# # Prefix bin_ tells where to copy this\n" "bin_SCRIPTS = hello-world.py\n" "# # List of files to be distributed\n" "EXTRA_DIST= \\\n" "\t$(bin_SCRIPTS)\n" "#\n" "# # The desktop files\n" "desktopdir = $(datadir)/applications\n" "desktop_DATA = \\\n" "\thello-world.desktop\n" msgstr "" #. (itstool) path: section/p #: C/hello-world.py.page:156 msgid "" "When you have the hello-world, hello-world.desktop.in, Makefile.am, configure.ac and autogen." "sh files with correct information and rights, the README " "file can include the following instructions:" msgstr "" #. (itstool) path: section/code #: C/hello-world.py.page:157 #, no-wrap msgid "" "To build and install this program:\n" "\n" "./autogen.sh --prefix=/home/your_username/.local\n" "make install\n" "\n" "-------------\n" "Running the first line above creates the following files:\n" "\n" "aclocal.m4\n" "autom4te.cache\n" "config.log\n" "config.status\n" "configure\n" "hello-world.desktop\n" "install-sh\n" "missing\n" "Makefile.in\n" "Makefile\n" "\n" "Running \"make install\", installs the application in /home/your_username/.local/bin\n" "and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n" "\n" "You can now run the application by typing \"Hello World\" in the Overview.\n" "\n" "----------------\n" "To uninstall, type:\n" "\n" "make uninstall\n" "\n" "----------------\n" "To create a tarball type:\n" "\n" "make distcheck\n" "\n" "This will create hello-world-1.0.tar.xz\n" msgstr "" #. (itstool) path: info/title #: C/hello-world.vala.page:9 #, fuzzy #| msgid "Hello World" msgctxt "text" msgid "Hello World (Vala)" msgstr "Hello World" #. (itstool) path: item/p #: C/hello-world.vala.page:32 #, fuzzy #| msgid "" #| "A little bit more than a simple \"Hello world\" application - write an " #| "image viewer in GTK." msgid "create a small \"Hello, World\" application using GTK+" msgstr "" "Un peu plus qu'une simple application « Hello world » - écrire un visionneur " "d'images en GTK." #. (itstool) path: section/code #: C/hello-world.vala.page:45 #, no-wrap msgid "" "class MyApplication : Gtk.Application {\n" " protected override void activate () {\n" " var window = new Gtk.ApplicationWindow (this);\n" " window.set_title (\"Welcome to GNOME\");\n" " window.set_default_size (200, 100);\n" " window.show_all ();\n" " }\n" "}" msgstr "" #. (itstool) path: section/p #: C/hello-world.vala.page:55 #, fuzzy #| msgid "" #| "After importing Gtk, we need to initialize it. After that, we can start " #| "building our first window. We do this by creating a variable called " #| "mywindow and assigning it a new Gtk.Window of type TOPLEVEL." msgid "" "We can start building our first window. We do this by creating a variable " "called window and assigning it a new Gtk.ApplicationWindow." msgstr "" "Après l'importation de Gtk, nous devons l'initialiser. Après cela, nous " "pouvons démarrer la construction de notre première fenêtre. Nous faisons " "cela en créant une variable appelée mywindow et en lui attribuant une " "nouvelle Gtk.Window de type TOPLEVEL." #. (itstool) path: section/p #: C/hello-world.vala.page:56 #, fuzzy #| msgid "" #| "After setting up our first window we'll give the window a property called " #| "title. The title can be any string you want it to be. To be on the safe " #| "side, it's best to stick to UTF-8 encoding." msgid "" "We give the window a title using set_title. The title can be " "any string you want it to be. To be on the safe side, it's best to stick to " "UTF-8 encoding." msgstr "" "Après la définition de notre première fenêtre, nous donnons à la fenêtre une " "propriété appelée « title ». Le titre peut être n'importe quelle chaîne de " "caractères. Pour être certain que cela fonctionne, il est préférable de se " "tenir à un codage UTF-8." #. (itstool) path: section/code #: C/hello-world.vala.page:61 #, no-wrap msgid "" "var label = new Gtk.Label (\"Hello GNOME!\");\n" " window.add (label);\n" msgstr "" #. (itstool) path: section/p #: C/hello-world.vala.page:65 #, fuzzy #| msgid "Build and run the application" msgid "Finally, we create and run the application:" msgstr "Construction et lancement de l'application" #. (itstool) path: section/code #: C/hello-world.vala.page:67 #, no-wrap msgid "" "int main (string[] args) {\n" " return new MyApplication ().run (args);\n" "}" msgstr "" #. (itstool) path: section/title #: C/hello-world.vala.page:75 #, fuzzy #| msgid "helloWorld.js" msgid "hello-world.vala" msgstr "helloWorld.js" #. (itstool) path: section/code #: C/hello-world.vala.page:77 #, no-wrap msgid "" "public class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n" "\t\twindow.add (label);\n" "\t\twindow.set_title (\"Welcome to GNOME\");\n" "\t\twindow.set_default_size (200, 100);\n" "\t\twindow.show_all ();\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/hello-world.vala.page:81 #, fuzzy #| msgid "" #| "To run this application, first save it as helloWorld.js. Then open " #| "Terminal, go to the folder where your application is stored and run" msgid "" "To run this application, first save it as hello-world.vala. Then open " "Terminal, go to the folder where your application is stored." msgstr "" "Pour lancer cette application, enregistrez-la d'abord sous le nom helloWorld." "js, puis ouvrez Terminal, allez dans le dossier où l'application est " "enregistrée et lancez" #. (itstool) path: section/p #: C/hello-world.vala.page:82 #, fuzzy #| msgid "The whole program" msgid "Compile the program:" msgstr "Le programme complet" #. (itstool) path: section/screen #: C/hello-world.vala.page:83 #, fuzzy, no-wrap #| msgid "valac --pkg gtk+-3.0 filename.vala" msgid "valac --pkg gtk+-3.0 hello-world.vala" msgstr "valac --pkg gtk+-3.0 nomdufichier.vala" #. (itstool) path: section/p #: C/hello-world.vala.page:84 #, fuzzy #| msgid "The whole program" msgid "Run the program:" msgstr "Le programme complet" #. (itstool) path: section/screen #: C/hello-world.vala.page:85 #, fuzzy, no-wrap #| msgid "./filename" msgid "./hello-world" msgstr "./nomdufichier" #. (itstool) path: section/code #: C/hello-world.vala.page:121 #, no-wrap msgid "" "# The actual runnable program is set to the SCRIPTS primitive.\n" "# # Prefix bin_ tells where to copy this\n" "bin_PROGRAMS = hello-world\n" "hello_world_CFLAGS = $(gtk_CFLAGS)\n" "hello_world_LDADD = $(gtk_LIBS)\n" "hello_world_VALAFLAGS = --pkg gtk+-3.0\n" "hello_world_SOURCES = hello-world.vala\n" "\n" "desktopdir = $(datadir)/applications\n" "desktop_DATA = \\\n" "\thello-world.desktop\n" msgstr "" #. (itstool) path: section/code #: C/hello-world.vala.page:126 #, no-wrap msgid "" "# This file is processed by autoconf to create a configure script\n" "AC_INIT([Hello World], 1.0)\n" "AM_INIT_AUTOMAKE([1.10 no-define foreign dist-xz no-dist-gzip])\n" "AC_PROG_CC\n" "AM_PROG_VALAC([0.16])\n" "PKG_CHECK_MODULES(gtk, gtk+-3.0)\n" "AC_CONFIG_FILES([Makefile hello-world.desktop])\n" "\n" "AC_OUTPUT\n" msgstr "" #. (itstool) path: section/p #: C/hello-world.vala.page:133 msgid "" "When you have the hello-world.c, hello-world.desktop.in, Makefile.am, configure.ac and autogen." "sh files with correct information and rights, the README " "file can include the following instructions:" msgstr "" #. (itstool) path: section/code #: C/hello-world.vala.page:134 #, no-wrap msgid "" "To build and install this program:\n" "\n" "./autogen.sh --prefix=/home/your_username/.local\n" "make\n" "make install\n" "\n" "-------------\n" "Running the first line above creates the following files:\n" "\n" "aclocal.m4\n" "autom4te.cache\n" "config.log\n" "config.status\n" "configure\n" "depcomp\n" "hello-world\n" "hello-world.c\n" "hello-world.desktop\n" "hello_world-hello-world.o\n" "hello_world_vala.stamp\n" "install-sh\n" "missing\n" "Makefile.in\n" "Makefile\n" "\n" "Running \"make\" links all the appropriate libraries.\n" "\n" "Running \"make install\", installs the application in /home/your_username/.local/bin\n" "and installs the hello-world.desktop file in /home/your_username/.local/share/applications\n" "\n" "You can now run the application by typing \"Hello World\" in the Overview.\n" "\n" "----------------\n" "To uninstall, type:\n" "\n" "make uninstall\n" "\n" "----------------\n" "To create a tarball type:\n" "\n" "make distcheck\n" "\n" "This will create hello-world-1.0.tar.xz\n" msgstr "" #. (itstool) path: info/title #: C/image.c.page:8 #, fuzzy #| msgid "Image" msgctxt "text" msgid "Image (C)" msgstr "Image" #. (itstool) path: info/desc #: C/image.c.page:18 C/image.js.page:17 C/image.py.page:25 C/image.vala.page:18 msgid "A widget displaying an image" msgstr "Un élément graphique qui affiche une image" #. (itstool) path: page/title #: C/image.c.page:21 C/image.js.page:20 C/image.py.page:28 C/image.vala.page:21 msgid "Image" msgstr "Image" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/image.c.page:22 C/image.js.page:21 C/image.py.page:29 C/image.vala.page:22 #, fuzzy #| msgid "@@image: 'media/image.png'; md5=9416aa74d9d6a857783f7a36338e7a02" msgctxt "_" msgid "external ref='media/image.png' md5='9416aa74d9d6a857783f7a36338e7a02'" msgstr "@@image: 'media/image.png'; md5=9416aa74d9d6a857783f7a36338e7a02" #. (itstool) path: page/p #: C/image.c.page:23 C/image.js.page:22 C/image.py.page:30 C/image.vala.page:23 msgid "This GtkApplication displays an image file from the current directory." msgstr "" "Cette application Gtk affiche un fichier image issu du dossier en cours." #. (itstool) path: note/p #: C/image.c.page:24 C/image.js.page:23 C/image.vala.page:24 msgid "" "If the image file isn't loaded successfully, the image will contain a " "\"broken image\" icon. The filename.png needs to be in the " "current directory for this code to work. Use your favorite picture!" msgstr "" "Si le fichier image n'est pas chargé correctement, l'image contient une " "icône en forme d'« image brisée ». Le nomdufichier.png doit " "être dans le dossier actuel pour que ce code fonctionne. Faites bon usage de " "votre photo favorite !" #. (itstool) path: page/code #: C/image.c.page:28 #, no-wrap msgid "" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *image;\n" "\n" " /*Create a window with a title and a default size*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n" "\n" " image = gtk_image_new_from_file (\"gnome-image.png\");\n" "\n" " gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (image));\n" "\n" " gtk_widget_show_all (GTK_WIDGET (window));\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/image.c.page:35 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkImage" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/image.js.page:7 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Image (JavaScript)" msgstr "JavaScript" #. (itstool) path: page/code #: C/image.js.page:27 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ImageExample {\n" "\n" " /* Create the application itself\n" " This boilerplate code is needed to build any GTK+ application. */\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jsimage',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal initializes menus and builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Welcome to GNOME\",\n" " default_height: 300,\n" " default_width: 300\n" " });\n" "\n" " // Create the label\n" " this.jsimage = new Gtk.Image ({file: \"gnome-image.png\"});\n" " this._window.add (this.jsimage);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new ImageExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/image.js.page:34 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gtk.Image" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: info/title #: C/image.py.page:8 #, fuzzy #| msgid "Python" msgctxt "text" msgid "Image (Python)" msgstr "Python" #. (itstool) path: credit/name #: C/image.py.page:20 msgid "Sindhu S" msgstr "" #. (itstool) path: credit/years #: C/image.py.page:22 msgid "2014" msgstr "" #. (itstool) path: note/p #: C/image.py.page:32 #, fuzzy #| msgid "" #| "If the image file is not loaded successfully, the image will contain a " #| "\"broken image\" icon. The filename.png needs to be in the " #| "current directory for this code to work." msgid "" "If the image file is not loaded successfully, the image will contain a " "\"broken image\" icon. filename.png needs to be in the current " "directory for this code to work." msgstr "" "Si le fichier image n'est pas chargé correctement, l'image contient une " "icône en forme d'« image brisée ». Le nomdufichier.png doit " "être dans le dossier actuel pour que ce code fonctionne." #. (itstool) path: section/code #: C/image.py.page:43 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "# a class to create a window\n" #| "class MyWindow(Gtk.ApplicationWindow):\n" #| " def __init__(self, app):\n" #| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" #| " self.set_default_size(300, 300)\n" #| "\n" #| "# a class to create an image\n" #| "class MyImage(Gtk.Image):\n" #| " def __init__(self):\n" #| " Gtk.Image.__init__(self)\n" #| " self.set_from_file(\"gnome-image.png\")\n" #| "\n" #| "class MyApplication(Gtk.Application):\n" #| " def __init__(self):\n" #| " Gtk.Application.__init__(self)\n" #| "\n" #| " def do_activate(self):\n" #| " # create an instance of MyWindow\n" #| " win = MyWindow(self)\n" #| " # create an instance of MyImage and add it to the window\n" #| " win.add(MyImage())\n" #| " # show the window and everything on it\n" #| " win.show_all()" msgid "" "\n" " from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # create a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(300, 300)\n" "\n" " # create an image\n" " image = Gtk.Image()\n" " # set the content of the image as the file filename.png\n" " image.set_from_file(\"gnome-image.png\")\n" " # add the image to the window\n" " self.add(image)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" "\n" " " msgstr "" "\n" "# a class to create a window\n" "class MyWindow(Gtk.ApplicationWindow):\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(300, 300)\n" "\n" "# a class to create an image\n" "class MyImage(Gtk.Image):\n" " def __init__(self):\n" " Gtk.Image.__init__(self)\n" " self.set_from_file(\"gnome-image.png\")\n" "\n" "class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " # create an instance of MyWindow\n" " win = MyWindow(self)\n" " # create an instance of MyImage and add it to the window\n" " win.add(MyImage())\n" " # show the window and everything on it\n" " win.show_all()" #. (itstool) path: section/p #: C/image.py.page:47 msgid "" "Another way to obtain what we have in the example is to create the image as " "an instance of another class and add it to the instance of MyWindow in the do_activate(self) method:" msgstr "" "Une autre manière d'obtenir ce qu'il y a dans cet exemple est de créer " "l'image en tant qu'exemple d'une autre classe et de l'ajouter à " "MyWindow dans la méthode do_activate(self) :" #. (itstool) path: section/code #: C/image.py.page:51 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "# a class to create a window\n" #| "class MyWindow(Gtk.ApplicationWindow):\n" #| " def __init__(self, app):\n" #| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" #| " self.set_default_size(300, 300)\n" #| "\n" #| "# a class to create an image\n" #| "class MyImage(Gtk.Image):\n" #| " def __init__(self):\n" #| " Gtk.Image.__init__(self)\n" #| " self.set_from_file(\"gnome-image.png\")\n" #| "\n" #| "class MyApplication(Gtk.Application):\n" #| " def __init__(self):\n" #| " Gtk.Application.__init__(self)\n" #| "\n" #| " def do_activate(self):\n" #| " # create an instance of MyWindow\n" #| " win = MyWindow(self)\n" #| " # create an instance of MyImage and add it to the window\n" #| " win.add(MyImage())\n" #| " # show the window and everything on it\n" #| " win.show_all()" msgid "" "\n" " # a class to create a window\n" " class MyWindow(Gtk.ApplicationWindow):\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(300, 300)\n" "\n" " # a class to create an image\n" " class MyImage(Gtk.Image):\n" " def __init__(self):\n" " Gtk.Image.__init__(self)\n" " self.set_from_file(\"gnome-image.png\")\n" "\n" " class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " # create an instance of MyWindow\n" " win = MyWindow(self)\n" " # create an instance of MyImage and add it to the window\n" " win.add(MyImage())\n" " # show the window and everything on it\n" " win.show_all()\n" " " msgstr "" "\n" "# a class to create a window\n" "class MyWindow(Gtk.ApplicationWindow):\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(300, 300)\n" "\n" "# a class to create an image\n" "class MyImage(Gtk.Image):\n" " def __init__(self):\n" " Gtk.Image.__init__(self)\n" " self.set_from_file(\"gnome-image.png\")\n" "\n" "class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " # create an instance of MyWindow\n" " win = MyWindow(self)\n" " # create an instance of MyImage and add it to the window\n" " win.add(MyImage())\n" " # show the window and everything on it\n" " win.show_all()" #. (itstool) path: note/p #: C/image.py.page:78 msgid "" "To use this code snippet, you will need to add the code that imports " "Gtk and GdkPixbuf from gi.repository " "and lines that instantiate the MyApplication window." msgstr "" #. (itstool) path: section/title #: C/image.py.page:85 msgid "Useful methods for an Image widget" msgstr "Méthodes utiles pour un élément graphique Image" #. (itstool) path: item/p #: C/image.py.page:89 #, fuzzy #| msgid "" #| "To load an image over a network use set_from_pixbuf(pixbuf), " #| "where pixbuf is a GdkPixbuf." msgid "" "To load an image over a network use set_from_pixbuf(pixbuf), " "where pixbuf is a GdkPixbuf." msgstr "" "Pour charger une image en provenance d'un réseau, utilisez la fonction " "set_from_pixbuf(pixbuf), où pixbuf est un GdkPixbuf." #. (itstool) path: item/code #: C/image.py.page:93 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "from gi.repository import Gtk\n" #| "from gi.repository import GdkPixbuf\n" #| "import sys\n" #| "\n" #| "class MyWindow(Gtk.ApplicationWindow):\n" #| " # create a window\n" #| " def __init__(self, app):\n" #| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" #| " self.set_default_size(300, 300)\n" #| "\n" #| " # create a pixbuf from file filename=\"gnome-image.png\", with width=32\n" #| " # and height=64 amd boolean preserve_aspect_ratio=False.\n" #| " pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(\"gnome-image.png\", 64, 128, False)\n" #| "\n" #| " # create an image\n" #| " image = Gtk.Image()\n" #| " # set the content of the image as the pixbuf\n" #| " image.set_from_pixbuf(pixbuf)\n" #| " # add the image to the window\n" #| " self.add(image)" msgid "" "\n" " from gi.repository import Gtk\n" " from gi.repository import GdkPixbuf\n" " import sys\n" "\n" " class MyWindow(Gtk.ApplicationWindow):\n" " # create a window\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(300, 300)\n" "\n" " # create a pixbuf from file filename=\"gnome-image.png\", with width=32\n" " # and height=64 amd boolean preserve_aspect_ratio=False.\n" " pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(\"gnome-image.png\", 64, 128, False)\n" "\n" " # create an image\n" " image = Gtk.Image()\n" " # set the content of the image as the pixbuf\n" " image.set_from_pixbuf(pixbuf)\n" " # add the image to the window\n" " self.add(image)\n" " " msgstr "" "\n" "from gi.repository import Gtk\n" "from gi.repository import GdkPixbuf\n" "import sys\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # create a window\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(300, 300)\n" "\n" " # create a pixbuf from file filename=\"gnome-image.png\", with width=32\n" " # and height=64 amd boolean preserve_aspect_ratio=False.\n" " pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(\"gnome-image.png\", 64, 128, False)\n" "\n" " # create an image\n" " image = Gtk.Image()\n" " # set the content of the image as the pixbuf\n" " image.set_from_pixbuf(pixbuf)\n" " # add the image to the window\n" " self.add(image)" #. (itstool) path: item/p #: C/image.py.page:115 msgid "" "If preserve_aspect_ratio=True we can use " "new_from_file_at_size(filename, width, height). If width or height is -1, it is not constrained." msgstr "" "Si preserve_aspect_ratio=True est vrai, utilisez " "new_from_file_at_size(nomdufichier, largeur, hauteur). Si " "largeur ou hauteur est -1, il n'y a " "pas de contrainte." #. (itstool) path: item/p #: C/image.py.page:119 #, fuzzy #| msgid "" #| "For loading from an input stream, see new_from_stream() and " #| "new_from_stream_at_scale() in the documentation" msgid "" "For loading from an input stream, see new_from_stream() and " "new_from_stream_at_scale() in the documentation." msgstr "" "Pour charger à partir d'un flux entrant, consultez new_from_stream() et new_from_stream_at_scale() dans la documentation" #. (itstool) path: item/p #: C/image.py.page:131 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" " " "GtkImage" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/image.py.page:135 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" " " "GtkWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/image.vala.page:8 #, fuzzy #| msgid "Images and labels" msgctxt "text" msgid "Image (Vala)" msgstr "Images et étiquettes" #. (itstool) path: page/code #: C/image.vala.page:27 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Welcome to GNOME\");\n" "\n" "\t\tvar image = new Gtk.Image ();\n" "\t\timage.set_from_file (\"gnome-image.png\");\n" "\t\tthis.add (image);\n" "\t\tthis.set_default_size (300, 300);\n" "\t}\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show_all ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/image.vala.page:32 C/separator.vala.page:40 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "GtkApplication" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/image.vala.page:33 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkApplicationWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/image.vala.page:34 C/paned.vala.page:38 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkImage" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/image-viewer.c.page:8 #, fuzzy #| msgid "Image Viewer" msgctxt "text" msgid "Image viewer (C)" msgstr "Visionneur d'images" #. (itstool) path: info/desc #: C/image-viewer.c.page:11 msgid "A little bit more than a simple \"Hello world\" Gtk application." msgstr "Un peu plus qu'une simple application Gtk « Hello world »." #. (itstool) path: page/title #: C/image-viewer.c.page:29 C/image-viewer.cpp.page:27 #: C/image-viewer.js.page:29 C/image-viewer.py.page:29 #: C/image-viewer.vala.page:37 #, fuzzy #| msgid "Image Viewer" msgid "Image viewer" msgstr "Visionneur d'images" #. (itstool) path: synopsis/p #: C/image-viewer.c.page:32 C/image-viewer.cpp.page:30 #: C/message-board.c.page:29 C/record-collection.js.page:32 msgid "In this tutorial, you will learn:" msgstr "Dans ce tutoriel, vous allez apprendre :" #. (itstool) path: item/p #: C/image-viewer.c.page:34 msgid "Some basic concepts of C/GObject programming" msgstr "quelques concepts de base de la programmation en C/GObject," #. (itstool) path: item/p #: C/image-viewer.c.page:35 msgid "How to write a Gtk application in C" msgstr "comment écrire une application GTK en C." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/image-viewer.c.page:39 C/image-viewer.cpp.page:37 #: C/image-viewer.js.page:47 C/image-viewer.py.page:46 #: C/image-viewer.vala.page:54 #, fuzzy #| msgid "" #| "@@image: 'media/image-viewer.png'; md5=7720360611243b14283b83527be968c2" msgctxt "_" msgid "" "external ref='media/image-viewer.png' md5='7720360611243b14283b83527be968c2'" msgstr "" "@@image: 'media/image-viewer.png'; md5=7720360611243b14283b83527be968c2" #. (itstool) path: item/p #: C/image-viewer.c.page:49 #, fuzzy #| msgid "" #| "Choose Gtk+ (Simple) from the C tab, click " #| "Continue, and fill out your details on the next few pages. Use " #| "image-viewer as project name and directory." msgid "" "Choose GTK+ (Simple) from the C tab, click " "Continue, and fill out your details on the next few pages. Use " "image-viewer as project name and directory." msgstr "" "Sélectionnez GTK+ (Simple) dans l'onglet C++, cliquez " "sur Continuer et saisissez vos informations sur les quelques " "pages suivantes. Mettez image-viewer comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/image-viewer.c.page:52 msgid "" "Make sure that Use GtkBuilder for user interface is disabled as " "we will create the UI manually in this tutorial. Check the Guitar-Tuner tutorial if you want to learn how to " "use the interface builder." msgstr "" "Assurez-vous d'avoir désactivé Utiliser GtkBuilder pour l'interface " "utilisateur car nous allons créer l'interface utilisateur manuellement " "dans cet exemple. Consultez le tutoriel Guitar-" "Tuner pour un exemple d'utilisation du constructeur d'interfaces." #. (itstool) path: section/p #: C/image-viewer.c.page:67 msgid "" "C is a rather verbose language, so don't be surprised that the file contains " "quite a lot of code. Most of it is template code. It loads an (empty) window " "and shows it. More details are given below; skip this list if you understand " "the basics:" msgstr "" "« C » est un langage plutôt verbeux, donc ne soyez pas surpris par la " "quantité de code que contient le fichier. La plupart du code est générique. " "Il charge une fenêtre (vide) et l'affiche. Vous trouverez plus de détails ci-" "dessous ; passez cette liste si vous comprenez les bases :" #. (itstool) path: item/p #: C/image-viewer.c.page:74 msgid "" "The create_window function creates a new (empty) window and " "connects a signal to exit the application when that window is closed." msgstr "" "La fonction create_window crée une nouvelle fenêtre (vide) et " "connecte un signal pour quitter l'application quand la fenêtre est fermée." #. (itstool) path: section/title #: C/image-viewer.c.page:90 C/image-viewer.cpp.page:87 #: C/image-viewer.vala.page:139 msgid "Creating the user interface" msgstr "Création de l'interface utilisateur" #. (itstool) path: section/p #: C/image-viewer.c.page:91 msgid "" "Now we will bring life into the empty window. GTK organizes the user " "interface with GtkContainers that can contain other widgets and " "even other containers. Here we will use the simplest available container, a " "GtkBox:" msgstr "" "Nous allons maintenant donner vie à la fenêtre vide. GTK organise " "l'interface utilisateur avec des GtkContainer qui peuvent " "contenir d'autres éléments graphiques et même d'autres conteneurs. Ici, nous " "allons utiliser le plus simple conteneur disponible, une boîte GtkBox :" #. (itstool) path: section/code #: C/image-viewer.c.page:94 #, no-wrap msgid "" "\n" "static GtkWidget*\n" "create_window (void)\n" "{\n" "\tGtkWidget *window;\n" "\tGtkWidget *button;\n" "\tGtkWidget *image;\n" "\tGtkWidget *box;\n" "\n" "\t/* Set up the UI */\n" "\twindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n" "\tgtk_window_set_title (GTK_WINDOW (window), \"image-viewer-c\");\n" "\n" "\tbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 5);\n" "\tbutton = gtk_button_new_with_label (_(\"Open image\"));\n" "\timage = gtk_image_new ();\n" "\n" "\tgtk_box_pack_start (GTK_BOX (box), image, TRUE, TRUE, 0);\n" "\tgtk_box_pack_start (GTK_BOX (box), button, FALSE, FALSE, 0);\n" "\n" "\tgtk_container_add (GTK_CONTAINER (window), box);\n" "\n" "\t/* Connect signals */\n" "\n" "\t/* Show open dialog when opening a file */\n" "\tg_signal_connect (button, \"clicked\", G_CALLBACK (on_open_image), image);\n" "\n" "\t/* Exit when the window is closed */\n" "\tg_signal_connect (window, \"destroy\", G_CALLBACK (gtk_main_quit), NULL);\n" "\n" "\treturn window;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/image-viewer.c.page:129 msgid "" "The first lines create the widgets we want to use: a button for opening up " "an image, the image view widget itself and the box we will use as a " "container. The macros like GTK_BOX are used for dynamic type " "checking and casting which is needed as C doesn't support object-orientation " "out-of-the-box." msgstr "" "Les premières lignes créent les éléments graphiques que nous voulons " "utiliser : un bouton pour pouvoir ouvrir une image, l'élément graphique " "image lui-même et la boîte qui nous sert de conteneur. Nous utilisons des " "macros comme GTK_BOX pour contrôler et convertir de manière " "dynamique les types d'objet ce qui est nécessaire car le C n'est pas prévu " "nativement pour prendre en charge la programmation orientée objets." #. (itstool) path: item/p #: C/image-viewer.c.page:134 msgid "" "The calls to gtk_box_pack_start add the two widgets to the box " "and define their behaviour. The image will expand into any available space " "while the button will just be as big as needed. You will notice that we " "don't set explicit sizes on the widgets. In GTK this is usually not needed " "as it makes it much easier to have a layout that looks good in different " "window sizes. Next, the box is added to the window." msgstr "" "Les appels à gtk_box_pack_start ajoutent les deux éléments " "graphiques à la boîte et définissent leur comportement. L'image va s'étendre " "pour occuper tout l'espace disponible alors que le bouton va prendre juste " "la taille nécessaire. Notez que nous ne définissons pas explicitement les " "dimensions des éléments graphiques. Avec GTK, ce n'est habituellement pas " "nécessaire car cela facilite grandement l'obtention d'une bonne disposition " "pour différentes tailles de fenêtre. La boîte est ensuite ajoutée dans la " "fenêtre." #. (itstool) path: item/p #: C/image-viewer.c.page:140 msgid "" "We need to define what happens when the user clicks on the button. GTK uses " "the concept of signals. When the button is clicked, it fires the " "clicked signal, which we can connect to some action. This is done " "using the g_signal_connect function which tells GTK to call the " "on_image_open function when the button is clicked and to pass " "the image as an additional argument to that function. We will define the " "callback in the next section." msgstr "" "Il nous faut définir ce qui se passe quand l'utilisateur clique sur le " "bouton. GTK utilise le concept de signaux. Quand le bouton est " "cliqué, il envoie le signal clicked qu'il est possible de relier à " "une action. Cela a été réalisé avec la méthode g_signal_connect " "qui commande à GTK d'appeler la fonction on_open_image quand le " "bouton est cliqué et de transmettre l'image à cette fonction comme argument " "additionnel. Nous définirons la fonction de rappel à la section " "suivante." #. (itstool) path: item/p #: C/image-viewer.c.page:145 msgid "" "The last g_signal_connect() makes sure that the application " "exits when the window is closed." msgstr "" "Le dernier signal g_signal_connect() assure que l'application " "quitte quand la fenêtre est fermée." #. (itstool) path: item/p #: C/image-viewer.c.page:148 msgid "" "As a last step, make sure to replace the gtk_widget_show call " "in the main() function by gtk_widget_show_all() to " "show the window and all the widgets it contains." msgstr "" "Pour finir, assurez-vous de remplacer l'appel gtk_widget_show " "de la fonction principale main() par " "gtk_widget_show_all() pour afficher la fenêtre et tous les " "éléments graphiques qu'elle contient." #. (itstool) path: section/title #: C/image-viewer.c.page:155 C/image-viewer.cpp.page:142 #: C/image-viewer.vala.page:210 msgid "Showing the image" msgstr "Affichage de l'image" #. (itstool) path: section/p #: C/image-viewer.c.page:156 msgid "" "We will now define the signal handler for the clicked signal or the " "button we mentioned before. Add this code before the create_window() method." msgstr "" "Nous allons maintenant définir le gestionnaire de signal pour le signal " "clicked du bouton ci-dessus. Ajoutez ce code avant la méthode " "create_window()." #. (itstool) path: section/code #: C/image-viewer.c.page:159 #, no-wrap msgid "" "\n" "static void\n" "on_open_image (GtkButton* button, gpointer user_data)\n" "{\n" "\tGtkWidget *image = GTK_WIDGET (user_data);\n" "\tGtkWidget *toplevel = gtk_widget_get_toplevel (image);\n" "\tGtkFileFilter *filter = gtk_file_filter_new ();\n" "\tGtkWidget *dialog = gtk_file_chooser_dialog_new (_(\"Open image\"),\n" "\t GTK_WINDOW (toplevel),\n" "\t GTK_FILE_CHOOSER_ACTION_OPEN,\n" "\t GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,\n" "\t GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,\n" "\t NULL);\n" "\n" "\tgtk_file_filter_add_pixbuf_formats (filter);\n" "\tgtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog),\n" "\t filter);\n" "\n" "\tswitch (gtk_dialog_run (GTK_DIALOG (dialog)))\n" "\t{\n" "\t\tcase GTK_RESPONSE_ACCEPT:\n" "\t\t{\n" "\t\t\tgchar *filename =\n" "\t\t\t\tgtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));\n" "\t\t\tgtk_image_set_from_file (GTK_IMAGE (image), filename);\n" "\t\t\tbreak;\n" "\t\t}\n" "\t\tdefault:\n" "\t\t\tbreak;\n" "\t}\n" "\tgtk_widget_destroy (dialog);\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/image-viewer.c.page:192 C/image-viewer.cpp.page:178 #: C/image-viewer.js.page:283 C/image-viewer.py.page:197 msgid "" "This is a bit more complicated than anything we've attempted so far, so " "let's break it down:" msgstr "" "C'est un peu plus compliqué que tout ce que nous avons essayé jusqu'à " "présent, donc décortiquons cette partie étape par étape :" #. (itstool) path: item/p #: C/image-viewer.c.page:194 msgid "" "The first argument of the signal is always the widget that sent the signal. " "Sometimes other arguments related to the signal come after that, but " "clicked doesn't have any. Next is the user_data " "argument which is a pointer to the data we passed when connecting the " "signal. In this case it is our GtkImage object." msgstr "" "Le premier argument du signal est toujours l'élément graphique qui envoie le " "signal. Il y a parfois d'autres arguments attachés au signal, mais " "clicked n'en a aucun. Ensuite vient l'argument user_data qui est un pointeur vers les données transmises en connectant le " "signal. Ici, c'est notre objet GtkImage." #. (itstool) path: item/p #: C/image-viewer.c.page:200 msgid "" "The next interesting line is where the dialog for choosing the file is " "created using gtk_file_chooser_dialog_new. The function takes " "the title of the dialog, the parent window of the dialog and several options " "like the number of buttons and their corresponding values." msgstr "" "La prochaine ligne intéressante est celle où est créée la boîte de dialogue " "pour choisir le fichier avec gtk_file_chooser_dialog_new. La " "fonction prend comme argument le titre et la fenêtre parente de la boîte de " "dialogue et plusieurs options telles que le numéro des boutons et leurs " "valeurs correspondantes." #. (itstool) path: item/p #: C/image-viewer.c.page:204 C/image-viewer.cpp.page:186 #: C/image-viewer.js.page:290 C/image-viewer.py.page:204 msgid "" "Notice that we are using stock button names from Gtk, instead of " "manually typing \"Cancel\" or \"Open\". The advantage of using stock names " "is that the button labels will already be translated into the user's " "language." msgstr "" "Notez que nous utilisons les noms de bouton de la collection " "(stock) Gtk au lieu de saisir manuellement « Cancel » ou « Open ». " "L'avantage d'utiliser les noms de la collection est que les étiquettes des " "boutons seront déjà traduites dans la langue de l'utilisateur." #. (itstool) path: item/p #: C/image-viewer.c.page:207 msgid "" "The next two lines restrict the Open dialog to only display files " "which can be opened by GtkImage. A filter object is created first; we then " "add all kinds of files supported by GdkPixbuf (which includes " "most image formats like PNG and JPEG) to the filter. Finally, we set this " "filter to be the Open dialog's filter." msgstr "" "Les deux lignes suivantes limitent la boîte de dialogue Open à " "l'affichage des seuls fichiers pouvant être ouverts par GtkImage. Un objet filtre est d'abord créé ; ensuite nous ajoutons tous les " "types de fichier pris en charge par GdkPixbuf (ce qui inclut la " "plupart des formats d'image comme PNG ou JPEG) au filtre. Enfin, nous " "appliquons ce filtre à la boîte de dialogue Open." #. (itstool) path: item/p #: C/image-viewer.c.page:210 msgid "" "gtk_dialog_run displays the Open dialog. The dialog " "will wait for the user to choose an image; when they do, " "gtk_dialog_run will return the value GTK_RESPONSE_ACCEPT (it would return GTK_RESPONSE_CANCEL if the user clicked " "Cancel). The switch statement tests for this." msgstr "" "gtk_dialog_run affiche la boîte de dialogue Open. La " "boîte de dialogue attend que l'utilisateur choisisse une image ; quand c'est " "fait, gtk_dialog_run retourne la valeur " "GTK_RESPONSE_ACCEPT (il retourne la valeur " "GTK_RESPONSE_CANCEL si l'utilisateur clique sur Cancel). L'instruction switch teste cette réponse." #. (itstool) path: item/p #: C/image-viewer.c.page:212 msgid "" "Assuming that the user did click Open, the next line sets the " "file property of the GtkImage to the filename of the image " "selected by the user. The GtkImage will then load and display the chosen " "image." msgstr "" "Supposons que l'utilisateur a cliqué sur le bouton Ouvrir, la " "ligne suivante attribue le nom du fichier image choisi par l'utilisateur aux " "propriétés file du GtkImage. Ensuite, GtkImage charge et " "affiche l'image choisie." #. (itstool) path: item/p #: C/image-viewer.c.page:215 msgid "" "In the final line of this method, we destroy the Open dialog " "because we don't need it any more. Destroying automatically hides the dialog." msgstr "" "Dans la dernière ligne de cette méthode, nous détruisons la boîte de " "dialogue Open car on n'en a plus besoin. La destruction masque " "automatiquement la boîte de dialogue." #. (itstool) path: section/p #: C/image-viewer.c.page:224 C/image-viewer.cpp.page:212 msgid "" "If you haven't already done so, choose the Debug/src/image-viewer application in the dialog that appears. Finally, hit Run " "and enjoy!" msgstr "" "Si ce n'est pas encore fait, sélectionnez l'application Debug/src/" "image-viewer dans la boîte de dialogue qui s'affiche et cliquez sur " "Exécuter. Amusez-vous bien !" #. (itstool) path: section/p #: C/image-viewer.c.page:229 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: item/p #: C/image-viewer.c.page:237 C/image-viewer.cpp.page:225 #: C/image-viewer.js.page:325 C/image-viewer.py.page:239 #: C/image-viewer.vala.page:298 msgid "" "Have the user select a directory rather than a file, and provide controls to " "cycle through all of the images in a directory." msgstr "" "Faire que l'utilisateur puisse sélectionner un dossier plutôt qu'un fichier " "et fournir les contrôles pour naviguer parmi toutes les images d'un dossier." #. (itstool) path: item/p #: C/image-viewer.c.page:240 C/image-viewer.cpp.page:228 #: C/image-viewer.js.page:328 C/image-viewer.py.page:242 #: C/image-viewer.vala.page:301 msgid "" "Apply random filters and effects to the image when it is loaded and allow " "the user to save the modified image." msgstr "" "Appliquer au hasard des filtres et des effets à l'image quand elle est " "chargée et permettre à l'utilisateur d'enregistrer l'image modifiée." #. (itstool) path: item/p #: C/image-viewer.c.page:241 C/image-viewer.cpp.page:229 #: C/image-viewer.js.page:329 C/image-viewer.py.page:243 #: C/image-viewer.vala.page:302 msgid "" "GEGL provides powerful " "image manipulation capabilities." msgstr "" "GEGL fournit de " "puissantes possibilités de manipulation d'image." #. (itstool) path: item/p #: C/image-viewer.c.page:244 C/image-viewer.cpp.page:232 #: C/image-viewer.js.page:332 C/image-viewer.py.page:246 #: C/image-viewer.vala.page:305 msgid "" "Allow the user to load images from network shares, scanners, and other more " "complicated sources." msgstr "" "Permettre à l'utilisateur de charger des images depuis des sites de partage, " "des scanners ou d'autres sources plus sophistiquées." #. (itstool) path: item/p #: C/image-viewer.c.page:245 C/image-viewer.cpp.page:233 #: C/image-viewer.js.page:333 C/image-viewer.py.page:247 #: C/image-viewer.vala.page:306 #, fuzzy #| msgid "" #| "You can use GIO to handle network file tranfers and the like, and GNOME Scan to handle scanning." msgid "" "You can use GIO to handle network file transfers and the like, and GNOME Scan to handle " "scanning." msgstr "" "Vous pouvez utiliser GIO pour gérer des transferts de fichiers en ligne et des " "choses du même type et GNOME Scan pour gérer les documents scannés." #. (itstool) path: info/desc #: C/image-viewer.cpp.page:9 msgid "A little bit more than a simple \"Hello world\" GTKmm application." msgstr "Un peu plus qu'une simple application GTKmm « Hello world »." #. (itstool) path: item/p #: C/image-viewer.cpp.page:32 msgid "Some basic concepts of C++/GObject programming" msgstr "quelques concepts de base de la programmation en C++/GObject," #. (itstool) path: item/p #: C/image-viewer.cpp.page:33 msgid "How to write a Gtk application in C++" msgstr "comment écrire une application Gtk en C++." #. (itstool) path: item/p #: C/image-viewer.cpp.page:47 msgid "" "Choose GTKmm (Simple) from the C++ tab, click " "Forward, and fill out your details on the next few pages. Use " "image-viewer as project name and directory." msgstr "" "Sélectionnez GTKmm (Simple) dans l'onglet C++, cliquez " "sur Continuer et saisissez vos informations sur les quelques " "pages suivantes. Mettez image-viewer comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/image-viewer.cpp.page:50 msgid "" "Make sure that Use GtkBuilder for user interface is disabled as " "we will create the UI manually in this tutorial. Check the Guitar-Tuner tutorial if you want to learn how " "to use the interface builder." msgstr "" "Assurez-vous d'avoir désactivé Utiliser GtkBuilder pour l'interface " "utilisateur car nous allons créer l'interface utilisateur manuellement " "dans cet exemple. Consultez le tutoriel Guitar-Tuner pour un exemple d'utilisation du constructeur " "d'interfaces." #. (itstool) path: item/p #: C/image-viewer.cpp.page:55 msgid "" "Click Apply and the project will be created for you. Open " "src/main.cc from the Project or File " "tabs. You should see some code which starts with the lines:" msgstr "" "Cliquez sur Appliquer et le projet est créé. Ouvrez src/" "main.cc depuis l'onglet Projet ou l'onglet Fichiers. Vous devez voir apparaître du code commençant par les lignes :" #. (itstool) path: item/code #: C/image-viewer.cpp.page:56 #, no-wrap msgid "" "\n" "#include <gtkmm.h>\n" "#include <iostream>\n" "\n" "#include \"config.h\">" msgstr "" #. (itstool) path: item/p #: C/image-viewer.cpp.page:70 msgid "" "The three #include lines at the top include the config (useful autoconf build defines), gtkmm (user interface) " "and iostream (C++-STL) libraries. Functions from these " "libraries are used in the rest of the code." msgstr "" "Les trois lignes #include du haut incorporent les bibliothèques " "config (définitions utiles pour la construction autoconf), " "gtkmm (interface utilisateur) et iostream (C++-" "STL). Les fonctions de ces bibliothèques seront utilisées dans le reste du " "programme." #. (itstool) path: item/p #: C/image-viewer.cpp.page:73 msgid "" "The main function creates a new (empty) window and sets the " "window title." msgstr "" "La fonction main crée une nouvelle fenêtre (vide) et configure " "le titre de la fenêtre." #. (itstool) path: item/p #: C/image-viewer.cpp.page:76 msgid "" "The kit::run() call starts the GTKmm main loop, which runs the " "user interface and starts listening for events (like clicks and key " "presses). As we give the window as an argument to that function, the " "application will automatically exit when that window is closed." msgstr "" "L'appel kit::run() démarre la boucle principale de GTKmm qui " "exécute l'interface utilisateur et commence à écouter les événements (comme " "des clics ou des appuis sur des touches). Comme la fenêtre est fournie comme " "argument de la fonction, l'application quitte automatiquement quand la " "fenêtre est fermée." #. (itstool) path: section/p #: C/image-viewer.cpp.page:88 msgid "" "Now we will bring life into the empty window. GTKmm organizes the user " "interface with Gtk::Containers that can contain other widgets " "and even other containers. Here we will use the simplest available " "container, a Gtk::Box:" msgstr "" "Nous allons maintenant donner vie à la fenêtre vide. La disposition de " "l'interface utilisateur est faite par GTKmm avec les conteneurs Gtk::" "Container qui peuvent contenir d'autres éléments graphiques et même " "d'autres conteneurs. Ici, on utilise le plus simple des conteneurs " "disponibles, une boîte Gtk::Box :" #. (itstool) path: section/code #: C/image-viewer.cpp.page:91 #, no-wrap msgid "" "\n" "int\n" "main (int argc, char *argv[])\n" "{\n" "\tGtk::Main kit(argc, argv);\n" "\n" "\tGtk::Window main_win;\n" "\tmain_win.set_title (\"image-viewer-cpp\");\n" "\n" "\tGtk::Box* box = Gtk::manage(new Gtk::Box());\n" "\tbox->set_orientation (Gtk::ORIENTATION_VERTICAL);\n" "\tbox->set_spacing(6);\n" "\tmain_win.add(*box);\n" "\n" "\timage = Gtk::manage(new Gtk::Image());\n" "\tbox->pack_start (*image, true, true);\n" "\n" "\tGtk::Button* button = Gtk::manage(new Gtk::Button(\"Open Image…\"));\n" "\tbutton->signal_clicked().connect (\n" "\t\tsigc::ptr_fun(&on_open_image));\n" "\tbox->pack_start (*button, false, false);\n" "\n" "\tmain_win.show_all_children();\n" "\tkit.run(main_win);\n" "\n" "\treturn 0;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/image-viewer.cpp.page:121 msgid "" "The first lines create the widgets we want to use: a button for opening up " "an image, the image view widget itself and the box we will use as a " "container." msgstr "" "Les premières lignes créent les éléments graphiques dont nous avons besoin : " "un bouton pour ouvrir une image, l'élément graphique image lui-même et la " "boîte que nous utilisons comme conteneur." #. (itstool) path: item/p #: C/image-viewer.cpp.page:124 msgid "" "The calls to pack_start add the two widgets to the box and " "define their behaviour. The image will expand into any available space while " "the button will just be as big as needed. You will notice that we don't set " "explicit sizes on the widgets. In GTKmm this is usually not needed as it " "makes it much easier to have a layout that looks good in different window " "sizes. Next, the box is added to the window." msgstr "" "Les appels à pack_start ajoutent les deux éléments graphiques à " "la boîte et définissent leur comportement. L'image va s'étendre pour occuper " "tout l'espace disponible alors que le bouton va prendre juste la taille " "nécessaire. Notez que nous ne définissons pas explicitement les dimensions " "des éléments graphiques. Avec GTKmm, ce n'est habituellement pas nécessaire " "car cela facilite grandement l'obtention d'une bonne disposition pour " "différentes tailles de fenêtre. La boîte est ensuite ajoutée dans la fenêtre." #. (itstool) path: item/p #: C/image-viewer.cpp.page:130 msgid "" "We need to define what happens when the user clicks on the button. GTKmm " "uses the concept of signals. When the button is clicked, it fires " "the clicked signal, which we can connect to some action. This is " "done using the signal_clicked().connect method which tells " "GTKmm to call the on_open_image function when the button is " "clicked. We will define the callback in the next section." msgstr "" "Il nous faut définir ce qui se passe quand l'utilisateur clique sur le " "bouton. GTKmm utilise le concept de signaux. Quand le bouton est " "cliqué, il envoie le signal clicked qu'il est possible de relier à " "une action. Cela a été réalisé avec la méthode signal_clicked()." "connect qui commande à GTKmm d'appeler la fonction " "on_open_image quand le bouton est cliqué. Nous définirons la " "fonction de rappel à la section suivante." #. (itstool) path: item/p #: C/image-viewer.cpp.page:134 msgid "" "The last step is to show all widgets in the window using " "show_all_children(). This is equivalent to using the " "show() method on all our child widgets." msgstr "" "La dernière étape consiste à afficher tous les éléments graphiques avec la " "commande show_all_children(). Ceci équivaut à appliquer la " "méthode show() séparément à chaque élément graphique enfant." #. (itstool) path: section/p #: C/image-viewer.cpp.page:143 msgid "" "We will now define the signal handler for the clicked signal or the " "button we mentioned before. Add this code before the main " "method." msgstr "" "Nous allons maintenant définir le gestionnaire de signal pour le signal " "clicked du bouton ci-dessus. Ajoutez ce code avant la méthode " "main." #. (itstool) path: section/code #: C/image-viewer.cpp.page:146 #, no-wrap msgid "" "\n" "Gtk::Image* image = 0;\n" "\n" "static void\n" "on_open_image ()\n" "{\n" "\tGtk::FileChooserDialog dialog(\"Open image\",\n" "\t Gtk::FILE_CHOOSER_ACTION_OPEN);\n" "\tdialog.add_button (Gtk::Stock::OPEN,\n" "\t Gtk::RESPONSE_ACCEPT);\n" "\tdialog.add_button (Gtk::Stock::CANCEL,\n" "\t Gtk::RESPONSE_CANCEL);\n" "\n" "\tGlib::RefPtr<Gtk::FileFilter> filter =\n" "\t\tGtk::FileFilter::create();\n" "\tfilter->add_pixbuf_formats();\n" "\tfilter->set_name(\"Images\");\n" "\tdialog.add_filter (filter);\n" "\n" "\tconst int response = dialog.run();\n" "\tdialog.hide();\n" "\n" "\tswitch (response)\n" "\t{\n" "\t\tcase Gtk::RESPONSE_ACCEPT:\n" "\t\t\timage->set(dialog.get_filename());\n" "\t\t\tbreak;\n" "\t\tdefault:\n" "\t\t\tbreak;\n" "\t}\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/image-viewer.cpp.page:181 msgid "" "The dialog for choosing the file is created using the Gtk::" "FileChooserDialog constructor. This takes the title and type of the " "dialog. In our case, it is an Open dialog." msgstr "" "La boîte de dialogue pour choisir le fichier en utilisant le constructeur " "Gtk::FileChooserDialog. Celui-ci prend comme argument le titre " "et le type de la boîte de dialogue. Ici, c'est un dialogue OPEN " "(ouvrir)." #. (itstool) path: item/p #: C/image-viewer.cpp.page:185 msgid "" "The next two lines add an Open and a Close button to the " "dialog." msgstr "" "Les deux lignes suivantes ajoutent les boutons Open et Close à la boîte de dialogue." #. (itstool) path: item/p #: C/image-viewer.cpp.page:187 msgid "" "The second argument to the add_button() method is a value to " "identify the clicked button. We use predefined values provided by GTKmm " "here, too." msgstr "" "Le second argument de la méthode add_button() est une valeur " "identifiant le bouton cliqué. Nous utilisons ici aussi les valeurs de GTKmm " "fournies par défaut." #. (itstool) path: item/p #: C/image-viewer.cpp.page:192 msgid "" "The next two lines restrict the Open dialog to only display files " "which can be opened by Gtk::Image. A filter object is created " "first; we then add all kinds of files supported by Gdk::Pixbuf " "(which includes most image formats like PNG and JPEG) to the filter. " "Finally, we set this filter to be the Open dialog's filter." msgstr "" "Les deux lignes suivantes limitent la boîte de dialogue Open à " "l'affichage des seuls fichiers pouvant être ouverts par Gtk::Image. Un objet filtre est d'abord créé ; ensuite nous ajoutons tous les " "types de fichier pris en charge par Gdk::Pixbuf (ce qui inclut " "la plupart des formats d'image comme PNG ou JPEG) au filtre. Enfin, nous " "appliquons ce filtre à la boîte de dialogue Open." #. (itstool) path: item/p #: C/image-viewer.cpp.page:193 msgid "" "Glib::RefPtr is a smart pointer used here, that makes sure that " "the filter is destroyed when there is no reference to it anymore." msgstr "" "Glib::RefPtr utilisé ici, est un pointeur intelligent qui " "surveille que le filtre soit bien détruit quand il n'a plus de référence " "vers lui." #. (itstool) path: item/p #: C/image-viewer.cpp.page:197 msgid "" "dialog.run displays the Open dialog. The dialog will " "wait for the user to choose an image; when they do, dialog.run " "will return the value Gtk::RESPONSE_ACCEPT (it would return " "Gtk::RESPONSE_CANCEL if the user clicked Cancel). " "The switch statement tests for this." msgstr "" "dialog.run affiche la boîte de dialogue Open. La " "boîte de dialogue attend que l'utilisateur choisisse une image ; quand c'est " "fait, dialog.run retourne la valeur Gtk::RESPONSE_ACCEPT (il retourne la valeur Gtk::RESPONSE_CANCEL si " "l'utilisateur clique sur Cancel). L'instruction switch teste cette réponse." #. (itstool) path: item/p #: C/image-viewer.cpp.page:200 msgid "" "We hide the Open dialog because we don't need it any more. The " "dialog would be hidden later anyway, as it is only a local variable and is " "destroyed (and therefore hidden) when the scope ends." msgstr "" "Nous masquons la boîte de dialogue Open car on n'en a plus " "besoin. Elle aurait de toute façon été masquée plus tard, car ce n'est " "qu'une variable locale qui est détruite (et donc disparaît) lorsqu'elle sort " "de la portée." #. (itstool) path: item/p #: C/image-viewer.cpp.page:203 msgid "" "Assuming that the user did click Open, the next line loads the " "file into the Gtk::Image so that it is displayed." msgstr "" "Supposons que l'utilisateur a cliqué sur le bouton Ouvrir, la " "ligne suivante charge le fichier dans leGtk::Image afin qu'elle " "s'affiche." #. (itstool) path: section/p #: C/image-viewer.cpp.page:217 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: info/title #: C/image-viewer.js.page:8 #, fuzzy #| msgid "Classes in JavaScript" msgctxt "text" msgid "Image viewer (JavaScript)" msgstr "Les classes en JavaScript" #. (itstool) path: info/desc #: C/image-viewer.js.page:11 #, fuzzy #| msgid "" #| "A little bit more than a simple \"Hello world\" application - write an " #| "image viewer in GTK. Includes an introduction to the JavaScript language." msgid "" "A little bit more than a simple \"Hello world\" application - write an image " "viewer in GTK+. Includes an introduction to the JavaScript language." msgstr "" "Un peu plus qu'une simple application « Hello world » - programmer un " "visionneur d'images avec GTK. Inclut une introduction au langage JavaScript." #. (itstool) path: credit/name #: C/image-viewer.js.page:15 C/image-viewer.py.page:15 msgid "Jonh Wendell" msgstr "Jonh Wendell" #. (itstool) path: synopsis/p #: C/image-viewer.js.page:32 C/image-viewer.py.page:32 msgid "" "In this tutorial, we're going to write a very simple GTK application that " "loads and displays an image file. You will learn how to:" msgstr "" "Dans ce tutoriel, nous allons écrire une application GTK très simple qui " "charge et affiche un fichier image. Vous allez apprendre comment :" #. (itstool) path: item/p #: C/image-viewer.js.page:34 msgid "Write a basic GTK user interface in JavaScript" msgstr "écrire une interface utilisateur GTK de base en JavaScript," #. (itstool) path: item/p #: C/image-viewer.js.page:35 C/image-viewer.py.page:35 msgid "Deal with events by connecting signals to signal handlers" msgstr "" "travailler avec des événements en connectant des signaux à des gestionnaires " "de signaux," #. (itstool) path: item/p #: C/image-viewer.js.page:36 C/image-viewer.py.page:36 msgid "Lay out GTK user interfaces using containers" msgstr "mettre en forme des interfaces utilisateur GTK avec des conteneurs," #. (itstool) path: item/p #: C/image-viewer.js.page:37 C/image-viewer.py.page:37 msgid "Load and display image files" msgstr "charger et afficher des fichiers image." #. (itstool) path: item/p #: C/image-viewer.js.page:42 msgid "An installed copy of the gjs interpreter" msgstr "une copie installée de l'interpréteur gjs," #. (itstool) path: item/p #: C/image-viewer.js.page:43 msgid "Basic knowledge of any object-orientated programming language" msgstr "des connaissances de base d'un langage de programmation objet." #. (itstool) path: item/p #: C/image-viewer.js.page:57 msgid "" "Choose Generic Javascript from the JS tab, click " "Forward, and fill out your details on the next few pages. Use " "image-viewer as project name and directory." msgstr "" "Sélectionnez JavaScript générique dans l'onglet JS, " "cliquez sur Continuer et saisissez vos informations sur les pages " "suivantes. Mettez visionneur_image comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/image-viewer.js.page:60 msgid "" "Click Apply and the project will be created for you. Open " "src/main.js from the Project or File " "tabs. It contains very basic example code." msgstr "" "Cliquez sur Appliquer et le projet est créé. Ouvrez src/" "main.js depuis l'onglet Projet ou l'onglet Fichiers. Il contient un exemple de programme très basique." #. (itstool) path: section/title #: C/image-viewer.js.page:67 msgid "JavaScript basics: Hello World" msgstr "Les bases JavaScript : Hello World" #. (itstool) path: section/p #: C/image-viewer.js.page:68 msgid "" "Before we start writing the image viewer, let's find out more about the way " "JavaScript is used in GNOME. Of course, your very first contact with any " "programming language should be the Hello World program which can already be " "found in main.js:" msgstr "" "Avant de commencer à programmer le visionneur d'images, regardons de plus " "près la façon dont JavaScript est utilisé dans GNOME. Bien sûr, votre tout " "premier contact avec n'importe quel langage de programmation devrait être le " "« Hello World » du fichier main.js :" # Bruno : with no space between print and ( #. (itstool) path: section/code #: C/image-viewer.js.page:69 #, no-wrap msgid "print (\"Hello world!\");" msgstr "print(\"Hello world!\");" #. (itstool) path: section/p #: C/image-viewer.js.page:70 msgid "" "This should look quite natural if you're familiar with almost any other " "programming language. The function print is called with the " "argument \"Hello world!\", which will be printed on the screen. " "Note that each line of code ends with a semicolon." msgstr "" "Ceci doit vous sembler très normal si vous êtes familier avec la plupart des " "langages de programmation. La fonction print est appelée avec " "l'argument \"Hello world!\" qui est imprimé à l'écran. Notez " "que chaque ligne du programme se termine par un point-virgule." #. (itstool) path: section/title #: C/image-viewer.js.page:74 msgid "Classes in JavaScript" msgstr "Les classes en JavaScript" #. (itstool) path: section/p #: C/image-viewer.js.page:75 msgid "This is the standard way to define a class in JavaScript:" msgstr "Voici la méthode standard pour définir une classe en JavaScript :" #. (itstool) path: section/code #: C/image-viewer.js.page:76 #, no-wrap msgid "" "\n" "function MyClass () {\n" " this._init ();\n" "}\n" "\n" "MyClass.prototype = {\n" "\n" " _init: function () {\n" " this.propertyA = \"This is an object's field\";\n" " this.propertyB = 10;\n" " },\n" "\n" " aMethod: function (arg1, arg2) {\n" " print (\"inside aMethod: \" + arg1 + \" \" + arg2);\n" " },\n" "\n" " dumpProperties: function () {\n" " print (this.propertyA);\n" " print (this.propertyB);\n" " }\n" "\n" "}" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:98 msgid "" "This defines a class called MyClass. Let's go through each part " "of the class definition:" msgstr "" "Ceci définit une classe appelée MyClass. Passons en revue " "chaque partie de la définition d'une classe :" #. (itstool) path: item/p #: C/image-viewer.js.page:101 msgid "" "function MyClass is the constructor of the class — its name " "must match the class's name. You can access any member of the class by using " "the this object; here, the constructor calls the class's " "_init method." msgstr "" "function MyClass est le constructeur de la classe — son nom " "doit correspondre au nom de la classe. Vous avez accès à n'importe quel " "membre de la classe avec l'objet this ; ici, le générateur " "appelle la méthode _init de la classe." #. (itstool) path: item/p #: C/image-viewer.js.page:104 msgid "" "The MyClass.prototype block is where you define the " "structure of the class. Each class is made up of methods " "(functions) and fields (variables); there are three methods and two fields " "in this example." msgstr "" "Le bloc MyClass.prototype est l'endroit où vous définissez la " "structure de la classe. Chaque classe est constituée de méthodes " "(les fonctions) et de champs (les variables) ; il y a trois méthodes et deux " "champs dans cet exemple." #. (itstool) path: item/p #: C/image-viewer.js.page:107 msgid "" "The first method defined here is called _init, and we specify " "that it is a function with no arguments:" msgstr "" "La première méthode définie ici est appelée _init et nous " "spécifions que c'est une fonction sans argument :" #. (itstool) path: item/code #: C/image-viewer.js.page:108 #, no-wrap msgid "_init: function ()" msgstr "_init: function ()" #. (itstool) path: item/p #: C/image-viewer.js.page:109 msgid "" "We write the function inside some curly braces. Two fields are defined here, " "propertyA and propertyB. The first is set to a " "string and the second is set to an integer (10). The function doesn't return " "any value." msgstr "" "Nous écrivons la fonction à l'intérieur d'accolades. Deux champs sont " "définis ici, propertyA et propertyB. Le premier " "est défini comme une chaîne et le second comme un nombre entier (10). La " "fonction ne retourne aucune valeur." #. (itstool) path: item/p #: C/image-viewer.js.page:112 msgid "" "The next method is called aMethod and has two arguments, which " "it prints out when you call it. The final method is dumpProperties, and prints the fields propertyA and propertyB." msgstr "" "La méthode suivante est appelée aMethod et possède deux " "arguments qu'elle affiche quand vous l'appelez. La dernière méthode est " "dumpProperties et elle affiche les champs propertyA et propertyB." #. (itstool) path: item/p #: C/image-viewer.js.page:115 msgid "" "Note how the class definition (prototype) is arranged; each function " "definition is separated by a comma." msgstr "" "Notez comment la définition de la classe (prototype) est structurée ; chaque " "définition de fonction est séparée par une virgule." #. (itstool) path: section/p #: C/image-viewer.js.page:119 msgid "Now that MyClass has been defined, we can play with it:" msgstr "Maintenant que MyClass a été défini, nous pouvons jouer avec :" #. (itstool) path: section/code #: C/image-viewer.js.page:120 #, no-wrap msgid "" "\n" "var o = new MyClass ();\n" "o.aMethod (\"Hello\", \"world\");\n" "o.propertyA = \"Just changed its value!\";\n" "o.dumpProperties ();" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:125 msgid "" "This code creates a new instance of the class called o, runs " "aMethod, changes propertyA to a different string, " "and then calls dumpProperties (which outputs the fields)." msgstr "" "Ce code crée une nouvelle version de la classe appelée o, " "appelle aMethod, modifie propertyA en une chaîne " "différente et ensuite appelle dumpProperties (qui affiche les " "champs)." #. (itstool) path: section/p #: C/image-viewer.js.page:126 msgid "" "Save the code in the main.js and then run it by using " "RunExecute from the menu or using the " "toolbar." msgstr "" "Enregistrez le code dans le fichier main.js et ensuite lancez-" "le avec ExécuterExécuter à partir du " "menu ou de la barre d'outils." #. (itstool) path: section/title #: C/image-viewer.js.page:131 C/image-viewer.py.page:70 msgid "A first Gtk application" msgstr "Une première application Gtk" #. (itstool) path: section/p #: C/image-viewer.js.page:132 msgid "Let's see what a very basic Gtk application looks like in JavaScript:" msgstr "" "Voyons à quoi ressemble une application Gtk très basique écrite en " "JavaScript :" #. (itstool) path: section/code #: C/image-viewer.js.page:133 #, no-wrap msgid "" "\n" "const Gtk = imports.gi.Gtk;\n" "\n" "Gtk.init (null, null);\n" "\n" "var w = new Gtk.Window ({title: \"Image Viewer Demo\"});\n" "w.show ();\n" "\n" "Gtk.main ();" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:142 C/image-viewer.py.page:95 msgid "Let's take a look at what's happening:" msgstr "Regardons ce qui se passe :" #. (itstool) path: item/p #: C/image-viewer.js.page:145 C/image-viewer.py.page:98 msgid "" "The first line imports the Gtk namespace (that is, it includes the Gtk " "library). The libraries are provided by GObject Introspection (gi), which " "provides language bindings for many GNOME libraries." msgstr "" "La première ligne importe l'espace de nom Gtk (c.-à-d. cela inclut la " "bibliothèque Gtk). Les bibliothèques sont fournies par « GObject " "Introspection (gi) » qui fournit les liens de langage à beaucoup de " "bibliothèques GNOME." #. (itstool) path: item/p #: C/image-viewer.js.page:148 msgid "" "Gtk.init initializes the Gtk library; this statement is " "mandatory for all Gtk programs." msgstr "" "Gtk.init initialise la bibliothèque Gtk ; cette instruction est " "obligatoire pour tous les programmes Gtk." #. (itstool) path: item/p #: C/image-viewer.js.page:151 msgid "" "The next line creates the main window by creating a new Gtk.Window object. You can pass several properties to the window's constructor by " "using the syntax {property: value, property: value, ...}. In " "this case we are setting the title of the window." msgstr "" "La ligne suivante crée la fenêtre principale en créant un nouvel objet " "Gtk.Window. Vous pouvez transmettre plusieurs propriétés au " "constructeur de la fenêtre avec la syntaxe {propriété: valeur, " "propriété: valeur, ...}. Dans ce cas, le titre de la fenêtre est " "défini." #. (itstool) path: item/p #: C/image-viewer.js.page:152 msgid "" "The next line explicitly shows the window. In Gtk, every widget is hidden by " "default." msgstr "" "La ligne suivante affiche explicitement la fenêtre. Dans Gtk, chaque élément " "graphique est masqué par défaut." #. (itstool) path: item/p #: C/image-viewer.js.page:153 msgid "" "Finally, Gtk.main runs the main loop — in other words, it " "executes the program. The main loop listens for events (signals) from the " "user interface and then calls a signal handler which will do something " "useful. We'll learn more about signals shortly." msgstr "" "Enfin, Gtk.main lance la boucle principale — en d'autres " "termes, il exécute le programme. La boucle principale écoute les événements " "(signaux) en provenance de l'interface utilisateur et appelle un " "gestionnaire de signal qui fera quelque chose d'utile. Nous en apprendrons " "davantage sur les signaux bientôt." #. (itstool) path: section/p #: C/image-viewer.js.page:156 msgid "" "Save the code in main.js and run it. You will notice that the " "application does not quit when you close the window. This is because we " "haven't set up a signal handler to deal with the window's destroy (close) signal yet. We'll do this shortly, but for now you can just " "hit CtrlC in the terminal window to " "quit the program." msgstr "" "Enregistrez le code dans le fichier main.js et exécutez-le. " "Notez que l'application ne quitte pas quand vous fermez la fenêtre. C'est " "parce que nous n'avons pas encore défini de gestionnaire de signal qui prend " "en charge le signal destroy de fermeture. Nous le ferons " "prochainement, mais en attendant, pressez seulement CtrlC dans la fenêtre du terminal pour quitter le " "programme." #. (itstool) path: section/title #: C/image-viewer.js.page:161 msgid "Adding classes" msgstr "Ajout de classes" #. (itstool) path: section/p #: C/image-viewer.js.page:162 msgid "" "The proper way of doing Gtk programming is by using classes. Let's rewrite " "the simple code you just wrote using classes:" msgstr "" "La bonne méthode de programmation avec Gtk est l'utilisation de classes. " "Récrivons le bout de programme que l'on vient d'écrire en utilisant des " "classes :" #. (itstool) path: section/code #: C/image-viewer.js.page:163 #, no-wrap msgid "" "\n" "const Gtk = imports.gi.Gtk;\n" "\n" "function ImageViewer () {\n" " this._init ();\n" "}\n" "\n" "ImageViewer.prototype = {\n" " _init: function () {\n" " this.window = new Gtk.Window ({title: \"Image Viewer Demo\"});\n" " this.window.show ();\n" " }\n" "}\n" "\n" "Gtk.init (null, null);\n" "var iv = new ImageViewer ();\n" "Gtk.main ();" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:181 msgid "" "Notice that the program is the same; we just moved the window creation code " "to our own ImageViewer class. The class's constructor calls the " "_init method, which creates and shows the window. We then " "create an instance of the class before running the main loop (Gtk." "main)." msgstr "" "Notez que le programme reste le même ; on a juste déplacé le code de " "création de la fenêtre dans notre propre classe ImageViewer. Le " "constructeur de la classe appelle la méthode _init qui crée et " "affiche la fenêtre. Ensuite, on crée une instance de la classe avant de " "lancer la boucle principale (Gtk.main)." #. (itstool) path: section/p #: C/image-viewer.js.page:182 msgid "" "This code is modular and can be split into multiple files easily. This makes " "it cleaner and easier to read." msgstr "" "Ce programme est modulaire et peut être divisé facilement en plusieurs " "fichiers ce qui le rend plus propre et plus facile à lire." #. (itstool) path: section/title #: C/image-viewer.js.page:186 C/image-viewer.py.page:119 msgid "Signals" msgstr "Les signaux" #. (itstool) path: section/p #: C/image-viewer.js.page:187 C/image-viewer.py.page:120 msgid "" "Signals are one of the key concepts in Gtk programming. Whenever something " "happens to an object, it emits a signal; for example, when a button is " "clicked it gives off the clicked signal. If you want your " "program to do something when that event occurs, you must connect a function " "(a \"signal handler\") to that signal. Here's an example:" msgstr "" "Les signaux sont un des concepts clé de la programmation Gtk. Chaque fois " "que quelque chose arrive à un objet, il émet un signal ; par exemple, quand " "un bouton est cliqué, il renvoie le signal clicked. Si vous " "voulez que votre programme réagisse en conséquence, il faut connecter une " "fonction (un « gestionnaire de signal ») à ce signal. Voici un exemple :" #. (itstool) path: section/code #: C/image-viewer.js.page:188 #, no-wrap msgid "" "\n" "function button_clicked () {\n" " print (\"you clicked me!\");\n" "}\n" "var b = new Gtk.Button ({label:\"Click me\"});\n" "b.connect (\"clicked\", button_clicked);" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:194 C/image-viewer.py.page:127 msgid "" "The last two lines create a Gtk.Button called b " "and connect its clicked signal to the button_clicked function, which is defined above. Every time the button is clicked, " "the code in the button_clicked function will be executed. It " "just prints a message here." msgstr "" "Les deux dernières lignes créent un bouton Gtk.Button appelé " "b et connectent son signal clicked à la fonction " "button_clicked définie au-dessus. Chaque fois que ce bouton est " "cliqué, le code de la fonction button_clicked est exécuté. Il " "affiche juste un message dans cet exemple." #. (itstool) path: section/p #: C/image-viewer.js.page:195 msgid "The syntax for connecting any signal to a function is:" msgstr "Voici la syntaxe pour connecter n'importe quel signal à une fonction :" #. (itstool) path: section/code #: C/image-viewer.js.page:196 #, no-wrap msgid "" "\n" "object.connect (<signal_name>, <function_to_be_called>);" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:198 #, fuzzy #| msgid "" #| "You can find signal definitions for any object in the GTK class reference." msgid "" "You can find signal definitions for any object in the GTK class reference." msgstr "" "Vous pouvez consulter les définitions de signal pour n'importe quel objet " "dans la Référence des classes GTK." #. (itstool) path: note/p #: C/image-viewer.js.page:201 msgid "" "You can simplify the code by making use of an inline function definition:" msgstr "" "Vous pouvez simplifier le code avec une définition de fonction en ligne :" #. (itstool) path: note/code #: C/image-viewer.js.page:202 #, no-wrap msgid "" "\n" "b.connect (\"clicked\", function () { print (\"you clicked me!\"); });" msgstr "" #. (itstool) path: section/title #: C/image-viewer.js.page:209 msgid "Closing the window" msgstr "Fermeture de la fenêtre" #. (itstool) path: section/p #: C/image-viewer.js.page:210 msgid "" "When you close a Gtk window it's not really closed, it's hidden. This allows " "you to keep the window around (which is useful if you want to ask the user " "if they really want to close the window, for example)." msgstr "" "Quand vous fermez une fenêtre Gtk, elle n'est pas vraiment fermée, mais " "masquée. Cela permet de la garder accessible (utile si on veut poser la " "question à l'utilisateur s'il veut oui ou non fermer la fenêtre, par " "exemple)." #. (itstool) path: section/p #: C/image-viewer.js.page:211 msgid "" "In our case, we really do just want to close the window. The simplest way of " "doing this is by connecting the hide signal of the GtkWindow " "object to a function that closes the application. Go back to the image-" "viewer.js file and add the following code to the _init " "method, on the line above this.window.show:" msgstr "" "Dans notre cas, on veut réellement fermer la fenêtre. La façon la plus " "simple de le faire est de connecter le signal hide de l'objet " "fenêtre « GtkWindow » à une fonction qui ferme l'application. Retournez au " "fichier image-viewer.js et ajoutez le code suivant à la méthode " "_init dans la ligne au-dessus de this.window.show :" #. (itstool) path: section/code #: C/image-viewer.js.page:212 #, no-wrap msgid "this.window.connect (\"hide\", Gtk.main_quit);" msgstr "this.window.connect (\"hide\", Gtk.main_quit);" #. (itstool) path: section/p #: C/image-viewer.js.page:213 msgid "" "This connects the hide signal of the window to Gtk's " "main_quit function, which ends the execution of the Gtk main " "loop. Once the main loop finishes, the function Gtk.main " "returns. Our program would continue to run any code written after the " "Gtk.main (); line, but since we don't have any code after that " "point, the program just ends." msgstr "" "Ceci connecte le signal hide de la fenêtre à la fonction " "main_quit de Gtk, qui met fin à l'exécution de la boucle " "principale de Gtk. Lorsque cette boucle s'arrête, la fonction Gtk." "main est quittée. Notre programme aurait continué d'exécuter " "n'importe quel code écrit après la ligne Gtk.main ();, mais " "comme nous n'avons plus de code après cela, le programme s'arrête." #. (itstool) path: section/title #: C/image-viewer.js.page:217 C/image-viewer.py.page:131 msgid "Containers: Laying-out the user interface" msgstr "Les conteneurs : agencement de l'interface utilisateur" #. (itstool) path: section/p #: C/image-viewer.js.page:218 C/image-viewer.py.page:132 msgid "" "Widgets (controls, such as buttons and labels) can be arranged in the window " "by making use of containers. You can organize the layout by mixing " "different types of containers, like boxes and grids." msgstr "" "Les éléments graphiques (les contrôles, comme les boutons ou les étiquettes) " "peuvent être disposés dans la fenêtre à l'aide de conteneurs. Vous " "pouvez organiser l'agencement en mélangeant différents types de conteneurs, " "comme des boîtes ou des grilles." #. (itstool) path: section/p #: C/image-viewer.js.page:219 C/image-viewer.py.page:133 msgid "" "A Gtk.Window is itself a type of container, but you can only " "put one widget directly into it. We would like to have two widgets, an image " "and a button, so we must put a \"higher-capacity\" container inside the " "window to hold the other widgets. A number of container types are " "available, but we will use a Gtk.Box here. A Gtk.Box can hold several widgets, organized horizontally or vertically. You " "can do more complicated layouts by putting several boxes inside another box " "and so on." msgstr "" "Une fenêtre Gtk.Window est elle-même un type de conteneur, mais " "vous ne pouvez y insérer directement qu'un seul élément graphique. Nous " "aimerions avoir deux éléments graphiques, une image et un bouton, donc nous " "devons placer un conteneur de « plus haute capacité » dans la fenêtre pour " "tout contenir. Plusieurs types de conteneurs sont disponibles, mais " "nous allons utiliser ici une boîte Gtk.Box. Une boîte Gtk." "Box peut contenir plusieurs éléments graphiques, disposés " "horizontalement ou verticalement. On pourrait créer des agencements plus " "complexes en mettant plusieurs boîtes dans une autre et ainsi de suite." #. (itstool) path: note/p #: C/image-viewer.js.page:221 C/image-viewer.py.page:135 msgid "" "There is a graphical user interface designer called Glade " "integrated in Anjuta which makes UI design really easy. For this " "simple example, however, we will code everything manually." msgstr "" "Il existe un concepteur graphique d'interface utilisateur appelé Glade intégré à Anjuta ce qui rend la conception d'interface " "utilisateur vraiment facile. Dans cet exemple simple, cependant, nous allons " "tout programmer à la main." #. (itstool) path: section/p #: C/image-viewer.js.page:223 msgid "" "Let's add the box and widgets to the window. Insert the following code into " "the _init method, immediately above the this.window.show line:" msgstr "" "Ajoutons la boîte et les éléments graphiques à la fenêtre. Insérez le code " "suivant dans la méthode _init immédiatement au-dessus de la " "ligne this.window.show :" #. (itstool) path: section/code #: C/image-viewer.js.page:224 #, no-wrap msgid "" "\n" "var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 0});\n" "this.window.add (main_box);" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:227 msgid "" "The first line creates a Gtk.Box called main_box " "and sets two of its properties: the orientation is set to " "vertical (so widgets are arranged in a column), and the spacing " "between the widgets is set to 0 pixels. The next line then adds the newly-" "created Gtk.Box to the window." msgstr "" "La première ligne crée une boîte Gtk.Box appelée " "main_box et définit deux de ses propriétés : " "l'orientation est fixée à verticale (donc les éléments " "graphiques sont disposés en colonne) et l'espacement spacing " "entre les éléments graphiques est fixé à 0 pixel. La ligne suivante ajoute " "cette nouvelle boîte Gtk.Box à la fenêtre." #. (itstool) path: section/p #: C/image-viewer.js.page:228 C/image-viewer.py.page:146 msgid "" "So far the window only contains an empty Gtk.Box, and if you " "run the program now you will see no changes at all (the Gtk.Box " "is a transparent container, so you can't see that it's there)." msgstr "" "Pour l'instant, la fenêtre ne contient qu'une boîte Gtk.Box " "vide et si vous exécutez le programme, vous ne verrez pas encore de " "changement (la boîte Gtk.Box est un conteneur transparent et " "vous ne le voyez donc pas)." #. (itstool) path: section/title #: C/image-viewer.js.page:232 C/image-viewer.py.page:150 msgid "Packing: Adding widgets to the container" msgstr "Placement : ajout d'éléments graphiques au conteneur" #. (itstool) path: section/p #: C/image-viewer.js.page:233 msgid "" "To add some widgets to the Gtk.Box, insert the following code " "directly below the this.window.add (main_box) line:" msgstr "" "Pour ajouter des éléments graphiques à la boîte Gtk.Box, " "insérez le code suivant juste en dessous de la ligne this.window.add " "(main_box) :" #. (itstool) path: section/code #: C/image-viewer.js.page:234 #, no-wrap msgid "" "\n" "this.image = new Gtk.Image ();\n" "main_box.pack_start (this.image, true, true, 0);" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:237 msgid "" "The first line creates a new Gtk.Image called image, which will be used to display an image file. Then, the image widget " "is added (packed) into the main_box container using " "Gtk.Box's pack_start " "method." msgstr "" "La première ligne crée une nouvelle Gtk.Image appelée " "image qui servira à afficher un fichier image. Puis, l'élément " "graphique image est ajouté (placé) dans le conteneur " "main_box par la méthode pack_start de Gtk.Box ." #. (itstool) path: section/p #: C/image-viewer.js.page:238 msgid "" "pack_start takes 4 arguments: the widget that is to be added to " "the Gtk.Box (child); whether the Gtk.Box should grow larger when the new widget is added (expand); " "whether the new widget should take up all of the extra space created if the " "Gtk.Box gets bigger (fill); and how much space " "there should be, in pixels, between the widget and its neighbors inside the " "Gtk.Box (padding)." msgstr "" "pack_start prend 4 arguments : l'élément graphique enfant " "(child) qui doit être ajouté à la boîte Gtk.Box ; " "si la boîte Gtk.Box doit s'agrandir (expand) quand " "le nouvel élément graphique est ajouté ; si le nouvel élément graphique doit " "prendre tout le nouvel espace créé quand la boîte Gtk.Box " "s'agrandit (fill) ; et enfin combien d'espace libre " "(padding), en pixels, il doit y avoir entre l'élément graphique " "et ses voisins à l'intérieur de la Gtk.Box." #. (itstool) path: section/p #: C/image-viewer.js.page:239 C/image-viewer.py.page:158 msgid "" "Gtk containers (and widgets) dynamically expand to fill the available space, " "if you let them. You don't position widgets by giving them a precise x,y-" "coordinate location in the window; rather, they are positioned relative to " "one another. This makes handling window resizing much easier, and widgets " "should automatically take a sensible size in most situations." msgstr "" "Si vous les laissez faire, les conteneurs Gtk (et les éléments graphiques) " "s'agrandissent dynamiquement pour occuper tout l'espace disponible. Vous ne " "positionnez pas les éléments graphiques dans la fenêtre en leur spécifiant " "des coordonnées x,y précises mais vous les positionnez les uns par rapport " "aux autres. Ceci permet un redimensionnement plus aisé de la fenêtre et les " "éléments graphiques devraient automatiquement prendre une taille raisonnable " "dans la plupart des cas." #. (itstool) path: section/p #: C/image-viewer.js.page:240 C/image-viewer.py.page:159 msgid "" "Also note how the widgets are organized in a hierarchy. Once packed in the " "Gtk.Box, the Gtk.Image is considered a child of the Gtk.Box. This allows you to treat all of the " "children of a widget as a group; for example, you could hide the Gtk." "Box, which would also hide all of its children at the same time." msgstr "" "Notez aussi de quelle manière les éléments graphiques sont organisés " "hiérarchiquement. Une fois placée dans la Gtk.Box, l'image " "Gtk.Image est considérée comme un enfant de la boîte " "Gtk.Box. Ceci vous permet de traiter tous les enfants d'un " "élément graphique comme un groupe ; par exemple, vous pouvez masquer la " "boîte Gtk.Box qui du coup, masque tous ses enfants en même " "temps." #. (itstool) path: section/p #: C/image-viewer.js.page:241 C/image-viewer.py.page:160 msgid "Now insert these two lines, below the two you just added:" msgstr "" "Insérez maintenant ces deux lignes en dessous des deux que vous venez " "d'ajouter :" #. (itstool) path: section/code #: C/image-viewer.js.page:242 #, no-wrap msgid "" "\n" "var open_button = new Gtk.Button ({label: \"Open a picture...\"});\n" "main_box.pack_start (open_button, false, false, 0);" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:245 msgid "" "These lines are similar to the first two, but this time they create a " "Gtk.Button and add it to main_box. Notice that we " "are setting the expand argument (the second one) to " "false here, whereas it was set to true for the " "Gtk.Image. This will cause the image to take up all available " "space and the button to take only the space it needs. When you maximize the " "window, the button size will remain the same, but the image size will " "increase, taking up all of the rest of the window." msgstr "" "Ces lignes ressemblent aux deux premières, mais cette fois elles créent un " "bouton Gtk.Button et l'ajoute à la main_box. Notez " "que nous paramétrons ici l'argument expand (le second) sur " "false, alors qu'il était sur true pour l'image " "Gtk.Image. Ceci va conduire à ce que l'image prenne tout " "l'espace disponible et le bouton seulement l'espace nécessaire. Lors d'un " "redimensionnement de la fenêtre, la taille du bouton reste identique, alors " "que la taille de l'image va augmenter pour occuper le reste de la fenêtre." #. (itstool) path: section/p #: C/image-viewer.js.page:246 msgid "" "Finally, we must change the this.window.show (); line to read:" msgstr "" "Finalement, nous devons modifier la ligne this.window.show (); " "pour devenir :" #. (itstool) path: section/code #: C/image-viewer.js.page:247 #, no-wrap msgid "this.window.show_all ();" msgstr "this.window.show_all ();" #. (itstool) path: section/p #: C/image-viewer.js.page:248 msgid "" "This will show the child of the Gtk window, and all of its children, and its " "children's children, and so on. (Remember that Gtk widgets are all hidden by " "default.)" msgstr "" "Ceci affiche l'enfant de la fenêtre Gtk et tous ses enfants, enfants de ses " "enfants et ainsi de suite (souvenez-vous que les éléments graphiques Gtk " "sont tous masqués par défaut)." #. (itstool) path: section/title #: C/image-viewer.js.page:252 C/image-viewer.py.page:169 msgid "" "Loading the image: Connecting to the button's clicked signal" msgstr "" "Chargement de l'image : connexion au signal clicked du bouton" #. (itstool) path: section/p #: C/image-viewer.js.page:253 msgid "" "When the user clicks on the Open button, a dialog should appear " "so that the user can choose a picture. Once chosen, the picture should be " "loaded and shown in the image widget." msgstr "" "Quand l'utilisateur clique sur le bouton Open a picture, une " "boîte de dialogue devrait apparaître pour permettre le choix d'une image. " "Une fois ce choix effectué, la photo est chargée et affichée dans l'élément " "graphique image." #. (itstool) path: section/p #: C/image-viewer.js.page:254 msgid "" "The first step is to connect the clicked signal of the button " "to a signal handler function, which we call _openClicked. Put " "this code immediately after the var open_button = new Gtk.Button line where the button was created:" msgstr "" "Connectez d'abord le signal clicked du bouton à une fonction de " "gestion de signal que vous appelez _openClicked. Mettez ce code " "immédiatement après la ligne var open_button = new Gtk.Button " "où le bouton a été créé :" #. (itstool) path: section/code #: C/image-viewer.js.page:255 #, no-wrap msgid "" "\n" "open_button.connect (\"clicked\", Lang.bind (this, this._openClicked));" msgstr "" #. (itstool) path: section/p #: C/image-viewer.js.page:257 msgid "" "We are using the Lang JavaScript helper here. It allows us to " "connect a class method to the signal, rather than a plain function " "(without a class) which we had used before for the window's hide signal. Don't worry about this for now, it's just a technical detail. " "For it to work, you also need to put the following line at the top of the " "file:" msgstr "" "Ici, nous utilisons l'assistant JavaScript Lang. Il nous permet de " "connecter une class method au signal plutôt qu'à une simple " "fonction (sans classe) que nous avions utilisée avant pour le signal de " "masquage hide. Ne vous préoccupez pas de cela pour le moment, " "ce n'est qu'un détail technique. Pour que cela fonctionne, vous devez aussi " "ajouter cette ligne en haut du fichier :" #. (itstool) path: section/code #: C/image-viewer.js.page:258 #, no-wrap msgid "const Lang = imports.lang;" msgstr "const Lang = imports.lang;" #. (itstool) path: section/title #: C/image-viewer.js.page:262 C/image-viewer.py.page:180 msgid "Loading the image: Writing the signal's callback" msgstr "Chargement de l'image : écriture de la fonction de rappel du signal" #. (itstool) path: section/p #: C/image-viewer.js.page:263 msgid "" "Now we can create the _openClicked() method. Insert the " "following into the ImageViewer.prototype code block, after the " "_init method (and not forgetting the comma):" msgstr "" "Nous pouvons maintenant créer la méthode _openClicked(). " "Insérez ce qui suit dans le bloc de code ImageViewer.prototype, " "après la méthode _init (et sans oublier la virgule) :" #. (itstool) path: section/code #: C/image-viewer.js.page:264 #, no-wrap msgid "" "\n" " _openClicked: function () {\n" " var chooser = new Gtk.FileChooserDialog ({title: \"Select an image\",\n" " action: Gtk.FileChooserAction.OPEN,\n" " transient_for: this.window,\n" " modal: true});\n" " chooser.add_button (Gtk.STOCK_CANCEL, 0);\n" " chooser.add_button (Gtk.STOCK_OPEN, 1);\n" " chooser.set_default_response (1);\n" "\n" " var filter = new Gtk.FileFilter ();\n" " filter.add_pixbuf_formats ();\n" " chooser.filter = filter;\n" "\n" " if (chooser.run () == 1)\n" " this.image.file = chooser.get_filename ();\n" "\n" " chooser.destroy ();\n" " }" msgstr "" #. (itstool) path: item/p #: C/image-viewer.js.page:286 msgid "" "The line beginning with var chooser creates an Open " "dialog, which the user can use to choose files. We set four properties: the " "title of the dialog; the action (type) of the dialog (it's an \"open\" " "dialog, but we could have used SAVE if the intention was to " "save a file; transient_for, which sets the parent window of the " "dialog; and modal which, if set to true, prevents " "the user from clicking on another area of the application until the dialog " "is closed." msgstr "" "La ligne commençant par var chooser crée une boîte de dialogue " "Ouvrir qui permet à l'utilisateur de choisir des fichiers. Nous " "paramétrons quatre propriétés : le titre de la boîte de dialogue ; la " "fonction (le type) de la boîte de dialogue (c'est une boîte de dialogue " "« OPEN », mais on aurait pu utiliser (SAVE) (enregistrer) si " "notre intention avait été d'enregistrer un fichier) ; transient_for, qui définit la fenêtre parent de la boîte de dialogue ; et " "modal qui, s'il est fixé à true empêche " "l'utilisateur de cliquer sur un autre emplacement de l'application jusqu'à " "ce que la boîte de dialogue soit fermée." #. (itstool) path: item/p #: C/image-viewer.js.page:289 C/image-viewer.py.page:203 msgid "" "The next two lines add Cancel and Open buttons to the " "dialog. The second argument of the add_button method is the " "(integer) value that is returned when the button is pressed: 0 for " "Cancel and 1 for Open." msgstr "" "Les deux lignes suivantes ajoutent les boutons Cancel (Annuler) " "et Open (Ouvrir) à la boîte de dialogue. Le second argument de la " "méthode add_button est la valeur (de type entier) qui est " "retournée lorsque le bouton est cliqué : 0 pour Annuler et 1 pour " "Ouvrir." #. (itstool) path: item/p #: C/image-viewer.js.page:293 C/image-viewer.py.page:207 msgid "" "set_default_response determines the button that will be " "activated if the user double-clicks a file or presses Enter. In " "our case, we are using the Open button as default (which has the " "value 1)." msgstr "" "set_default_response détermine le bouton qui est activé quand " "l'utilisateur fait un double-clic sur un fichier ou appuie sur la touche " "Entrée. Ici, nous utilisons le bouton Open (qui a la " "valeur 1)." #. (itstool) path: item/p #: C/image-viewer.js.page:296 C/image-viewer.py.page:210 msgid "" "The next three lines restrict the Open dialog to only display " "files which can be opened by Gtk.Image. A filter object is " "created first; we then add all kinds of files supported by Gdk.Pixbuf (which includes most image formats like PNG and JPEG) to the filter. " "Finally, we set this filter to be the Open dialog's filter." msgstr "" "Les trois lignes suivantes limitent la boîte de dialogue Ouvrir à " "l'affichage des seuls fichiers pouvant être ouverts par Gtk.Image. Un objet filtre est d'abord créé ; ensuite nous ajoutons tous les " "types de fichier pris en charge par Gdk.Pixbuf (ce qui inclut " "la plupart des formats d'image comme PNG ou JPEG) au filtre. Enfin, nous " "appliquons ce filtre à la boîte de dialogue Open." #. (itstool) path: item/p #: C/image-viewer.js.page:299 msgid "" "chooser.run displays the Open dialog. The dialog " "will wait for the user to choose an image; when they do, chooser.run will return the value 1 (it would return 0 if the user clicked Cancel). The if " "statement tests for this." msgstr "" "chooser.run affiche la boîte de dialogue Open. La " "boîte de dialogue attend que l'utilisateur choisisse une image ; quand c'est " "fait, chooser.run retourne la valeur 1 (il " "retourne la valeur 0 si l'utilisateur clique sur " "Annuler). L'instruction if teste cette réponse." #. (itstool) path: item/p #: C/image-viewer.js.page:301 C/image-viewer.py.page:215 msgid "" "Assuming that the user did click Open, the next line sets the " "file property of the Gtk.Image to the filename of " "the image selected by the user. The Gtk.Image will then load " "and display the chosen image." msgstr "" "Supposons que l'utilisateur a cliqué sur le bouton Ouvrir, la " "ligne suivante définit la propriété file du Gtk.Image au nom de fichier image sélectionné. Gtk.Image charge " "alors l'image choisie et l'affiche." #. (itstool) path: item/p #: C/image-viewer.js.page:304 C/image-viewer.py.page:218 #: C/image-viewer.vala.page:273 msgid "" "In the final line of this method, we destroy the Open dialog " "because we don't need it any more." msgstr "" "La dernière ligne de cette méthode détruit la boîte de dialogue Open car nous n'en avons plus besoin." #. (itstool) path: section/p #: C/image-viewer.js.page:312 msgid "" "All of the code you need should now be in place, so try running the code. " "That should be it; a fully-functioning image viewer (and a whistlestop tour " "of JavaScript and Gtk) in not much time at all!" msgstr "" "Tout le programme nécessaire est maintenant en place, donc essayez de " "l'exécuter. Cela devrait fonctionner ; un visionneur d'images totalement " "fonctionnel (et une visite éclair de JavaScript et de Gtk) en très peu de " "temps !" #. (itstool) path: section/p #: C/image-viewer.js.page:317 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: info/title #: C/image-viewer.py.page:8 #, fuzzy #| msgid "Image Viewer" msgctxt "text" msgid "Image viewer (Python)" msgstr "Visionneur d'images" #. (itstool) path: info/desc #: C/image-viewer.py.page:11 msgid "" "A little bit more than a simple \"Hello world\" application - write an image " "viewer in GTK." msgstr "" "Un peu plus qu'une simple application « Hello world » - écrire un visionneur " "d'images en GTK." #. (itstool) path: item/p #: C/image-viewer.py.page:34 msgid "Write a basic GTK user interface in Python" msgstr "écrire une interface graphique GTK en Python," #. (itstool) path: item/p #: C/image-viewer.py.page:42 msgid "Basic knowledge of the python programming language" msgstr "des connaissances de base du langage de programmation python." #. (itstool) path: item/p #: C/image-viewer.py.page:56 msgid "" "Choose PyGTK (automake) from the Python tab, click " "Continue, and fill out your details on the next few pages. Use " "image-viewer as project name and directory." msgstr "" "Sélectionnez PyGTK (automake) dans l'onglet Python, " "cliquez sur Continuer et saisissez vos informations sur les pages " "suivantes. Mettez image-viewer comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/image-viewer.py.page:59 msgid "" "Be sure to disable Use GtkBuilder for user interface as we will " "build the user interface manually in this example. For an example of using " "the interface designer, check the Guitar-" "Tuner demo." msgstr "" "Assurez-vous d'avoir désactivé Utiliser GtkBuilder pour l'interface " "utilisateur car nous allons créer l'interface utilisateur manuellement " "dans cet exemple. Consultez l'exemple Guitar-" "Tuner pour un exemple d'utilisation du constructeur d'interfaces." #. (itstool) path: item/p #: C/image-viewer.py.page:64 msgid "" "Click Apply and the project will be created for you. Open " "src/image_viewer.py from the Project or File tabs. It contains very basic example code." msgstr "" "Cliquez sur Appliquer et le projet est créé. Ouvrez src/" "image_viewer.py depuis l'onglet Projet ou l'onglet " "Fichiers. Il contient quelques lignes de code très basique." #. (itstool) path: section/p #: C/image-viewer.py.page:71 msgid "Let's see what a very basic Gtk application looks like in Python:" msgstr "Voyons à quoi ressemble une application Gtk basique écrite en Python :" #. (itstool) path: section/code #: C/image-viewer.py.page:72 #, no-wrap msgid "" "\n" "from gi.repository import Gtk, GdkPixbuf, Gdk\n" "import os, sys\n" "\n" "class GUI:\n" "\tdef __init__(self):\n" "\t\twindow = Gtk.Window()\n" "\t\twindow.set_title (\"Hello World\")\n" "\t\twindow.connect_after('destroy', self.destroy)\n" "\n" "\t\twindow.show_all()\n" "\n" "\tdef destroy(window, self):\n" "\t\tGtk.main_quit()\n" "\n" "def main():\n" "\tapp = GUI()\n" "\tGtk.main()\n" "\n" "if __name__ == \"__main__\":\n" " sys.exit(main())\n" "\n" " " msgstr "" #. (itstool) path: item/p #: C/image-viewer.py.page:101 msgid "" "In the __init__ method of the GUI class creates an " "(empty) Gtk.Window, sets its title and then connects a signal " "to quit the application once the window is closed. That's pretty simple " "overall, more on signals later." msgstr "" "La méthode __init__ de la classe GUI crée une " "fenêtre Gtk.Window (vide), définit son titre, puis connecte un " "signal pour quitter l'application quand la fenêtre est fermée. C'est " "globalement très simple. Nous en verrons un peu plus sur les signaux plus " "tard." #. (itstool) path: item/p #: C/image-viewer.py.page:106 msgid "" "Next, destroy is defined which just quits the application. It " "is called by the destroy signal connected above." msgstr "" "Ensuite est définie la méthode destroy qui quitte juste " "l'application. Elle est appelée par le signal connecté ci-dessus." #. (itstool) path: item/p #: C/image-viewer.py.page:110 msgid "The rest of the file does initialisation for Gtk and displays the GUI." msgstr "" "Le reste du fichier effectue l'initialisation pour Gtk et affiche " "l'interface graphique." #. (itstool) path: section/p #: C/image-viewer.py.page:114 msgid "" "This code is ready to run, so try it using RunExecute. It should show you an empty window." msgstr "" "Ce programme est prêt à être utilisé, donc essayez-le en utilisant le menu " "ExécuterExécuter. Cela devrait vous " "afficher une fenêtre vide." #. (itstool) path: section/code #: C/image-viewer.py.page:121 #, no-wrap msgid "" "\n" "def button_clicked () :\n" " print \"you clicked me!\"\n" "\n" "b = new Gtk.Button (\"Click me\")\n" "b.connect_after ('clicked', button_clicked)" msgstr "" #. (itstool) path: section/p #: C/image-viewer.py.page:137 msgid "" "Let's add the box and widgets to the window. Insert the following code into " "the __init__ method, immediately after the window." "connect_after line:" msgstr "" "Ajoutons la boîte et les éléments graphiques à la fenêtre. Insérez le code " "suivant dans la méthode __init__, juste après la ligne " "window.connect_after :" #. (itstool) path: section/code #: C/image-viewer.py.page:138 #, no-wrap msgid "" "\n" "box = Gtk.Box()\n" "box.set_spacing (5)\n" "box.set_orientation (Gtk.Orientation.VERTICAL)\n" "window.add (box)\n" "\n" msgstr "" #. (itstool) path: section/p #: C/image-viewer.py.page:145 msgid "" "The first line creates a Gtk.Box called box and " "the following lines set two of its properties: the orientation " "is set to vertical (so the widgets are arranged in a column), and the " "spacing between the widgets is set to 5 pixels. The next line " "then adds the newly-created Gtk.Box to the window." msgstr "" "La première ligne crée une Gtk.Box nommée box et " "les lignes suivantes définissent deux de ses propriétés : " "l'orientation est verticale (donc les éléments graphiques sont " "disposés en colonne) et l'espacement entre les éléments graphiques est fixé " "à 5 pixels. La ligne suivante ajoute ensuite cette nouvelle Gtk.Box à la fenêtre." #. (itstool) path: section/p #: C/image-viewer.py.page:151 msgid "" "To add some widgets to the Gtk.Box, insert the following code " "directly below the window.add (box) line:" msgstr "" "Pour ajouter d'autres éléments graphiques à la fenêtre, insérez ce code " "juste dessous la ligne window.add (box) :" #. (itstool) path: section/code #: C/image-viewer.py.page:152 #, no-wrap msgid "" "\n" "self.image = Gtk.Image()\n" "box.pack_start (self.image, False, False, 0)" msgstr "" #. (itstool) path: section/p #: C/image-viewer.py.page:155 msgid "" "The first line creates a new Gtk.Image called image, which will be used to display an image file. As we need that later on " "in the signal handler, we will define it as a class-wide variable. You need " "to add image = 0 to the beginning of the GUI " "class. Then, the image widget is added (packed) into the box container using GtkBox's pack_start " "method." msgstr "" "La première ligne crée une nouvelle image Gtk.Image nommée " "image qui sera utilisée pour afficher un fichier image. Comme " "nous en avons besoin plus tard dans la fonction de gestion de signal, nous " "la définissons comme étant un attribut de classe. Vous devez ajouter " "image = 0 au début de la classe GUI. Puis, " "l'élément graphique image est ajouté (placé) dans le conteneur " "box à l'aide de la méthode pack_start de GtkBox." #. (itstool) path: section/p #: C/image-viewer.py.page:157 msgid "" "pack_start takes 4 arguments: the widget that is to be added to " "the GtkBox (child); whether the Gtk.Box should " "grow larger when the new widget is added (expand); whether the " "new widget should take up all of the extra space created if the Gtk." "Box gets bigger (fill); and how much space there should " "be, in pixels, between the widget and its neighbors inside the Gtk." "Box (padding)." msgstr "" "pack_start prend 4 arguments : l'élément graphique enfant " "(child) qui doit être ajouté à la boîte Gtk.Box ; " "si la boîte Gtk.Box doit s'agrandir (expand) quand " "le nouvel élément graphique est ajouté ; si le nouvel élément graphique doit " "prendre tout le nouvel espace créé quand la boîte Gtk.Box " "s'agrandit (fill) ; et enfin combien d'espace libre " "(padding), en pixels, il doit y avoir entre l'élément graphique " "et ses voisins à l'intérieur de la Gtk.Box." #. (itstool) path: section/code #: C/image-viewer.py.page:161 #, no-wrap msgid "" "\n" "button = Gtk.Button (\"Open a picture...\")\n" "box.pack_start (button, False, False, 0)\n" msgstr "" #. (itstool) path: section/p #: C/image-viewer.py.page:165 msgid "" "These lines are similar to the first two, but this time they create a " "Gtk.Button and add it to box. Notice that we are " "setting the expand argument (the second one) to False here, whereas it was set to True for the Gtk.Image. This will cause the image to take up all available space and the " "button to take only the space it needs. When you maximize the window, the " "button size will remain the same, but the image size will increase, taking " "up all of the rest of the window." msgstr "" "Ces lignes ressemblent aux deux premières, mais cette fois elles créent un " "bouton Gtk.Button et l'ajoute à la box. Notez que " "nous paramétrons ici l'argument expand (le second) sur " "False, alors qu'il était sur True pour l'image " "Gtk.Image. Ceci va conduire à ce que l'image prenne tout " "l'espace disponible et le bouton seulement l'espace nécessaire. Lors d'un " "redimensionnement de la fenêtre, la taille du bouton reste identique, alors " "que la taille de l'image va augmenter pour occuper le reste de la fenêtre." #. (itstool) path: section/p #: C/image-viewer.py.page:170 msgid "" "When the user clicks on the Open Image... button, a dialog should " "appear so that the user can choose a picture. Once chosen, the picture " "should be loaded and shown in the image widget." msgstr "" "Quand l'utilisateur clique sur le bouton Open a picture..., une " "boîte de dialogue s'affiche pour lui permettre de choisir une image. Une " "fois ce choix effectué, la photo est chargée et affichée dans l'élément " "graphique image." #. (itstool) path: section/p #: C/image-viewer.py.page:171 msgid "" "The first step is to connect the clicked signal of the button " "to a signal handler function, which we call on_open_clicked. " "Put this code immediately after the button = Gtk.Button() line " "where the button was created:" msgstr "" "Connectez d'abord le signal clicked du bouton à une fonction de " "gestion de signal que vous appelez on_open_clicked. Mettez ce " "code immédiatement après la ligne button = Gtk.Button() où le " "bouton a été créé :" #. (itstool) path: section/code #: C/image-viewer.py.page:172 #, no-wrap msgid "" "\n" "button.connect_after('clicked', self.on_open_clicked)\n" msgstr "" #. (itstool) path: section/p #: C/image-viewer.py.page:175 msgid "" "This will connect the clicked signal to on_open_clicked method that we will define below." msgstr "" "Cela connecte le signal clicked à la méthode " "on_open_clicked que nous définirons ci-dessous." #. (itstool) path: section/p #: C/image-viewer.py.page:181 msgid "" "Now we can create the on_open_clicked method. Insert the " "following into the GUI class code block, after the " "__init__ method:" msgstr "" "On peut maintenant créer la méthode on_open_clicked. Insérez ce " "qui suit dans le bloc de code de la classe GUI, après la " "méthode __init__ :" #. (itstool) path: section/code #: C/image-viewer.py.page:182 #, no-wrap msgid "" "\n" "def on_open_clicked (self, button):\n" "\tdialog = Gtk.FileChooserDialog (\"Open Image\", button.get_toplevel(), Gtk.FileChooserAction.OPEN);\n" "\tdialog.add_button (Gtk.STOCK_CANCEL, 0)\n" "\tdialog.add_button (Gtk.STOCK_OK, 1)\n" "\tdialog.set_default_response(1)\n" "\n" "\tfilefilter = Gtk.FileFilter ()\n" "\tfilefilter.add_pixbuf_formats ()\n" "\tdialog.set_filter(filefilter)\n" "\n" "\tif dialog.run() == 1:\n" "\t\tself.image.set_from_file(dialog.get_filename())\n" "\n" "\tdialog.destroy()" msgstr "" #. (itstool) path: item/p #: C/image-viewer.py.page:200 msgid "" "The line beginning with dialog creates an Open " "dialog, which the user can use to choose files. We set three properties: the " "title of the dialog; the action (type) of the dialog (it's an \"open\" " "dialog, but we could have used SAVE if the intention was to " "save a file; and transient_for, which sets the parent window of " "the dialog." msgstr "" "La ligne commençant par dialog crée une boîte de dialogue " "Open qui permet à l'utilisateur de choisir des fichiers. Nous " "paramétrons trois propriétés : le titre de la boîte de dialogue ; la " "fonction (le type) de la boîte de dialogue (c'est une boîte de dialogue " "« OPEN », mais on aurait pu utiliser (SAVE) (enregistrer) si " "notre intention avait été d'enregistrer un fichier) et transient_for, qui définit la fenêtre parent de la boîte de dialogue." #. (itstool) path: item/p #: C/image-viewer.py.page:213 msgid "" "dialog.run displays the Open dialog. The dialog will " "wait for the user to choose an image; when they do, dialog.run " "will return the value 1 (it would return 0 " "if the user clicked Cancel). The if statement tests " "for this." msgstr "" "dialog.run affiche la boîte de dialogue Open. La " "boîte de dialogue attend que l'utilisateur choisisse une image ; quand c'est " "fait, dialog.run retourne la valeur 1 (il " "retourne la valeur 0 si l'utilisateur clique sur " "Annuler). L'instruction if teste cette réponse." #. (itstool) path: section/p #: C/image-viewer.py.page:226 msgid "" "All of the code you need should now be in place, so try running the code. " "That should be it; a fully-functioning image viewer (and a whistlestop tour " "of Python and Gtk) in not much time at all!" msgstr "" "Tout le programme nécessaire est maintenant en place, donc essayez de " "l'exécuter. Cela devrait fonctionner ; un visionneur d'images totalement " "fonctionnel (et une visite éclair de Python et de Gtk) en très peu de temps !" #. (itstool) path: section/p #: C/image-viewer.py.page:231 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: info/title #: C/image-viewer.vala.page:8 #, fuzzy #| msgid "Image Viewer" msgctxt "text" msgid "Image viewer (Vala)" msgstr "Visionneur d'images" #. (itstool) path: info/desc #: C/image-viewer.vala.page:11 #, fuzzy #| msgid "A little bit more than a simple \"Hello world\" GTKmm application." msgid "A little bit more than a simple \"Hello world\" GTK+ application." msgstr "Un peu plus qu'une simple application GTKmm « Hello world »." #. (itstool) path: credit/name #: C/image-viewer.vala.page:23 msgid "Philip Chimento" msgstr "Philip Chimento" #. (itstool) path: synopsis/p #: C/image-viewer.vala.page:39 msgid "" "In this tutorial you will create an application which opens and displays an " "image file. You will learn:" msgstr "" "Dans ce tutoriel, nous allons écrire une application qui charge et affiche " "un fichier image. Vous allez apprendre :" #. (itstool) path: item/p #: C/image-viewer.vala.page:41 msgid "" "How to set up a basic project using the Anjuta " "IDE." msgstr "" "comment paramétrer un projet de base en utilisant Anjuta IDE," #. (itstool) path: item/p #: C/image-viewer.vala.page:42 msgid "" "How to write a Gtk application in Vala" msgstr "" "comment écrire une application Gtk en Vala," #. (itstool) path: item/p #: C/image-viewer.vala.page:43 msgid "" "Some basic concepts of GObject programming" msgstr "" "quelques concepts de base sur la programmation GObject," #. (itstool) path: item/p #: C/image-viewer.vala.page:50 msgid "" "You may find the gtk+-3.0 " "API Reference useful, although it is not necessary to follow the tutorial." msgstr "" "Vous pourriez trouver la référence API de gtk+-3.0 utile, bien qu'il ne soit pas nécessaire de suivre " "le tutoriel." #. (itstool) path: item/p #: C/image-viewer.vala.page:66 #, fuzzy #| msgid "" #| "From the Vala tab choose Gtk+ (Simple), click " #| "Continue, and fill out your details on the next page. Use " #| "image-viewer as project name and directory." msgid "" "From the Vala tab choose GTK+ (Simple), click " "Continue, and fill out your details on the next page. Use " "image-viewer as project name and directory." msgstr "" "Sélectionnez Gtk+ (Simple) dans l'onglet Vala, cliquez " "sur Continuer et saisissez vos informations sur les pages " "suivantes. Utilisez image-viewer comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/image-viewer.vala.page:70 msgid "" "Make sure that Use GtkBuilder for user interface is unchecked as " "we will create the UI manually in this tutorial." msgstr "" "Assurez-vous d'avoir désactivé Utiliser GtkBuilder pour l'interface " "utilisateur car nous allons créer l'interface utilisateur manuellement " "dans cet exemple." #. (itstool) path: note/p #: C/image-viewer.vala.page:71 msgid "" "You will learn how to use the interface builder in the Guitar-Tuner tutorial." msgstr "" "Consultez le tutoriel Accordeur de guitare si vous souhaitez savoir comment utiliser le constructeur d'interface " "GtkBuilder." #. (itstool) path: item/p #: C/image-viewer.vala.page:75 msgid "" "Click Continue then Apply and the project will be " "created for you. Open src/image_viewer.vala from the " "Project or File tabs. You will see this code:" msgstr "" "Cliquez sur Continuer et le projet est créé. Ouvrez src/" "image_viewer.vala depuis l'onglet Projet ou l'onglet " "Fichiers. Vous verrez apparaître ce code :" #. (itstool) path: item/code #: C/image-viewer.vala.page:78 #, no-wrap msgid "" "\n" "using GLib;\n" "using Gtk;\n" "\n" "public class Main : Object\n" "{\n" "\n" "\tpublic Main ()\n" "\t{\n" "\t\tWindow window = new Window();\n" "\t\twindow.set_title (\"Hello World\");\n" "\t\twindow.show_all();\n" "\t\twindow.destroy.connect(on_destroy);\n" "\t}\n" "\n" "\tpublic void on_destroy (Widget window)\n" "\t{\n" "\t\tGtk.main_quit();\n" "\t}\n" "\n" "\tstatic int main (string[] args)\n" "\t{\n" "\t\tGtk.init (ref args);\n" "\t\tvar app = new Main ();\n" "\n" "\t\tGtk.main ();\n" "\n" "\t\treturn 0;\n" "\t}\n" "}" msgstr "" #. (itstool) path: section/p #: C/image-viewer.vala.page:114 msgid "" "The code loads an (empty) window from the user interface description file " "and shows it. More details are given below; skip this list if you understand " "the basics:" msgstr "" "Ce programme charge une fenêtre (vide) à partir du fichier de description de " "l'interface et l'affiche. Vous trouverez plus de détails ci-dessous ; passez " "cette liste si vous comprenez les bases :" #. (itstool) path: item/p #: C/image-viewer.vala.page:119 msgid "" "The two using lines at the top import namespaces so we don't " "have to name them explicitly." msgstr "" "Les deux lignes using du début importent des espaces de noms " "que nous n'aurons plus à nommer explicitement." #. (itstool) path: item/p #: C/image-viewer.vala.page:122 msgid "" "The constructor of the Main class creates a new (empty) window " "and connects a signal to exit the application when that window is closed." msgstr "" "Le constructeur de la classe principale Main crée une nouvelle " "fenêtre (vide) et connecte un signal pour quitter l'application quand cette " "fenêtre est fermée." #. (itstool) path: item/p #: C/image-viewer.vala.page:127 msgid "" "The static main function is run by default when you start a " "Vala application. It calls a few functions which create the Main class, set up and then run the application. The Gtk.main function " "starts the GTK main " "loop, which runs the user interface and starts listening for events " "(like clicks and key presses)." msgstr "" "La fonction statique main est exécutée par défaut quand vous " "lancez une application Vala. Elle appelle d'autres fonctions qui créent la " "classe Main, configurent puis exécutent l'application. La " "fonction Gtk." "main démarre la boucle principale de GTK, qui lance l'interface " "utilisateur et commence à écouter les événements (comme des clics de souris " "ou des appuis sur des touches)." #. (itstool) path: section/p #: C/image-viewer.vala.page:134 C/magic-mirror.vala.page:94 msgid "" "Change the Configuration to Default and then press " "Execute to configure the build directory. You only need to do " "this once, for the first build." msgstr "" "Pour configurer le répertoire de compilation, modifiez la " "Configuration à Par défaut et cliquez sur " "Exécuter. Il ne faut le faire qu'une seule fois, à la première " "compilation." #. (itstool) path: section/p #: C/image-viewer.vala.page:140 msgid "" "Now we will bring life into the empty window. GTK organizes the user " "interface with Gtk.Containers that can contain other widgets and " "even other containers. Here we will use the simplest available container, a " "Gtk." "Box." msgstr "" "Nous allons maintenant donner vie à la fenêtre vide. GTK organise " "l'interface utilisateur avec des Gtk.Container qui peuvent " "contenir d'autres éléments graphiques et même d'autres conteneurs. Ici, nous " "allons utiliser le plus simple conteneur disponible, une boîte Gtk.Box :" #. (itstool) path: section/p #: C/image-viewer.vala.page:144 msgid "Add the following lines to the top of the Main class:" msgstr "" "Ajoutez les lignes suivantes au dessus de la classe Main :" #. (itstool) path: section/code #: C/image-viewer.vala.page:145 #, no-wrap msgid "" "\n" "private Window window;\n" "private Image image;\n" msgstr "" #. (itstool) path: section/p #: C/image-viewer.vala.page:150 msgid "Now replace the current constructor with the one below:" msgstr "Remplacez maintenant le constructeur actuel par celui ci-dessous :" #. (itstool) path: section/code #: C/image-viewer.vala.page:151 #, no-wrap msgid "" "\n" "\n" "public Main () {\n" "\n" "\twindow = new Window ();\n" "\twindow.set_title (\"Image Viewer in Vala\");\n" "\n" "\t// Set up the UI\n" "\tvar box = new Box (Orientation.VERTICAL, 5);\n" "\tvar button = new Button.with_label (\"Open image\");\n" "\timage = new Image ();\n" "\n" "\tbox.pack_start (image, true, true, 0);\n" "\tbox.pack_start (button, false, false, 0);\n" "\twindow.add (box);\n" "\n" "\t// Show open dialog when opening a file\n" "\tbutton.clicked.connect (on_open_image);\n" "\n" "\twindow.show_all ();\n" "\twindow.destroy.connect (main_quit);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/image-viewer.vala.page:176 msgid "" "The first two lines are the parts of the GUI that we will need to access " "from more than one method. We declare them up here so that they are " "accessible throughout the class instead of only in the method where they are " "created." msgstr "" "Les deux premières lignes sont les parties de l'interface graphique " "auxquelles nous aurons besoin d'accéder depuis plus d'une méthode. Nous les " "déclarons avant afin qu'elles soient accessibles depuis la classe plutôt que " "seulement dans la méthode où elles sont crées." #. (itstool) path: item/p #: C/image-viewer.vala.page:180 msgid "" "The first lines of the constructor create the empty window. The next lines " "create the widgets we want to use: a button for opening up an image, the " "image view widget itself and the box we will use as a container." msgstr "" "Les premières lignes du constructeur créent la fenêtre vide. Les lignes " "suivantes créent les éléments graphiques dont nous avons besoin : un bouton " "pour ouvrir une image, l'élément graphique image lui-même et la boîte que " "nous utilisons comme conteneur." #. (itstool) path: item/p #: C/image-viewer.vala.page:184 msgid "" "The calls to pack_start add the two widgets to the " "box and define their behaviour. The image will expand into any available " "space whereas the button will just be as big as needed. You will notice that " "we don't set explicit sizes on the widgets. In GTK this is usually not " "needed as it makes it much easier to have a layout that looks good in " "different window sizes. Next, the box is added to the window." msgstr "" "Les appels à pack_start ajoutent les deux éléments " "graphiques à la boîte et définissent leur comportement. L'image va s'étendre " "pour occuper tout l'espace disponible alors que le bouton va prendre juste " "la taille nécessaire. Notez que nous ne définissons pas explicitement les " "dimensions des éléments graphiques. Avec GTK, ce n'est habituellement pas " "nécessaire car cela facilite grandement l'obtention d'une bonne disposition " "pour différentes tailles de fenêtre. La boîte est ensuite ajoutée dans la " "fenêtre." #. (itstool) path: item/p #: C/image-viewer.vala.page:191 msgid "" "We need to define what happens when the user clicks on the button. GTK uses " "the concept of signals." msgstr "" "Nous devons définir ce qui se produit lorsque l'utilisateur clique sur le " "bouton. GTK utilise le concept de signaux." #. (itstool) path: item/p #: C/image-viewer.vala.page:192 msgid "" "When the button is clicked, it fires the clicked signal, which we can " "connect to some action (defined in a callback method)." msgstr "" "Lorsque le bouton est cliqué, il émet le signal clicked que nous " "pouvons connecter à des actions (définies dans une fonction de rappel)." #. (itstool) path: item/p #: C/image-viewer.vala.page:195 msgid "" "This is done using the connect method of the button's " "clicked signal, which in this case tells GTK to call the (yet " "undefined) on_image_open callback method when the button is " "clicked. We will define the callback in the next section." msgstr "" "On le fait en utilisant la méthode connect du signal " "clicked du bouton qui dans ce cas indique à GTK d'appeler la " "fonction de rappel (pas encore définie) on_image_open lorsque " "le bouton est cliqué. Nous définirons la fonction de rappel dans la " "prochaine section." #. (itstool) path: item/p #: C/image-viewer.vala.page:199 msgid "" "In the callback, we need to access the window and image widgets, which is why we defined them as private members at the top of " "our class." msgstr "" "Dans la fonction de rappel, nous avons besoin d'accéder aux éléments " "graphiques window (fenêtre) et image, c'est " "pourquoi nous les définissons comme membres privés (private) au début de " "notre classe." #. (itstool) path: item/p #: C/image-viewer.vala.page:203 msgid "" "The last connect call makes sure that the application exits " "when the window is closed. The code generated by Anjuta called an " "on_destroy callback method which called Gtk.main_quit, " "but just connecting our signal to main_quit directly is easier. " "You can delete the on_destroy method." msgstr "" "Le dernier appel connect permet d'être sûr que l'application " "quitte lorsque la fenêtre est fermée. Le code généré par Anjuta appelle une " "fonction de rappel on_destroy qui appelle Gtk.main_quit bien qu'il soit plus facile de connecter directement notre signal à " "main_quit. Vous pouvez supprimer la méthode on_destroy." #. (itstool) path: section/p #: C/image-viewer.vala.page:211 msgid "" "We will now define the signal handler for the clicked signal " "for the button we mentioned before. Add this code after the constructor:" msgstr "" "Nous allons maintenant définir le gestionnaire de signal pour le signal " "clicked du bouton ci-dessus. Ajoutez ce code après le " "constructeur :" #. (itstool) path: section/code #: C/image-viewer.vala.page:214 #, no-wrap msgid "" "\n" "public void on_open_image (Button self) {\n" "\tvar filter = new FileFilter ();\n" "\tvar dialog = new FileChooserDialog (\"Open image\",\n" "\t window,\n" "\t FileChooserAction.OPEN,\n" "\t Stock.OK, ResponseType.ACCEPT,\n" "\t Stock.CANCEL, ResponseType.CANCEL);\n" "\tfilter.add_pixbuf_formats ();\n" "\tdialog.add_filter (filter);\n" "\n" "\tswitch (dialog.run ())\n" "\t{\n" "\t\tcase ResponseType.ACCEPT:\n" "\t\t\tvar filename = dialog.get_filename ();\n" "\t\t\timage.set_from_file (filename);\n" "\t\t\tbreak;\n" "\t\tdefault:\n" "\t\t\tbreak;\n" "\t}\n" "\tdialog.destroy ();\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/image-viewer.vala.page:237 msgid "This is a bit complicated, so let's break it down:" msgstr "" "C'est un peu compliqué, donc décortiquons cette partie étape par étape :" #. (itstool) path: note/p #: C/image-viewer.vala.page:238 msgid "" "A signal handler is a type of callback method that is called when a signal " "is emitted. Here the terms are used interchangeably." msgstr "" "Un gestionnaire de signal est un type de fonction de rappel qui est appelé " "lorsqu'un signal est émis. Ici les termes sont utilisés indifféremment." #. (itstool) path: item/p #: C/image-viewer.vala.page:241 msgid "" "The first argument of the callback method is always the widget that sent the " "signal. Sometimes other arguments related to the signal come after that, but " "clicked doesn't have any." msgstr "" "Le premier argument de la fonction de rappel est toujours l'élément " "graphique qui a envoyé le signal. Parfois d'autres arguments apparaissent " "derrière reliés au signal, mais clicked n'en a aucun." #. (itstool) path: item/p #: C/image-viewer.vala.page:243 msgid "" "In this case the button sent the clicked signal, " "which is connected to the on_open_image callback method:" msgstr "" "Dans ce cas, le bouton envoie le signal clicked " "qui est connecté à la fonction de rappel on_open_image :" #. (itstool) path: item/code #: C/image-viewer.vala.page:244 #, no-wrap msgid "" "\n" " button.clicked.connect (on_open_image);\n" msgstr "" #. (itstool) path: item/p #: C/image-viewer.vala.page:248 msgid "" "The on_open_image method takes the button that emitted the " "signal as an argument:" msgstr "" "Le méthode on_open_image prend comme paramètre le bouton qui a " "émis le signal :" #. (itstool) path: item/code #: C/image-viewer.vala.page:249 #, no-wrap msgid "" "\n" " public void on_open_image (Button self)\n" msgstr "" #. (itstool) path: item/p #: C/image-viewer.vala.page:254 msgid "" "The next interesting line is where the dialog for choosing the file is " "created. FileChooserDialog's constructor takes the title " "of the dialog, the parent window of the dialog and several options like the " "number of buttons and their corresponding values." msgstr "" "La prochaine ligne intéressante est celle où est créée la boîte de dialogue " "pour choisir le fichier. Le constructeur de FileChooserDialog prend comme argument le titre, la fenêtre parente de la boîte de " "dialogue et plusieurs options telles que l'étiquette des boutons et les " "actions correspondantes." #. (itstool) path: item/p #: C/image-viewer.vala.page:256 msgid "" "Notice that we are using stock button names from Gtk, instead of " "manually typing \"Cancel\" or \"Open\". The advantage of using stock names " "is that the button labels will already be translated into the user's " "language." msgstr "" "Notez que nous utilisons les noms de bouton de la collection " "(stock) Gtk au lieu de saisir manuellement « Cancel » ou « Open ». " "L'avantage d'utiliser les noms de la collection est que les étiquettes des " "boutons sont déjà traduites dans la langue de l'utilisateur." #. (itstool) path: item/p #: C/image-viewer.vala.page:260 msgid "" "The next two lines restrict the Open dialog to only display files " "which can be opened by GtkImage. GtkImage is a widget which " "displays an image. A filter object is created first; we then add all kinds " "of files supported by Gdk.Pixbuf (which includes most image " "formats like PNG and JPEG) to the filter. Finally, we set this filter to be " "the Open dialog's filter." msgstr "" "Les deux lignes suivantes limitent la boîte de dialogue Open à " "l'affichage des seuls fichiers pouvant être ouverts par GtkImage " "qui est un élément graphique qui affiche une image. Un objet filtre est " "d'abord créé ; ensuite nous ajoutons tous les types de fichiers pris en " "charge par Gdk.Pixbuf (ce qui inclut la plupart des formats " "d'image comme PNG ou JPEG) au filtre. Enfin, nous appliquons ce filtre à la " "boîte de dialogue Open." #. (itstool) path: item/p #: C/image-viewer.vala.page:265 msgid "" "dialog.run displays the Open dialog. The " "dialog will wait for the user to choose an image; when they do, dialog." "run will return the ResponseType value ResponseType.ACCEPT (it would return ResponseType.CANCEL if the user clicked " "Cancel). The switch statement tests for this." msgstr "" "dialog.run affiche la boîte de dialogue Open. La boîte de dialogue attend que l'utilisateur choisisse une image ; " "quand c'est fait, dialog.run retourne la valeur ResponseType ResponseType.ACCEPT (il retourne la valeur " "ResponseType.CANCEL si l'utilisateur clique sur Cancel). L'instruction switch teste cette réponse." #. (itstool) path: item/p #: C/image-viewer.vala.page:270 msgid "" "Assuming that the user did click Open, the next lines get the " "filename of the image selected by the user, and tell the GtkImage widget to load and display the selected image." msgstr "" "Supposons que l'utilisateur a cliqué sur le bouton Ouvrir, la " "ligne suivante récupère le nom de fichier de l'image sélectionnée par " "l'utilisateur et indique à l'élément graphique GtkImage de " "charger et d'afficher l'image choisie." #. (itstool) path: item/p #: C/image-viewer.vala.page:274 msgid "Destroying automatically hides the dialog." msgstr "La destruction masque automatiquement la boîte de dialogue." #. (itstool) path: section/p #: C/image-viewer.vala.page:283 msgid "" "If you haven't already done so, choose the src/image-viewer " "application in the dialog that appears. Finally, hit Run and " "enjoy!" msgstr "" "Si ce n'est pas encore fait, sélectionnez l'application src/image-" "viewer dans la boîte de dialogue qui s'affiche et cliquez sur " "Exécuter. Amusez-vous bien !" #. (itstool) path: section/p #: C/image-viewer.vala.page:289 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: item/p #: C/image-viewer.vala.page:296 msgid "" "Set it up so that when the window opens it is of a specific size to start " "off with. For example, 200 X 200 pixels." msgstr "" "Paramètre en sorte que lorsque la fenêtre s'ouvre, elle fasse une taille de " "départ spécifiée, par exemple 200 X 200 pixels." #. (itstool) path: credit/name #: C/index.page:8 msgid "GNOME Documentation Team" msgstr "Équipe de documentation GNOME" #. (itstool) path: credit/years #: C/index.page:10 msgid "2010, 2011" msgstr "2010, 2011" #. (itstool) path: credit/name #: C/index.page:13 C/message-board.c.page:15 msgid "Shaun McCance" msgstr "Shaun McCance" #. (itstool) path: credit/years #: C/index.page:15 C/message-board.c.page:17 msgid "2010" msgstr "2010" #. (itstool) path: page/title #: C/index.page:28 msgid "GNOME Developer Platform Demos" msgstr "Exemples de la plateforme de développement GNOME" #. (itstool) path: page/p #: C/index.page:30 msgid "" "This guide includes a variety of coding examples, such writing an image " "viewer or weather application. Each demo comes with code that you can try, " "and explains how each example works. They are a great way to get started " "with the GNOME developer platform." msgstr "" #. (itstool) path: section/title #: C/index.page:36 msgid "Pick a Language" msgstr "" #. (itstool) path: section/p #: C/index.page:37 msgid "" "These developer demos are available in a range of programming languages. " "Pick one to get started:" msgstr "" #. (itstool) path: info/title #: C/js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "link" msgid "JavaScript" msgstr "JavaScript" #. (itstool) path: credit/name #: C/js.page:21 msgid "Ekaterina Gerasimova" msgstr "" #. (itstool) path: page/title #: C/js.page:26 msgid "Tutorials, code samples and platform demos in JavaScript" msgstr "" "Tutoriels, exemples de code et plateformes de démonstration en JavaScript" #. (itstool) path: section/title #: C/js.page:31 #, fuzzy #| msgid "Gtk Widget Sample Code and Tutorials" msgid "Code samples and tutorials" msgstr "Exemple de code pour l'élément graphique Gtk et tutoriels" #. (itstool) path: info/title #: C/label.c.page:8 #, fuzzy #| msgid "Label" msgctxt "text" msgid "Label (C)" msgstr "Étiquette" #. (itstool) path: info/desc #: C/label.c.page:19 C/label.vala.page:18 msgid "A widget which displays text" msgstr "Un élément graphique qui affiche du texte" #. (itstool) path: page/title #. (itstool) path: td/p #: C/label.c.page:22 C/label.js.page:21 C/label.py.page:30 C/label.vala.page:21 #: C/toolbar_builder.py.page:98 C/toolbar_builder.vala.page:81 msgid "Label" msgstr "Étiquette" #. (itstool) path: td/media #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/label.c.page:26 C/label.js.page:22 C/label.py.page:31 C/label.vala.page:22 #, fuzzy #| msgid "@@image: 'media/label.png'; md5=734975c18653d88379f983e4501c3fc0" msgctxt "_" msgid "external ref='media/label.png' md5='734975c18653d88379f983e4501c3fc0'" msgstr "@@image: 'media/label.png'; md5=734975c18653d88379f983e4501c3fc0" #. (itstool) path: td/p #. (itstool) path: page/p #: C/label.c.page:27 C/label.py.page:32 C/label.vala.page:23 msgid "A simple label" msgstr "Une étiquette simple" #. (itstool) path: page/code #: C/label.c.page:32 #, no-wrap msgid "" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *label;\n" "\n" " /*Create a window with a title and a default size*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n" " gtk_window_set_title (GTK_WINDOW (window), \"Welcome to GNOME\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 200,100);\n" " \n" " /*Create a label and set its alignment. Setting the line wrap to TRUE makes \n" " the label break lines if the text exceeds the widget's size. When set to \n" " FALSE the text gets cut off by the edge of the widget*/\n" " label = gtk_label_new (\"Hello GNOME!\");\n" " gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_CENTER);\n" " gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);\n" "\n" " gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (label));\n" "\n" " gtk_widget_show_all (GTK_WIDGET (window));\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/label.c.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkLabel" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/label.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Label (JavaScript)" msgstr "JavaScript" #. (itstool) path: info/desc #: C/label.js.page:18 msgid "A label which can contain text" msgstr "Une étiquette qui peut contenir du texte" #. (itstool) path: page/p #: C/label.js.page:23 msgid "A label displaying a friendly message." msgstr "Une étiquette qui affiche un message sympathique." #. (itstool) path: page/code #: C/label.js.page:25 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class LabelExample {\n" "\n" " /* Create the application itself\n" " This boilerplate code is needed to build any GTK+ application. */\n" " constructor() {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jslabel',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal initializes menus and builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Welcome to GNOME\",\n" " default_height: 100,\n" " default_width: 200\n" " });\n" "\n" " // Create the label\n" " this.label = new Gtk.Label({ label: \"Hello GNOME!\" });\n" " this._window.add(this.label);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new LabelExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/label.js.page:32 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gtk.Label" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: info/title #: C/label.py.page:9 #, fuzzy #| msgid "Python" msgctxt "text" msgid "Label (Python)" msgstr "Python" #. (itstool) path: info/desc #: C/label.py.page:27 msgid "A widget that displays a small to medium amount of text" msgstr "" "Un élément graphique qui affiche une petite à moyenne quantité de texte" #. (itstool) path: section/p #: C/label.py.page:41 msgid "" "Another way to obtain what we have in the example is to create the label as " "an instance of another class and add it to the instance of MyWindow in the do_activate(self) method:" msgstr "" "Une autre manière d'obtenir ce que contient cet exemple est de créer " "l'étiquette comme étant un exemple d'une autre classe et de l'ajouter à " "MyWindow dans la méthode do_activate(self) :" #. (itstool) path: note/p #: C/label.py.page:43 msgid "" "The highlighted lines indicate code that is different from the previous " "snippet." msgstr "" #. (itstool) path: section/code #: C/label.py.page:45 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "# a class to define a window\n" #| "class MyWindow(Gtk.ApplicationWindow):\n" #| " def __init__(self, app):\n" #| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" #| " self.set_default_size(200, 100)\n" #| "\n" #| "# a class to define a label\n" #| "class MyLabel(Gtk.Label):\n" #| " def __init__(self):\n" #| " Gtk.Label.__init__(self)\n" #| " self.set_text(\"Hello GNOME!\")\n" #| "\n" #| "class MyApplication(Gtk.Application):\n" #| " def __init__(self):\n" #| " Gtk.Application.__init__(self)\n" #| "\n" #| " def do_activate(self):\n" #| " # create an instance of MyWindow\n" #| " win = MyWindow(self)\n" #| " # create an instance of MyLabel\n" #| " label = MyLabel()\n" #| " # and add it to the window\n" #| " win.add(label)\n" #| " # show the window and everything on it\n" #| " win.show_all()" msgid "" "\n" "# a class to define a window\n" "class MyWindow(Gtk.ApplicationWindow):\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(200, 100)\n" "\n" "# a class to define a label\n" "\n" "class MyLabel(Gtk.Label):\n" " def __init__(self):\n" " Gtk.Label.__init__(self)\n" " self.set_text(\"Hello GNOME!\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " # create an instance of MyWindow\n" " win = MyWindow(self)\n" "\n" " # create an instance of MyLabel\n" "\n" " label = MyLabel()\n" "\n" " # and add it to the window\n" "\n" " win.add(label)\n" "\n" " # show the window and everything on it\n" " win.show_all()" msgstr "" "\n" "# a class to define a window\n" "class MyWindow(Gtk.ApplicationWindow):\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(200, 100)\n" "\n" "# a class to define a label\n" "class MyLabel(Gtk.Label):\n" " def __init__(self):\n" " Gtk.Label.__init__(self)\n" " self.set_text(\"Hello GNOME!\")\n" "\n" "class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " # create an instance of MyWindow\n" " win = MyWindow(self)\n" " # create an instance of MyLabel\n" " label = MyLabel()\n" " # and add it to the window\n" " win.add(label)\n" " # show the window and everything on it\n" " win.show_all()" #. (itstool) path: section/title #: C/label.py.page:82 msgid "Useful methods for a Label widget" msgstr "Méthodes utiles pour un élément graphique étiquette" #. (itstool) path: note/p #: C/label.py.page:85 #, fuzzy #| msgid "" #| "An explanation of how to deal with strings and Unicode (and a recap of " #| "what these things are) can be found here." msgid "" "An explanation of how to work with strings in GTK+ can be found in ." msgstr "" "Vous trouverez une documentation sur la façon de se servir des chaînes de " "caractères et des caractères Unicode (ainsi qu'un récapitulatif de ce que " "c'est) ici." #. (itstool) path: item/p #: C/label.py.page:89 msgid "" "set_line_wrap(True) breaks lines if the text of the label " "exceeds the size of the widget." msgstr "" "La fonction set_line_wrap(True) renvoie le texte de l'étiquette " "à la ligne s'il excède la largeur de l'élément graphique." #. (itstool) path: item/p #: C/label.py.page:90 msgid "" "set_justify(Gtk.Justification.LEFT) (or Gtk.Justification." "RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL) sets the " "alignment of the lines in the text of the label relative to each other. The " "method has no effect on a single-line label." msgstr "" "La fonction set_justify(Gtk.Justification.LEFT) (ou Gtk." "Justification.RIGHT, Gtk.Justification.CENTER, Gtk.Justification.FILL) définit l'alignement des lignes du texte de l'étiquette à une " "position relative les unes par rapport aux autres. La méthode n'a aucun " "effet sur une étiquette comportant une seule ligne." #. (itstool) path: item/p #: C/label.py.page:91 msgid "" "For decorated text we can use set_markup(\"text\"), where " "\"text\" is a text in the Pango Markup Language. An " "example:" msgstr "" "Pour décorer le texte, nous pouvons utiliser set_markup(\"text\"), où \"text\" est mis en langage Markup pango. " "Voici un exemple :" #. (itstool) path: item/code #: C/label.py.page:92 #, no-wrap msgid "" "\n" "label.set_markup(\"Text can be <small>small</small>, <big>big</big>, \"\n" " \"<b>bold</b>, <i>italic</i> and even point to somewhere \"\n" " \"on the <a href=\\\"http://www.gtk.org\\\" \"\n" " \"title=\\\"Click to find out more\\\">internet</a>.\")" msgstr "" #. (itstool) path: info/title #: C/label.vala.page:8 #, fuzzy #| msgid "Label" msgctxt "text" msgid "Label (Vala)" msgstr "Étiquette" #. (itstool) path: page/code #: C/label.vala.page:25 #, no-wrap msgid "" "\n" "public class MyWindow : Gtk.ApplicationWindow {\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Welcome to GNOME\");\n" "\n" "\t\tvar label = new Gtk.Label (\"Hello GNOME!\");\n" "\n" "\t\tthis.add (label);\n" "\t\tthis.set_default_size (200, 100);\n" "\t\tthis.show_all ();\n" "\t}\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: p/link #: C/legal.xml:3 #, fuzzy #| msgid "Creative Commons Share Alike 3.0" msgid "Creative Commons Attribution-ShareAlike 3.0 Unported License" msgstr "" "Licence Creative Commons Paternité-Partage des Conditions Initiales à " "l'Identique 3.0 Unported" #. (itstool) path: license/p #: C/legal.xml:3 msgid "" "This work is licensed under a <_:link-1/>. As a special exception, the " "copyright holders give you permission to copy, modify, and distribute the " "example code contained in this documentation under the terms of your " "choosing, without restriction." msgstr "" #. (itstool) path: info/desc #: C/license.page:8 msgid "Legal information." msgstr "" #. (itstool) path: page/title #: C/license.page:11 msgid "License" msgstr "" #. (itstool) path: page/p #: C/license.page:12 msgid "" "This work is distributed under a CreativeCommons Attribution-Share Alike 3.0 " "Unported license." msgstr "" #. (itstool) path: page/p #: C/license.page:20 msgid "You are free:" msgstr "" #. (itstool) path: item/title #: C/license.page:25 msgid "To share" msgstr "" #. (itstool) path: item/p #: C/license.page:26 msgid "To copy, distribute and transmit the work." msgstr "" #. (itstool) path: item/title #: C/license.page:29 msgid "To remix" msgstr "" #. (itstool) path: item/p #: C/license.page:30 msgid "To adapt the work." msgstr "" #. (itstool) path: page/p #: C/license.page:33 #, fuzzy #| msgid "The code has the following purpose:" msgid "Under the following conditions:" msgstr "L'objectif du programme est le suivant :" #. (itstool) path: item/title #: C/license.page:38 #, fuzzy #| msgid "Introduction" msgid "Attribution" msgstr "Introduction" #. (itstool) path: item/p #: C/license.page:39 msgid "" "You must attribute the work in the manner specified by the author or " "licensor (but not in any way that suggests that they endorse you or your use " "of the work)." msgstr "" #. (itstool) path: item/title #: C/license.page:46 msgid "Share Alike" msgstr "" #. (itstool) path: item/p #: C/license.page:47 msgid "" "If you alter, transform, or build upon this work, you may distribute the " "resulting work only under the same, similar or a compatible license." msgstr "" #. (itstool) path: page/p #: C/license.page:53 msgid "" "For the full text of the license, see the CreativeCommons website, or read the full Commons Deed." msgstr "" #. (itstool) path: note/p #: C/license.page:60 msgid "" "As a special exception, the copyright holders give you permission to copy, " "modify, and distribute the example code contained in this documentation " "under the terms of your choosing, without restriction." msgstr "" #. (itstool) path: info/title #: C/linkbutton.c.page:8 #, fuzzy #| msgid "LinkButton" msgctxt "text" msgid "LinkButton (C)" msgstr "LinkButton" #. (itstool) path: info/desc #: C/linkbutton.c.page:18 C/linkbutton.vala.page:18 msgid "Create buttons bound to a URL" msgstr "Créer des boutons reliés à un URL" #. (itstool) path: page/title #: C/linkbutton.c.page:21 C/linkbutton.js.page:21 C/linkbutton.py.page:22 #: C/linkbutton.vala.page:21 msgid "LinkButton" msgstr "LinkButton" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/linkbutton.c.page:23 C/linkbutton.js.page:22 C/linkbutton.py.page:24 #: C/linkbutton.vala.page:22 #, fuzzy #| msgid "" #| "@@image: 'media/linkbutton.png'; md5=3712eae8953e87c65a6aa74503b8e32b" msgctxt "_" msgid "" "external ref='media/linkbutton.png' md5='3712eae8953e87c65a6aa74503b8e32b'" msgstr "@@image: 'media/linkbutton.png'; md5=3712eae8953e87c65a6aa74503b8e32b" #. (itstool) path: page/p #: C/linkbutton.c.page:24 msgid "This button links to the GNOME live webpage." msgstr "Ce bouton se connecte à la page Web de GNOME live." #. (itstool) path: page/code #: C/linkbutton.c.page:26 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *linkbutton;\n" "\n" " window = gtk_application_window_new (app);\n" "\n" " gtk_window_set_title (GTK_WINDOW (window), \"GNOME LinkButton\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 250, 50);\n" "\n" " linkbutton = gtk_link_button_new (\"Link to GNOME live!\");\n" " gtk_link_button_set_uri (GTK_LINK_BUTTON(linkbutton), \"http://live.gnome.org\");\n" "\n" " gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (linkbutton));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/linkbutton.c.page:34 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkLinkButton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/linkbutton.js.page:8 #, fuzzy #| msgid "LinkButton widget" msgctxt "text" msgid "LinkButton (JavaScript)" msgstr "Élément graphique LinkButton" #. (itstool) path: info/desc #: C/linkbutton.js.page:18 msgid "A button that links to a web page" msgstr "Un bouton qui crée un lien vers une page Web" #. (itstool) path: page/p #: C/linkbutton.js.page:23 msgid "A button that links to live.gnome.org." msgstr "Un bouton qui crée un lien vers live.gnome.org." #. (itstool) path: page/code #: C/linkbutton.js.page:25 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class LinkButtonExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jslinkbutton',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal initializes menus and builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"GNOME LinkButton\",\n" " default_height: 50,\n" " default_width: 250 });\n" "\n" " // Create the LinkButton and have it link to live.gnome.org\n" " this.LinkButton = new Gtk.LinkButton ({label: \"Link to GNOME live!\",\n" " uri: \"http://live.gnome.org\"});\n" " this._window.add (this.LinkButton);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new LinkButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/linkbutton.js.page:32 msgid "" "Gtk.LinkButton" msgstr "" "Gtk.LinkButton" #. (itstool) path: info/title #: C/linkbutton.py.page:8 msgctxt "text" msgid "LinkButton (Python)" msgstr "LinkButton (Python)" #. (itstool) path: info/desc #: C/linkbutton.py.page:19 msgid "A button bound to an URL" msgstr "Un bouton relié à un URL" #. (itstool) path: page/p #: C/linkbutton.py.page:25 msgid "A button that links to a web page." msgstr "Un bouton qui crée un lien vers une page Web." #. (itstool) path: section/code #: C/linkbutton.py.page:32 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "# a class to create a window\n" #| "class MyWindow(Gtk.ApplicationWindow):\n" #| " def __init__(self, app):\n" #| " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" #| " self.set_default_size(300, 300)\n" #| "\n" #| "# a class to create an image\n" #| "class MyImage(Gtk.Image):\n" #| " def __init__(self):\n" #| " Gtk.Image.__init__(self)\n" #| " self.set_from_file(\"gnome-image.png\")\n" #| "\n" #| "class MyApplication(Gtk.Application):\n" #| " def __init__(self):\n" #| " Gtk.Application.__init__(self)\n" #| "\n" #| " def do_activate(self):\n" #| " # create an instance of MyWindow\n" #| " win = MyWindow(self)\n" #| " # create an instance of MyImage and add it to the window\n" #| " win.add(MyImage())\n" #| " # show the window and everything on it\n" #| " win.show_all()" msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"GNOME LinkButton\", application=app)\n" " self.set_default_size(250, 50)\n" "\n" " # a linkbutton pointing to the given URI\n" " button = Gtk.LinkButton(uri=\"http://live.gnome.org\")\n" " # with given text\n" " button.set_label(\"Link to GNOME live!\")\n" "\n" " # add the button to the window\n" " self.add(button)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" "\n" "# a class to create a window\n" "class MyWindow(Gtk.ApplicationWindow):\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Welcome to GNOME\", application=app)\n" " self.set_default_size(300, 300)\n" "\n" "# a class to create an image\n" "class MyImage(Gtk.Image):\n" " def __init__(self):\n" " Gtk.Image.__init__(self)\n" " self.set_from_file(\"gnome-image.png\")\n" "\n" "class MyApplication(Gtk.Application):\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " # create an instance of MyWindow\n" " win = MyWindow(self)\n" " # create an instance of MyImage and add it to the window\n" " win.add(MyImage())\n" " # show the window and everything on it\n" " win.show_all()" #. (itstool) path: section/title #: C/linkbutton.py.page:36 msgid "Useful methods for a LinkButton widget" msgstr "Méthodes utiles pour un élément graphique LinkButton" #. (itstool) path: item/p #: C/linkbutton.py.page:38 msgid "" "get_visited() returns the 'visited' state (True or " "False) of the URI where the LinkButton points. The button " "becomes visited when it is clicked." msgstr "" "La méthode get_visited() renvoie l'état " "« visited » (True ou False) de l'URI vers lequel " "pointe le LinkButton. Le bouton se change en visited quand il est cliqué." #. (itstool) path: item/p #: C/linkbutton.py.page:39 msgid "" "set_visited(True) sets the 'visited' state of the URI where the " "LinkButton points as True (analogously for False)." msgstr "" "La méthode set_visited(vrai) définit l'état « visited » de " "l'URI vers lequel pointe le LinkButton à vrai (même chose pour " "faux)." #. (itstool) path: item/p #: C/linkbutton.py.page:40 #, fuzzy #| msgid "" #| "Each time the button is clicked, the signal \"activate-link\" is emitted. For an explanation of signals and callback functions, " #| "see this page." msgid "" "Each time the button is clicked, the signal \"activate-link\" " "is emitted. For an explanation of signals and callback functions, see ." msgstr "" "À chaque fois que le bouton es cliqué, le signal \"activate-link\" est émis. Pour de plus amples informations sur les signaux et les " "fonctions de rappel, consultez cette " "page." #. (itstool) path: item/p #: C/linkbutton.py.page:48 msgid "" "GtkLinkButton" msgstr "" "GtkLinkButton" #. (itstool) path: info/title #: C/linkbutton.vala.page:8 msgctxt "text" msgid "LinkButton (Vala)" msgstr "LinkButton (Vala)" #. (itstool) path: page/p #: C/linkbutton.vala.page:23 msgid "This button links to GNOME live." msgstr "Ce bouton se connecte à la page Web de GNOME live." #. (itstool) path: page/code #: C/linkbutton.vala.page:25 #, no-wrap msgid "" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\n" "\t\t/* Create the window of this application and child widget and show all the things. */\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\twindow.set_default_size (250, 50);\n" "\t\twindow.title = \"GNOME LinkButton\";\n" "\n" "\t\tvar linkbutton = new Gtk.LinkButton.with_label (\"http://live.gnome.org\", \"Link to GNOME live!\");\n" "\n" "\t\twindow.add (linkbutton);\n" "\t\twindow.show_all ();\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/linkbutton.vala.page:30 msgid "" "Gtk." "LinkButton" msgstr "" "Gtk." "LinkButton" #. (itstool) path: info/title #: C/magic-mirror.vala.page:8 #, fuzzy #| msgid "4 Magic Mirror" msgctxt "text" msgid "Magic mirror (Vala)" msgstr "4 Miroir magique" #. (itstool) path: info/desc #: C/magic-mirror.vala.page:11 #, fuzzy #| msgid "Use your webcam as a mirror using the GStreamer framework and Gtk+" msgid "Use your webcam as a mirror using the GStreamer framework and GTK+" msgstr "Utilisation de votre webcam comme miroir avec GStreamer et Gtk+" #. (itstool) path: credit/name #: C/magic-mirror.vala.page:15 msgid "Daniel G. Siegel" msgstr "Daniel G. Siegel" #. (itstool) path: page/title #: C/magic-mirror.vala.page:29 msgid "Magic mirror" msgstr "Miroir magique" #. (itstool) path: synopsis/p #: C/magic-mirror.vala.page:32 #, fuzzy #| msgid "" #| "Your mirror just fell off the wall and broke into a thousand pieces — but " #| "you need a mirror to shave your beard off or add some makeup! You only " #| "have 15 minutes left before catching the bus to work. So what can you do?" msgid "" "Your mirror just fell off the wall and broke into a thousand pieces — " "but you need a mirror to shave your beard off or add some makeup! You only " "have 15 minutes left before catching the bus to work. So what can you do?" msgstr "" "Votre miroir vient juste de tomber du mur et s'est cassé en mille morceaux. " "Mais il vous faut un miroir pour vous raser ou pour vous maquiller ! Il ne " "vous reste que 15 minutes avant d'attraper le bus pour aller au travail. " "Comment faire ?" #. (itstool) path: synopsis/p #: C/magic-mirror.vala.page:33 msgid "" "In this tutorial, we're going to make a program which lets you use your " "webcam as a mirror. You will learn how to:" msgstr "" "Dans ce tutoriel, nous allons faire un programme qui va vous permettre " "d'utiliser votre webcam comme miroir. Vous apprendrez comment :" #. (itstool) path: item/p #: C/magic-mirror.vala.page:35 msgid "Create a GTK+ application" msgstr "créer une application GTK+," #. (itstool) path: item/p #: C/magic-mirror.vala.page:36 msgid "Access your webcam using GStreamer and embed the result into a window" msgstr "" "accéder à votre webcam en utilisant GStreamer et intégrer le résultat dans " "une fenêtre," #. (itstool) path: item/p #: C/magic-mirror.vala.page:37 msgid "Grab photos off your webcam" msgstr "récupérer des photos de votre webcam," #. (itstool) path: item/p #: C/magic-mirror.vala.page:42 msgid "Installed copies of GTK, GStreamer, and a Vala compiler" msgstr "l'installation des paquets GTK, GStreamer et d'un compilateur Vala," #. (itstool) path: item/p #: C/magic-mirror.vala.page:43 msgid "Basic knowledge of an object-oriented programming language" msgstr "des connaissances de base d'un langage de programmation d'objets." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/magic-mirror.vala.page:47 #, fuzzy #| msgid "" #| "@@image: 'media/magic-mirror.png'; md5=8171faea6ed3b6ddac0da084c29e4e22" msgctxt "_" msgid "" "external ref='media/magic-mirror.png' md5='8171faea6ed3b6ddac0da084c29e4e22'" msgstr "" "@@image: 'media/magic-mirror.png'; md5=8171faea6ed3b6ddac0da084c29e4e22" # BUG : "magic_mirror" au lieu de "guitar-tuner" #. (itstool) path: item/p #: C/magic-mirror.vala.page:57 #, fuzzy #| msgid "" #| "Choose Gtk+ (simple) from the Vala tab, click " #| "Forward, and fill out your details on the next few pages. Use " #| "guitar-tuner as project name and directory." msgid "" "Choose GTK+ (simple) from the Vala tab, click " "Forward, and fill out your details on the next few pages. Use " "magic-mirror as project name and directory." msgstr "" "Sélectionnez Gtk+ (simple) dans l'onglet Vala, cliquez " "sur Continuer et saisissez vos informations sur les pages " "suivantes. Utilisez miroir_magique comme nom de projet et de " "répertoire." #. (itstool) path: item/p #: C/magic-mirror.vala.page:60 msgid "" "Disable Use GtkBuilder for user interface as we will create the " "UI manually in this tutorial. Check the Guitar-Tuner tutorial using the interface builder." msgstr "" "Désactivez Utiliser GtkBuilder pour l'interface utilisateur car " "nous allons créer l'interface utilisateur manuellement. Consultez le " "tutoriel Accordeur de guitare à " "propos de l'utilisation du constructeur d'interface GtkBuilder." #. (itstool) path: item/p #: C/magic-mirror.vala.page:65 msgid "" "Make sure that Configure external packages is selected. On the " "next page, select gstreamer-0.10 from the list to include the " "GStreamer library into your project." msgstr "" "Assurez-vous que Configuration des paquets externes est activé. " "Sur la page suivante, sélectionnez gstreamer-0.10 dans la liste " "pour inclure la bibliothèque GStreamer à votre projet." #. (itstool) path: item/p #: C/magic-mirror.vala.page:69 msgid "" "Click Apply and the project will be created for you. Open " "src/magic_mirror.vala from the Project or File tabs. You should see some code which starts with the lines:" msgstr "" "Cliquez sur Appliquer et votre projet est créé. Ouvrez src/" "miroir_magique.vala depuis l'onglet Projet ou l'onglet " "Fichiers. Vous devez voir apparaître du code commençant par les " "lignes :" #. (itstool) path: section/p #: C/magic-mirror.vala.page:79 msgid "" "The code loads an (empty) window and shows it. More details are given below; " "skip this list if you understand the basics:" msgstr "" "Le programme charge et affiche une fenêtre (vide). Vous trouverez plus de " "détails ci-dessous ; passez cette liste si vous comprenez les bases :" #. (itstool) path: item/p #: C/magic-mirror.vala.page:85 msgid "" "The constructor of the Main class creates a new window and sets " "its title. Afterwards the window is shown and a signal is connected which " "quits the application if the window is closed. More on signals later on." msgstr "" "Le constructeur de la classe principale Main crée une nouvelle " "fenêtre et définit son titre. Ensuite, la fenêtre est affichée et un signal " "permettant de quitter l'application est connecté à la fermeture de la " "fenêtre. Plus d'informations sur les signaux sont données plus tard." #. (itstool) path: item/p #: C/magic-mirror.vala.page:89 msgid "" "The static main function is run by default when you start a " "Vala application. It calls a few functions which create the Main class, set " "up and then run the application. The Gtk.Main function starts " "the GTK main loop, which runs the user interface and starts listening for " "events (like clicks and key presses)." msgstr "" "La fonction statique main est exécutée par défaut quand vous " "lancez une application Vala. Elle appelle d'autres fonctions qui créent la " "classe « Main », initialise et ensuite exécute l'application. La fonction " "Gtk.Main démarre la boucle principale GTK, qui lance " "l'interface utilisateur et commence à écouter les événements (comme des " "clics de souris ou des appuis sur des touches)." #. (itstool) path: section/title #: C/magic-mirror.vala.page:98 msgid "Access the webcam video stream with GStreamer" msgstr "Accès au flux vidéo de votre webcam avec GStreamer" #. (itstool) path: section/p #: C/magic-mirror.vala.page:99 msgid "" "The GStreamer multimedia framework is able to handle video from webcams. " "Let's add GStreamer to our application and so we can access the video stream." msgstr "" "L'architecture multimédia de GStreamer sait gérer les vidéos en provenance " "de webcams. Ajoutons GStreamer à notre application et nous pouvons ainsi " "accéder au flux vidéo." #. (itstool) path: section/code #: C/magic-mirror.vala.page:101 #, no-wrap msgid "" "\n" "using GLib;\n" "using Gtk;\n" "\n" "public class Main : Object\n" "{\n" "\tprivate Gst.Element camerabin;\n" "\n" "\tpublic Main () {\n" "\t\tthis.camerabin = Gst.ElementFactory.make (\"camerabin\", \"camera\");\n" "\t\tthis.camerabin.set_state (Gst.State.PLAYING);\n" "\t}\n" "\n" "\tstatic int main (string[] args) {\n" "\t\tGtk.init (ref args);\n" "\t\tGst.init (ref args);\n" "\t\tvar app = new Main ();\n" "\n" "\t\tGtk.main ();\n" "\n" "\t\treturn 0;\n" "\t}\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/magic-mirror.vala.page:126 msgid "" "First we remove the window we created before because GStreamer will take " "care of showing the picture on screen." msgstr "" "Enlevons d'abord la fenêtre créée précédemment, car GStreamer va gérer " "l'affichage de l'image à l'écran." #. (itstool) path: item/p #: C/magic-mirror.vala.page:130 msgid "" "Now we are creating a GStreamer element which accesses our webcam. We are " "using the Camerabin element, which is an all-in-one camera element and is " "capable of taking photos, videos, applying effects and much more. Perfect " "for our use case! With this.camerabin.set_state (Gst.State.PLAYING) we tell the GStreamer pipeline we just created to start playing. Easy, " "no?" msgstr "" "Créons maintenant un élément GStreamer qui va accéder à notre webcam. Nous " "utilisons l'élément « Camerabin », qui est un élément caméra tout-en-un et " "qui sait faire des photos, des vidéos, appliquer des effets et beaucoup plus " "encore. Parfait dans notre cas ! Avec this.camerabin.set_state (Gst." "State.PLAYING) nous disons au pipeline GStreamer, que nous venons de " "créer, de commencer la lecture. Facile, non ?" #. (itstool) path: item/p #: C/magic-mirror.vala.page:137 #, fuzzy #| msgid "" #| "Of course it is also possible to integrate the video more tighly into " #| "other windows but that is an advanced topic that includes some details of " #| "the X Window System we will omit here." msgid "" "Of course it is also possible to integrate the video more tightly into other " "windows but that is an advanced topic that includes some details of the X " "Window System we will omit here." msgstr "" "Bien sûr, il est aussi possible d'ajuster plus précisément la vidéo dans " "d'autres fenêtres, mais c'est un sujet avancé, qui inclut des détails sur le " "système X Window et que nous ne traiterons pas ici." #. (itstool) path: item/p #: C/magic-mirror.vala.page:141 msgid "" "Compile and run it again. You will end up with two windows. In the next step " "we will integrate the video into the GTK+ window." msgstr "" "Compilez et exécutez le programme à nouveau. Vous obtenez finalement deux " "fenêtres. À l'étape suivante, nous allons intégrer la vidéo dans la fenêtre " "GTK+." #. (itstool) path: section/p #: C/magic-mirror.vala.page:151 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code. There " "is also a more extensive implementation that embeds the window into a regular Gtk." "Window which involves some advanced techniques, and adds buttons to start/" "stop the picture." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence. Il existe aussi une implémentation plus complète qui intègre la fenêtre à " "une fenêtre standard Gtk, mais qui nécessite des techniques avancées ainsi " "que l'ajout de boutons pour lire/arrêter l'image." #. (itstool) path: section/p #: C/magic-mirror.vala.page:158 msgid "" "To find out more about the Vala programming language you might want to check " "out the Vala Tutorial." msgstr "" "Pour en savoir plus à propos de la programmation en langage Vala, consultez " "le manuel Vala." #. (itstool) path: section/title #: C/magic-mirror.vala.page:163 msgid "Conclusion" msgstr "Conclusion" #. (itstool) path: section/p #: C/magic-mirror.vala.page:164 msgid "" "That's it, you have managed to create a full-featured webcam photo " "application in 15 minutes. Now you can shave your beard off or add some " "makeup to your beautiful face, right before having a beautiful day at your " "workplace, where you can impress your friends and colleagues with an awesome " "application you just made in 15 minutes." msgstr "" "Ça y est ; vous avez réussi à créer une application fonctionnelle pour " "webcam en 15 minutes. Maintenant, vous pouvez vous raser ou maquiller votre " "joli visage avant de passer une belle journée sur votre lieu de travail, où " "vous allez pouvoir épater vos amis et collègues avec une application géniale " "faite en 15 minutes." #. (itstool) path: info/title #: C/menubar.c.page:8 msgctxt "text" msgid "MenuBar (C)" msgstr "MenuBar (C)" #. (itstool) path: info/desc #: C/menubar.c.page:20 C/menubar.py.page:25 C/menubar.vala.page:20 msgid "A widget which holds GtkMenuItem widgets" msgstr "" "Un composant graphique qui contient des éléments graphiques GtkMenuItem" #. (itstool) path: page/title #: C/menubar.c.page:23 C/menubar.vala.page:23 msgid "MenuBar" msgstr "BarreDeMenu" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/menubar.c.page:25 C/menubar.py.page:29 C/menubar.vala.page:24 #, fuzzy #| msgid "@@image: 'media/menubar.png'; md5=7b642aaa1628d5e43ab85ac230ac1c78" msgctxt "_" msgid "external ref='media/menubar.png' md5='7b642aaa1628d5e43ab85ac230ac1c78'" msgstr "@@image: 'media/menubar.png'; md5=7b642aaa1628d5e43ab85ac230ac1c78" #. (itstool) path: page/p #: C/menubar.c.page:26 C/menubar.py.page:30 C/menubar.vala.page:25 msgid "A MenuBar created using XML and GtkBuilder." msgstr "Une BarreDeMenu créée avec XML et GtkBuilder." #. (itstool) path: note/p #: C/menubar.c.page:27 msgid "" "For a more in-depth look at this sample, please do not hesitate to check out " "the Vala MenuBar and/or Python MenuBar tutorials." msgstr "" #. (itstool) path: page/code #: C/menubar.c.page:31 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/* Callback function for the \"copy\" action */\n" "static void\n" "copy_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"\\\"Copy\\\" activated\\n\");\n" "}\n" "\n" "\n" "\n" "/* Callback function for the \"paste\" action */\n" "static void\n" "paste_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"\\\"Paste\\\" activated\\n\");\n" "}\n" "\n" "\n" "\n" "/* Callback function for the \"shape\" action */\n" "static void\n" "shape_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " /* We first gather the value of the GVariant instance with a string type.\n" " * The overall goal here is to see if shape is set to line, triangle, etc,\n" " * and put that value within the variable \"answer\".\n" " */\n" " const gchar *answer = g_variant_get_string (parameter, NULL);\n" " g_printf (\"Shape is set to %s.\\n\", answer);\n" " /* Note that we set the state of the action */\n" " g_simple_action_set_state (simple, parameter);\n" "}\n" "\n" "\n" "\n" "/* Callback function in which closes the about_dialog created below */\n" "static void\n" "on_close (GtkDialog *dialog,\n" " gint response_id,\n" " gpointer user_data)\n" "{\n" " gtk_widget_destroy (GTK_WIDGET (dialog));\n" "}\n" "\n" "\n" "\n" "/* Callback function for the about action (see aboutdialog.c example) */\n" "static void\n" "about_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GtkWidget *about_dialog;\n" "\n" " about_dialog = gtk_about_dialog_new ();\n" "\n" " const gchar *authors[] = {\"GNOME Documentation Team\", NULL};\n" " const gchar *documenters[] = {\"GNOME Documentation Team\", NULL};\n" "\n" " /* Fill in the about_dialog with the desired information */\n" " gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (about_dialog), \"AboutDialog Example\");\n" " gtk_about_dialog_set_copyright (GTK_ABOUT_DIALOG (about_dialog), \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\");\n" " gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (about_dialog), authors);\n" " gtk_about_dialog_set_documenters (GTK_ABOUT_DIALOG (about_dialog), documenters);\n" " gtk_about_dialog_set_website_label (GTK_ABOUT_DIALOG (about_dialog), \"GNOME Developer Website\");\n" " gtk_about_dialog_set_website (GTK_ABOUT_DIALOG (about_dialog), \"http://developer.gnome.org\");\n" "\n" " /* The \"response\" signal is emitted when the dialog receives a delete event,\n" " * therefore we connect that signal to the on_close callback function\n" " * created above.\n" " */\n" " g_signal_connect (GTK_DIALOG (about_dialog), \"response\",\n" " G_CALLBACK (on_close), NULL);\n" "\n" " /* Show the about dialog */\n" " gtk_widget_show (about_dialog);\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" "\n" " GSimpleAction *copy_action;\n" " GSimpleAction *paste_action;\n" " GSimpleAction *shape_action;\n" " GSimpleAction *about_action;\n" "\n" " /* Create a window with a title and a default size */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"MenuBar Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n" "\n" " /* Begin creating the \"copy\" action.\n" " * Note that it is an action without a state.\n" " */\n" " copy_action = g_simple_action_new (\"copy\", NULL);\n" " /* Connected to a callback function */\n" " g_signal_connect (copy_action, \"activate\", G_CALLBACK (copy_callback),\n" " GTK_WINDOW (window));\n" " /* Added to the window */\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (copy_action));\n" "\n" " /* Begin creating the \"paste\" action.\n" " * Note that it is an action without a state.\n" " */\n" " paste_action = g_simple_action_new (\"paste\", NULL);\n" " /* Connect the action to a callback function */\n" " g_signal_connect (paste_action, \"activate\", G_CALLBACK (paste_callback),\n" " GTK_WINDOW (window));\n" " /* Add it to the window */\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (paste_action));\n" "\n" " /* Begin creating the \"shape\" action.\n" " * Note that it is an action with a state.\n" " * First we state that the parameter type of the simple action is a string.\n" " * When using g_variant_type_new, it is appropriate to free the return value\n" " * once you're done with it.\n" " */\n" " GVariantType *type_string = g_variant_type_new (\"s\");\n" " /* parameters for the g_simple_action_new_stateful are: (name, parameter type,\n" " * initial state).\n" " */\n" " shape_action = g_simple_action_new_stateful (\"shape\", type_string,\n" " g_variant_new_string (\"line\"));\n" " /* Connect the action to a callback function */\n" " g_signal_connect (shape_action, \"activate\", G_CALLBACK (shape_callback),\n" " GTK_WINDOW (window));\n" " /* Add it to the window */\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (shape_action));\n" " g_variant_type_free (type_string);\n" "\n" " /* Begin creating the \"about\" action.\n" " * Note that it is an action without a state.\n" " */\n" " about_action = g_simple_action_new (\"about\", NULL);\n" " /* Connect the action to a callback function */\n" " g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n" " GTK_WINDOW (window));\n" " /* Add it to the window */\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "/* Callback function for the \"new\" action */\n" "static void\n" "new_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"New\\\"\\n\");\n" "}\n" "\n" "\n" "\n" "/* Callback function for the \"quit\" action */\n" "static void\n" "quit_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GApplication *application = user_data;\n" "\n" " g_print (\"You clicked \\\"Quit\\\"\\n\");\n" " g_application_quit (application);\n" "}\n" "\n" "\n" "\n" "/* Callback function for the \"state\" action */\n" "static void\n" "state_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " /* The two possibilities in this case for the \"answer\" variable are either\n" " * \"on\" or \"off\".\n" " */\n" " const gchar *answer = g_variant_get_string (parameter, NULL);\n" " /* We print the information to the user */\n" " g_printf (\"State is set to %s.\\n\", answer);\n" " /* Note that we set the state of the action */\n" " g_simple_action_set_state (simple, parameter);\n" "}\n" "\n" "\n" "\n" "/* Callback function for the \"awesome\" action */\n" "static void\n" "awesome_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GVariant *action_state = g_action_get_state (G_ACTION (simple));\n" " gboolean active = g_variant_get_boolean (action_state);\n" " GVariant *new_state = g_variant_new_boolean (!active);\n" " /* Set the new state for the action.\n" " * (Keeps track of whether it was last checked or unchecked).\n" " */\n" " g_simple_action_set_state (simple, new_state);\n" "\n" " if (active)\n" " g_print (\"You unchecked \\\"Awesome\\\"\\n\");\n" " else\n" " g_print (\"You checked \\\"Awesome\\\"\\n\");\n" "}\n" "\n" "\n" "\n" "/* Startup function for the menu we are creating in this sample */\n" "static void\n" "startup (GApplication *app,\n" " gpointer user_data)\n" "{\n" " /* Initialize variables */\n" " GSimpleAction *new_action;\n" " GSimpleAction *quit_action;\n" " GSimpleAction *state_action;\n" " GSimpleAction *awesome_action;\n" "\n" " GtkBuilder *builder;\n" "\n" " GError *error = NULL;\n" "\n" " /* Begin creating the \"new\" action.\n" " * Note that it is an action without a state.\n" " */\n" " new_action = g_simple_action_new (\"new\", NULL);\n" " g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n" " /* It is added to the overall application */\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n" "\n" " /* Begin creating the \"quit\" action.\n" " * Note that it is an action without a state.\n" " */\n" " quit_action = g_simple_action_new (\"quit\", NULL);\n" " g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n" " /* It is added to the overall application */\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n" "\n" " /* Begin creating the \"state\" action.\n" " * Note that it is an action with a state.\n" " */\n" " GVariantType *type_string2 = g_variant_type_new (\"s\");\n" " state_action = g_simple_action_new_stateful (\"state\", type_string2,\n" " g_variant_new_string (\"off\"));\n" " g_signal_connect (state_action, \"activate\", G_CALLBACK (state_callback), app);\n" " /* It is added to the overall application */\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (state_action));\n" " g_variant_type_free (type_string2);\n" "\n" " /* Begin creating the \"awesome\" action.\n" " * Note that it is an action with a state.\n" " */\n" " awesome_action = g_simple_action_new_stateful (\"awesome\", NULL, g_variant_new_boolean (FALSE));\n" " g_signal_connect (awesome_action, \"activate\", G_CALLBACK (awesome_callback), app);\n" " /* It is added to the overall application */\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (awesome_action));\n" "\n" " /* A builder to add the User Interface designed with GLADE to the grid: */\n" " builder = gtk_builder_new ();\n" " /* Get the file (if it is there):\n" " * Note: you must make sure that the file is in the current directory for\n" " * this to work. The function used here returns a non-null value within\n" " * our variable \"error\" if an error is indeed found.\n" " */\n" " gtk_builder_add_from_file (builder, \"menubar.ui\", &error);\n" " if (error != NULL) {\n" " g_print (\"%s\\n\", error->message);\n" " g_error_free (error);\n" " }\n" "\n" " /* Extract the menubar */\n" " GObject *menubar = gtk_builder_get_object (builder, \"menubar\");\n" " gtk_application_set_menubar (GTK_APPLICATION (app), G_MENU_MODEL (menubar));\n" "\n" " /* Extract the appmenu */\n" " GObject *appmenu = gtk_builder_get_object (builder, \"appmenu\");\n" " gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (appmenu));\n" "}\n" "\n" "\n" "\n" "/* Startup function for the application */\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/menubar.c.page:37 C/scrolledwindow.c.page:34 msgid "" "GtkApplication" msgstr "" "GtkApplication" #. (itstool) path: item/p #: C/menubar.c.page:40 msgid "" "GtkAboutDialog" msgstr "" "GtkAboutDialog" #. (itstool) path: item/p #: C/menubar.c.page:41 msgid "" "GtkVariantType" msgstr "" "GtkVariantType" #. (itstool) path: info/title #: C/menubar.py.page:8 msgctxt "text" msgid "MenuBar (Python)" msgstr "MenuBar (Python)" #. (itstool) path: page/title #: C/menubar.py.page:28 #, fuzzy #| msgid "A MenuBar created using XML and GtkBuilder." msgid "MenuBar created using XML and GtkBuilder" msgstr "Une BarreDeMenu créée avec XML et GtkBuilder." #. (itstool) path: section/title #: C/menubar.py.page:34 C/menubar.vala.page:29 msgid "Create a MenuBar using XML" msgstr "Création d'une BarreDeMenu avec XML" #. (itstool) path: section/p #: C/menubar.py.page:35 C/menubar.vala.page:30 msgid "To create the menubar using XML:" msgstr "Pour créer une BarreDeMenu avec XML :" #. (itstool) path: item/p #: C/menubar.py.page:37 C/menubar.vala.page:32 msgid "Create menubar.ui using your favorite text editor." msgstr "" "créez le fichier barredemenu.ui avec votre éditeur de texte " "favorit." #. (itstool) path: item/p #: C/menubar.py.page:38 C/menubar.vala.page:33 msgid "Enter the following line at the top of the file:" msgstr "Saisissez la ligne suivante en haut du fichier :" #. (itstool) path: item/code #: C/menubar.py.page:39 C/menubar.vala.page:34 #, no-wrap msgid "" "\n" "<?xml version=\"1.0\"? encoding=\"UTF-8\"?>" msgstr "" #. (itstool) path: item/p #: C/menubar.py.page:42 C/menubar.vala.page:37 #, fuzzy #| msgid "" #| "We want to create the interface which will contain our menubar and it's " #| "submenus. Our menubar will contain File, Edit, " #| "Choices and Help submenus. We add the following XML " #| "code to the file:" msgid "" "We want to create the interface which will contain our menubar and its " "submenus. Our menubar will contain File, Edit, " "Choices and Help submenus. We add the following XML " "code to the file:" msgstr "" "Nous souhaitons créer une interface contenant notre BarreDeMenu et ses " "SousMenus. Notre BarreDeMenu contient les SousMenus Fichier, " "Édition, Choix et Aide. Ajoutons le code " "XML suivant au fichier :" #. (itstool) path: item/code #: C/menubar.py.page:43 C/menubar.vala.page:38 #, no-wrap msgid "" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<interface>\n" " <menu id=\"menubar\">\n" " <submenu>\n" " <attribute name=\"label\">File</attribute>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Edit</attribute>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Choices</attribute>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Help</attribute>\n" " </submenu>\n" " </menu>\n" "</interface>\n" msgstr "" #. (itstool) path: item/p #: C/menubar.py.page:45 msgid "" "Now we will create the .py file and use GtkBuilder to import the " "menubar.ui we just created." msgstr "" "Maintenant, créons le fichier .py et utilisons GtkBuilder pour importer le " "fichier barredemenu.ui que nous venons de faire." #. (itstool) path: section/title #: C/menubar.py.page:49 C/menubar.vala.page:43 msgid "Add the MenuBar to the window using GtkBuilder" msgstr "Ajout de la BarreDeMenu à la fenêtre avec GtkBuilder" #. (itstool) path: section/code #: C/menubar.py.page:50 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n" " self.set_default_size(200, 200)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" " # a builder to add the UI designed with Glade to the grid:\n" " builder = Gtk.Builder()\n" " # get the file (if it is there)\n" " try:\n" " builder.add_from_file(\"menubar_basis.ui\")\n" " except:\n" " print(\"file not found\")\n" " sys.exit()\n" "\n" " # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n" " # to the application (Note: NOT the window!)\n" " self.set_menubar(builder.get_object(\"menubar\"))\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/p #: C/menubar.py.page:51 msgid "" "Now run the python application. It should look like the picture at the top " "of this page." msgstr "" "Démarrez maintenant l'application python. Vous devriez voir quelque chose " "qui ressemble à l'image en haut de cette page." #. (itstool) path: section/title #: C/menubar.py.page:55 C/menubar.vala.page:51 msgid "Add items to the menus" msgstr "Ajout d'éléments aux menus" #. (itstool) path: section/p #: C/menubar.py.page:56 C/menubar.vala.page:52 msgid "" "We start off by adding 2 menuitems to the File menu: New and Quit. We do this by adding a section to the " "the File submenu with these items. The menubar.ui " "should look like this (lines 6 to 13 inclusive comprise the newly added " "section):" msgstr "" "Commençons par ajouter 2 éléments au menu Fichier : Nouveau et Quitter. Pour ce faire, ajoutons une section " "contenant ces éléments au SouMenu Fichier. Le fichier " "barredemenu.ui devrait ressembler à ceci (les lignes 6 à 13 " "comportent la section nouvellement ajoutée) :" #. (itstool) path: listing/title #: C/menubar.py.page:59 msgid "menubar.ui" msgstr "" #. (itstool) path: listing/code #. (itstool) path: section/code #: C/menubar.py.page:60 C/menubar.vala.page:53 #, no-wrap msgid "" "\n" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<interface>\n" " <menu id=\"menubar\">\n" " <submenu>\n" " <attribute name=\"label\">File</attribute>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">New</attribute>\n" " </item>\n" " <item>\n" " <attribute name =\"label\">Quit</attribute>\n" " </item>\n" " </section>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Edit</attribute>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Choices</attribute>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Help</attribute>\n" " </submenu>\n" " </menu>\n" "</interface>" msgstr "" #. (itstool) path: section/p #: C/menubar.py.page:88 msgid "" "Following this pattern, you can now add a Copy and a " "Paste item to the Edit submenu, and an " "About item to the Help submenu." msgstr "" "En suivant ce modèle, ajoutez maintenant les éléments Copier et " "Coller au SousMenu Édition et un élément À " "propos au SousMenu Aide." #. (itstool) path: section/title #: C/menubar.py.page:93 C/menubar.vala.page:87 msgid "Setup actions" msgstr "Définition des actions" #. (itstool) path: section/p #: C/menubar.py.page:95 msgid "" "We now create the actions for \"New\" and \"Quit\" connected to a callback " "function in the Python file; for instance we create \"new\" as:" msgstr "" "Dans le fichier Python, créons les actions « Nouveau » et « Quitter » et " "connectons-les à une fonction de rappel ; par exemple, créons « new » de " "cette façon :" #. (itstool) path: section/code #: C/menubar.py.page:96 #, no-wrap msgid "" "\n" "new_action = Gio.SimpleAction.new(\"new\", None)\n" "new_action.connect(\"activate\", self.new_callback)" msgstr "" "\n" "new_action = Gio.SimpleAction.new(\"new\", None)\n" "new_action.connect(\"activate\", self.new_callback)" #. (itstool) path: section/p #: C/menubar.py.page:100 msgid "And we create the callback function of \"new\" as" msgstr "et la fonction de rappel de « new » de cette façon :" #. (itstool) path: section/code #: C/menubar.py.page:101 #, no-wrap msgid "" "\n" "def new_callback(self, action, parameter):\n" " print \"You clicked \\\"New\\\"\"" msgstr "" "\n" "def new_callback(self, action, parameter):\n" " print \"You clicked \\\"New\\\"\"" #. (itstool) path: section/p #: C/menubar.py.page:105 #, fuzzy #| msgid "" #| "Now, in the XML file, we we connect the menu items to the actions in the " #| "XML file by adding the \"action\" attribute:" msgid "" "Now, in the XML file, we connect the menu items to the actions in the XML " "file by adding the \"action\" attribute:" msgstr "" "Maintenant, dans le fichier XML, connectons les éléments du menu aux actions " "en y ajoutant l'attibut « action » :" #. (itstool) path: section/code #: C/menubar.py.page:106 #, no-wrap msgid "" "\n" "<item>\n" " <attribute name=\"label\">New</attribute>\n" " <attribute name=\"action\">app.new</attribute>\n" "</item>" msgstr "" #. (itstool) path: section/p #: C/menubar.py.page:112 msgid "" "Note that for an action that is relative to the application, we use the " "prefix app.; for actions that are relative to the window we use " "the prefix win.." msgstr "" "Notez que pour une action relative à l'application, nous utilisons le " "préfixe app., et que pour une action relative à la fenêtre, " "nous utilisons le préfixe win.." #. (itstool) path: section/p #: C/menubar.py.page:114 msgid "" "Finally, in the Python file, we add the action to the application or to the " "window - so for instance app.new will be added to the " "application in the method do_startup(self) as" msgstr "" "Finalement, nous ajoutons l'action à l'application ou à la fenêtre dans le " "fichier python - ainsi, par exemple, app.new est ajouté à " "l'application dans la méthode do_startup(self) de cette façon :" #. (itstool) path: section/code #: C/menubar.py.page:115 #, no-wrap msgid "" "\n" "self.add_action(new_action)" msgstr "" "\n" "self.add_action(new_action)" #. (itstool) path: section/p #: C/menubar.py.page:118 msgid "" "See for a more detailed explanation of " "signals and callbacks." msgstr "" #. (itstool) path: section/title #: C/menubar.py.page:122 C/menubar.vala.page:139 msgid "Actions: Application or Window?" msgstr "Actions : application ou fenêtre ?" #. (itstool) path: section/p #: C/menubar.py.page:123 C/menubar.vala.page:140 msgid "" "Above, we created the \"new\" and \"open\" actions as part of the " "MyApplication class. Actions which control the application itself, such as " "\"quit\" should be created similarly." msgstr "" "Ci-dessus, nous créons les actions « new » et « open » comme faisant partie " "de la classe MyApplication. Les actions qui gèrent l'application elle-même " "(comme « quit »), doivent être créées de la même façon." #. (itstool) path: section/p #: C/menubar.py.page:125 C/menubar.vala.page:143 msgid "" "Some actions, such as \"copy\" and \"paste\" deal with the window, not the " "application. Window actions should be created as part of the window class." msgstr "" "Quelques actions, comme « copy » et « paste » gèrent la fenêtre, pas " "l'application. Les actions gérant la fenêtre doivent être créées dans la " "classe window." #. (itstool) path: section/p #: C/menubar.py.page:127 #, fuzzy #| msgid "" #| "The complete example files contain both application actions and window " #| "applications. The window actions are the ones usually included in the " #| "application menu also. It is not good " #| "practice to include window actions in the applcation menu. For " #| "demonstration purposes, the complete example files which follow include " #| "XML in the UI file which creates the application menu which includes a " #| "\"New\" and \"Open\" item, and these are hooked up to the same actions as " #| "the menubar items of the same name." msgid "" "The complete example files contain both application actions and window " "actions. The window actions are the ones usually included in the application menu also. It is not good practice to " "include window actions in the application menu. For demonstration purposes, " "the complete example files which follow include XML in the UI file which " "creates the application menu which includes a \"New\" and \"Open\" item, and " "these are hooked up to the same actions as the menubar items of the same " "name." msgstr "" "Les fichiers complets de l'exemple contiennent à la fois les actions qui " "gèrent l'application et celles qui gèrent la fenêtre. Les actions gérant la " "fenêtre sont aussi celles habituellement inclues dans application menu. Ce n'est pas une bonne façon de faire que " "d'inclure les actions gérant la fenêtre dans le menu de l'application. " "Néanmoins, pour les besoins de cette démonstration, les fichiers exemple " "complets suivants incluent le code XML dans le fichier de l'interface " "utilisateur. Celui-ci crée le menu de l'application en y incluant les " "éléments « new » et « open » et les lie aux mêmes actions que celles " "attribuées aux éléments de la BarreDeMenu ayant le même nom." #. (itstool) path: section/title #: C/menubar.py.page:131 C/menubar.vala.page:133 msgid "Choices submenu and items with state" msgstr "Le SousMenu Choix et les éléments avec leur état" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/menubar.py.page:132 C/menubar.vala.page:134 #, fuzzy #| msgid "" #| "@@image: 'media/menubar_choices.png'; md5=47cdfa12caf85ba20dd3e835bd7f893f" msgctxt "_" msgid "" "external ref='media/menubar_choices.png' " "md5='47cdfa12caf85ba20dd3e835bd7f893f'" msgstr "" "@@image: 'media/menubar_choices.png'; md5=47cdfa12caf85ba20dd3e835bd7f893f" #. (itstool) path: section/p #: C/menubar.py.page:133 msgid "" "Lines 30 to 80 inclusive of the " "demonstrate the XML code used to create the UI for Choices menu." msgstr "" "Les lignes 30 à 80 inclue de décrivent " "le code XML utilisé pour créer le menu Choix de l'interface " "utilisateur." #. (itstool) path: section/p #: C/menubar.py.page:135 msgid "" "The actions created so far are stateless, that is they do not " "retain or depend on a state given by the action itself. The actions we need " "to create for the Choices submenu, on the other hand, are stateful. " "An example of creation of a stateful action is:" msgstr "" "les actions créées jusqu'à présent sont sans état (stateless), c-à-" "d. qu'elles ne prennent pas ni ne dépendent pas d'un état définit par " "l'action elle-même. Par contre, les actions que nous avons besoin de créer " "pour le SousMenu Choix sont avec état (stateful). Voici un exemple " "de création d'une action stateful :" #. (itstool) path: section/code #: C/menubar.py.page:136 #, no-wrap msgid "" "\n" "shape_action = Gio.SimpleAction.new_stateful(\"shape\", GLib.VariantType.new('s'), GLib.Variant.new_string('line'))" msgstr "" "\n" "shape_action = Gio.SimpleAction.new_stateful(\"shape\", GLib.VariantType.new('s'), GLib.Variant.new_string('line'))" #. (itstool) path: section/p #: C/menubar.py.page:139 msgid "" "where the variables of the method are: name, parameter type (in this case, a " "string - see here for a complete list of character meanings), " "initial state (in this case, 'line' - in case of a True boolean " "value it should be Glib.Variant.new_boolean(True), and so on, " "see here for a complete list)" msgstr "" "où les variables de la méthode sont : le nom, le type de paramètre (dans ce " "cas, une chaîne - voyez ici pour une liste complète des " "significations des caractères), l'état initial (dans ce cas, « line » - dans " "le cas d'une valeur boléenne True, il devrait être Glib." "Variant.new_boolean(True) et ainsi de suite. Voyez ici " "pour consulter une liste complète)" #. (itstool) path: section/p #: C/menubar.py.page:141 msgid "" "After creating the stateful SimpleAction we connect it to the callback " "function and we add it to the window (or the application, if it is the " "case), as before:" msgstr "" "Après avoir créé l'ActionSimple stateful, nous la connectons à la fonction " "de rappel et nous l'ajoutons à la fenêtre (ou à l'application selon le cas) " "comme auparavant :" #. (itstool) path: section/code #: C/menubar.py.page:143 #, no-wrap msgid "" "\n" "shape_action.connect(\"activate\", self.shape_callback)\n" "self.add_action(shape_action)" msgstr "" "\n" "shape_action.connect(\"activate\", self.shape_callback)\n" "self.add_action(shape_action)" #. (itstool) path: section/title #: C/menubar.py.page:150 C/menubar.vala.page:154 msgid "Complete XML UI file for this example" msgstr "Fichier XML complet de l'interface utilisateur de cet exemple" #. (itstool) path: section/code #: C/menubar.py.page:151 C/menubar.vala.page:155 #, no-wrap msgid "" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<interface>\n" " <menu id=\"menubar\">\n" " <submenu>\n" " <attribute name=\"label\">File</attribute>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">New</attribute>\n" " <attribute name=\"action\">app.new</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Quit</attribute>\n" " <attribute name=\"action\">app.quit</attribute>\n" " </item>\n" " </section>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Edit</attribute>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">Copy</attribute>\n" " <attribute name=\"action\">win.copy</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Paste</attribute>\n" " <attribute name=\"action\">win.paste</attribute>\n" " </item>\n" " </section>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Choices</attribute>\n" " <submenu>\n" " <attribute name=\"label\">Shapes</attribute>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">Line</attribute>\n" " <attribute name=\"action\">win.shape</attribute>\n" " <attribute name=\"target\">line</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Triangle</attribute>\n" " <attribute name=\"action\">win.shape</attribute>\n" " <attribute name=\"target\">triangle</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Square</attribute>\n" " <attribute name=\"action\">win.shape</attribute>\n" " <attribute name=\"target\">square</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Polygon</attribute>\n" " <attribute name=\"action\">win.shape</attribute>\n" " <attribute name=\"target\">polygon</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Circle</attribute>\n" " <attribute name=\"action\">win.shape</attribute>\n" " <attribute name=\"target\">circle</attribute>\n" " </item>\n" " </section>\n" " </submenu>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">On</attribute>\n" " <attribute name=\"action\">app.state</attribute>\n" " <attribute name=\"target\">on</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Off</attribute>\n" " <attribute name=\"action\">app.state</attribute>\n" " <attribute name=\"target\">off</attribute>\n" " </item>\n" " </section>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">Awesome</attribute>\n" " <attribute name=\"action\">app.awesome</attribute>\n" " </item>\n" " </section>\n" " </submenu>\n" " <submenu>\n" " <attribute name=\"label\">Help</attribute>\n" " <section>\n" " <item>\n" " <attribute name=\"label\">About</attribute>\n" " <attribute name=\"action\">win.about</attribute>\n" " </item>\n" " </section>\n" " </submenu>\n" " </menu>\n" " <menu id=\"appmenu\">\n" " <section>\n" " <item>\n" " <attribute name=\"label\">New</attribute>\n" " <attribute name=\"action\">app.new</attribute>\n" " </item>\n" " <item>\n" " <attribute name=\"label\">Quit</attribute>\n" " <attribute name=\"action\">app.quit</attribute>\n" " </item>\n" " </section>\n" " </menu>\n" "</interface>\n" msgstr "" #. (itstool) path: section/title #: C/menubar.py.page:155 msgid "Complete Python file for this example" msgstr "Fichier Python complet de cet exemple" #. (itstool) path: section/code #: C/menubar.py.page:156 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import GLib\n" "from gi.repository import Gio\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"MenuBar Example\", application=app)\n" " self.set_default_size(200, 200)\n" "\n" " # action without a state created (name, parameter type)\n" " copy_action = Gio.SimpleAction.new(\"copy\", None)\n" " # connected with the callback function\n" " copy_action.connect(\"activate\", self.copy_callback)\n" " # added to the window\n" " self.add_action(copy_action)\n" "\n" " # action without a state created (name, parameter type)\n" " paste_action = Gio.SimpleAction.new(\"paste\", None)\n" " # connected with the callback function\n" " paste_action.connect(\"activate\", self.paste_callback)\n" " # added to the window\n" " self.add_action(paste_action)\n" "\n" " # action with a state created (name, parameter type, initial state)\n" " shape_action = Gio.SimpleAction.new_stateful(\n" " \"shape\", GLib.VariantType.new('s'), GLib.Variant.new_string('line'))\n" " # connected to the callback function\n" " shape_action.connect(\"activate\", self.shape_callback)\n" " # added to the window\n" " self.add_action(shape_action)\n" "\n" " # action with a state created\n" " about_action = Gio.SimpleAction.new(\"about\", None)\n" " # action connected to the callback function\n" " about_action.connect(\"activate\", self.about_callback)\n" " # action added to the application\n" " self.add_action(about_action)\n" "\n" " # callback function for copy_action\n" " def copy_callback(self, action, parameter):\n" " print(\"\\\"Copy\\\" activated\")\n" "\n" " # callback function for paste_action\n" " def paste_callback(self, action, parameter):\n" " print(\"\\\"Paste\\\" activated\")\n" "\n" " # callback function for shape_action\n" " def shape_callback(self, action, parameter):\n" " print(\"Shape is set to\", parameter.get_string())\n" " # Note that we set the state of the action!\n" " action.set_state(parameter)\n" "\n" " # callback function for about (see the AboutDialog example)\n" " def about_callback(self, action, parameter):\n" " # a Gtk.AboutDialog\n" " aboutdialog = Gtk.AboutDialog()\n" "\n" " # lists of authors and documenters (will be used later)\n" " authors = [\"GNOME Documentation Team\"]\n" " documenters = [\"GNOME Documentation Team\"]\n" "\n" " # we fill in the aboutdialog\n" " aboutdialog.set_program_name(\"MenuBar Example\")\n" " aboutdialog.set_copyright(\n" " \"Copyright \\xc2\\xa9 2012 GNOME Documentation Team\")\n" " aboutdialog.set_authors(authors)\n" " aboutdialog.set_documenters(documenters)\n" " aboutdialog.set_website(\"http://developer.gnome.org\")\n" " aboutdialog.set_website_label(\"GNOME Developer Website\")\n" "\n" " # to close the aboutdialog when \"close\" is clicked we connect the\n" " # \"response\" signal to on_close\n" " aboutdialog.connect(\"response\", self.on_close)\n" " # show the aboutdialog\n" " aboutdialog.show()\n" "\n" " # a callback function to destroy the aboutdialog\n" " def on_close(self, action, parameter):\n" " action.destroy()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " # FIRST THING TO DO: do_startup()\n" " Gtk.Application.do_startup(self)\n" "\n" " # action without a state created\n" " new_action = Gio.SimpleAction.new(\"new\", None)\n" " # action connected to the callback function\n" " new_action.connect(\"activate\", self.new_callback)\n" " # action added to the application\n" " self.add_action(new_action)\n" "\n" " # action without a state created\n" " quit_action = Gio.SimpleAction.new(\"quit\", None)\n" " # action connected to the callback function\n" " quit_action.connect(\"activate\", self.quit_callback)\n" " # action added to the application\n" " self.add_action(quit_action)\n" "\n" " # action with a state created\n" " state_action = Gio.SimpleAction.new_stateful(\n" " \"state\", GLib.VariantType.new('s'), GLib.Variant.new_string('off'))\n" " # action connected to the callback function\n" " state_action.connect(\"activate\", self.state_callback)\n" " # action added to the application\n" " self.add_action(state_action)\n" "\n" " # action with a state created\n" " awesome_action = Gio.SimpleAction.new_stateful(\n" " \"awesome\", None, GLib.Variant.new_boolean(False))\n" " # action connected to the callback function\n" " awesome_action.connect(\"activate\", self.awesome_callback)\n" " # action added to the application\n" " self.add_action(awesome_action)\n" "\n" " # a builder to add the UI designed with Glade to the grid:\n" " builder = Gtk.Builder()\n" " # get the file (if it is there)\n" " try:\n" " builder.add_from_file(\"menubar.ui\")\n" " except:\n" " print(\"file not found\")\n" " sys.exit()\n" "\n" " # we use the method Gtk.Application.set_menubar(menubar) to add the menubar\n" " # and the menu to the application (Note: NOT the window!)\n" " self.set_menubar(builder.get_object(\"menubar\"))\n" " self.set_app_menu(builder.get_object(\"appmenu\"))\n" "\n" " # callback function for new\n" " def new_callback(self, action, parameter):\n" " print(\"You clicked \\\"New\\\"\")\n" "\n" " # callback function for quit\n" " def quit_callback(self, action, parameter):\n" " print(\"You clicked \\\"Quit\\\"\")\n" " sys.exit()\n" "\n" " # callback function for state\n" " def state_callback(self, action, parameter):\n" " print(\"State is set to\", parameter.get_string())\n" " action.set_state(parameter)\n" "\n" " # callback function for awesome\n" " def awesome_callback(self, action, parameter):\n" " action.set_state(GLib.Variant.new_boolean(not action.get_state()))\n" " if action.get_state().get_boolean() is True:\n" " print(\"You checked \\\"Awesome\\\"\")\n" " else:\n" " print(\"You unchecked \\\"Awesome\\\"\")\n" "\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/menubar.py.page:159 msgid "Mnemonics and Accelerators" msgstr "Mnémoniques et raccourcis clavier" #. (itstool) path: section/p #: C/menubar.py.page:160 C/menubar.vala.page:162 msgid "" "Labels may contain mnemonics. Mnemonics are underlined characters in the " "label, used for keyboard navigation. Mnemonics are created by placing an " "underscore before the mnemonic character. For example \"_File\" instead of " "just \"File\" in the menubar.ui label attribute." msgstr "" "Les étiquettes peuvent contenir des mnémoniques. Les mnémoniques sont les " "caractères soulignés dans l'étiquette et sont utilisés pour se déplacer à " "l'aide des touches du clavier. Par exemple, « _Fichier » au lieu de " "seulement « Fichier » dans l'attribut barredemenu.ui de l'étiquette." #. (itstool) path: section/p #: C/menubar.py.page:161 C/menubar.vala.page:163 msgid "" "The mnemonics are visible when you press the Alt key. Pressing " "AltF will open the File " "menu." msgstr "" "Vous pouvez voir les mnémoniques en appuyant sur la touche Alt. " "Pour ouvrir le menu Fichier, appuyez sur la combinaison de " "touches AltF." #. (itstool) path: section/p #: C/menubar.py.page:163 C/menubar.vala.page:168 msgid "" "Accelerators can be explicitly added in the UI definitions. For example, it " "is common to be able to quit an application by pressing CtrlQ or to save a file by pressing CtrlS. To add an accelerator to the UI definition, you " "simply need add an \"accel\" attribute to the item." msgstr "" "Des raccourcis clavier peuvent être explicitement ajoutés aux définitions de " "l'interface utilisateur. Il est par exemple usuel de pouvoir quitter une " "application en appuyant sur la combinaison CtrlQ ou enregistrer un fichier avec CtrlS. Pour ajouter un raccourci clavier à la définition de " "l'interface, ajoutez simplement un attribut « accel » à l'élément." #. (itstool) path: section/p #: C/menubar.py.page:164 C/menubar.vala.page:169 #, fuzzy #| msgid "" #| "<Primary>q]]> will create the CtrlQ sequence when added to the Quit label item. Here, " #| "\"Primary\" refers to the Ctrl key on a PC or the " #| "key on a Mac." msgid "" "<attribute name=\"accel\">&lt;" "Primary&gt;q</attribute> will create the CtrlQ sequence when added to the Quit label " "item. Here, \"Primary\" refers to the Ctrl key on a PC or the " " key on a Mac." msgstr "" "Le code <" "Primary>q]]> va créer la combinaison " "CtrlQ quand il est ajouté à l'élément " "de l'étiquette Quit. Ici, \"Primary\" représente la touche " "Ctrl sur un PC ou la touche sur un Mac." #. (itstool) path: section/code #: C/menubar.py.page:166 C/menubar.vala.page:171 #, no-wrap msgid "" "\n" "<item>\n" " <attribute name=\"label\">_Quit</attribute>\n" " <attribute name=\"action\">app.quit</attribute>\n" " <attribute name=\"accel\">&lt;Primary&gt;q</attribute>\n" "</item>" msgstr "" #. (itstool) path: section/title #: C/menubar.py.page:174 C/menubar.vala.page:179 msgid "Translatable strings" msgstr "Chaînes de caractères traduisibles" #. (itstool) path: section/p #: C/menubar.py.page:175 C/menubar.vala.page:180 #, fuzzy #| msgid "" #| "Since GNOME applications are being translated into many languages, it is important that " #| "the strings in your application are translable. To make a label " #| "translatable, simple set translatable=\"yes\":" msgid "" "Since GNOME applications are being translated into many languages, it is important that the " "strings in your application are translatable. To make a label translatable, " "simple set translatable=\"yes\":" msgstr "" "Étant donné que les applications GNOME sont traduites dans beaucoup de langues, il est " "important que les chaînes de votre application soient traduisibles. Pour " "qu'une étiquette soit traduisible, définissez translatable=\"yes\" :" #. (itstool) path: section/code #: C/menubar.py.page:179 #, no-wrap msgid "<attribute name=\"label\" translatable=\"yes\">Quit</attribute>" msgstr "" #. (itstool) path: item/p #: C/menubar.py.page:186 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GSimpleAction" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/menubar.py.page:187 C/toolbar_builder.py.page:197 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkBuilder" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/menubar.vala.page:8 #, fuzzy #| msgid "MenuBar" msgctxt "text" msgid "MenuBar (Vala)" msgstr "BarreDeMenu" #. (itstool) path: item/p #: C/menubar.vala.page:40 msgid "" "Now we will create the .vala file and use GtkBuilder to import the " "menubar.ui we just created." msgstr "" "Créons maintenant le fichier .vala et utilisons GtkBuilder pour importer le " "fichier barredemenu.ui que nous venons de faire." #. (itstool) path: section/code #: C/menubar.vala.page:44 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"MenuBar Example\");\n" "\t\tthis.set_default_size (200, 200);\n" "\t}\n" "}\n" "\n" "class MyApplication: Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\t/* Setup menubar. */\n" "\t\t/* Get the UI file. */\n" "\t\tvar builder = new Gtk.Builder ();\n" "\t\ttry {\n" "\t\t\tbuilder.add_from_file (\"menubar_basis.ui\");\n" "\t\t/* Handle the exception. */\n" "\t\t} catch (Error e) {\n" "\t\t\terror (\"Unable to load file: %s\", e.message);\n" "\t\t}\n" "\n" "\t\t/* Get the menubar from the builder. */\n" "\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/menubar.vala.page:45 msgid "" "Now, compile the vala file, and run it. The application should look like the " "picture at the top of this page." msgstr "" "Maintenant, compilez le fichier vala et lancez-le. L'application devrait " "ressembler à l'image en haut de cette page." #. (itstool) path: section/p #: C/menubar.vala.page:80 msgid "" "Following this pattern, you can now add a Copy and a " "Paste item to the Edit submenu, and an " "About item to the Help submenu. We will hold off " "on adding items to the Choices submenu until further in the tutorial." msgstr "" "En suivant ce modèle, ajoutez les éléments Copier et " "Coller au SousMenu Édition et un élément À " "propos au SousMenu Aide. Nous allons attendre pour " "ajouter des éléments au SousMenu Choix d'être un peu plus loin dans ce guide." #. (itstool) path: note/p #: C/menubar.vala.page:82 msgid "" "You do not need to recompile the vala program if you only made changes to " "the UI file. Just run your previously compiled application, and the UI " "changes will be reflected." msgstr "" "Il es inutile de recompiler le programme vala si vous n'avez apporté des " "modifications qu'au fichier barredemenu.ui. Éxecutez seulement votre " "application compilée précédemment et les modifications dans l'interface " "utilisateur vont être prises en compte." #. (itstool) path: section/p #: C/menubar.vala.page:88 msgid "This is a three step process." msgstr "Ceci est un processus en trois étapes." #. (itstool) path: item/p #: C/menubar.vala.page:90 msgid "" "First we create the ActionEntry array in the MyApplication class. An " "ActionEntry consists of:" msgstr "" "Premièrement, créons la matrice ActionEntry dans la classe MyApplication. " "Une ActionEntry se compose :" #. (itstool) path: item/p #: C/menubar.vala.page:93 msgid "the \"action name\" (mandatory)" msgstr "du nom « action name » (obligatoire)" #. (itstool) path: item/p #: C/menubar.vala.page:94 msgid "" "the callback function to connect to the \"activate\" signal of the action " "(if applicable)" msgstr "" "de la fonction de rappel pour connecter le signal « activate » à l'action " "(si applicable)" #. (itstool) path: item/p #: C/menubar.vala.page:95 msgid "" "the type of the parameter that must be passed to the activate function for " "the action (if applicable)" msgstr "" "du type de paramètre qui doit être transmis à la fonction activate pour " "l'action (si applicable)" #. (itstool) path: item/p #: C/menubar.vala.page:96 msgid "the initial state for this action (if applicable)" msgstr "de l'état initial de cette action (si applicable)" #. (itstool) path: item/p #: C/menubar.vala.page:97 msgid "the callback to connect to \"change-state\" signal (if applicable)" msgstr "du rappel à connecter au signal « change-state » (si applicable)" #. (itstool) path: item/code #: C/menubar.vala.page:99 #, no-wrap msgid "" "\n" "const ActionEntry[] actions = {\n" " { \"new\", new_cb }, // {\"action name\", callback_function}\n" " { \"quit\", quit_cb }\n" "};" msgstr "" "\n" "const ActionEntry[] actions = {\n" " { \"new\", new_cb }, // {\"action name\", callback_function}\n" " { \"quit\", quit_cb }\n" "};" #. (itstool) path: item/p #: C/menubar.vala.page:106 msgid "Second, we create the callback functions the actions are connected to." msgstr "" "Deuxièmement, nous créons les fonctions de rappel qui sont connectées aux " "actions." #. (itstool) path: item/code #: C/menubar.vala.page:107 #, fuzzy, no-wrap #| msgid "" #| "\n" #| "void new_cb (SimpleAction action, Variant? parameter) {\n" #| " print (\"You clicked \\\"New\\\"\\n\");\n" #| " //new MyWindow (this).show ();\n" #| "}\n" #| "\n" #| "void quit_cb (SimpleAction action, Variant? parameter) {\n" #| " print (\"You clicked \\\"Quit\\\"\\n\");\n" #| " //this.quit (); **Bug #674090**\n" #| "}" msgid "" "\n" "void new_cb (SimpleAction action, Variant? parameter) {\n" " print (\"You clicked \\\"New\\\"\\n\");\n" " //new MyWindow (this).show ();\n" "}\n" "\n" "void quit_cb (SimpleAction action, Variant? parameter) {\n" " print (\"You clicked \\\"Quit\\\"\\n\");\n" " this.quit ();\n" "}" msgstr "" "\n" "void new_cb (SimpleAction action, Variant? parameter) {\n" " print (\"You clicked \\\"New\\\"\\n\");\n" " //new MyWindow (this).show ();\n" "}\n" "\n" "void quit_cb (SimpleAction action, Variant? parameter) {\n" " print (\"You clicked \\\"Quit\\\"\\n\");\n" " //this.quit (); **Bug #674090**\n" "}" #. (itstool) path: item/p #: C/menubar.vala.page:118 msgid "" "And lastly, we connect the menu items to the actions in the XML file by " "adding the \"action\" attribute:" msgstr "" "Et troisièmement, nous connectons les éléments du menu aux actions dans le " "fichier XML en y ajoutant l'attribut « action » :" #. (itstool) path: item/code #: C/menubar.vala.page:119 #, no-wrap msgid "" "\n" "<item>\n" " <attribute name=\"label\">New</attribute>\n" " <attribute name=\"action\">app.new</attribute>\n" "</item>\n" "<item>\n" " <attribute name=\"label\">Quit</attribute>\n" " <attribute name=\"action\">app.quit</attribute>\n" "</item>" msgstr "" #. (itstool) path: section/p #: C/menubar.vala.page:135 msgid "" "Lines 30 to 80 inclusive of the " "demonstrate the XML code used to create the UI for Choices menu." msgstr "" "Les lignes 30 à 80 inclues de " "décrivent le code XML utilisé pour créer le menu Choix de " "l'interface utilisateur." #. (itstool) path: section/p #: C/menubar.vala.page:146 #, fuzzy #| msgid "" #| "The complete example files contain both application actions and window " #| "applications. The window actions are the ones usually included in the " #| "application menu also. It is not good " #| "practice to include window actions in the applcation menu. For " #| "demonstration purposes, the complete example files which follow include " #| "XML in the UI file which creates the application menu which includes a " #| "\"New\" and \"Open\" item, and these are hooked up to the same actions as " #| "the menubar items of the same name." msgid "" "The complete example files contain both application actions and window " "applications. The window actions are the ones usually included in the application menu also. It is not good practice to " "include window actions in the application menu. For demonstration purposes, " "the complete example files which follow include XML in the UI file which " "creates the application menu which includes a \"New\" and \"Open\" item, and " "these are hooked up to the same actions as the menubar items of the same " "name." msgstr "" "Les fichiers complets de l'exemple contiennent à la fois les actions qui " "gèrent l'application et celles qui gèrent la fenêtre. Les actions gérant la " "fenêtre sont aussi celles habituellement inclues dans application menu. Ce n'est pas une bonne façon de faire que " "d'inclure les actions gérant la fenêtre dans le menu de l'application. " "Néanmoins, pour les besoins de cette démonstration, les fichiers exemple " "complets suivants incluent le code XML dans le fichier de l'interface " "utilisateur. Celui-ci crée le menu de l'application en y incluant les " "éléments « new » et « open » et les lie aux mêmes actions que celles " "attribuées aux éléments de la BarreDeMenu ayant le même nom." #. (itstool) path: section/title #: C/menubar.vala.page:157 msgid "Complete Vala file for this example" msgstr "Fichier vala complet de cet exemple" #. (itstool) path: section/code #: C/menubar.vala.page:158 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* Callback functions for the window actions. */\n" "\tvoid copy_cb (SimpleAction action, Variant? parameter) {\n" "\t\tprint (\"\\\"Copy\\\" activated\\n\");\n" "\t}\n" "\n" "\tvoid paste_cb (SimpleAction action, Variant? parameter) {\n" "\t\tprint (\"\\\"Paste\\\" activated\\n\");\n" "\t}\n" "\n" "\tvoid shape_cb (SimpleAction action, Variant? parameter) {\n" "\t\tprint (\"shape is set to %s\\n\", parameter.get_string(null));\n" "\t\taction.set_state (parameter);\n" "\t}\n" "\n" "\t/* Create the window actions. */\n" "\tconst ActionEntry[] actions = {\n" "\t\t/*{ \"action name\", cb to connect to \"activate\" signal, parameter type,\n" "\t\t initial state, cb to connect to \"change-state\" signal } */\n" "\t\t{ \"copy\", copy_cb },\n" "\t\t{ \"paste\", paste_cb },\n" "\t\t{ \"shape\", shape_cb, \"s\", \"'line'\"}\n" "\t};\n" "\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"MenuBar Example\");\n" "\t\tthis.set_default_size (200, 200);\n" "\n" "\t\t/* Setup window actions. */\n" "\t\tthis.add_action_entries (actions, this);\n" "\t}\n" "}\n" "\n" "class MyApplication: Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "\t/* Callback functions for the application actions. */\n" "\tvoid new_cb (SimpleAction action, Variant? parameter) {\n" "\t\t//new MyWindow (this).show ();\n" "\t\tprint (\"You clicked \\\"New\\\"\\n\");\n" "\t}\n" "\n" "\tvoid quit_cb (SimpleAction action, Variant? parameter) {\n" "\t\tprint (\"You clicked \\\"Quit\\\"\\n\");\n" "\t\tthis.quit ();\n" "\t}\n" "\n" "\tvoid awesome_cb (SimpleAction action, Variant? parameter) {\n" "\t\tvar active = action.get_state ().get_boolean ();\n" "\t\taction.set_state (new Variant.boolean (!active));\n" "\t\tif (active)\n" "\t\t\tprint (\"You unchecked \\\"Awesome\\\"\\n\");\n" "\t\telse\n" "\t\t\tprint (\"You checked \\\"Awesome\\\"\\n\");\n" "\t}\n" "\n" "\tvoid state_cb (SimpleAction action, Variant? parameter) {\n" "\t\tprint (\"state is set to %s\\n\", parameter.get_string(null));\n" "\t\taction.set_state (parameter);\n" "\t}\n" "\n" "\t/* Create the application actions. */\n" "\tconst ActionEntry[] actions = {\n" "\t\t{ \"new\", new_cb },\n" "\t\t{ \"quit\", quit_cb },\n" "\t\t{ \"awesome\", awesome_cb, null, \"false\" },\n" "\t\t{ \"state\", state_cb, \"s\", \"'off'\" }\n" "\t};\n" "\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\t/* Setup application actions. */\n" "\t\tthis.add_action_entries (actions, this);\n" "\n" "\t\t/* Setup menubar and app_menu. */\n" "\t\t/* Get the UI file. */\n" "\t\tvar builder = new Gtk.Builder ();\n" "\t\ttry {\n" "\t\t\tbuilder.add_from_file (\"menubar.ui\");\n" "\t\t} catch (Error e) {\n" "\t\t\terror (\"Unable to load file: %s\", e.message);\n" "\t\t}\n" "\n" "\t\t/* Get the menubar from the builder. */\n" "\t\tthis.menubar = builder.get_object (\"menubar\") as MenuModel;\n" "\n" "\t\t/* Get the app_menu from the builder. */\n" "\t\tthis.app_menu = builder.get_object (\"appmenu\") as MenuModel;\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: section/title #: C/menubar.vala.page:161 msgid "Mnemonics" msgstr "Mnémoniques" #. (itstool) path: section/title #: C/menubar.vala.page:167 msgid "Accelerators" msgstr "Raccourcis clavier" #. (itstool) path: section/p #: C/menubar.vala.page:183 msgid "" "<attribute name=\"label\" translatable=" "\"yes\">Quit</attribute>" msgstr "" #. (itstool) path: item/p #: C/menubar.vala.page:192 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Glib." "ActionEntry" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/menubar.vala.page:193 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Builder" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/menubutton.c.page:8 C/menubutton.py.page:8 #, fuzzy #| msgid "MenuButton" msgctxt "text" msgid "MenuButton" msgstr "MenuButton" #. (itstool) path: info/desc #: C/menubutton.c.page:18 C/menubutton.js.page:18 C/menubutton.py.page:25 #: C/menubutton.vala.page:18 msgid "A widget that shows a menu when clicked on" msgstr "Un élément graphique qui affiche un menu quand il est cliqué" #. (itstool) path: page/title #: C/menubutton.c.page:21 C/menubutton.js.page:21 C/menubutton.py.page:28 #: C/menubutton.vala.page:21 msgid "MenuButton" msgstr "MenuButton" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/menubutton.c.page:22 C/menubutton.js.page:22 C/menubutton.py.page:29 #: C/menubutton.vala.page:22 msgctxt "_" msgid "" "external ref='media/menubutton.png' md5='99eedc5ef2d6c56d32ca9ae7f3f3320f'" msgstr "" #. (itstool) path: page/p #: C/menubutton.c.page:23 C/menubutton.js.page:23 C/menubutton.py.page:30 #: C/menubutton.vala.page:23 msgid "" "The GtkMenuButton widget is used to display a menu when clicked on. This " "menu can be provided either as a GtkMenu, or an abstract GMenuModel. The " "GtkMenuButton widget can hold any valid child widget. That is, it can hold " "almost any other standard GtkWidget. The most commonly used child is the " "provided GtkArrow." msgstr "" "L'élément graphique GtkMenuButton sert à afficher un menu quand il est " "cliqué. Le menu peut provenir soit d'un GtkMenu, soit d'un GMenuModel " "abstrait. L'élément graphique GtkMenuButton peut contenir n'importe quel " "élément graphique enfant valide. Ceci dit, il peut contenir pratiquement " "n'importe quel autre GtkWidget standard. L'enfant le plus souvent utilisé " "est la flèche GtkArrow fournie." #. (itstool) path: note/p #: C/menubutton.c.page:25 C/menubutton.js.page:27 #, fuzzy #| msgid "You need to be running GNOME 3.6 for the MenuButton to work." msgid "You need to be running GNOME 3.6 or later for the MenuButton to work." msgstr "" "Pour que le MenuButton fonctionne, il vous faut avoir installé GNOME 3.6" #. (itstool) path: section/code #: C/menubutton.c.page:31 #, no-wrap msgid "" "#include <gtk/gtk.h>\n" "\n" "/* Callback function for the undo action */\n" "static void\n" "about_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"About\\\"\\n\");\n" "}\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GMenu *submenu;\n" " GtkWidget *grid;\n" " GMenu *menumodel;\n" " GtkWidget *window;\n" " GtkWidget *menubutton;\n" " GSimpleAction *about_action;\n" "\n" " window = gtk_application_window_new (app);\n" " grid = gtk_grid_new ();\n" "\n" " gtk_window_set_title (GTK_WINDOW (window), \"MenuButton Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 600, 400);\n" "\n" " menubutton = gtk_menu_button_new ();\n" " gtk_widget_set_size_request (menubutton, 80, 35);\n" "\n" " gtk_grid_attach (GTK_GRID (grid), menubutton, 0, 0, 1, 1);\n" " gtk_container_add (GTK_CONTAINER (window), grid);\n" "\n" " menumodel = g_menu_new ();\n" " g_menu_append (menumodel, \"New\", \"app.new\");\n" " g_menu_append (menumodel, \"About\", \"win.about\");\n" "\n" " submenu = g_menu_new ();\n" " g_menu_append_submenu (menumodel, \"Other\", G_MENU_MODEL (submenu));\n" " g_menu_append (submenu, \"Quit\", \"app.quit\");\n" " gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (menubutton), G_MENU_MODEL (menumodel));\n" "\n" " about_action = g_simple_action_new (\"about\", NULL);\n" " g_signal_connect (about_action, \"activate\", G_CALLBACK (about_callback),\n" " GTK_WINDOW (window));\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (about_action));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "static void\n" "new_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"New\\\"\\n\");\n" "}\n" "\n" "static void\n" "quit_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GApplication *application = user_data;\n" "\n" " g_application_quit (application);\n" "}\n" "\n" "static void\n" "startup (GApplication *app,\n" " gpointer user_data)\n" "{\n" " GSimpleAction *new_action;\n" " GSimpleAction *quit_action;\n" "\n" " new_action = g_simple_action_new (\"new\", NULL);\n" " g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n" "\n" " quit_action = g_simple_action_new (\"quit\", NULL);\n" " g_signal_connect (quit_action, \"activate\", G_CALLBACK (quit_callback), app);\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n" "}\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/menubutton.c.page:38 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkMenuButton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/menubutton.c.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkMenu" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/menubutton.c.page:40 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GMenuModel" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/menubutton.c.page:41 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkArrow" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/menubutton.js.page:8 #, fuzzy #| msgid "MenuButton" msgctxt "text" msgid "MenuButton (JavaScript)" msgstr "MenuButton" #. (itstool) path: credit/name #: C/menubutton.js.page:13 msgid "Anna Zacchi" msgstr "Anna Zacchi" #. (itstool) path: page/code #: C/menubutton.js.page:28 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class Application {\n" "\n" " //create the application\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.myapp',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " //connect to 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " //create the UI (in this case it's just the ApplicationWindow)\n" " _buildUI() {\n" " this._window = new Gtk.ApplicationWindow({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"MenuButton Example\" });\n" " this._window.set_default_size(600, 400);\n" " this.grid = new Gtk.Grid();\n" " this._window.add(this.grid);\n" "\n" "\n" " this._menuButton = new Gtk.MenuButton();\n" " this.grid.attach(this._menuButton, 0, 0, 1, 1 );\n" " this.menu = Gtk.Menu.new_from_model(this.menuModel);\n" "\n" " this.menu.show();\n" " this._menuButton.set_menu_model (this.menuModel);\n" " this._menuButton.set_size_request(80, 35);\n" " this._menuButton.show();\n" "\n" " this._window.show_all();\n" " }\n" "\n" " _showNew() {\n" " print(\"You clicked \\\"New\\\"\");\n" " }\n" "\n" " _showAbout() {\n" " print(\"You clicked \\\"About\\\"\");\n" " }\n" "\n" " //create the menu items and connect the signals to the callback functions.\n" " _initMenus() {\n" " let newAction = new Gio.SimpleAction({ name: 'new' });\n" " newAction.connect('activate', () => { this._showNew(); });\n" " this.application.add_action(newAction);\n" "\n" " let aboutAction = new Gio.SimpleAction({ name: 'about' });\n" " aboutAction.connect('activate', () => { this._showAbout(); });\n" " this.application.add_action(aboutAction);\n" "\n" " let quitAction = new Gio.SimpleAction({ name: 'quit' });\n" " quitAction.connect('activate', () => { this._window.destroy(); });\n" " this.application.add_action(quitAction);\n" "\n" " this.menuModel = new Gio.Menu();\n" "\n" " this.menuItemNew = Gio.MenuItem.new(\"New\", 'app.new');\n" " this.menuItemAbout = Gio.MenuItem.new(\"About\", 'app.about');\n" " this.fileMenuItem = Gio.MenuItem.new(\"Other\", null);\n" "\n" " this.menuModel.append_item(this.menuItemNew);\n" " this.menuModel.append_item(this.menuItemAbout);\n" "\n" " //submenu\n" " this.subMenu = new Gio.Menu();\n" " this.fileMenuItem.set_submenu(this.subMenu);\n" " this.menuItemQuit = Gio.MenuItem.new(\"Quit\", 'app.quit');\n" " this.subMenu.append_item(this.menuItemQuit);\n" " this.menuModel.append_item(this.fileMenuItem);\n" " }\n" "\n" " //callback function for 'activate' signal\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " //callback function for 'startup' signal\n" " _onStartup() {\n" " //You must call _initMenus() before calling _buildUI().\n" " this._initMenus();\n" " this._buildUI();\n" " }\n" "};\n" "\n" "//run the application\n" "let app = new Application();\n" "app.application.run(ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/menubutton.js.page:33 C/menubutton.vala.page:33 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "MenuButton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: note/p #: C/menubutton.py.page:32 C/menubutton.vala.page:27 msgid "You need to be running GNOME 3.6 for the MenuButton to work." msgstr "" "Pour que le MenuButton fonctionne, il vous faut avoir installé GNOME 3.6" #. (itstool) path: section/code #: C/menubutton.py.page:38 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gio\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Menubutton Example\", application=app)\n" " self.set_default_size(600, 400)\n" "\n" " grid = Gtk.Grid()\n" "\n" " # a menubutton\n" " menubutton = Gtk.MenuButton()\n" " menubutton.set_size_request(80, 35)\n" "\n" " grid.attach(menubutton, 0, 0, 1, 1)\n" "\n" " # a menu with two actions\n" " menumodel = Gio.Menu()\n" " menumodel.append(\"New\", \"app.new\")\n" " menumodel.append(\"About\", \"win.about\")\n" "\n" " # a submenu with one action for the menu\n" " submenu = Gio.Menu()\n" " submenu.append(\"Quit\", \"app.quit\")\n" " menumodel.append_submenu(\"Other\", submenu)\n" "\n" " # the menu is set as the menu of the menubutton\n" " menubutton.set_menu_model(menumodel)\n" "\n" " # the action related to the window (about)\n" " about_action = Gio.SimpleAction.new(\"about\", None)\n" " about_action.connect(\"activate\", self.about_callback)\n" " self.add_action(about_action)\n" "\n" " self.add(grid)\n" "\n" " # callback for \"about\"\n" " def about_callback(self, action, parameter):\n" " print(\"You clicked \\\"About\\\"\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" " # the actions related to the application\n" " new_action = Gio.SimpleAction.new(\"new\", None)\n" " new_action.connect(\"activate\", self.new_callback)\n" " self.add_action(new_action)\n" "\n" " quit_action = Gio.SimpleAction.new(\"quit\", None)\n" " quit_action.connect(\"activate\", self.quit_callback)\n" " self.add_action(quit_action)\n" "\n" " # callback functions for the actions related to the application\n" " def new_callback(self, action, parameter):\n" " print(\"You clicked \\\"New\\\"\")\n" "\n" " def quit_callback(self, action, parameter):\n" " print(\"You clicked \\\"Quit\\\"\")\n" " self.quit()\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/menubutton.py.page:42 #, fuzzy #| msgid "Useful methods for a Button widget" msgid "Useful methods for a MenuButton widget" msgstr "Méthode utiles pour un élément graphique Bouton" #. (itstool) path: section/p #: C/menubutton.py.page:43 msgid "" "In line 33 the signal \"activate\" from the action " "about_action is connected to the callback function " "about_callback() using action." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: section/p #: C/menubutton.py.page:45 msgid "" "The positioning of the menu is determined by the \"direction\" property of " "the menu button and the \"halign\" or \"valign\" properties of the menu. For " "example, when the direction is Gtk.ArrowType.DOWN (other " "option: UP) and the horizontal alignment is Gtk.Align." "START (other options: CENTER and END), the " "menu will be positioned below the button, with the starting edge (depending " "on the text direction) of the menu aligned with the starting edge of the " "button. If there is not enough space below the button, the menu is popped up " "above the button instead. If the alignment would move part of the menu " "offscreen, it is 'pushed in'." msgstr "" #. (itstool) path: section/p #: C/menubutton.py.page:47 msgid "" "In the case of vertical alignment, the possible ArrowType directions are " "LEFT and RIGHT and the vertical alignment is again " "START, CENTER or END." msgstr "" #. (itstool) path: section/p #: C/menubutton.py.page:49 #, fuzzy #| msgid "" #| "get_text() and set_text(\"some text\") can be " #| "used to get and set the content for the entry." msgid "" "set_align_widget(alignment) and set_direction(direction) can be used to set these properties." msgstr "" "Les fonctions get_text() et set_text(\"some text\") peuvent être utilisées pour obtenir et définir le contenu de l'entrée." #. (itstool) path: item/p #: C/menubutton.py.page:56 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "MenuButton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/menubutton.vala.page:8 #, fuzzy #| msgid "MenuButton" msgctxt "text" msgid "MenuButton (Vala)" msgstr "MenuButton" #. (itstool) path: page/code #: C/menubutton.vala.page:28 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"MenuButton Example\");\n" "\t\tthis.set_default_size (600, 400);\n" "\t\tvar grid = new Gtk.Grid ();\n" "\n" "\t\tvar menubutton = new Gtk.MenuButton();\n" "\t\tmenubutton.set_size_request (80, 35);\n" "\n" "\t\tvar menumodel = new Menu ();\n" "\t\tmenumodel.append (\"New\", \"app.new\");\n" "\t\tmenumodel.append (\"About\", \"win.about\");\n" "\n" "\t\t/* We create the last item as a MenuItem, so that\n" "\t\t * a submenu can be appended to this menu item.\n" "\t\t */\n" "\t\tvar submenu = new Menu ();\n" "\t\tmenumodel.append_submenu (\"Other\", submenu);\n" "\t\tsubmenu.append (\"Quit\", \"app.quit\");\n" "\t\tmenubutton.set_menu_model (menumodel);\n" "\n" "\t\tvar about_action = new SimpleAction (\"about\", null);\n" "\t\tabout_action.activate.connect (this.about_cb);\n" "\t\tthis.add_action (about_action);\n" "\n" "\t\tthis.add(grid);\n" "\t\tgrid.attach(menubutton, 0, 0, 1, 1);\n" "\t}\n" "\n" "\tvoid about_cb (SimpleAction simple, Variant? parameter) {\n" "\t\tprint (\"You clicked \\\"About\\\"\\n\");\n" "\t}\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show_all ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\t}\n" "\n" "\t/* Override the 'startup' signal of GLib.Application. */\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\tvar new_action = new SimpleAction (\"new\", null);\n" "\t\tnew_action.activate.connect (this.new_cb);\n" "\t\tthis.add_action (new_action);\n" "\n" "\t\tvar quit_action = new SimpleAction (\"quit\", null);\n" "\t\tquit_action.activate.connect (this.quit);\n" "\t\tthis.add_action (quit_action);\n" "\t}\n" "\n" "\tvoid new_cb (SimpleAction simple, Variant? parameter) {\n" "\t\tprint (\"You clicked \\\"New\\\"\\n\");\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: info/title #: C/message-board.c.page:8 #, fuzzy #| msgid "Message Board" msgctxt "text" msgid "Message board (C)" msgstr "Visionneur de messages" #. (itstool) path: info/desc #: C/message-board.c.page:11 msgid "A simple program using WebKitGTK+ and the DOM." msgstr "Un programme simple utilisant WebKitGTK+ et DOM." #. (itstool) path: page/title #: C/message-board.c.page:26 #, fuzzy #| msgid "Message Board" msgid "Message board" msgstr "Visionneur de messages" #. (itstool) path: item/p #: C/message-board.c.page:31 msgid "How to display a web page with WebKit." msgstr "comment afficher une page Web avec Webkit," #. (itstool) path: item/p #: C/message-board.c.page:32 msgid "" "How to manipulate the contents of a web page using WebKit's DOM functions." msgstr "" "comment manipuler le contenu d'une page Web en utilisant les fonctions DOM " "de WebKit." #. (itstool) path: synopsis/p #: C/message-board.c.page:35 msgid "" "This tutorial assumes you are familiar with the C programming language and " "have a basic understanding of GTK+, including how to create and place " "widgets and how to connect callback functions to signals. See to learn the basics of GTK+." msgstr "" "Ce tutoriel suppose que vous soyez familier avec le langage de programmation " "C et que vous possédiez les bases nécessaires à la compréhension de GTK+, y " "compris comment générer et placer des éléments graphiques et comment " "associer des fonctions de rappel à des signaux. Consultez pour apprendre les bases de GTK+." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/message-board.c.page:41 #, fuzzy #| msgid "" #| "@@image: 'media/message-board.ogv'; md5=beb80c4538776dc2cdd26c95abea5027" msgctxt "_" msgid "" "external ref='media/message-board.ogv' md5='beb80c4538776dc2cdd26c95abea5027'" msgstr "" "@@image: 'media/message-board.ogv'; md5=beb80c4538776dc2cdd26c95abea5027" #. (itstool) path: section/p #: C/message-board.c.page:48 msgid "" "The GNOME platform includes WebKitGTK+, built on top of the powerful WebKit " "HTML framework. WebKit is used throughout GNOME, not just to view web pages " "on the Internet, but also to create rich user interfaces that can be easily " "styled with CSS." msgstr "" "La plateforme GNOME inclut WebKitGTK+, bâti sur le puissant environnement " "HTML WebKit. WebKit est utilisé partout dans GNOME, pas seulement pour " "afficher des pages Web sur internet, mais aussi pour créer de riches " "interfaces utilisateur qui peuvent être facilement stylisées par CSS." #. (itstool) path: section/p #: C/message-board.c.page:53 msgid "" "In this tutorial, you will create a simple message board using WebKit. The " "message board will allow you to enter some text and have it added to a list " "of messages in HTML. Before you begin, you need to set up a project in " "Anjuta." msgstr "" "Dans ce tutoriel vous allez créer un simple visionneur de messages en " "utilisant Webkit. Ce visionneur de messages vous permettra de saisir du " "texte et de l'ajouter à une liste de messages en HTML. Avant de débuter, " "vous devez créer un projet dans Anjuta." #. (itstool) path: item/p #: C/message-board.c.page:59 #, fuzzy #| msgid "" #| "In Anjuta, click FileNewProject to open the new project assistant." msgid "" "In Anjuta, click FileNew Project to open the new project assistant." msgstr "" "Dans Anjuta, cliquez sur FichierNouveauProjet pour ouvrir l'assistant de nouveau projet." #. (itstool) path: item/p #: C/message-board.c.page:61 msgid "" "Select GTK+ (simple) on the C tab, and click " "Continue." msgstr "" "Sélectionnez GTK+ (simple) dans l'onglet C et cliquez " "sur Continuer." #. (itstool) path: item/p #: C/message-board.c.page:63 msgid "" "Fill out your details on the Basic information page. Use " "message-board for the project name. Click Continue." msgstr "" "Renseignez les champs de la page Informations générales. Mettez " "message-board comme nom de projet et cliquez sur " "Continuer." #. (itstool) path: item/p #: C/message-board.c.page:66 msgid "" "Disable the Use GtkBuilder for user interface option as this " "tutorial builds the user-interface manually." msgstr "" "Désactivez l'option Utiliser GtkBuilder pour l'interface utilisateur car ce tutoriel construit l'interface manuellement." #. (itstool) path: item/p #: C/message-board.c.page:69 msgid "" "You need to tell Anjuta you're using WebKitGTK+ on this project. On the " "Project options page, select Configure external packages. Click Continue. On the Configure external packages page, check webkitgtk-3.0." msgstr "" "Vous devez indiquer à Anjuta que vous utilisez WebKitGTK+ dans ce projet. " "Sur la page Options du projet, sélectionnez l'option " "Configuration des paquets externes. Cliquez sur Continuer. Sur la page Configuration des paquets externes, cochez " "webkitgtk-3.0." #. (itstool) path: section/p #: C/message-board.c.page:75 msgid "" "After you finish the new project assistant, open the file src/main.c from either the Project or the File tab. Anjuta " "will have filled this in with some basic GTK+ code from its templates. Since " "you are creating a WebKit project, you first need to include the WebKit " "headers. After the line that includes gtk/gtk.h, add the " "following line:" msgstr "" "Une fois terminé avec l'assistant de nouveau projet, ouvrez le fichier " "src/main.c depuis l'onglet Projet ou l'onglet " "Fichiers. Anjuta l'a rempli avec du code GTK+ basique à partir " "d'un modèle. Comme vous êtes en train de créer un projet WebKit, il vous " "faut avant tout y inclure les entêtes WebKit. Après la ligne contenant " "gtk/gtk.h, ajoutez cette ligne :" #. (itstool) path: section/code #: C/message-board.c.page:82 #, no-wrap msgid "#include <webkit/webkit.h>" msgstr "#include <webkit/webkit.h>" #. (itstool) path: section/p #: C/message-board.c.page:84 msgid "" "Verify that everything works by building what you have so far. Click " "BuildBuild Project or just press " "ShiftF7. The first time you build, " "you will be asked for some configure options. Just accept the defaults and " "click Execute." msgstr "" "Vérifiez que tout fonctionne en construisant ce que vous avez déjà. Cliquez " "sur ConstruireConstruire le projet, " "ou appuyez sur MajF7. À la première " "construction, il vous est demandé quelques options de configuration. " "Acceptez celles qui vous sont proposées par défaut, et cliquez sur " "Exécuter." #. (itstool) path: section/p #: C/message-board.c.page:90 #, fuzzy #| msgid "" #| "You should now be able to run the program. Click RunExecute or just press F3. You should " #| "see an empty window appear." msgid "" "You should now be able to run the program. Click RunExecute or just press F3. You should see " "an empty window appear." msgstr "" "Vous pouvez maintenant lancer le programme. Cliquez sur " "ExécuterExécuter, ou appuyez sur " "F3. Une fenêtre vide s'ouvre." #. (itstool) path: section/title #: C/message-board.c.page:96 msgid "Lay out your window and web view" msgstr "Mise en forme de votre fenêtre et de votre affichage Web" #. (itstool) path: section/p #: C/message-board.c.page:98 msgid "" "Now that you can show a window, it's time to start working with WebKit. For " "this tutorial, you'll create a text entry and a web view and pack them both " "into a window. Find the function create_window and replace it " "with the following:" msgstr "" "Maintenant que vous savez afficher une fenêtre, vous pouvez commencer à " "travailler avec WebKit. Pour les besoins de ce tutoriel, vous allez créer un " "champ texte ainsi qu'une vue Web et les placer dans une fenêtre. Trouvez la " "fonction create_window et remplacez-la par ce qui suit :" #. (itstool) path: section/code #: C/message-board.c.page:103 #, no-wrap msgid "" "\n" "static GtkWidget*\n" "create_window (void)\n" "{\n" " GtkWidget *window, *box, *scroll, *view, *entry;\n" "\n" " window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n" " gtk_window_set_default_size (GTK_WINDOW (window), 400, 400);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Message Board\");\n" " g_signal_connect (window, \"delete-event\", G_CALLBACK (gtk_main_quit), NULL);\n" "\n" " box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);\n" " gtk_container_set_border_width (GTK_CONTAINER (box), 6);\n" " gtk_container_add (GTK_CONTAINER (window), box);\n" "\n" " entry = gtk_entry_new ();\n" " gtk_box_pack_start (GTK_BOX (box), entry, FALSE, FALSE, 0);\n" "\n" " scroll = gtk_scrolled_window_new (NULL, NULL);\n" " g_object_set (scroll, \"shadow-type\", GTK_SHADOW_IN, NULL);\n" " gtk_box_pack_start (GTK_BOX (box), scroll, TRUE, TRUE, 0);\n" "\n" " view = webkit_web_view_new ();\n" " gtk_container_add (GTK_CONTAINER (scroll), view);\n" " webkit_web_view_load_string (WEBKIT_WEB_VIEW (view),\n" " \"<html><body></body></html>\",\n" " \"text/html\",\n" " \"UTF-8\",\n" " NULL);\n" "\n" " gtk_widget_show_all (GTK_WIDGET (box));\n" " return window;\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/message-board.c.page:138 msgid "" "You first create a GtkWindow object and set its title and " "default size. You also connect the gtk_main_quit function to " "the delete-event signal. The delete-event signal " "is emitted when the window is closed. The gtk_main_quit " "function is part of GTK, and it quits the application." msgstr "" "Commencez par générer un objet GtkWindow et donnez-lui un titre " "et des dimensions par défaut. Il vous faut aussi connecter la fonction " "gtk_main_quit au signal delete-event. Le signal " "delete-event est émis lors de la fermeture de la fenêtre. La " "fonction gtk_main_quit fait partie de GTK et elle ferme " "l'application." #. (itstool) path: section/p #: C/message-board.c.page:144 msgid "" "You then create a vertical box and add it to the window. A window can only " "hold a single child widget, so you need to use a box to add multiple " "widgets. The second argument to gtk_box_new sets the amount of " "padding (in pixels) between each child, and the next line puts a six-pixel " "border around the entire thing." msgstr "" "Ensuite créez une boîte verticale et ajoutez-la à la fenêtre. Une fenêtre ne " "peut contenir qu'un seul élément graphique enfant, il faut donc utiliser une " "boîte pour en ajouter plusieurs. Le second argument de gtk_box_new définit la largeur des marges (en pixels) entre chaque enfant et la " "ligne suivante ajoute une bordure de six pixels autour du tout." #. (itstool) path: section/p #: C/message-board.c.page:150 msgid "" "You next create a GtkEntry object and pack it into the box. The " "third and fourth arguments to gtk_box_pack_start specify that " "the entry shouldn't take up any extra space the box has available. The " "fourth argument is the amount of padding you want around the entry. In this " "case, you set the padding to zero, because you're allowing the box to handle " "all the padding." msgstr "" "Il vous faut ensuite générer un objet GtkEntry et le placer " "dans la boîte. Les troisième et quatrième arguments de " "gtk_box_pack_start précisent que l'entrée ne doit pas occuper " "plus d'espace que la boîte n'en dispose. Le quatrième argument représente la " "largeur des marges souhaitée autour de l'entrée. Dans ce cas, définissez la " "largeur des marges à zéro, car vous autorisez la boîte à remplir tout " "l'espace libre." #. (itstool) path: section/p #: C/message-board.c.page:157 msgid "" "Before you add a web view, you have to create a scrolled window to put it " "inside of. The scrolled window will place scrollbars on the right and bottom " "when necessary, and prevent your web view from filling your entire screen. " "This time, you pass TRUE and TRUE to " "gtk_box_pack_start to allow the scrolled window (and thus, the " "web view) to use any extra space available in the box." msgstr "" "Avant d'ajouter une vue Web, vous devez créer une fenêtre avec barres de " "défilement pour la contenir. Cette fenêtre fera apparaître des barres de " "défilement à droite et en bas si nécessaire, évitant ainsi à votre vue Web " "de remplir tout votre écran. Cette fois, transmettez TRUE et " "TRUE à gtk_box_pack_start pour autoriser la " "fenêtre de défilement (et donc la vue Web) à occuper tout l'espace " "supplémentaire disponible dans la boîte." #. (itstool) path: section/p #: C/message-board.c.page:164 msgid "" "Finally, you create a WebKitWebView and add it to the scrolled " "window. Then load a very basic HTML page into the web view by calling " "webkit_web_view_load_string with the following arguments:" msgstr "" "Enfin, vous créez un WebKitWebView et l'ajoutez à la fenêtre de " "défilement. Chargez ensuite une page HTML basique dans la vue Web en " "appelant webkit_web_view_load_string avec les arguments " "suivants :" #. (itstool) path: item/title #: C/message-board.c.page:170 #, fuzzy #| msgid "WEBKIT_WEB_VIEW (view)" msgid "WEBKIT_WEB_VIEW (view)" msgstr "WEBKIT_WEB_VIEW (view)" #. (itstool) path: item/p #: C/message-board.c.page:171 msgid "" "The view itself. Because view is typed as a GtkWidget*, you have to use WEBKIT_WEB_VIEW to safely cast the " "object." msgstr "" "La vue en elle-même. Comme view est saisi sous forme de " "GtkWidget*, il vous faut utiliser WEBKIT_WEB_VIEW " "pour intégrer l'objet." #. (itstool) path: item/title #: C/message-board.c.page:176 #, fuzzy #| msgid "\"<html><body></body></html>\"" msgid "\"<html><body></body></html>\"" msgstr "\"<html><body></body></html>\"" #. (itstool) path: item/p #: C/message-board.c.page:177 msgid "The simplest HTML file you could possibly write." msgstr "Le plus simple fichier HTML que vous pourriez écrire." #. (itstool) path: item/title #: C/message-board.c.page:180 #, fuzzy #| msgid "\"text/html\"" msgid "\"text/html\"" msgstr "« text/html »" #. (itstool) path: item/p #: C/message-board.c.page:181 msgid "" "The MIME type of the content you provided. In this case, you're using plain " "HTML." msgstr "" "Le type MIME du contenu que vous avez fourni. Dans ce cas vous utilisez du " "HTML simple." #. (itstool) path: item/title #: C/message-board.c.page:185 msgid "\"UTF-8\"" msgstr "" #. (itstool) path: item/p #: C/message-board.c.page:186 msgid "" "The character encoding of the content you provided. Although you only used " "ASCII characters, it's a good idea to specify UTF-8. UTF-8 is used as the " "default encoding throughout the GNOME platform." msgstr "" "Le type de codage de caractères du contenu que vous avez fourni. Bien que " "vous n'ayez probablement utilisé que des caractères ASCII, c'est une bonne " "pratique de spécifier UTF-8, car c'est le codage par défaut utilisé dans " "toute la plateforme GNOME." #. (itstool) path: item/title #: C/message-board.c.page:191 msgid "NULL" msgstr "" #. (itstool) path: item/p #: C/message-board.c.page:192 msgid "" "The base URI. You don't need it in this simple example, but you might want " "to provide a file: URI if you add images or other features where " "you want to use relative URI references." msgstr "" "L'URI de base. Vous n'en avez pas besoin dans cet exemple, mais vous " "pourriez fournir un URI file: pour ajouter des images ou d'autres " "choses pour lesquelles vous devrez utiliser les références d'URI " "correspondantes." #. (itstool) path: note/p #: C/message-board.c.page:199 msgid "" "Every time you add a widget, you have to call gtk_widget_show " "on it for it to be visible. If you call gtk_widget_show_all on " "a container widget like a GtkBox, GTK+ will automatically show " "all the widgets inside the container, to any depth. Sometimes you don't want " "to call gtk_widget_show_all, such as when you want to " "dynamically hide and show some widgets in response to events." msgstr "" "Chaque fois que vous ajoutez un élément graphique, vous devez appeler " "gtk_widget_show pour le rendre visible. Si vous appelez " "gtk_widget_show_all sur un conteneur comme une GtkBox, GTK+ montre automatiquement tous les éléments graphiques qui sont à " "l'intérieur quelque soit leur altitude (depth). Parfois, vous ne voulez pas " "appeler gtk_widget_show_all, comme quand vous souhaitez faire " "apparaître ou disparaître dynamiquement des éléments graphiques en réponse à " "des événements." #. (itstool) path: section/p #: C/message-board.c.page:207 msgid "" "Finally, you have to call gtk_widget_show_all on the box. " "Otherwise, none of the widgets you created will be visible. (The window is " "shown in the main function with gtk_widget_show.)" msgstr "" "Enfin, vous devez appeler gtk_widget_show_all sur la boîte. " "Sinon, aucun des éléments graphiques créés n'est visible (la fenêtre est " "affichée dans la fonction main avec gtk_widget_show)." #. (itstool) path: section/p #: C/message-board.c.page:211 msgid "" "Build and run the message board again. You should see a window with a text " "entry and a web view. It doesn't do anything yet because the text entry and " "the web view don't know anything about each other." msgstr "" "Construisez et exécutez le visionneur de messages une nouvelle fois. Vous " "devez voir apparaître une fenêtre contenant du texte et une vue Web. Pour " "l'instant, il ne se passe encore rien, car le champ texte et la vue Web ne " "savent rien l'un sur l'autre." #. (itstool) path: section/title #: C/message-board.c.page:217 msgid "Hook up signals" msgstr "Signaux de connexion" #. (itstool) path: section/p #: C/message-board.c.page:219 msgid "" "Now you want to make the message board actually do something when " "you enter text into the text entry. To do this, connect a callback function " "to the activate signal of entry. GTK+ emits the " "activate signal whenever the user presses Enter in " "the entry. Add the following into create_window, anywhere after " "both entry and view have been defined:" msgstr "" "Maintenant, vous allez faire en sorte que le visionneur de messages " "fasse quelque chose quand vous saisissez du texte dans le champ de " "texte. Pour ce faire, connectez une fonction de rappel au signal " "activate de l'élément entry. GTK+ émet le signal " "activate à chaque fois que l'utilisateur appuie sur la touche " "Entrée dans le champ. Ajoutez ceci dans create_window, n'importe où après la définition de entry et view :" #. (itstool) path: section/code #: C/message-board.c.page:226 #, no-wrap msgid "" "\n" "g_signal_connect (entry, \"activate\", G_CALLBACK (entry_activate_cb), view);\n" msgstr "" #. (itstool) path: section/p #: C/message-board.c.page:230 msgid "" "You then have to actually define entry_activate_cb. Define it " "as follows, anywhere above create_window:" msgstr "" "Vous devez ensuite définir entry_activate_cb de la façon " "suivante, n'importe où au-dessus de create_window :" #. (itstool) path: section/code #: C/message-board.c.page:233 #, no-wrap msgid "" "\n" "static void\n" "entry_activate_cb (GtkEntry *entry, WebKitWebView *view)\n" "{\n" " WebKitDOMDocument *document;\n" " WebKitDOMElement *body, *div;\n" "\n" " document = webkit_web_view_get_dom_document (view);\n" " body = webkit_dom_document_query_selector (document, \"body\", NULL);\n" " div = webkit_dom_document_create_element (document, \"div\", NULL);\n" " webkit_dom_node_set_text_content (WEBKIT_DOM_NODE (div),\n" " gtk_entry_get_text (entry),\n" " NULL);\n" " webkit_dom_node_append_child (WEBKIT_DOM_NODE (body),\n" " WEBKIT_DOM_NODE (div),\n" " NULL);\n" " gtk_entry_set_text (entry, \"\");\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/message-board.c.page:253 msgid "" "The first thing you do is get a WebKitDOMDocument object that " "represents the HTML document displayed in view. The DOM classes " "and methods in WebKit allow you to inspect and manipulate the HTML document, " "and work very similarly to the DOM APIs you might already know from " "JavaScript." msgstr "" "La première chose à faire est d'obtenir un objet WebKitDOMDocument qui représente le document HTML affiché dans view. Les " "classes et les méthodes DOM de WebKit vous permettent d'examiner et de " "manipuler le document HTML et fonctionnent d'une façon très similaire aux " "API DOM de JavaScript que vous connaissez peut-être déjà." #. (itstool) path: section/p #: C/message-board.c.page:259 msgid "" "Once you have the document, you want to get the body element so " "that you can add div elements to it. The " "webkit_dom_document_query_selector function lets you find an " "element in the document using CSS selectors. This keeps you from having to " "write tedious loops to traverse the document." msgstr "" "Une fois que vous avez le document, il vous faut obtenir l'élément " "body pour pouvoir y ajouter des éléments div. La " "fonction webkit_dom_document_query_selector vous permet de " "trouver un élément dans le document en utilisant des sélecteurs CSS. Ceci " "vous évite de fastidieux aller-retour à travers le document." #. (itstool) path: section/p #: C/message-board.c.page:270 msgid "" "Next, you create a new div element to hold the message. Every " "element you create has to be attached to a document, so the function to " "create an element takes the WebKitDOMDocument as its first " "arguments. You then set the text content of the element to the contents of " "the text entry. Because gtk_entry_get_text returns a " "const gchar*, you don't have to free the result." msgstr "" "Puis, vous créez un nouveau bloc div pour contenir le message. " "Chaque élément que vous créez doit être attaché à un document ; ainsi la " "fonction pour créer un élément prend le WebKitDOMDocument comme " "premier argument. Vous définissez ensuite le contenu texte de l'élément au " "contenu du champ texte. Étant donné que gtk_entry_get_text " "retourne un const gchar*, vous n'êtes pas obligé de libérer le " "résultat." #. (itstool) path: section/p #: C/message-board.c.page:283 msgid "" "Finally, you append the new div element to the body and clear " "out the text entry so you can type something new. Build and run the program " "again and test it for yourself." msgstr "" "Enfin, vous devez ajouter le nouveau bloc div après le bloc " "body et effacer le champ texte pour pouvoir y saisir quelque " "chose d'autre. Construisez et exécutez le programme à nouveau et testez-le." #. (itstool) path: section/title #: C/message-board.c.page:290 msgid "Make it look better with CSS" msgstr "Le rendre plus joli avec du CSS" #. (itstool) path: section/p #: C/message-board.c.page:292 msgid "" "At this point, your program is completely functional, but not very pretty. " "You can style the message display with CSS, just like you can with any other " "HTML page. There are many ways you could attach some CSS to the page: You " "could add it in the initial HTML document. You could inline it in the " "style attribute of the div elements. You could " "even programmatically construct it using the DOM APIs." msgstr "" "À ce stade, votre programme est tout à fait fonctionnel, mais le résultat " "pas très joli. Vous pouvez styliser votre affichage avec CSS, comme vous le " "feriez avec n'importe quelle autre page HTML. Il y a plusieurs façons " "d'attacher du CSS à votre page : vous pouvez l'ajouter au document HTML " "initial, vous pouvez l'incorporer dans l'attribut style des " "blocs div, ou encore le construire en le programmant à partir " "des API DOM." #. (itstool) path: section/p #: C/message-board.c.page:299 msgid "" "In this tutorial, you'll attach the CSS using the user-stylesheet-uri property of the WebKitWebSetting object attached to your " "web view. In a more complete application, you would want to save and load " "your HTML file. Keeping the style information outside the actual HTML means " "that you can change the styling completely within your application, without " "having to change users' files. You would normally just install a file along " "with your application, but just to keep everything in one file for this " "demo, we'll use a trick called a data URI. First, define the CSS as a static " "string near the top of your file." msgstr "" "Dans ce tutoriel, vous allez ajouter du CSS en utilisant la propriété " "user-stylesheet-uri de l'objet WebKitWebSetting " "attachée à votre vue Web. Pour une application plus élaborée, il serait " "préférable d'enregistrer et de charger votre fichier HTML. Séparer les " "informations de style du vrai HTML conduit à pouvoir complètement changer de " "style dans votre application sans toucher aux fichiers des utilisateurs. " "Normalement, il faudrait juste installer un fichier avec votre application, " "mais pour cet exemple, et pour que tout soit dans un seul fichier, nous " "allons utiliser une astuce nommée un URI de données. Commencez par définir " "le CSS dans une chaîne de type « static » et placez-la près du début du " "fichier." #. (itstool) path: section/code #: C/message-board.c.page:308 #, no-wrap msgid "" "\n" "static const guchar CSS[] =\n" "\"body { margin: 0; padding: 0; }\\n\"\n" "\"div { \"\n" "\" -webkit-border-radius: 2px;\"\n" "\" background: -webkit-gradient(linear, 0% 100%, 0% 0%,\"\n" "\" from(#f1f1f1), to(white));\"\n" "\" border: solid 1px #c6c6c6;\"\n" "\" -webkit-box-shadow: 0px 0px 2px #c6c6c6;\"\n" "\" margin: 12px; padding: 6px;\"\n" "\"}\";\n" msgstr "" #. (itstool) path: section/p #: C/message-board.c.page:321 msgid "" "All you have in this example are div elements inside a " "body element. If you created more complicated HTML, you could " "use whatever CSS is necessary. In fact, if you're comfortable with CSS, you " "should trying changing this to something you like better." msgstr "" "Dans cet exemple, vous n'avez que des blocs div dans un élément " "body. Si vous créez un document HTML plus complexe, vous pouvez " "utiliser le code CSS dont vous avez besoin. En fait, si vous vous sentez à " "l'aise avec le CSS, vous pouvez essayer de modifier cette partie pour en " "faire ce qu'il vous plaît." #. (itstool) path: section/p #: C/message-board.c.page:326 msgid "" "To apply the CSS, you set the user-stylesheet-uri in the " "create_window function, anywhere after view has " "already been defined." msgstr "" "Pour appliquer le CSS, placez user-stylesheet-uri n'importe où " "dans la fonction create_window après la définition de " "view." #. (itstool) path: section/code #: C/message-board.c.page:332 #, no-wrap msgid "" "\n" "tmp = g_base64_encode (CSS, strlen((gchar *) CSS));\n" "css = g_strconcat (\"data:text/css;charset=utf-8;base64,\",\n" " tmp, NULL);\n" "g_object_set (webkit_web_view_get_settings (WEBKIT_WEB_VIEW (view)),\n" " \"user-stylesheet-uri\", css, NULL);\n" "g_free (css);\n" "g_free (tmp);\n" msgstr "" #. (itstool) path: section/p #: C/message-board.c.page:342 msgid "" "Also, make sure to add variable declarations for tmp and " "css to the top of create_window." msgstr "" "Assurez-vous aussi d'ajouter les déclarations pour les variables tmp et css en haut de create_window." #. (itstool) path: section/code #: C/message-board.c.page:345 #, no-wrap msgid "" "\n" "gchar *tmp, *css;\n" msgstr "" "\n" "gchar *tmp, *css;\n" #. (itstool) path: section/p #: C/message-board.c.page:349 msgid "" "A data URI starts with data: and some information about the " "content type and how the data is encoded. The actual data follows after a " "comma, in this case encoded in Base64. Unlike other URI schemes like " "http:, ftp:, and file:, the data: URI scheme doesn't specify where to find a file to load. Rather, it " "gives the entire contents of the file." msgstr "" "Un URI de données commence par data:, quelques informations sur " "le type de contenu et par la façon dont les données sont codées. Les vraies " "données suivent après une virgule et dans notre cas sont codées en Base64. " "Contrairement à d'autres protocoles d'URI, comme http:, ftp:" " et file:, l'URI data: ne spécifie pas où " "trouver le fichier à charger. Il fournit par contre le contenu complet du " "fichier." #. (itstool) path: section/p #: C/message-board.c.page:356 msgid "" "The code above first encodes your CSS definitions in Base64, then combines " "that with a fixed string to create a data URI. The g_strconcat " "function can take any number of string arguments and concatenate them all " "together, so you have to pass NULL as the final argument so it " "knows when to stop. And don't forget to free those temporary strings after " "you set the stylesheet property." msgstr "" "Le programme ci-dessus code d'abord vos définitions CSS en Base64, puis les " "combine dans une chaîne constante pour générer un URI de données. La " "fonction g_strconcat peut prendre un nombre infini d'arguments " "de type chaîne de caractères et les assemble. Par conséquent il vous faut " "mettre NULL comme dernier argument pour lui indiquer où " "s'arrêter. N'oubliez pas de libérer ces chaînes temporaires après avoir " "défini la propriété de la feuille de style." #. (itstool) path: section/p #: C/message-board.c.page:363 msgid "" "Build and run the program again. It should now work exactly the same as at " "the end of the last section, except the messages will be nicely styled with " "a border and a subtle background gradient." msgstr "" "Construisez et exécutez à nouveau le programme. Il doit maintenant " "fonctionner exactement de la même façon qu'à la fin du chapitre précédent, " "sauf que cette fois, les messages sont joliment stylisés avec une bordure et " "un gradient discret en arrière-plan." #. (itstool) path: section/title #: C/message-board.c.page:369 msgid "Learn more" msgstr "En savoir plus" #. (itstool) path: section/p #: C/message-board.c.page:371 msgid "" "This tutorial showed you how to create a basic application using GTK+ and " "WebKit, including showing a document and manipulating its contents. To " "create a real application, you probably want to do a little bit more. Try " "adding features on your own. Here are a few ideas:" msgstr "" "Le but de ce tutoriel était de vous montrer comment créer une application " "basique avec GTK+ et WebKit, et également d'afficher un document et de " "manipuler son contenu. Pour créer une application réelle, vous voudrez " "probablement en faire un peu plus. Essayez d'ajouter vous-même d'autres " "fonctionnalités. Voici quelques idées :" #. (itstool) path: item/p #: C/message-board.c.page:377 msgid "" "If you're comfortable with CSS, try changing the style of the message " "display. CSS is easy to get started with, but increasingly more powerful. " "There is a wealth of CSS tutorials on the Internet, and just about " "everything you can do on the web, you can do in this application." msgstr "" "Si vous êtes à l'aise avec CSS, essayez de modifier le style d'affichage du " "message. Débuter avec le CSS est facile, mais en allant plus loin ça devient " "un objet plus puissant. Vous allez trouver plein de tutoriels CSS sur " "internet, et tous sont adaptables à cette application." #. (itstool) path: item/p #: C/message-board.c.page:383 msgid "" "Right now, you lose all your messages whenever you close the message board. " "Try saving the HTML contents after each post, and loading the saved file (if " "it exists) on startup." msgstr "" "Pour l'instant, vous perdez tous vos messages chaque fois que vous fermez le " "visionneur de messages. Essayez d'enregistrer le contenu HTML après chaque " "message et d'ouvrir le fichier enregistré (s'il existe) au démarrage." #. (itstool) path: item/p #: C/message-board.c.page:391 msgid "" "If you keep your messages around for a long time, you'll start wondering " "when you posted them. Add a timestamp to each message when it's posted. " "You'll probably want to create some additional child div " "elements with different classes that you can style in the CSS." msgstr "" "Si vous conservez vos messages pendant longtemps, un jour vous allez vous " "demander quand ils ont été postés. Ajoutez un horodatage à chaque message " "posté. Créez quelques blocs div enfants supplémentaires avec " "des classes différentes que vous pouvez styliser dans la feuille CSS." #. (itstool) path: item/p #: C/message-board.c.page:398 msgid "" "This program keeps messages around forever. Think about ways you could allow " "the user to delete messages. Perhaps you want messages to disappear " "automatically after they're too old, or after there are a certain number of " "messages before them. Or you could add a link in each message to delete it. " "You could even override the context menu when you right-click on a message. " "These features involve exploring WebKit's DOM API more." msgstr "" "Ce programme conserve les messages pour toujours. Réfléchissez à une façon " "pour autoriser l'utilisateur à supprimer des messages. Peut-être en les " "faisant disparaître automatiquement lorsqu'ils sont trop vieux ou quand il y " "a un nombre défini de messages devant eux. Ou alors en ajoutant un lien à " "chaque message pour pouvoir le supprimer. Ou encore en redéfinissant le menu " "contextuel quand vous faites un clic-droit sur un message. Ces fonctions " "impliquent que vous exploriez davantage encore les API DOM de WebKit." #. (itstool) path: info/title #: C/messagedialog.c.page:8 #, fuzzy #| msgid "MessageDialog" msgctxt "text" msgid "MessageDialog (C)" msgstr "Boîte de dialogue de message" #. (itstool) path: info/desc #: C/messagedialog.c.page:19 C/messagedialog.py.page:19 #: C/messagedialog.vala.page:18 msgid "A message window" msgstr "Une fenêtre de message" #. (itstool) path: page/title #: C/messagedialog.c.page:22 C/messagedialog.js.page:24 #: C/messagedialog.py.page:22 C/messagedialog.vala.page:21 msgid "MessageDialog" msgstr "Boîte de dialogue de message" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/messagedialog.c.page:24 C/messagedialog.js.page:25 #: C/messagedialog.py.page:23 C/messagedialog.vala.page:22 #, fuzzy #| msgid "" #| "@@image: 'media/messagedialog.png'; md5=1956288274018e2386d9cba96a2101de" msgctxt "_" msgid "" "external ref='media/messagedialog.png' md5='1956288274018e2386d9cba96a2101de'" msgstr "" "@@image: 'media/messagedialog.png'; md5=1956288274018e2386d9cba96a2101de" #. (itstool) path: page/p #: C/messagedialog.c.page:25 C/messagedialog.vala.page:23 msgid "A modal message dialog which can cause the world to explode." msgstr "" "Une boîte de dialogue de message modal qui peut faire exploser le monde." #. (itstool) path: note/p #: C/messagedialog.c.page:26 msgid "" "To test out the application once it has started running, you can click on " "the \"Message Dialog\" tab that appears in the top menubar of the screen." msgstr "" #. (itstool) path: page/code #: C/messagedialog.c.page:30 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/* Callback function in which reacts to the \"response\" signal from the user in\n" " * the message dialog window.\n" " * This function is used to interact with the user in the terminal.\n" " */\n" "static void\n" "on_response (GtkDialog *dialog,\n" " gint response_id,\n" " gpointer user_data)\n" "{\n" " /* If the button clicked gives response OK (response_id being -5) */\n" " if (response_id == GTK_RESPONSE_OK) \n" " g_print (\"*boom*\\n\");\n" "\n" " /* If the button clicked gives response CANCEL (response_id being -6) */\n" " else if (response_id == GTK_RESPONSE_CANCEL)\n" " g_print (\"good choice\\n\");\n" "\n" " /* If the message dialog is destroyed (for example by pressing escape) */\n" " else if (response_id == GTK_RESPONSE_DELETE_EVENT)\n" " g_print (\"dialog closed or cancelled\\n\");\n" "\n" " /* Destroy the dialog after one of the above actions have taken place */\n" " gtk_widget_destroy (GTK_WIDGET (dialog));\n" "\n" "}\n" "\n" "\n" "\n" "/* Callback function for the response signal \"activate\" related to the SimpleAction\n" " * message_action.\n" " * This function is used to cause the message dialog window to popup.\n" " */\n" "static void\n" "message_cb (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " /* the parent variable in this case represents the window */\n" " GtkWidget *message_dialog;\n" " GtkWindow *parent = user_data;\n" " \n" " /* Create a new message dialog, and set the parameters as follows:\n" " * Dialog Flags - make the constructed dialog modal \n" " * (modal windows prevent interaction with other windows in the application)\n" " * Message Type - nonfatal warning message\n" " * Buttons Type - use the ok and cancel buttons\n" " * message_format - text that you want the user to see in the window \n" " */\n" " message_dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, \n" " GTK_MESSAGE_WARNING, \n" " GTK_BUTTONS_OK_CANCEL, \n" " \"This action will cause the universe to stop existing.\");\n" "\n" " gtk_widget_show_all (message_dialog);\n" "\n" " g_signal_connect (GTK_DIALOG (message_dialog), \"response\", \n" " G_CALLBACK (on_response), NULL);\n" "\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *label;\n" "\n" " GSimpleAction *message_action;\n" "\n" " /* Create a window with a title and a default size */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"GMenu Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n" "\n" " /* Create a label and add it to the window */\n" " label = gtk_label_new (\"This application goes boom!\");\n" " gtk_container_add (GTK_CONTAINER (window), label);\n" "\n" " /* Create a new simple action, giving it a NULL parameter type. It will \n" " * always be NULL for actions invoked from a menu. (e.g clicking on an \"ok\" \n" " * or \"cancel\" button)\n" " */\n" " message_action = g_simple_action_new (\"message\", NULL); \n" "\n" " /* Connect the \"activate\" signal to the appropriate callback function */\n" " g_signal_connect (message_action, \"activate\", G_CALLBACK (message_cb), \n" " GTK_WINDOW (window));\n" "\n" " /* Adds the message_action to the overall action map. An Action map is an \n" " * interface that contains a number of named GAction instances \n" " * (such as message_action) \n" " */\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (message_action));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "/* Callback function for the response signal \"activate\" from the \"quit\" action \n" " * in the function directly below.\n" " */ \n" "static void\n" "quit_cb (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GApplication *application = user_data;\n" "\n" " g_application_quit (application);\n" "}\n" "\n" "\n" "\n" "/* Startup function for the menu we are creating in this sample */\n" "static void\n" "startup (GApplication *app,\n" " gpointer user_data)\n" "{\n" " GMenu *menu;\n" " GSimpleAction *quit_action;\n" "\n" " /* Initialize the GMenu, and add a menu item with label \"Message\" and action \n" " * \"win.message\". Also add another menu item with label \"Quit\" and action \n" " * \"app.quit\" \n" " */\n" " menu = g_menu_new ();\n" " g_menu_append (menu, \"Message\", \"win.message\");\n" " g_menu_append (menu, \"Quit\", \"app.quit\");\n" "\n" " /* Create a new simple action for the application. (In this case it is the \n" " * \"quit\" action.\n" " */\n" " quit_action = g_simple_action_new (\"quit\", NULL);\n" "\n" " /* Ensure that the menu we have just created is set for the overall application */\n" " gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (menu));\n" "\n" " g_signal_connect (quit_action, \n" " \"activate\", \n" " G_CALLBACK (quit_cb), \n" " app);\n" "\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (quit_action));\n" "\n" "}\n" "\n" "\n" "\n" "/* Startup function for the application */\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/messagedialog.c.page:37 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GApplication" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/messagedialog.c.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkMessageDialog" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/messagedialog.c.page:40 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GSimpleAction" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/messagedialog.js.page:8 #, fuzzy #| msgid "MessageDialog" msgctxt "text" msgid "MessageDialog (JavaScript)" msgstr "Boîte de dialogue de message" #. (itstool) path: info/desc #: C/messagedialog.js.page:21 msgid "A popup message attached to a window" msgstr "Un message surgissant lié à une fenêtre" #. (itstool) path: page/p #: C/messagedialog.js.page:26 msgid "" "A MessageDialog is a modal message dialog, which means a popup that you have " "to respond to before you get back to what you were doing in the window that " "it's attached to. This one can cause the world to explode (or at least it " "says that it can). To make the popup appear when you run this sample, click " "on \"Message\" inside of its application menu -- that's the menu that " "appears when you click on an application's name in the upper-left screen " "corner, next to Activities." msgstr "" "Une BoiteDeDialogueDemessage contient un message modale surgissant auquel " "vous devez d'abord répondre avant de pouvoir retourner travailler dans la " "fenêtre à laquelle elle est liée. Elle peut faire exploser le monde (ou au " "moins elle le prétend). Pour faire apparaître le message surgissant quand " "vous exécutez cet exemple, cliquez sur « Message » dans le menu de son " "application : c'est le menu qui s'affiche quand vous cliquez sur le nom de " "l'application dans le coin supérieur gauche de l'écran, à côté de " "« Activités »." #. (itstool) path: note/p #: C/messagedialog.js.page:27 msgid "" "The difference between a MessageDialog and a Dialog is that a Dialog can contain whatever widgets and content " "you want to put in it, whereas a MessageDialog is just a convenient way to " "make popups appear with a basic message and buttons." msgstr "" "La différence entre une BoiteDeDialogueDemessage et une Boîte de dialogue est que la boîte de dialogue peut contenir " "n'importe quel élément graphique ou contenu que vous souhaitez y mettre, " "alors que la BoiteDeDialogueDemessage est juste un moyen pratique de faire " "s'afficher un message basique surgissant avec des boutons." #. (itstool) path: section/code #: C/messagedialog.js.page:32 C/radiobutton.js.page:29 C/scale.js.page:29 #: C/spinbutton.js.page:32 C/statusbar.js.page:29 C/switch.js.page:36 #: C/togglebutton.js.page:29 #, no-wrap msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "const Lang = imports.lang;\n" msgstr "" #. (itstool) path: section/code #: C/messagedialog.js.page:44 #, no-wrap msgid "" "\n" "const MessageDialogExample = new Lang.Class ({\n" " Name: 'MessageDialog Example',\n" "\n" " // Create the application itself\n" " _init: function () {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jsmessagedialog',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate: function () {\n" " this._window.present ();\n" " },\n" "\n" " // Callback function for 'startup' signal initializes menus and builds the UI\n" " _onStartup: function () {\n" " this._initMenus();\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: note/p #: C/messagedialog.js.page:71 C/switch.js.page:76 msgid "" "Before we call _buildUI to create the window and the widgets inside it, we " "need to call _initMenus, which tells GNOME to create the menu. We can put " "the actual code for _initMenus after the code for _buildUI, since it doesn't " "matter what order we put them in so long as _initMenus is called first in " "_onStartup." msgstr "" "Avant d'appeler _buildUI pour créer la fenêtre et les éléments graphiques " "qu'elle contient, il nous faut appeler _initMenus, qui indique à GNOME de " "générer le menu. Nous pouvons mettre le code actuel pour _initMenus après le " "code pour _buildUI, car l'ordre n'a pas d'importance du moment que " "_initMenus est appelé en premier dans _onStartup." #. (itstool) path: section/code #: C/messagedialog.js.page:72 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function () {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Gtk.MessageDialog Example\",\n" " default_height: 200,\n" " default_width: 400 });\n" msgstr "" #. (itstool) path: section/code #: C/messagedialog.js.page:86 #, no-wrap msgid "" "\n" " // Create a silly warning message and add it to the window\n" " this.warningLabel = new Gtk.Label ({\n" " label: \"This application goes boom! (Not really.)\"});\n" " this._window.add (this.warningLabel);\n" msgstr "" #. (itstool) path: section/p #: C/messagedialog.js.page:92 #, fuzzy #| msgid "" #| "For this example, all that we have in the window the popup comes out of " #| "is a silly warning Label." msgid "" "For this example, all that we have in the window the popup comes out of is a " "silly warning Label." msgstr "" "Dans cet exemple, nous avons dans la BoiteDeDialogueDemessage une Étiquette contenant un stupide message d'avertissement." #. (itstool) path: section/title #: C/messagedialog.js.page:96 msgid "Creating the application's menu" msgstr "Création du menu de l'application" #. (itstool) path: section/code #: C/messagedialog.js.page:97 #, no-wrap msgid "" "\n" " // Build the application menu, including the button that calls the dialog\n" " _initMenus: function() {\n" " let menu = new Gio.Menu();\n" " menu.append(\"Message\",'app.message');\n" " menu.append(\"Quit\",'app.quit');\n" " this.application.set_app_menu(menu);\n" "\n" " // This pops up a MessageDialog when \"Message\" is clicked in the menu\n" " let messageAction = new Gio.SimpleAction ({ name: 'message' });\n" " messageAction.connect('activate', Lang.bind(this,\n" " function() {\n" " this._showMessageDialog();\n" " }));\n" " this.application.add_action(messageAction);\n" "\n" " // This closes the window when \"Quit\" is clicked in the menu\n" " let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n" " quitAction.connect('activate', Lang.bind(this,\n" " function() {\n" " this._window.destroy();\n" " }));\n" " this.application.add_action(quitAction);\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/messagedialog.js.page:122 msgid "" "Here, we build the GMenu where we'll be " "putting the \"Message\" button which triggers the popup MessageDialog. The " "GMenu is the menu that appears when you click the application's name in the " "upper-left corner of the screen, next to the Activities menu. Our menu only " "has two options in it: Message, and Quit." msgstr "" "Ici, nous construisons le GMenu où nous " "mettons le bouton « Message » qui active la BoiteDeDialogueDemessage. le " "GMenu est le menu qui s'affiche quand vous cliquez sur le nom de " "l'application dans le coin supérieur gauche de l'écran, à côté de " "« Activités ». Notre menu ne contient que deux options : Message et Quit." #. (itstool) path: section/title #: C/messagedialog.js.page:126 msgid "Creating the MessageDialog" msgstr "Création de la BoiteDeDialogueDemessage" #. (itstool) path: section/code #: C/messagedialog.js.page:127 #, no-wrap msgid "" "\n" " _showMessageDialog: function () {\n" "\n" " // Create a modal MessageDialog whose parent is the window\n" " this._messageDialog = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " buttons: Gtk.ButtonsType.OK_CANCEL,\n" " message_type: Gtk.MessageType.WARNING,\n" " text: \"This action will cause the universe to stop existing.\" });\n" "\n" " this._messageDialog.connect ('response', Lang.bind(this, this._response_cb));\n" " this._messageDialog.show();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/messagedialog.js.page:142 msgid "" "To make our MessageDialog a popup attached to the main window, we set its " "modal property to true and set it to be \"transient_for\" _window. After " "that, we can set what kind of buttons it has and what kind of message it is " "(which determines what icon appears next to the message), and write out the " "text inside it, before connecting its \"response\" signal to the callback " "function which handles it." msgstr "" "Pour que notre BoiteDeDialogueDemessage soit liée à la fenêtre principale, " "nous définissons sa propriété modale à vrai et la configurons comme une " "\"transient_for\" _window. Ensuite, nous définissons quel type de bouton et " "quel genre de message nous voulons y mettre (celui-ci va déterminer le type " "d'icône qui accompagnera le message). Enfin nous y saisissons le texte du " "message et connectons son signal « response » à la fonction de rappel qui le " "prend en charge." #. (itstool) path: note/p #: C/messagedialog.js.page:143 msgid "Here are some resources for making your own MessageDialogs:" msgstr "" "Voici quelques ressources pour bâtir vos propres BoiteDeDialogueDemessage" #. (itstool) path: item/p #: C/messagedialog.js.page:145 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "List of button types" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/messagedialog.js.page:146 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "List of message types" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: section/code #: C/messagedialog.js.page:150 #, no-wrap msgid "" "\n" " // Callback function (aka signal handler) for the response signal\n" " _response_cb: function (messagedialog, response_id) {\n" "\n" " // A simple switch that changes the main window's label\n" " switch (response_id) {\n" " case Gtk.ResponseType.OK:\n" " this.warningLabel.set_label (\"*BOOM*\\n\");\n" " break;\n" " case Gtk.ResponseType.CANCEL:\n" " this.warningLabel.set_label (\"Good choice!\\n\");\n" " break;\n" " case Gtk.ResponseType.DELETE_EVENT:\n" " this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n" " break;\n" " }\n" "\n" " this._messageDialog.destroy();\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/messagedialog.js.page:173 msgid "" "This function takes two parameters, the MessageDialog and its response_id, " "both of which are automatically supplied (you don't have to manually pass " "them to it for it to work). Here we use a simple switch to change the " "\"warning label\"'s text, depending on which option you select. The " "DELETE_EVENT occurs if you press Escape to cancel the MessageDialog, instead " "of clicking OK or Cancel. Whatever you select, the popup is destroyed " "afterwards." msgstr "" "Cette fonction prend deux paramètres : la BoiteDeDialogueDemessage et son " "identifiant response_id. Les deux sont fournis automatiquement (il n'y a pas " "besoins d'intervention manuelle pour que cela fonctionne). Ici, nous " "utilisons un interrupteur simple pour modifier le texte « warning label » en " "fonction de l'option sélectionnée. Le DELETE_EVENT se produit en appuyant " "sur la touche Échap pour annuler la BoiteDeDialogueDemessage au lieu de " "cliquer sur OK ou Cancel. Quel que soit votre choix, le message surgissant " "est détruit ensuite." #. (itstool) path: section/code #: C/messagedialog.js.page:175 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new MessageDialogExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/messagedialog.js.page:180 msgid "" "Finally, we create a new instance of the finished MessageDialogExample " "class, and set the application running." msgstr "" "Pour finir, nous créons un nouvel exemple de la classe MessageDialogExample " "terminée et nous démarrons l'application." #. (itstool) path: section/code #: C/messagedialog.js.page:185 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class MessageDialogExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsmessagedialog',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal initializes menus and builds the UI\n" " _onStartup() {\n" " this._initMenus();\n" " this._buildUI ();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Gtk.MessageDialog Example\",\n" " default_height: 200,\n" " default_width: 400\n" " });\n" "\n" " // Create a silly warning message and add it to the window\n" " this.warningLabel = new Gtk.Label({\n" " label: \"This application goes boom! (Not really.)\"\n" " });\n" " this._window.add (this.warningLabel);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " // Build the application menu, including the button that calls the dialog\n" " _initMenus() {\n" " let menu = new Gio.Menu();\n" " menu.append(\"Message\",'app.message');\n" " menu.append(\"Quit\",'app.quit');\n" " this.application.set_app_menu(menu);\n" "\n" " // This pops up a MessageDialog when \"Message\" is clicked in the menu\n" " let messageAction = new Gio.SimpleAction ({ name: 'message' });\n" " messageAction.connect('activate', () => { this._showMessageDialog(); });\n" " this.application.add_action(messageAction);\n" "\n" " // This closes the window when \"Quit\" is clicked in the menu\n" " let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n" " quitAction.connect('activate', () => { this._window.destroy(); });\n" " this.application.add_action(quitAction);\n" " }\n" "\n" " _showMessageDialog() {\n" "\n" " // Create a modal MessageDialog whose parent is the window\n" " this._messageDialog = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " buttons: Gtk.ButtonsType.OK_CANCEL,\n" " message_type: Gtk.MessageType.WARNING,\n" " text: \"This action will cause the universe to stop existing.\" });\n" "\n" " this._messageDialog.connect ('response', this._response_cb.bind(this));\n" " this._messageDialog.show();\n" " }\n" "\n" " // Callback function (aka signal handler) for the response signal\n" " _response_cb(messagedialog, response_id) {\n" "\n" " // A simple switch that changes the main window's label\n" " switch (response_id) {\n" " case Gtk.ResponseType.OK:\n" " this.warningLabel.set_label (\"*BOOM*\\n\");\n" " break;\n" " case Gtk.ResponseType.CANCEL:\n" " this.warningLabel.set_label (\"Good choice!\\n\");\n" " break;\n" " case Gtk.ResponseType.DELETE_EVENT:\n" " this.warningLabel.set_label (\"Dialog closed or cancelled.\\n\");\n" " break;\n" " }\n" "\n" " this._messageDialog.destroy();\n" "\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new MessageDialogExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: info/title #: C/messagedialog.py.page:8 #, fuzzy #| msgid "MessageDialog" msgctxt "text" msgid "MessageDialog (Python)" msgstr "Boîte de dialogue de message" #. (itstool) path: page/p #: C/messagedialog.py.page:24 msgid "" "A message dialog which prints messages on the terminal, depending on your " "choices." msgstr "" "Une boîte de dialogue qui affiche les messages sur le terminal en fonction " "de vos choix." #. (itstool) path: section/code #: C/messagedialog.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gio\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " # constructor for a window (the parent window) with a label\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"GMenu Example\", application=app)\n" " self.set_default_size(400, 200)\n" " label = Gtk.Label()\n" " label.set_text(\"This application goes boom!\")\n" " self.add(label)\n" "\n" " # create the message_action (a Gio.SimpleAction) - for the window\n" " message_action = Gio.SimpleAction.new(\"message\", None)\n" " # connect the signal from the action to the function message_cb()\n" " message_action.connect(\"activate\", self.message_cb)\n" " # add the action to the application\n" " app.add_action(message_action)\n" "\n" " # callback function for the signal \"activate\" from the message_action\n" " # in the menu of the parent window\n" " def message_cb(self, action, parameter):\n" " # a Gtk.MessageDialog\n" " messagedialog = Gtk.MessageDialog(parent=self,\n" " flags=Gtk.DialogFlags.MODAL,\n" " type=Gtk.MessageType.WARNING,\n" " buttons=Gtk.ButtonsType.OK_CANCEL,\n" " message_format=\"This action will cause the universe to stop existing.\")\n" " # connect the response (of the button clicked) to the function\n" " # dialog_response()\n" " messagedialog.connect(\"response\", self.dialog_response)\n" " # show the messagedialog\n" " messagedialog.show()\n" "\n" " def dialog_response(self, widget, response_id):\n" " # if the button clicked gives response OK (-5)\n" " if response_id == Gtk.ResponseType.OK:\n" " print(\"*boom*\")\n" " # if the button clicked gives response CANCEL (-6)\n" " elif response_id == Gtk.ResponseType.CANCEL:\n" " print(\"good choice\")\n" " # if the messagedialog is destroyed (by pressing ESC)\n" " elif response_id == Gtk.ResponseType.DELETE_EVENT:\n" " print(\"dialog closed or cancelled\")\n" " # finally, destroy the messagedialog\n" " widget.destroy()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def quit_cb(self, action, parameter):\n" " self.quit()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" " # create a menu (a Gio.Menu)\n" " menu = Gio.Menu()\n" " # append a menu item with label \"Message\" and action \"app.message\"\n" " menu.append(\"Message\", \"app.message\")\n" " # append a menu item with label \"Quit\" and action \"app.quit\"\n" " menu.append(\"Quit\", \"app.quit\")\n" " # set menu as the menu for the application\n" " self.set_app_menu(menu)\n" "\n" " # a new simpleaction - for the application\n" " quit_action = Gio.SimpleAction.new(\"quit\", None)\n" " quit_action.connect(\"activate\", self.quit_cb)\n" " self.add_action(quit_action)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/messagedialog.py.page:36 msgid "Useful methods for a MessageDialog widget" msgstr "Méthodes utiles pour un élément graphique BoiteDeDialogueDemessage" #. (itstool) path: section/p #: C/messagedialog.py.page:37 msgid "" "In line 18 the signal \"activate\" is connected to the callback " "function message_cb() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/messagedialog.py.page:39 msgid "" "In the constructor of MessageDialog we could set flags as Gtk." "DialogFlags.DESTROY_WITH_PARENT (to destroy the messagedialog window " "when its parent window is destroyed) or as Gtk.DialogFlags.MODAL (no interaction with other windows of the application)." msgstr "" "Dans le constructeur de BoiteDeDialogueDemessage, nous pouvons définir les " "drapeaux à Gtk.DialogFlags.DESTROY_WITH_PARENT (pour la " "détruire si sa fenêtre parente est détruite), ou à Gtk.DialogFlags." "MODAL (aucune interaction avec les autres fenêtres de l'application)." #. (itstool) path: item/p #: C/messagedialog.py.page:40 msgid "" "In the constructor of MessageDialog we could set type as any of Gtk." "MessageType.INFO, Gtk.MessageType.WARNING, Gtk.MessageType.QUESTION, Gtk." "MessageType.ERROR, Gtk.MessageType.OTHER depending on what type of " "message we want." msgstr "" "Dans le constructeur de BoiteDeDialogueDemessage, nous pouvons définir le " "type à Gtk.MessageType.INFO, Gtk.MessageType.WARNING, Gtk.MessageType." "QUESTION, Gtk.MessageType.ERROR, Gtk.MessageType.OTHER en fonction du " "type de message voulu." #. (itstool) path: item/p #: C/messagedialog.py.page:41 msgid "" "In the constructor of MessageDialog we could set buttons as any of Gtk." "ButtonsType.NONE, Gtk.ButtonsType.OK, Gtk.ButtonsType.CLOSE, Gtk.ButtonsType." "CANCEL, Gtk.ButtonsType.YES_NO, Gtk.ButtonsType.OK_CANCEL, or any " "button using add_button() as in Gtk.Dialog." msgstr "" "Dans le constructeur de BoiteDeDialogueDemessage, nous pouvons définir les " "boutons à Gtk.ButtonsType.NONE, Gtk.ButtonsType.OK, Gtk.ButtonsType." "CLOSE, Gtk.ButtonsType.CANCEL, Gtk.ButtonsType.YES_NO, Gtk.ButtonsType." "OK_CANCEL, ou n'importe quel bouton utilisant add_button() comme dans Gtk.Dialog." #. (itstool) path: item/p #: C/messagedialog.py.page:42 msgid "" "We could substitute the default image of the MessageDialog with another " "image using" msgstr "" "Nous pouvons substituer l'image par défaut de la BoiteDeDialogueDemessage " "par une autre avec" #. (itstool) path: item/code #: C/messagedialog.py.page:43 #, no-wrap msgid "" "\n" "image = Gtk.Image()\n" "image.set_from_stock(Gtk.STOCK_CAPS_LOCK_WARNING, Gtk.IconSize.DIALOG)\n" "image.show()\n" "messagedialog.set_image(image)" msgstr "" "\n" "image = Gtk.Image()\n" "image.set_from_stock(Gtk.STOCK_CAPS_LOCK_WARNING, Gtk.IconSize.DIALOG)\n" "image.show()\n" "messagedialog.set_image(image)" #. (itstool) path: item/p #: C/messagedialog.py.page:48 #, fuzzy #| msgid "" #| "where Gtk.STOCK_CAPS_LOCK_WARNING is any image from Stock " #| "Items. We could also set any image as in the Image widget, as " #| "image.set_from_file(\"filename.png\")." msgid "" "where Gtk.STOCK_CAPS_LOCK_WARNING is any image from Stock " "Items. We could also set any image as in the Image widget, as " "image.set_from_file(\"filename.png\")." msgstr "" "où Gtk.STOCK_CAPS_LOCK_WARNING est n'importe quelle image des " "Éléments de la collection. Nous pouvons aussi définir n'importe " "quelle image comme dans l'élément graphique Image, avec la fonction " "image.set_from_file(« nomdufichier.png »)." #. (itstool) path: item/p #: C/messagedialog.py.page:49 msgid "" "format_secondary_text(\"some secondary message\") sets a " "secondary message. The primary text becomes bold." msgstr "" "La méthode format_secondary_text(« messagesecondaire ») définit " "un message secondaire. Le texte principal se met en gras." #. (itstool) path: item/p #: C/messagedialog.py.page:59 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkMessageDialog" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/messagedialog.py.page:63 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GActionMap" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/messagedialog.vala.page:8 #, fuzzy #| msgid "MessageDialog" msgctxt "text" msgid "MessageDialog (Vala)" msgstr "Boîte de dialogue de message" #. (itstool) path: page/code #: C/messagedialog.vala.page:25 #, no-wrap msgid "" "\n" "//A window in the application\n" "public class Window : Gtk.ApplicationWindow {\n" "\tpublic Window (Application app) {\n" "\t\tObject (application: app, title: \"Gtk.MessageDialog Example\");\n" "\n" "\t\tvar label = new Gtk.Label (\"This application goes boom!\");\n" "\t\tthis.add (label);\n" "\n" "\t\tvar message_action = new SimpleAction (\"message\", null);\n" "\t\tmessage_action.activate.connect (message);\n" "\t\tthis.add_action (message_action);\n" "\n" "\t\tthis.set_default_size (400, 200);\n" "\t\tthis.show_all ();\n" "\t}\n" "\n" "\tvoid dialog_response (Gtk.Dialog dialog, int response_id) {\n" "\t\tswitch (response_id) {\n" "\t\t\tcase Gtk.ResponseType.OK:\n" "\t\t\t\tprint (\"*boom*\\n\");\n" "\t\t\t\tbreak;\n" "\t\t\tcase Gtk.ResponseType.CANCEL:\n" "\t\t\t\tprint (\"good choice\\n\");\n" "\t\t\t\tbreak;\n" "\t\t\tcase Gtk.ResponseType.DELETE_EVENT:\n" "\t\t\t\tprint (\"dialog closed or cancelled\\n\");\n" "\t\t\t\tbreak;\n" "\t\t}\n" "\t\t\tdialog.destroy();\n" "\t}\n" "\n" "\tvoid message (SimpleAction simple, Variant? parameter) {\n" "\t\tvar messagedialog = new Gtk.MessageDialog (this,\n" " Gtk.DialogFlags.MODAL,\n" " Gtk.MessageType.WARNING,\n" " Gtk.ButtonsType.OK_CANCEL,\n" " \"This action will cause the universe to stop existing.\");\n" "\n" "\t\tmessagedialog.response.connect (dialog_response);\n" "\t\tmessagedialog.show ();\n" "\t}\n" "}\n" "\n" "//This is the Application\n" "public class Application : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew Window (this);\n" "\t}\n" "\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\tvar menu = new Menu ();\n" "\t\tmenu.append (\"Message\", \"win.message\");\n" "\t\tmenu.append (\"Quit\", \"app.quit\");\n" "\t\tthis.app_menu = menu;\n" "\n" "\t\tvar quit_action = new SimpleAction (\"quit\", null);\n" "\t\t//quit_action.activate.connect (this.quit);\n" "\t\tthis.add_action (quit_action);\n" "\t}\n" "\n" "\tpublic Application () {\n" "\t\tObject (application_id: \"org.example.application\");\n" "\t}\n" "}\n" "\n" "//main function creates Application and runs it\n" "int main (string[] args) {\n" "\treturn new Application ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/messagedialog.vala.page:31 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "ResponseType" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/messagedialog.vala.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "MessageDialog" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/messagedialog.vala.page:33 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "DialogFlags" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/messagedialog.vala.page:34 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "MessageType" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/messagedialog.vala.page:35 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "ButtonsType" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/model-view-controller.py.page:9 #, fuzzy #| msgid "The Model/View/Controller design" msgctxt "text" msgid "The Model/View/Controller design (Python)" msgstr "Le concept Modèle/Vue/Contrôleur" #. (itstool) path: info/desc #. (itstool) path: page/title #: C/model-view-controller.py.page:14 C/model-view-controller.py.page:27 msgid "The Model/View/Controller design" msgstr "Le concept Modèle/Vue/Contrôleur" #. (itstool) path: section/title #: C/model-view-controller.py.page:32 C/properties.py.page:32 #: C/signals-callbacks.py.page:32 msgid "Overview" msgstr "Présentation" #. (itstool) path: section/p #: C/model-view-controller.py.page:34 msgid "" "Both the TreeView and the " "ComboBox widgets are built on the " "Model/View/Controller design. The Model (an implementation " "of Gtk.TreeModel, usually Gtk.TreeStore or " "Gtk.ListStore) stores the data; the View (e.g. " "Gtk.TreeView, Gtk.ComboBox, or Gtk." "ComboBoxText) gets change notifications and displays the content of " "the model. The Controller, finally, changes the state of the model " "(via some methods in the model's implementation - such as append() or remove()) and notifies the view of these changes (via " "signals like \"changed\")." msgstr "" "Les deux éléments graphiques TreeView et BoiteCombinee sont " "construits sur le concept Modèle/Vue/Contrôleur. Le Modèle " "(une implémentation de Gtk.TreeModel, habituellemnt soit " "Gtk.TreeStore, soit Gtk.ListStore) stocke les " "données ; laVue (par ex. Gtk.TreeView, Gtk." "ComboBox, ou Gtk.ComboBoxText) obtient les notifications " "de modifications et affiche le contenu du modèle. Enfin, le Contrôleur modifie l'état du modèle (à l'aide de méthodes dans l'implémentation du " "modèle, comme append(), ou remove()) et indique à " "la Vue ces modifications (à l'aide de signaux comme \"changed\")." #. (itstool) path: section/title #: C/model-view-controller.py.page:39 msgid "The Model" msgstr "Le Modèle" #. (itstool) path: section/p #: C/model-view-controller.py.page:41 msgid "" "The main difference between the two main implementations of Gtk." "TreeModel is that Gtk.ListStore contains simple rows of " "data without children, whereas Gtk.TreeStore also contains rows " "of data, but each row may have child rows (which in turn can have child " "rows, and so on)." msgstr "" "La principale différence entre les deux implémentations principales de " "Gtk.TreeModel est que Gtk.ListStore ne contient " "que des lignes de données sans enfant, alors que Gtk.TreeStore " "contient aussi des lignes de données mais que chacune d'elle peut contenir " "des lignes enfants (qui à leur tour peuvent aussi contenir des lignes " "enfants et ainsi de suite)." #. (itstool) path: section/p #: C/model-view-controller.py.page:43 msgid "" "The data in the Model can be retrieved or modified using the tree iter and " "column index, or Gtk.TreeIter, or Gtk.TreePath." msgstr "" "Les données du modèle peuvent être supprimées ou modifiées avec l'itérateur " "arborescent et l'indexe de la colonne, ou avec Gtk.TreeIter, ou " "Gtk.TreePath." #. (itstool) path: section/p #: C/model-view-controller.py.page:45 msgid "" "As with Python's built-in list object you can use len() to get " "the number of rows and use slices to retrieve or set values. Otherwise, the " "method append() returns a Gtk.TreeIter instance, " "which points to the location of the newly inserted row. You can also " "retrieve a Gtk.TreeIter by calling get_iter()." msgstr "" "Comme avec l'objet liste intégré dans Python, vous pouvez obtenir le nombre " "de lignes avec len() et utiliser des segments pour récupérer ou " "définir des valeurs. D'une autre façon, la méthode append() " "renvoie un exemple de Gtk.TreeIter qui pointe vers " "l'emplacement de la ligne qui vient d'être insérée. L'appel à la fonction " "get_iter() récupère aussi un Gtk.TreeIter." #. (itstool) path: section/p #: C/model-view-controller.py.page:47 msgid "" "As Gtk.ListStore contains only one level, i.e. nodes do not " "have any child nodes, a path is essentially the index of the row you want to " "access. In the case of Gtk.TreeStore, a path is a list of " "indexes or a string. The string form is a list of numbers separated by a " "colon. Each number refers to the offset at that level. Thus, the path " "\"0\" refers to the root node and the path \"2:4\" " "refers to the fifth child of the third node." msgstr "" "Comme Gtk.ListStore n'a qu'un seul niveau, c-à-d. les nœuds " "n'ont aucun nœud enfant, un chemin est essentiellement représenté par " "l'index de la ligne à laquelle vous souhaitez accéder. En ce qui concerne " "Gtk.TreeStore, un chemin est représenté par une liste d'indexes " "ou une chaîne de caractères. La chaîne se présente sous la forme d'une liste " "de nombres séparés par une colonne. Chaque nombre se réfère au décalage à ce " "niveau. Donc, le chemin \"0\" se réfère au nœud racine et le " "chemin \"2:4\" se réfère au cinquième enfant du troisième nœud." #. (itstool) path: section/p #: C/model-view-controller.py.page:49 msgid "Useful methods for a Gtk.TreeModel:" msgstr "Méthodes utiles pour un Gtk.TreeModel :" #. (itstool) path: item/p #: C/model-view-controller.py.page:51 msgid "" "get_iter(path) returns a Gtk.TreeIter instance " "pointing to path. This is expected to be a colon-separated list " "of numbers, or a tuple. For example, the string \"10:4:0\" is " "equivalent to the tuple (10, 4, 0), as both would create a path " "of depth 3 pointing to the 11th child of the root node, the 5th child of " "that 11th child, and the 1st child of that 5th child." msgstr "" "La méthode get_iter(chemin) renvoie un exemple de Gtk." "TreeIter qui pointe vers le chemin. Ce chemin est soit " "une liste de nombres séparés par une colonne, soit un tuple. Par exemple, la " "chaîne de caractères \"10:4:0\" est équivalente au tuple " "(10, 4, 0), car tous deux créent un chemin de niveau 3 pointant " "vers le 11ème enfant du nœud racine, le 5ème enfant de cet 11ème enfant et " "le 1er enfant de ce 5ème enfant." #. (itstool) path: item/p #: C/model-view-controller.py.page:52 msgid "" "iter_next(treeiter) returns a Gtk.TreeIter " "instance pointing the node following treeiter at the current level or " "None if there is no next iter." msgstr "" "La méthode iter_next(TreeIter) renvoie un exemple de Gtk." "TreeIter qui pointe vers le nœud TreeIter suivant situé au même " "niveau, ou vers None s'il n'y a rien derrière." #. (itstool) path: item/p #: C/model-view-controller.py.page:53 msgid "" "iter_has_child(treeiter) returns True if " "treeiter has children, False otherwise." msgstr "" "La méthode iter_has_child(TreeIter) renvoie la valeur " "vrai si TreeIter a des enfants, ou faux dans le cas contraire." #. (itstool) path: item/p #: C/model-view-controller.py.page:54 msgid "" "iter_children(treeiter) returns a Gtk.TreeIter " "instance pointing to the first child of treeiter or None if treeiter has no children." msgstr "" "La méthode iter_children(TreeIter) renvoie un exemple de " "Gtk.TreeIter qui pointe vers le premier enfant de " "TreeIter, ou sur None si TreeIter n'a " "pas d'enfant." #. (itstool) path: item/p #: C/model-view-controller.py.page:55 msgid "" "get_iter_first() returns a Gtk.TreeIter instance " "pointing to the first iterator in the tree (the one at the path \"0\") or None if the tree is empty." msgstr "" "La fonction get_iter_first() renvoie un exemple de Gtk." "TreeIter qui pointe vers le premier itérateur arborescent (celui du " "chemin \"0\") ou sur None si l'arborescence est " "vide." #. (itstool) path: section/p #: C/model-view-controller.py.page:58 msgid "Useful methods for a Gtk.ListStore:" msgstr "Méthodes utiles pour un Gtk.ListStore :" #. (itstool) path: item/p #: C/model-view-controller.py.page:60 msgid "" "append(row) appends a new row to this list store, where " "row can be a list of values for each column; row " "can also be omitted or None, and in that case an empty row will " "be appended. The method returns a Gtk.TreeIter pointing to the " "appended row." msgstr "" "La méthode append(ligne) ajoute une nouvelle ligne à ce magasin " "liste, où ligne peut être une liste de valeurs pour chaque " "colonne ; ligne peut aussi être omis ou avoir la valeur " "None et dans ces cas une colonne vide est ajoutée. La méthode " "renvoie un Gtk.TreeIter qui pointe vers la ligne ajoutée." #. (itstool) path: item/p #: C/model-view-controller.py.page:61 C/model-view-controller.py.page:67 msgid "" "remove(iter) removes iter from the Gtk." "ListStore, and returns True if the iter is valid, and " "False if the iter is not. After being removed, iter is set to be the next valid row." msgstr "" "La méthode remove(iter) supprime l'iter du magasin " "Gtk.ListStore et renvoie la valeur vrai si " "l'itérateur est valide ou faux dans le cas contraire. Après sa " "suppression, l'iter est configuré pour devenir la prochaine " "ligne valide." #. (itstool) path: section/p #: C/model-view-controller.py.page:64 msgid "Useful methods for a Gtk.TreeStore:" msgstr "Méthodes utiles pour un Gtk.TreeStore :" #. (itstool) path: item/p #: C/model-view-controller.py.page:66 msgid "" "append(parent, row) appends a new row to this tree store; " "parent must be a valid Gtk.TreeIter. If parent is not " "None, then it will append the new row after the last child of " "parent, otherwise it will append a row to the top level; row " "can be a list of values for each column, or it can be omitted or None; in this latter case an empty row will be appended. The method returns " "a Gtk.TreeIter pointing to the appended row." msgstr "" "La méthode append(parent, ligne) ajoute une nouvelle ligne à ce " "magasin arborescent ; parent doit être un Gtk.TreeIter valide. " "Si la valeur du parent est différente de None, alors elle " "ajoute la nouvelle ligne après le dernier enfant du parent, sinon elle " "ajoute une ligne au premier niveau ; ligne peut être une liste " "de valeurs pour chaque colonne, ou alors peut être omis ou avoir la valeur " "None ; dans ce dernier cas, une colonne vide est ajoutée. La " "méthode renvoie un Gtk.TreeIter qui pointe vers la ligne " "ajoutée." #. (itstool) path: section/title #: C/model-view-controller.py.page:73 msgid "The View: the TreeView case" msgstr "La Vue : le cas de la TreeView" #. (itstool) path: section/p #: C/model-view-controller.py.page:75 msgid "" "A Treeview shows the structure of children and parent items as a tree. See " "for instance this example." msgstr "" "Une TreeView affiche la structure des éléments enfants et parents sous la " "forme des branches d'un arbre. Regardez cet exemple." #. (itstool) path: section/p #: C/model-view-controller.py.page:77 msgid "" "The Gtk.TreeViewColumn is used to organize the vertical columns." msgstr "" "La Gtk.TreeViewColumn est utilisée pour organiser les colonnes " "verticales." #. (itstool) path: section/p #: C/model-view-controller.py.page:79 msgid "Useful methods for a Gtk.TreeView:" msgstr "Méthodes utiles pour une vue Gtk.TreeView :" #. (itstool) path: item/p #: C/model-view-controller.py.page:81 msgid "" "set_model(model) sets the model for this tree view. If this " "tree view already has a model set, it will remove it before setting the new " "model. If model is None, then it will unset the old model." msgstr "" "La méthode set_model(modele) définit le modèle de cette vue " "arborescente. Si elle a déjà un modèle défini, la fonction le supprime avant " "de lui définir le nouveau. Si la valeur du modèle est None, la " "fonction supprime l'ancien modèle." #. (itstool) path: item/p #: C/model-view-controller.py.page:82 msgid "" "get_model() returns the model this tree view is based on, " "None if the model is unset." msgstr "" "La méthode get_model() renvoie le modèle sur lequel est " "construite cette vue arborescente, ou None si le modèle n'est " "pas défini." #. (itstool) path: item/p #: C/model-view-controller.py.page:83 msgid "" "append_column(column) appends column to the list " "of columns." msgstr "" "La méthode append_column(colonne) ajoute colonne à " "la liste de colonnes." #. (itstool) path: item/p #: C/model-view-controller.py.page:84 msgid "" "get_selection() gets the Gtk.TreeSelection " "associated with this tree view." msgstr "" "La méthode get_selection() récupère la sélection Gtk." "TreeSelection associée à cette vue arborescente." #. (itstool) path: section/p #: C/model-view-controller.py.page:87 msgid "Useful methods for a Gtk.TreeViewColumn:" msgstr "Méthodes utiles pour une Gtk.TreeViewColumn :" #. (itstool) path: item/p #: C/model-view-controller.py.page:89 msgid "" "add_attribute(renderer, attribute, value) adds an attribute " "mapping to this column. attribute is the parameter on " "renderer to be set from the value" msgstr "" "La méthode add_attribute(renderer, attribut, valeur) ajoute un " "mappage d'attribut à cette colonne. attribut est le paramètre " "du renderer à définir à partir de la valeur valeur" #. (itstool) path: item/p #: C/model-view-controller.py.page:90 msgid "" "pack_start(renderer, expand) packs renderer into " "the beginning of this column. If expand is False, " "then renderer is allocated no more space than it needs. Any " "unused space is divided evenly between cells for which expand is True." msgstr "" "La méthode pack_start(renderer, expand) compresse le " "renderer au début de cette colonne. Si la valeur " "d'expand est False, alors il est alloué au " "renderer juste l'espace qui lui est nécessaire. Tout espace " "inutilisé est divisé à parts égales entre les cellules pour lesquelles la " "valeur est True." #. (itstool) path: item/p #: C/model-view-controller.py.page:91 msgid "" "pack_end(renderer, expand) adds renderer to end of " "this column. If expand is False, then " "renderer is allocated no more space than it needs. Any unused " "space is divided evenly between cells for which expand is " "True." msgstr "" "La méthode pack_end(renderer, expand) compresse le " "renderer à la fin de cette colonne. Si la valeur " "d'expand est False, alors il est alloué au " "renderer juste l'espace qui lui est nécessaire. Tout espace " "inutilisé est divisé à parts égales entre les cellules pour lesquelles la " "valeur est True." #. (itstool) path: item/p #: C/model-view-controller.py.page:92 #, fuzzy #| msgid "" #| "set_sort_column_id(sort_column_id) sets the column of the " #| "model by which this column (of the view) should be sorted. This also " #| "makes the columnd header clickable." msgid "" "set_sort_column_id(sort_column_id) sets the column of the model " "by which this column (of the view) should be sorted. This also makes the " "column header clickable." msgstr "" "La méthode set_sort_column_id(sort_column_id) définit par quel " "argument la colonne (de cette vue) doit être triée. Elle rend aussi " "cliquable l'en-tête de la colonne." #. (itstool) path: item/p #: C/model-view-controller.py.page:93 msgid "" "set_sort_indicator(setting) sets whether a little arrow is " "displayed in the column header; setting can either be " "True (indicator is shown) or False." msgstr "" "La méthode set_sort_indicator(setting) définit s'il faut " "afficher une petite flèche dans l'en-tête de la colonne ; le setting possible peut être soit True (la flèche est visible), " "soit False." #. (itstool) path: item/p #: C/model-view-controller.py.page:94 msgid "" "set_sort_order(order) changes the order by which the column is " "sorted; order can either be Gtk.SortType.ASCENDING " "or Gtk.SortType.DESCENDING." msgstr "" "La méthode set_sort_order(ordre) modifie l'ordre de tri de la " "colonne ; l'ordre peut être soit Gtk.SortType.ASCENDING, soit Gtk.SortType.DESCENDING." #. (itstool) path: section/title #: C/model-view-controller.py.page:100 msgid "The View: the ComboBox case" msgstr "La Vue : cas de l'élément graphique BoiteCombinee" #. (itstool) path: section/p #: C/model-view-controller.py.page:102 msgid "" "A Gtk.ComboBox allows for the selection of an item from a " "dropdown menu, see for instance this example. For a list of textual choices, one can also use the simpler Gtk." "ComboBoxText. Both Gtk.ComboBox and Gtk." "ComboBoxText can contain an entry." msgstr "" "Une Gtk.ComboBox permet de sélectionner un élément à partir " "d'un menu déroulant, regardez cet exemple. " "Pour une liste de choix textuels, on peut aussi utiliser plus simplement un " "Gtk.ComboBoxText. Les deux peuvent contenir une entrée." #. (itstool) path: section/p #: C/model-view-controller.py.page:104 msgid "Useful methods for a Gtk.ComboBox:" msgstr "Méthodes utiles pour un élément graphique Gtk.ComboBox :" #. (itstool) path: item/p #: C/model-view-controller.py.page:106 msgid "" "The static method new_with_entry() creates a new empty " "Gtk.ComboBox with an entry; the static method " "new_with_model(model) creates a new one with the model " "initialized to model; and the static method " "new_with_model_and_entry(model) is a combination of the two." msgstr "" "La méthode statique new_with_entry() crée une nouvelle " "BoiteCombinee Gtk.ComboBox avec une entrée ; la méthode " "statique new_with_model(model) en crée une nouvelle à partir du " "modèle initialisé à model ; et la méthode statique " "new_with_model_and_entry(model) est une combinaison des deux " "autres." #. (itstool) path: item/p #: C/model-view-controller.py.page:107 msgid "" "get_active_iter() returns a Gtk.TreeIter pointing " "to the current active item. If no active item exists, None is " "returned." msgstr "" "La méthode get_active_iter() renvoie un Gtk.TreeIter qui pointe vers l'élément actif actuel. S'il n'y en a pas, elle " "renvoie None." #. (itstool) path: item/p #: C/model-view-controller.py.page:108 msgid "" "set_model(model) sets the model used by this combo box to be " "model, and it will unset a previously set model (if there is " "any). If model is None, then it will unset the " "model. Note that this function does not clear the cell renderers." msgstr "" "La méthode set_model(model) définit le modèle utilisé par la " "boîte combinée à model et annule le modèle précédent s'il " "existait déjà. Si la valeur model est None, alors " "la fonction annule le paramétrage du modèle. Notez que cette fonction ne " "supprime pas les générateurs de rendu de cellules." #. (itstool) path: item/p #: C/model-view-controller.py.page:109 msgid "" "set_entry_text_column(text_column) sets the model column which " "this combo box should use to get strings from to be text_column. The column text_column in the model of this combo box " "must be of type str (this is only relevant if this combo box " "has been created with the “has-entry” property set to True)." msgstr "" "La méthode set_entry_text_column(text_column) définit la " "colonne du modèle que cette boîte combinée doit utiliser pour que ses " "chaînes de caractères soient du type text_column. La colonne " "text_column dans ce modèle de boîte combinée doit être du type " "str (ceci n'est pertinent que si cette boîte combinée a été " "créée avec la propriété « has-entry » définie à True)." #. (itstool) path: item/p #: C/model-view-controller.py.page:110 #, fuzzy #| msgid "" #| "set_wrap_width(width) sets the wrap width of this combo box " #| "to be width. The wrap width is basically the preferred " #| "number of columns when you want the popup to be layed out in a grid." msgid "" "set_wrap_width(width) sets the wrap width of this combo box to " "be width. The wrap width is basically the preferred number of " "columns when you want the popup to be laid out in a grid." msgstr "" "La méthode set_wrap_width(largeur) définit la largeur du texte " "de cette boîte combinée à largeur. Basiquement, la largeur du " "texte est votre nombre préféré de colonnes quand vous voulez que le message " "surgissant soit placé dans une grille." #. (itstool) path: section/p #: C/model-view-controller.py.page:113 msgid "Useful methods for a Gtk.ComboBoxText:" msgstr "Méthodes utiles pour une boîte Gtk.ComboBoxText :" #. (itstool) path: item/p #: C/model-view-controller.py.page:115 msgid "" "The static method new_with_entry() creates a new empty " "Gtk.ComboBoxText with an entry." msgstr "" "La méthode statique new_with_entry() crée une nouvelle " "Gtk.ComboBoxText vide avec une entrée." #. (itstool) path: item/p #: C/model-view-controller.py.page:116 msgid "" "append_text(text) appends text to the list of " "strings stored in this combo box." msgstr "" "La méthode append_text(texte) ajoute le texte à la " "liste des chaînes stockées dans cette boîte combinée." #. (itstool) path: item/p #: C/model-view-controller.py.page:117 msgid "" "get_active_text() returns the currently active string in this " "combo box, or None if none is selected. If this combo box " "contains an entry, this function will return its contents (which will not " "necessarily be an item from the list)." msgstr "" "La méthode get_active_text() renvoie la chaîne active actuelle " "de cette boîte combinée, ou None si aucune chaîne n'est " "sélectionnée. Si la boîte combinée contient une entrée, la méthode renvoie " "son contenu (qui n'est pas nécessairement un élément de la liste)." #. (itstool) path: section/title #: C/model-view-controller.py.page:123 msgid "The View: the Cellrenderers" msgstr "La Vue : les Cellrenderers" #. (itstool) path: section/p #: C/model-view-controller.py.page:125 msgid "" "The View makes use of Gtk.CellRenderers of various types to " "draw the data." msgstr "" "La Vue se sert de Gtk.CellRenderer de différents types pour " "dessiner les données." #. (itstool) path: section/p #: C/model-view-controller.py.page:127 msgid "Implementations of Gtk.CellRenderer and useful methods:" msgstr "Implémentations de Gtk.CellRenderer et méthodes utiles :" #. (itstool) path: item/p #: C/model-view-controller.py.page:129 msgid "Gtk.CellRendererText - renders text in a cell" msgstr "Gtk.CellRendererText - génère du texte dans une cellule" #. (itstool) path: item/p #: C/model-view-controller.py.page:130 msgid "" "Gtk.CellRendererToggle - renders a toggle or radio button in a " "cell. Useful methods:" msgstr "" "Gtk.CellRendererToggle - génère un bouton de basculement ou de " "radio dans une cellule. Méthodes utiles :" #. (itstool) path: item/p #: C/model-view-controller.py.page:132 msgid "" "set_active(setting) - activates or deactivates a cell renderer" msgstr "" "set_active(setting) - active ou désactive un générateur de rendu" #. (itstool) path: item/p #: C/model-view-controller.py.page:133 msgid "get_active() - returns whether the cell renderer is active" msgstr "" "get_active() - indique si le générateur de rendu est actif" #. (itstool) path: item/p #: C/model-view-controller.py.page:134 msgid "" "set_radio(radio) - if radio is True, the cell " "renderer renders a radio toggle (i.e. a toggle in a group of mutually-" "exclusive toggles); if False, it renders a check toggle (a " "standalone boolean option)" msgstr "" "set_radio(radio) - si la valeur radio est True, le " "générateur crée un bouton de radio inverseur (par ex. un inverseur d'un " "groupe mutuellement exclusif) ; si la valeur est False, il " "génère un inverseur de vérification (une option boléenne autonome)" #. (itstool) path: item/p #: C/model-view-controller.py.page:135 msgid "" "get_radio() - returns whether we are rendering radio toggles " "rather than checkboxes." msgstr "" "get_radio() - indique si nous générons des boutons de " "basculement au lieu de cases à cocher." #. (itstool) path: item/p #: C/model-view-controller.py.page:138 msgid "Gtk.CellRendererPixbuf - renders an image in a cell" msgstr "" "Gtk.CellRendererPixbuf - génère un rendu image dans une cellule" #. (itstool) path: item/p #: C/model-view-controller.py.page:139 msgid "" "Gtk.CellRendererCombo - renders text in a cell; but while " "Gtk.CellRendererText offers a simple entry to edit the text, " "Gtk.CellRendererCombo offers a Gtk.ComboBox widget " "to edit the text. It can be used with and without an associated Gtk.Entry " "widget, depending on the value of the “has-entry” property." msgstr "" "Gtk.CellRendererCombo - génère un rendu texte dans une " "cellule ; mais, alors que Gtk.CellRendererText n'offre qu'une " "simple entrée pour modifier le texte, Gtk.CellRendererCombo " "offre un élément graphique Gtk.ComboBox pour la même action. Il " "peut être utilisé avec ou sans un élément graphique Gtk.Entry associé, en " "fonction de la propriété de la valeur « has-entry »." #. (itstool) path: item/p #: C/model-view-controller.py.page:140 msgid "" "Gtk.CellRendererProgress - renders a numeric value as a " "progress bar in a cell; it can display a text on top of the progress bar" msgstr "" "Gtk.CellRendererProgress - génère une valeur numérique sous " "forme de barre de progression dans une cellule ; il peut afficher du texte " "au-dessus de la barre de progression" #. (itstool) path: item/p #: C/model-view-controller.py.page:141 msgid "" "Gtk.CellRendererSpinner - renders a spinning animation in a cell" msgstr "" "Gtk.CellRendererSpinner - génère l'animation d'un indicateur " "dans une cellule" #. (itstool) path: item/p #: C/model-view-controller.py.page:142 msgid "Gtk.CellRendererSpin - renders a spin button in a cell" msgstr "" "Gtk.CellRendererSpin - génère un bouton d'activité dans une " "cellule" #. (itstool) path: item/p #: C/model-view-controller.py.page:143 msgid "" "Gtk.CellRendererAccel - renders a keyboard accelerator in a cell" msgstr "" "Gtk.CellRendererAccel - génère un accélérateur de clavier dans " "une cellule" #. (itstool) path: section/title #: C/model-view-controller.py.page:149 msgid "The Controller: the Selection" msgstr "Le contrôleur : la sélection" #. (itstool) path: section/p #: C/model-view-controller.py.page:151 msgid "" "Most applications will need to not only deal with displaying data, but also " "receiving input events from users. To do this, simply get a reference to a " "selection object and connect to the \"changed\" signal." msgstr "" "La plupart des applications doivent non seulement afficher des données, mais " "aussi réceptionner les événements émis par les utilisateurs. Pour faire " "cela, il faut tout simplement obtenir une référence pour un objet " "sélectionné et la connecter au signal « changed »." #. (itstool) path: section/code #: C/model-view-controller.py.page:153 #, no-wrap msgid "" "\n" "select = tree.get_selection()\n" "select.connect(\"changed\", on_tree_selection_changed)\n" msgstr "" "\n" "select = tree.get_selection()\n" "select.connect(\"changed\", on_tree_selection_changed)\n" #. (itstool) path: section/p #: C/model-view-controller.py.page:158 msgid "Then to retrieve data for the row selected:" msgstr "Ensuite, pour récupérer les données pour la colonne sélectionnée :" #. (itstool) path: section/code #: C/model-view-controller.py.page:160 #, no-wrap msgid "" "\n" "def on_tree_selection_changed(selection):\n" " model, treeiter = selection.get_selected()\n" " if treeiter != None:\n" " print \"You selected\", model[treeiter][0]\n" msgstr "" "\n" "def on_tree_selection_changed(selection):\n" " model, treeiter = selection.get_selected()\n" " if treeiter != None:\n" " print \"You selected\", model[treeiter][0]\n" #. (itstool) path: section/p #: C/model-view-controller.py.page:167 #, fuzzy #| msgid "Useful method for a Gtk.TreeSelection:" msgid "Useful methods for a Gtk.TreeSelection:" msgstr "Méthodes utiles pour une Gtk.TreeSelection :" #. (itstool) path: item/p #: C/model-view-controller.py.page:170 msgid "" "set_mode(type) sets the type of selection, where type is one of" msgstr "" "La méthode set_mode(type) définit le type de sélection, où type " "est l'un des" #. (itstool) path: item/p #: C/model-view-controller.py.page:172 msgid "Gtk.SelectionMode.NONE - no selection is possible" msgstr "Gtk.SelectionMode.NONE - pas de sélection possible" #. (itstool) path: item/p #: C/model-view-controller.py.page:173 msgid "" "Gtk.SelectionMode.SINGLE - zero or one element may be selected" msgstr "" "Gtk.SelectionMode.SINGLE - zéro ou un élément peut être " "sélectionné" #. (itstool) path: item/p #: C/model-view-controller.py.page:174 msgid "" "Gtk.SelectionMode.BROWSE - exactly one element is selected. In " "some circumstances, such as initially or during a search operation, it’s " "possible for no element to be selected. What is really enforced is that the " "user can’t deselect a currently selected element except by selecting another " "element." msgstr "" "Gtk.SelectionMode.BROWSE - exactement un élément est " "sélectionné. Dans certaines circonstances, comme au début ou pendant une " "opération de recherche, il est possible qu'il n'y ait aucun élément pouvant " "être sélectionné. Ce qui est réellement imposé, c'est l'impossibilité pour " "l'utilisateur de désélectionner un élément actuellement sélectionné sauf " "s'il en sélectionne un autre." #. (itstool) path: item/p #: C/model-view-controller.py.page:175 #, fuzzy #| msgid "" #| "Gtk.SelectionMode.MULTIPLE -any number of elements may be " #| "selected. Clicks toggle the state of an item. Any number of elements may " #| "be selected. The Ctrl key may be used to enlarge the selection, and Shift " #| "key to select between the focus and the child pointed to. Some widgets " #| "may also allow Click-drag to select a range of elements." msgid "" "Gtk.SelectionMode.MULTIPLE -any number of elements may be " "selected. Clicks toggle the state of an item. The Ctrl key may be used to " "enlarge the selection, and Shift key to select between the focus and the " "child pointed to. Some widgets may also allow Click-drag to select a range " "of elements." msgstr "" "Gtk.SelectionMode.MULTIPLE - n'importe quel nombre d'éléments " "peuvent être sélectionnés. Un clic sur un élément modifie son état. La " "touche Ctrl permet d'élargir la sélection et la touche Maj d'y ajouter les " "enfants pointés. Quelques éléments graphiques peuvent aussi permettre le " "cliqué-glissé pour sélectionner un ensemble d'éléments." #. (itstool) path: item/p #: C/model-view-controller.py.page:178 msgid "" "get_selected() returns a tuple (model, treeiter), " "where model is the current model and treeiter a " "Gtk.TreeIter pointing to the currently selected row, or None if " "no rows are selected. The method does not work if the selection mode is set " "to Gtk.SelectionMode.MULTIPLE; in that case, use " "get_selected_rows() instead, which Returns a list of Gtk." "TreePath instances of all selected rows." msgstr "" "La méthode get_selected() renvoie un tuple (modele, " "TreeIter), où modele est le modèle actuel et " "TreeIter un Gtk.TreeIter qui pointe soit vers la " "ligne actuellement sélectionnée, soit vers None si aucune ligne n'est " "sélectionnée. La méthode ne marche pas si le type de sélection est défini à " "Gtk.SelectionMode.MULTIPLE ; dans ce cas, utilisez à la place " "la fonction get_selected_rows(), qui renvoie une liste " "d'exemples Gtk.TreePath de toutes les lignes sélectionnées." #. (itstool) path: section/title #: C/model-view-controller.py.page:184 C/properties.py.page:57 #: C/signals-callbacks.py.page:46 C/strings.py.page:112 msgid "References" msgstr "Références" #. (itstool) path: item/p #: C/model-view-controller.py.page:187 C/treeview_advanced_liststore.py.page:45 #: C/treeview_cellrenderertoggle.py.page:45 #: C/treeview_simple_liststore.py.page:46 C/treeview_treestore.py.page:45 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTreeModel" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/model-view-controller.py.page:188 C/treeview_advanced_liststore.py.page:44 #: C/treeview_cellrenderertoggle.py.page:44 #: C/treeview_simple_liststore.py.page:45 C/treeview_treestore.py.page:44 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTreeView" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/model-view-controller.py.page:189 C/treeview_advanced_liststore.py.page:48 #: C/treeview_cellrenderertoggle.py.page:49 #: C/treeview_simple_liststore.py.page:49 C/treeview_treestore.py.page:48 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTreeViewColumn" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/model-view-controller.py.page:191 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkCellRenderer" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/paned.c.page:8 #, fuzzy #| msgid "Gtk.Paned" msgctxt "text" msgid "Paned (C)" msgstr "Gtk.Paned" #. (itstool) path: info/desc #: C/paned.c.page:18 C/paned.js.page:18 C/paned.py.page:19 C/paned.vala.page:18 msgid "A widget with two adjustable panes" msgstr "" #. (itstool) path: page/title #: C/paned.c.page:21 C/paned.js.page:21 C/paned.py.page:22 C/paned.vala.page:21 #, fuzzy #| msgid "Gtk.Paned" msgid "Paned" msgstr "Gtk.Paned" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/paned.c.page:22 C/paned.js.page:22 C/paned.py.page:23 C/paned.vala.page:22 msgctxt "_" msgid "external ref='media/paned.png' md5='8c7e1df065395c9aafcd65036a293d8a'" msgstr "" #. (itstool) path: page/p #: C/paned.c.page:23 C/paned.js.page:23 C/paned.py.page:24 C/paned.vala.page:23 msgid "Two images in two adjustable panes, horizontally aligned." msgstr "" #. (itstool) path: section/code #: C/paned.c.page:29 #, no-wrap msgid "" "#include <gtk/gtk.h>\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *paned;\n" " GtkWidget *window;\n" " GtkWidget *image1;\n" " GtkWidget *image2;\n" "\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Paned Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 450, 350);\n" "\n" " paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);\n" " image1 = gtk_image_new_from_file (\"gnome-image.png\");\n" " image2 = gtk_image_new_from_file (\"tux.png\");\n" "\n" " gtk_paned_add1 (GTK_PANED (paned), image1);\n" " gtk_paned_add2 (GTK_PANED (paned), image2);\n" "\n" " gtk_container_add (GTK_CONTAINER (window), paned);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/paned.c.page:36 C/paned.py.page:42 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkPaned" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/paned.c.page:37 C/paned.js.page:37 C/paned.py.page:43 C/paned.vala.page:37 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Standard Enumerations" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/paned.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Paned (JavaScript)" msgstr "JavaScript" #. (itstool) path: section/code #: C/paned.js.page:29 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class PanedExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({ application_id: 'org.example.panedexample' });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this.window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" " // Create the application window\n" " this.window = new Gtk.ApplicationWindow ({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Paned Window Example\",\n" " default_width: 450,\n" " default_height: 350,\n" " border_width: 10 });\n" "\n" " // a new widget with two adjustable panes,\n" " // one on the left and one on the right\n" " this.paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL);\n" "\n" " // two images\n" " this.image1 = new Gtk.Image();\n" " this.image1.set_from_file(\"gnome-image.png\");\n" " this.image2 = new Gtk.Image();\n" " this.image2.set_from_file(\"tux.png\");\n" "\n" " // add the first image to the left pane\n" " this.paned.add1(this.image1);\n" " // add the second image to the right pane\n" " this.paned.add2(this.image2)\n" "\n" " // add the panes to the window\n" " this.window.add(this.paned)\n" " this.window.show_all();\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new PanedExample();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/paned.js.page:36 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkPaned" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/paned.js.page:38 C/scrolledwindow.js.page:38 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "GtkImage" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: info/title #: C/paned.py.page:8 #, fuzzy #| msgid "Python" msgctxt "text" msgid "Paned (Python)" msgstr "Python" #. (itstool) path: section/code #: C/paned.py.page:30 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Paned Example\", application=app)\n" " self.set_default_size(450, 350)\n" "\n" " # a new widget with two adjustable panes,\n" " # one on the left and one on the right\n" " paned = Gtk.Paned.new(Gtk.Orientation.HORIZONTAL)\n" "\n" " # two images\n" " image1 = Gtk.Image()\n" " image1.set_from_file(\"gnome-image.png\")\n" " image2 = Gtk.Image()\n" " image2.set_from_file(\"tux.png\")\n" "\n" " # add the first image to the left pane\n" " paned.add1(image1)\n" " # add the second image to the right pane\n" " paned.add2(image2)\n" "\n" " # add the panes to the window\n" " self.add(paned)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/paned.py.page:34 #, fuzzy #| msgid "Useful methods for a Scale widget" msgid "Useful methods for a Paned widget" msgstr "Méthodes utiles pour un élément graphique échelle" #. (itstool) path: section/p #: C/paned.py.page:35 msgid "" "To have two vertically aligned panes, use Gtk.Orientation.VERTICAL instead of Gtk.Orientation.HORIZONTAL. The method " "add1(widget1) will add the widget1 to the top " "pane, and add2(widget2) will add the widget2 to " "the bottom pane." msgstr "" #. (itstool) path: info/title #: C/paned.vala.page:8 msgctxt "text" msgid "Paned (Vala)" msgstr "Paned (Vala)" #. (itstool) path: section/code #: C/paned.vala.page:29 #, no-wrap msgid "" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\twindow.title = \"Paned Example\";\n" "\t\twindow.set_default_size (450,350);\n" "\n" "\t\t// a new widget with two adjustable panes,\n" "\t\t// one on the left and one on the right\n" "\t\tvar paned = new Gtk.Paned (Gtk.Orientation.HORIZONTAL);\n" "\n" "\t\t/* two images */\n" "\t\tvar image1 = new Gtk.Image ();\n" "\t\timage1.set_from_file (\"gnome-image.png\");\n" "\t\tvar image2 = new Gtk.Image ();\n" "\t\timage2.set_from_file (\"tux.png\");\n" "\n" "\t\t/* add the first image to the left pane */\n" "\t\tpaned.add1 (image1);\n" "\n" "\t\t/* add the second image to the right pane */\n" "\t\tpaned.add2 (image2);\n" "\n" "\t\t/* add the panes to the window */\n" "\t\twindow.add (paned);\n" "\t\twindow.show_all ();\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/paned.vala.page:36 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkPaned" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/photo-wall.c.page:7 #, fuzzy #| msgid "Photo Wall" msgctxt "text" msgid "Photo wall (C)" msgstr "Mur de photos" #. (itstool) path: info/desc #: C/photo-wall.c.page:10 msgid "A Clutter image viewer" msgstr "Un visionneur d'images avec Clutter" #. (itstool) path: credit/name #: C/photo-wall.c.page:14 msgid "Chris Kühl" msgstr "Chris Kühl" #. (itstool) path: page/title #: C/photo-wall.c.page:28 #, fuzzy #| msgid "Photo Wall" msgid "Photo wall" msgstr "Mur de photos" #. (itstool) path: synopsis/p #: C/photo-wall.c.page:31 msgid "" "For this example we will build a simple image viewer using Clutter. You will " "learn:" msgstr "" "Dans cet exemple, nous allons fabriquer un visionneur d'images simple avec " "Clutter. Vous apprendrez :" #. (itstool) path: item/p #: C/photo-wall.c.page:33 msgid "How to size and position ClutterActors" msgstr "comment dimensionner et positionner les ClutterActor," #. (itstool) path: item/p #: C/photo-wall.c.page:34 msgid "How to place an image in a ClutterActor" msgstr "comment placer une image dans un ClutterActor," #. (itstool) path: item/p #: C/photo-wall.c.page:35 msgid "How to do simple transitions using Clutter's animation framework" msgstr "" "comment faire des transitions simples avec la structure d'animation de " "Clutter," #. (itstool) path: item/p #: C/photo-wall.c.page:36 msgid "How to make ClutterActors respond to mouse events" msgstr "" "comment faire réagir les ClutterActor aux événements de la " "souris," #. (itstool) path: item/p #: C/photo-wall.c.page:37 msgid "How to get file names from a directory" msgstr "et comment récupérer des noms de fichier depuis un répertoire." #. (itstool) path: section/title #: C/photo-wall.c.page:42 C/record-collection.js.page:40 msgid "Introduction" msgstr "Introduction" #. (itstool) path: section/p #: C/photo-wall.c.page:43 #, fuzzy #| msgid "" #| "Clutter is a library for creating dynamic user interfaces using OpenGL " #| "for hardware acceleration. This example demonstates a small, but central, " #| "part of the Clutter library to create a simple but attractive image " #| "viewing program." msgid "" "Clutter is a library for creating dynamic user interfaces using OpenGL for " "hardware acceleration. This example demonstrates a small, but central, part " "of the Clutter library to create a simple but attractive image viewing " "program." msgstr "" "Clutter est une bibliothèque pour créer des interfaces utilisateur " "dynamiques utilisant OpenGL pour l'accélération matérielle. Cet exemple " "montre une petite partie, mais néanmoins centrale, de la bibliothèque " "Clutter pour écrire un programme simple, mais sympathique, de visionneur " "d'images." #. (itstool) path: section/p #: C/photo-wall.c.page:46 #, fuzzy #| msgid "" #| "To help us reach our goal we will be utilising a few other common pieces " #| "of GLib as well. Most importantly, we'll use one GSList, a " #| "singly-linked list, to hold our ClutterActors and another " #| "one for file path names. We will also use GDir, a utility " #| "for working with directories, to access our image directory and gather " #| "file paths." msgid "" "To help us reach our goal we will be utilising a few other common pieces of " "GLib as well. Most importantly, we'll use one GPtrArray, a " "dynamic array of pointers, to hold the file path names. We will also use " "GDir, a utility for working with directories, to access our " "image directory and gather file paths." msgstr "" "Pour nous aider dans cette tâche, nous utilisons également quelques autres " "éléments classiques de GLib. Parmi les plus importants, nous utiliserons " "GSList, une liste simplement chaînée, pour contenir nos " "ClutterActor et une autre pour les noms de chemin des fichiers. " "Nous utiliserons également GDir, un utilitaire pour travailler " "avec des répertoires, afin d'accéder au répertoire de nos images et de " "récupérer les chemins de fichier." #. (itstool) path: item/p #: C/photo-wall.c.page:59 #, fuzzy #| msgid "" #| "Choose Gtk+ (simple) from the C tab, click " #| "Continue, and fill out your details on the next few pages. Use " #| "photo-wall as project name and directory." msgid "" "Choose GTK+ (simple) from the C tab, click " "Continue, and fill out your details on the next few pages. Use " "photo-wall as project name and directory." msgstr "" "Cliquez sur l'onglet C, choisissez Gtk+ (simple), " "cliquez sur Continuer et renseignez les champs requis des pages " "suivantes avec vos informations. Saisissez murdephotos (sans " "accent) comme nom de projet et de répertoire." #. (itstool) path: item/p #: C/photo-wall.c.page:62 msgid "" "Make sure that Use GtkBuilder for user interface is disabled as " "we will create the UI manually in this tutorial. Check the Guitar-Tuner tutorial using the interface builder." msgstr "" "Assurez-vous d'avoir désactivé Utiliser GtkBuilder pour l'interface " "utilisateur car nous allons créer l'interface utilisateur manuellement " "dans cet exemple. Consultez le tutoriel Accordeur de guitare si vous souhaitez savoir comment utiliser le " "constructeur d'interface GtkBuilder." #. (itstool) path: item/p #: C/photo-wall.c.page:67 msgid "" "Enable Configure external packages. On the next page, select " "clutter-1.0 from the list to include the Clutter library in your " "project." msgstr "" "Activez Configuration des paquets externes. Sur la page suivante, " "sélectionnez clutter-1.0 dans la liste pour inclure la bibliothèque " "Clutter à votre projet." #. (itstool) path: section/title #: C/photo-wall.c.page:80 msgid "A look at Photo Wall" msgstr "Un aperçu du mur de photos" #. (itstool) path: section/p #: C/photo-wall.c.page:81 msgid "Our image viewer presents the user with a wall of images." msgstr "Notre visionneur d'images vous montre un mur de photos." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/photo-wall.c.page:84 #, fuzzy #| msgid "" #| "@@image: 'media/photo-wall.png'; md5=f19590d97e8ec029cda3c44b769c11cd" msgctxt "_" msgid "" "external ref='media/photo-wall.png' md5='f19590d97e8ec029cda3c44b769c11cd'" msgstr "@@image: 'media/photo-wall.png'; md5=f19590d97e8ec029cda3c44b769c11cd" #. (itstool) path: section/p #: C/photo-wall.c.page:85 msgid "" "When an image is clicked, it is animated to fill the viewing area. When the " "image having focus is clicked it is returned to its original position using " "an animation with the same duration of 500 milliseconds." msgstr "" "Quand une image est cliquée, elle est animée pour remplir la zone " "d'affichage. Lorsque la photo qui possède le focus est cliquée, elle " "retourne à sa position d'origine en utilisant une animation qui dure " "également 500 millisecondes." #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/photo-wall.c.page:87 #, fuzzy #| msgid "" #| "@@image: 'media/photo-wall-focused.png'; " #| "md5=9f1ceecf3a28c1e468597b093a10cbae" msgctxt "_" msgid "" "external ref='media/photo-wall-focused.png' " "md5='9f1ceecf3a28c1e468597b093a10cbae'" msgstr "" "@@image: 'media/photo-wall-focused.png'; md5=9f1ceecf3a28c1e468597b093a10cbae" #. (itstool) path: section/title #: C/photo-wall.c.page:91 msgid "Initial setup" msgstr "Configuration initiale" #. (itstool) path: section/p #: C/photo-wall.c.page:92 msgid "" "The following code segment contains many of the defines and variables we " "will be using in the following sections. Use this as a reference for later " "sections. Copy this code to the beginning of src/main.c:" msgstr "" "La partie de code suivante contient beaucoup de définitions et de variables " "qui sont utilisées dans les sections suivantes. Servez-vous en comme " "référence. Copiez ce code au début du fichier src/main.c :" #. (itstool) path: section/code #: C/photo-wall.c.page:95 #, no-wrap msgid "" "\n" "#include <gdk-pixbuf/gdk-pixbuf.h>\n" "#include <clutter/clutter.h>\n" "\n" "#define STAGE_WIDTH 800\n" "#define STAGE_HEIGHT 600\n" "\n" "#define THUMBNAIL_SIZE 200\n" "#define ROW_COUNT (STAGE_HEIGHT / THUMBNAIL_SIZE)\n" "#define COL_COUNT (STAGE_WIDTH / THUMBNAIL_SIZE)\n" "#define THUMBNAIL_COUNT (ROW_COUNT * COL_COUNT)\n" "\n" "#define ANIMATION_DURATION_MS 500\n" "\n" "#define IMAGE_DIR_PATH \"./berlin_images/\"\n" "\n" "static GPtrArray *img_paths;\n" "\n" "static ClutterPoint unfocused_pos;\n" "\n" msgstr "" #. (itstool) path: section/title #: C/photo-wall.c.page:119 msgid "Jumping into the code" msgstr "Immersion dans le code" #. (itstool) path: section/p #: C/photo-wall.c.page:120 msgid "" "We will start by taking a look at the main() function as a " "whole. Then we'll discuss the other code sections in detail. Change the " "src/main.c to contain this main() function. You " "can delete the create_window() function as we don't need it in " "this example." msgstr "" "Nous commencerons par analyser la fonction main() dans son " "ensemble. Ensuite nous discuterons des autres parties du programme en " "détail. Modifiez le fichier src/main.c pour qu'il contienne la " "fonction main(). Vous pouvez aussi supprimer la fonction " "create_window() car on n'en a plus besoin dans cet exemple." #. (itstool) path: section/code #: C/photo-wall.c.page:123 #, no-wrap msgid "" "\n" "int\n" "main(int argc, char *argv[])\n" "{\n" " ClutterColor stage_color = { 16, 16, 16, 255 };\n" " ClutterActor *stage = NULL;\n" "\n" " if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS)\n" " return 1;\n" "\n" " stage = clutter_stage_new();\n" " clutter_actor_set_size(stage, STAGE_WIDTH, STAGE_HEIGHT);\n" " clutter_actor_set_background_color(stage, &stage_color);\n" " clutter_stage_set_title(CLUTTER_STAGE (stage), \"Photo Wall\");\n" " g_signal_connect(stage, \"destroy\", G_CALLBACK(clutter_main_quit), NULL);\n" "\n" " load_image_path_names();\n" "\n" " guint row = 0;\n" " guint col = 0;\n" " for(row=0; row < ROW_COUNT; ++row)\n" " {\n" " for(col=0; col < COL_COUNT; ++col)\n" " {\n" " const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n" " GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, NULL);\n" " ClutterContent *image = clutter_image_new ();\n" " ClutterActor *actor = clutter_actor_new ();\n" "\n" " if (pixbuf != NULL)\n" " {\n" " clutter_image_set_data(CLUTTER_IMAGE(image),\n" " gdk_pixbuf_get_pixels(pixbuf),\n" " gdk_pixbuf_get_has_alpha(pixbuf)\n" " ? COGL_PIXEL_FORMAT_RGBA_8888\n" " : COGL_PIXEL_FORMAT_RGB_888,\n" " gdk_pixbuf_get_width(pixbuf),\n" " gdk_pixbuf_get_height(pixbuf),\n" " gdk_pixbuf_get_rowstride(pixbuf),\n" " NULL);\n" " }\n" "\n" " clutter_actor_set_content(actor, image);\n" " g_object_unref(image);\n" " g_object_unref(pixbuf);\n" "\n" " initialize_actor(actor, row, col);\n" " clutter_actor_add_child(stage, actor);\n" " }\n" " }\n" "\n" " /* Show the stage. */\n" " clutter_actor_show(stage);\n" "\n" " /* Start the clutter main loop. */\n" " clutter_main();\n" "\n" " g_ptr_array_unref(img_paths);\n" "\n" " return 0;\n" "}" msgstr "" #. (itstool) path: item/p #: C/photo-wall.c.page:185 msgid "" "Line 4: ClutterColor is defined by setting the red, green, blue " "and transparency (alpha) values. The values range from 0-255. For " "transparency a value of 255 is opaque." msgstr "" "Ligne 4 : configuration de ClutterColor en paramétrant les " "valeurs rouge, vert, bleu et celle de transparence (alpha). Les valeurs sont " "comprises entre 0 et 255. Pour la transparence, une valeur de 255 représente " "l'opacité." #. (itstool) path: item/p #: C/photo-wall.c.page:186 msgid "" "Line 7: You must initialize Clutter. If you forget to do this, you will get " "very strange errors. Be warned." msgstr "" "Ligne 7 : vous devez initialiser Clutter. Attention, si vous oubliez de le " "faire, vous aurez de très étranges messages d'erreur. Vous êtes prévenu." #. (itstool) path: item/p #: C/photo-wall.c.page:187 #, fuzzy #| msgid "" #| "Lines 9‒11: Here we get the default ClutterStage that was " #| "provided by clutter_init. We then set the size using the " #| "defines from the previous section and the address of the " #| "ClutterColor we just defined." msgid "" "Lines 10‒14: Here we create a new ClutterStage . We then set " "the size using the defines from the previous section and the address of the " "ClutterColor we just defined." msgstr "" "Lignes 9‒11 : ici nous obtenons le ClutterStage par défaut qui " "a été fourni par clutter_init puis nous définissons sa taille " "en utilisant les variables définies à la section précédente et l'adresse du " "ClutterColor que nous venons de définir." #. (itstool) path: note/p #: C/photo-wall.c.page:188 msgid "" "A ClutterStage is the top-level ClutterActor onto " "which other ClutterActors are placed." msgstr "" "Un ClutterStage est le ClutterActor de premier " "niveau sur lequel les autres ClutterActor sont disposés." #. (itstool) path: item/p #: C/photo-wall.c.page:190 #, fuzzy #| msgid "" #| "Line 12: Here we call our function for getting the image file paths. " #| "We'll look at this in a bit." msgid "" "Line 16: Here we call our function for getting the image file paths. We'll " "look at this in a bit." msgstr "" "Ligne 13 : ici nous appelons notre fonction pour obtenir les chemins des " "fichiers image. Nous l'examinerons dans un instant." #. (itstool) path: item/p #: C/photo-wall.c.page:191 #, fuzzy #| msgid "" #| "Lines 14‒26: This is where we set up the ClutterActors, load " #| "the images and place them into their spot in the image wall. We will look " #| "at this in detail in the next section." msgid "" "Lines 18‒49: This is where we set up the ClutterActors, load " "the images and place them into their spot in the image wall. We will look at " "this in detail in the next section." msgstr "" "Ligne 15-27 : c'est l'endroit où nous paramétrons les ClutterActor, chargeons les images et les disposons au bon endroit dans le mur " "d'images. Nous regarderons cela en détail dans la section suivante." #. (itstool) path: item/p #: C/photo-wall.c.page:192 #, fuzzy #| msgid "" #| "Line 29: Show the stage and all its children, meaning our images." msgid "" "Line 52: Show the stage and all its children, meaning our images." msgstr "" "Ligne 29 : affichage de « stage » et de tous ses enfants, c'est-à-" "dire nos images." #. (itstool) path: item/p #: C/photo-wall.c.page:193 #, fuzzy #| msgid "Line 32: Start the Clutter main loop." msgid "Line 55: Start the Clutter main loop." msgstr "Ligne 32 : démarrage de la boucle principale de Clutter." #. (itstool) path: section/title #: C/photo-wall.c.page:198 msgid "Setting up our image actors" msgstr "Mise en place de nos acteurs image" #. (itstool) path: note/p #: C/photo-wall.c.page:199 msgid "" "In Clutter, an actor is the most basic visual element. Basically, everything " "you see is an actor." msgstr "" "Dans Clutter, un acteur est l'élément visuel le plus élémentaire. En gros, " "tout ce que vous voyez est un acteur." #. (itstool) path: section/p #: C/photo-wall.c.page:200 msgid "" "In this section, we are going to take a closer look at the loop used for " "setting up the ClutterActors that will display our images." msgstr "" "Dans cette section, nous allons regarder plus en détail la boucle utilisée " "pour paramétrer les ClutterActor qui affichent nos images." #. (itstool) path: section/code #: C/photo-wall.c.page:203 #, no-wrap msgid "" "\n" "guint row = 0;\n" "guint col = 0;\n" "for(row=0; row < ROW_COUNT; ++row)\n" "{\n" " for(col=0; col < COL_COUNT; ++col)\n" " {\n" " const char *img_path = g_ptr_array_index(img_paths, (row * COL_COUNT) + col);\n" " GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file_at_size(img_path, STAGE_HEIGHT, STAGE_HEIGHT, NULL);\n" " ClutterContent *image = clutter_image_new ();\n" " ClutterActor *actor = clutter_actor_new ();\n" "\n" " if (pixbuf != NULL)\n" " {\n" " clutter_image_set_data(CLUTTER_IMAGE(image),\n" " gdk_pixbuf_get_pixels(pixbuf),\n" " gdk_pixbuf_get_has_alpha(pixbuf)\n" " ? COGL_PIXEL_FORMAT_RGBA_8888\n" " : COGL_PIXEL_FORMAT_RGB_888,\n" " gdk_pixbuf_get_width(pixbuf),\n" " gdk_pixbuf_get_height(pixbuf),\n" " gdk_pixbuf_get_rowstride(pixbuf),\n" " NULL);\n" " }\n" "\n" " clutter_actor_set_content(actor, image);\n" " g_object_unref(image);\n" " g_object_unref(pixbuf);\n" "\n" " initialize_actor(actor, row, col);\n" " clutter_actor_add_child(stage, actor);\n" " }\n" "}\n" "\n" msgstr "" #. (itstool) path: item/p #: C/photo-wall.c.page:239 #, fuzzy #| msgid "" #| "Line 5: Here we want to get the path at the nth location in " #| "the GSList that is holding our image path names. The nth position is calculated based on row and col. The return value is a pointer to a GSList which is " #| "just a node in the list. We will use this to get the actual path in the " #| "next line. The first parameter is a pointer to the head of the list." msgid "" "Line 7: Here we want to get the path at the nth location in the " "GPtrArray that is holding our image path names. The nth position is calculated based on row and col." msgstr "" "Ligne 5 : ici nous voulons obtenir le chemin à la nième position " "de la GSList qui contient les noms de chemin de nos images. La " "nième position est calculée à partir de row et " "col. La valeur retournée est un pointeur vers une GSList qui est juste un nœud dans la liste. Nous l'utiliserons dans la ligne " "suivante pour obtenir le chemin réel. Le premier argument est un pointeur " "vers le début de la liste." #. (itstool) path: item/p #: C/photo-wall.c.page:241 #, fuzzy #| msgid "" #| "Line 6: This is where we actually create the ClutterActor " #| "and place the image into the actor. The first argument is the path which " #| "we access through our GSList node. The second argument is " #| "for error reporting but we are ignoring that to keep things short." msgid "" "Line 8‒23: This is where we actually create the ClutterActor " "and place the image into the actor. The first argument is the path which we " "access through our GSList node. The second argument is for " "error reporting but we are ignoring that to keep things short." msgstr "" "Ligne 6 : c'est ici que nous créons réellement le ClutterActor " "et disposons l'image dans l'acteur. Le premier argument est le chemin qui " "permet d'accéder au nœud de notre GSList. Le deuxième sert à " "rapporter une erreur mais nous allons ignorer cela pour faire court." #. (itstool) path: item/p #: C/photo-wall.c.page:243 #, fuzzy #| msgid "" #| "Line 8: This adds the ClutterActor to the stage, which is a " #| "container. It also assumes ownership of the ClutterActor " #| "which is something you'll want to look into as you get deeper into GNOME " #| "development. See the GObject documentation " #| "for the gory details." msgid "" "Line 47: This adds the ClutterActor to the stage, which is a " "container. It also assumes ownership of the ClutterActor which " "is something you'll want to look into as you get deeper into GNOME " "development. See the GObject documentation for " "the gory details." msgstr "" "Ligne 8 : cela ajoute le ClutterActor au « stage », qui est un " "conteneur. Cela suppose une notion d'appartenance du ClutterActor qui est quelque chose que vous devrez comprendre lorsque vous irez un " "peu plus loin dans le développement de GNOME. Consultez la documentation de GObject pour des détails pointus." #. (itstool) path: section/title #: C/photo-wall.c.page:249 msgid "Loading the images" msgstr "Chargement des images" #. (itstool) path: section/p #: C/photo-wall.c.page:250 msgid "" "Let's take a short break from Clutter to see how we can get the file names " "from our image directory." msgstr "" "Oublions un court instant Clutter pour regarder comment nous pouvons obtenir " "les noms des fichiers contenus dans notre répertoire d'images." #. (itstool) path: section/code #: C/photo-wall.c.page:251 #, no-wrap msgid "" "\n" "static void\n" "load_image_path_names()\n" "{\n" " /* Ensure we can access the directory. */\n" " GError *error = NULL;\n" " GDir *dir = g_dir_open(IMAGE_DIR_PATH, 0, &error);\n" " if(error)\n" " {\n" " g_warning(\"g_dir_open() failed with error: %s\\n\", error->message);\n" " g_clear_error(&error);\n" " return;\n" " }\n" "\n" " img_paths = g_ptr_array_new_with_free_func (g_free);\n" "\n" " const gchar *filename = g_dir_read_name(dir);\n" " while(filename)\n" " {\n" " if(g_str_has_suffix(filename, \".jpg\") || g_str_has_suffix(filename, \".png\"))\n" " {\n" " gchar *path = g_build_filename(IMAGE_DIR_PATH, filename, NULL);\n" " g_ptr_array_add (img_paths, path);\n" " }\n" " filename = g_dir_read_name(dir);\n" " }\n" "}" msgstr "" #. (itstool) path: item/p #: C/photo-wall.c.page:279 #, fuzzy #| msgid "" #| "Lines 5 and 12: This opens our directory or, if an error occured, returns " #| "after printing an error message." msgid "" "Lines 5 and 12: This opens our directory or, if an error occurred, returns " "after printing an error message." msgstr "" "Lignes 5 et 12 : cela ouvre notre répertoire ou, en cas d'erreur, quitte la " "fonction après affichage d'un message d'erreur." #. (itstool) path: item/p #: C/photo-wall.c.page:280 #, fuzzy #| msgid "" #| "Lines 14‒23: The first line gets another file name from the GDir we opened earlier. If there was an image file (which we check by " #| "looking at its extension, \".png\" or \".jpg\") in the directory we " #| "proceed to prepend the image directory path to the filename and prepend " #| "that to the list we set up earlier. Lastly we attempt to get the next " #| "path name and reenter the loop if another file was found." msgid "" "Lines 16‒25: The first line gets another file name from the GDir we opened earlier. If there was an image file (which we check by " "looking at its extension, \".png\" or \".jpg\") in the directory we proceed " "to prepend the image directory path to the filename and prepend that to the " "list we set up earlier. Lastly we attempt to get the next path name and " "reenter the loop if another file was found." msgstr "" "Ligne 14-23 : la première ligne récupère un nouveau nom de fichier à partir " "du GDir que nous avons ouvert précédemment. S'il existe des " "fichiers images (ce que nous vérifions en examinant son extension, « .png » " "ou « .jpg ») dans le répertoire, nous continuons en ajoutant le chemin du " "répertoire de l'image devant le nom de fichier puis en l'ajoutant en tête de " "la liste définie auparavant. Enfin, nous essayons d'obtenir le prochain nom " "de fichier et nous recommençons la boucle si un autre fichier a été trouvé." #. (itstool) path: section/title #: C/photo-wall.c.page:285 msgid "Set up the actors" msgstr "Mise en place des acteurs" #. (itstool) path: section/p #: C/photo-wall.c.page:286 msgid "" "We now take a look at the sizing and positioning of ClutterActors and also readying the ClutterActor for user interaction." msgstr "" "Examinons maintenant le choix de la taille et du positionnement des " "ClutterActor et également la préparation du ClutterActor pour une interaction de l'utilisateur." #. (itstool) path: section/code #: C/photo-wall.c.page:289 #, no-wrap msgid "" "\n" "/* This function handles setting up and placing the rectangles. */\n" "static void\n" "initialize_actor(ClutterActor *actor, guint row, guint col)\n" "{\n" " clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n" " clutter_actor_set_position(actor, col * THUMBNAIL_SIZE, row * THUMBNAIL_SIZE);\n" " clutter_actor_set_reactive(actor, TRUE);\n" "\n" " g_signal_connect(actor,\n" " \"button-press-event\",\n" " G_CALLBACK(actor_clicked_cb),\n" " NULL);\n" "}" msgstr "" #. (itstool) path: item/p #: C/photo-wall.c.page:305 msgid "" "Line 7: Setting an actor reactive means that it reacts to events, such as " "button-press-event in our case. For Photo Wall, all " "ClutterActors in the wall should initially be reactive." msgstr "" "Ligne 7 : le fait de définir un acteur comme « reactive » signifie qu'il " "réagit aux événements, au button-press-event dans notre cas. " "Pour le mur de photos, tous les ClutterActor du mur doivent " "être initialisés comme « reactive »." #. (itstool) path: item/p #: C/photo-wall.c.page:308 msgid "" "Line 9‒12: Now we connect the button-press-event to the " "actor_clicked_cb callback which we will look at next." msgstr "" "Ligne 9-12 : nous connectons maintenant l'événement button-press-" "event à la fonction de rappel actor_clicked_cb que nous " "examinons ci-dessous." #. (itstool) path: section/p #: C/photo-wall.c.page:311 msgid "At this point we've got a wall of images that are ready to be viewed." msgstr "" "À cet instant, nous obtenons un mur d'images qui sont prêtes à être " "regardées." #. (itstool) path: section/title #: C/photo-wall.c.page:315 msgid "Reacting to the clicks" msgstr "Réaction aux clics" #. (itstool) path: section/code #: C/photo-wall.c.page:319 #, no-wrap msgid "" "\n" "static gboolean\n" "actor_clicked_cb(ClutterActor *actor,\n" " ClutterEvent *event,\n" " gpointer user_data)\n" "{\n" " /* Flag to keep track of our state. */\n" " static gboolean is_focused = FALSE;\n" " ClutterActorIter iter;\n" " ClutterActor *child;\n" "\n" " /* Reset the focus state on all the images */\n" " clutter_actor_iter_init (&iter, clutter_actor_get_parent(actor));\n" " while (clutter_actor_iter_next(&iter, &child))\n" " clutter_actor_set_reactive(child, is_focused);\n" "\n" " clutter_actor_save_easing_state(actor);\n" " clutter_actor_set_easing_duration(actor, ANIMATION_DURATION_MS);\n" "\n" " if(is_focused)\n" " {\n" " /* Restore the old location and size. */\n" " clutter_actor_set_position(actor, unfocused_pos.x, unfocused_pos.y);\n" " clutter_actor_set_size(actor, THUMBNAIL_SIZE, THUMBNAIL_SIZE);\n" " }\n" " else\n" " {\n" " /* Save the current location before animating. */\n" " clutter_actor_get_position(actor, &unfocused_pos.x, &unfocused_pos.y);\n" " /* Only the currently focused image should receive events. */\n" " clutter_actor_set_reactive(actor, TRUE);\n" "\n" " /* Put the focused image on top. */\n" " clutter_actor_set_child_above_sibling(clutter_actor_get_parent(actor), actor, NULL);\n" "\n" " clutter_actor_set_position(actor, (STAGE_WIDTH - STAGE_HEIGHT) / 2.0, 0);\n" " clutter_actor_set_size(actor, STAGE_HEIGHT, STAGE_HEIGHT);\n" " }\n" "\n" " clutter_actor_restore_easing_state(actor);\n" "\n" " /* Toggle our flag. */\n" " is_focused = !is_focused;\n" "\n" " return TRUE;\n" "}" msgstr "" #. (itstool) path: item/p #: C/photo-wall.c.page:366 msgid "" "Lines 1‒4: We have to make sure our callback function matches the signature " "required for the button_clicked_event signal. For our example, " "we will only use the first argument, the ClutterActor that is " "actually clicked." msgstr "" "Ligne 1-4 : nous devons être sûr que notre fonction de rappel correspond à " "la signature requise par notre signal button_clicked_event. " "Dans notre exemple, nous n'utilisons que le premier argument, le " "ClutterActor qui est réellement cliqué." #. (itstool) path: note/p #: C/photo-wall.c.page:368 msgid "" "A few words on the arguments we are not using in this example. The " "ClutterEvent is different depending on what event is being " "handled. For example, a key event produces a ClutterKeyEvent " "from which you can get the key being pressed among other information. For " "mouse click events you get a ClutterButtonEvent from which you " "can get the x and y values. See the Clutter " "documentation for other ClutterEvent types." msgstr "" "Quelques mots sur les arguments que nous n'utilisons pas dans cet exemple. " "L'événement ClutterEvent est différent en fonction de " "l'événement géré. Par exemple, un événement appui sur une touche du clavier " "produit un ClutterKeyEvent à partir duquel vous pouvez obtenir " "comme information, entre autres, la touche qui a été enfoncée. Pour un " "événement clic de souris, vous obtenez un ClutterButtonEvent à " "partir duquel vous pouvez connaître les valeurs x et y. Consultez la documentation de Clutter pour les autres types " "d'événement ClutterEvent." #. (itstool) path: note/p #: C/photo-wall.c.page:369 #, fuzzy #| msgid "" #| "The user_data is what one uses to pass data into the the " #| "function. A pointer to any data type can be passed in. If you need " #| "multiple data to be passed into the callback, you can place the data into " #| "a struct and pass its address in." msgid "" "The user_data is what one uses to pass data into the function. " "A pointer to any data type can be passed in. If you need multiple data to be " "passed into the callback, you can place the data into a struct and pass its " "address in." msgstr "" "user_data est ce qui sert à transmettre des données dans la " "fonction. Un pointeur vers n'importe quel type de données peut être " "transmis. Si vous avez besoin de transmettre plusieurs données à la fonction " "de rappel, vous pouvez mettre les données dans une structure et transmettre " "son adresse." #. (itstool) path: item/p #: C/photo-wall.c.page:373 msgid "" "Line 7: We set up a static flag to track which state we are in: wall mode or " "focus mode. We start out in wall mode so no image has focus. Thus, we set " "the flag to FALSE initially." msgstr "" "Ligne 7 : nous définissons un drapeau de type « static » pour enregistrer " "l'état dans lequel nous sommes : en mode mur ou en mode focus. Nous " "commençons en mode mur donc aucune image ne possède le focus, par " "conséquent, nous paramétrons le drapeau à FALSE (FAUX) au " "départ." #. (itstool) path: item/p #: C/photo-wall.c.page:374 msgid "" "Line 12‒14: These set the image actors to receive events if they are focused." msgstr "" #. (itstool) path: item/p #: C/photo-wall.c.page:375 #, fuzzy #| msgid "" #| "Line 37: Here we toggle the is_focused flag to the current " #| "state." msgid "" "Line 16‒17: Here we set the animation duration and save the current state." msgstr "" "Ligne 37 : ici nous basculons le drapeau is_focused vers l'état " "actuel." #. (itstool) path: item/p #: C/photo-wall.c.page:376 #, fuzzy #| msgid "" #| "Lines 13‒19: Reaching this code means that one image currently has focus " #| "and we want to return to wall mode. The clutter_actor_animate function is used to animate a ClutterActor's property " #| "or properties from the current state(s) to the specified state(s). The " #| "arguments are as follows:" msgid "" "Lines 21‒23: Reaching this code means that one image currently has focus and " "we want to return to wall mode. Setting a position on a ClutterActor begins an animation with the duration that we set in line 17." msgstr "" "Ligne 13-19 : ces lignes sont atteintes lorsqu'une image possède " "actuellement le focus et que nous voulons retourner en mode mur. La fonction " "clutter_actor_animate est utilisée pour animer une ou des " "propriétés d'un ClutterActor à partir du ou des états actuels " "vers les états spécifiés. Les arguments sont les suivants :" #. (itstool) path: item/p #: C/photo-wall.c.page:378 msgid "" "Line 24: Reaching this line of code means we are currently in the wall state " "and are about to give a ClutterActor focus. Here we save the " "starting position so that we can return to it later." msgstr "" "Ligne 24 : ces lignes sont atteintes lorsque nous sommes actuellement dans " "l'état mur et que nous allons donner le focus à un ClutterActor. Ici nous enregistrons la position de départ afin de pouvoir le " "repositionner plus tard." #. (itstool) path: item/p #: C/photo-wall.c.page:379 msgid "" "Line 25: Setting the ClutterActor's reactive " "property to TRUE makes this ClutterActor react to " "events. In this focused state the only ClutterActor that we " "want to receive events will be the ClutterActor being viewed. " "Clicking on the ClutterActor will return it to its starting " "position." msgstr "" "Ligne 25 : le fait de paramétrer la propriété reactive du " "ClutterActor à TRUE rend ce ClutterActor réactif aux événements. Dans cet état de focus, le seul " "ClutterActor qui doit recevoir des événements est le " "ClutterActor qui est actuellement affiché. Un clic sur ce " "ClutterActor le repositionne à sa position de départ." #. (itstool) path: item/p #: C/photo-wall.c.page:380 msgid "" "Lines 27‒36: This is where we save the current position of the image, set it " "to receive events and then make it appear above the other images and start " "animating it to fill the stage." msgstr "" #. (itstool) path: item/p #: C/photo-wall.c.page:381 msgid "" "Line 39: Here we restore the easing state to what was set before we changed " "it in line 16." msgstr "" #. (itstool) path: item/p #: C/photo-wall.c.page:382 #, fuzzy #| msgid "" #| "Line 37: Here we toggle the is_focused flag to the current " #| "state." msgid "" "Line 42: Here we toggle the is_focused flag to the current " "state." msgstr "" "Ligne 37 : ici nous basculons le drapeau is_focused vers l'état " "actuel." #. (itstool) path: item/p #: C/photo-wall.c.page:383 msgid "" "As mentioned previously, the ClutterActors with higher " "depth values receive events but can allow ClutterActors below them to also receive events. Returning TRUE will " "stop events from being passed down, while FALSE will pass " "events down." msgstr "" "Comme mentionné ci-dessus, les ClutterActor qui possèdent des " "valeurs depth plus grandes reçoivent les événements mais " "peuvent autoriser les ClutterActor en dessous d'eux à recevoir " "les événements également. En renvoyant TRUE, l'acteur empêche " "la transmission des événements alors qu'en renvoyant FALSE la " "transmission se fait." #. (itstool) path: note/p #: C/photo-wall.c.page:385 msgid "" "Remember, however, that to receive events the ClutterActors " "must be set reactive." msgstr "" "Rappelez-vous cependant que pour recevoir des événements les " "ClutterActor doivent être définis à reactive." #. (itstool) path: section/p #: C/photo-wall.c.page:393 msgid "" "All of the code should now be ready to go. All you need now is some pictures " "to load. By default, the pictures are loaded from a berlin_images directory. If you want, you can change the #define " "IMAGE_DIR_PATH line near the top to refer to your photo directory, or " "create a berlin_images directory by clicking " "ProjectNew Directory... and creating " "a berlin_images directory as a subdirectory of the photo-" "wall directory. Make sure to put at least twelve images in the " "directory!" msgstr "" "Le programme complet devrait maintenant être prêt à fonctionner. Tout ce " "dont vous avez besoin est de quelques images à charger. Par défaut, les " "images sont chargées à partir d'un répertoire berlin_images. " "Vous pouvez, si vous voulez, modifier la ligne #define IMAGE_DIR_PATH qui se trouve au début du fichier pour faire référence à votre " "répertoire de photos ou créer un répertoire berlin_images en " "cliquant sur ProjetNouveau répertoire... et en créant un sous-répertoire berlin_images dans le " "répertoire murdephotos. Assurez-vous de mettre au moins 12 " "images dans le répertoire !" #. (itstool) path: section/p #: C/photo-wall.c.page:395 msgid "" "When you have done that, click BuildBuild Project to build everything again, then RunExecute to start the application." msgstr "" "Après avoir fait cela, cliquez sur ConstruireConstruire le projet pour tout reconstruire, puis " "sur ExécuterExécuter pour lancer " "l'application." #. (itstool) path: section/p #: C/photo-wall.c.page:396 msgid "" "If you haven't already done so, choose the Debug/src/photo-wall " "application in the dialog that appears. Finally, hit Run and " "enjoy!" msgstr "" "Si vous ne l'avez pas déjà fait, choisissez l'application Debug/src/" "murdephotos dans la boîte de dialogue qui apparaît. Enfin, cliquez " "sur Lancer et amusez-vous !" #. (itstool) path: section/p #: C/photo-wall.c.page:401 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de " "référence." #. (itstool) path: info/title #: C/progressbar.c.page:8 #, fuzzy #| msgid "ProgressBar" msgctxt "text" msgid "ProgressBar (C)" msgstr "Barre de progression" #. (itstool) path: info/desc #: C/progressbar.c.page:19 C/progressbar.vala.page:18 msgid "A widget which indicates progress visually" msgstr "Un élément graphique qui matérialise visuellement la progression" #. (itstool) path: page/title #: C/progressbar.c.page:22 C/progressbar.js.page:20 C/progressbar.py.page:22 #: C/progressbar.vala.page:21 msgid "ProgressBar" msgstr "Barre de progression" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/progressbar.c.page:24 C/progressbar.vala.page:22 #, fuzzy #| msgid "" #| "@@image: 'media/progressbar_fill.ogv'; " #| "md5=287763d1d3f4a328212ea2243910f5e4" msgctxt "_" msgid "" "external ref='media/progressbar_fill.ogv' " "md5='287763d1d3f4a328212ea2243910f5e4'" msgstr "" "@@image: 'media/progressbar_fill.ogv'; md5=287763d1d3f4a328212ea2243910f5e4" #. (itstool) path: page/p #: C/progressbar.c.page:25 C/progressbar.vala.page:23 msgid "" "This ProgressBar \"fills in\" by a fraction of the bar until it is full." msgstr "" "Cette barre de progression se « rempli » par fractions jusqu'à ce qu'elle " "soit pleine." #. (itstool) path: page/code #: C/progressbar.c.page:27 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "static gboolean\n" "fill (gpointer user_data)\n" "{\n" " GtkWidget *progress_bar = user_data;\n" "\n" " /*Get the current progress*/\n" " gdouble fraction;\n" " fraction = gtk_progress_bar_get_fraction (GTK_PROGRESS_BAR (progress_bar));\n" "\n" " /*Increase the bar by 10% each time this function is called*/\n" " fraction += 0.1;\n" "\n" " /*Fill in the bar with the new fraction*/\n" " gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n" "\n" " /*Ensures that the fraction stays below 1.0*/\n" " if (fraction < 1.0) \n" " return TRUE;\n" " \n" " return FALSE;\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *progress_bar;\n" "\n" " gdouble fraction = 0.0;\n" "\n" " /*Create a window with a title, and a default size*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"ProgressBar Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 220, 20);\n" " \n" " /*Create a progressbar and add it to the window*/\n" " progress_bar = gtk_progress_bar_new ();\n" " gtk_container_add (GTK_CONTAINER (window), progress_bar);\n" "\n" " /*Fill in the given fraction of the bar. Has to be between 0.0-1.0 inclusive*/\n" " gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress_bar), fraction);\n" "\n" " /*Use the created fill function every 500 milliseconds*/\n" " g_timeout_add (500, fill, GTK_PROGRESS_BAR (progress_bar));\n" " \n" " gtk_widget_show_all (window);\n" "}\n" " \n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" " \n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " \n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/progressbar.c.page:36 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "G_Timeout" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/progressbar.js.page:7 #, fuzzy #| msgid "ProgressBar" msgctxt "text" msgid "ProgressBar (JavaScript)" msgstr "Barre de progression" #. (itstool) path: info/desc #: C/progressbar.js.page:17 msgid "A bar which animates to indicate progress" msgstr "Une barre qui s'anime pour indiquer la progression" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/progressbar.js.page:21 C/progressbar.py.page:23 #, fuzzy #| msgid "" #| "@@image: 'media/progressbar.ogv'; md5=36deab3dd4b5be968828fa2ef416d612" msgctxt "_" msgid "" "external ref='media/progressbar.ogv' md5='36deab3dd4b5be968828fa2ef416d612'" msgstr "@@image: 'media/progressbar.ogv'; md5=36deab3dd4b5be968828fa2ef416d612" #. (itstool) path: div/p #: C/progressbar.js.page:25 C/progressbar.py.page:27 msgid "Pressing any key stops and starts this ProgressBar." msgstr "" "L'appui sur n'importe quelle touche démarre et arrête la barre de " "progression (ProgressBar)." #. (itstool) path: page/p #: C/progressbar.js.page:32 C/progressbar.py.page:34 msgid "This ProgressBar is stopped and started by pressing any key." msgstr "" "Pour démarrer ou arrêter cette barre de progression, appuyez sur n'importe " "quelle touche." #. (itstool) path: page/code #: C/progressbar.js.page:34 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ProgressBarExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsprogressbar',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({ application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 20,\n" " default_width: 220,\n" " title: \"ProgressBar Example\"});\n" "\n" " // Create the progress bar\n" " this.progressBar = new Gtk.ProgressBar ();\n" " this._window.add(this.progressBar);\n" "\n" " // Start the function that pulses the bar every 100 milliseconds\n" " this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100,\n" " this._barPulse.bind(this));\n" "\n" " // Connect a keypress event to the function that toggles the bar to start or stop pulsing\n" " this._window.connect(\"key-press-event\", this._onKeyPress.bind(this));\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " // Pulse the progressbar (unless it has been disabled by a keypress)\n" " _barPulse() {\n" " this.progressBar.pulse();\n" " return true;\n" " }\n" "\n" " // Start or stop the progressbar when a key is pressed\n" " _onKeyPress() {\n" " if (this.sourceID == 0)\n" " this.sourceID = GLib.timeout_add(GLib.PRIORITY_DEFAULT, 100,\n" " this._barPulse.bind(this));\n" " else {\n" " GLib.source_remove(this.sourceID);\n" " this.sourceID = 0;\n" " }\n" " }\n" "\n" "};\n" "\n" "// Run the application\n" "let app = new ProgressBarExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/progressbar.js.page:39 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GLib" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/progressbar.py.page:8 #, fuzzy #| msgid "ProgressBar" msgctxt "text" msgid "ProgressBar (Python)" msgstr "Barre de progression" #. (itstool) path: info/desc #: C/progressbar.py.page:19 msgid "A widget which indicates progress visually." msgstr "Un élément graphique qui matérialise visuellement la progression." #. (itstool) path: section/code #: C/progressbar.py.page:41 #, no-wrap msgid "" "from gi.repository import GLib\n" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"ProgressBar Example\", application=app)\n" " self.set_default_size(220, 20)\n" "\n" " # a progressbar\n" " self.progress_bar = Gtk.ProgressBar()\n" " # add the progressbar to the window\n" " self.add(self.progress_bar)\n" "\n" " # the method self.pulse is called each 100 milliseconds\n" " # and self.source_id is set to be the ID of the event source\n" " # (i.e. the bar changes position every 100 milliseconds)\n" " self.source_id = GLib.timeout_add(100, self.pulse)\n" "\n" " # event handler\n" " # any signal from the keyboard controls if the progressbar stops/starts\n" " def do_key_press_event(self, event):\n" " # if the progressbar has been stopped (therefore source_id == 0 - see\n" " # \"else\" below), turn it back on\n" " if (self.source_id == 0):\n" " self.source_id = GLib.timeout_add(100, self.pulse)\n" " # if the bar is moving, remove the source with the ID of source_id\n" " # from the main context (stop the bar) and set the source_id to 0\n" " else:\n" " GLib.source_remove(self.source_id)\n" " self.source_id = 0\n" " # stop the signal emission\n" " return True\n" "\n" " # source function\n" " # the progressbar is in \"activity mode\" when this method is called\n" " def pulse(self):\n" " self.progress_bar.pulse()\n" " # call the function again\n" " return True\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/progressbar.py.page:46 msgid "Useful methods for a ProgressBar widget" msgstr "Méthodes utiles pour un élément graphique barre de progression" #. (itstool) path: item/p #: C/progressbar.py.page:48 msgid "" "Instead of pulse(), that makes the bar go back and forth, if we " "want the ProgressBar to \"fill in\" a fraction (a float between " "0.0 and 1.0 included) of the bar that has been " "completed, use set_fraction(fraction)." msgstr "" "Contrairement à pulse(), qui fait avancer ou reculer la barre, " "si nous voulons que notre barre de progression se remplisse par fractions " "(un nombre flottant float compris entre 0.0 et " "1.0 inclus) toujours dans le même sens, nous utilisons la " "méthode set_fraction(fraction)." #. (itstool) path: item/p #: C/progressbar.py.page:49 #, fuzzy #| msgid "" #| "To set a text and show it (superimposed over the bar) use " #| "set_text(\"some text\") and set_show_text(True). If a text is not set and set_show_text(True) the text " #| "will be the percentage of the work that has been completed." msgid "" "To set a text and show it (superimposed over the bar) use " "set_text(\"text\") and set_show_text(True). If a text is not set and set_show_text(True) the text " "will be the percentage of the work that has been completed." msgstr "" "Pour définir un texte et l'afficher en superposition sur la barre, utilisez " "set_text(« texte ») et set_show_text(vrai). Si " "vous ne définissez pas un texte et si vous appliquez " "set_show_text(vrai), le texte remplira la barre en fonction du " "pourcentage de l'avancement de la tâche." #. (itstool) path: item/p #: C/progressbar.py.page:57 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkProgressBar" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/progressbar.py.page:58 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GLib - The Main Event Loop" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/progressbar.py.page:59 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Gdk - Key Values" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/progressbar.vala.page:8 #, fuzzy #| msgid "ProgressBar" msgctxt "text" msgid "ProgressBar (Vala)" msgstr "Barre de progression" #. (itstool) path: page/code #: C/progressbar.vala.page:25 #, no-wrap msgid "" "public class MyApplication : Gtk.Application {\n" "\n" "\tGtk.ProgressBar progress_bar;\n" "\n" "\tprotected override void activate () {\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\twindow.set_title (\"ProgressBar Example\");\n" "\t\twindow.set_default_size (220, 20);\n" "\n" "\t\tprogress_bar = new Gtk.ProgressBar ();\n" "\t\twindow.add (progress_bar);\n" "\t\twindow.show_all ();\n" "\n" "\t\tdouble fraction = 0.0;\n" "\t\tprogress_bar.set_fraction (fraction);\n" "\t\tGLib.Timeout.add (500, fill);\n" "\t}\n" "\n" "\tbool fill () {\n" "\t\tdouble fraction = progress_bar.get_fraction (); //get current progress\n" "\t\tfraction += 0.1; //increase by 10% each time this function is called\n" "\n" "\t\tprogress_bar.set_fraction (fraction);\n" "\n" "\t\t/* This function is only called by GLib.Timeout.add while it returns true; */\n" "\t\tif (fraction < 1.0)\n" "\t\t\treturn true;\n" "\t\treturn false;\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\tvar progress_bar_application = new MyApplication ();\n" "\tint status = progress_bar_application.run (args);\n" "\treturn status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/progressbar.vala.page:30 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "ProgressBar" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/progressbar.vala.page:31 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GLib." "Timeout" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/properties.py.page:9 #, fuzzy #| msgid "Properties" msgctxt "text" msgid "Properties (Python)" msgstr "Propriétés" #. (itstool) path: info/desc #: C/properties.py.page:14 msgid "An explanation of properties, getters and setters." msgstr "" "Une explication des propriétés, des mécanismes d'obtention et de définition." #. (itstool) path: page/title #: C/properties.py.page:27 msgid "Properties" msgstr "Propriétés" #. (itstool) path: section/p #: C/properties.py.page:34 #, fuzzy #| msgid "" #| "Properties describe the configuration and state of widgets, and " #| "each widget has its own particular set of properties. For example, a " #| "widget such as a button or a label has the property \"label\" which " #| "contains the text of the widget. You can specify the name and value of " #| "any number of properties as keyword arguments when creating an instance " #| "of a widget: for example, to create a label aligned to the right with the " #| "text “Hello World” and an angle of 25 degrees, you can use:" msgid "" "Properties describe the configuration and state of widgets. Each " "widget has its own particular set of properties. For example, a widget such " "as a button has the property label which contains the text of " "the widget. You can specify the name and value of any number of properties " "as keyword arguments when creating an instance of a widget. For example, to " "create a label with the text “Hello World”, an angle of 25 degrees, and " "aligned to the right, you can use:" msgstr "" "Les Propriétés décrivent la configuration et l'état des éléments " "graphiques, chacun d'eux ayant son propre paquet de propriétés spécifiques. " "Par exemple, un bouton ou une étiquette possède la propriété « label » qui " "contient le texte de l'élément graphique. Lorsque vous créez un exemple " "d'élément graphique, vous pouvez spécifier le nom et la valeur de n'importe " "quel nombre de propriétés en tant qu'arguments. Par exemple, pour créer une " "étiquette alignée à droite, contenant le texte « Hello World » et ayant un " "angle de 25 degrés, utilisez le code suivant :" #. (itstool) path: section/code #: C/properties.py.page:41 #, no-wrap msgid "" "\n" "label = Gtk.Label(label=\"Hello World\", angle=25, halign=Gtk.Align.END)" msgstr "" "\n" "label = Gtk.Label(label=\"Hello World\", angle=25, halign=Gtk.Align.END)" #. (itstool) path: section/p #: C/properties.py.page:44 msgid "" "Alternatively, you can define these properties separately by using the " "method associated with it." msgstr "" #. (itstool) path: section/code #: C/properties.py.page:45 #, no-wrap msgid "" "\n" "label = Gtk.Label()\n" "label.set_label(\"Hello World\")\n" "label.set_angle(25)\n" "label.set_halign(Gtk.Align.END)" msgstr "" "\n" "label = Gtk.Label()\n" "label.set_label(\"Hello World\")\n" "label.set_angle(25)\n" "label.set_halign(Gtk.Align.END)" #. (itstool) path: section/p #: C/properties.py.page:51 #, fuzzy #| msgid "" #| "Once you have created such a label, you can get the text with the getter " #| "label.get_label()." msgid "" "Once you have created such a label, you can get the text of the label with " "label.get_label(), and analogously for the other properties." msgstr "" "Une fois cette étiquette créée, utilisez la méthode d'obtention label." "get_label() pour récupérer le texte." #. (itstool) path: section/p #: C/properties.py.page:53 #, fuzzy #| msgid "" #| "Instead of using getters and setters you can also get and set the " #| "properties with get_property(\"prop-name\") and " #| "set_property(\"prop-name\", value), respectively." msgid "" "Instead of using getters and setters you can also get and set the properties " "with get_property(\"prop-name\") and " "set_property(\"prop-name\", value), " "respectively." msgstr "" "Au lieu d'utiliser les mécanismes d'obtention et de définition, vous pouvez " "aussi obtenir et définir respectivement les propriétés avec les fonctions " "get_property(\"prop-name\") et set_property(\"prop-name" "\", value)." #. (itstool) path: section/p #: C/properties.py.page:59 #, fuzzy #| msgid "" #| "Basics - Properties in Python Gtk+ 3 Tutorial" msgid "" "Basics - Properties in Python GTK+ 3 Tutorial" msgstr "" "Propriétés de base dans le tutoriel Python Gtk+ 3" #. (itstool) path: info/title #: C/py.page:7 #, fuzzy #| msgid "Python" msgctxt "link" msgid "Python" msgstr "Python" #. (itstool) path: page/title #: C/py.page:21 msgid "Tutorials, code samples and platform demos in Python" msgstr "Tutoriels, exemples de code et plateformes de démonstration en Python" #. (itstool) path: section/title #. (itstool) path: page/title #: C/py.page:26 C/tutorial.py.page:31 msgid "Tutorial for beginners" msgstr "" #. (itstool) path: info/title #: C/radiobutton.c.page:8 #, fuzzy #| msgid "RadioButton" msgctxt "text" msgid "RadioButton (C)" msgstr "RadioButton" #. (itstool) path: info/desc #: C/radiobutton.c.page:20 msgid "A choice from multiple checkbuttons" msgstr "Un choix entre plusieurs boutons de vérification." #. (itstool) path: page/title #: C/radiobutton.c.page:23 C/radiobutton.js.page:21 C/radiobutton.py.page:23 #: C/radiobutton.vala.page:24 msgid "RadioButton" msgstr "RadioButton" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/radiobutton.c.page:25 C/radiobutton.py.page:24 C/radiobutton.vala.page:25 #, fuzzy #| msgid "" #| "@@image: 'media/radiobutton.png'; md5=d115460280d8e41493dd98054b5822a5" msgctxt "_" msgid "" "external ref='media/radiobutton.png' md5='d115460280d8e41493dd98054b5822a5'" msgstr "@@image: 'media/radiobutton.png'; md5=d115460280d8e41493dd98054b5822a5" #. (itstool) path: page/p #: C/radiobutton.c.page:26 msgid "These radiobuttons report their activity in the terminal." msgstr "Ces boutons de radio signalent leur activité dans le terminal." #. (itstool) path: page/code #: C/radiobutton.c.page:28 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/*Signal handler for the \"toggled\" signal of the RadioButton*/\n" "static void\n" "button_toggled_cb (GtkWidget *button,\n" " gpointer user_data)\n" "{\n" " char *b_state;\n" " const char *button_label;\n" "\n" " if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))\n" " b_state = \"on\";\n" " else {\n" " b_state = \"off\";\n" " g_print (\"\\n\");\n" " }\n" "\n" " button_label = gtk_button_get_label (GTK_BUTTON (button));\n" "\n" " g_print (\"%s was turned %s\\n\", button_label, b_state);\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *grid;\n" " GtkWidget *window;\n" "\n" " GtkWidget *button1;\n" " GtkWidget *button2;\n" " GtkWidget *button3;\n" "\n" " /*Create a window with a set title and default size.\n" " Also, set a border width for the amount of space to leave\n" " inside the window*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"RadioButton Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 250, 100);\n" " gtk_container_set_border_width (GTK_CONTAINER(window), 20);\n" "\n" "\n" " /*Create an initial radio button*/\n" " button1 = gtk_radio_button_new_with_label (NULL, \"Button 1\");\n" "\n" " /*Create a second radio button, and add it to the same group as Button 1*/\n" " button2 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n" " \"Button 2\");\n" "\n" " /*Create a third button, and add it to the same group as Button 1*/\n" " button3 = gtk_radio_button_new_with_label_from_widget (GTK_RADIO_BUTTON (button1), \n" " \"Button 3\");\n" "\n" "\n" " /*Create a grid, attach the buttons, and position them accordingly*/\n" " grid = gtk_grid_new ();\n" " gtk_grid_attach (GTK_GRID (grid), button1, 0, 0, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), button2, 0, 1, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), button3, 0, 2, 1, 1);\n" "\n" " /*Be sure to set the initial state of each button*/\n" " gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button2), TRUE);\n" " gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button1), FALSE);\n" " gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button3), FALSE);\n" "\n" " /*Connect the signal handlers (aka Callback functions) to the buttons*/\n" " g_signal_connect (GTK_TOGGLE_BUTTON (button1), \"toggled\", \n" " G_CALLBACK (button_toggled_cb), window);\n" " g_signal_connect (GTK_TOGGLE_BUTTON (button2), \"toggled\", \n" " G_CALLBACK (button_toggled_cb), window);\n" " g_signal_connect (GTK_TOGGLE_BUTTON (button3), \"toggled\", \n" " G_CALLBACK (button_toggled_cb), window);\n" "\n" " gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/radiobutton.c.page:38 C/switch.c.page:36 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkSwitch" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/radiobutton.js.page:8 #, fuzzy #| msgid "RadioButton" msgctxt "text" msgid "RadioButton (JavaScript)" msgstr "RadioButton" #. (itstool) path: info/desc #: C/radiobutton.js.page:18 msgid "Only one can be selected at a time" msgstr "Un seul peut être sélectionné à la fois" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/radiobutton.js.page:22 #, fuzzy #| msgid "" #| "@@image: 'media/radiobuttontravel.png'; " #| "md5=0c5f01ee160bb42716ccf5dccbd080c0" msgctxt "_" msgid "" "external ref='media/radiobuttontravel.png' " "md5='0c5f01ee160bb42716ccf5dccbd080c0'" msgstr "" "@@image: 'media/radiobuttontravel.png'; md5=0c5f01ee160bb42716ccf5dccbd080c0" #. (itstool) path: page/p #: C/radiobutton.js.page:23 msgid "" "RadioButtons are named after old-style car radios, which had buttons for " "switching between channel presets. Because the radio could only be tuned to " "one station at a time, only one button could be pressed in at a time; if you " "pressed a new one, the one that was already pressed in would pop back out. " "That's how these buttons work, too." msgstr "" "Le terme « bouton de radio » provient de l'analogie avec les anciennes " "radios de nos vieux véhicules. Ils avaient des boutons poussoirs programmés " "et un seul pouvait resté enfoncé à la fois, transmettant une seule station. " "Si vous en enfonciez un autre, cela faisait sortir automatiquement le " "précédent. Ici, nos RadioButtons fonctionnent exactement de la même façon." #. (itstool) path: page/p #: C/radiobutton.js.page:24 msgid "" "Each RadioButton needs a text label and a group. Only one button in a group " "can be selected at a time. You don't name each group; you just set new " "RadioButtons to be part of the same group as an existing one. If you create " "a new one outside of a group, it automatically creates a new group for it to " "be part of." msgstr "" "Chaque bouton de radio nécessite une étiquette texte et un groupe. Un seul " "bouton d'un même groupe peut être sélectionné à la fois. Ne nommez pas " "chaque groupe ; définissez seulement les nouveaux boutons à l'intérieur d'un " "groupe qui existe déjà. Si vous créez un bouton en dehors d'un groupe " "existant, il générera automatiquement un nouveau groupe pour s'y loger." #. (itstool) path: section/code #: C/radiobutton.js.page:41 #, no-wrap msgid "" "\n" "const RadioButtonExample = new Lang.Class({\n" " Name: 'RadioButton Example',\n" "\n" " // Create the application itself\n" " _init: function() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsradiobutton',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:67 C/togglebutton.js.page:67 msgid "" "All the code for this sample goes in the RadioButtonExample class. The above " "code creates a Gtk.Application for our widgets and window to " "go in." msgstr "" "Tout le code de cet exemple est dans la classe RadioButtonExample. Le code " "ci-dessus crée un Gtk.Application pour y mettre nos éléments " "graphiques et la fenêtre qui les contient." #. (itstool) path: section/code #: C/radiobutton.js.page:68 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 20,\n" " title: \"Travel Planning\"});\n" msgstr "" #. (itstool) path: section/title #: C/radiobutton.js.page:83 msgid "Creating the radiobuttons" msgstr "Création des boutons de radio" #. (itstool) path: section/code #: C/radiobutton.js.page:84 #, no-wrap msgid "" "\n" " // Create a label for the first group of buttons\n" " this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:89 msgid "" "We use a Gtk.Label to set each group of " "RadioButtons apart. Nothing will stop you from putting RadioButtons from all " "different groups wherever you want, so if you want people to know which ones " "go together you need to organize things accordingly." msgstr "" "Utilisez une étiquette Gtk.Label pour définir " "chaque groupe de boutons de radio séparément. Vous pouvez mettre les boutons " "de radio de tous les différents groupes où vous voulez, donc si vous voulez " "que l'on sache lesquels vont ensemble, vous devez organiser les choses en " "fonction." #. (itstool) path: section/code #: C/radiobutton.js.page:91 #, no-wrap msgid "" "\n" " // Create three radio buttons three different ways\n" " this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n" "\n" " this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n" " this._place2.set_label (\"The Moon\");\n" "\n" " this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n" " // this._place3.set_active (true);\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:102 msgid "" "Here are three different ways to create RadioButtons. The first is the usual " "way, where we create a new Gtk.RadioButton and assign its properties at the " "same time. The second and third use functions which automatically handle " "some of the properties; new_from_widget takes a single argument, the " "RadioButton that you want to put this new one in the same group as. " "Meanwhile, new_with_label_from_widget takes that and the RadioButton's label " "at the same time." msgstr "" "Voici trois méthodes différentes pour créer des boutons de radio. La " "première est la méthode habituelle, où nous créons un nouveau Gtk." "RadioButton et lui assignons ses propriétés en même temps. La seconde et la " "troisième utilisent des fonctions qui prennent en charge automatiquement " "quelques unes des propriétés ; new_from_widget ne prend qu'un argument : le " "nouveau bouton de radio que vous voulez mettre dans le même groupe, alors " "que new_with_label_from_widget prend ce même argument et l'étiquette qui va " "avec en même temps." #. (itstool) path: section/p #: C/radiobutton.js.page:103 msgid "" "The first RadioButton in a group is the one that's selected by default. Try " "uncommenting the last line in this sample code to see how you can set a " "different one to be the default selection." msgstr "" "Le premier bouton de radio d'un groupe est celui sélectionné par défaut. " "Décommentez la dernière ligne de cet exemple de code pour apprendre comment " "en définir un autre pour qu'il devienne celui sélectionné par défaut." #. (itstool) path: section/code #: C/radiobutton.js.page:105 #, no-wrap msgid "" "\n" " // Create a label for the second group of buttons\n" " this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n" "\n" " // Create three more radio buttons\n" " this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n" " this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n" " this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:114 msgid "" "Here we create the label for the second group of buttons, and then create " "them all the same way." msgstr "" "Ici, nous créons l'étiquette du second groupe de boutons et ensuite nous les " "générons tous de la même manière." #. (itstool) path: section/title #: C/radiobutton.js.page:118 C/textview.js.page:132 msgid "Creating the rest of the user interface" msgstr "Création du reste de l'interface utilisateur" #. (itstool) path: section/code #: C/radiobutton.js.page:120 #, no-wrap msgid "" "\n" " // Create a stock OK button\n" " this._okButton = new Gtk.Button ({\n" " label: 'gtk-ok',\n" " use_stock: 'true',\n" " halign: Gtk.Align.END });\n" "\n" " // Connect the button to the function which handles clicking it\n" " this._okButton.connect ('clicked', Lang.bind (this, this._okClicked));\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:130 msgid "" "This code creates a Gtk.Button and binds it " "to a function which will show people a silly message when they click OK, " "depending on which RadioButtons were selected." msgstr "" "Ce code crée un bouton Gtk.Button et le lie " "à une fonction qui affiche un message stupide si on clique sur OK, selon les " "boutons qui sont sélectionnés." #. (itstool) path: section/p #: C/radiobutton.js.page:131 #, fuzzy #| msgid "" #| "To make sure the button's \"OK\" label shows up properly in every " #| "language that GNOME is translated into, remember to use one of Gtk's " #| "stock button types." msgid "" "To make sure the button's \"OK\" label shows up properly in every language " "that GNOME is translated into, remember to use one of Gtk's stock button " "types." msgstr "" "Assurez-vous d'utiliser un des types de bouton de la collection Gtk " "pour que votre bouton « OK » s'affiche dans toutes les langues traduites de " "GNOME." #. (itstool) path: section/code #: C/radiobutton.js.page:133 #, no-wrap msgid "" "\n" " // Create a grid to put the \"place\" items in\n" " this._places = new Gtk.Grid ();\n" "\n" " // Attach the \"place\" items to the grid\n" " this._places.attach (this._placeLabel, 0, 0, 1, 1);\n" " this._places.attach (this._place1, 0, 1, 1, 1);\n" " this._places.attach (this._place2, 0, 2, 1, 1);\n" " this._places.attach (this._place3, 0, 3, 1, 1);\n" "\n" " // Create a grid to put the \"thing\" items in\n" " this._things = new Gtk.Grid ({ margin_top: 50 });\n" "\n" " // Attach the \"thing\" items to the grid\n" " this._things.attach (this._thingLabel, 0, 0, 1, 1);\n" " this._things.attach (this._thing1, 0, 1, 1, 1);\n" " this._things.attach (this._thing2, 0, 2, 1, 1);\n" " this._things.attach (this._thing3, 0, 3, 1, 1);\n" "\n" " // Create a grid to put everything in\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " margin_left: 40,\n" " margin_right: 50 });\n" "\n" " // Attach everything to the grid\n" " this._grid.attach (this._places, 0, 0, 1, 1);\n" " this._grid.attach (this._things, 0, 1, 1, 1);\n" " this._grid.attach (this._okButton, 0, 2, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:167 msgid "" "We use a separate Gtk.Grid to organize each " "group of radio buttons. This way we can change the layout with less fuss " "later on. The second Grid has a margin on top, to visually separate the two " "sets of choices." msgstr "" "Organisons chaque groupe de boutons de radio dans une grille Gtk.Grid séparée. Comme cela, nous pouvons modifier " "l'agencement plus aisément plus tard. Mettons une marge en haut de la " "deuxième grille pour séparer visuellemnt les deux ensembles de choix." #. (itstool) path: section/p #: C/radiobutton.js.page:168 msgid "" "After we've organized them, we put them into a third, master Grid, along " "with the OK button. Then we attach that to the window." msgstr "" "Après les avoir organisé, nous les mettons dans une troisième grille " "principale, avec le bouton OK. Puis, nous lions le tout à la fenêtre." #. (itstool) path: section/code #: C/radiobutton.js.page:170 #, no-wrap msgid "" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:176 msgid "" "Finally, we tell the window and everything inside it to become visible when " "the application is run." msgstr "" "Enfin, nous indiquons à la fenêtre de s'afficher avec son contenu au " "démarrage de l'application." #. (itstool) path: section/code #: C/radiobutton.js.page:182 #, no-wrap msgid "" "\n" " _okClicked: function () {\n" "\n" " // Create a popup that shows a silly message\n" " this._travel = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " message_type: Gtk.MessageType.OTHER,\n" " buttons: Gtk.ButtonsType.OK,\n" " text: this._messageText() });\n" "\n" " // Show the popup\n" " this._travel.show();\n" "\n" " // Bind the OK button to the function that closes the popup\n" " this._travel.connect (\"response\", Lang.bind (this, this._clearTravelPopUp));\n" "\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:201 msgid "" "When you click OK, a Gtk.MessageDialog appears. This function creates and displays the popup window, then " "binds its OK button to a function that closes it. What text appears in the " "popup depends on the _messageText() function, which returns a different " "value depending on which set of options you chose." msgstr "" "Quand vous cliquez sur OK, une boîte de dialogue Gtk.MessageDialog s'affiche. Cette fonction crée et affiche le " "message surgissant et ensuite connecte son bouton OK à une fonction qui le " "ferme. Le contenu du message surgissant dépend de la fonction " "_messageText(), qui renvoie une valeur différente selon les options que vous " "avez choisies." #. (itstool) path: section/code #: C/radiobutton.js.page:203 #, no-wrap msgid "" "\n" " _messageText: function() {\n" "\n" " // Create a silly message for the popup depending on what you selected\n" " var stringMessage = \"\";\n" "\n" " if (this._place1.get_active()) {\n" "\n" " if (this._thing1.get_active())\n" " stringMessage = \"Penguins love the beach, too!\";\n" "\n" " else if (this._thing2.get_active())\n" " stringMessage = \"Make sure to put on that sunscreen!\";\n" "\n" " else stringMessage = \"Are you going to the beach in space?\";\n" "\n" " }\n" "\n" " else if (this._place2.get_active()) {\n" "\n" " if (this._thing1.get_active())\n" " stringMessage = \"The penguins will take over the moon!\";\n" "\n" " else if (this._thing2.get_active())\n" " stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n" "\n" " else stringMessage = \"You'll probably want a spaceship, too!\";\n" " }\n" "\n" " else if (this._place3.get_active()) {\n" "\n" " if (this._thing1.get_active())\n" " stringMessage = \"The penguins will be happy to be back home!\";\n" "\n" " else if (this._thing2.get_active())\n" " stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n" "\n" " else stringMessage = \"Try bringing a parka instead!\";\n" " }\n" "\n" " return stringMessage;\n" "\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:247 msgid "" "The get_active() method is how we can tell which RadioButton's pressed in. " "This function returns a different silly message depending on which set of " "buttons was pressed. Its return value is used as the MessageDialog's text " "property." msgstr "" "La méthode get_active() permet de savoir quel bouton de radio a été pressé. " "Cette fonction renvoie un message stupide différent selon le bouton qui a " "été pressé. Sa valeur de retour est utilisée comme propriété du texte de la " "boîte de dialogue de message." #. (itstool) path: section/code #: C/radiobutton.js.page:249 #, no-wrap msgid "" "\n" " _clearTravelPopUp: function () {\n" "\n" " this._travel.destroy();\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:258 msgid "" "This function is called when the MessageDialog's OK button is pressed. It " "simply makes the popup go away." msgstr "" "Cette fonction est appelée quand le bouton OK du texte de la boîte de " "dialogue de message est pressé. Elle fait seulement disparaître le message " "surgissant." #. (itstool) path: section/code #: C/radiobutton.js.page:260 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new RadioButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/radiobutton.js.page:265 C/togglebutton.js.page:144 msgid "" "Finally, we create a new instance of the finished RadioButtonExample class, " "and set the application running." msgstr "" "Enfin, nous créons une nouvelle instance de la classe RadioButtonExample et " "lançons l'application." #. (itstool) path: section/code #: C/radiobutton.js.page:270 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class RadioButtonExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsradiobutton',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 20,\n" " title: \"Travel Planning\"});\n" "\n" " // Create a label for the first group of buttons\n" " this._placeLabel = new Gtk.Label ({label: \"Where would you like to travel to?\"});\n" "\n" " // Create three radio buttons three different ways\n" " this._place1 = new Gtk.RadioButton ({label: \"The Beach\"});\n" "\n" " this._place2 = Gtk.RadioButton.new_from_widget (this._place1);\n" " this._place2.set_label (\"The Moon\");\n" "\n" " this._place3 = Gtk.RadioButton.new_with_label_from_widget (this._place1, \"Antarctica\");\n" " // this._place3.set_active (true);\n" "\n" " // Create a label for the second group of buttons\n" " this._thingLabel = new Gtk.Label ({label: \"And what would you like to bring?\" });\n" "\n" " // Create three more radio buttons\n" " this._thing1 = new Gtk.RadioButton ({label: \"Penguins\" });\n" " this._thing2 = new Gtk.RadioButton ({label: \"Sunscreen\", group: this._thing1 });\n" " this._thing3 = new Gtk.RadioButton ({label: \"A spacesuit\", group: this._thing1 });\n" "\n" " // Create a stock OK button\n" " this._okButton = new Gtk.Button ({\n" " label: 'gtk-ok',\n" " use_stock: 'true',\n" " halign: Gtk.Align.END });\n" "\n" " // Connect the button to the function which handles clicking it\n" " this._okButton.connect ('clicked', this._okClicked.bind(this));\n" "\n" " // Create a grid to put the \"place\" items in\n" " this._places = new Gtk.Grid ();\n" "\n" " // Attach the \"place\" items to the grid\n" " this._places.attach (this._placeLabel, 0, 0, 1, 1);\n" " this._places.attach (this._place1, 0, 1, 1, 1);\n" " this._places.attach (this._place2, 0, 2, 1, 1);\n" " this._places.attach (this._place3, 0, 3, 1, 1);\n" "\n" " // Create a grid to put the \"thing\" items in\n" " this._things = new Gtk.Grid ({ margin_top: 50 });\n" "\n" " // Attach the \"thing\" items to the grid\n" " this._things.attach (this._thingLabel, 0, 0, 1, 1);\n" " this._things.attach (this._thing1, 0, 1, 1, 1);\n" " this._things.attach (this._thing2, 0, 2, 1, 1);\n" " this._things.attach (this._thing3, 0, 3, 1, 1);\n" "\n" " // Create a grid to put everything in\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " margin_left: 40,\n" " margin_right: 50 });\n" "\n" " // Attach everything to the grid\n" " this._grid.attach (this._places, 0, 0, 1, 1);\n" " this._grid.attach (this._things, 0, 1, 1, 1);\n" " this._grid.attach (this._okButton, 0, 2, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _okClicked() {\n" "\n" " // Create a popup that shows a silly message\n" " this._travel = new Gtk.MessageDialog ({\n" " transient_for: this._window,\n" " modal: true,\n" " message_type: Gtk.MessageType.OTHER,\n" " buttons: Gtk.ButtonsType.OK,\n" " text: this._messageText() });\n" "\n" " // Show the popup\n" " this._travel.show();\n" "\n" " // Bind the OK button to the function that closes the popup\n" " this._travel.connect (\"response\", this._clearTravelPopUp.bind(this));\n" "\n" " }\n" "\n" " _messageText() {\n" "\n" " // Create a silly message for the popup depending on what you selected\n" " var stringMessage = \"\";\n" "\n" " if (this._place1.get_active()) {\n" "\n" " if (this._thing1.get_active())\n" " stringMessage = \"Penguins love the beach, too!\";\n" "\n" " else if (this._thing2.get_active())\n" " stringMessage = \"Make sure to put on that sunscreen!\";\n" "\n" " else stringMessage = \"Are you going to the beach in space?\";\n" "\n" " }\n" "\n" " else if (this._place2.get_active()) {\n" "\n" " if (this._thing1.get_active())\n" " stringMessage = \"The penguins will take over the moon!\";\n" "\n" " else if (this._thing2.get_active())\n" " stringMessage = \"A lack of sunscreen will be the least of your problems!\";\n" "\n" " else stringMessage = \"You'll probably want a spaceship, too!\";\n" " }\n" "\n" " else if (this._place3.get_active()) {\n" "\n" " if (this._thing1.get_active())\n" " stringMessage = \"The penguins will be happy to be back home!\";\n" "\n" " else if (this._thing2.get_active())\n" " stringMessage = \"Antarctic sunbathing may be hazardous to your health!\";\n" "\n" " else stringMessage = \"Try bringing a parka instead!\";\n" " }\n" "\n" " return stringMessage;\n" "\n" " }\n" "\n" " _clearTravelPopUp() {\n" " this._travel.destroy();\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new RadioButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/radiobutton.js.page:278 C/statusbar.js.page:225 C/textview.js.page:252 #, fuzzy #| msgid "" #| "In this sample we used the following: Gtk.Button" msgid "" "Gtk.Button" msgstr "" "Dans cet exemple, nous avons utilisé le Gtk.Button" #. (itstool) path: item/p #: C/radiobutton.js.page:279 C/scale.js.page:213 C/spinbutton.js.page:204 #: C/switch.js.page:270 C/textview.js.page:253 C/togglebutton.js.page:157 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Grid" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/radiobutton.js.page:280 C/scale.js.page:214 C/spinbutton.js.page:205 #: C/switch.js.page:272 C/textview.js.page:254 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Label" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/radiobutton.js.page:281 C/textview.js.page:255 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk.RadioButton" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: info/title #: C/radiobutton.py.page:8 #, fuzzy #| msgid "RadioButton" msgctxt "text" msgid "RadioButton (Python)" msgstr "RadioButton" #. (itstool) path: info/desc #: C/radiobutton.py.page:20 msgid "Mutually exclusive buttons." msgstr "Boutons exclusifs." #. (itstool) path: page/p #: C/radiobutton.py.page:25 msgid "" "Three RadioButtons. You can see in the terminal if they are turned off or on." msgstr "" "Trois boutons radio. Vous pouvez voir dans le terminal s'ils sont activés ou " "non." #. (itstool) path: section/code #: C/radiobutton.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"RadioButton Example\", application=app)\n" " self.set_default_size(250, 100)\n" " self.set_border_width(20)\n" "\n" " # a new radiobutton with a label\n" " button1 = Gtk.RadioButton(label=\"Button 1\")\n" " # connect the signal \"toggled\" emitted by the radiobutton\n" " # with the callback function toggled_cb\n" " button1.connect(\"toggled\", self.toggled_cb)\n" "\n" " # another radiobutton, in the same group as button1\n" " button2 = Gtk.RadioButton.new_from_widget(button1)\n" " # with label \"Button 2\"\n" " button2.set_label(\"Button 2\")\n" " # connect the signal \"toggled\" emitted by the radiobutton\n" " # with the callback function toggled_cb\n" " button2.connect(\"toggled\", self.toggled_cb)\n" " # set button2 not active by default\n" " button2.set_active(False)\n" "\n" " # another radiobutton, in the same group as button1,\n" " # with label \"Button 3\"\n" " button3 = Gtk.RadioButton.new_with_label_from_widget(\n" " button1, \"Button 3\")\n" " # connect the signal \"toggled\" emitted by the radiobutton\n" " # with the callback function toggled_cb\n" " button3.connect(\"toggled\", self.toggled_cb)\n" " # set button3 not active by default\n" " button3.set_active(False)\n" "\n" " # a grid to place the buttons\n" " grid = Gtk.Grid.new()\n" " grid.attach(button1, 0, 0, 1, 1)\n" " grid.attach(button2, 0, 1, 1, 1)\n" " grid.attach(button3, 0, 2, 1, 1)\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" " # callback function\n" " def toggled_cb(self, button):\n" " # a string to describe the state of the button\n" " state = \"unknown\"\n" " # whenever the button is turned on, state is on\n" " if button.get_active():\n" " state = \"on\"\n" " # else state is off\n" " else:\n" " state = \"off\"\n" " # whenever the function is called (a button is turned on or off)\n" " # print on the terminal which button was turned on/off\n" " print(button.get_label() + \" was turned \" + state)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/radiobutton.py.page:35 msgid "Useful methods for a RadioButton widget" msgstr "Méthodes utiles pour un élément graphique RadioButton" #. (itstool) path: section/p #: C/radiobutton.py.page:36 msgid "" "In line 16 the signal \"toggled\" is connected to the callback " "function toggled_cb() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: section/p #: C/radiobutton.py.page:38 #, fuzzy #| msgid "" #| "Instead of button1 = Gtk.RadioButton(label=\"Button 1\") we " #| "could create the button and label it with" msgid "" "As seen in , instead of button1 = Gtk." "RadioButton(label=\"Button 1\") we could create the button and label " "it with" msgstr "" "Au lieu de button1 = Gtk.RadioButton(label=« bouton 1 »), nous " "pourrions créer le bouton et l'étiquette qui va avec" #. (itstool) path: section/code #: C/radiobutton.py.page:39 #, no-wrap msgid "" "\n" "button1 = Gtk.RadioButton()\n" "button1.set_label(\"Button 1\")." msgstr "" "\n" "button1 = Gtk.RadioButton()\n" "button1.set_label(« bouton 1 »)." #. (itstool) path: section/p #: C/radiobutton.py.page:42 #, fuzzy #| msgid "" #| "Yet another way to create a new RadioButton with a label is button1 " #| "= Gtk.RadioButton.new_with_label(None, \"Button 1\") (the first " #| "arguement is the group of the radiobuttons, which we can get with " #| "get_group(), the second argument is the label)." msgid "" "Yet another way to create a new RadioButton with a label is button1 = " "Gtk.RadioButton.new_with_label(None, \"Button 1\") (the first " "argument is the group of the radiobuttons, which we can get with " "get_group(), the second argument is the label)." msgstr "" "Il y a encore une autre manière de créer un nouveau bouton de radio : " "button1 = Gtk.RadioButton.new_with_label(None, « bouton 1 ») où " "le premier argument est le groupe de boutons de radio que nous pouvons " "obtenir avec get_group() et le second argument est l'étiquette." #. (itstool) path: item/p #: C/radiobutton.py.page:51 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkRadioButton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/radiobutton.vala.page:8 #, fuzzy #| msgid "RadioButton" msgctxt "text" msgid "RadioButton (Vala)" msgstr "RadioButton" #. (itstool) path: info/desc #: C/radiobutton.vala.page:21 msgid "A choice from multiple CheckButtons." msgstr "Un choix entre plusieurs CheckButtons." #. (itstool) path: page/p #: C/radiobutton.vala.page:26 msgid "These RadioButtons report their activity in the terminal." msgstr "Ces boutons radio signalent leur activité dans le terminal." #. (itstool) path: page/code #: C/radiobutton.vala.page:28 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"RadioButton Example\");\n" "\n" "\t\tthis.border_width = 20;\n" "\t\tthis.set_default_size (250, 100);\n" "\n" "\t\t/* We demonstrate 3 different RadioButton creation methods */\n" "\n" "\t\t//Create a Radio Button\n" "\t\tvar button1 = new Gtk.RadioButton (null);\n" "\t\tbutton1.set_label (\"Button 1\");\n" "\n" "\t\t//Create a RadioButton with a label, and add it to the same group as button1.\n" "\t\tvar button2 = new Gtk.RadioButton.with_label (button1.get_group(),\"Button 2\");\n" "\n" "\t\t//Create a RadioButton with a label, adding it to button1's group.\n" "\t\tvar button3 = new Gtk.RadioButton.with_label_from_widget (button1, \"Button 3\");\n" "\n" "\t\t//Attach the buttons to a grid.\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tgrid.attach (button1, 0, 0, 1, 1);\n" "\t\tgrid.attach (button2, 0, 1, 1, 1);\n" "\t\tgrid.attach (button3, 0, 2, 1, 1);\n" "\n" "\t\t//Add the button to the window.\n" "\t\tthis.add (grid);\n" "\n" "\t\t//Connect the signal handlers (aka. callback functions) to the buttons.\n" "\t\tbutton1.toggled.connect (button_toggled_cb);\n" "\t\tbutton2.toggled.connect (button_toggled_cb);\n" "\t\tbutton3.toggled.connect (button_toggled_cb);\n" "\t}\n" "\n" "\tvoid button_toggled_cb (Gtk.ToggleButton button)\n" "\t{\n" "\t\tvar state = \"unknown\";\n" "\n" "\t\tif (button.get_active ())\n" "\t\t\tstate = \"on\";\n" "\t\telse {\n" "\t\t\tstate = \"off\";\n" "\t\t\tprint (\"\\n\");\n" "\t\t}\n" "\t\tprint (button.get_label() + \" was turned \" + state + \"\\n\");\n" "\t}\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\n" "\t\t//Show all of the things.\n" "\t\tnew MyWindow (this).show_all ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.MyApplication\");\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/radiobutton.vala.page:33 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk." "RadioButton" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: info/title #: C/record-collection.js.page:8 #, fuzzy #| msgid "3 Record Collection" msgctxt "text" msgid "Record collection (JavaScript)" msgstr "3 Discothèque" #. (itstool) path: info/desc #: C/record-collection.js.page:11 msgid "Create a small database application for ordering your music collection" msgstr "Création d'une petite base de données pour trier votre discothèque" #. (itstool) path: page/title #: C/record-collection.js.page:29 #, fuzzy #| msgid "3 Record Collection" msgid "Record collection" msgstr "3 Discothèque" #. (itstool) path: item/p #: C/record-collection.js.page:34 msgid "How to connect to a database using libgda" msgstr "comment vous connecter à une base de données en utilisant « libgda »" #. (itstool) path: item/p #: C/record-collection.js.page:35 msgid "How to insert and browse records in a database table" msgstr "" "comment insérer et parcourir des enregistrements dans une table de base de " "données" #. (itstool) path: section/p #: C/record-collection.js.page:41 msgid "" "This demo uses the Javascript language. We are going to demonstrate how to " "connect and use a database from a GTK program, by using the GDA (GNOME Data " "Access) library. Thus you also need this library installed." msgstr "" "Cet exemple utilise le langage Javascript. Nous allons vous montrer comment " "vous connecter à une base de données et l'utiliser à partir d'un programme " "GTK en utilisant la bibliothèque GDA (GNOME Data Access). Vous devez bien " "sûr avoir déjà installé cette dernière." #. (itstool) path: section/p #: C/record-collection.js.page:44 msgid "" "GNOME Data Access (GDA) is library whose purpose is to provide universal " "access to different kinds and types of data sources. This goes from " "traditional relational database systems, to any imaginable kind of data " "source such as a mail server, a LDAP directory, etc. For more information, " "and for a full API and documentation, visit the GDA website." msgstr "" "La bibliothèque GDA (GNOME Data Access) vous permet d'accéder de manière " "universelle à différentes sortes et types de sources de données, depuis les " "plus traditionnels systèmes de bases de données relationnelles, jusqu'à des " "sources aussi diverses qu'un serveur de messagerie, un répertoire LDAP, etc. " "Pour de plus amples informations et pour une documentation et l'API " "complète, consultez le Site Web de GDA." #. (itstool) path: section/p #: C/record-collection.js.page:47 msgid "" "Although a big part of the code is related to user interface (GUI), we are " "going to focus our tutorial on the database parts (we might mention other " "parts we think are relevant though). To know more about Javascript programs " "in GNOME, see the Image Viewer program " "tutorial." msgstr "" "Bien que la plus grosse partie du programme se réfère à l'interface " "utilisateur (GUI), nous allons orienter notre tutoriel sur les fonctions " "bases de données (avec des explications sur certaines autres fonctions que " "nous jugeons pertinentes). Pour de plus amples informations sur les " "programmes GNOME en Javascript, consultez le tutoriel Programme visionneur d'images." #. (itstool) path: item/p #: C/record-collection.js.page:60 msgid "" "Choose Generic Javascript from the JS tab, click " "Forward, and fill-out your details on the next few pages. Use " "record-collection as project name and directory." msgstr "" "Cliquez sur l'onglet JS, choisissez JavaScript générique, cliquez sur Continuer et renseignez les champs requis avec " "vos informations. Mettez discotheque (sans accent) comme nom du " "projet et répertoire." #. (itstool) path: item/p #: C/record-collection.js.page:63 msgid "" "Click Finished and the project will be created for you. Open " "src/main.js from the Project or File " "tabs. It contains very basic example code." msgstr "" "Cliquez sur Appliquer et votre projet est créé. Ouvrez src/" "main.js depuis l'onglet Projet ou l'onglet Fichiers. Il contient un exemple de programme très basique." #. (itstool) path: section/title #: C/record-collection.js.page:69 msgid "Program Structure" msgstr "Structure du programme" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/record-collection.js.page:70 #, fuzzy #| msgid "" #| "@@image: 'media/record-collection.png'; " #| "md5=2d645997687ed5aacd36aafafc16e072" msgctxt "_" msgid "" "external ref='media/record-collection.png' " "md5='2d645997687ed5aacd36aafafc16e072'" msgstr "" "@@image: 'media/record-collection.png'; md5=2d645997687ed5aacd36aafafc16e072" #. (itstool) path: section/p #: C/record-collection.js.page:71 msgid "" "This demo is a simple GTK application (with a single window) capable of " "inserting records into a database table as well as browsing all records of " "the table. The table has two fields: id, an integer, and " "name, a varchar. The first section (on the top) of the " "application allows you to insert a record into the table. The last section " "(bottom) allows you to see all the records of that table. Its content is " "refreshed every time a new record is inserted and on the application startup." msgstr "" "Cet exemple est une application GTK simple (avec une seule fenêtre) pouvant " "insérer des enregistrements dans une table de base de données et également " "consulter tous les enregistrements de cette table. Cette table possède deux " "champs : id, un entier et name, une variable de " "type caractère. La première section de l'application (en haut) vous permet " "d'insérer un enregistrement dans la table. La dernière (en bas) vous permet " "d'afficher tous les enregistrements de cette table. Son contenu est mis à " "jour à chaque fois qu'un nouvel enregistrement est inséré et au démarrage de " "l'application." #. (itstool) path: section/title #: C/record-collection.js.page:76 msgid "Starting the fun" msgstr "Début du plaisir" #. (itstool) path: section/p #: C/record-collection.js.page:77 msgid "Let's start by examining the skeleton of the program:" msgstr "Commençons par examiner le squelette du programme :" #. (itstool) path: section/code #: C/record-collection.js.page:78 #, no-wrap msgid "" "\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "const Gda = imports.gi.Gda;\n" "const Lang = imports.lang;\n" "\n" "function Demo () {\n" " this._init ();\n" "}\n" "\n" "Demo.prototype = {\n" "\n" " _init: function () {\n" " this.setupWindow ();\n" " this.setupDatabase ();\n" " this.selectData ();\n" " }\n" "}\n" "\n" "Gtk.init (null, null);\n" "\n" "var demo = new Demo ();\n" "\n" "Gtk.main ();" msgstr "" #. (itstool) path: item/p #: C/record-collection.js.page:103 msgid "" "Lines 1‒4: Initial imports. Pay special attention to line 3, which tells " "Javascript to import the GDA library, our focus in this tutorial." msgstr "" "Lignes 1‒4 : importations initiales. Faites surtout attention à la ligne 3, " "qui commande à Javascript l'importation de la bibliothèque GDA, la cible de " "ce tutoriel." #. (itstool) path: item/p #: C/record-collection.js.page:104 msgid "" "Lines 6‒17: Define our Demo class. Pay special attention to " "lines 13‒15, where we call 3 methods which will do the whole job. They will " "be detailed below." msgstr "" "Lignes 6‒17 : définition de la classe Demo. Faites surtout " "attention aux lignes 13‒15, où nous appelons 3 méthodes qui font tout le " "travail. Elles sont détaillées plus bas." #. (itstool) path: item/p #: C/record-collection.js.page:105 msgid "Lines 19‒23: Start the application." msgstr "Lignes 19‒23 : lancement de l'application." #. (itstool) path: section/title #: C/record-collection.js.page:110 msgid "Designing the application" msgstr "Conception de l'application" #. (itstool) path: section/p #: C/record-collection.js.page:111 msgid "" "Let's take a look at the setupWindow method. It is responsible " "for creating the User Interface (UI). As UI is not our focus, we will " "explain only the relevant parts." msgstr "" "Examinons la méthode setupWindow. C'est elle qui crée " "l'interface utilisateur. Comme l'interface utilisateur n'est pas notre " "sujet, nous en expliquons seulement les parties pertinentes." #. (itstool) path: section/code #: C/record-collection.js.page:112 #, no-wrap msgid "" "\n" " setupWindow: function () {\n" " this.window = new Gtk.Window ({title: \"Data Access Demo\", height_request: 350});\n" " this.window.connect (\"delete-event\", function () {\n" " Gtk.main_quit();\n" " return true;\n" " });\n" "\n" " // main box\n" " var main_box = new Gtk.Box ({orientation: Gtk.Orientation.VERTICAL, spacing: 5});\n" " this.window.add (main_box);\n" "\n" " // first label\n" " var info1 = new Gtk.Label ({label: \"<b>Insert a record</b>\", xalign: 0, use_markup: true});\n" " main_box.pack_start (info1, false, false, 5);\n" "\n" " // \"insert a record\" horizontal box\n" " var insert_box = new Gtk.Box ({orientation: Gtk.Orientation.HORIZONTAL, spacing: 5});\n" " main_box.pack_start (insert_box, false, false, 5);\n" "\n" " // ID field\n" " insert_box.pack_start (new Gtk.Label ({label: \"ID:\"}), false, false, 5);\n" " this.id_entry = new Gtk.Entry ();\n" " insert_box.pack_start (this.id_entry, false, false, 5);\n" "\n" " // Name field\n" " insert_box.pack_start (new Gtk.Label ({label: \"Name:\"}), false, false, 5);\n" " this.name_entry = new Gtk.Entry ({activates_default: true});\n" " insert_box.pack_start (this.name_entry, true, true, 5);\n" "\n" " // Insert button\n" " var insert_button = new Gtk.Button ({label: \"Insert\", can_default: true});\n" " insert_button.connect (\"clicked\", Lang.bind (this, this._insertClicked));\n" " insert_box.pack_start (insert_button, false, false, 5);\n" " insert_button.grab_default ();\n" "\n" " // Browse textview\n" " var info2 = new Gtk.Label ({label: \"<b>Browse the table</b>\", xalign: 0, use_markup: true});\n" " main_box.pack_start (info2, false, false, 5);\n" " this.text = new Gtk.TextView ({editable: false});\n" " var sw = new Gtk.ScrolledWindow ({shadow_type:Gtk.ShadowType.IN});\n" " sw.add (this.text);\n" " main_box.pack_start (sw, true, true, 5);\n" "\n" " this.count_label = new Gtk.Label ({label: \"\", xalign: 0, use_markup: true});\n" " main_box.pack_start (this.count_label, false, false, 0);\n" "\n" " this.window.show_all ();\n" " }," msgstr "" #. (itstool) path: item/p #: C/record-collection.js.page:162 msgid "" "Lines 22 and 27: Create the 2 entries (for the two fields) in which users " "will type something to get inserted in the database." msgstr "" "Lignes 22 et 27 : création des 2 entrées (pour les 2 champs) dans lesquelles " "l'utilisateur saisit les choses à insérer dans la base de données." #. (itstool) path: item/p #: C/record-collection.js.page:163 msgid "" "Lines 31‒34: Create the Insert button. We connect its clicked " "signal to the _insertClicked private method of the class. This " "method is detailed below." msgstr "" "Lignes 31‒34 : création du bouton « Insert ». Le signal clicked " "de ce bouton est connecté à la méthode privée _insertClicked de " "la classe. Cette méthode est décrite ci-dessous." #. (itstool) path: item/p #: C/record-collection.js.page:164 msgid "" "Line 39: Create the widget (TextView) where we will show the " "contents of the table." msgstr "" "Ligne 39 : création de l'élément graphique (TextView) où nous " "affichons le contenu de la table." #. (itstool) path: item/p #: C/record-collection.js.page:165 msgid "" "Line 44: Create the label where we will show the number of records in the " "table. Initially it's empty, it will be updated later." msgstr "" "Ligne 44 : création de l'étiquette où nous affichons le nombre " "d'enregistrements dans la table. Au début, elle est vide et est mise à jour " "ultérieurement." #. (itstool) path: section/title #: C/record-collection.js.page:170 msgid "Connecting to and initializing the database" msgstr "Connexion à la base de données et initialisation" #. (itstool) path: section/p #: C/record-collection.js.page:171 msgid "" "The code which makes the connection to the database is in the " "setupDatabase method below:" msgstr "" "Le code permettant de se connecter à la base de données est dans la méthode " "setupDatabase ci-dessous :" #. (itstool) path: section/code #: C/record-collection.js.page:174 #, no-wrap msgid "" "\n" " setupDatabase: function () {\n" " this.connection = new Gda.Connection ({provider: Gda.Config.get_provider(\"SQLite\"),\n" " cnc_string:\"DB_DIR=\" + GLib.get_home_dir () + \";DB_NAME=gnome_demo\"});\n" " this.connection.open ();\n" "\n" " try {\n" " var dm = this.connection.execute_select_command (\"select * from demo\");\n" " } catch (e) {\n" " this.connection.execute_non_select_command (\"create table demo (id integer, name varchar(100))\");\n" " }\n" " }," msgstr "" #. (itstool) path: item/p #: C/record-collection.js.page:188 msgid "" "Lines 2‒3: Create the GDA's Connection object. We must supply " "to its constructor some properties:" msgstr "" "Lignes 2‒3 : création de l'objet Connection de GDA. Il faut " "transmettre quelques propriétés à son constructeur :" #. (itstool) path: item/p #: C/record-collection.js.page:191 msgid "" "provider: One of GDA's supported providers. GDA supports " "SQLite, MySQL, PostgreSQL, Oracle and many others. For demo purposes we will " "use a SQLite database, as it comes installed by default in most " "distributions and it is simple to use (it just uses a file as a database)." msgstr "" "provider : l'un des fournisseurs reconnus par GDA. GDA prend en " "charge SQLite, MySQL, PostgreSQL, Oracle et beaucoup d'autres. Pour les " "besoins de l'exemple, nous utilisons une base de données SQLite car elle est " "déjà incluse par défaut dans la plupart des distributions et elle est facile " "à utiliser (elle n'a besoin que d'un fichier comme base de données)." #. (itstool) path: item/p #: C/record-collection.js.page:194 msgid "" "cnc_string: The connection string. It may change from provider " "to provider. The syntax for SQLite is: DB_DIR=PATH;" "DB_NAME=FILENAME. In this demo we are accessing a database " "called gnome_demo in the user home dir (note the call to GLib's " "get_home_dir function)." msgstr "" "cnc_string : la chaîne de connexion. Elle peut être différente " "en fonction du fournisseur. La syntaxe pour SQLite est : " "DB_DIR=CHEMIN;DB_NAME=NOM2FICHIER. Dans " "cet exemple, nous accédons à une base de données nommée gnome_demo dans le " "dossier personnel de l'utilisateur (notez l'appel à la fonction " "get_home_dir de GLib)." #. (itstool) path: note/p #: C/record-collection.js.page:198 msgid "" "If the provider is not supported by GDA, or if the connection string is " "missing some element, line 2 will raise an exception. So, in real life we " "should handle it with JavaScript's statement try...catch." msgstr "" "Si le fournisseur n'est pas reconnu par GDA, ou si la chaîne de connexion " "n'est pas complète, la ligne 2 provoque une exception. Donc, en pratique, il " "faut gérer cette exception grâce à l'instruction JavaScript try...catch." #. (itstool) path: item/p #: C/record-collection.js.page:202 msgid "" "Line 4: Open the connection. In the SQLite provider, if the database does " "not exist, it will be created in this step." msgstr "" "Ligne 4 : ouverture de la connexion. Pour le fournisseur SQLite, si la base " "de donnée n'existe pas, elle est créée à cette étape." #. (itstool) path: item/p #: C/record-collection.js.page:204 msgid "" "Lines 6‒10: Try to do a simple select to check if the table exists (line 7). " "If it does not exist (because the database was just created), this command " "will raise an exception, which is handled by the try..." "catch block. If it is the case, we run the create table " "statement (line 9)." msgstr "" "Lignes 6‒10 : tentative de faire une simple instruction « select » pour " "vérifier que la table existe (ligne 7). Si elle n'existe pas (parce que la " "base de données vient juste d'être créée), cette instruction provoque une " "exception qu'il faut gérer grâce au bloc try...catch. Dans ce cas, il faut exécuter l'instruction « create table » pour " "créer la table (ligne 9)." #. (itstool) path: item/p #: C/record-collection.js.page:205 #, fuzzy #| msgid "" #| "In order to run the SQL commands above we are using global GDA functions, " #| "execute_select_command and execute_non_select_command. They are simple to use, and just require two arguments: The " #| "Connection object and the SQL command to be parsed." msgid "" "In order to run the SQL commands above we are using the GDA connection " "methods execute_select_command and " "execute_non_select_command. They are simple to use, and just " "require two arguments: The Connection object and the SQL " "command to be parsed." msgstr "" "Pour exécuter les commandes SQL ci-dessus, nous utilisons les fonctions " "globales de GDA, execute_select_command et " "execute_non_select_command. Elles sont simples d'utilisation et " "ne requièrent que deux arguments : l'objet Connection et la " "commande SQL à analyser." #. (itstool) path: section/p #: C/record-collection.js.page:209 msgid "At this point we have the database set up, and are ready to use it." msgstr "" "À ce niveau, nous avons configuré la base de données et cette dernière est " "fonctionnelle." #. (itstool) path: section/title #: C/record-collection.js.page:213 msgid "Selecting" msgstr "Sélection" #. (itstool) path: section/p #: C/record-collection.js.page:214 msgid "" "After connecting to the database, our demo's constructor calls the " "selectData method. It is responsible for getting all the " "records in the table and showing them on the TextView widget. " "Let's take a look at it:" msgstr "" "Après connexion à la base de données, le constructeur de notre exemple " "appelle la méthode selectData. C'est elle qui récupère tous les " "enregistrements de la table et qui les affiche dans l'élément graphique " "TextView. Regardons à quoi elle ressemble :" #. (itstool) path: section/code #: C/record-collection.js.page:217 #, no-wrap msgid "" "\n" " selectData: function () {\n" " var dm = this.connection.execute_select_command (\"select * from demo order by 1, 2\");\n" " var iter = dm.create_iter ();\n" "\n" " var text = \"\";\n" "\n" " while (iter.move_next ()) {\n" " var id_field = Gda.value_stringify (iter.get_value_at (0));\n" " var name_field = Gda.value_stringify (iter.get_value_at (1));\n" "\n" " text += id_field + \"\\t=>\\t\" + name_field + '\\n';\n" " }\n" "\n" " this.text.buffer.text = text;\n" " this.count_label.label = \"<i>\" + dm.get_n_rows () + \" record(s)</i>\";\n" " }," msgstr "" #. (itstool) path: item/p #: C/record-collection.js.page:235 #, fuzzy #| msgid "" #| "Line 2: The SELECT command. We are using the global GDA's " #| "function execute_select_command for that. It returns a " #| "DataModel object, which is later used to retrieve the rows." msgid "" "Line 2: The SELECT command. We are using the GDA connection's " "execute_select_command method for that. It returns a " "DataModel object, which is later used to retrieve the rows." msgstr "" "Ligne 2 : la commande SELECT. Nous utilisons la fonction " "globale execute_select_command de GDA pour cela. Elle retourne " "un objet DataModel qui servira plus tard à récupérer les lignes." #. (itstool) path: item/p #: C/record-collection.js.page:236 msgid "" "Line 3: Create an Iter object, which is used to iterate over " "the DataModel's records." msgstr "" "Ligne 3 : création d'un objet Iter qui sert à itérer sur les " "enregistrements de DataModel." #. (itstool) path: item/p #: C/record-collection.js.page:237 msgid "" "Line 7: Loop through all the records, fetching them with the help of the " "Iter object. At this point, the iter variable " "contains the actual, retrieved data. Its move_next method " "returns false when it reaches the last record." msgstr "" "Ligne 7 : Itération sur tous les enregistrements en les récupérant à l'aide " "de l'objet Iter. À cet endroit, la variable Iter " "contient les informations trouvées. La méthode move_next " "retourne le message false quand elle atteint le dernier " "enregistrement." #. (itstool) path: item/p #: C/record-collection.js.page:239 msgid "Lines 8‒9: We do two things in each line:" msgstr "Lignes 8‒9 : nous faisons deux choses dans chaque ligne :" #. (itstool) path: item/p #: C/record-collection.js.page:241 msgid "" "Use Iter's method get_value_at, which requires " "only one argument: the column number to retrieve, starting at 0. As our " "SELECT command returns only two columns, we are retrieving " "columns 0 and 1." msgstr "" "Utilisez la méthode get_value_at d'Iter qui n'a " "besoin que d'un argument : le numéro de colonne à récupérer, en commençant " "par 0. Comme notre commande SELECT ne retourne que deux " "colonnes, nous récupérons donc les colonnes 0 et 1." #. (itstool) path: item/p #: C/record-collection.js.page:242 msgid "" "The method get_value_at returns the field in GLib's " "GValue format. A simple way to convert this format to a string " "is by using GDA's global function value_stringify. That's what " "we are doing here, and we store the results in the variables id_field and name_field." msgstr "" "La méthode get_value_at retourne l'information sur les champs " "au format GValue de GLib. Pour convertir ce format en chaîne de " "caractères, utilisez simplement la fonction globale value_stringify de GDA. C'est ce que nous faisons ici puis nous enregistrons les " "résultats dans les variables id_field et name_field." #. (itstool) path: item/p #: C/record-collection.js.page:245 msgid "" "Line 11: Concatenate the two fields to make one text line, separated by " "\"=>\", and store it in the text variable." msgstr "" "Ligne 11 : concaténation des deux chaînes pour former une seule ligne de " "texte en les séparant par \"=>\" et enregistrement dans la " "variable text." #. (itstool) path: item/p #: C/record-collection.js.page:246 msgid "" "Line 14: After the loop is finished, we have all the records formatted in " "the text variable. In this line we just set the contents of the " "TextView with that variable." msgstr "" "Ligne 14 : à la fin de la boucle, tous les enregistrements sont formatés " "dans la variable text. À cette ligne, nous attribuons le " "contenu de cette variable au TextView." #. (itstool) path: item/p #: C/record-collection.js.page:247 msgid "" "Line 15: Display the number of records in the table, making use of the " "DataModel's get_n_rows method." msgstr "" "Ligne 15 : affichage du nombre d'enregistrements dans la table avec la " "fonction get_n_rows de DataModel." #. (itstool) path: section/title #: C/record-collection.js.page:252 msgid "Inserting" msgstr "Insertion" #. (itstool) path: section/p #: C/record-collection.js.page:253 msgid "" "OK, we know how to connect to a database and how to select rows from a " "table. Now it's time to do an INSERT on the table. Do you " "remember above, in the method setupWindow we connected the " "Insert button's clicked signal to the method " "_insertClicked? Let's see the implementation of this method." msgstr "" "Bien, nous savons comment nous connecter à une base de données et comment " "sélectionner des lignes dans une table. Il est temps maintenant d'apprendre " "à faire une insertion à l'aide de la commande INSERT dans la " "table. Souvenez-vous, dans la méthode setupWindow, nous avions " "relié le signal clicked du bouton Insert à la " "méthode _insertClicked. Voyons la mise en place de cette " "méthode." #. (itstool) path: section/code #: C/record-collection.js.page:256 #, no-wrap msgid "" "\n" " _insertClicked: function () {\n" " if (!this._validateFields ())\n" " return;\n" "\n" " // Gda.execute_non_select_command (this.connection,\n" " // \"insert into demo values ('\" + this.id_entry.text + \"', '\" + this.name_entry.text + \"')\");\n" "\n" " var b = new Gda.SqlBuilder ({stmt_type:Gda.SqlStatementType.INSERT});\n" " b.set_table (\"demo\");\n" " b.add_field_value_as_gvalue (\"id\", this.id_entry.text);\n" " b.add_field_value_as_gvalue (\"name\", this.name_entry.text);\n" " var stmt = b.get_statement ();\n" " this.connection.statement_execute_non_select (stmt, null);\n" "\n" " this._clearFields ();\n" " this.selectData ();\n" " }," msgstr "" #. (itstool) path: section/p #: C/record-collection.js.page:274 #, fuzzy #| msgid "" #| "We have learned how to use GDA's convenience functions " #| "execute_select_command and execute_non_select_command to quickly execute SQL commands on the database. GDA allows one to " #| "build a SQL statement indirectly, by using its SqlBuilder " #| "object. What are the benefits of this? GDA will generate the SQL " #| "statement dynamically, and it will be valid for the connection provider " #| "used (it will use the same SQL dialect the provider uses). Let's study " #| "the code:" msgid "" "We have learned how to use the GDA connection's methods " "execute_select_command and execute_non_select_command to quickly execute SQL commands on the database. GDA allows one to " "build a SQL statement indirectly, by using its SqlBuilder " "object. What are the benefits of this? GDA will generate the SQL statement " "dynamically, and it will be valid for the connection provider used (it will " "use the same SQL dialect the provider uses). Let's study the code:" msgstr "" "Nous avons appris comment utiliser les fonctions bien pratiques " "execute_select_command et execute_non_select_command de GDA pour appliquer rapidement des commandes SQL sur la base de " "données. GDA nous permet aussi de construire une instruction SQL " "indirectement en utilisant son objet SqlBuilder. Quels en sont " "les avantages ? GDA crée l'instruction SQL dynamiquement et celle-ci est " "compatible avec le fournisseur de connexion utilisé (elle utilise le même " "langage SQL que celui du fournisseur). Voyons en détail le programme :" #. (itstool) path: item/p #: C/record-collection.js.page:278 msgid "" "Lines 2‒3: Check if the user filled all the fields. The code for the private " "method _validateFields is really simple and you can read it in " "the full demo source code." msgstr "" "Lignes 2‒3 : vérification du bon renseignement par l'utilisateur de tous les " "champs. Le code de la méthode privée _validateFields est " "vraiment simple et vous pouvez le consulter dans le programme source complet " "de l'exemple." #. (itstool) path: item/p #: C/record-collection.js.page:279 msgid "" "Line 5: The faster way of doing the INSERT. It's commented out " "as we want to show how to use the SqlBuilder object to build a " "SQL statement portable across databases." msgstr "" "Ligne 5 : la façon la plus rapide pour faire l'insertion à l'aide de la " "commande INSERT. Celle-ci est mise en commentaire car nous " "voulons vous montrer comment utiliser l'objet SqlBuilder pour " "construire une instruction SQL qui soit indépendante de la base de données." #. (itstool) path: item/p #: C/record-collection.js.page:280 msgid "" "Line 7: Create the SqlBuilder object. We must pass the type of " "statement we are going to build. It can be SELECT, " "UPDATE, INSERT or DELETE." msgstr "" " Ligne 7 : création de l'objet SqlBuilder. Nous devons " "transmettre le type d'instruction que nous voulons construire. Cela peut " "être SELECT, UPDATE, INSERT ou " "DELETE." #. (itstool) path: item/p #: C/record-collection.js.page:281 msgid "" "Line 8: Set the name of the table on which the built statement will operate " "(it will generate INSERT INTO demo)" msgstr "" "Ligne 8 : détermination du nom de la table sur laquelle l'instruction " "construite va agir (le code INSERT INTO demo est généré)" #. (itstool) path: item/p #: C/record-collection.js.page:282 msgid "" "Lines 9‒10: Set the fields and its values that will be part of the " "statement. The first argument is the field name (as in the table). The " "second one is the value for that field." msgstr "" "Lignes 9‒10 : détermination des champs et de leurs valeurs qui font partie " "de l'instruction. Le premier argument est le nom du champ (comme dans la " "table). Le second est la valeur pour ce champ." #. (itstool) path: item/p #: C/record-collection.js.page:283 msgid "" "Line 11: Get the dynamically generated Statement object, which " "represents a SQL statement." msgstr "" "Ligne 11 : fabrication de l'objet Statement généré " "dynamiquement et qui représente une instruction SQL." #. (itstool) path: item/p #: C/record-collection.js.page:284 msgid "Line 12: Finally, execute the SQL statement (INSERT)." msgstr "" "Ligne 12 : enfin, exécution de l'instruction SQL (INSERT)." #. (itstool) path: item/p #: C/record-collection.js.page:285 msgid "" "Line 14: Clear the id and name fields on the screen. The code for the " "private method _clearFields is really simple and you can read " "it in the full demo source code." msgstr "" "Ligne 14 : effacement des champs « id » et « name » à l'écran. Le code de la " "méthode privée _clearFields est vraiment simple et vous pouvez " "le consulter dans le programme source complet de l'exemple." #. (itstool) path: item/p #: C/record-collection.js.page:286 msgid "" "Line 15: Refresh the view on the screen by doing another SELECT." msgstr "" "Ligne 15 : mise à jour de l'affichage à l'écran en faisant un nouveau " "SELECT." #. (itstool) path: note/p #: C/record-collection.js.page:288 msgid "" "You can also make use of parameters while building the statement. By using " "the SqlBuilder objects and parameters you are less subject to " "attacks like SQL injection. Check the GDA documentation for more information about " "parameters." msgstr "" "Vous pouvez aussi faire usage de paramètres pour construire l'instruction. " "En utilisant les objets SqlBuilder et des paramètres, vous êtes " "moins exposé à des attaques du type injection SQL. Consultez la documentation GDA " "pour plus d'informations sur les paramètres." #. (itstool) path: section/p #: C/record-collection.js.page:293 msgid "" "All of the code you need should now be in place, so try running the code. " "You now have a database for your record collection!" msgstr "" "Tout le programme nécessaire doit maintenant être en place, donc essayez de " "l'exécuter. Vous disposez maintenant d'une base de donnée pour votre " "discothèque !" #. (itstool) path: section/p #: C/record-collection.js.page:298 msgid "" "If you run into problems with the tutorial, compare your code with this " "reference code." msgstr "" "Si vous rencontrez des difficultés avec ce tutoriel, comparez votre " "programme à ce programme de référence." #. (itstool) path: page/title #: C/response-type.page:17 #, fuzzy #| msgid "Gtk.ResponseType" msgid "enum ResponseType" msgstr "Gtk.ResponseType" #. (itstool) path: item/title #: C/response-type.page:21 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.NONE = -1" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:22 msgid "" "Returned if an action widget has no response id, or if the dialog gets " "programmatically hidden or destroyed" msgstr "" #. (itstool) path: item/title #: C/response-type.page:25 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.REJECT = -2" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:26 C/response-type.page:30 msgid "Generic response id, not used by GTK+ dialogs" msgstr "" #. (itstool) path: item/title #: C/response-type.page:29 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.ACCEPT = -3" msgstr "Gtk.ResponseType" #. (itstool) path: item/title #: C/response-type.page:33 msgid "ResponseType.DELETE_EVENT = -4" msgstr "" #. (itstool) path: item/p #: C/response-type.page:34 msgid "Returned if the dialog is deleted" msgstr "" #. (itstool) path: item/title #: C/response-type.page:37 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.OK = -5" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:38 msgid "Returned by OK buttons in GTK+ dialogs" msgstr "" #. (itstool) path: item/title #: C/response-type.page:41 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.CANCEL = -6" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:42 msgid "Returned by Cancel buttons in GTK+ dialogs" msgstr "" #. (itstool) path: item/title #: C/response-type.page:45 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.CLOSE = -7" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:46 msgid "Returned by Close buttons in GTK+ dialogs" msgstr "" #. (itstool) path: item/title #: C/response-type.page:49 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.YES = -8" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:50 msgid "Returned by Yes buttons in GTK+ dialogs" msgstr "" #. (itstool) path: item/title #: C/response-type.page:53 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.NO = -9" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:54 msgid "Returned by No buttons in GTK+ dialogs" msgstr "" #. (itstool) path: item/title #: C/response-type.page:57 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.APPLY = -10" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:58 msgid "Returned by Apply buttons in GTK+ dialogs" msgstr "" #. (itstool) path: item/title #: C/response-type.page:61 #, fuzzy #| msgid "Gtk.ResponseType" msgid "ResponseType.HELP = -11" msgstr "Gtk.ResponseType" #. (itstool) path: item/p #: C/response-type.page:62 msgid "Returned by Help buttons in GTK+ dialogs" msgstr "" #. (itstool) path: info/title #: C/scale.c.page:8 #, fuzzy #| msgid "Scale" msgctxt "text" msgid "Scale (C)" msgstr "Échelle" #. (itstool) path: info/desc #: C/scale.c.page:20 C/scale.py.page:20 C/scale.vala.page:20 msgid "A slider widget for selecting a value from a range" msgstr "" "Un élément graphique glissière pour choisir une valeur dans un intervalle" #. (itstool) path: page/title #: C/scale.c.page:23 C/scale.js.page:21 C/scale.py.page:23 C/scale.vala.page:23 msgid "Scale" msgstr "Échelle" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/scale.c.page:25 #, fuzzy #| msgid "@@image: 'media/scale2.png'; md5=ae2ba0a6675f3d9cdcd961cdf32f1a5c" msgctxt "_" msgid "external ref='media/scale2.png' md5='ae2ba0a6675f3d9cdcd961cdf32f1a5c'" msgstr "@@image: 'media/scale2.png'; md5=ae2ba0a6675f3d9cdcd961cdf32f1a5c" #. (itstool) path: page/p #: C/scale.c.page:26 C/scale.py.page:25 C/scale.vala.page:25 msgid "Slide the scales!" msgstr "Faites glisser les échelles !" #. (itstool) path: page/code #: C/scale.c.page:28 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/* This is the callback function. \n" " * It is a handler function which reacts to the signal. \n" " * In this case, it will notify the user the value of their scale as a label.\n" " */\n" "static void\n" "hscale_moved (GtkRange *range,\n" " gpointer user_data)\n" "{\n" " GtkWidget *label = user_data;\n" "\n" " /* Get the value of the range, and convert it into a string which will be\n" " * used as a new label for the horizontal scale.\n" " * %.0f - stands for a double that will have 0 decimal places.\n" " */\n" " gdouble pos = gtk_range_get_value (range);\n" " /* Note: Using g_strdup_printf returns a string that must be freed. \n" " * (In which is done below)\n" " */\n" " gchar *str = g_strdup_printf (\"Horizontal scale is %.0f\", pos);\n" " gtk_label_set_text (GTK_LABEL (label), str);\n" "\n" " g_free(str);\n" "}\n" "\n" "\n" "\n" "/* This is the second callback function. It is a handler function which \n" " * reacts to the signal. It does the same thing as the function above, except with\n" " * the vertical scale.\n" " */\n" "static void\n" "vscale_moved (GtkRange *range,\n" " gpointer user_data)\n" "{\n" " GtkWidget *label = user_data;\n" " \n" " gdouble pos = gtk_range_get_value (range);\n" " /* %.1f - stands for a double that will have 1 decimal place */\n" " gchar *str = g_strdup_printf (\"Vertical scale is %.1f\", pos);\n" " gtk_label_set_text (GTK_LABEL (label), str);\n" "\n" " \n" " g_free (str);\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " /* Declare variables */\n" " GtkWidget *window;\n" " GtkWidget *h_scale;\n" " GtkWidget *v_scale;\n" " GtkWidget *hlabel;\n" " GtkWidget *vlabel;\n" " GtkWidget *grid;\n" "\n" " /* The Adjustment object represents a value \n" " * which has an associated lower and upper bound.\n" " */\n" " GtkAdjustment *hadjustment;\n" " GtkAdjustment *vadjustment;\n" "\n" " /* Create a window with a title and a default size */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Scale Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 400, 300);\n" " gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n" "\n" " /* Two labels to be shown in the window */\n" " hlabel = gtk_label_new (\"Move the scale handle...\");\n" " vlabel = gtk_label_new (\"Move the scale handle...\");\n" "\n" " \n" " /* gtk_adjustment_new takes six parameters, three of which \n" " * may be difficult to understand:\n" " * step increment- move the handle with the arrow keys on your keyboard to see.\n" " * page increment - move the handle by clicking away from it \n" " * on the scale to see.\n" " * page size - not used here.\n" " */\n" " hadjustment = gtk_adjustment_new (0, 0, 100, 5, 10, 0);\n" " vadjustment = gtk_adjustment_new (50, 0, 100, 5, 10, 0); \n" "\n" " /* Create the Horizontal scale, making sure the \n" " * digits used have no decimals.\n" " */\n" " h_scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, hadjustment);\n" " gtk_scale_set_digits (GTK_SCALE (h_scale), 0); \n" "\n" " /* Allow it to expand horizontally (if there's space), and \n" " * set the vertical alignment\n" " */\n" " gtk_widget_set_hexpand (h_scale, TRUE);\n" " gtk_widget_set_valign (h_scale, GTK_ALIGN_START);\n" " \n" " /* Connecting the \"value-changed\" signal for the horizontal scale \n" " * to the appropriate callback function. \n" " * take note that GtkRange is part of GtkScale's Object Hierarchy.\n" " */\n" " g_signal_connect (h_scale, \n" " \"value-changed\", \n" " G_CALLBACK (hscale_moved), \n" " hlabel);\n" "\n" "\n" "\n" " /* Create the Vertical scale. This time, we will see what happens \n" " * when the digits aren't initially set.\n" " */\n" " v_scale = gtk_scale_new (GTK_ORIENTATION_VERTICAL, vadjustment);\n" " gtk_widget_set_vexpand (v_scale, TRUE);\n" "\n" " /* Connecting the \"value-changed\" signal for the vertical scale to \n" " * the appropriate callback function.\n" " */\n" " g_signal_connect (v_scale, \n" " \"value-changed\", \n" " G_CALLBACK (vscale_moved), \n" " vlabel);\n" "\n" " /* Create a grid and arrange everything accordingly */\n" " grid = gtk_grid_new ();\n" " gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n" " gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n" " gtk_grid_attach (GTK_GRID (grid), h_scale, 0, 0, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), v_scale, 1, 0, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), hlabel, 0, 1, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), vlabel, 1, 1, 1, 1);\n" " \n" "\n" " gtk_container_add (GTK_CONTAINER (window), grid);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/scale.c.page:36 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkScale" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/scale.c.page:37 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkRange" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/scale.c.page:38 C/spinbutton.c.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkAdjustment" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/scale.c.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "String Utility Functions" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/scale.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Scale (JavaScript)" msgstr "JavaScript" #. (itstool) path: info/desc #: C/scale.js.page:18 msgid "A slider which corresponds to a numerical value" msgstr "Une glissière qui correspond à une valeur numérique" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/scale.js.page:22 #, fuzzy #| msgid "" #| "@@image: 'media/scalepenguins.png'; md5=2dbe6a833fec86fde71a5ddb421e2cd5" msgctxt "_" msgid "" "external ref='media/scalepenguins.png' md5='2dbe6a833fec86fde71a5ddb421e2cd5'" msgstr "" "@@image: 'media/scalepenguins.png'; md5=2dbe6a833fec86fde71a5ddb421e2cd5" #. (itstool) path: page/p #: C/scale.js.page:23 msgid "" "A Scale is a horizontal or vertical slider, that represents a value inside a " "numerical range. When you create a new Scale, you set what its default " "position is, what the numbers at the top and bottom of the range are, and " "things like how much it moves up or down when you click on the Scale to " "either side of the knob. To keep from having to type all that in every time " "you create a new Scale, you can create an object called an Adjustment which " "keeps track of all that, then tell each new Scale to use that Adjustment." msgstr "" "Une échelle est une glissière horizontale ou verticale représentant une " "valeur comprise dans une fourchette numérique. Pour créer une échelle, vous " "devez définir sa position par défaut, son étendue numérique et le pas auquel " "elle avance ou recule. Au lieu d'être obligé de tout recommencer à chaque " "fois que vous créez une nouvelle échelle, vous pouvez inclure toutes ces " "données dans un objet nommé Adjustment et qui garde en mémoire tous les " "paramètres. Ensuite, à chaque création d'une nouvelle échelle, il suffit de " "lui indiquer de prendre ces réglages." #. (itstool) path: page/p #: C/scale.js.page:24 msgid "" "This scale is a simple widget that lets you adjust the size of an iceberg " "that penguins live on. The number of penguins on the iceberg is the product " "of the values of the two sliders. Try playing with them and seeing what " "happens." msgstr "" "Cette échelle est un simple élément graphique permettant d'ajuster la taille " "d'un iceberg sur lequel vivent des pingouins. Le nombre de pingouins sur " "l'iceberg est le produit des valeurs des deux glissières. Faites des essais " "en modifiant les valeurs et observez le résultat." #. (itstool) path: section/code #: C/scale.js.page:41 #, no-wrap msgid "" "\n" "const ScaleExample = new Lang.Class({\n" " Name: 'Scale Example',\n" "\n" " // Create the application itself\n" " _init: function() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsscale'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:66 msgid "" "All the code for this sample goes in the ScaleExample class. The above code " "creates a Gtk.Application for our widgets and window to go " "in." msgstr "" "Tout le code de cet exemple va dans la classe ScaleExemple. Le code ci-" "dessus crée une Gtk.Application pour nos éléments graphiques " "et la fenêtre qui les contient." #. (itstool) path: section/code #: C/scale.js.page:67 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 20,\n" " title: \"Birds on a Floe\"});\n" msgstr "" #. (itstool) path: section/title #: C/scale.js.page:82 msgid "Creating the scales" msgstr "Création des échelles" #. (itstool) path: section/code #: C/scale.js.page:83 #, no-wrap msgid "" "\n" " // Create the horizontal scale\n" " this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n" " this._hScale.set_valign (Gtk.Align.START);\n" " this._hScale.set_value (50);\n" " this._hScale.set_digits (0);\n" " // this._hScale.set_draw_value (false);\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:92 msgid "" "The new_with_range method is one way to create a new Scale widget. The " "parameters it takes are a Gtk.Orientation, the minimum " "value, the maximum value, and the increment for a single step. After that we " "use the Scale's methods to set its starting value, and how many decimal " "places it runs to. We also set its vertical alignment in this case, to " "control where it appears in the window." msgstr "" "La méthode new_with_range est l'un des moyens pour créer un nouvel élément " "graphique échelle. Les paramètres qu'elle utilise sont Gtk." "Orientation, la valeur minimum et l'incrément pour une seule " "graduation. Ensuite, nous utilisons les méthodes de l'échelle pour définir " "sa valeur de départ et en combien de fractions décimales la diviser. Dans ce " "cas, il nous faut aussi définir son alignement vertical pour la placer dans " "la fenêtre." #. (itstool) path: section/p #: C/scale.js.page:93 msgid "" "We can use the set_draw_value method to tell it whether or not to show the " "number next to the sliding scale. It's commented out in this example." msgstr "" "Nous pouvons aussi lui indiquer s'il faut afficher ou non le nombre à côté " "de la glissière avec la méthode set_draw_value. Les explications se trouvent " "dans cet exemple." #. (itstool) path: section/code #: C/scale.js.page:95 #, no-wrap msgid "" "\n" " // Create a master adjustment to use for the vertical (or any other) scale\n" " this._adjustment = new Gtk.Adjustment ({\n" " value: 95,\n" " lower: 0,\n" " upper: 100,\n" " step_increment: 5,\n" " page_increment: 10 });\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:105 msgid "" "An Adjustment is an object we can use to simplify things when creating a new " "Scale. The Adjustment's \"value\" property is what the Scale's default value " "is, while \"upper\" and \"lower\" make the high and low ends of the " "numerical range. Meanwhile, the increment values show how much the slider " "moves when you do things like click on it." msgstr "" "Un Adjustment est un objet permettant de simplifier la procédure de création " "d'une nouvelle échelle. La propriété « valeur » de l'Adjustment est la " "valeur par défaut de l'échelle alors que les valeurs « superieure » et " "« inferieure » en représentent le début et la fin. Entre les deux, les " "valeurs de l'incrément définissent le pas auquel l'échelle se déplace " "lorsque vous cliquez dessus." #. (itstool) path: section/code #: C/scale.js.page:107 #, no-wrap msgid "" "\n" " // Create a vertical scale using the adjustment we just made\n" " this._vScale = new Gtk.Scale ({\n" " orientation: Gtk.Orientation.VERTICAL,\n" " adjustment: this._adjustment,\n" " digits: 0,\n" " // draw_value: false,\n" " margin_left: 10 });\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:117 msgid "" "Here we create a new Scale object using _adjustment as its \"adjustment\" " "property. This is a great shortcut. We still have to tell it to round off " "the decimal place, though. Note that the draw_value property is commented " "out; this is how you tell it not to show the number next to the Scale when " "you're creating one this way." msgstr "" "Ici, nous créons un nouvel objet échelle en utilisant _adjustment comme " "étant sa propriété d'« ajustement ». Cela est un raccourci important. " "Cependant, il nous faut encore lui indiquer comment arrondir les décimales. " "Notez que nous y expliquons aussi la propriété draw_value : comment lui " "indiquer de ne pas afficher le nombre à côté de l'échelle lorsque vous " "décidez cette façon de faire." #. (itstool) path: section/code #: C/scale.js.page:119 #, no-wrap msgid "" "\n" " // Create the label that shows the product of the two values\n" " this._product = (this._hScale.get_value() * this._vScale.get_value());\n" " this._label = new Gtk.Label ({\n" " label: (String(this._product) + \" penguins on the iceberg.\"),\n" " height_request: 200,\n" " width_request: 200,\n" " wrap: true});\n" "\n" " // Connect the two scales to functions which recalculate the label\n" " this._hScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n" " this._vScale.connect (\"value-changed\", Lang.bind (this, this._recalc));\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:133 msgid "" "We can use the get_value method to find out the numerical value a Scale is " "set at. We can then do whatever we want with it, including multiply the two " "Scales' values together and have a Label show " "us the product. We set the label's text to wrap around, because we're having " "it display a silly message too." msgstr "" "La méthode get_value permet de trouver la valeur numérique à laquelle une " "échelle est définie. Ensuite, nous pouvons en faire ce que nous voulons, y " "compris multiplier les valeurs des deux échelles et obtenir une étiquette affichant le produit. Paramétrons le texte " "avec retour à la ligne, car nous avons aussi un message stupide à afficher." #. (itstool) path: section/p #: C/scale.js.page:134 msgid "" "After we create the Label, we connect the two Scales' \"value-changed\" " "signals to _recalc, a function that will recalculate the number of penguins " "on the iceberg and come up with a new message." msgstr "" "Ensuite, connectons les deux signaux « value-changed » à la fonction " "_recalc, qui recalcule le nombre de pingouins sur l'iceberg et affiche un " "nouveau message." #. (itstool) path: section/code #: C/scale.js.page:136 #, no-wrap msgid "" "\n" " // Create a grid to arrange things in\n" " this._UIGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " margin_top: 20,\n" " margin_left: 20});\n" "\n" " // Attach everything to the grid\n" " this._UIGrid.attach (this._label, 0, 0, 1, 1);\n" " this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n" " this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:149 msgid "" "Here we create a Grid to put everything in, " "then attach all our widgets to it. Note that here and on some of the widgets " "themselves we're using margins to keep things neatly spaced." msgstr "" "Ici, nous créons une grille pour tout y mettre " "et nous lui lions tous nos éléments graphiques. Notez que cette fois (et " "pour quelques éléments graphiques) nous utilisons des marges pour espacer " "proprement les éléments." #. (itstool) path: section/code #: C/scale.js.page:150 #, no-wrap msgid "" "\n" " // Add the grid to the window\n" " this._window.add (this._UIGrid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:158 msgid "" "Finally, we add the Grid to the window, then tell the window to show itself " "and all the widgets inside of it." msgstr "" "Enfin, nous ajoutons la grille à la fenêtre et indiquons à celle-ci de " "s'afficher toute seule avec tout son contenu." #. (itstool) path: section/title #: C/scale.js.page:162 msgid "Function which handles the scales' values changing" msgstr "Fonction prenant en charge les modifications de valeurs de l'échelle" #. (itstool) path: section/code #: C/scale.js.page:164 #, no-wrap msgid "" "\n" " _recalc: function() {\n" "\n" " // Figure out what the product of the two scales' values is\n" " var product = (this._hScale.get_value() * this._vScale.get_value());\n" "\n" " // Create a blank comment line in case there isn't a silly comment to make\n" " var comment = \"\";\n" "\n" " // Make a silly comment based on the number of penguins\n" " if (product > 9000) {\n" " comment = \"It's over 9000!\";\n" " }\n" " else if (product < 1000 && product > 0) {\n" " comment = \"They're getting lonely.\";\n" " }\n" " else if (product == 0) {\n" " comment = \"They're all gone ...\";\n" " }\n" " else comment = \"\";\n" "\n" " // Set ._label's new text\n" " this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:192 msgid "" "Remember, we can get a Scale's value using its get_value method. Here we " "simply recalculate what the product of the two values is after one of the " "Scales is moved, add in a silly message depending on how many penguins are " "left, and change the wording on _label to show the new number and message." msgstr "" "Souvenez-vous, nous pouvons obtenir la valeur d'une échelle avec la méthode " "get_value. Ici, nous ne faisons que recalculer le produit des deux valeurs " "après qu'une des deux échelles a bougé, ajouter un message stupide en " "fonction du nombre de pingouins restant et modifier le texte de l'étiquette " "avec le nouveau nombre et le message." #. (itstool) path: section/code #: C/scale.js.page:194 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new ScaleExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/scale.js.page:199 msgid "" "Finally, we create a new instance of the finished ScaleExample class, and " "set the application running." msgstr "" "Enfin, nous créons un nouvel exemple de la classe ScaleExemple et démarrons " "l'application." #. (itstool) path: section/code #: C/scale.js.page:204 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ScaleExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsscale'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 20,\n" " title: \"Birds on a Floe\"});\n" "\n" " // Create the horizontal scale\n" " this._hScale = Gtk.Scale.new_with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n" " this._hScale.set_valign (Gtk.Align.START);\n" " this._hScale.set_value (50);\n" " this._hScale.set_digits (0);\n" " // this._hScale.set_draw_value (false);\n" "\n" " // Create a master adjustment to use for the vertical (or any other) scale\n" " this._adjustment = new Gtk.Adjustment ({\n" " value: 95,\n" " lower: 0,\n" " upper: 100,\n" " step_increment: 5,\n" " page_increment: 10 });\n" "\n" " // Create a vertical scale using the adjustment we just made\n" " this._vScale = new Gtk.Scale ({\n" " orientation: Gtk.Orientation.VERTICAL,\n" " adjustment: this._adjustment,\n" " digits: 0,\n" " // draw_value: false,\n" " margin_left: 10 });\n" "\n" " // Create the label that shows the product of the two values\n" " this._product = (this._hScale.get_value() * this._vScale.get_value());\n" " this._label = new Gtk.Label ({\n" " label: (String(this._product) + \" penguins on the iceberg.\"),\n" " height_request: 200,\n" " width_request: 200,\n" " wrap: true});\n" "\n" " // Connect the two scales to functions which recalculate the label\n" " this._hScale.connect (\"value-changed\", this._recalc.bind(this));\n" " this._vScale.connect (\"value-changed\", this._recalc.bind(this));\n" "\n" " // Create a grid to arrange things in\n" " this._UIGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " margin_top: 20,\n" " margin_left: 20});\n" "\n" " // Attach everything to the grid\n" " this._UIGrid.attach (this._label, 0, 0, 1, 1);\n" " this._UIGrid.attach (this._hScale, 0, 1, 1, 1);\n" " this._UIGrid.attach (this._vScale, 1, 0, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._UIGrid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _recalc() {\n" "\n" " // Figure out what the product of the two scales' values is\n" " var product = (this._hScale.get_value() * this._vScale.get_value());\n" "\n" " // Create a blank comment line in case there isn't a silly comment to make\n" " var comment = \"\";\n" "\n" " // Make a silly comment based on the number of penguins\n" " if (product > 9000) {\n" " comment = \"It's over 9000!\";\n" " }\n" " else if (product < 1000 && product > 0) {\n" " comment = \"They're getting lonely.\";\n" " }\n" " else if (product == 0) {\n" " comment = \"They're all gone ...\";\n" " }\n" " else comment = \"\";\n" "\n" " // Set ._label's new text\n" " this._label.set_label (String (product) + \" penguins on the iceberg. \" + comment);\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new ScaleExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/scale.js.page:210 C/spinbutton.js.page:201 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk.Adjustment" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/scale.js.page:215 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Scale" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/scale.py.page:8 #, fuzzy #| msgid "Python" msgctxt "text" msgid "Scale (Python)" msgstr "Python" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/scale.py.page:24 C/scale.vala.page:24 #, fuzzy #| msgid "@@image: 'media/scale.png'; md5=462c52a53b773cb9e8c62c646bf88452" msgctxt "_" msgid "external ref='media/scale.png' md5='462c52a53b773cb9e8c62c646bf88452'" msgstr "@@image: 'media/scale.png'; md5=462c52a53b773cb9e8c62c646bf88452" #. (itstool) path: section/code #: C/scale.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Scale Example\", application=app)\n" " self.set_default_size(400, 300)\n" " self.set_border_width(5)\n" "\n" " # two adjustments (initial value, min value, max value,\n" " # step increment - press cursor keys to see!,\n" " # page increment - click around the handle to see!,\n" " # page size - not used here)\n" " ad1 = Gtk.Adjustment(0, 0, 100, 5, 10, 0)\n" " ad2 = Gtk.Adjustment(50, 0, 100, 5, 10, 0)\n" "\n" " # an horizontal scale\n" " self.h_scale = Gtk.Scale(\n" " orientation=Gtk.Orientation.HORIZONTAL, adjustment=ad1)\n" " # of integers (no digits)\n" " self.h_scale.set_digits(0)\n" " # that can expand horizontally if there is space in the grid (see\n" " # below)\n" " self.h_scale.set_hexpand(True)\n" " # that is aligned at the top of the space allowed in the grid (see\n" " # below)\n" " self.h_scale.set_valign(Gtk.Align.START)\n" "\n" " # we connect the signal \"value-changed\" emitted by the scale with the callback\n" " # function scale_moved\n" " self.h_scale.connect(\"value-changed\", self.scale_moved)\n" "\n" " # a vertical scale\n" " self.v_scale = Gtk.Scale(\n" " orientation=Gtk.Orientation.VERTICAL, adjustment=ad2)\n" " # that can expand vertically if there is space in the grid (see below)\n" " self.v_scale.set_vexpand(True)\n" "\n" " # we connect the signal \"value-changed\" emitted by the scale with the callback\n" " # function scale_moved\n" " self.v_scale.connect(\"value-changed\", self.scale_moved)\n" "\n" " # a label\n" " self.label = Gtk.Label()\n" " self.label.set_text(\"Move the scale handles...\")\n" "\n" " # a grid to attach the widgets\n" " grid = Gtk.Grid()\n" " grid.set_column_spacing(10)\n" " grid.set_column_homogeneous(True)\n" " grid.attach(self.h_scale, 0, 0, 1, 1)\n" " grid.attach_next_to(\n" " self.v_scale, self.h_scale, Gtk.PositionType.RIGHT, 1, 1)\n" " grid.attach(self.label, 0, 1, 2, 1)\n" "\n" " self.add(grid)\n" "\n" " # any signal from the scales is signaled to the label the text of which is\n" " # changed\n" " def scale_moved(self, event):\n" " self.label.set_text(\"Horizontal scale is \" + str(int(self.h_scale.get_value())) +\n" " \"; vertical scale is \" + str(self.v_scale.get_value()) + \".\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/scale.py.page:35 msgid "Useful methods for a Scale widget" msgstr "Méthodes utiles pour un élément graphique échelle" #. (itstool) path: section/p #: C/scale.py.page:36 msgid "" "A Gtk.Adjustment is needed to construct the Gtk.Scale. This is the " "representation of a value with a lower and upper bound, together with step " "and page increments, and a page size, and it is constructed as Gtk." "Adjustment(value, lower, upper, step_increment, page_increment, page_size) where the fields are of type float; step_increment is the increment/decrement that is obtained by using the cursor keys, " "page_increment the one that is obtained clicking on the scale " "itself. Note that page_size is not used in this case, it should " "be set to 0." msgstr "" "Pour construire une échelle Gtk.Scale, il faut un Gtk.Adjustment. C'est la " "représentation d'une valeur avec une limite inférieure et supérieure, des " "incréments d'étape et de page, d'une taille de page et est construite sous " "la forme Gtk.Adjustment(valeur, inferieure, superieure, " "step_increment, page_increment, page_size), où les champs sont du " "type flottant float ; step_increment est " "l'incrément ou décrément obtenu par l'utilisation des touches fléchées et " "page_increment est celui obtenu en cliquant sur l'échelle elle-" "même. Notez que la taille page_size n'est pas utilisée dans " "notre exemple et que sa valeur doit être définie à 0." #. (itstool) path: section/p #: C/scale.py.page:37 msgid "" "In line 28 the signal \"value-changed\" is connected to the " "callback function scale_moved() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/scale.py.page:39 msgid "" "get_value() retrieves the current value of the scale; " "set_value(value) sets it (if the value, of type " "float, is outside the minimum or maximum range, it will be " "clamped to fit inside them). These are methods of the class Gtk.Range." msgstr "" "La méthode get_value() récupère la valeur actuelle de " "l'échelle ; set_value(valeur) la définit (si la valeur, du type float, est en dehors des limites inférieure ou " "supérieure, elle sera rétrécie pour tenir à l'intérieur). Ce sont les " "méthodes de la classe Gtk.Range." #. (itstool) path: item/p #: C/scale.py.page:40 msgid "" "Use set_draw_value(False) to avoid displaying the current value " "as a string next to the slider." msgstr "" "Utilisez set_draw_value(faux) pour éviter d'afficher la valeur " "actuelle sous forme d'une chaîne à côté de la glissière." #. (itstool) path: item/p #: C/scale.py.page:41 msgid "" "To highlight the part of the scale between the origin and the current value:" msgstr "" "Pour surligner la partie d'échelle située entre l'origine et la valeur " "actuelle :" #. (itstool) path: item/code #: C/scale.py.page:42 #, no-wrap msgid "" "\n" "self.h_scale.set_restrict_to_fill_level(False)\n" "self.h_scale.set_fill_level(self.h_scale.get_value())\n" "self.h_scale.set_show_fill_level(True)" msgstr "" "\n" "self.h_scale.set_restrict_to_fill_level(faux)\n" "self.h_scale.set_fill_level(self.h_scale.get_value())\n" "self.h_scale.set_show_fill_level(vrai)" #. (itstool) path: item/p #: C/scale.py.page:46 msgid "" "in the callback function of the \"value-changed\" signal, so to have the new " "filling every time the value is changed. These are methods of the class Gtk." "Range." msgstr "" "dans la fonction de rappel du signal « value-changed », pour avoir le " "nouveau remplissage chaque fois que la valeur est modifiée. Ce sont les " "méthodes de la classe Gtk.Range." #. (itstool) path: item/p #: C/scale.py.page:48 msgid "" "add_mark(value, position, markup) adds a mark at the " "value (float or int if that is the " "precision of the scale), in position (Gtk.PositionType." "LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk.PositionType.BOTTOM) with text Null or markup in the Pango " "Markup Language. To clear marks, clear_marks()." msgstr "" "La méthode add_mark(valeur, position, marqueur) ajoute un " "marqueur à la valeur (float ou int " "selon la précision de l'échelle) dans position (Gtk." "PositionType.LEFT, Gtk.PositionType.RIGHT, Gtk.PositionType.TOP, Gtk." "PositionType.BOTTOM) avec le texte Null ou " "marqueur en langage Pango Markup. La fonction " "clear_marks() supprime les marqueurs." #. (itstool) path: item/p #: C/scale.py.page:49 msgid "" "set_digits(digits) sets the precision of the scale at " "digits digits." msgstr "" "La méthode set_digits(digits) définit la précision de l'échelle " "aux caractères digits." #. (itstool) path: item/p #: C/scale.py.page:57 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkScale" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/scale.py.page:58 C/spinbutton.py.page:50 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkAdjustment" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/scale.py.page:59 C/scrolledwindow.js.page:37 C/scrolledwindow.py.page:46 #: C/textview.py.page:100 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Standard Enumerations" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/scale.vala.page:8 #, fuzzy #| msgid "Sample Vala code" msgctxt "text" msgid "Scale (Vala)" msgstr "Exemple de code Vala" #. (itstool) path: page/code #: C/scale.vala.page:27 #, no-wrap msgid "" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\tGtk.Scale h_scale;\n" "\tGtk.Scale v_scale;\n" "\tGtk.Label label;\n" "\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\twindow.title = \"Scale Example\";\n" "\t\twindow.set_default_size (400, 300);\n" "\t\twindow.set_border_width (5);\n" "\n" "\t\th_scale = new Gtk.Scale.with_range (Gtk.Orientation.HORIZONTAL, 0.0, 100.0, 5.0);\n" "\t\th_scale.set_digits (0); //number of decimal places displayed\n" "\t\th_scale.set_valign (Gtk.Align.START); //horizontal alignment\n" "\n" "\t\tvar adjustment = new Gtk.Adjustment (42.0, 0.0, 100.0, 5.0, 10.0, 0.0);\n" "\t\tv_scale = new Gtk.Scale (Gtk.Orientation.VERTICAL, adjustment);\n" "\t\tv_scale.set_vexpand(true);\n" "\n" "\t\tlabel = new Gtk.Label (\"Move the scale handles...\");\n" "\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tgrid.set_column_spacing (10); //amount of space between columns\n" "\t\tgrid.set_column_homogeneous (true); //all columns same width\n" "\t\tgrid.attach (h_scale, 0, 0, 1, 1);\n" "\t\tgrid.attach_next_to (v_scale, h_scale, Gtk.PositionType.RIGHT, 1, 1);\n" "\t\tgrid.attach (label, 0, 1, 2, 1);\n" "\n" "\t\th_scale.value_changed.connect (scale_moved);\n" "\t\tv_scale.value_changed.connect (scale_moved);\n" "\n" "\t\twindow.add (grid);\n" "\t\twindow.show_all ();\n" "\t}\n" "\n" "\t/* Callback function for \"value-changed\" signal.\n" "\t * The parameter refers to the scale which emitted the signal.\n" "\t * Since we are accessing the values of not one, but two scales,\n" "\t * we made the ranges instance variables, and ignore the\n" "\t * parameter.\n" "\t */\n" "\tvoid scale_moved (Gtk.Range range) {\n" "\t\tlabel.set_text (\"Horizontal scale is %.1f; vertical scale is %.1f.\".printf (h_scale.get_value (), v_scale.get_value ()));\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/scale.vala.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Scale" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/scale.vala.page:33 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk." "Adjustment" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/scale.vala.page:34 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk." "PositionType" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/scale.vala.page:35 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk." "Orientation" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: info/title #: C/scrolledwindow.c.page:8 #, fuzzy #| msgid "ScrolledWindow" msgctxt "text" msgid "ScrolledWindow (C)" msgstr "ScrolledWindow" #. (itstool) path: info/desc #: C/scrolledwindow.c.page:20 C/scrolledwindow.js.page:18 #: C/scrolledwindow.py.page:19 C/scrolledwindow.vala.page:19 msgid "Adds scrollbars to its child widget" msgstr "Ajoute des barres de défilement à son élément graphique enfant" #. (itstool) path: page/title #: C/scrolledwindow.c.page:23 C/scrolledwindow.js.page:21 #: C/scrolledwindow.py.page:22 C/scrolledwindow.vala.page:22 msgid "ScrolledWindow" msgstr "ScrolledWindow" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/scrolledwindow.c.page:25 C/scrolledwindow.js.page:22 #: C/scrolledwindow.py.page:23 C/scrolledwindow.vala.page:23 #, fuzzy #| msgid "" #| "@@image: 'media/scrolledwindow.png'; md5=697bb3205d5c4fb0b4ea8db435843157" msgctxt "_" msgid "" "external ref='media/scrolledwindow.png' " "md5='697bb3205d5c4fb0b4ea8db435843157'" msgstr "" "@@image: 'media/scrolledwindow.png'; md5=697bb3205d5c4fb0b4ea8db435843157" #. (itstool) path: page/p #: C/scrolledwindow.c.page:26 C/scrolledwindow.js.page:23 #: C/scrolledwindow.py.page:24 C/scrolledwindow.vala.page:24 msgid "An image in a scrolled window." msgstr "Une image dans une fenêtre avec barres de défilement." #. (itstool) path: page/code #: C/scrolledwindow.c.page:28 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " /* Declare variables */\n" " GtkWidget *window;\n" " GtkWidget *scrolled_window;\n" " GtkWidget *image;\n" "\n" " /* Create a window with a title, and a default size */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"ScrolledWindow Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n" "\n" " /* Create the scrolled window. Usually NULL is passed for both parameters so\n" " * that it creates the horizontal/vertical adjustments automatically. Setting\n" " * the scrollbar policy to automatic allows the scrollbars to only show up\n" " * when needed.\n" " */\n" " scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n" " /* Set the border width */\n" " gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 10);\n" " /* Extract our desired image from a file that we have */\n" " image = gtk_image_new_from_file (\"gnome-image.png\");\n" " /* And add it to the scrolled window */\n" " gtk_container_add (GTK_CONTAINER (scrolled_window), image);\n" " /* Set the policy of the horizontal and vertical scrollbars to automatic.\n" " * What this means is that the scrollbars are only present if needed.\n" " */\n" " gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),\n" " GTK_POLICY_AUTOMATIC,\n" " GTK_POLICY_AUTOMATIC);\n" "\n" " gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/scrolledwindow.c.page:37 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkPolicyType" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/scrolledwindow.js.page:8 #, fuzzy #| msgid "Window (JavaScript)" msgctxt "text" msgid "ScrolledWindow (JavaScript)" msgstr "Fenêtre (JavaScript)" #. (itstool) path: section/code #: C/scrolledwindow.js.page:29 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const GObject = imports.gi.GObject;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ScrolledWindowExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jscrolledwindow'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this.window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" " // Create the application window\n" " this.window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"ScrolledWindow Example\",\n" " default_width: 200,\n" " default_height: 200,\n" " border_width: 10\n" " });\n" " // the scrolledwindow\n" " this.scrolledWindow = new Gtk.ScrolledWindow();\n" " this.scrolledWindow.set_border_width(10);\n" " // there is always the scrollbar (otherwise: AUTOMATIC - only if needed - or NEVER)\n" " this.scrolledWindow.set_policy(Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS);\n" " // an image - slightly larger than the window\n" " this.image = new Gtk.Image();\n" " this.image.set_from_file(\"gnome-image.png\");\n" "\n" " // add the image to the scrolledwindow\n" " this.scrolledWindow.add_with_viewport(this.image);\n" "\n" " // add the scrolledwindow to the window\n" " this.window.add(this.scrolledWindow);\n" " this.window.show_all();\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new ScrolledWindowExample();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/scrolledwindow.js.page:36 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkScrolledWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/scrolledwindow.py.page:8 #, fuzzy #| msgid "ScrolledWindow" msgctxt "text" msgid "ScrolledWindow (Python)" msgstr "ScrolledWindow" #. (itstool) path: section/code #: C/scrolledwindow.py.page:30 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(\n" " self, title=\"ScrolledWindow Example\", application=app)\n" " self.set_default_size(200, 200)\n" "\n" " # the scrolledwindow\n" " scrolled_window = Gtk.ScrolledWindow()\n" " scrolled_window.set_border_width(10)\n" " # there is always the scrollbar (otherwise: AUTOMATIC - only if needed\n" " # - or NEVER)\n" " scrolled_window.set_policy(\n" " Gtk.PolicyType.ALWAYS, Gtk.PolicyType.ALWAYS)\n" "\n" " # an image - slightly larger than the window...\n" " image = Gtk.Image()\n" " image.set_from_file(\"gnome-image.png\")\n" "\n" " # add the image to the scrolledwindow\n" " scrolled_window.add_with_viewport(image)\n" "\n" " # add the scrolledwindow to the window\n" " self.add(scrolled_window)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/scrolledwindow.py.page:33 msgid "Useful methods for a ScrolledWindow widget" msgstr "Méthodes utiles pour un élément graphique ScrolledWindow" #. (itstool) path: item/p #: C/scrolledwindow.py.page:35 msgid "" "set_policy(hscrollbar_policy, vscrollbar_policy) where each of " "the arguments is one of Gtk.Policy.AUTOMATIC, Gtk.Policy.ALWAYS, Gtk." "Policy.NEVER regulates whether the horizontal and vertical scrollbars " "should appear: with AUTOMATIC they appear only if needed, " "ALWAYS and NEVER are self-explanatory." msgstr "" "La méthode set_policy(hscrollbar_policy, vscrollbar_policy), où " "chaque argument est l'un des Gtk.Policy.AUTOMATIC, Gtk.Policy.ALWAYS, " "Gtk.Policy.NEVER, définit laquelle des barres de défilement verticale " "ou horizontale doit s'afficher. AUTOMATIC les affiche seulement " "si nécessaire, ALWAYS et NEVER les affichent " "respectivement toujours ou jamais." #. (itstool) path: item/p #: C/scrolledwindow.py.page:36 msgid "" "add_with_viewport(widget) is used to add the Gtk.Widget " "widget without native scrolling capabilities inside the window." msgstr "" "La méthode add_with_viewport(widget) est utilisé pour ajouter " "l'élément graphique Gtk.Widget widget, sans possibilité de " "défilement à l'intérieur de la fenêtre." #. (itstool) path: item/p #: C/scrolledwindow.py.page:37 msgid "" "set_placement(window_placement) sets the placement of the " "contents with respect to the scrollbars for the scrolled window. The options " "for the argument are Gtk.CornerType.TOP_LEFT (default: the " "scrollbars are on the bottom and on the right of the window), Gtk." "CornerType.TOP_RIGHT, Gtk.CornerType.BOTTOM_LEFT, Gtk.CornerType." "BOTTOM_RIGHT." msgstr "" "La méthode set_placement(window_placement) organise le cadrage " "du contenu de la fenêtre en fonction de ses barres de défilement. Les " "options possibles des arguments sont : Gtk.CornerType.TOP_LEFT " "(par défaut, les barres de défilement sont en bas et à droite de la " "fenêtre), Gtk.CornerType.TOP_RIGHT, Gtk.CornerType.BOTTOM_LEFT, Gtk." "CornerType.BOTTOM_RIGHT." #. (itstool) path: item/p #: C/scrolledwindow.py.page:38 msgid "" "set_hadjustment(adjustment) and " "set_vadjustment(adjustment) set the Gtk.Adjustment " "adjustment. This is the representation of a value with a lower " "and upper bound, together with step and page increments, and a page size, " "and it is constructed as Gtk.Adjustment(value, lower, upper, " "step_increment, page_increment, page_size) where the fields are of " "type float. (Note that step_increment is not used " "in this case, it can be set to 0.)" msgstr "" "Les méthodes set_hadjustment(ajustement) et " "set_vadjustment(ajustement) définissent l'ajustement Gtk.Adjustment. C'est la représentation d'une valeur avec une limite " "inférieure et supérieure, des incréments d'étape et de page, d'une taille de " "page et est construite sous la forme Gtk.Adjustment(valeur, " "inferieure, superieure, step_increment, page_increment, page_size) où " "les champs sont du type float. (Notez que step_increment n'est pas utilisé dans notre exemple et qu'il peut être défini à " "0)." #. (itstool) path: item/p #: C/scrolledwindow.py.page:45 C/textview.py.page:99 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkScrolledWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/scrolledwindow.vala.page:8 #, fuzzy #| msgid "ScrolledWindow" msgctxt "text" msgid "ScrolledWindow (Vala)" msgstr "ScrolledWindow" #. (itstool) path: page/code #: C/scrolledwindow.vala.page:26 #, no-wrap msgid "" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\t\t/* Create the window of this application. */\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\twindow.title = \"ScrolledWindow Example\";\n" "\t\twindow.set_default_size (200, 200);\n" "\n" "\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n" "\t\tscrolled_window.set_border_width (10);\n" "\t\tscrolled_window.add_with_viewport (new Gtk.Image.from_file (\"gnome-image.png\"));\n" "\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);\n" "\n" "\t\twindow.add (scrolled_window);\n" "\t\twindow.show_all ();\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/scrolledwindow.vala.page:31 C/textview.vala.page:37 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "ScrolledWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/scrolledwindow.vala.page:32 C/textview.vala.page:39 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "PolicyType" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/separator.c.page:8 #, fuzzy #| msgid "Separator" msgctxt "text" msgid "Separator (C)" msgstr "Séparateur" #. (itstool) path: info/desc #: C/separator.c.page:19 C/separator.py.page:20 C/separator.vala.page:21 msgid "A separator widget" msgstr "Un élément graphique séparateur" #. (itstool) path: page/title #: C/separator.c.page:22 C/separator.py.page:23 C/separator.vala.page:24 msgid "Separator" msgstr "Séparateur" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/separator.c.page:24 C/separator.py.page:25 C/separator.vala.page:26 #, fuzzy #| msgid "@@image: 'media/separator.png'; md5=8769b27662ce5c77f99e9ce33751a21a" msgctxt "_" msgid "" "external ref='media/separator.png' md5='8769b27662ce5c77f99e9ce33751a21a'" msgstr "@@image: 'media/separator.png'; md5=8769b27662ce5c77f99e9ce33751a21a" #. (itstool) path: page/p #: C/separator.c.page:25 C/separator.py.page:26 C/separator.vala.page:27 msgid "A horizontal and a vertical separator divide some labels." msgstr "Un séparateur horizontal et un vertical séparent quelques étiquettes." #. (itstool) path: section/code #: C/separator.c.page:31 #, no-wrap msgid "" "#include <gtk/gtk.h>\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *grid;\n" " GtkWidget *window;\n" " GtkWidget *label1;\n" " GtkWidget *label2;\n" " GtkWidget *label3;\n" " GtkWidget *hseparator;\n" " GtkWidget *vseparator;\n" "\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Separator Example\");\n" "\n" " label1 = gtk_label_new (\"Below, a horizontal separator.\");\n" " label2 = gtk_label_new (\"On the right, a vertical separator.\");\n" " label3 = gtk_label_new (\"On the left, a vertical separator.\");\n" "\n" " vseparator = gtk_separator_new (GTK_ORIENTATION_VERTICAL);\n" " hseparator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);\n" "\n" " grid = gtk_grid_new ();\n" "\n" " gtk_grid_attach (GTK_GRID (grid), label1, 0, 0, 3, 1);\n" " gtk_grid_attach (GTK_GRID (grid), hseparator, 0, 1, 3, 1);\n" " gtk_grid_attach (GTK_GRID (grid), label2, 0, 2, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), vseparator, 1, 2, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), label3, 2, 2, 1, 1);\n" "\n" " gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n" "\n" " gtk_container_add (GTK_CONTAINER (window), grid);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: section/title #: C/separator.c.page:35 C/separator.py.page:36 C/separator.vala.page:37 msgid "API Reference" msgstr "Référence API" #. (itstool) path: item/p #: C/separator.c.page:39 C/separator.py.page:40 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkSeparator" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/separator.py.page:8 #, fuzzy #| msgid "Statusbar" msgctxt "text" msgid "Separator (Python)" msgstr "Barre de statut" #. (itstool) path: section/code #: C/separator.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Separator Example\", application=app)\n" "\n" " # three labels\n" " label1 = Gtk.Label()\n" " label1.set_text(\"Below, a horizontal separator.\")\n" "\n" " label2 = Gtk.Label()\n" " label2.set_text(\"On the right, a vertical separator.\")\n" "\n" " label3 = Gtk.Label()\n" " label3.set_text(\"On the left, a vertical separator.\")\n" "\n" " # a horizontal separator\n" " hseparator = Gtk.Separator(orientation=Gtk.Orientation.HORIZONTAL)\n" " # a vertical separator\n" " vseparator = Gtk.Separator(orientation=Gtk.Orientation.VERTICAL)\n" "\n" " # a grid to attach labels and separators\n" " grid = Gtk.Grid()\n" " grid.attach(label1, 0, 0, 3, 1)\n" " grid.attach(hseparator, 0, 1, 3, 1)\n" " grid.attach(label2, 0, 2, 1, 1)\n" " grid.attach(vseparator, 1, 2, 1, 1)\n" " grid.attach(label3, 2, 2, 1, 1)\n" " grid.set_column_homogeneous(True)\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: info/title #: C/separator.vala.page:8 #, fuzzy #| msgid "Separator" msgctxt "text" msgid "Separator (Vala)" msgstr "Séparateur" #. (itstool) path: section/code #: C/separator.vala.page:33 #, no-wrap msgid "" "/* This is the application. */\n" "public class Application : Gtk.Application {\n" "\n" "\tpublic Application () {\n" "\t\tObject (application_id: \"org.example.window\");\n" "\t}\n" "\n" "\t/* Override the 'activate' signal of GLib.Application,\n" "\t * which is inherited by Gtk.Application. */\n" "\tpublic override void activate () {\n" "\n" "\t\tvar window = new Gtk.Window ();\n" "\t\twindow.title = \"Separator Example\";\n" "\n" "\t\tvar label1 = new Gtk.Label (\"Below, a horizontal separator.\");\n" "\t\tvar label2 = new Gtk.Label (\"On the right, a vertical separator.\");\n" "\t\tvar label3 = new Gtk.Label (\"On the left, a vertical separator.\");\n" "\n" "\t\tvar hseparator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);\n" "\t\tvar vseparator = new Gtk.Separator (Gtk.Orientation.VERTICAL);\n" "\n" "\t\tvar grid = new Gtk.Grid();\n" "\n" "\t\tgrid.attach (label1, 0, 0, 3, 1);\n" "\t\tgrid.attach (hseparator, 0, 1, 3, 1);\n" "\t\tgrid.attach (label2, 0, 2, 1, 1);\n" "\t\tgrid.attach (vseparator, 1, 2, 1, 1);\n" "\t\tgrid.attach (label3, 2, 2, 1, 1);\n" "\n" "\t\tgrid.set_column_homogeneous(true);\n" "\n" "\t\twindow.add (grid);\n" "\t\tthis.add_window (window);\n" "\n" "\t\twindow.show_all ();\n" "\t}\n" "}\n" "\n" "/* The main function creates the application and runs it.*/\n" "int main (string[] args) {\n" "\tvar app = new Application ();\n" "\treturn app.run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/separator.vala.page:41 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/separator.vala.page:42 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkSeparator" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/separator.vala.page:43 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkGrid" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/separator.vala.page:44 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkLabel" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: page/title #: C/set-up-gedit.js.page:19 msgid "Set up gedit for JavaScript development" msgstr "Configuration de gedit pour le développement en JavaScript" #. (itstool) path: page/p #: C/set-up-gedit.js.page:20 #, fuzzy #| msgid "" #| "This tutorial will show you how to set up gedit, GNOME's basic text editor, so that it " #| "has a handful of extra features which are useful for writing JavaScript " #| "code." msgid "" "This tutorial will show you how to set up gedit, GNOME's basic text editor, so that it has a " "handful of extra features which are useful for writing JavaScript code." msgstr "" "Ce tutoriel va vous montrer comment configurer gedit, l'éditeur de texte de base dans GNOME, pour " "qu'il intègre les fonctions optionnelles nécessaires à la programmation en " "JavaScript." #. (itstool) path: section/title #: C/set-up-gedit.js.page:23 msgid "Making code clearer" msgstr "Clarification du code" #. (itstool) path: section/p #: C/set-up-gedit.js.page:24 #, fuzzy #| msgid "" #| "Click on Edit in gedit's menu bar, then click on " #| "Preferences. You should see something like this:" msgid "" "Click on Edit in gedit's menu bar, then click on " "Preferences. You should see something like this:" msgstr "" "Dans l'onglet Édition de la barre de menu de gedit, cliquez sur " "Préférences. La boîte de dialogue suivante s'affiche :" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/set-up-gedit.js.page:25 #, fuzzy #| msgid "@@image: 'media/geditview.png'; md5=f1438295662d95f56fcd1d8200efaaf2" msgctxt "_" msgid "" "external ref='media/geditview.png' md5='f1438295662d95f56fcd1d8200efaaf2'" msgstr "@@image: 'media/geditview.png'; md5=f1438295662d95f56fcd1d8200efaaf2" #. (itstool) path: section/p #: C/set-up-gedit.js.page:26 msgid "Here are the options you want to make sure are turned on." msgstr "Voici les options à activer." #. (itstool) path: item/p #: C/set-up-gedit.js.page:28 msgid "" "Display line numbers will help you compare the code you type in " "with the original, and make it easier to see which line is causing an error " "if there is a bug." msgstr "" "Afficher les numéros de ligne va vous aider à comparer votre code " "avec l'original et trouver plus facilement la ligne qui provoque une erreur " "s'il y a un bogue." #. (itstool) path: item/p #: C/set-up-gedit.js.page:29 msgid "" "Highlight current line makes it easier to see which line you're " "on, when you have to go back and forth a lot." msgstr "" "Surligner la ligne actuelle vous permet de retrouver plus " "facilement votre ligne active quand vous vous déplacez souvent." #. (itstool) path: item/p #: C/set-up-gedit.js.page:30 msgid "" "Highlight matching brackets helps you make sure you didn't leave " "out a bracket by accident." msgstr "" "Surligner les parenthèses correspondantes vous permet de penser à " "refermer la parenthèse." #. (itstool) path: section/title #: C/set-up-gedit.js.page:35 msgid "Making editing easier" msgstr "Faciliter l'édition" #. (itstool) path: section/p #: C/set-up-gedit.js.page:36 msgid "" "In gedit's Preferences dialog, click on the Editor " "tab. You should see something like this:" msgstr "" "Dans les Préférences de gedit, ouvrez l'onglet Éditeur. Cette boîte de dialogue s'affiche :" #. (itstool) path: section/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/set-up-gedit.js.page:37 #, fuzzy #| msgid "" #| "@@image: 'media/gediteditor.png'; md5=50db1ee8f2c545744879ee9fba5b4b24" msgctxt "_" msgid "" "external ref='media/gediteditor.png' md5='50db1ee8f2c545744879ee9fba5b4b24'" msgstr "@@image: 'media/gediteditor.png'; md5=50db1ee8f2c545744879ee9fba5b4b24" #. (itstool) path: section/p #: C/set-up-gedit.js.page:38 msgid "" "Here, you want to have Enable automatic indentation turned on. " "This means that when you hit Enter the cursor stays indented as " "far as the last line was. This is extremely useful when writing JavaScript " "code, since it uses indentation to make it clearer which parts do what." msgstr "" "Cochez la case Activer l'indentation automatique. Cela oblige le " "curseur à rester sur le même indent qu'à la ligne précédente lorsque vous " "pressez sur la touche Entrée. Cela est très important en " "JavaScript car ce langage utilise l'indentation pour clarifier les fonctions " "de chaque partie du programme." #. (itstool) path: note/p #: C/set-up-gedit.js.page:39 #, fuzzy #| msgid "" #| "If you want to share code with other people who write GNOME JavaScript " #| "applications, you'll also want to set Tab width to 4 and turn " #| "on Insert spaces instead of tabs." msgid "" "If you want to share code with other people who write GNOME JavaScript " "applications, you'll also want to set Tab width to 4 and turn on " "Insert spaces instead of tabs." msgstr "" "Pour pouvoir partager votre code avec d'autres personnes programmant des " "applications GNOME en JavaScript, réglez la Largeur des tabulations sur 4 et cochez la case Insérer des espaces au lieu de " "tabulations." #. (itstool) path: info/title #: C/signals-callbacks.py.page:9 #, fuzzy #| msgid "Signals and callbacks" msgctxt "text" msgid "Signals and callbacks (Python)" msgstr "Signaux et rappels" #. (itstool) path: info/desc #: C/signals-callbacks.py.page:14 msgid "An explanation of signals and callbacks in GTK+." msgstr "Une explication des signaux et rappels dans GTK+." #. (itstool) path: page/title #: C/signals-callbacks.py.page:27 msgid "Signals and callbacks" msgstr "Signaux et rappels" #. (itstool) path: section/p #: C/signals-callbacks.py.page:34 msgid "" "Like most GUI toolkits, GTK+ uses an event-driven programming model. When " "the user is doing nothing, GTK+ sits in the main loop and waits for input. " "If the user performs some action - say, a mouse click - then the main loop " "\"wakes up\" and delivers an event to GTK+." msgstr "" "Comme la plupart des boîtes à outils d'interfaces utilisateurs, GTK+ utilise " "un modèle de programmation événementiel. Lorsque l'utilisateur ne fait rien, " "GTK+ attend qu'une entrée se fasse dans la boucle principale. Dès que " "l'utilisateur fait quelque chose (disons un clic de souris), alors la boucle " "principale « se réveille » et fournit un événement à GTK+." #. (itstool) path: section/p #: C/signals-callbacks.py.page:36 msgid "" "When widgets receive an event, they frequently emit one or more signals. " "Signals notify your program that \"something interesting happened\" by " "invoking functions you have connected to the signal. Such functions are " "commonly known as callbacks. When your callbacks are invoked, you would " "typically take some action. After a callback finishes, GTK+ will return to " "the main loop and await more user input." msgstr "" "Lorsque les éléments graphiques reçoivent un événement, il émettent la " "plupart du temps un ou plusieurs signaux. Ces signaux indiquent à votre " "programme que « quelque chose d'intéressant vient de se passer » en " "exécutant les fonctions que vous leur avez connecté. Lorsque vos rappels " "sont exécutés, vous agissez normalement en conséquence. Après la fin d'un " "rappel, GTK+ retourne dans la boucle principale et attend d'autres " "événements." #. (itstool) path: section/p #: C/signals-callbacks.py.page:38 msgid "" "A generic example is: handler_id = widget.connect(\"event\", callback, " "data). widget is an instance of a widget we created " "earlier. Next, the event we are interested in. Each widget has " "its own particular events which can occur. For instance, if you have a Gtk." "Button you usually want to connect to the \"clicked\" event: this means that " "when the button is clicked, the signal is issued. Another example is the " "notify::property signal: whenever a property is modified on a GObject, instead of just emitting the " "notify signal, GObject associates as a detail to this signal " "emission the name of the property modified. This allows clients who wish to " "be notified of changes to only one property to filter most events before " "receiving them. Thirdly, the callback argument is the name of the callback " "function, which contains the code which runs when signals of the specified " "type are issued. Finally, the optional data argument includes any data which " "should be passed when the signal is issued." msgstr "" "Voici un exemple générique : handler_id = widget.connect(evenement, " "rappel, donnees). widget est un exemple d'élément " "graphique que nous avons créé un peu plus tôt. Puis vient l'evenement qui nous intéresse. Chaque élément graphique possède ses propres " "événements pouvant arriver. Par exemple, si vous connectez un Gtk.Button à " "l'événement « cliqué » : chaque fois que ce bouton est cliqué, le signal est " "émis. Un autre exemple avec le signal notify::property : chaque " "fois qu'une propriété d'un GObject est " "modifiée, GObject associe comme détail à l'émission de ce signal, le nom de " "la propriété modifiée au lieu de seulement émettre le signal notify. Cela permet aux clients qui ne veulent être informés des " "modifications que d'une seule propriété de filtrer la plupart des événements " "avant de les recevoir. Troisièmement, l'argument de rappel est le nom de la " "fonction de rappel, qui contient le code en cours d'exécution quand les " "signaux de ce type spécifique sont émis. Enfin, l'argument optionnel de " "données inclut toute donnée devant être passée quand le signal est émis." #. (itstool) path: section/p #: C/signals-callbacks.py.page:40 msgid "" "The function returns a number (the handler_id) that identifies " "this particular signal-callback pair. This number is required to disconnect " "from a signal such that the callback function will not be called during any " "future or currently ongoing emissions of the signal it has been connected " "to, as in widget.disconnect(handler_id)." msgstr "" "La fonction renvoie un nombre (le handler_id) qui identifie " "cette paire particulière de signal-rappel. Ce nombre est nécessaire pour se " "déconnecter d'un signal de façon à ce que la fonction de rappel ne soit plus " "appelée, ni par la suite, ni pendant les émissions du signal à laquelle elle " "est actuellement connectée, comme dans widget.disconnect(handler_id)." #. (itstool) path: section/p #: C/signals-callbacks.py.page:47 msgid "" "Signals in GObject documentation" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: section/p #: C/signals-callbacks.py.page:48 #, fuzzy #| msgid "" #| "Basics - Main loop and Signals in Python Gtk+ 3 " #| "Tutorial" msgid "" "Basics - Main loop and Signals in Python GTK+ 3 Tutorial" msgstr "" "Les bases - Boucle principale et signaux dans le tutoriel " "Python Gtk+ 3" #. (itstool) path: info/title #: C/spinbutton.c.page:8 #, fuzzy #| msgid "SpinButton" msgctxt "text" msgid "SpinButton (C)" msgstr "SpinButton" #. (itstool) path: info/desc #: C/spinbutton.c.page:21 msgid "Retrieve an integer or floating point number" msgstr "Renvoie un entier ou un nombre à virgule flottante" #. (itstool) path: page/title #: C/spinbutton.c.page:24 C/spinbutton.js.page:24 C/spinbutton.py.page:23 #: C/spinbutton.vala.page:23 msgid "SpinButton" msgstr "SpinButton" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/spinbutton.c.page:26 C/spinbutton.py.page:24 C/spinbutton.vala.page:24 #, fuzzy #| msgid "" #| "@@image: 'media/spinbutton.png'; md5=993cbb7d9bd271a329727a926195712a" msgctxt "_" msgid "" "external ref='media/spinbutton.png' md5='993cbb7d9bd271a329727a926195712a'" msgstr "@@image: 'media/spinbutton.png'; md5=993cbb7d9bd271a329727a926195712a" #. (itstool) path: page/p #: C/spinbutton.c.page:27 C/spinbutton.py.page:25 C/spinbutton.vala.page:25 msgid "Choose a number, by entering it or by clicking on the -/+ buttons!" msgstr "" "Choisissez un nombre en le saisissant ou en cliquant sur les boutons -/+ !" #. (itstool) path: page/code #: C/spinbutton.c.page:29 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/* This is the callback function. \n" " * It is a handler function which reacts to the signal. \n" " * In this case, it will notify the user the value of their spinbutton \n" " * as a label.\n" " */\n" "static void\n" "spin_clicked (GtkSpinButton *spinbutton,\n" " gpointer user_data)\n" "{\n" " GtkWidget *label = user_data;\n" " gint value = gtk_spin_button_get_value_as_int (spinbutton);\n" "\n" " /* %d - Is used when printing integers.\n" " * Note: Using g_strdup_printf returns a string that must be freed. \n" " * (In which is done below)\n" " */\n" " gchar *str = g_strdup_printf (\"The number you selected is %d.\", value);\n" " gtk_label_set_text (GTK_LABEL (label), str);\n" "\n" " g_free(str);\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " /* Declare variables */\n" " GtkWidget *window;\n" " GtkWidget *label;\n" " GtkWidget *grid;\n" " GtkWidget *spin_button;\n" " GtkAdjustment *adjustment;\n" "\n" "\n" " /* Create a window with a title, a border width, and a default size */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"SpinButton Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 210, 70);\n" " gtk_container_set_border_width (GTK_CONTAINER (window), 5);\n" "\n" " /* Create a label to be shown in the window */\n" " label = gtk_label_new (\"Choose a number\");\n" "\n" " /* Create an adjustment representing an adjustable bounded value */\n" " adjustment = gtk_adjustment_new (0, 0, 100, 1, 0, 0);\n" "\n" "\n" " /* Create a spin button that is to be as wide as possible */\n" " spin_button = gtk_spin_button_new (adjustment, 1, 0);\n" " gtk_widget_set_hexpand (spin_button, TRUE);\n" " \n" " /* Connecting the \"value-changed\" signal for the spinbutton \n" " * to the appropriate callback function. \n" " */\n" " g_signal_connect (spin_button, \n" " \"value-changed\", \n" " G_CALLBACK (spin_clicked), \n" " label);\n" "\n" "\n" " /* Create a grid and arrange everything accordingly */\n" " grid = gtk_grid_new ();\n" " gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n" " gtk_grid_set_column_homogeneous (GTK_GRID (grid), TRUE);\n" " gtk_grid_attach (GTK_GRID (grid), spin_button, 0, 0, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);\n" " \n" "\n" " gtk_container_add (GTK_CONTAINER (window), grid);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/spinbutton.c.page:37 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkSpinButton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/spinbutton.js.page:8 #, fuzzy #| msgid "SpinButton" msgctxt "text" msgid "SpinButton (JavaScript)" msgstr "SpinButton" #. (itstool) path: info/desc #: C/spinbutton.js.page:21 msgid "A number entry field that has + and - buttons" msgstr "Un champ de saisie de nombres avec des boutons + et -" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/spinbutton.js.page:25 #, fuzzy #| msgid "" #| "@@image: 'media/spinbuttonkittens.png'; " #| "md5=577cce8a902140aacbab73fe8a76a010" msgctxt "_" msgid "" "external ref='media/spinbuttonkittens.png' " "md5='577cce8a902140aacbab73fe8a76a010'" msgstr "" "@@image: 'media/spinbuttonkittens.png'; md5=577cce8a902140aacbab73fe8a76a010" #. (itstool) path: page/p #: C/spinbutton.js.page:26 #, fuzzy #| msgid "" #| "A SpinButton is not related to a Spinner. It's a text entry field which only accepts numbers, and which has " #| "plus and minus buttons to let you change the value without having to type " #| "anything in." msgid "" "A SpinButton is not related to a Spinner. " "It's a text entry field which only accepts numbers, and which has plus and " "minus buttons to let you change the value without having to type anything in." msgstr "" "Un BoutonDactivité n'a rien à voir avec un indicateur d'activité. C'est un champ de saisie de texte qui " "n'accepte que des nombres et qui possède des boutons plus et moins pour " "pouvoir en modifier la valeur sans rien saisir." #. (itstool) path: page/p #: C/spinbutton.js.page:27 msgid "" "It's best used when it's obvious that only a number can be entered into it. " "In this example, two SpinButtons are used for the number of kittens and " "number of cans of tuna to give them." msgstr "" "Son utilisation est optimale quand il apparaît évident que seul un nombre " "peut y être saisi. Dans cet exemple, nous utilisons deux BoutonDactivités " "pour définir le nombre de chatons et le nombre de boîtes de thon à leur " "donner." #. (itstool) path: section/code #: C/spinbutton.js.page:44 #, no-wrap msgid "" "\n" "const SpinButtonExample = new Lang.Class({\n" " Name: 'SpinButton Example',\n" "\n" " // Create the application itself\n" " _init: function() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsspinbutton'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/spinbutton.js.page:69 msgid "" "All the code for this sample goes in the SpinButtonExample class. The above " "code creates a Gtk.Application for our widgets and window to " "go in." msgstr "" "Tout le code de cet exemple va dans la classe SpinButtonExample. Le code ci-" "dessus crée une Gtk.Application pour nos éléments graphiques " "et la fenêtre qui les contient." #. (itstool) path: section/code #: C/spinbutton.js.page:70 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 20,\n" " title: \"Kitten Feeder\"});\n" msgstr "" #. (itstool) path: section/title #: C/spinbutton.js.page:85 msgid "Creating the SpinButtons" msgstr "Création des BoutonDactivités" #. (itstool) path: section/code #: C/spinbutton.js.page:86 #, no-wrap msgid "" "\n" " // Create the first spinbutton using a function\n" " this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n" " this._kittens.connect (\"value-changed\", Lang.bind (this, this._newValue));\n" msgstr "" #. (itstool) path: section/p #: C/spinbutton.js.page:92 msgid "" "We can use the new_with_range function to create a new SpinButton quickly. " "Its first parameter is the SpinButton's starting value, its second is the " "maximum value, and its third is how much to increment it when the plus or " "minus buttons are pressed." msgstr "" "Utilisons la fonction new_with_range pour créer rapidement un nouveau " "BoutonDactivité. Son premier paramètre est la valeur de départ du " "BoutonDactivité, le second est la valeur maximale et le troisième est la " "valeur de l'incrément lorsque les boutons plus ou moins sont pressés." #. (itstool) path: section/p #: C/spinbutton.js.page:93 msgid "" "After we create the first SpinButton, we connect its value-changed signal to " "a function which handles what happens when the number inside either " "SpinButton changes." msgstr "" "Après avoir généré le premier BoutonDactivité, nous connectons son signal " "value-changed à une fonction qui gère ce qui se passe quand le nombre à " "l'intérieur d'un des deux BoutonDactivités change." #. (itstool) path: section/code #: C/spinbutton.js.page:95 #, no-wrap msgid "" "\n" " // Create an adjustment to use for the second spinbutton\n" " this._adjustment = new Gtk.Adjustment ({\n" " value: 1,\n" " lower: 0,\n" " upper: 9001,\n" " step_increment: 1,\n" " page_increment: 10 });\n" "\n" " // Create the second spinbutton\n" " this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n" " this._tuna.connect (\"value-changed\", Lang.bind (this, this._newValue));\n" "\n" " // this._tuna.set_digits (1);\n" " // this._tuna.set_wrap (true);\n" msgstr "" #. (itstool) path: section/p #: C/spinbutton.js.page:112 #, fuzzy #| msgid "" #| "If you want more fine-grained control over a SpinButton, or want to " #| "create a bunch of SpinButtons which all use the same parameters, you can " #| "create an object called an Adjustment. Then you can use " #| "that object as a new SpinButton's adjustment property, and it sets all " #| "the values at once. Afterwards, you can change all the SpinButtons which " #| "use that adjustment by changing the Adjustment object's properties." msgid "" "If you want more fine-grained control over a SpinButton, or want to create a " "bunch of SpinButtons which all use the same parameters, you can create an " "object called an Adjustment. Then you can use that object as a " "new SpinButton's adjustment property, and it sets all the values at once. " "Afterwards, you can change all the SpinButtons which use that adjustment by " "changing the Adjustment object's properties." msgstr "" "Si vous souhaitez avoir un contrôle un peu plus fin sur un BoutonDactivité, " "ou si vous voulez créer beaucoup de BoutonDactivités qui utilisent tous les " "mêmes paramètres, vous pouvez créer un objet appelé Adjustment. " "Vous pouvez ensuite l'utiliser comme une propriété d'ajustement pour un " "nouveau BoutonDactivité qui paramètre d'un seul coup toutes les valeurs. " "Vous pouvez aussi modifier tous les BoutonDactivités utilisant ce réglage en " "modifiant les propriétés de l'objet Adjustment." #. (itstool) path: section/p #: C/spinbutton.js.page:113 msgid "" "The commented-out lines here show things you can do to customize your " "SpinButton. You can set the number of digits which go after the decimal " "point, for example, or tell it to wrap the number around if it goes past the " "upper or lower bounds that you set." msgstr "" "Ici, les lignes placées en commentaires vous montrent des moyens de " "personnaliser votre BoutonDactivité. Vous pouvez, par exemple, définir le " "nombre de décimales après la virgule, ou lui indiquer qu'il doit aller à la " "ligne s'il dépasse les limites supérieures ou inférieures que vous avez " "définies." #. (itstool) path: note/p #: C/spinbutton.js.page:114 msgid "" "For the kitties' sake, please don't use set_digits to allow a decimal number " "of kittens." msgstr "" "Dans l'intérêt des chatons, il est préférable de ne pas autoriser set_digits " "à paramétrer un nombre décimal de chatons." #. (itstool) path: section/title #: C/spinbutton.js.page:118 msgid "Creating the rest of the UI" msgstr "Création du reste de l'interface utilisateur" #. (itstool) path: section/code #: C/spinbutton.js.page:120 #, no-wrap msgid "" "\n" " // Create the text labels to go with the spinbuttons\n" " this._startLabel = new Gtk.Label ({ label: \"There are \" });\n" " this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n" " this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n" " this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n" " this._lastLabel = new Gtk.Label ({\n" " label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n" msgstr "" #. (itstool) path: section/p #: C/spinbutton.js.page:129 msgid "" "We create each Label individually, and then " "string them together along with the SpinButtons. The last label needs to " "show the number of cans of tuna per kitten, so it has a variable in the " "middle, which corresponds to an equation that uses the SpinButtons' " "get_value functions to find out what they're set at. JavaScript's Math " "function's floor method is used to round the number of cans of tuna per " "kitten down to the nearest whole number." msgstr "" "Créons chaque étiquette individuellement et " "attachons-les ensemble avec les BoutonDactivités. La dernière étiquette doit " "afficher le nombre de boîtes de thon par chaton, elle comprend donc une " "variable au milieu qui correspond à une équation qui utilise les fonctions " "get_value des BoutonDactivités pour trouver à quelles valeurs ils sont " "définis. On utilise une méthode mathématique de base en JavaScript pour " "arrondir le nombre de boîtes de thon par chaton à l'entier le plus proche." #. (itstool) path: section/code #: C/spinbutton.js.page:131 #, no-wrap msgid "" "\n" " // Create a grid to put the spinbuttons and their labels in\n" " this._spinGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " margin_bottom: 20 });\n" "\n" " // Attach everything to the grid\n" " this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n" " this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n" " this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n" " this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n" " this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n" "\n" " // Create a main grid to hold it and the last label\n" " this._mainGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Attach the smaller grid and the last label to the main grid\n" " this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n" " this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/spinbutton.js.page:155 msgid "" "Here we use Grid widgets to keep everything " "organized. One Grid holds the labels and SpinButtons in order, while the " "next puts that Grid on top and the final Label on the bottom." msgstr "" "Ici, nous utilisons des éléments graphiques grille pour tout ranger. Une grille maintient les étiquettes et les " "BoutonDactivités dans l'ordre pendant que l'autre affiche la première grille " "en haut et la dernière étiquette en bas." #. (itstool) path: section/p #: C/spinbutton.js.page:156 msgid "" "There isn't a wrong way to organize things in Grids, so long as you like how " "it turns out. In this case, the top Grid has a margin on the bottom to keep " "it evenly spaced from the bottom Label, and the bottom Label is inside a " "separate Grid so it will be centered relative to the Labels and SpinButtons " "on the top." msgstr "" "Il n'y a pas de mauvaise façon de ranger les éléments dans les grilles, à " "partir du moment où cela vous convient. Dans notre cas, la grille du haut " "comporte une marge en bas pour la séparer de l'étiquette qui se trouve au-" "dessous et qui est dans une grille indépendante centrée par rapport aux " "étiquettes et BoutonDactivités du haut." #. (itstool) path: section/code #: C/spinbutton.js.page:158 #, no-wrap msgid "" "\n" " // Add the main grid to the window\n" " this._window.add (this._mainGrid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/spinbutton.js.page:166 C/switch.js.page:154 msgid "" "Finally, we add the larger Grid to the window, then tell the window to show " "itself and all the widgets inside of it." msgstr "" "Enfin, ajoutons la grille la plus grande à la fenêtre et indiquons à la " "fenêtre de s'afficher avec tous les éléments graphiques à l'intérieur." #. (itstool) path: section/title #: C/spinbutton.js.page:170 msgid "Function which handles the SpinButtons' numerical values being adjusted" msgstr "" "Fonction prenant en charge les valeurs numériques des BoutonDactivités en " "cours de réglage" #. (itstool) path: section/code #: C/spinbutton.js.page:172 #, no-wrap msgid "" "\n" " _newValue: function () {\n" "\n" " // Update the label which shows how many cans there are per kitten\n" " this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n" " this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/spinbutton.js.page:183 msgid "" "Here we update the perKitten variable based on the SpinButtons' new values, " "and use the set_label property to refresh what _lastLabel shows. Since both " "SpinButtons have their value-changed signal connected to this function, " "every time either of the numbers changes this function will update the Label." msgstr "" "Ici, nous mettons à jour la variable parchaton en fonction des nouvelles " "valeurs des BoutonDactivités et utilisons les propriétés de set_label pour " "actualiser ce qu'affiche _lastLabel. Comme les deux BoutonDactivités ont " "leur signal value-changed connecté à cette fonction, celle-ci met à jour " "l'étiquette à chaque fois qu'un des nombres change." #. (itstool) path: section/code #: C/spinbutton.js.page:185 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new SpinButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/spinbutton.js.page:190 msgid "" "Finally, we create a new instance of the finished SpinButtonExample class, " "and set the application running." msgstr "" "Enfin, nous créons un nouvel exemple de la classe SpinButtonExample et " "démarrons l'application." #. (itstool) path: section/code #: C/spinbutton.js.page:195 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class SpinButtonExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsspinbutton'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 20,\n" " title: \"Kitten Feeder\"});\n" "\n" " // Create the first spinbutton using a function\n" " this._kittens = Gtk.SpinButton.new_with_range (1, 9001, 1);\n" " this._kittens.connect (\"value-changed\", this._newValue.bind(this));\n" "\n" " // Create an adjustment to use for the second spinbutton\n" " this._adjustment = new Gtk.Adjustment ({\n" " value: 1,\n" " lower: 0,\n" " upper: 9001,\n" " step_increment: 1,\n" " page_increment: 10 });\n" "\n" " // Create the second spinbutton\n" " this._tuna = new Gtk.SpinButton ({ adjustment: this._adjustment });\n" " this._tuna.connect (\"value-changed\", this._newValue.bind(this));\n" "\n" " // this._tuna.set_digits (1);\n" " // this._tuna.set_wrap (true);\n" "\n" " // Create the text labels to go with the spinbuttons\n" " this._startLabel = new Gtk.Label ({ label: \"There are \" });\n" " this._kittenLabel = new Gtk.Label ({ label: \" kitten(s), and \"});\n" " this._tunaLabel = new Gtk.Label ({ label: \" can(s) of tuna.\"});\n" " this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()));\n" " this._lastLabel = new Gtk.Label ({\n" " label: \"That's \" + this.perKitten + \" can(s) of tuna per kitten.\" });\n" "\n" " // Create a grid to put the spinbuttons and their labels in\n" " this._spinGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " margin_bottom: 20 });\n" "\n" " // Attach everything to the grid\n" " this._spinGrid.attach (this._startLabel, 0, 0, 1, 1);\n" " this._spinGrid.attach (this._kittens, 1, 0, 1, 1);\n" " this._spinGrid.attach (this._kittenLabel, 2, 0, 1, 1);\n" " this._spinGrid.attach (this._tuna, 3, 0, 1, 1);\n" " this._spinGrid.attach (this._tunaLabel, 4, 0, 1, 1);\n" "\n" " // Create a main grid to hold it and the last label\n" " this._mainGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Attach the smaller grid and the last label to the main grid\n" " this._mainGrid.attach (this._spinGrid, 0, 0, 1, 1);\n" " this._mainGrid.attach (this._lastLabel, 0, 1, 1, 1);\n" "\n" " // Add the main grid to the window\n" " this._window.add (this._mainGrid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _newValue() {\n" " // Update the label which shows how many cans there are per kitten\n" " this.perKitten = Math.floor((this._tuna.get_value() / this._kittens.get_value()))\n" " this._lastLabel.set_label (\"That's \" + this.perKitten + \" can(s) of tuna per kitten.\");\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new SpinButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/spinbutton.js.page:206 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.SpinButton" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/spinbutton.py.page:8 #, fuzzy #| msgid "SpinButton" msgctxt "text" msgid "SpinButton (Python)" msgstr "SpinButton" #. (itstool) path: info/desc #: C/spinbutton.py.page:20 msgid "Retrieve an integer or floating-point number from the user." msgstr "Renvoie un entier ou un nombre à virgule flottante de l'utilisateur." #. (itstool) path: section/code #: C/spinbutton.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"SpinButton Example\", application=app)\n" " self.set_default_size(210, 70)\n" " self.set_border_width(5)\n" "\n" " # an adjustment (initial value, min value, max value,\n" " # step increment - press cursor keys or +/- buttons to see!,\n" " # page increment - not used here,\n" " # page size - not used here)\n" " ad = Gtk.Adjustment(0, 0, 100, 1, 0, 0)\n" "\n" " # a spin button for integers (digits=0)\n" " self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n" " # as wide as possible\n" " self.spin.set_hexpand(True)\n" "\n" " # we connect the signal \"value-changed\" emitted by the spinbutton with the callback\n" " # function spin_selected\n" " self.spin.connect(\"value-changed\", self.spin_selected)\n" "\n" " # a label\n" " self.label = Gtk.Label()\n" " self.label.set_text(\"Choose a number\")\n" "\n" " # a grid to attach the widgets\n" " grid = Gtk.Grid()\n" " grid.attach(self.spin, 0, 0, 1, 1)\n" " grid.attach(self.label, 0, 1, 2, 1)\n" "\n" " self.add(grid)\n" "\n" " # callback function: the signal of the spinbutton is used to change the\n" " # text of the label\n" " def spin_selected(self, event):\n" " self.label.set_text(\n" " \"The number you selected is \" + str(self.spin.get_value_as_int()) + \".\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/spinbutton.py.page:35 msgid "Useful methods for a SpinButton widget" msgstr "Méthodes utiles pour un élément graphique BoutonDactivité" #. (itstool) path: section/p #: C/spinbutton.py.page:36 msgid "" "A Gtk.Adjustment is needed to construct the Gtk.SpinButton. This is the " "representation of a value with a lower and upper bound, together with step " "and page increments, and a page size, and it is constructed as Gtk." "Adjustment(value, lower, upper, step_increment, page_increment, page_size) where the fields are of type float; step_increment is the increment/decrement that is obtained by using the cursor keys " "or the buttons of the spinbutton. Note that page_increment and " "page_size are not used in this case, and they should be set to " "0." msgstr "" "Il faut une valeur Gtk.Adjustment pour construire le Gtk.SpinButton. C'est " "la représentation d'une valeur avec une limite supérieure et une limite " "inférieure, avec des incréments d'étape et de page, avec une taille de page " "et elle se présente sous la forme Gtk.Adjustment(valeur, inferieure, " "superieure, step_increment, page_increment, page_size) où les champs " "sont du type float ; step_increment est " "l'incrément ou le décrément obtenu en agissant sur les touches du curseur ou " "sur les boutons du BoutonDactivité. Notez que les valeurs " "page_increment et page_size ne sont pas utilisés " "dans ce cas et qu'ils doivent être définis à 0." #. (itstool) path: section/p #: C/spinbutton.py.page:37 msgid "" "In line 23 the signal \"value-changed\" is connected to the " "callback function spin_selected() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/spinbutton.py.page:39 msgid "" "If you want the value of the spinbutton to wrap around when they exceed the " "maximum or the minimum, set set_wrap(True). The \"wrapped" "\" signal is emitted when this happens." msgstr "" "Si vous voulez que la valeur du BoutonDactivité aille à la ligne quand elle " "dépasse les limites supérieure ou inférieure, définissez la fonction " "set_wrap(True) sur vrai. Le signal \"wrapped\" est " "alors émis quand cela se produit." #. (itstool) path: item/p #: C/spinbutton.py.page:40 msgid "" "set_digits(digits) sets the precision to be displayed by the " "spinbutton, up to 20 digits." msgstr "" "La méthode set_digits(caracteres) définit la précision " "d'affichage du BoutonDactivité, jusqu'à 20 caractères." #. (itstool) path: item/p #: C/spinbutton.py.page:41 msgid "" "To get the value of the spinbutton as an integer, use " "get_value_as_int()." msgstr "" "Pour avoir la valeur du BoutonDactivité sous forme d'un nombre entier, " "utilisez get_value_as_int()." #. (itstool) path: item/p #: C/spinbutton.py.page:49 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkSpinButton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/spinbutton.vala.page:8 #, fuzzy #| msgid "SpinButton" msgctxt "text" msgid "SpinButton (Vala)" msgstr "SpinButton" #. (itstool) path: info/desc #: C/spinbutton.vala.page:20 msgid "Retrieve an integer or floating point number." msgstr "Renvoie un entier ou un nombre à virgule flottante." #. (itstool) path: page/code #: C/spinbutton.vala.page:27 #, no-wrap msgid "" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\tGtk.Label label;\n" "\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\t\tvar window = new Gtk.ApplicationWindow (this);\n" "\t\twindow.title = \"SpinButton Example\";\n" "\t\twindow.set_default_size (210, 70);\n" "\t\twindow.set_border_width (5);\n" "\n" "\t\tvar spinbutton = new Gtk.SpinButton.with_range (0, 100, 1);\n" "\t\tspinbutton.set_hexpand (true);\n" "\n" "\t\tlabel = new Gtk.Label (\"Choose a number\");\n" "\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tgrid.attach (spinbutton, 0, 0, 1, 1);\n" "\t\tgrid.attach (label, 0, 1, 1, 1);\n" "\n" "\t\tspinbutton.value_changed.connect (this.value_changed_cb);\n" "\n" "\t\twindow.add (grid);\n" "\t\twindow.show_all ();\n" "\t}\n" "\n" "\tvoid value_changed_cb (Gtk.SpinButton spin) {\n" "\t\tlabel.set_text (\"The number you selected is %.0f.\".printf (spin.get_value()));\n" "\t}\n" "}\n" "\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/spinbutton.vala.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "SpinButton" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/spinner.c.page:8 #, fuzzy #| msgid "Spinner" msgctxt "text" msgid "Spinner (C)" msgstr "Indicateur d'activité" #. (itstool) path: info/desc #: C/spinner.c.page:19 C/spinner.js.page:18 C/spinner.py.page:19 #: C/spinner.vala.page:18 msgid "A spinner animation" msgstr "L'animation d'un indicateur d'activité" #. (itstool) path: page/title #: C/spinner.c.page:22 C/spinner.js.page:21 C/spinner.py.page:22 #: C/spinner.vala.page:21 msgid "Spinner" msgstr "Indicateur d'activité" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/spinner.c.page:24 C/spinner.js.page:22 C/spinner.py.page:23 #: C/spinner.vala.page:22 #, fuzzy #| msgid "@@image: 'media/spinner.png'; md5=d04f2d81f1d72c6c2f97e8729947dfed" msgctxt "_" msgid "external ref='media/spinner.png' md5='d04f2d81f1d72c6c2f97e8729947dfed'" msgstr "@@image: 'media/spinner.png'; md5=d04f2d81f1d72c6c2f97e8729947dfed" #. (itstool) path: page/p #: C/spinner.c.page:25 C/spinner.js.page:23 C/spinner.py.page:24 #: C/spinner.vala.page:23 msgid "This Spinner is stopped and started by pressing the spacebar." msgstr "" "Cet indicateur d'activité s'arrête et démarre en appuyant sur la barre " "d'espace." #. (itstool) path: page/code #: C/spinner.c.page:27 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" " \n" "\n" "\n" " /*Global variable used to indicate active state of the\n" "spinner. TRUE = active, FALSE = not-active. This is because \n" "there isn't a current function for C that does this for us*/\n" "gboolean active; \n" " \n" "\n" "\n" "/*This is the callback function. It is a handler function \n" "which reacts to the signal. In this case, it will cause the \n" "spinner to start and stop according to how many times the user \n" "presses the spacebar.*/ \n" "static gboolean\n" "key_pressed_event (GtkWidget *widget,\n" " GdkEvent *event,\n" " gpointer user_data)\n" "{\n" " GtkWidget *spinner = user_data;\n" " guint keyval;\n" " \n" " /*Extracts the keyval from an event. And stores it in the variable \n" " \"keyval\" (we give the function the address). In this case, the \n" " event is GdkEventKey, a key press event*/\n" " gdk_event_get_keyval (event, &keyval); \n" "\n" " /*Grabbing the boolean value from the spinner*/\n" " g_object_get (GTK_SPINNER (spinner), \"active\", &active, NULL);\n" " \n" " if (keyval == GDK_KEY_space) {\n" " if (active) {\n" " gtk_spinner_stop (GTK_SPINNER (spinner));\n" " }\n" " else {\n" " gtk_spinner_start (GTK_SPINNER (spinner));\n" " } \n" " }\n" " \n" "return TRUE;\n" "}\n" " \n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *spinner;\n" " \n" " /*Create a window with a title, border width and a default size*/\n" " window = gtk_application_window_new (app);\n" " \n" " gtk_window_set_title (GTK_WINDOW (window), \"Spinner Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 200, 200);\n" " gtk_container_set_border_width (GTK_CONTAINER(window), 30);\n" " \n" " /*Create a spinner, with extra horizontal and vertical space*/\n" " spinner = gtk_spinner_new ();\n" " gtk_spinner_start (GTK_SPINNER (spinner));\n" " \n" " gtk_container_add (GTK_CONTAINER (window), spinner);\n" " \n" " /*Connecting the key-press-event signal to the callback*/\n" " g_signal_connect (GTK_WINDOW (window), \"key-press-event\", \n" " G_CALLBACK (key_pressed_event), spinner);\n" " \n" " gtk_widget_show_all (window);\n" "}\n" " \n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" " \n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " \n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/spinner.c.page:35 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GObject" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/spinner.c.page:36 C/togglebutton.c.page:38 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkSpinner" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/spinner.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Spinner (JavaScript)" msgstr "JavaScript" #. (itstool) path: page/code #: C/spinner.js.page:25 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gdk = '3.0';\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "const Gdk = imports.gi.Gdk;\n" "\n" "class SpinnerExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsspinner',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Spinner Example\",\n" " default_height: 200,\n" " default_width: 200,\n" " border_width: 30\n" " });\n" "\n" " // Create a spinner which starts spinning automatically\n" " this._spinner = new Gtk.Spinner ({active: true});\n" " this._window.add (this._spinner);\n" "\n" " // Connect a keypress event to the function that makes it start or stop spinning\n" " this._window.connect(\"key-press-event\", this._onKeyPress.bind(this));\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _onKeyPress(widget, event) {\n" "\n" " // Get the value of the key that was pressed\n" " let [, keyval] = event.get_keyval();\n" "\n" " // If it was the spacebar, toggle the spinner to start or stop\n" " if (keyval == Gdk.KEY_space) {\n" " if (this._spinner.active == true)\n" " this._spinner.stop();\n" " else\n" " this._spinner.start();\n" " }\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new SpinnerExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/spinner.js.page:30 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gdk - " "Key Values" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: item/p #: C/spinner.js.page:33 C/togglebutton.js.page:158 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Spinner" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/spinner.py.page:8 #, fuzzy #| msgid "Strings in Python 2" msgctxt "text" msgid "Spinner (Python)" msgstr "Les chaînes dans Python 2" #. (itstool) path: section/code #: C/spinner.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gdk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Spinner Example\", application=app)\n" " self.set_default_size(200, 200)\n" " self.set_border_width(30)\n" "\n" " # a spinner\n" " self.spinner = Gtk.Spinner()\n" " # that by default spins\n" " self.spinner.start()\n" " # add the spinner to the window\n" " self.add(self.spinner)\n" "\n" " # event handler\n" " # a signal from the keyboard (space) controls if the spinner stops/starts\n" " def do_key_press_event(self, event):\n" " # keyname is the symbolic name of the key value given by the event\n" " keyname = Gdk.keyval_name(event.keyval)\n" " # if it is \"space\"\n" " if keyname == \"space\":\n" " # and the spinner is active\n" " if self.spinner.get_property(\"active\"):\n" " # stop the spinner\n" " self.spinner.stop()\n" " # if the spinner is not active\n" " else:\n" " # start it again\n" " self.spinner.start()\n" " # stop the signal emission\n" " return True\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: note/p #: C/spinner.py.page:33 C/statusbar.py.page:34 #, fuzzy #| msgid "" #| "Gdk.keyval_name(event.keyval) converts the key value " #| "event.keyval into a symbolic name. The names and " #| "corresponding key values can be found here, but for instance " #| "GDK_KEY_BackSpace becomes the string \"BackSpace\"." msgid "" "Gdk.keyval_name(event.keyval) converts the key value " "event.keyval into a symbolic name. The names and corresponding " "key values can be found here, but for instance " "GDK_KEY_BackSpace becomes the string \"BackSpace\"." msgstr "" "La méthode Gdk.keyval_name(event.keyval) convertit la valeur " "des touches event.keyval en noms symboliques. Les noms et les " "valeurs correspondantes des touches se trouvent ici. À titre d'exemple, " "GDK_KEY_BackSpace devient la chaîne « Retour arrière »." #. (itstool) path: item/p #: C/spinner.py.page:42 C/togglebutton.py.page:46 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkSpinner" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/spinner.py.page:43 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Key Values" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/spinner.vala.page:8 #, fuzzy #| msgid "Spinner" msgctxt "text" msgid "Spinner (Vala)" msgstr "Indicateur d'activité" #. (itstool) path: page/code #: C/spinner.vala.page:25 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\tGtk.Widget spinner;\n" "\n" "\tinternal MyWindow (MyApplication app) {\n" "\n" "\t\tObject (application: app, title: \"Spinner Example\");\n" "\n" "\t\tthis.set_default_size (200, 200);\n" "\t\tthis.border_width = 30;\n" "\n" "\t\tspinner = new Gtk.Spinner ();\n" "\n" "\t\tthis.add (spinner);\n" "\t\t(spinner as Gtk.Spinner).active = true;\n" "\t\tspinner.show ();\n" "\t}\n" "\n" "\tprotected override bool key_press_event (Gdk.EventKey event) {\n" "\n" "\t\t//print (Gdk.keyval_name(event.keyval) +\"\\n\");\n" "\t\tif (Gdk.keyval_name(event.keyval) == \"space\") {\n" "\n" "\t\t\tif ((spinner as Gtk.Spinner).active) {\n" "\t\t\t\t(spinner as Gtk.Spinner).stop ();\n" "\t\t\t\t//spinner.visible = false;\n" "\t\t\t}\n" "\t\t\telse {\n" "\t\t\t\t(spinner as Gtk.Spinner).start ();\n" "\t\t\t\t//spinner.visible = true;\n" "\t\t\t}\n" "\t\t}\n" "\t\treturn true;\n" "\t}\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" "\n" "\tprotected override void activate () {\n" "\t\tMyWindow window = new MyWindow (this);\n" "\t\twindow.show ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.spinner\");\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/spinner.vala.page:30 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Widget" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/spinner.vala.page:31 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Spinner" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/spinner.vala.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gdk." "keyval_name" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/statusbar.c.page:8 #, fuzzy #| msgid "Statusbar" msgctxt "text" msgid "Statusbar (C)" msgstr "Barre de statut" #. (itstool) path: info/desc #: C/statusbar.c.page:22 C/statusbar.py.page:20 C/statusbar.vala.page:21 msgid "Report messages of minor importance to the user" msgstr "" "Rapporte les messages d'information d'importance mineure pour l'utilisateur" #. (itstool) path: page/title #: C/statusbar.c.page:25 C/statusbar.js.page:21 C/statusbar.py.page:23 #: C/statusbar.vala.page:24 msgid "Statusbar" msgstr "Barre de statut" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/statusbar.c.page:27 #, fuzzy #| msgid "" #| "@@image: 'media/statusbar3.png'; md5=60c71604fb44656237ee66dfb39a8689" msgctxt "_" msgid "" "external ref='media/statusbar3.png' md5='60c71604fb44656237ee66dfb39a8689'" msgstr "@@image: 'media/statusbar3.png'; md5=60c71604fb44656237ee66dfb39a8689" #. (itstool) path: page/p #: C/statusbar.c.page:28 msgid "" "This statusbar is used to demonstrate how messages are stacked in a last-in-" "first-out order. The message at the top of the stack is always the one " "displayed." msgstr "" "Cette barre de statut sert à démontrer comment les messages sont empilés " "dans l'ordre « le dernier au-dessus ». Le message au sommet de la pile est " "toujours celui qui est affiché." #. (itstool) path: page/code #: C/statusbar.c.page:30 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/*Callback function in which pushes an item onto the statusbar*/\n" "static void \n" "push_item (GtkWidget *widget,\n" " gpointer data)\n" "{\n" " GtkWidget *status_bar = data;\n" "\n" " /*Create a context id, which is used to uniquely identify \n" " *the source of a message*/\n" " guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n" " \"Statusbar example\");\n" "\n" " /*Count is used to keep track of the amount of items \n" " the user is pushing/popping*/\n" " static int count = 1;\n" " char hold_output[20];\n" " \n" " /*This is a safer form of the standard sprintf () function. The output is \n" " guaranteed in this case to not exceed 20 characters, and the result is stored\n" " into the 'hold_output' variable*/\n" " g_snprintf (hold_output, 20, \"Item %d\", count++);\n" " gtk_statusbar_push (GTK_STATUSBAR (status_bar), \n" " context_id, \n" " hold_output);\n" "}\n" "\n" "\n" "\n" "/*Callback function that is used to pop an item off the statusbar*/\n" "static void \n" "pop_item (GtkWidget *widget,\n" " gpointer data )\n" "{\n" " GtkWidget *status_bar = data;\n" " guint context_id = gtk_statusbar_get_context_id (GTK_STATUSBAR (status_bar), \n" " \"Statusbar example\");\n" "\n" " gtk_statusbar_pop (GTK_STATUSBAR (status_bar), context_id);\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *grid;\n" " GtkWidget *window;\n" " GtkWidget *status_bar;\n" " GtkWidget *pop_button;\n" " GtkWidget *push_button;\n" "\n" " /*Create a window with a title, border width, and a default size**/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_default_size (GTK_WINDOW (window), 220, 100);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Statusbar Example\");\n" " gtk_container_set_border_width (GTK_CONTAINER(window), 10);\n" " \n" " /*Create the status bar, which is held in the global variable*/\n" " status_bar = gtk_statusbar_new (); \n" " \n" " /*Create the buttons with labels*/\n" " push_button = gtk_button_new_with_label (\"push item\");\n" " pop_button = gtk_button_new_with_label (\"pop last item\");\n" " \n" " /*Create the grid, and attach the buttons/statusbar accordingly*/\n" " grid = gtk_grid_new ();\n" " gtk_grid_attach (GTK_GRID (grid), push_button, 0,1,1,1);\n" " gtk_grid_attach (GTK_GRID (grid), pop_button, 0,2,1,1);\n" " gtk_grid_attach (GTK_GRID (grid), status_bar, 0,3,1,1);\n" " \n" " /*Connecting the clicked signals to the corresponding callback functions*/\n" " g_signal_connect (GTK_BUTTON (push_button), \"clicked\", \n" " G_CALLBACK (push_item), status_bar);\n" " g_signal_connect (GTK_BUTTON (pop_button), \"clicked\", \n" " G_CALLBACK (pop_item), status_bar);\n" " \n" " /*Attach the grid holding the child widgets onto the window, and show all*/\n" " gtk_container_add (GTK_CONTAINER (window), grid);\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/statusbar.c.page:38 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkStatusBar" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/statusbar.c.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "String Utility Functions" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/statusbar.js.page:8 #, fuzzy #| msgid "JavaScript" msgctxt "text" msgid "Statusbar (JavaScript)" msgstr "JavaScript" #. (itstool) path: info/desc #: C/statusbar.js.page:18 msgid "Show notifications in a dedicated statusbar" msgstr "Afficher les notifications dans une barre de statut donnée" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/statusbar.js.page:22 #, fuzzy #| msgid "" #| "@@image: 'media/statusbar2.png'; md5=ff6f7e5b270827ca98b2d5f7087aa766" msgctxt "_" msgid "" "external ref='media/statusbar2.png' md5='ff6f7e5b270827ca98b2d5f7087aa766'" msgstr "@@image: 'media/statusbar2.png'; md5=ff6f7e5b270827ca98b2d5f7087aa766" #. (itstool) path: page/p #: C/statusbar.js.page:23 #, fuzzy #| msgid "" #| "This statusbar keeps track of how many times you've clicked a button. " #| "Applications like gedit use statusbars to display information at a glance, and show " #| "notifications without interrupting the user." msgid "" "This statusbar keeps track of how many times you've clicked a button. " "Applications like gedit use statusbars to display information at a glance, and show " "notifications without interrupting the user." msgstr "" "Cette barre de statut enregistre le nombre de fois que vous avez cliqué sur " "un bouton. Des applications comme gedit utilisent une barre de statut pour rendre les " "informations visibles d'un coup d'œil sans interrompre l'utilisateur." #. (itstool) path: page/p #: C/statusbar.js.page:24 msgid "" "Messages pushed to a statusbar go on top of its stack, and can be popped off " "to show the next-most recent one. You can also clear away every message of a " "specific type all at once. This sample application demonstrates these " "functions." msgstr "" "Les nouveaux messages sont ajoutés au sommet de la pile d'une barre de " "statut et peuvent être affichés pour consulter les plus récents. Vous pouvez " "aussi effacer tous les messages d'un type spécifique d'un seul coup. Cet " "exemple d'application explique ces fonctions." #. (itstool) path: section/code #: C/statusbar.js.page:41 #, no-wrap msgid "" "\n" "const StatusbarExample = new Lang.Class({\n" " Name: 'Statusbar Example',\n" "\n" " // Create the application itself\n" " _init: function() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsstatusbar',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/statusbar.js.page:67 msgid "" "All the code for this sample goes in the StatusbarExample class. The above " "code creates a Gtk.Application for our widgets and window to " "go in." msgstr "" "Tout le code de cet exemple va dans la classe StatusbarExample. Le code ci-" "dessus crée une Gtk.Application pour nos éléments graphiques " "et la fenêtre qui les contient." #. (itstool) path: section/code #: C/statusbar.js.page:68 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 120,\n" " default_width: 300,\n" " title: \"Button Clicker\"});\n" "\n" " // Create a paned interface\n" " this._panes = new Gtk.Paned ({\n" " orientation: Gtk.Orientation.VERTICAL });\n" msgstr "" #. (itstool) path: section/p #: C/statusbar.js.page:84 #, fuzzy #| msgid "" #| "The _buildUI function is where we put all the code to create the " #| "application's user interface. The first step is creating a new Gtk.ApplicationWindow to put all " #| "our widgets into. The next step is to create a vertically-oriented Gtk.Paned interface, to divide the window " #| "up into two sections. This way the statusbar looks like those used in " #| "other applications, and it stays at the bottom of the window, even if the " #| "user resizes it." msgid "" "The _buildUI function is where we put all the code to create the " "application's user interface. The first step is creating a new Gtk.ApplicationWindow to put all our " "widgets into. The next step is to create a vertically-oriented Gtk.Paned " "interface, to divide the window up into two sections. This way the statusbar " "looks like those used in other applications, and it stays at the bottom of " "the window, even if the user resizes it." msgstr "" "Mettons tout le code nécessaire à la création de l'interface utilisateur " "dans la fonction _buildUI. Créons d'abord une Gtk.ApplicationWindow qui va " "contenir tous nos éléments graphiques. Ensuite, créons un panneau " "d'interface Gtk.Paned orienté " "verticalement pour diviser la fenêtre en deux parties. De cette façon, la " "barre de statut va ressembler à celle d'autres application et restera en bas " "de la fenêtre, même si vous la redimensionnez." #. (itstool) path: section/title #: C/statusbar.js.page:88 msgid "Creating the buttons" msgstr "Création des boutons" #. (itstool) path: section/code #: C/statusbar.js.page:89 #, no-wrap msgid "" "\n" " // Create the main button\n" " this._clickMe = new Gtk.Button ({\n" " label: \"Click Me!\" });\n" " this._clickMe.connect (\"clicked\", Lang.bind (this, this._clicked));\n" "\n" " // Create the back button\n" " this._backButton = new Gtk.Button ({\n" " label: \"gtk-go-back\",\n" " use_stock: true });\n" " this._backButton.connect (\"clicked\", Lang.bind (this, this._back));\n" "\n" " // Create the clear button\n" " this._clearButton = new Gtk.Button ({\n" " label: \"gtk-clear\",\n" " use_stock: true });\n" " this._clearButton.connect (\"clicked\", Lang.bind (this, this._clear));\n" msgstr "" #. (itstool) path: section/p #: C/statusbar.js.page:107 #, fuzzy #| msgid "" #| "This code creates the three Gtk.Buttons we'll use to push a new message to the statusbar, pop the last one " #| "off, and clear all existing messages. The \"back\" and \"clear\" buttons " #| "are stock buttons, which are automatically translated into any " #| "language GNOME supports." msgid "" "This code creates the three Gtk.Buttons " "we'll use to push a new message to the statusbar, pop the last one off, and " "clear all existing messages. The \"back\" and \"clear\" buttons are stock " "buttons, which are automatically translated into any language GNOME " "supports." msgstr "" "Ce code génère les trois boutons Gtk.Buttons que nous utiliserons pour ajouter un nouveau message à la barre de " "statut, pour l'afficher et pour effacer tous les messages existants. Les " "boutons « Retour arrière » et « Suppr » sont des boutons de la " "collection qui sont automatiquement traduits dans toutes les langues " "prises en charge par GNOME." #. (itstool) path: section/code #: C/statusbar.js.page:109 #, no-wrap msgid "" "\n" " // Put the buttons in a grid\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" " this._grid.attach (this._backButton, 0, 0, 1, 1);\n" " this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n" " this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n" "\n" " // Put the grid in a large frame that fills most of the window\n" " this._topFrame = new Gtk.Frame ({\n" " border_width: 20,\n" " height_request: 90,\n" " width_request: 300});\n" " this._topFrame.add (this._grid);\n" msgstr "" #. (itstool) path: section/p #: C/statusbar.js.page:125 msgid "" "This code creates the Gtk.Grid that we'll " "use to organize the buttons, and attaches the buttons to it in order. It " "then creates a Gtk.Frame which will take " "up most of the window and has a large amount of padding around the buttons, " "and adds the Grid to the Frame. Note that we still need to put the Frame " "into the Paned interface, and then add it to the ApplicationWindow." msgstr "" "Ce code génère la grille Gtk.Grid que " "nous utiliserons pour organiser les boutons et les mettre dans le bon ordre. " "Il génère ensuite un cadre Gtk.Frame qui " "occupe la majeure partie de la fenêtre et laisse beaucoup de marge autour " "des boutons, puis lui ajoute la grille. Il nous reste encore à placer le " "cadre dans le panneau interface et l'ajouter à l'ApplicationWindow." #. (itstool) path: section/title #: C/statusbar.js.page:129 msgid "Creating the statusbar" msgstr "Création de la barre de statut" #. (itstool) path: section/code #: C/statusbar.js.page:130 #, no-wrap msgid "" "\n" " // Create the statusbar\n" " this._statusbar = new Gtk.Statusbar();\n" "\n" " // Keep track of the number of times the button has been clicked\n" " this.Clicks = 0;\n" " this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n" "\n" " // Give the statusbar an initial message\n" " this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n" "\n" " // Put the statusbar in its own frame at the bottom\n" " this._barFrame = new Gtk.Frame ({\n" " height_request: 30 });\n" " this._barFrame.add (this._statusbar);\n" msgstr "" #. (itstool) path: section/p #: C/statusbar.js.page:146 msgid "" "Here we create the Gtk.Statusbar, and push a message to it to start off " "with. Then we give it its own narrow frame at the bottom of the window." msgstr "" "Ici, nous créons la barre de statuts Gtk.Statusbar et lui ajoutons un " "message pour commencer. Puis, nous lui attribuons son propre cadre étroit au " "bas de la fenêtre." #. (itstool) path: section/p #: C/statusbar.js.page:147 msgid "" "Every message needs to have a context id, which is an integer value you can " "get from the statusbar with the get_context_id() function. Its only " "parameter is the string value you use to describe that particular context " "id. Normally, you'll get a new context id for different kinds of messages, " "so that you can use the remove() function to remove a specific message and " "not just the most recent one on the stack. This is a simple example with " "only one kind of message, though, so we're just using one for everything." msgstr "" "Chaque message doit avoir un identifiant de contexte, une valeur entière qui " "peut vous être donnée par la fonction get_context_id(). Son seul paramètre " "est la valeur de la chaîne que vous utilisez pour décrire cet identifiant " "particulier. Normalement, il y a un identifiant différent selon le type de " "message, de façon à pouvoir utiliser la fonction remove() pour supprimer un " "message spécifique et non pas seulement le dernier au sommet de la pile. " "Voici un exemple simple avec un seul type de message, nous n'en utiliserons " "donc qu'un seul pour tout." #. (itstool) path: section/p #: C/statusbar.js.page:148 msgid "" "We use the push() function to push a new message onto the stack. Its first " "parameter is the context id, and its second is the message." msgstr "" "La fonction push(), ajoute un nouveau message au-dessus de la pile. Son " "premier paramètre est l'identifiant de contexte, et le second, le message." #. (itstool) path: section/code #: C/statusbar.js.page:149 #, no-wrap msgid "" "\n" " // Assemble the frames into the paned interface\n" " this._panes.pack1 (this._topFrame, true, false);\n" " this._panes.pack2 (this._barFrame, false, false);\n" "\n" " // Put the panes into the window\n" " this._window.add (this._panes);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/statusbar.js.page:161 msgid "" "This code finishes up creating the window, by packing the frames into the " "pane, adding it to the window, and telling the window to show all child " "widgets." msgstr "" "Ce code se termine par la création de la fenêtre, le placement du cadre dans " "le panneau et l'ordre donné à la fenêtre d'afficher tous ses éléments " "graphiques enfants." #. (itstool) path: section/title #: C/statusbar.js.page:165 msgid "Functions for interacting with the statusbar" msgstr "Fonctions interagissant avec la barre de statut" #. (itstool) path: section/code #: C/statusbar.js.page:166 #, no-wrap msgid "" "\n" " _clicked: function() {\n" "\n" " // Increment the number of clicks by 1\n" " this.Clicks++;\n" "\n" " // Update the statusbar with the new number of clicks\n" " this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n" "\n" " },\n" "\n" "\n" "\n" " _back: function () {\n" "\n" " // If there have been any clicks, decrement by 1 and remove last statusbar update\n" " if (this.Clicks > 0 ) {\n" " this.Clicks--;\n" " this._statusbar.pop (this.ContextID);\n" " };\n" "\n" " },\n" "\n" "\n" "\n" " _clear: function () {\n" "\n" " // Reset the number of clicks\n" " this.Clicks = 0;\n" "\n" " // Wipe out all the messages pushed to the statusbar\n" " this._statusbar.remove_all (this.ContextID);\n" "\n" " // Reset the statusbar's message\n" " this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/statusbar.js.page:206 msgid "" "Here we have functions which demonstrate pushing a message onto the stack, " "popping the top one off of it, and clearing all messages of a particular " "context id. The pop() function just takes one parameter, which is the " "context id for the type of message you want to pop off the most recent one " "of. The remove_all() function works the same way, except it removes all " "messages of that type from the stack." msgstr "" "Voici des fonctions qui montrent comment ajouter un message à la pile, " "comment afficher celui qui se trouve au sommet et comment effacer tous les " "messages avec un identifiant de contexte particulier. La fonction pop() ne " "prend qu'un argument, l'identifiant de contexte du type de message le plus " "récent à afficher. La fonction remove_all() se comporte de la même façon, " "sauf qu'elle supprime de la pile tous les messages de ce type." #. (itstool) path: section/code #: C/statusbar.js.page:207 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new StatusbarExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/statusbar.js.page:212 msgid "" "Finally, we create a new instance of the finished StatusbarExample class, " "and set the application running." msgstr "" "Enfin, nous créons un nouvel exemple de la classe StatusbarExample terminée " "et nous démarrons l'application." #. (itstool) path: section/code #: C/statusbar.js.page:217 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class StatusbarExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsstatusbar',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 120,\n" " default_width: 300,\n" " title: \"Button Clicker\"});\n" "\n" " // Create a paned interface\n" " this._panes = new Gtk.Paned ({\n" " orientation: Gtk.Orientation.VERTICAL });\n" "\n" " // Create the main button\n" " this._clickMe = new Gtk.Button ({\n" " label: \"Click Me!\" });\n" " this._clickMe.connect (\"clicked\", this._clicked.bind(this));\n" "\n" " // Create the back button\n" " this._backButton = new Gtk.Button ({\n" " label: \"gtk-go-back\",\n" " use_stock: true });\n" " this._backButton.connect (\"clicked\", this._back.bind(this));\n" "\n" " // Create the clear button\n" " this._clearButton = new Gtk.Button ({\n" " label: \"gtk-clear\",\n" " use_stock: true });\n" " this._clearButton.connect (\"clicked\", this._clear.bind(this));\n" "\n" " // Put the buttons in a grid\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" " this._grid.attach (this._backButton, 0, 0, 1, 1);\n" " this._grid.attach_next_to (this._clickMe, this._backButton, Gtk.PositionType.RIGHT, 1, 1);\n" " this._grid.attach_next_to (this._clearButton, this._clickMe, Gtk.PositionType.RIGHT, 1, 1);\n" "\n" " // Put the grid in a large frame that fills most of the window\n" " this._topFrame = new Gtk.Frame ({\n" " border_width: 20,\n" " height_request: 90,\n" " width_request: 300});\n" " this._topFrame.add (this._grid);\n" "\n" " // Create the statusbar\n" " this._statusbar = new Gtk.Statusbar();\n" "\n" " // Keep track of the number of times the button has been clicked\n" " this.Clicks = 0;\n" " this.ContextID = this._statusbar.get_context_id (\"Number of Clicks\");\n" "\n" " // Give the statusbar an initial message\n" " this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n" "\n" " // Put the statusbar in its own frame at the bottom\n" " this._barFrame = new Gtk.Frame ({\n" " height_request: 30 });\n" " this._barFrame.add (this._statusbar);\n" "\n" " // Assemble the frames into the paned interface\n" " this._panes.pack1 (this._topFrame, true, false);\n" " this._panes.pack2 (this._barFrame, false, false);\n" "\n" " // Put the panes into the window\n" " this._window.add (this._panes);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _clicked() {\n" "\n" " // Increment the number of clicks by 1\n" " this.Clicks++;\n" "\n" " // Update the statusbar with the new number of clicks\n" " this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n" " }\n" "\n" " _back() {\n" "\n" " // If there have been any clicks, decrement by 1 and remove last statusbar update\n" " if (this.Clicks > 0 ) {\n" " this.Clicks--;\n" " this._statusbar.pop (this.ContextID);\n" " };\n" " }\n" "\n" " _clear() {\n" "\n" " // Reset the number of clicks\n" " this.Clicks = 0;\n" "\n" " // Wipe out all the messages pushed to the statusbar\n" " this._statusbar.remove_all (this.ContextID);\n" "\n" " // Reset the statusbar's message\n" " this._statusbar.push (this.ContextID, \"Number of clicks: \" + this.Clicks);\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new StatusbarExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/statusbar.js.page:226 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Frame" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/statusbar.js.page:227 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Paned" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/statusbar.js.page:228 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gtk.Statusbar" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: info/title #: C/statusbar.py.page:8 #, fuzzy #| msgid "Statusbar" msgctxt "text" msgid "Statusbar (Python)" msgstr "Barre de statut" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/statusbar.py.page:24 C/statusbar.vala.page:25 #, fuzzy #| msgid "@@image: 'media/statusbar.png'; md5=eb1aca55315d6cda57b12a5f36058ba8" msgctxt "_" msgid "" "external ref='media/statusbar.png' md5='eb1aca55315d6cda57b12a5f36058ba8'" msgstr "@@image: 'media/statusbar.png'; md5=eb1aca55315d6cda57b12a5f36058ba8" #. (itstool) path: page/p #: C/statusbar.py.page:25 msgid "" "This statusbar tells you if you click the button or if you press any key " "(and which key)." msgstr "" "Cette barre de statut vous informe si vous cliquez sur le bouton ou si vous " "appuyez sur n'importe quelle touche (et sur quelle touche)." #. (itstool) path: section/code #: C/statusbar.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gdk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"StatusBar Example\", application=app)\n" " self.set_default_size(200, 100)\n" "\n" " # a label\n" " label = Gtk.Label(label=\"Press any key or \")\n" "\n" " # a button\n" " button = Gtk.Button(label=\"click me.\")\n" " # connected to a callback\n" " button.connect(\"clicked\", self.button_clicked_cb)\n" "\n" " # the statusbar\n" " self.statusbar = Gtk.Statusbar()\n" " # its context_id - not shown in the UI but needed to uniquely identify\n" " # the source of a message\n" " self.context_id = self.statusbar.get_context_id(\"example\")\n" " # we push a message onto the statusbar's stack\n" " self.statusbar.push(\n" " self.context_id, \"Waiting for you to do something...\")\n" "\n" " # a grid to attach the widgets\n" " grid = Gtk.Grid()\n" " grid.set_column_spacing(5)\n" " grid.set_column_homogeneous(True)\n" " grid.set_row_homogeneous(True)\n" " grid.attach(label, 0, 0, 1, 1)\n" " grid.attach_next_to(button, label, Gtk.PositionType.RIGHT, 1, 1)\n" " grid.attach(self.statusbar, 0, 1, 2, 1)\n" "\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" " # callback function for the button clicked\n" " # if the button is clicked the event is signaled to the statusbar\n" " # onto which we push a new status\n" " def button_clicked_cb(self, button):\n" " self.statusbar.push(self.context_id, \"You clicked the button.\")\n" "\n" " # event handler\n" " def do_key_press_event(self, event):\n" " # any signal from the keyboard is signaled to the statusbar\n" " # onto which we push a new status with the symbolic name\n" " # of the key pressed\n" " self.statusbar.push(self.context_id, Gdk.keyval_name(event.keyval) +\n" " \" key was pressed.\")\n" " # stop the signal emission\n" " return True\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/statusbar.py.page:40 msgid "Useful methods for a Statusbar widget" msgstr "Méthodes utiles pour un élément graphique BarreDeStatut" #. (itstool) path: section/p #: C/statusbar.py.page:41 msgid "" "In line 17 the signal \"clicked\" is connected to the callback " "function button_clicked_cb() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/statusbar.py.page:43 msgid "" "pop(context_id) removes the first message in the statusbar " "stack with the given context_id." msgstr "" "La fonction pop(context_id) efface le premier message de la " "pile de la barre de statut avec le context_id donné." #. (itstool) path: item/p #: C/statusbar.py.page:44 msgid "" "remove_all(context_id) removes all the messages in the " "statusbar stack with the given context_id." msgstr "" "La méhode remove_all(context_id) efface tous les messages de la " "pile de la barre de statut ayant l'identifiant context_id donné." #. (itstool) path: item/p #: C/statusbar.py.page:45 msgid "" "remove(context_id, message_id) removes the message with the " "given message_id in the statusbar stack with the given " "context_id. The message_id is returned by " "push(context_id, \"the message\") when pushing the message on " "the statusbar." msgstr "" "La méthode remove(context_id, message_id) efface le message de " "la pile de la barre de statut avec le context_id donné. Le " "message_id est renvoyé par push(context_id, lemessage) quand il pousse le message dans la barre des statut." #. (itstool) path: item/p #: C/statusbar.py.page:53 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkStatusbar" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/statusbar.py.page:54 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Gdk - Key Values" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/statusbar.vala.page:8 #, fuzzy #| msgid "Statusbar (Vala)" msgctxt "text" msgid "Statusbar (Vala)" msgstr "Barre de statut (Vala)" #. (itstool) path: page/p #: C/statusbar.vala.page:26 msgid "This statusbar tells you what's going on." msgstr "Cette barre de statut vous indique ce qui se passe." #. (itstool) path: page/code #: C/statusbar.vala.page:28 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\tGtk.Statusbar statusbar;\n" "\tuint context_id;\n" "\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Statusbar Example\");\n" "\n" "\t\tstatusbar = new Gtk.Statusbar ();\n" "\t\tcontext_id = statusbar.get_context_id (\"example\");\n" "\t\tstatusbar.push (context_id, \"Waiting for you to do something...\");\n" "\n" "\t\t//set the default size of the window\n" "\t\tthis.set_default_size (200, 100);\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tvar label = new Gtk.Label (\"Press any key or \");\n" "\n" "\t\tgrid.attach (label, 0, 0, 1, 1);\n" "\t\tlabel.show ();\n" "\n" "\t\tvar button = new Gtk.Button.with_label (\"click me.\");\n" "\t\tgrid.attach_next_to (button, label, Gtk.PositionType.RIGHT, 1, 1);\n" "\t\tbutton.show ();\n" "\n" "\t\tgrid.attach (statusbar, 0, 1, 2, 1);\n" "\t\tstatusbar.show ();\n" "\n" "\t\tgrid.set_column_spacing (5);\n" "\t\tgrid.set_column_homogeneous (true);\n" "\t\tgrid.set_row_homogeneous (true);\n" "\n" "\t\tthis.add (grid);\n" "\t\tgrid.show ();\n" "\n" "\t\tbutton.clicked.connect(button_clicked_cb);\n" "\t}\n" "\n" "\t/* Since the key-press-event is a signal received by the window, we don't need to connect\n" "\tthe window to a callback function. We can just override key_press_event. */\n" "\tprotected override bool key_press_event (Gdk.EventKey event) {\n" "\t\tstatusbar.push (context_id, Gdk.keyval_name(event.keyval) + \" key was pressed.\");\n" "\t\treturn true;\n" "\t}\n" "\n" "\tvoid button_clicked_cb (Gtk.Button button) {\n" "\t\tstatusbar.push (context_id, \"You clicked the button.\");\n" "\t}\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.status\");\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/statusbar.vala.page:33 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "Statusbar" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/strings.py.page:9 #, fuzzy #| msgid "Strings (Python)" msgctxt "text" msgid "Strings (Python)" msgstr "Chaînes de caractères (Python)" #. (itstool) path: info/desc #: C/strings.py.page:14 msgid "An explanation of how to deal with strings in Python and GTK+." msgstr "" "Une explication sur l'utilisation des chaînes de caractères dans Python et " "GTK+." #. (itstool) path: page/title #: C/strings.py.page:27 msgid "Strings" msgstr "Chaînes de caractères" #. (itstool) path: note/p #: C/strings.py.page:31 msgid "GNOME strongly encourages the use of Python 3 for writing applications!" msgstr "" #. (itstool) path: section/title #: C/strings.py.page:34 msgid "Strings in Python 2" msgstr "Les chaînes de caractères dans Python 2" #. (itstool) path: section/p #: C/strings.py.page:36 msgid "" "Python 2 comes with two different kinds of objects that can be used to " "represent strings, str and unicode. Instances of " "unicode are used to express Unicode strings, whereas instances " "of the str type are byte representations (the encoded string). " "Under the hood, Python represents Unicode strings as either 16- or 32-bit " "integers, depending on how the Python interpreter was compiled." msgstr "" "Python 2 est livré avec deux types différents d'objets qui peuvent être " "utilisés pour représenter des chaînes : str et unicode. Les instances du type unicode sont utilisées pour " "exprimer des chaînes Unicode, alors que les exemples du type str sont des représentations d'octets (la chaîne codée). En interne, " "Python représente les chaînes Unicode par des entiers de 16 ou de 32 bits, " "en fonction du type de compilation de l'interpréteur Python." #. (itstool) path: section/code #: C/strings.py.page:38 #, fuzzy, no-wrap #| msgid "" #| ">> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n" #| ">>> print unicode_string]]>\n" #| "Fußbälle\n" msgid "" "\n" ">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n" ">>> print unicode_string\n" "Fußbälle\n" msgstr "" ">> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n" ">>> print unicode_string]]>\n" "Fußbälle\n" #. (itstool) path: section/p #: C/strings.py.page:44 msgid "" "Unicode strings can be converted to 8-bit strings with unicode." "encode(). Python’s 8-bit strings have a str.decode() " "method that interprets the string using the given encoding (that is, it is " "the inverse of the unicode.encode()):" msgstr "" "Les chaînes Unicode peuvent être converties en 8 bits avec unicode." "encode(). Les chaînes Python en 8 bits contiennent une méthode " "str.decode() qui interprète la chaîne avec le codage qui lui " "est attribué (c'est donc l'inverse de unicode.encode()) :" #. (itstool) path: section/code #: C/strings.py.page:46 #, no-wrap msgid "" "\n" ">>> type(unicode_string)\n" "<type 'unicode'>\n" ">>> unicode_string.encode(\"utf-8\")\n" "'Fu\\xc3\\x9fb\\xc3\\xa4lle'\n" ">>> utf8_string = unicode_string.encode(\"utf-8\")\n" ">>> type(utf8_string)\n" "<type 'str'>\n" ">>> unicode_string == utf8_string.decode(\"utf-8\")\n" "True" msgstr "" #. (itstool) path: section/p #: C/strings.py.page:57 msgid "" "Unfortunately, Python 2.x allows you to mix unicode and " "str if the 8-bit string happened to contain only 7-bit (ASCII) " "bytes, but would get UnicodeDecodeError if it contained non-ASCII " "values." msgstr "" "Malheureusement, Python 2.x vous permet de mélanger les types unicode et str s'il arrivait que la chaîne de 8 bits ne contienne " "que des octets de 7 bits (ASCII), mais retourne l'erreur " "UnicodeDecodeError si elle contient des valeurs qui ne sont pas " "ASCII." #. (itstool) path: section/title #: C/strings.py.page:62 msgid "Strings in Python 3" msgstr "Les chaînes dans Python 3" #. (itstool) path: section/p #: C/strings.py.page:64 #, fuzzy #| msgid "" #| "Since Python 3.0, all strings are stored as Unicode in an instance of the " #| "str type. Encoded strings on the other hand are represented " #| "as binary data in the form of instances of the bytes type. " #| "Conceptionally, str refers to text, whereas bytes refers to " #| "data. Use encode() to go from str to " #| "bytes, and decode() to go from bytes to str." msgid "" "Since Python 3.0, all strings are stored as Unicode in an instance of the " "str type. Encoded strings on the other hand are represented as " "binary data in the form of instances of the bytes type. Conceptually, " "str refers to text, whereas bytes refers to data. Use " "encode() to go from str to bytes, and " "decode() to go from bytes to str." msgstr "" "Depuis la version 3.0 de Python, toutes les chaînes sont stockées en Unicode " "dans une représentation du type str. D'autre part, les chaînes " "codées sont stockées en données binaires sous forme d'octets. " "Conceptuellement, le type str représente du texte, alors que " "les octets représentent des données. Utilisez la méthode encode() pour passer de str à bytes et " "decode() pour passer de bytes à str." #. (itstool) path: section/p #: C/strings.py.page:66 msgid "" "In addition, it is no longer possible to mix Unicode strings with encoded " "strings, because it will result in a TypeError:" msgstr "" "En plus, il n'est plus possible de mélanger des chaînes Unicode avec des " "chaînes codées, car cela retournerait une erreur TypeError :" #. (itstool) path: section/code #: C/strings.py.page:68 #, no-wrap msgid "" "\n" ">>> text = \"Fu\\u00dfb\\u00e4lle\"\n" ">>> data = b\" sind rund\"\n" ">>> text + data\n" "Traceback (most recent call last):\n" " File \"<stdin>\", line 1, in <module>\n" "TypeError: Can't convert 'bytes' object to str implicitly\n" ">>> text + data.decode(\"utf-8\")\n" "'Fußbälle sind rund'\n" ">>> text.encode(\"utf-8\") + data\n" "b'Fu\\xc3\\x9fb\\xc3\\xa4lle sind rund'" msgstr "" #. (itstool) path: section/title #: C/strings.py.page:83 msgid "Unicode in GTK+" msgstr "Unicode dans GTK+" #. (itstool) path: section/p #: C/strings.py.page:85 msgid "" "GTK+ uses UTF-8 encoded strings for all text. This means that if you call a " "method that returns a string you will always obtain an instance of the " "str type. The same applies to methods that expect one or more " "strings as parameter, they must be UTF-8 encoded. However, for convenience " "PyGObject will automatically convert any unicode instance to str if supplied " "as argument:" msgstr "" "GTK+ utilise des chaînes au format UTF-8 pour tout ce qui est texte. Cela " "signifie que, si vous appelez une méthode qui renvoie une chaîne, vous " "obtenez toujours une représentation du type str. Cela " "s'applique également aux méthodes qui considèrent une ou plusieurs chaînes " "comme paramètres, elles doivent aussi être codées en UTF-8. Cependant, pour " "plus de souplesse, PyGObject convertit automatiquement n'importe quelle " "représentation Unicode au format str si vous lui donnez comme argument :" #. (itstool) path: section/code #: C/strings.py.page:87 #, no-wrap msgid "" "\n" ">>> from gi.repository import Gtk\n" ">>> label = Gtk.Label()\n" ">>> unicode_string = u\"Fu\\u00dfb\\u00e4lle\"\n" ">>> label.set_text(unicode_string)\n" ">>> txt = label.get_text()\n" ">>> type(txt)\n" "<type 'str'>" msgstr "" #. (itstool) path: section/p #: C/strings.py.page:96 msgid "Furthermore:" msgstr "Furthermore:" #. (itstool) path: section/code #: C/strings.py.page:98 #, no-wrap msgid "" "\n" ">>> txt == unicode_string" msgstr "" #. (itstool) path: section/p #: C/strings.py.page:101 msgid "" "would return False, with the warning __main__:1: " "UnicodeWarning: Unicode equal comparison failed to convert both arguments to " "Unicode - interpreting them as being unequal (Gtk.Label." "get_text() will always return a str instance; therefore, " "txt and unicode_string are not equal)." msgstr "" "devrait renvoyer False, avec l'avertissement __main__:1: " "UnicodeWarning: Unicode equal comparison failed to convert both arguments to " "Unicode - interpreting them as being unequal (Gtk.Label." "get_text() renvoie toujours une représentation str ; en " "conséquence, txt et unicode_string sont inégaux)." #. (itstool) path: section/p #: C/strings.py.page:103 msgid "" "This is especially important if you want to internationalize your program " "using gettext. You have to make sure that gettext will return UTF-8 encoded 8-bit strings for all languages." msgstr "" "Cela est particulièrement important si vous voulez internationnaliser votre " "programme avec gettext. Vous devez vous assurer que gettext va renvoyer des chaînes codées en UTF-8 pour toutes les langues." #. (itstool) path: section/p #: C/strings.py.page:105 msgid "" "In general it is recommended to not use unicode objects in GTK+ " "applications at all, and only use UTF-8 encoded str objects " "since GTK+ does not fully integrate with unicode objects." msgstr "" "D'une manière générale, nous vous recommandons de ne pas du tout utiliser " "d'objets unicode dans les applications GTK+, mais seulement des " "objets str codés en UTF-8, car GTK+ n'intègre pas tous les " "objets unicode." #. (itstool) path: section/p #: C/strings.py.page:107 #, fuzzy #| msgid "" #| "With Python 3.x things are much more consistent, because PyGObject will " #| "automatically encode/decode to/from UTF-8 if you pass a string to a " #| "method or a method returns a string. Strings, or text, will always be " #| "represented as instances of str only:" msgid "" "String encoding is more consistent in Python 3.x because PyGObject will " "automatically encode/decode to/from UTF-8 if you pass a string to a method " "or a method returns a string. Strings, or text, will always be represented " "as instances of str only." msgstr "" "Avec Python 3.x, les choses sont beaucoup plus logiques, car PyGObject code " "ou décode automatiquement en UTF-8 si vous assignez une chaîne à une méthode " "ou inversement. Les chaînes, ou le texte, sont toujours représentés en " "str seulement :" #. (itstool) path: section/p #: C/strings.py.page:114 #, fuzzy #| msgid "" #| "Basics - Properties in Python Gtk+ 3 Tutorial" msgid "" "How To Deal With Strings - The Python GTK+ 3 Tutorial" msgstr "" "Propriétés de base dans le tutoriel Python Gtk+ 3" #. (itstool) path: info/title #: C/switch.c.page:8 #, fuzzy #| msgid "Switch (C)" msgctxt "text" msgid "Switch (C)" msgstr "Switch (C)" #. (itstool) path: info/desc #: C/switch.c.page:18 C/switch.py.page:19 C/switch.vala.page:22 msgid "A \"light switch\" style toggle" msgstr "Un bouton de basculement du style « interrupteur électrique »" #. (itstool) path: page/title #: C/switch.c.page:21 C/switch.js.page:21 C/switch.py.page:22 #: C/switch.vala.page:25 msgid "Switch" msgstr "Switch (interrupteur)" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/switch.c.page:23 C/switch.py.page:23 C/switch.vala.page:26 #, fuzzy #| msgid "" #| "@@image: 'media/switch_off.png'; md5=211a2962708800697ad5373dcc86ad6d" msgctxt "_" msgid "" "external ref='media/switch_off.png' md5='211a2962708800697ad5373dcc86ad6d'" msgstr "@@image: 'media/switch_off.png'; md5=211a2962708800697ad5373dcc86ad6d" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/switch.c.page:24 C/switch.py.page:24 C/switch.vala.page:27 #, fuzzy #| msgid "@@image: 'media/switch_on.png'; md5=95e8769f758c2d95ace0fa8ecf30b29d" msgctxt "_" msgid "" "external ref='media/switch_on.png' md5='95e8769f758c2d95ace0fa8ecf30b29d'" msgstr "@@image: 'media/switch_on.png'; md5=95e8769f758c2d95ace0fa8ecf30b29d" #. (itstool) path: page/p #: C/switch.c.page:25 msgid "This switch toggles the title of the window." msgstr "Cet interrupteur bascule le titre de la fenêtre." #. (itstool) path: page/code #: C/switch.c.page:27 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/*Signal handler for the \"active\" signal of the Switch*/\n" "static void\n" "activate_cb (GObject *switcher,\n" " GParamSpec *pspec,\n" " gpointer user_data)\n" "{\n" " GtkWindow *window = user_data;\n" "\n" " if (gtk_switch_get_active (GTK_SWITCH (switcher)))\n" " gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n" " else\n" " gtk_window_set_title (GTK_WINDOW (window), \"\");\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *grid;\n" " GtkWidget *window;\n" " GtkWidget *label;\n" " GtkWidget *switcher;\n" "\n" " /*Create a window with a set title and default size.\n" " Also, set a border width for the amount of space to leave\n" " inside the window*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Switch Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 300, 100);\n" " gtk_container_set_border_width (GTK_CONTAINER (window), 10);\n" "\n" " /*Create a label*/\n" " label = gtk_label_new (\"Title\");\n" "\n" " /*Create a switch with a default active state*/\n" " switcher = gtk_switch_new ();\n" " gtk_switch_set_active (GTK_SWITCH (switcher), TRUE);\n" "\n" " /*Create a grid and set the column spacing, attach the label and\n" " switch onto the grid and position them accordingly*/\n" " grid = gtk_grid_new();\n" " gtk_grid_set_column_spacing (GTK_GRID (grid), 10);\n" " gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), switcher, 1, 0, 1, 1);\n" "\n" " /*Connecting the clicked signal to the callback function*/\n" " g_signal_connect (GTK_SWITCH (switcher), \n" " \"notify::active\", \n" " G_CALLBACK (activate_cb), \n" " window);\n" "\n" " gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: info/title #: C/switch.js.page:8 #, fuzzy #| msgid "Switch (JavaScript)" msgctxt "text" msgid "Switch (JavaScript)" msgstr "Switch : interrupteur (JavaScript)" #. (itstool) path: info/desc #: C/switch.js.page:18 msgid "A sliding switch that can be flipped on and off" msgstr "Un interrupteur à glissière qui peut être allumé ou éteint" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/switch.js.page:22 #, fuzzy #| msgid "" #| "@@image: 'media/switchanimals.png'; md5=513ae15dcf68e15eef30b76420b8c714" msgctxt "_" msgid "" "external ref='media/switchanimals.png' md5='513ae15dcf68e15eef30b76420b8c714'" msgstr "" "@@image: 'media/switchanimals.png'; md5=513ae15dcf68e15eef30b76420b8c714" #. (itstool) path: page/p #: C/switch.js.page:23 #, fuzzy #| msgid "" #| "A Switch has two positions, on and off. This example shows how you can " #| "use multiple switches together to control which Image is shown in the window. The pictures used in this example " #| "can be downloaded here." msgid "" "A Switch has two positions, on and off. This example shows how you can use " "multiple switches together to control which Image is shown in the window. The pictures used in this example can be downloaded here." msgstr "" "Un interrupteur possède deux positions : allumé ou éteint. Cet exemple " "montre comment utiliser plusieurs interrupteurs ensemble pour contrôler " "quelle Image s'affiche dans la fenêtre. Les " "images utilisées dans cet exemple peuvent " "être téléchargées ici." #. (itstool) path: note/p #: C/switch.js.page:24 msgid "" "The window will contain a \"broken image\" icon instead of a picture if " "picture files named redfox.png, muteswan.png, " "fruitbat.png, and gentoopenguin.png aren't in the " "same directory. You can change the code and the pictures around as you like, " "but the Creative Commons-licensed photos used in this example were taken " "from the following sources and cropped to 640x425:" msgstr "" "Si les fichiers redfox.png, muteswan.png, " "fruitbat.png et gentoopenguin.png ne se trouvent " "pas dans le même dossier, la fenêtre affichera une icône « image brisée ». " "Vous pouvez modifier le code et les images comme bon vous semble, mais " "sachez que les photos sous licence Creative Commons utilisées dans cet " "exemple proviennent des sources suivantes et ont été rognées à 640x435 :" #. (itstool) path: item/p #: C/switch.js.page:26 msgid "" "Red fox " "photo by Rob Lee, licensed CC-By" msgstr "" "Red fox " "photo (renard rouge) par Rob Lee, licence CC-By" #. (itstool) path: item/p #: C/switch.js.page:27 msgid "" "Gentoo penguin " "photo by Ken Funakoshi, licensed CC-By-SA" msgstr "" "Gentoo penguinphoto (pingouin) par Ken Funakoshi, licence CC-By-SA" #. (itstool) path: item/p #: C/switch.js.page:28 msgid "" "Fruit bat photo by Shek Graham, licensed CC-By" msgstr "" "Fruit bat photo (chauve-souris) par Shek Graham, " "licence CC-" "By" #. (itstool) path: item/p #: C/switch.js.page:29 msgid "" "Mute swan photo by Mindaugas Urbonas, " "licensed CC-By-SA" msgstr "" "Mute swan photo (cygne) par Mindaugas " "Urbonas, licence CC-By-SA" #. (itstool) path: note/p #: C/switch.js.page:31 #, fuzzy #| msgid "" #| "Photo credits and licensing information are shown in the application's " #| "AboutDialog. Always remember to " #| "credit the original artist when using Creative Commons-licensed works!" msgid "" "Photo credits and licensing information are shown in the application's AboutDialog. Always remember to credit the " "original artist when using Creative Commons-licensed works!" msgstr "" "Les crédits photos et les informations de licence sont affichés dans la " "boîte de dialogue AboutDialog de " "l'application. Pensez à toujours porter au crédit de l'artiste original tout " "travail sous licence Creative " "Commons !." #. (itstool) path: section/code #: C/switch.js.page:48 #, no-wrap msgid "" "\n" "const SwitchExample = new Lang.Class({\n" " Name: 'Switch Example',\n" "\n" " // Create the application itself\n" " _init: function() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsswitch',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Callback function for 'startup' signal creates the menu and builds the UI\n" " _onStartup: function() {\n" " this._initMenus();\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/switch.js.page:75 msgid "" "All the code for this sample goes in the SwitchExample class. The above code " "creates a Gtk.Application for our widgets and window to go " "in." msgstr "" "Tout le code de cet exemple est contenu dans la classe SwitchExample. Le " "code ci-dessus crée une Gtk.Application pour nos éléments " "graphiques et la fenêtre qui les contient." #. (itstool) path: section/code #: C/switch.js.page:77 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 20,\n" " title: \"Animal Creator\"});\n" msgstr "" #. (itstool) path: section/title #: C/switch.js.page:92 msgid "Creating the switches" msgstr "Création des interrupteurs" #. (itstool) path: section/code #: C/switch.js.page:93 #, no-wrap msgid "" "\n" " // Create the image widget and set its default picture\n" " this._image = new Gtk.Image ({file: \"redfox.png\"});\n" msgstr "" #. (itstool) path: section/p #: C/switch.js.page:98 msgid "" "We first create the Image that the switches " "will control. Remember that a file named redfox.png needs to be " "in the same directory as this application." msgstr "" "Créons en premier l'Image que les " "interrupteurs vont contrôler. Souvenez-vous qu'un fichier nommé redfox." "png doit être présent dans le même dossier que cette application." #. (itstool) path: section/code #: C/switch.js.page:100 #, no-wrap msgid "" "\n" " // Create a label for the first switch\n" " this._flyLabel = new Gtk.Label ({\n" " label: \"Make it fly\",\n" " margin_right: 30});\n" "\n" " // Create the first switch and set its default position\n" " this._flySwitch = new Gtk.Switch ({active: false});\n" " this._flySwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n" "\n" " // Create a label for the second switch\n" " this._birdLabel = new Gtk.Label ({\n" " label: \"Make it a bird\",\n" " margin_right: 30});\n" "\n" " // Create the second switch\n" " this._birdSwitch = new Gtk.Switch ({active: false});\n" " this._birdSwitch.connect ('notify::active', Lang.bind (this, this._switchFlip));\n" msgstr "" #. (itstool) path: section/p #: C/switch.js.page:120 msgid "" "We use a Label to mark each Switch, and give " "them a bit of a margin on the right so that they aren't crammed right next " "to the Switches. After that we create the Switches, and set them to be " "switched off by default." msgstr "" "Utilisons un Label pour étiqueter chaque " "interrupteur et laissons-leur un peu de marge à droite pour qu'ils ne " "débordent pas les uns sur les autres. Créons ensuite les interrupteurs et " "paramétrons-les pour qu'ils soient en position « éteint » par défaut." #. (itstool) path: section/p #: C/switch.js.page:121 msgid "" "The signal a switch sends out when it's flipped on or off is called notify::" "active. After we create each switch, we connect its notify::active signal to " "a function called _switchFlip. If you have multiple switches that each do " "something different, you might want to connect them to different functions, " "but here they're both used for the same thing: To control what picture's " "displayed by _image." msgstr "" "Le signal qu'un interrupteur envoie quand il est basculé dans un sens ou " "dans l'autre est appelé notify::active. Après avoir créé chaque " "interrupteur, connectons son signal notify::active à une fonction appelée " "_switchFlip. Si vous avez plein d'interrupteurs qui font chacun quelque " "chose de différent, vous pouvez les connecter à différentes fonctions, mais " "ici, ils sont tous les deux utilisés pour la même chose : contrôler quelle " "image est affichée par _image." #. (itstool) path: section/code #: C/switch.js.page:123 #, no-wrap msgid "" "\n" " // Create a grid for the labels and switches beneath the picture\n" " this._UIGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " margin_top: 20});\n" "\n" " // Attach the labels and switches to that grid\n" " this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n" " this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n" " this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n" " this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n" "\n" " // Create a master grid to put both the UI and the picture into\n" " this._mainGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Attach the picture and the UI grid to the master grid\n" " this._mainGrid.attach (this._image, 0, 0, 1, 1);\n" " this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/switch.js.page:145 msgid "" "We create a Grid for the Labels and Switches " "first, so that we can organize them in a 2x2 layout with a margin between it " "and the Image. Then we put that Grid into a larger 2x1 Grid that has the " "Image on top, and the Grid with the Labels and Switches on the bottom." msgstr "" "Créons une grille pour les étiquettes et les " "interrupteurs de façon à les organiser dans un agencement 2x2 avec une marge " "entre eux et l'image. Ensuite, mettons cette grille dans une plus grande au " "format 2x1 qui contient l'image en haut et la grille avec les étiquettes et " "les interrupteurs en bas." #. (itstool) path: section/code #: C/switch.js.page:146 #, no-wrap msgid "" "\n" " // Add the master grid to the window\n" " this._window.add (this._mainGrid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/title #: C/switch.js.page:158 msgid "Function which handles the switches being flipped" msgstr "Fonction prenant en charge la commutation des interrupteurs" #. (itstool) path: section/code #: C/switch.js.page:160 #, no-wrap msgid "" "\n" " _switchFlip: function() {\n" "\n" " // Change the picture depending on which switches are flipped\n" " if (this._flySwitch.get_active()) {\n" "\n" " if (this._birdSwitch.get_active()) this._image.set_from_file (\"muteswan.png\");\n" "\n" " else this._image.set_from_file (\"fruitbat.png\");\n" " }\n" "\n" " else {\n" "\n" " if (this._birdSwitch.get_active()) this._image.set_from_file (\"gentoopenguin.png\");\n" "\n" " else this._image.set_from_file (\"redfox.png\");\n" "\n" " }\n" "\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/switch.js.page:181 msgid "" "Each time a Switch is flipped, this function checks to see which of the two " "Switches are active afterwards, using the Switches' built-in get_active() " "function. It then changes the Image accordingly. You can change the " "filenames around as you like, so long as you have pictures to go with them." msgstr "" "À chaque fois qu'un interrupteur est activé, cette fonction vérifie lequel " "des deux interrupteurs est allumé à l'aide de la fonction intégrée " "get_active(). Elle affiche ensuite l'image correspondante. Vous pouvez " "modifier les noms des fichiers comme bon vous semble, tant que les images " "correspondantes sont dans le même dossier." #. (itstool) path: section/title #: C/switch.js.page:185 msgid "Creating the AboutDialog" msgstr "Création de la boîte de dialogue « À propos »" #. (itstool) path: section/code #: C/switch.js.page:186 #, no-wrap msgid "" "\n" " _initMenus: function() {\n" "\n" " // Build the application's menu so we can have an \"About\" button\n" " let menu = new Gio.Menu();\n" " menu.append(\"About\", 'app.about');\n" " menu.append(\"Quit\",'app.quit');\n" " this.application.set_app_menu(menu);\n" "\n" " // Bind the \"About\" button to the _showAbout() function\n" " let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n" " aboutAction.connect('activate', Lang.bind(this,\n" " function() {\n" " this._showAbout();\n" " }));\n" " this.application.add_action(aboutAction);\n" "\n" " // Bind the \"Quit\" button to the function that closes the window\n" " let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n" " quitAction.connect('activate', Lang.bind(this,\n" " function() {\n" " this._window.destroy();\n" " }));\n" " this.application.add_action(quitAction);\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/switch.js.page:212 msgid "" "The first step is building the GMenu that the " "\"About\" button goes into. This is the menu that appears when you click the " "application's name in the upper-left corner of the screen, next to the " "Activities menu. Our menu only has two options in it: About, and Quit." msgstr "" "La première étape est de créer le GMenu dans " "lequel s'insère le bouton « À propos ». C'est ce menu qui s'affiche quand " "vous cliquez dans le coin gauche supérieur de l'écran, à côté du menu " "Activités. Notre menu ne contient que deux options : À propos et Quitter." #. (itstool) path: section/code #: C/switch.js.page:214 #, no-wrap msgid "" "\n" " _showAbout: function () {\n" "\n" " // String arrays of the names of the people involved in the project\n" " var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.jpg', 'Ken Funakoshi http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.jpg', 'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.jpg'];\n" " var authors = [\"GNOME Documentation Team\"];\n" " var documenters = [\"GNOME Documentation Team\"];\n" "\n" " // Create the About dialog\n" " let aboutDialog = new Gtk.AboutDialog({\n" " title: \"AboutDialog Example\",\n" " program_name: \"Animal Creator\",\n" " copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under Credits.\\n\\nHave you hugged a penguin today?\",\n" " artists: artists,\n" " authors: authors,\n" " documenters: documenters,\n" " website: \"http://developer.gnome.org\",\n" " website_label: \"GNOME Developer Website\" });\n" "\n" " // Attach the About dialog to the window\n" " aboutDialog.modal = true;\n" " aboutDialog.transient_for = this._window;\n" "\n" " // Show the About dialog\n" " aboutDialog.show();\n" "\n" " // Connect the Close button to the destroy signal for the dialog\n" " aboutDialog.connect('response', function() {\n" " aboutDialog.destroy();\n" " });\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/switch.js.page:248 msgid "" "An AboutDialog has a lot of different " "things you can set, to credit everyone who worked on the application and " "leave a note to whomever reads it. In this case, the copyright section " "contains our note and credits the original photographers, while the artists " "section shows you a list of the photographers with links to the original " "photos when you click the Credits button. The web URLs put after their names " "in the array turn their names into clickable links in the Credits section." msgstr "" "Vous pouvez définir beaucoup de choses très différentes dans une boîte de " "dialogue À propos, comme créditer tous " "les contributeurs ayant participé au développement de l'application et " "laisser une note à qui veut la lire. Dans notre cas, la section licence " "contient nos notes et les crédits aux photographes auteurs, alors que la " "section artistes affiche une liste des photographes avec les liens vers les " "images originales quand vous cliquez sur le bouton Crédits. Les liens URL " "qui suivent leurs noms les transforment en liens cliquables vous renvoyant à " "la section Crédits." #. (itstool) path: section/code #: C/switch.js.page:250 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new SwitchExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/switch.js.page:255 msgid "" "Finally, we create a new instance of the finished SwitchExample class, and " "set the application running." msgstr "" "Enfin, créons une nouvelle instance de la classe SwitchExample et démarrons " "l'application." #. (itstool) path: section/code #: C/switch.js.page:260 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class SwitchExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jsswitch'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal creates the menu and builds the UI\n" " _onStartup() {\n" " this._initMenus();\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " border_width: 20,\n" " title: \"Animal Creator\"});\n" "\n" " // Create the image widget and set its default picture\n" " this._image = new Gtk.Image ({file: \"redfox.png\"});\n" "\n" " // Create a label for the first switch\n" " this._flyLabel = new Gtk.Label ({\n" " label: \"Make it fly\",\n" " margin_right: 30});\n" "\n" " // Create the first switch and set its default position\n" " this._flySwitch = new Gtk.Switch ({active: false});\n" " this._flySwitch.connect ('notify::active', this._switchFlip.bind(this));\n" "\n" " // Create a label for the second switch\n" " this._birdLabel = new Gtk.Label ({\n" " label: \"Make it a bird\",\n" " margin_right: 30});\n" "\n" " // Create the second switch\n" " this._birdSwitch = new Gtk.Switch ({active: false});\n" " this._birdSwitch.connect ('notify::active', this._switchFlip.bind(this));\n" "\n" " // Create a grid for the labels and switches beneath the picture\n" " this._UIGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER,\n" " margin_top: 20});\n" "\n" " // Attach the labels and switches to that grid\n" " this._UIGrid.attach (this._flyLabel, 0, 0, 1, 1);\n" " this._UIGrid.attach (this._flySwitch, 1, 0, 1, 1);\n" " this._UIGrid.attach (this._birdLabel, 0, 1, 1, 1);\n" " this._UIGrid.attach (this._birdSwitch, 1, 1, 1, 1);\n" "\n" " // Create a master grid to put both the UI and the picture into\n" " this._mainGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Attach the picture and the UI grid to the master grid\n" " this._mainGrid.attach (this._image, 0, 0, 1, 1);\n" " this._mainGrid.attach (this._UIGrid, 0, 1, 1, 1);\n" "\n" " // Add the master grid to the window\n" " this._window.add (this._mainGrid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _switchFlip() {\n" "\n" " // Change the picture depending on which switches are flipped\n" " if (this._flySwitch.get_active()) {\n" "\n" " if (this._birdSwitch.get_active())\n" " this._image.set_from_file (\"muteswan.png\");\n" " else\n" " this._image.set_from_file (\"fruitbat.png\");\n" " } else {\n" "\n" " if (this._birdSwitch.get_active())\n" " this._image.set_from_file (\"gentoopenguin.png\");\n" " else\n" " this._image.set_from_file (\"redfox.png\");\n" " }\n" " }\n" "\n" " _initMenus() {\n" "\n" " // Build the application's menu so we can have an \"About\" button\n" " let menu = new Gio.Menu();\n" " menu.append(\"About\", 'app.about');\n" " menu.append(\"Quit\",'app.quit');\n" " this.application.set_app_menu(menu);\n" "\n" " // Bind the \"About\" button to the _showAbout() function\n" " let aboutAction = new Gio.SimpleAction ({ name: 'about' });\n" " aboutAction.connect('activate', () => { this._showAbout(); });\n" " this.application.add_action(aboutAction);\n" "\n" " // Bind the \"Quit\" button to the function that closes the window\n" " let quitAction = new Gio.SimpleAction ({ name: 'quit' });\n" " quitAction.connect('activate', () => { this._window.destroy(); });\n" " this.application.add_action(quitAction);\n" " }\n" "\n" " _showAbout() {\n" "\n" " // String arrays of the names of the people involved in the project\n" " var artists = ['Rob Lee http://en.wikipedia.org/wiki/File:Fuzzy_Freddy.png', 'Ken Funakoshi http://en.wikipedia.org/wiki/File:Pygoscelis_papua_-Nagasaki_Penguin_Aquarium_-swimming_underwater-8a.png', 'Shek Graham http://www.flickr.com/photos/shekgraham/127431519/in/photostream/', 'Mindaugas Urbonas http://commons.wikimedia.org/wiki/File:Mute_Swan-Mindaugas_Urbonas.png'];\n" " var authors = [\"GNOME Documentation Team\"];\n" " var documenters = [\"GNOME Documentation Team\"];\n" "\n" " // Create the About dialog\n" " let aboutDialog = new Gtk.AboutDialog({\n" " title: \"AboutDialog Example\",\n" " program_name: \"Animal Creator\",\n" " copyright: \"Copyright \\xa9 2012 GNOME Documentation Team\\n\\nRed fox photo licensed CC-By by Rob Lee\\nGentoo penguin photo licensed CC-By-SA by Ken Funakoshi\\nFruit bat photo licensed CC-By by Shek Graham\\nMute swan photo licensed CC-By-SA by Mindaugas Urbonas\\nLinks to the originals are available under Credits.\\n\\nHave you hugged a penguin today?\",\n" " artists: artists,\n" " authors: authors,\n" " documenters: documenters,\n" " website: \"http://developer.gnome.org\",\n" " website_label: \"GNOME Developer Website\" });\n" "\n" " // Attach the About dialog to the window\n" " aboutDialog.modal = true;\n" " aboutDialog.transient_for = this._window;\n" "\n" " // Show the About dialog\n" " aboutDialog.show();\n" "\n" " // Connect the Close button to the destroy signal for the dialog\n" " aboutDialog.connect('response', function() {\n" " aboutDialog.destroy();\n" " });\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new SwitchExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/switch.js.page:271 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Image" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/switch.js.page:273 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Switch" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/switch.py.page:8 #, fuzzy #| msgid "Switch (Python)" msgctxt "text" msgid "Switch (Python)" msgstr "Switch : interrupteur (Python)" #. (itstool) path: page/p #: C/switch.py.page:26 msgid "This Switch makes the title appears and disappear." msgstr "Cet interrupteur fait apparaître et disparaître le titre." #. (itstool) path: section/code #: C/switch.py.page:33 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Switch Example\", application=app)\n" " self.set_default_size(300, 100)\n" " self.set_border_width(10)\n" "\n" " # a switch\n" " switch = Gtk.Switch()\n" " # turned on by default\n" " switch.set_active(True)\n" " # connect the signal notify::active emitted by the switch\n" " # to the callback function activate_cb\n" " switch.connect(\"notify::active\", self.activate_cb)\n" "\n" " # a label\n" " label = Gtk.Label()\n" " label.set_text(\"Title\")\n" "\n" " # a grid to allocate the widgets\n" " grid = Gtk.Grid()\n" " grid.set_column_spacing(10)\n" " grid.attach(label, 0, 0, 1, 1)\n" " grid.attach(switch, 1, 0, 1, 1)\n" "\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" " # Callback function. Since the signal is notify::active\n" " # we need the argument 'active'\n" " def activate_cb(self, button, active):\n" " # if the button (i.e. the switch) is active, set the title\n" " # of the window to \"Switch Example\"\n" " if button.get_active():\n" " self.set_title(\"Switch Example\")\n" " # else, set it to \"\" (empty string)\n" " else:\n" " self.set_title(\"\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/switch.py.page:37 msgid "Useful methods for a Switch widget" msgstr "Méthodes utiles pour un élément graphique Switch" #. (itstool) path: section/p #: C/switch.py.page:38 msgid "" "In line 17 the signal \"notify::active\" is connected to the " "callback function activate_cb() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/switch.py.page:45 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkSwitch" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/switch.vala.page:8 #, fuzzy #| msgid "Switch (Vala)" msgctxt "text" msgid "Switch (Vala)" msgstr "Switch (interrupteur) (Vala)" #. (itstool) path: page/p #: C/switch.vala.page:29 msgid "This Switch toggles the title." msgstr "Cet interrupteur bascule le titre." #. (itstool) path: page/code #: C/switch.vala.page:31 #, no-wrap msgid "" "class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Switch Example\");\n" "\n" "\t\tthis.set_default_size (300, 100);\n" "\t\tthis.border_width = 10;\n" "\n" "\t\tvar label = new Gtk.Label (\"Title\");\n" "\t\tvar switcher = new Gtk.Switch ();\n" "\n" "\t\tswitcher.set_active (true);\n" "\n" "\t\tswitcher.notify[\"active\"].connect (switcher_cb);\n" "\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tgrid.set_column_spacing (10);\n" "\t\tgrid.attach (label, 0, 0, 1, 1);\n" "\t\tgrid.attach (switcher, 1, 0, 1, 1);\n" "\n" "\t\tthis.add (grid);\n" "\t}\n" "\n" "\tvoid switcher_cb (Object switcher, ParamSpec pspec) {\n" "\t\tif ((switcher as Gtk.Switch).get_active())\n" "\t\t\tthis.set_title (\"Switch Example\");\n" "\t\telse\n" "\t\t\tthis.set_title (\"\");\n" "\t}\n" "}\n" "\n" "class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\n" "\t\tvar window = new MyWindow (this);\n" "\t\twindow.show_all (); //show all the things\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.checkbutton\");\n" "\t}\n" "}\n" "\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/switch.vala.page:36 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Switch" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/textview.c.page:8 #, fuzzy #| msgid "TextView (C)" msgctxt "text" msgid "TextView (C)" msgstr "TextView (C)" #. (itstool) path: info/desc #: C/textview.c.page:18 C/textview.vala.page:18 msgid "Widget which displays a GtkTextBuffer" msgstr "L'élément graphique qui affiche un GtkTextBuffer" #. (itstool) path: page/title #: C/textview.c.page:21 C/textview.vala.page:21 msgid "TextView widget" msgstr "Élément graphique TextView" #. (itstool) path: note/p #: C/textview.c.page:22 C/textview.py.page:33 C/textview.vala.page:22 msgid "If we press \"enter\", we have a new line." msgstr "En appuyant sur « Entrée », nous créons une nouvelle ligne." #. (itstool) path: note/p #: C/textview.c.page:23 C/textview.vala.page:23 msgid "" "If we press \"enter\" more times then there are lines in the default sized " "window, then a vertical scrollbar appears." msgstr "" "En appuyant encore de nombreuses fois sur « Entrée », d'autres lignes sont " "créées dans la fenêtre de taille par défaut, puis une barre de défilement " "verticale apparaît." #. (itstool) path: note/p #: C/textview.c.page:24 C/textview.vala.page:24 msgid "" "If we write a long sentence, the text will wrap breaking lines between words." msgstr "Si nous écrivons une longue phrase, la césure se fait entre deux mots." #. (itstool) path: note/p #: C/textview.c.page:25 msgid "" "If we have a loooooooooooooooooooooooooooooooooooong (that was long) word, " "a* horizontal scrollbar will appear." msgstr "" "Si nous avons un loooooooooooooooooooooooooooooooooooong mot, une barre de " "défilement horizontale apparaît." #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/textview.c.page:27 C/textview.py.page:39 C/textview.vala.page:27 #, fuzzy #| msgid "@@image: 'media/textview.png'; md5=049e859ed1af2d7c93d8cb5cfd9f7792" msgctxt "_" msgid "" "external ref='media/textview.png' md5='049e859ed1af2d7c93d8cb5cfd9f7792'" msgstr "@@image: 'media/textview.png'; md5=049e859ed1af2d7c93d8cb5cfd9f7792" #. (itstool) path: page/p #: C/textview.c.page:28 C/textview.vala.page:28 msgid "This is an example of Gtk.TextView" msgstr "Ceci est un exemple de Gtk.TextView" #. (itstool) path: page/code #: C/textview.c.page:30 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " /* Declare variables */\n" " GtkWidget *window;\n" " GtkWidget *text_view;\n" " GtkWidget *scrolled_window;\n" "\n" " GtkTextBuffer *buffer;\n" "\n" "\n" " /* Create a window with a title, and a default size */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"TextView Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 220, 200);\n" "\n" "\n" " /* The text buffer represents the text being edited */\n" " buffer = gtk_text_buffer_new (NULL);\n" " \n" "\n" " /* Text view is a widget in which can display the text buffer. \n" " * The line wrapping is set to break lines in between words.\n" " */\n" " text_view = gtk_text_view_new_with_buffer (buffer);\n" " gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (text_view), GTK_WRAP_WORD); \n" "\n" "\n" " /* Create the scrolled window. Usually NULL is passed for both parameters so \n" " * that it creates the horizontal/vertical adjustments automatically. Setting \n" " * the scrollbar policy to automatic allows the scrollbars to only show up \n" " * when needed. \n" " */\n" " scrolled_window = gtk_scrolled_window_new (NULL, NULL);\n" " gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), \n" " GTK_POLICY_AUTOMATIC, \n" " GTK_POLICY_AUTOMATIC); \n" " /* The function directly below is used to add children to the scrolled window \n" " * with scrolling capabilities (e.g text_view), otherwise, \n" " * gtk_scrolled_window_add_with_viewport() would have been used\n" " */\n" " gtk_container_add (GTK_CONTAINER (scrolled_window), \n" " text_view);\n" " gtk_container_set_border_width (GTK_CONTAINER (scrolled_window), 5);\n" " \n" " \n" " gtk_container_add (GTK_CONTAINER (window), scrolled_window);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/textview.c.page:41 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkContainer" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/textview.js.page:8 #, fuzzy #| msgid "TextView (JavaScript)" msgctxt "text" msgid "TextView (JavaScript)" msgstr "TextView (JavaScript)" #. (itstool) path: info/desc #: C/textview.js.page:22 msgid "A multiline text editor" msgstr "Un éditeur de texte multiligne" #. (itstool) path: page/title #: C/textview.js.page:25 C/textview.py.page:30 msgid "TextView" msgstr "TextView" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/textview.js.page:26 #, fuzzy #| msgid "" #| "@@image: 'media/textviewpenguinchat.png'; " #| "md5=0dd6f6aa44aaeab7901bd90162ed4c9a" msgctxt "_" msgid "" "external ref='media/textviewpenguinchat.png' " "md5='0dd6f6aa44aaeab7901bd90162ed4c9a'" msgstr "" "@@image: 'media/textviewpenguinchat.png'; " "md5=0dd6f6aa44aaeab7901bd90162ed4c9a" #. (itstool) path: page/p #: C/textview.js.page:27 msgid "" "A TextView is really (or at least usually) a nested set of three objects." msgstr "" "Un élément graphique TextView est en réalité (le plus souvent) une " "combinaison de trois objets." #. (itstool) path: item/p #: C/textview.js.page:29 msgid "" "At the bottom there is a TextBuffer. This holds the text " "itself." msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: item/p #: C/textview.js.page:30 msgid "" "In the middle there is the TextView, which is a widget that lets " "you see and edit the text in the buffer. It automatically resizes itself " "depending on how much text there is." msgstr "" "Au milieu, nous trouvons l'élément graphique TextView, qui nous " "permet d'afficher et de modifier le texte du tampon. Il se redimensionne " "automatiquement en fonction de la quantité de texte qu'il contient." #. (itstool) path: item/p #: C/textview.js.page:31 #, fuzzy #| msgid "" #| "Since the automatic resizing can make a TextView unwieldy, you normally " #| "place it inside of a ScrolledWindow. Despite the name, it's not an actual window in terms of having a " #| "title bar and an X button; it's a widget you put on the application " #| "you're making, which acts like a window onto a more manageable chunk of a " #| "TextView. If the text in the buffer is too big to fit, scrollbars will " #| "appear." msgid "" "Since the automatic resizing can make a TextView unwieldy, you normally " "place it inside of a ScrolledWindow. Despite the name, it's not an actual " "window in terms of having a title bar and an X button; it's a widget you put " "on the application you're making, which acts like a window onto a more " "manageable chunk of a TextView. If the text in the buffer is too big to fit, " "scrollbars will appear." msgstr "" "Étant donné que le redimensionnement automatique peut rendre un TextView peu " "maniable, placez-le dans une fenêtre à défilement ScrolledWindow. Malgré son nom, ce n'est pas à " "proprement parler une fenêtre, car elle ne comporte ni barre de titre, ni " "bouton X ; c'est un élément graphique à placer dans l'application que vous " "construisez et qui permet de mieux gérer un TextView. Si le texte du tampon " "est trop grand, des ascenseurs apparaissent." #. (itstool) path: page/p #: C/textview.js.page:33 msgid "" "If you want to change what text is displayed in the TextView, you act on the " "TextBuffer, since it's what actually holds the text. The same goes for if " "you want to see what text someone typed in. This sample application lets you " "talk to a (make-believe) penguin, and checks the TextBuffer to see if you " "typed the word \"fish\" anywhere in it." msgstr "" "Si vous modifiez le texte affiché dans le TextView, vous agissez sur le " "TextBuffer puisque c'est lui qui contient effectivement le texte. Procédez " "de la même manière si vous souhaitez connaître le texte saisi par quelqu'un. " "Cet exemple d'application vous permet de parler à un pingouin (imaginaire) " "et parcourt le TextBuffer pour voir si vous avez saisi le mot « poisson » " "quelque part." #. (itstool) path: note/p #: C/textview.js.page:34 msgid "" "Real-life penguin populations are declining fast, because climate change is " "melting the ice that they live on and killing the fish that they eat. If " "you'd like to play a (somewhat silly) GNOME game based on this premise, take " "a look at Pingus." msgstr "" "Dans la vraie vie, les populations de pingouins déclinent rapidement, à " "cause du changement climatique qui fait fondre les glaces sur lesquels ils " "vivent et raréfie les stocks de poissons dont ils se nourrissent. Allez " "jeter un coup d'œil à Pingus. " "si vous voulez jouer à un jeu GNOME (un peu stupide) basé sur ce constat." #. (itstool) path: section/code #: C/textview.js.page:50 #, no-wrap msgid "" "\n" "const TextViewExample = new Lang.Class ({\n" " Name: 'TextView Example',\n" "\n" " // Create the application itself\n" " _init: function () {\n" " this.application = new Gtk.Application ({\n" " application_id: 'org.example.jstextview' });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate: function () {\n" " this._window.present ();\n" " },\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup: function () {\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:74 msgid "" "All the code for this sample goes in the TextViewExample class. The above " "code creates a Gtk.Application for our widgets and window to " "go in." msgstr "" "Tout le code de cet exemple tient dans la classe TextViewExample. Le code ci-" "dessus crée une Gtk.Application pour nos éléments graphiques " "et la fenêtre qui les contient." #. (itstool) path: section/code #: C/textview.js.page:75 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function () {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Talk to a Penguin\",\n" " default_height: 400,\n" " default_width: 440,\n" " border_width: 20 });\n" msgstr "" #. (itstool) path: section/title #: C/textview.js.page:92 msgid "Creating the TextView" msgstr "Création de l'élément graphique TextView" #. (itstool) path: section/code #: C/textview.js.page:93 #, no-wrap msgid "" "\n" " // Create a label for the penguin to talk to you\n" " this._penguin = new Gtk.Label ({\n" " height_request: 180,\n" " width_request: 400,\n" " label: \"Squaaaak?\",\n" " wrap: true });\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:102 msgid "" "Our first step in this example is to create the Label that the penguin will use to talk to you. We set the text in " "it to wrap by setting its wrap property to true, but we'll use a different " "method on the TextView itself that allows for more fine-grained control." msgstr "" "Pour commencer, créons le Label (étiquette) " "que le pingouin va utiliser pour dialoguer avec vous. Définissons la " "propriété de césure du texte de l'étiquette sur wrap (césure) en lui " "attribuant la valeur « true », mais nous utiliserons une méthode différente " "sur l'élément graphique TextView lui-même pour avoir un contrôle plus fin." #. (itstool) path: section/code #: C/textview.js.page:104 #, no-wrap msgid "" "\n" " // Create a textview for you to talk to the penguin\n" " this.buffer = new Gtk.TextBuffer();\n" " this._textView = new Gtk.TextView ({\n" " buffer: this.buffer,\n" " editable: true,\n" " wrap_mode: Gtk.WrapMode.WORD });\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:113 msgid "" "Our first step is to create a TextBuffer to put the words into. After that " "we create the TextView, and tell it to use the TextBuffer we created as its " "buffer. We also set it to be editable, since we want to be able to type new " "things in." msgstr "" "La première étape consiste à créer un élément graphique TextBuffer pour y " "placer les mots. Ensuite, nous créons l'élément TextView et nous lui " "indiquons d'utiliser le TextBuffer comme tampon. Nous le paramétrons aussi " "pour qu'il soit modifiable (editable), car nous voulons pouvoir y saisir " "d'autres choses." #. (itstool) path: section/p #: C/textview.js.page:114 #, fuzzy #| msgid "" #| "The wrap_mode property lets you select from four different WrapModes. Gtk.WrapMode.CHAR, for instance, starts wrapping " #| "around in the middle of a word if you keep typing when it gets to the " #| "edge. Most people are probably used to Gtk.WrapMode.WORD, which will " #| "automatically put the word you're typing on the next line if it gets to " #| "be too long." msgid "" "The wrap_mode property lets you select from four different WrapModes. Gtk.WrapMode.CHAR, for instance, starts wrapping around " "in the middle of a word if you keep typing when it gets to the edge. Most " "people are probably used to Gtk.WrapMode.WORD, which will automatically put " "the word you're typing on the next line if it gets to be too long." msgstr "" "La propriété wrap_mode permet de choisir entre quatre modes de césure WrapModes différents. Le mode Gtk.WrapMode.CHAR, par exemple, fait " "la césure au milieu d'un mot si vous continuer la saisie après avoir atteint " "le bord. La plupart d'entre vous sont certainement plus habitués au mode Gtk." "WrapMode.WORD, qui met automatiquement le mot entier à la ligne s'il est " "trop long." #. (itstool) path: section/code #: C/textview.js.page:116 #, no-wrap msgid "" "\n" " // Create a \"scrolled window\" to put your textview in so it will scroll\n" " this._scrolled = new Gtk.ScrolledWindow ({\n" " hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n" " vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n" " shadow_type: Gtk.ShadowType.ETCHED_IN,\n" " height_request: 180,\n" " width_request: 400, });\n" "\n" " // Put the textview into the scrolled window\n" " this._scrolled.add_with_viewport (this._textView);\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:128 #, fuzzy #| msgid "" #| "Here we create a ScrolledWindow, " #| "and set it to automatically scroll if it gets to be too big horizontally " #| "or vertically. We also give it a nice-looking ETCHED_IN border. After " #| "that, we put our TextView inside, and tell the ScrolledWindow to give us " #| "a viewport onto it." msgid "" "Here we create a ScrolledWindow, and set it to automatically scroll if it " "gets to be too big horizontally or vertically. We also give it a nice-" "looking ETCHED_IN border. After that, we put our TextView inside, and tell " "the ScrolledWindow to give us a viewport onto it." msgstr "" "Ici, nous créons une ScrolledWindow " "et nous la paramétrons pour défiler automatiquement si son contenu déborde " "horizontalement ou verticalement. Nous lui ajoutons aussi une belle bordure " "ETCHED_IN. Ensuite, nous y mettons notre TextView et nous indiquons à la " "fenêtre ScrolledWindow de nous l'afficher." #. (itstool) path: section/code #: C/textview.js.page:134 #, no-wrap msgid "" "\n" " // Create a grid to organize them in\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Put the label and textview in the grid one on top of the other\n" " this._grid.attach (this._penguin, 0, 0, 1, 1);\n" " this._grid.attach (this._scrolled, 0, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:144 msgid "" "The first Grid we create only has the Label " "and the ScrolledWindow inside it." msgstr "" "Le premier Grid (grille) que nous avons créé " "ne contient que l'étiquette et la ScrolledWindow." #. (itstool) path: section/code #: C/textview.js.page:146 #, no-wrap msgid "" "\n" " // Create a button to send your message to the penguin\n" " this._send = new Gtk.Button ({\n" " halign: Gtk.Align.END,\n" " margin_top: 20,\n" " label: \"Send\" });\n" " this._send.connect ('clicked', Lang.bind (this, this._chat));\n" "\n" " // Create a grid that will have the other grid on top and the button on bottom\n" " this._mainGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Add the other grid and the button to the main grid\n" " this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n" " this._mainGrid.attach (this._send, 0, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:163 msgid "" "We create a Button to send your message to " "the penguin, and a new Grid that has the other one on top and the Button on " "the bottom. The Button has a margin on top, so that it isn't squished up " "against the ScrolledWindow." msgstr "" "Nous créons un Button (bouton) pour envoyer " "votre message au pingouin et un nouveau Grid (grille) qui contient l'autre " "grille en haut et le bouton en bas. Le bouton comporte une marge (margin) " "dans sa partie supérieure, de telle sorte qu'il n'est pas collé contre la " "ScrolledWindow." #. (itstool) path: section/code #: C/textview.js.page:165 #, no-wrap msgid "" "\n" " // Attach the main grid to the window\n" " this._window.add (this._mainGrid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:174 msgid "" "Finally, we attach the main Grid to the window, then we tell the window and " "everything inside it to become visible when the application is run." msgstr "" "Enfin, nous relions la grille principale à la fenêtre, puis indiquons à la " "fenêtre de s'afficher avec son contenu quand l'application est lancée." #. (itstool) path: section/title #: C/textview.js.page:179 msgid "Function which handles the penguin's response" msgstr "Fonction prenant en charge la réponse du pingouin" #. (itstool) path: section/code #: C/textview.js.page:180 #, no-wrap msgid "" "\n" " _chat: function () {\n" "\n" " // Create a random number to determine what the penguin says\n" " this.number = Math.floor ((Math.random() * 3) + 1);\n" "\n" " // Did you actually say anything?\n" " if (this.buffer.text) {\n" "\n" " // Did you mention fish?\n" " if (this.buffer.text.match (/fish/gi)) {\n" "\n" " // Have the penguin squaak about fish\n" " if (this.number == 1)\n" " this._penguin.set_label (\"FISH!\");\n" "\n" " else if (this.number == 2)\n" " this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n" "\n" " else\n" " this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n" "\n" " }\n" "\n" " // I guess you didn't mention fish\n" " else {\n" "\n" " // Have the penguin talk about penguinny stuff\n" " if (this.number == 1)\n" " this._penguin.set_label (\"SQUAAK!\");\n" "\n" " else if (this.number == 2)\n" " this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves flippers*\");\n" "\n" " else\n" " this._penguin.set_label (\"Ork ork ork ork ork?\");\n" "\n" " }\n" "\n" " }\n" "\n" " // Clear the buffer\n" " this.buffer.text = \"\";\n" "\n" " // Give focus back to the textview so you don't have to click it again\n" " this._textView.has_focus = true;\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:231 msgid "" "Here we use some basic JavaScript functions to have the penguins say " "something random. Penguins like fish, though, so if you mention fish we want " "the penguin to respond to that. To do that, we use the JavaScript String " "object's match method on this.buffer.text, which returns the " "contents of our TextBuffer." msgstr "" "Nous utilisons ici quelques fonctions JavaScript de base pour que le " "pingouin dise quelque chose au hasard. Les pingouins apprécient le poisson " "et nous allons donc le faire répondre quand on prononce le mot " "« fish » (poisson). Pour cela, nous appliquons la méthode JavaScript de " "correspondance d'objets chaîne de caractères sur le texte this.buffer." "text, qui renvoie le contenu de notre TextBuffer." #. (itstool) path: section/p #: C/textview.js.page:232 msgid "" "Since we want to clear out the TextBuffer after each time you click Send, we " "set this.buffer.text to contain an empty string afterwards. " "Then we return focus to our TextView, so that you can keep typing without " "having to click on it beforehand." msgstr "" "Comme nous voulons effacer le TextBuffer après chaque clic sur " "« Sent » (Envoyer), nous paramétrons le this.buffer.text pour " "qu'il contienne une chaîne vide après cela. Nous renvoyons ensuite le focus " "sur notre élément TextView, pour pouvoir continuer à y saisir du texte sans " "avoir besoin de cliquer dessus au préalable." #. (itstool) path: section/code #: C/textview.js.page:234 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new TextViewExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/textview.js.page:239 msgid "" "Finally, we create a new instance of the finished TextViewExample class, and " "set the application running." msgstr "" "Enfin, nous créons une nouvelle instance de la classe TextViewExample que " "nous venons de terminer et démarrons l'application." #. (itstool) path: section/code #: C/textview.js.page:244 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class TextViewExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jstextview'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow ({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Talk to a Penguin\",\n" " default_height: 400,\n" " default_width: 440,\n" " border_width: 20 });\n" "\n" " // Create a label for the penguin to talk to you\n" " this._penguin = new Gtk.Label ({\n" " height_request: 180,\n" " width_request: 400,\n" " label: \"Squaaaak?\",\n" " wrap: true });\n" "\n" " // Create a textview for you to talk to the penguin\n" " this.buffer = new Gtk.TextBuffer();\n" " this._textView = new Gtk.TextView ({\n" " buffer: this.buffer,\n" " editable: true,\n" " wrap_mode: Gtk.WrapMode.WORD });\n" "\n" " // Create a \"scrolled window\" to put your textview in so it will scroll\n" " this._scrolled = new Gtk.ScrolledWindow ({\n" " hscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n" " vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,\n" " shadow_type: Gtk.ShadowType.ETCHED_IN,\n" " height_request: 180,\n" " width_request: 400, });\n" "\n" " // Put the textview into the scrolled window\n" " this._scrolled.add_with_viewport (this._textView);\n" "\n" " // Create a grid to organize them in\n" " this._grid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Put the label and textview in the grid one on top of the other\n" " this._grid.attach (this._penguin, 0, 0, 1, 1);\n" " this._grid.attach (this._scrolled, 0, 1, 1, 1);\n" "\n" " // Create a button to send your message to the penguin\n" " this._send = new Gtk.Button ({\n" " halign: Gtk.Align.END,\n" " margin_top: 20,\n" " label: \"Send\" });\n" " this._send.connect ('clicked', this._chat.bind(this));\n" "\n" " // Create a grid that will have the other grid on top and the button on bottom\n" " this._mainGrid = new Gtk.Grid ({\n" " halign: Gtk.Align.CENTER,\n" " valign: Gtk.Align.CENTER });\n" "\n" " // Add the other grid and the button to the main grid\n" " this._mainGrid.attach (this._grid, 0, 0, 1, 1);\n" " this._mainGrid.attach (this._send, 0, 1, 1, 1);\n" "\n" " // Attach the main grid to the window\n" " this._window.add (this._mainGrid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _chat() {\n" "\n" " // Create a random number to determine what the penguin says\n" " this.number = Math.floor ((Math.random() * 3) + 1);\n" "\n" " // Did you actually say anything?\n" " if (this.buffer.text) {\n" "\n" " // Did you mention fish?\n" " if (this.buffer.text.match (/fish/gi)) {\n" "\n" " // Have the penguin squaak about fish\n" " if (this.number == 1)\n" " this._penguin.set_label (\"FISH!\");\n" "\n" " else if (this.number == 2)\n" " this._penguin.set_label (\"Fish fish fish fish. Fish!\");\n" "\n" " else\n" " this._penguin.set_label (\"Fish? Fish fish fish. Fish fish. FISH!\");\n" "\n" " }\n" "\n" " // I guess you didn't mention fish\n" " else {\n" "\n" " // Have the penguin talk about penguinny stuff\n" " if (this.number == 1)\n" " this._penguin.set_label (\"SQUAAK!\");\n" "\n" " else if (this.number == 2)\n" " this._penguin.set_label (\"Ork ork ork ork squaak. Squaak squaak! *waves flippers*\");\n" "\n" " else\n" " this._penguin.set_label (\"Ork ork ork ork ork?\");\n" "\n" " }\n" "\n" " }\n" "\n" " // Clear the buffer\n" " this.buffer.text = \"\";\n" "\n" " // Give focus back to the textview so you don't have to click it again\n" " this._textView.has_focus = true;\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new TextViewExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/textview.js.page:256 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.ScrolledWindow" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/textview.js.page:257 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gtk.TextBuffer" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: item/p #: C/textview.js.page:258 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gtk.TextView" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: info/title #: C/textview.py.page:8 #, fuzzy #| msgid "TextView (Python)" msgctxt "text" msgid "TextView (Python)" msgstr "TextView (Python)" #. (itstool) path: info/desc #: C/textview.py.page:27 msgid "Widget that displays a GtkTextBuffer" msgstr "L'élément graphique qui affiche un GtkTextBuffer" #. (itstool) path: note/p #: C/textview.py.page:32 msgid "This is an example of Gtk.TextView." msgstr "Ceci est un exemple de Gtk.TextView." #. (itstool) path: note/p #: C/textview.py.page:34 msgid "" "But we can also have a new line if we write a long sentence (the text will " "wrap breaking lines between words)." msgstr "" "Mais il peut également y avoir un retour à la ligne si nous écrivons une " "longue phrase (la césure se fait entre deux mots)." #. (itstool) path: note/p #: C/textview.py.page:35 msgid "If we have a loooooooooooooooooooooooooooooooooooong" msgstr "Si nous avons un loooooooooooooooooooooooooooooooooooong" #. (itstool) path: note/p #: C/textview.py.page:36 msgid "(that was long)" msgstr "(long comme ça)" #. (itstool) path: note/p #: C/textview.py.page:37 msgid "word, an horizontal scrollbar will appear." msgstr "mot, une barre de défilement horizontale apparaît." #. (itstool) path: section/code #: C/textview.py.page:46 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"TextView Example\", application=app)\n" " self.set_default_size(300, 450)\n" "\n" " # a scrollbar for the child widget (that is going to be the textview)\n" " scrolled_window = Gtk.ScrolledWindow()\n" " scrolled_window.set_border_width(5)\n" " # we scroll only if needed\n" " scrolled_window.set_policy(\n" " Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)\n" "\n" " # a text buffer (stores text)\n" " buffer1 = Gtk.TextBuffer()\n" "\n" " # a textview (displays the buffer)\n" " textview = Gtk.TextView(buffer=buffer1)\n" " # wrap the text, if needed, breaking lines in between words\n" " textview.set_wrap_mode(Gtk.WrapMode.WORD)\n" "\n" " # textview is scrolled\n" " scrolled_window.add(textview)\n" "\n" " self.add(scrolled_window)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/textview.py.page:50 msgid "Useful methods for a TextView widget" msgstr "Méthodes utiles pour un élément graphique TextView" #. (itstool) path: section/p #: C/textview.py.page:51 msgid "" "A Gtk.TextView displays the text stored in a Gtk." "TextBuffer. However, most text manipulation is accomplished with " "iterators, represented by a Gtk.TextIter - a position between " "two characters in the text buffer. Iterators are not valid indefinitely; " "whenever the buffer is modified in a way that affects the contents of the " "buffer, all outstanding iterators become invalid. Because of this, iterators " "can’t be used to preserve positions across buffer modifications. To preserve " "a position, we use a Gtk.TextMark, that can be set visible with " "visible(True). A text buffer contains two built-in marks; an " "\"insert\" mark (the position of the cursor) and the \"selection_bound\" " "mark." msgstr "" "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)." #. (itstool) path: section/p #: C/textview.py.page:52 msgid "Methods for a TextView widget:" msgstr "Méthodes pour un élément graphique TextView :" #. (itstool) path: item/p #: C/textview.py.page:54 msgid "" "The TextView widget is by default editable. If you prefer otherwise, use " "set_editable(False). If the buffer has no editable text, it " "might be a good idea to use set_cursor_visible(False) as well." msgstr "" "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." #. (itstool) path: item/p #: C/textview.py.page:55 msgid "" "The justification of the text is set with set_justification(Gtk." "Justification.JUSTIFICATION) where JUSTIFICATION is one " "of LEFT, RIGHT, CENTER, FILL." msgstr "" "La justification du texte est définie par set_justification(Gtk." "Justification.JUSTIFICATION)JUSTIFICATION est l'une " "des valeurs LEFT, RIGHT, CENTER, FILL." #. (itstool) path: item/p #: C/textview.py.page:56 msgid "" "The line wrapping of the text is set with set_wrap_mode(Gtk.WrapMode." "WRAP) where WRAP is one of NONE (the text " "area is made wider), CHAR (break lines anywhere the cursor can " "appear), WORD (break lines between words), WORD_CHAR (break lines between words, but if that is not enough between " "characters)." msgstr "" "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)." #. (itstool) path: section/p #: C/textview.py.page:58 msgid "Methods for a TextBuffer widget:" msgstr "Méthodes pour un élément graphique TextBuffer :" #. (itstool) path: item/p #: C/textview.py.page:60 msgid "" "get_insert() returns the Gtk.TextMark that " "represents the cursor, that is the insertion point." msgstr "" "La méthode get_insert() retourne le marqueur Gtk." "TextMark qui représente le curseur, c'est-à-dire le point d'insertion." #. (itstool) path: item/p #: C/textview.py.page:61 msgid "" "get_selection_bound() returns the Gtk.TextMark " "that represents the selection bound." msgstr "" "La méthode get_selection_bound() renvoie le marqueur Gtk." "TextMark qui représente les limites de la sélection." #. (itstool) path: item/p #: C/textview.py.page:62 msgid "" "set_text(\"some text\", length) where length is a " "positive integer or -1, sets the content of the buffer as the " "first length characters of the \"some text\" text. " "If length is omitted or -1, the text is inserted " "completely. The content of the buffer, if there is any, is destroyed." msgstr "" "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." #. (itstool) path: item/p #: C/textview.py.page:63 msgid "" "insert(iter, \"some text\", length) where iter is " "a text iterator and length is a positive integer or -1, inserts in the buffer at iter the first length characters of the \"some text\" text. If length is omitted or -1, the text is inserted completely." msgstr "" "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é." #. (itstool) path: item/p #: C/textview.py.page:64 msgid "" "insert_at_cursor(\"some text\", length) does the same as " "insert(iter, \"some text\", length), with the current cursor " "taken as iter." msgstr "" "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." #. (itstool) path: item/p #: C/textview.py.page:65 msgid "" "create_mark(\"mark_name\", iter, left_gravity) where " "iter is a Gtk.TextIter and left_gravity is a boolean, creates a Gtk.TextMark at the position of " "iter. If \"mark_name\" is None, the " "mark is anonymous; otherwise, the mark can be retrieved by name using " "get_mark(). If a mark has left gravity, and text is inserted at " "the mark’s current location, the mark will be moved to the left of the newly-" "inserted text. If left_gravity is omitted, it defaults to " "False." msgstr "" "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." #. (itstool) path: item/p #: C/textview.py.page:67 msgid "" "To specify that some text in the buffer should have specific formatting, you " "must define a tag to hold that formatting information, and then apply that " "tag to the region of text using create_tag(\"tag name\", property) and apply_tag(tag, start_iter, end_iter) as in, for " "instance:" msgstr "" "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 :" #. (itstool) path: item/code #: C/textview.py.page:68 #, no-wrap msgid "" "\n" "tag = textbuffer.create_tag(\"orange_bg\", background=\"orange\")\n" "textbuffer.apply_tag(tag, start_iter, end_iter)" msgstr "" "\n" "etiquette = textbuffer.create_tag(\"fond_orange\", background=\"orange\")\n" "textbuffer.apply_tag(etiquette, start_iter, end_iter)" #. (itstool) path: item/p #: C/textview.py.page:71 msgid "The following are some of the common styles applied to text:" msgstr "Voici quelques styles les plus usuels appliqués à du texte :" #. (itstool) path: item/p #: C/textview.py.page:73 msgid "Background colour (\"background\" property)" msgstr "Couleur d'arrière-plan (propriété « background »)" #. (itstool) path: item/p #: C/textview.py.page:74 msgid "Foreground colour (\"foreground\" property)" msgstr "Couleur de premier plan (propriété « foreground »)" #. (itstool) path: item/p #: C/textview.py.page:75 msgid "Underline (\"underline\" property)" msgstr "Souligné (propriété « underline »)" #. (itstool) path: item/p #: C/textview.py.page:76 msgid "Bold (\"weight\" property)" msgstr "Gras (propriété « weight »)" #. (itstool) path: item/p #: C/textview.py.page:77 msgid "Italics (\"style\" property)" msgstr "Italique (propriété « style »)" #. (itstool) path: item/p #: C/textview.py.page:78 msgid "Strikethrough (\"strikethrough\" property)" msgstr "Barré (propriété « strikethrough »)" #. (itstool) path: item/p #: C/textview.py.page:79 msgid "Justification (\"justification\" property)" msgstr "Justifié (propriété « justification »)" #. (itstool) path: item/p #: C/textview.py.page:80 msgid "Size (\"size\" and \"size-points\" properties)" msgstr "Taille (propriétés « size » et « size-points »)" #. (itstool) path: item/p #: C/textview.py.page:81 msgid "Text wrapping (\"wrap-mode\" property)" msgstr "Césure (propriété « wrap-mode »)" #. (itstool) path: item/p #: C/textview.py.page:83 msgid "" "You can also delete particular tags later using remove_tag() or " "delete all tags in a given region by calling remove_all_tags()." msgstr "" "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()." #. (itstool) path: section/p #: C/textview.py.page:85 msgid "Methods for a TextIter widget" msgstr "Méthodes pour un élément graphique TextIter" #. (itstool) path: item/p #: C/textview.py.page:87 msgid "" "forward_search(needle, flags, limit) searches forward for " "needle. The search will not continue past the Gtk." "TextIter limit. The flags can be set to one of the " "following, or any combination of it by concatenating them with the bitwise-" "OR operator |: 0 (the match must be exact); " "Gtk.TextSearchFlags.VISIBLE_ONLY (the match may have invisible " "text interspersed in needle); Gtk.TextSearchFlags.TEXT_ONLY " "(the match may have pixbufs or child widgets mixed inside the matched " "range); Gtk.TextSearchFlags.CASE_INSENSITIVE (the text will be " "matched regardless of what case it is in). The method returns a tuple " "containing a Gtk.TextIter pointing to the start and to the " "first character after the match; if no match is found, None is " "returned." msgstr "" "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." #. (itstool) path: item/p #: C/textview.py.page:88 msgid "" "backward_search(needle, flags, limit) does the same as " "forward_search(), but moving backwards." msgstr "" "La méthode backward_search(needle, flags, limit) effectue les " "même actions que forward_search(), mais en arrière." #. (itstool) path: item/p #: C/textview.py.page:96 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTextView" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/textview.py.page:97 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTextBuffer" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/textview.py.page:98 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTextTag" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/textview.vala.page:8 #, fuzzy #| msgid "TextView (Vala)" msgctxt "text" msgid "TextView (Vala)" msgstr "TextView (Vala)" #. (itstool) path: note/p #: C/textview.vala.page:25 msgid "" "If we have a loooooooooooooooooooooooooooooooooooong word, a horizontal " "scrollbar will appear." msgstr "" "Si nous avons un loooooooooooooooooooooooooooooooooooong mot, une barre de " "défilement horizontale apparaît." #. (itstool) path: page/code #: C/textview.vala.page:30 #, no-wrap msgid "" "/* This is the application. */\n" "public class MyApplication : Gtk.Application {\n" "\t/* Override the 'activate' signal of GLib.Application. */\n" "\tprotected override void activate () {\n" "\t\t/* Create the window of this application. */\n" "\t\tnew MyWindow (this).show_all ();\n" "\t}\n" "}\n" "\n" "/* This is the window. */\n" "class MyWindow: Gtk.ApplicationWindow {\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"TextView Example\");\n" "\t\tthis.set_default_size (220, 200);\n" "\n" "\t\tvar buffer = new Gtk.TextBuffer (null); //stores text to be displayed\n" "\t\tvar textview = new Gtk.TextView.with_buffer (buffer); //displays TextBuffer\n" "\t\ttextview.set_wrap_mode (Gtk.WrapMode.WORD); //sets line wrapping\n" "\n" "\t\tvar scrolled_window = new Gtk.ScrolledWindow (null, null);\n" "\t\tscrolled_window.set_policy (Gtk.PolicyType.AUTOMATIC,\n" "\t\t Gtk.PolicyType.AUTOMATIC);\n" "\n" "\t\tscrolled_window.add (textview);\n" "\t\tscrolled_window.set_border_width (5);\n" "\n" "\t\tthis.add (scrolled_window);\n" "\t}\n" "}\n" "/* main creates and runs the application. */\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/textview.vala.page:35 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "TextBuffer" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/textview.vala.page:36 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "TextView" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/textview.vala.page:38 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "WrapMode" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/togglebutton.c.page:8 #, fuzzy #| msgid "ToggleButton (C)" msgctxt "text" msgid "ToggleButton (C)" msgstr "ToggleButton (C)" #. (itstool) path: info/desc #: C/togglebutton.c.page:22 C/togglebutton.py.page:19 #: C/togglebutton.vala.page:21 msgid "A button which retains state" msgstr "Un bouton qui mémorise l'état" #. (itstool) path: page/title #: C/togglebutton.c.page:25 C/togglebutton.js.page:21 C/togglebutton.py.page:22 #: C/togglebutton.vala.page:24 msgid "ToggleButton" msgstr "ToggleButton" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/togglebutton.c.page:27 C/togglebutton.js.page:22 C/togglebutton.py.page:23 #: C/togglebutton.vala.page:25 #, fuzzy #| msgid "" #| "@@image: 'media/togglebutton.png'; md5=791e062613d4f9bd5936390b0aa18448" msgctxt "_" msgid "" "external ref='media/togglebutton.png' md5='791e062613d4f9bd5936390b0aa18448'" msgstr "" "@@image: 'media/togglebutton.png'; md5=791e062613d4f9bd5936390b0aa18448" #. (itstool) path: page/p #: C/togglebutton.c.page:28 C/togglebutton.py.page:24 #: C/togglebutton.vala.page:26 msgid "When this ToggleButton is in an active state, the spinner spins." msgstr "Quand ce ToggleButton est activé, l'indicateur d'activité tourne." #. (itstool) path: page/code #: C/togglebutton.c.page:30 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "\n" "\n" "/*This is the callback function. It is a handler function \n" "which reacts to the signal. In this case, it will cause the \n" "spinner to start and stop according to how many times the user \n" "presses the button.*/\n" "static void\n" "button_toggled_cb (GtkWidget *button,\n" " gpointer user_data)\n" "{\n" " GtkWidget *spinner = user_data;\n" "\n" " if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(button)))\n" " gtk_spinner_start (GTK_SPINNER (spinner));\n" " else {\n" " gtk_spinner_stop (GTK_SPINNER (spinner));\n" " }\n" "}\n" "\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" " GtkWidget *button;\n" " GtkWidget *grid;\n" " GtkWidget *spinner;\n" "\n" " /*Create a window with a title, border width and a default size*/\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"ToggleButton Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 300, 300);\n" " gtk_container_set_border_width(GTK_CONTAINER(window), 30);\n" "\n" " /*Create a togglebutton with a label*/\n" " button = gtk_toggle_button_new_with_label (\"Start/Stop\");\n" "\n" " /*Create a spinner, with extra horizontal and vertical space*/\n" " spinner = gtk_spinner_new ();\n" " gtk_widget_set_hexpand (spinner, TRUE);\n" " gtk_widget_set_vexpand (spinner, TRUE);\n" "\n" " /*Create a grid and set the row spacing, attach the togglebutton \n" " and spinner onto the grid and position them accordingly*/\n" " grid = gtk_grid_new();\n" " gtk_grid_set_row_homogeneous (GTK_GRID (grid), FALSE);\n" " gtk_grid_set_row_spacing (GTK_GRID (grid), 15);\n" " gtk_grid_attach (GTK_GRID (grid), spinner, 0, 0, 1, 1);\n" " gtk_grid_attach (GTK_GRID (grid), button, 0, 1, 1, 1);\n" " \n" " gtk_container_add (GTK_CONTAINER (window), grid);\n" "\n" " /*Connecting the toggled signal to the callback*/\n" " g_signal_connect (GTK_TOGGLE_BUTTON (button), \"toggled\", \n" " G_CALLBACK (button_toggled_cb), spinner);\n" "\n" " gtk_widget_show_all (window);\n" "}\n" "\n" "\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/togglebutton.c.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTogglebutton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/togglebutton.js.page:8 #, fuzzy #| msgid "ToggleButton (JavaScript)" msgctxt "text" msgid "ToggleButton (JavaScript)" msgstr "ToggleButton (JavaScript)" #. (itstool) path: info/desc #: C/togglebutton.js.page:18 msgid "Stays pressed until you click it again" msgstr "Reste enfoncé jusqu'à ce que vous cliquiez dessus à nouveau" #. (itstool) path: page/p #: C/togglebutton.js.page:23 msgid "" "A ToggleButton is like a normal Button, " "except that it stays pressed in when you click it. You can use it like an on/" "off switch, to control things like the Spinner in this example." msgstr "" "Un ToggleButton ressemble à un bouton " "normal, sauf qu'il reste enfoncé après l'avoir cliqué. Vous pouvez " "l'utiliser comme un commutateur allumé/éteint pour contrôler des éléments " "comme l'indicateur d'activité de cet " "exemple." #. (itstool) path: page/p #: C/togglebutton.js.page:24 msgid "" "A ToggleButton's get_active method returns true if it's pressed in, and " "false if it's not. Its set_active method is used if you want to change its " "state without needing to click on it. When it changes state from pressed in " "to popped out and vice-versa, it sends out the \"toggled\" signal, which you " "can connect to a function to do something." msgstr "" "La méthode get_active d'un ToggleButton renvoie « true » (vrai) s'il est " "enfoncé et « false » dans le cas contraire. Utilisez sa méthode set_active " "si vous souhaitez changer son état sans avoir besoin de cliquer dessus. " "Quand il passe de l'état « enfoncé » à « relâché » et vice versa, il envoie " "le signal « toggled » que vous pouvez connecter à une fonction afin " "d'effectuer une action." #. (itstool) path: section/code #: C/togglebutton.js.page:41 #, no-wrap msgid "" "\n" "const ToggleButtonExample = new Lang.Class({\n" " Name: 'ToggleButton Example',\n" "\n" " // Create the application itself\n" " _init: function() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jstogglebutton',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/code #: C/togglebutton.js.page:68 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 300,\n" " default_width: 300,\n" " border_width: 30,\n" " title: \"ToggleButton Example\"});\n" msgstr "" #. (itstool) path: section/title #: C/togglebutton.js.page:85 msgid "Creating the ToggleButton and other widgets" msgstr "Création du ToggleButton et des autres éléments graphiques" #. (itstool) path: section/code #: C/togglebutton.js.page:86 #, no-wrap msgid "" "\n" " // Create the spinner that the button stops and starts\n" " this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n" msgstr "" #. (itstool) path: section/p #: C/togglebutton.js.page:91 msgid "" "We want this Spinner to expand vertically " "and horizontally, to take up as much space as possible inside the window." msgstr "" "Nous voulons que cet indicateur d'activité " "puisse s'étendre verticalement et horizontalement pour prendre le maximum " "d'espace disponible dans la fenêtre." #. (itstool) path: section/code #: C/togglebutton.js.page:93 #, no-wrap msgid "" "\n" " // Create the togglebutton that starts and stops the spinner\n" " this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n" " this._toggleButton.connect ('toggled', Lang.bind (this, this._onToggle));\n" msgstr "" #. (itstool) path: section/p #: C/togglebutton.js.page:99 msgid "" "Creating a ToggleButton is a lot like creating a normal Button. The biggest difference is that you're handling a " "\"toggled\" signal instead of a \"clicked\" signal. This code binds the " "_onToggle function to that signal, so that it's called whenever our " "ToggleButton is toggled." msgstr "" "La création d'un ToggleButton ressemble beaucoup à la création d'un bouton normal. La plus grosse différence réside " "dans le fait que vous manipulez un signal « toggled » au lieu d'un signal " "« clicked ». Ce code relie la fonction _onToggle à ce signal, de sorte " "qu'elle est appelée à chaque fois que le ToggleButton est commuté." #. (itstool) path: section/code #: C/togglebutton.js.page:101 #, no-wrap msgid "" "\n" " // Create a grid and put everything in it\n" " this._grid = new Gtk.Grid ({\n" " row_homogeneous: false,\n" " row_spacing: 15});\n" " this._grid.attach (this._spinner, 0, 0, 1, 1);\n" " this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n" msgstr "" #. (itstool) path: section/p #: C/togglebutton.js.page:109 msgid "" "Here we create a simple Grid to organize " "everything in, then attach the Spinner and ToggleButton to it." msgstr "" "Nous créons ici une simple grille pour tout " "ranger dedans, puis nous lui attachons le Spinner (indicateur d'activité) et " "le ToggleButton." #. (itstool) path: section/code #: C/togglebutton.js.page:111 #, no-wrap msgid "" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/togglebutton.js.page:119 msgid "" "Now we add the Grid to the Window, and tell the Window to show itself and " "its child widgets when the application is started." msgstr "" "Ensuite, nous ajoutons la grille à la fenêtre et demandons à celle-ci de " "s'afficher ainsi que ses éléments graphiques enfants quand l'application est " "démarrée." #. (itstool) path: section/title #: C/togglebutton.js.page:123 msgid "Making something happen when the ToggleButton is toggled" msgstr "Déclenchement d'une action quand le ToggleButton est commuté" #. (itstool) path: section/code #: C/togglebutton.js.page:125 #, no-wrap msgid "" "\n" " _onToggle: function() {\n" "\n" " // Start or stop the spinner\n" " if (this._toggleButton.get_active ())\n" " this._spinner.start ();\n" " else this._spinner.stop ();\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/togglebutton.js.page:137 msgid "" "Whenever someone toggles the button, this function checks what its state is " "afterwards using get_active and starts or stops the spinner accordingly. We " "want it to spin only while the button is pressed in, so if get_active " "returns true we start the spinner. Otherwise, we tell it to stop." msgstr "" "Chaque fois que quelqu'un commutte le bouton, cette fonction vérifie s'il " "est enfoncé ou non en utilisant get_active et, selon le cas, démarre ou " "arrête l'indicateur d'activité. Nous voulons qu'il ne tourne que lorsque le " "bouton est enfoncé, donc, si get_active renvoie la valeur true (vrai), nous " "démarrons l'indicateur, sinon, nous lui indiquons de s'arrêter." #. (itstool) path: section/code #: C/togglebutton.js.page:139 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new ToggleButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/code #: C/togglebutton.js.page:149 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class ToggleButtonExample {\n" "\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jstogglebutton',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 300,\n" " default_width: 300,\n" " border_width: 30,\n" " title: \"ToggleButton Example\"});\n" "\n" " // Create the spinner that the button stops and starts\n" " this._spinner = new Gtk.Spinner ({hexpand: true, vexpand: true});\n" "\n" " // Create the togglebutton that starts and stops the spinner\n" " this._toggleButton = new Gtk.ToggleButton ({label: \"Start/Stop\"});\n" " this._toggleButton.connect ('toggled', this._onToggle.bind(this));\n" "\n" " // Create a grid and put everything in it\n" " this._grid = new Gtk.Grid ({\n" " row_homogeneous: false,\n" " row_spacing: 15});\n" " this._grid.attach (this._spinner, 0, 0, 1, 1);\n" " this._grid.attach (this._toggleButton, 0, 1, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _onToggle() {\n" "\n" " // Start or stop the spinner\n" " if (this._toggleButton.get_active ())\n" " this._spinner.start ();\n" " else this._spinner.stop ();\n" "\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new ToggleButtonExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/togglebutton.js.page:159 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "Gtk.ToggleButton" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: info/title #: C/togglebutton.py.page:8 #, fuzzy #| msgid "ToggleButton (Python)" msgctxt "text" msgid "ToggleButton (Python)" msgstr "ToggleButton (Python)" #. (itstool) path: section/code #: C/togglebutton.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" " # a window\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(\n" " self, title=\"ToggleButton Example\", application=app)\n" " self.set_default_size(300, 300)\n" " self.set_border_width(30)\n" "\n" " # a spinner animation\n" " self.spinner = Gtk.Spinner()\n" " # with extra horizontal space\n" " self.spinner.set_hexpand(True)\n" " # with extra vertical space\n" " self.spinner.set_vexpand(True)\n" "\n" " # a togglebutton\n" " button = Gtk.ToggleButton.new_with_label(\"Start/Stop\")\n" " # connect the signal \"toggled\" emitted by the togglebutton\n" " # when its state is changed to the callback function toggled_cb\n" " button.connect(\"toggled\", self.toggled_cb)\n" "\n" " # a grid to allocate the widgets\n" " grid = Gtk.Grid()\n" " grid.set_row_homogeneous(False)\n" " grid.set_row_spacing(15)\n" " grid.attach(self.spinner, 0, 0, 1, 1)\n" " grid.attach(button, 0, 1, 1, 1)\n" "\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" " # callback function for the signal \"toggled\"\n" " def toggled_cb(self, button):\n" " # if the togglebutton is active, start the spinner\n" " if button.get_active():\n" " self.spinner.start()\n" " # else, stop it\n" " else:\n" " self.spinner.stop()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/togglebutton.py.page:36 msgid "Useful methods for a ToggleButton widget" msgstr "Méthodes utiles pour un élément graphique ToggleButton" #. (itstool) path: section/p #: C/togglebutton.py.page:37 msgid "" "In line 22 the signal \"toggled\" is connected to the callback " "function toggled_cb() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/togglebutton.py.page:45 C/toolbar.py.page:60 C/toolbar_builder.py.page:198 #: C/widget_drawing.py.page:38 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkWidget" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/togglebutton.vala.page:8 #, fuzzy #| msgid "ToggleButton (Vala)" msgctxt "text" msgid "ToggleButton (Vala)" msgstr "ToggleButton (Vala)" #. (itstool) path: page/code #: C/togglebutton.vala.page:28 #, no-wrap msgid "" "public class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\tGtk.Spinner spinner;\n" "\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"ToggleButton Example\");\n" "\n" "\t\tthis.set_default_size (300, 300);\n" "\t\tthis.border_width = 30;\n" "\n" "\t\t/*Spinner*/\n" "\t\tspinner = new Gtk.Spinner ();\n" "\t\tspinner.set_hexpand (true);\n" "\t\tspinner.set_vexpand (true);\n" "\n" "\t\t/*ToggleButton*/\n" "\t\tvar togglebutton = new Gtk.ToggleButton.with_label (\"Start/Stop\");\n" "\t\ttogglebutton.toggled.connect (toggled_cb);\n" "\n" "\t\t/*Grid*/\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tgrid.set_row_homogeneous (false);\n" "\t\tgrid.set_row_spacing (15);\n" "\t\tgrid.attach (spinner, 0, 0, 1, 1);\n" "\t\tgrid.attach (togglebutton, 0, 1, 1, 1);\n" "\n" "\t\tthis.add (grid);\n" "\t}\n" "\n" "\tvoid toggled_cb (Gtk.ToggleButton button) {\n" "\t\tif (button.get_active()) {\n" "\t\t\tspinner.start ();\n" "\t\t}\n" "\t\telse {\n" "\t\t\tspinner.stop ();\n" "\t\t}\n" "\t}\n" "}\n" "\n" "public class MyApplication : Gtk.Application {\n" "\n" "\tprotected override void activate () {\n" "\n" "\t\t//Show all the things\n" "\t\tnew MyWindow (this).show_all ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"org.example.spinner\");\n" "\t}\n" "}\n" "\n" "public int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/togglebutton.vala.page:33 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk." "ToggleButton" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: info/title #: C/toolbar.c.page:8 #, fuzzy #| msgid "Toolbar (Vala)" msgctxt "text" msgid "Toolbar (C)" msgstr "Barre d'outils (Vala)" #. (itstool) path: info/desc #: C/toolbar.c.page:20 C/toolbar.vala.page:19 C/toolbar_builder.vala.page:20 msgid "A bar of buttons" msgstr "Une barre de boutons" #. (itstool) path: page/title #: C/toolbar.c.page:23 C/toolbar.js.page:21 C/toolbar.py.page:23 #: C/toolbar.vala.page:22 msgid "Toolbar" msgstr "Barre d'outils" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/toolbar.c.page:25 C/toolbar.js.page:22 C/toolbar.py.page:25 #: C/toolbar.vala.page:24 C/toolbar_builder.py.page:38 #: C/toolbar_builder.vala.page:25 #, fuzzy #| msgid "@@image: 'media/toolbar.png'; md5=f0350855eedf6343952b72d6d906f738" msgctxt "_" msgid "external ref='media/toolbar.png' md5='f0350855eedf6343952b72d6d906f738'" msgstr "@@image: 'media/toolbar.png'; md5=f0350855eedf6343952b72d6d906f738" #. (itstool) path: page/p #: C/toolbar.c.page:26 C/toolbar.js.page:23 C/toolbar.vala.page:25 msgid "" "Toolbar can contain either text or stock icons. In this sample we use stock " "icons. This example has fullscreen functionality." msgstr "" "La barre d'outils peut contenir soit du texte, soit des icônes de la " "collection. Dans cet exemple, nous utilisons les icônes de la collection. " "Cet exemple possède la fonction plein écran." #. (itstool) path: page/p #: C/toolbar.c.page:27 #, fuzzy #| msgid "" #| "This example uses SimpleActions (window and app). App actions can easily " #| "be added the the app menu." msgid "" "This example uses SimpleActions (window and app). App actions can easily be " "added to the app menu." msgstr "" "Cet exemple utilise SimpleActions (fenêtre et application). Les actions " "applications peuvent être facilement ajoutées au menu « Applications »." #. (itstool) path: page/code #: C/toolbar.c.page:29 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "/* Declare these two Toolbuttons, as they will be used in both the fullscreen\n" " * action callback as well as the activate function.\n" " */\n" "GtkToolItem *fullscreen_button;\n" "GtkToolItem *leavefullscreen_button;\n" "\n" "\n" "\n" "/* Callback function for the undo action */\n" "static void\n" "undo_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"Undo\\\".\\n\");\n" "}\n" "\n" "\n" "\n" "/* Callback function for the fullscreen action */\n" "static void\n" "fullscreen_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (user_data));\n" "\n" " GdkWindowState current_state = gdk_window_get_state (window);\n" "\n" " /* If the window is currently in fullscreen mode */\n" " if ( (current_state & GDK_WINDOW_STATE_FULLSCREEN) != 0)\n" " {\n" " /* Minimize the window and change to the fullscreen button */\n" " gdk_window_unfullscreen (window);\n" " gtk_widget_hide (GTK_WIDGET(leavefullscreen_button));\n" " gtk_widget_show (GTK_WIDGET(fullscreen_button));\n" " }\n" " else\n" " {\n" " /* Maximize the window, and change to the unfullscreen button */\n" " gdk_window_fullscreen (window);\n" " gtk_widget_hide (GTK_WIDGET (fullscreen_button));\n" " gtk_widget_show (GTK_WIDGET (leavefullscreen_button));\n" " }\n" "}\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " /* Initialize variables */\n" " GtkWidget *window;\n" " GtkWidget *grid;\n" " GtkWidget *toolbar;\n" "\n" " GtkToolItem *new_button;\n" " GtkToolItem *open_button;\n" " GtkToolItem *undo_button;\n" "\n" " GtkStyleContext *style_context;\n" "\n" " GSimpleAction *undo_action;\n" " GSimpleAction *fullscreen_action;\n" " GSimpleAction *leavefullscreen_action;\n" "\n" " /* Create a window with a title and a default size */\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Toolbar Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n" "\n" " /* Here we begin to create the toolbar */\n" " toolbar = gtk_toolbar_new ();\n" " /* Set the toolbar to be the primary toolbar of the application */\n" " style_context = gtk_widget_get_style_context (toolbar);\n" " gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n" "\n" " /* Create a button for the \"new\" action, with a stock image */\n" " new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n" " /* Show the \"new\" button's label */\n" " gtk_tool_item_set_is_important (new_button, TRUE);\n" " /* Insert the button in the desired position within the toolbar */\n" " gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n" " /* Show the button */\n" " gtk_widget_show (GTK_WIDGET (new_button));\n" " /* Set the action name for the \"new\" action. We use \"app.new\" to\n" " * indicate that the action controls the application.\n" " */\n" " gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n" "\n" " /* Repeat the same steps for the \"open\" action */\n" " open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n" " gtk_tool_item_set_is_important (open_button, TRUE);\n" " gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n" " gtk_widget_show (GTK_WIDGET (open_button));\n" " gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n" "\n" " /* Repeat the same steps for the \"undo\" action */\n" " undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n" " gtk_tool_item_set_is_important (undo_button, TRUE);\n" " gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n" " gtk_widget_show (GTK_WIDGET (undo_button));\n" " /* In this case, we use \"win.undo\" to indicate that\n" " * the action controls only the window\n" " */\n" " gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n" "\n" " /* Repeat the same steps for the \"fullscreen\" action */\n" " fullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_FULLSCREEN);\n" " gtk_tool_item_set_is_important (fullscreen_button, TRUE);\n" " gtk_toolbar_insert (GTK_TOOLBAR (toolbar), fullscreen_button, 3);\n" " gtk_widget_show (GTK_WIDGET (fullscreen_button));\n" " gtk_actionable_set_action_name (GTK_ACTIONABLE (fullscreen_button),\n" " \"win.fullscreen\");\n" "\n" " /*Repeat the same steps for the \"leavefullscreen\" action */\n" " leavefullscreen_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN);\n" " gtk_tool_item_set_is_important (leavefullscreen_button, TRUE);\n" " gtk_toolbar_insert (GTK_TOOLBAR (toolbar), leavefullscreen_button, 3);\n" " /* The only difference here is that we don't show the leavefullscreen button,\n" " * as it will later replace the fullscreen button.\n" " */\n" " gtk_actionable_set_action_name (GTK_ACTIONABLE (leavefullscreen_button),\n" " \"win.leavefullscreen\");\n" "\n" " /* Once we've created the bare-bones of the toolbar, we make\n" " * sure it has enough horizontal space.\n" " */\n" " gtk_widget_set_hexpand (toolbar, TRUE);\n" " gtk_widget_show (toolbar);\n" "\n" " /* Attach the toolbar to the grid and add it to the overall window */\n" " grid = gtk_grid_new ();\n" " gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n" " gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n" " gtk_widget_show (GTK_WIDGET (grid));\n" "\n" " /* Use the action names to create the actions that control the window, and\n" " * connect them to the appropriate callbackfunctions.\n" " */\n" " undo_action = g_simple_action_new (\"undo\", NULL);\n" " g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n" " GTK_WINDOW (window));\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n" "\n" " fullscreen_action = g_simple_action_new (\"fullscreen\", NULL);\n" " g_signal_connect (fullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n" " GTK_WINDOW (window));\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (fullscreen_action));\n" "\n" " leavefullscreen_action = g_simple_action_new (\"leavefullscreen\", NULL);\n" " g_signal_connect (leavefullscreen_action, \"activate\", G_CALLBACK (fullscreen_callback),\n" " GTK_WINDOW (window));\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (leavefullscreen_action));\n" "\n" " gtk_widget_show (window);\n" "}\n" "\n" "\n" "\n" "/* Callback function for the new action */\n" "static void\n" "new_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"New\\\".\\n\");\n" "}\n" "\n" "\n" "\n" "/* Callback function for the open action */\n" "static void\n" "open_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"Open\\\".\\n\");\n" "}\n" "\n" "\n" "\n" "/* In this function, we create the actions in which control the window, and\n" " * connect their signals to the appropriate callback function.\n" " */\n" "static void\n" "startup (GApplication *app,\n" " gpointer user_data)\n" "{\n" " GSimpleAction *new_action;\n" " GSimpleAction *open_action;\n" "\n" " new_action = g_simple_action_new (\"new\", NULL);\n" " g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n" "\n" " open_action = g_simple_action_new (\"open\", NULL);\n" " g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n" "}\n" "\n" "\n" "\n" "/* Startup function for the application */\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/toolbar.c.page:35 C/tooltip.c.page:39 C/tooltip.py.page:60 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkToolbar" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/toolbar.c.page:36 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkToolbutton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/toolbar.js.page:8 #, fuzzy #| msgid "Toolbar (JavaScript)" msgctxt "text" msgid "Toolbar (JavaScript)" msgstr "Barre d'outils (JavaScript)" #. (itstool) path: info/desc #: C/toolbar.js.page:18 msgid "A bar of tools" msgstr "Une barre d'outils" #. (itstool) path: page/p #: C/toolbar.js.page:24 C/toolbar.vala.page:26 msgid "" "This example uses SimpleActions (window and app). App actions can easily be " "added the the app menu." msgstr "" "Cet exemple utilise SimpleActions (fenêtre et application). Les actions " "applications peuvent être facilement ajoutées au menu « Applications »." #. (itstool) path: page/code #: C/toolbar.js.page:26 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gdk = '3.0';\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gdk = imports.gi.Gdk;\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class Application {\n" "\n" " //create the application\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.myapp',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " //connect to 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " //create the UI (in this case it's just the ApplicationWindow\n" " _buildUI() {\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Toolbar Example\",\n" " default_height: 200,\n" " default_width: 400\n" " });\n" "\n" " this._grid = new Gtk.Grid();\n" " this._window.add(this._grid);\n" " this._grid.show();\n" "\n" " this._createToolbar();\n" " this._toolbar.set_hexpand(true);\n" " this._grid.attach(this._toolbar, 0, 0, 1, 1);\n" "\n" " //show the toolbar and window\n" " this._toolbar.show();\n" " this._window.show();\n" " }\n" "\n" " //callback function for 'activate' signal\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " //callback function for 'startup' signal\n" " _onStartup() {\n" " this._initMenus();\n" " this._buildUI();\n" " }\n" "\n" " //create the toolbar, its toolbuttons and their actions\n" " _createToolbar() {\n" "\n" " this._toolbar = new Gtk.Toolbar();\n" " this._toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n" "\n" " //create the \"New\" ToolButton and its SimpleAction.\n" " //Using actions allows you to add them to the app menu\n" " //without duplicating code.\n" " let newAction = new Gio.SimpleAction({ name: 'new'});\n" " newAction.connect('activate', () => { this._newCB(); });\n" " this.application.add_action(newAction);//note: this action is added to the app\n" "\n" " this._newButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n" " this._newButton.is_important = true;\n" " this._toolbar.add(this._newButton);\n" " this._newButton.show();\n" " this._newButton.action_name = \"app.new\";\n" "\n" " //create the \"Open\" ToolButton and its SimpleAction\n" " let openAction = new Gio.SimpleAction({ name: 'open'});\n" " openAction.connect('activate', () => { this._openCB(); });\n" " this.application.add_action(openAction);\n" "\n" " this._openButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n" " this._openButton.is_important = true;\n" " this._toolbar.add(this._openButton);\n" " this._openButton.show();\n" " this._openButton.action_name = \"app.open\";\n" "\n" " //create the \"Undo\" ToolButton and its SimpleAction\n" " let undoAction = new Gio.SimpleAction({ name: 'undo'});\n" " undoAction.connect('activate', () => { this._undoCB(); });\n" " this._window.add_action(undoAction);//note this action is added to the window\n" "\n" " this._undoButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n" " this._undoButton.is_important = true;\n" " this._toolbar.add(this._undoButton);\n" " this._undoButton.show();\n" " this._undoButton.action_name = \"win.undo\";\n" "\n" " //create the \"Fullscreen\" ToolButton and its SimpleAction\n" " let fullscreenToggleAction = new Gio.SimpleAction ({ name: 'fullscreenToggle' });\n" " fullscreenToggleAction.connect('activate', () => {\n" " this._fullscreenToggleCB();\n" " });\n" " this._window.add_action(fullscreenToggleAction);\n" "\n" " this._fullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n" " this._fullscreenButton.is_important = true;\n" " this._toolbar.add(this._fullscreenButton);\n" " this._fullscreenButton.show();\n" " this._fullscreenButton.action_name = \"win.fullscreenToggle\";\n" "\n" " //create the \"leaveFullscreen\" ToolButton, and set the action name to \"win.fullscreenToggle\"\n" " this._leaveFullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_LEAVE_FULLSCREEN);\n" " this._leaveFullscreenButton.is_important = true;\n" " this._toolbar.add(this._leaveFullscreenButton);\n" " this._leaveFullscreenButton.action_name = \"win.fullscreenToggle\";\n" " }\n" "\n" " _initMenus() {\n" " let menu = new Gio.Menu();\n" " menu.append(\"New\", 'app.new');\n" " menu.append(\"Open\", 'app.open');\n" " menu.append(\"Quit\", 'app.quit');\n" "\n" " this.application.set_app_menu(menu);\n" "\n" " let quitAction = new Gio.SimpleAction({name: 'quit' });\n" " quitAction.connect('activate', () => { this._window.destroy(); });\n" " this.application.add_action(quitAction);\n" " }\n" "\n" " _newCB() {\n" " print(\"You clicked 'New'.\");\n" " }\n" "\n" " _openCB() {\n" " print(\"You clicked 'Open'.\");\n" " }\n" "\n" " _undoCB() {\n" " print (\"You clicked 'Undo'.\");\n" " }\n" "\n" " _fullscreenToggleCB() {\n" " if ((this._window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ) {\n" " this._window.unfullscreen();\n" " this._leaveFullscreenButton.hide();\n" " this._fullscreenButton.show();\n" " } else {\n" " this._window.fullscreen();\n" " this._fullscreenButton.hide();\n" " this._leaveFullscreenButton.show();\n" " }\n" " }\n" "};\n" "\n" "//run the application\n" "let app = new Application();\n" "app.application.run(ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/toolbar.js.page:31 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Window" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/toolbar.js.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Toolbar" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/toolbar.js.page:33 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk.ToolButton" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/toolbar.js.page:34 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk " "Stock items" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/toolbar.js.page:35 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gdk.WindowState" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/toolbar.py.page:8 #, fuzzy #| msgid "Toolbar (Python)" msgctxt "text" msgid "Toolbar (Python)" msgstr "Barre d'outils (Python)" #. (itstool) path: info/desc #: C/toolbar.py.page:20 C/toolbar_builder.py.page:33 msgid "A bar of buttons and other widgets" msgstr "Une barre de boutons et autres éléments graphiques" #. (itstool) path: page/p #: C/toolbar.py.page:26 msgid "An example of toolbar with buttons (from stock icons)." msgstr "" "Un exemple de barre d'outils avec des boutons (à partir des icônes de la " "collection)." #. (itstool) path: section/code #: C/toolbar.py.page:33 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gdk\n" "from gi.repository import Gio\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n" " self.set_default_size(400, 200)\n" "\n" " # a grid to attach the toolbar\n" " grid = Gtk.Grid()\n" "\n" " # a toolbar created in the method create_toolbar (see below)\n" " toolbar = self.create_toolbar()\n" " # with extra horizontal space\n" " toolbar.set_hexpand(True)\n" " # show the toolbar\n" " toolbar.show()\n" "\n" " # attach the toolbar to the grid\n" " grid.attach(toolbar, 0, 0, 1, 1)\n" "\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" " # create the actions that control the window and connect their signal to a\n" " # callback method (see below):\n" "\n" " # undo\n" " undo_action = Gio.SimpleAction.new(\"undo\", None)\n" " undo_action.connect(\"activate\", self.undo_callback)\n" " self.add_action(undo_action)\n" "\n" " # fullscreen\n" " fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n" " fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n" " self.add_action(fullscreen_action)\n" "\n" " # a method to create the toolbar\n" " def create_toolbar(self):\n" " # a toolbar\n" " toolbar = Gtk.Toolbar()\n" "\n" " # which is the primary toolbar of the application\n" " toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n" "\n" " # create a button for the \"new\" action, with a stock image\n" " new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n" " # label is shown\n" " new_button.set_is_important(True)\n" " # insert the button at position in the toolbar\n" " toolbar.insert(new_button, 0)\n" " # show the button\n" " new_button.show()\n" " # set the name of the action associated with the button.\n" " # The action controls the application (app)\n" " new_button.set_action_name(\"app.new\")\n" "\n" " # button for the \"open\" action\n" " open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n" " open_button.set_is_important(True)\n" " toolbar.insert(open_button, 1)\n" " open_button.show()\n" " open_button.set_action_name(\"app.open\")\n" "\n" " # button for the \"undo\" action\n" " undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n" " undo_button.set_is_important(True)\n" " toolbar.insert(undo_button, 2)\n" " undo_button.show()\n" " undo_button.set_action_name(\"win.undo\")\n" "\n" " # button for the \"fullscreen/leave fullscreen\" action\n" " self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n" " Gtk.STOCK_FULLSCREEN)\n" " self.fullscreen_button.set_is_important(True)\n" " toolbar.insert(self.fullscreen_button, 3)\n" " self.fullscreen_button.set_action_name(\"win.fullscreen\")\n" "\n" " # return the complete toolbar\n" " return toolbar\n" "\n" " # callback method for undo\n" " def undo_callback(self, action, parameter):\n" " print(\"You clicked \\\"Undo\\\".\")\n" "\n" " # callback method for fullscreen / leave fullscreen\n" " def fullscreen_callback(self, action, parameter):\n" " # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n" " # is a bit flag\n" " is_fullscreen = self.get_window().get_state(\n" " ) & Gdk.WindowState.FULLSCREEN != 0\n" " if not is_fullscreen:\n" " self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n" " self.fullscreen()\n" " else:\n" " self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n" " self.unfullscreen()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" " # create the actions that control the window and connect their signal to a\n" " # callback method (see below):\n" "\n" " # new\n" " new_action = Gio.SimpleAction.new(\"new\", None)\n" " new_action.connect(\"activate\", self.new_callback)\n" " app.add_action(new_action)\n" "\n" " # open\n" " open_action = Gio.SimpleAction.new(\"open\", None)\n" " open_action.connect(\"activate\", self.open_callback)\n" " app.add_action(open_action)\n" "\n" " # callback method for new\n" " def new_callback(self, action, parameter):\n" " print(\"You clicked \\\"New\\\".\")\n" "\n" " # callback method for open\n" " def open_callback(self, action, parameter):\n" " print(\"You clicked \\\"Open\\\".\")\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/toolbar.py.page:37 msgid "Useful methods for a Toolbar widget" msgstr "Méthodes utiles pour un élément graphique barre d'outils" #. (itstool) path: section/p #: C/toolbar.py.page:38 msgid "" "In line 32 the signal \"activate\" from the action " "undo_action is connected to the callback function " "undo_callback() using action." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/toolbar.py.page:41 msgid "" "Use insert(tool_item, position) to insert the tool_item at position. If position is negative, the " "item is appended at the end of the toolbar." msgstr "" "La méthode insert(tool_item, position) insère l'élément " "tool_item à sa place position. Si position est négatif, l'élément est ajouté à la fin de la barre d'outils." #. (itstool) path: item/p #: C/toolbar.py.page:42 msgid "" "get_item_index(tool_item) retrieves the position of " "tool_item on the toolbar." msgstr "" "La méthode get_item_index(tool_item) récupère la position de " "l'élément tool_item dans la barre d'outils." #. (itstool) path: item/p #: C/toolbar.py.page:43 msgid "" "get_n_items() returns the number of items on the toolbar; " "get_nth_item(position) returns the item in position " "position." msgstr "" "La méthode get_n_items() renvoie le nombre d'éléments de la " "barre d'outils ; get_nth_item(position) renvoie l'élément placé " "à position." #. (itstool) path: item/p #: C/toolbar.py.page:44 msgid "" "If the toolbar does not have room for all the menu items, and " "set_show_arrow(True), the items that do not have room are shown " "through an overflow menu." msgstr "" "S'il n'y a pas assez de place dans la barre d'outils pour tous les éléments " "du menu, et si l'affichage de la flèche est sur set_show_arrow(True), les éléments en surplus sont affichés dans un menu de dépassement." #. (itstool) path: item/p #: C/toolbar.py.page:45 msgid "" "set_icon_size(icon_size) sets the size of icons in the toolbar; " "icon_size can be one of Gtk.IconSize.INVALID, Gtk." "IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, Gtk." "IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize.DIALOG. This should " "be used only for special-purpose toolbars, normal application toolbars " "should respect user preferences for the size of icons. " "unset_icon_size() unsets the preferences set with " "set_icon_size(icon_size), so that user preferences are used to " "determine the icon size." msgstr "" "La méthode set_icon_size(icon_size) définit la taille des " "icônes de la barre d'outils ; icon_size peut être : Gtk." "IconSize.INVALID, Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk." "IconSize.LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize." "DIALOG. Cette option ne doit être utilisée que pour des barres " "d'outils spéciales. Les barres d'outils des applications normales doivent " "respecter le choix des préférences des utilisateurs en ce qui concerne la " "taille des icônes. La fonction unset_icon_size() désactive les " "préférences définies avec set_icon_size(icon_size) afin que les " "préférences de l'utilisateur soient utilisées pour déterminer la taille des " "icônes." #. (itstool) path: item/p #: C/toolbar.py.page:46 msgid "" "set_style(style), where style is one of Gtk." "ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, Gtk." "ToolbarStyle.BOTH_HORIZ, sets if the toolbar shows only icons, only " "text, or both (vertically stacked or alongside each other). To let user " "preferences determine the toolbar style, and unset a toolbar style so set, " "use unset_style()." msgstr "" "La méthode set_style(style), où style peut être " "Gtk.ToolbarStyle.ICONS, Gtk.ToolbarStyle.TEXT, Gtk.ToolbarStyle.BOTH, " "Gtk.ToolbarStyle.BOTH_HORIZ, définit si la barre d'outils affiche " "seulement les icônes, seulement du texte ou les deux à la fois (placés " "verticalement ou les uns à côté des autres). Pour que les préférences " "utilisateur déterminent le style de la barre et annule un style de barre " "d'outils ainsi défini, utilisez unset_style()." #. (itstool) path: item/p #: C/toolbar.py.page:55 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkToolbar" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/toolbar.py.page:56 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkToolButton" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/toolbar.py.page:57 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkToolItem" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/toolbar.py.page:59 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkActionable" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/toolbar.py.page:61 C/toolbar_builder.py.page:199 msgid "" "Event Structures" msgstr "" #. (itstool) path: info/title #: C/toolbar.vala.page:8 #, fuzzy #| msgid "Toolbar (Vala)" msgctxt "text" msgid "Toolbar (Vala)" msgstr "Barre d'outils (Vala)" #. (itstool) path: page/code #: C/toolbar.vala.page:28 #, no-wrap msgid "" "/* This is the Window */\n" "class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* Instance variables belonging to the window */\n" "\tGtk.Toolbar toolbar;\n" "\tGtk.ToolButton new_button;\n" "\tGtk.ToolButton open_button;\n" "\tGtk.ToolButton undo_button;\n" "\tGtk.ToolButton fullscreen_button;\n" "\tGtk.ToolButton leave_fullscreen_button;\n" "\n" "\t/* Constructor */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Toolbar Example\");\n" "\n" "\t\tthis.set_default_size (400, 200);\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tthis.add (grid);\n" "\t\tgrid.show ();\n" "\n" "\t\tcreate_toolbar ();\n" "\t\ttoolbar.set_hexpand (true);\n" "\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n" "\t\ttoolbar.show ();\n" "\n" "\t\t/* create the \"undo\" window action action */\n" "\t\tvar undo_action = new SimpleAction (\"undo\", null);\n" "\t\tundo_action.activate.connect (undo_callback);\n" "\t\tthis.add_action (undo_action);\n" "\n" "\t\t/* create the \"fullscreen\" window action */\n" "\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n" "\t\tfullscreen_action.activate.connect (fullscreen_callback);\n" "\t\tthis.add_action (fullscreen_action);\n" "\t}\n" "\n" "\t/* This function creates the toolbar, its ToolButtons,\n" "\t * and assigns the actions names to the ToolButtons.*/\n" "\tvoid create_toolbar () {\n" "\t\ttoolbar = new Gtk.Toolbar ();\n" "\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n" "\n" "\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n" "\t\tnew_button.is_important = true; //decides whether to show the label\n" "\t\ttoolbar.add (new_button);\n" "\t\tnew_button.show ();\n" "\t\tnew_button.action_name = \"app.new\";\n" "\n" "\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n" "\t\topen_button.is_important = true;\n" "\t\ttoolbar.add (open_button);\n" "\t\topen_button.show ();\n" "\t\topen_button.action_name = \"app.open\";\n" "\n" "\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n" "\t\tundo_button.is_important = true;\n" "\t\ttoolbar.add (undo_button);\n" "\t\tundo_button.show ();\n" "\t\tundo_button.action_name = \"win.undo\";\n" "\n" "\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n" "\t\tfullscreen_button.is_important = true;\n" "\t\ttoolbar.add (fullscreen_button);\n" "\t\tfullscreen_button.show ();\n" "\t\tfullscreen_button.action_name = \"win.fullscreen\";\n" "\n" "\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n" ";\n" "\t\tleave_fullscreen_button.is_important = true;\n" "\t\ttoolbar.add (leave_fullscreen_button);\n" "\n" "\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n" "\t}\n" "\n" "\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n" "\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n" "\t}\n" "\n" "\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n" "\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n" "\t\t\tthis.unfullscreen ();\n" "\t\t\tleave_fullscreen_button.hide ();\n" "\t\t\tfullscreen_button.show ();\n" "\t\t}\n" "\t\telse {\n" "\t\t\tthis.fullscreen ();\n" "\t\t\tfullscreen_button.hide ();\n" "\t\t\tleave_fullscreen_button.show ();\n" "\t\t}\n" "\t}\n" "}\n" "\n" "/* This is the application */\n" "class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\t/* Create the \"new\" action and add it to the app*/\n" "\t\tvar new_action = new SimpleAction (\"new\", null);\n" "\t\tnew_action.activate.connect (new_callback);\n" "\t\tthis.add_action (new_action);\n" "\n" "\t\t/* Create the \"open\" action, and add it to the app */\n" "\t\tvar open_action = new SimpleAction (\"open\", null);\n" "\t\topen_action.activate.connect (open_callback);\n" "\t\tthis.add_action (open_action);\n" "\n" "\t\t/* You could also add the action to the app menu\n" "\t\t * if you wanted to.\n" "\t\t */\n" "\t\t//var menu = new Menu ();\n" "\t\t//menu.append (\"New\", \"app.new\");\n" "\t\t//this.app_menu = menu;\n" "\t}\n" "\n" "\tvoid new_callback (SimpleAction action, Variant? parameter) {\n" "\t\tprint (\"You clicked \\\"New\\\".\\n\");\n" "\t}\n" "\n" "\tvoid open_callback (SimpleAction action, Variant? parameter) {\n" "\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n" "\t}\n" "}\n" "\n" "/* The main function creates the application and runs it. */\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/toolbar.vala.page:34 C/toolbar_builder.vala.page:151 #: C/tooltip.vala.page:40 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Toolbar" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/toolbar.vala.page:35 C/toolbar_builder.vala.page:152 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk." "Toolbutton" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/toolbar.vala.page:36 C/toolbar_builder.vala.page:153 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Stock" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/toolbar_builder.py.page:8 #, fuzzy #| msgid "Toolbar created using Glade (Python)" msgctxt "text" msgid "Toolbar created using Glade (Python)" msgstr "Barre d'outils créée avec Glade (Python)" #. (itstool) path: page/title #: C/toolbar_builder.py.page:36 C/toolbar_builder.vala.page:23 msgid "Toolbar created using Glade" msgstr "Barre d'outils créée avec Glade" #. (itstool) path: page/p #: C/toolbar_builder.py.page:39 msgid "" "This example is similar to , except we use Glade " "to create the toolbar in an XML .ui file." msgstr "" "Cet exemple est identique à , sauf que nous " "utilisons Glade pour créer la barre d'outils dans un fichier XML .ui." #. (itstool) path: section/title #: C/toolbar_builder.py.page:44 msgid "Creating the toolbar with Glade" msgstr "Création de la barre d'outils avec Glade" #. (itstool) path: section/p #. (itstool) path: page/p #: C/toolbar_builder.py.page:45 C/toolbar_builder.vala.page:28 msgid "" "To create the toolbar using the Glade " "Interface Designer:" msgstr "" "Pour créer la barre d'outils avec Glade :" #. (itstool) path: item/p #: C/toolbar_builder.py.page:49 C/toolbar_builder.vala.page:32 msgid "Open Glade, and save the file as toolbar_builder.ui" msgstr "" "ouvrez Glade et enregistrez le fichier sous toolbar_builder.ui" #. (itstool) path: p/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/toolbar_builder.py.page:50 C/toolbar_builder.vala.page:33 #, fuzzy #| msgid "@@image: 'media/glade_ui.png'; md5=baea74fe213bc12ea934f64f6977215a" msgctxt "_" msgid "" "external ref='media/glade_ui.png' md5='baea74fe213bc12ea934f64f6977215a'" msgstr "@@image: 'media/glade_ui.png'; md5=baea74fe213bc12ea934f64f6977215a" #. (itstool) path: item/p #: C/toolbar_builder.py.page:50 C/toolbar_builder.vala.page:33 msgid "" " Screenshot " "of Glade ui " msgstr "" # Bruno : c'est hélas bien widget dans glade #. (itstool) path: item/p #: C/toolbar_builder.py.page:55 C/toolbar_builder.vala.page:38 msgid "" "Under Containers on the left hand side, right click on the " "toolbar icon and select Add widget as toplevel." msgstr "" "Au-dessous de Conteneurs, dans la partie gauche, faites un clic " "droit sur une icône de la barre d'outils et sélectionnez Ajouter un " "widget comme premier niveau." #. (itstool) path: p/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/toolbar_builder.py.page:56 C/toolbar_builder.vala.page:39 #, fuzzy #| msgid "" #| "@@image: 'media/glade_select_toolbar.png'; " #| "md5=f7b5b224050b2e387eb04362fc99df00" msgctxt "_" msgid "" "external ref='media/glade_select_toolbar.png' " "md5='f7b5b224050b2e387eb04362fc99df00'" msgstr "" "@@image: 'media/glade_select_toolbar.png'; " "md5=f7b5b224050b2e387eb04362fc99df00" #. (itstool) path: item/p #: C/toolbar_builder.py.page:56 C/toolbar_builder.vala.page:39 msgid "" " Screenshot of " "toolbar icon in Glade ui " msgstr "" #. (itstool) path: item/p #: C/toolbar_builder.py.page:61 C/toolbar_builder.vala.page:44 msgid "" "Under the General tab on the bottom right, change the Name to toolbar and Show Arrow to No." msgstr "" "Dans l'onglet Général, dans la partie inférieure droite, modifiez " "le Nom en toolbar et mettez l'option Afficher " "la flèche à Non." #. (itstool) path: p/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/toolbar_builder.py.page:62 C/toolbar_builder.vala.page:45 #, fuzzy #| msgid "" #| "@@image: 'media/glade_toolbar_general.png'; " #| "md5=e31daba6e8a3e526aca89d5f1622edaa" msgctxt "_" msgid "" "external ref='media/glade_toolbar_general.png' " "md5='e31daba6e8a3e526aca89d5f1622edaa'" msgstr "" "@@image: 'media/glade_toolbar_general.png'; " "md5=e31daba6e8a3e526aca89d5f1622edaa" #. (itstool) path: item/p #: C/toolbar_builder.py.page:62 C/toolbar_builder.vala.page:45 msgid "" " Screenshot of " "General tab " msgstr "" #. (itstool) path: item/p #: C/toolbar_builder.py.page:67 C/toolbar_builder.vala.page:50 msgid "" "Under the Common tab, set Horizontal Expand to " "Yes." msgstr "" "Dans l'onglet Commun, définissez Extension horizontaleà Oui." #. (itstool) path: p/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/toolbar_builder.py.page:68 C/toolbar_builder.vala.page:51 #, fuzzy #| msgid "" #| "@@image: 'media/glade_toolbar_common.png'; " #| "md5=d5ec6cc0218ca98e195dbd033feb9ac5" msgctxt "_" msgid "" "external ref='media/glade_toolbar_common.png' " "md5='d5ec6cc0218ca98e195dbd033feb9ac5'" msgstr "" "@@image: 'media/glade_toolbar_common.png'; " "md5=d5ec6cc0218ca98e195dbd033feb9ac5" #. (itstool) path: item/p #: C/toolbar_builder.py.page:68 C/toolbar_builder.vala.page:51 msgid "" " Screenshot of " "Common tab " msgstr "" #. (itstool) path: item/p #: C/toolbar_builder.py.page:73 C/toolbar_builder.vala.page:56 msgid "" "Right click on the toolbar in the top right and select Edit. The " "Tool Bar Editor window will appear." msgstr "" "Faites un clic droit sur « toolbar » dans la partie en haut à droite et " "sélectionnez Éditer. La boîte de dialogue Éditeur de barre " "d'outils s'affiche." #. (itstool) path: p/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/toolbar_builder.py.page:74 C/toolbar_builder.vala.page:57 #, fuzzy #| msgid "" #| "@@image: 'media/glade_toolbar_edit.png'; " #| "md5=feb1e2b7040d24a4d030f94cf07c81fd" msgctxt "_" msgid "" "external ref='media/glade_toolbar_edit.png' " "md5='feb1e2b7040d24a4d030f94cf07c81fd'" msgstr "" "@@image: 'media/glade_toolbar_edit.png'; md5=feb1e2b7040d24a4d030f94cf07c81fd" #. (itstool) path: item/p #: C/toolbar_builder.py.page:74 C/toolbar_builder.vala.page:57 #, fuzzy #| msgid "Screenshot of where to right click to edit toolbar." msgid "" " Screenshot of " "where to right click to edit toolbar. " msgstr "" "Capture d'écran indiquant où faire un clic-droit pour éditer la barre " "d'outils." #. (itstool) path: item/p #: C/toolbar_builder.py.page:79 C/toolbar_builder.vala.page:62 msgid "" "We want to add 5 ToolButtons: New, Open, Undo, Fullscreen and Leave " "Fullscreen. First, we will add the New ToolButton." msgstr "" "Nous voulons ajouter 5 ToolButtons (boutons) : « Nouveau », « Ouvrir », " "« Mode plein écran » et « Quitter le mode plein écran ». Ajoutons d'abord le " "ToolButton « Nouveau »." #. (itstool) path: item/p #: C/toolbar_builder.py.page:82 C/toolbar_builder.vala.page:65 msgid "Under Hierarchy tab, click Add." msgstr "Dans l'onglet Hiérarchie, cliquez sur Ajouter." #. (itstool) path: item/p #: C/toolbar_builder.py.page:83 C/toolbar_builder.vala.page:66 msgid "Change the name of the ToolItem to new_button." msgstr "" "Modifiez le nom de l'élément outil (ToolItem) en new_button." #. (itstool) path: item/p #: C/toolbar_builder.py.page:84 C/toolbar_builder.vala.page:67 msgid "" "Scroll down and set Is important to Yes. This will " "cause the label of the ToolButton to be shown, when you view the toolbar." msgstr "" "Faites défiler vers le bas et définissez Est important à " "Oui. Ceci provoque l'affichage de l'étiquette du ToolButton quand " "vous affichez la barre d'outils." #. (itstool) path: item/p #: C/toolbar_builder.py.page:85 C/toolbar_builder.vala.page:68 msgid "Enter the action name: app.new." msgstr "Saisissez le nom de l'action : app.new." #. (itstool) path: item/p #: C/toolbar_builder.py.page:86 C/toolbar_builder.vala.page:69 msgid "Change the Label to New." msgstr "" "Modifiez le champ Étiquette en New (Nouveau)." #. (itstool) path: item/p #: C/toolbar_builder.py.page:87 C/toolbar_builder.vala.page:70 msgid "" "Select the New Stock Id from the drop down menu, or type " "gtk-new." msgstr "" "Dans le menu déroulant « ID prédéfini », sélectionnez Nouveau, ou " "saisissez gtk-new." #. (itstool) path: item/p #: C/toolbar_builder.py.page:89 C/toolbar_builder.vala.page:72 msgid "" "Repeat the above steps for the remaining ToolButtons, with the following " "properties:" msgstr "" "Répétez les étapes ci-dessus pour tous les autres ToolButtons en leur " "attribuant les propriétés suivantes :" #. (itstool) path: td/p #: C/toolbar_builder.py.page:96 C/toolbar_builder.vala.page:79 msgid "Is important" msgstr "Est important" #. (itstool) path: td/p #: C/toolbar_builder.py.page:97 C/toolbar_builder.vala.page:80 msgid "Action name" msgstr "Nom de l'action" #. (itstool) path: td/p #: C/toolbar_builder.py.page:99 C/toolbar_builder.vala.page:82 msgid "Stock Id" msgstr "ID prédéfini" #. (itstool) path: td/p #: C/toolbar_builder.py.page:104 C/toolbar_builder.vala.page:87 msgid "open_button" msgstr "open_button" #. (itstool) path: td/p #: C/toolbar_builder.py.page:105 C/toolbar_builder.py.page:112 #: C/toolbar_builder.py.page:119 C/toolbar_builder.py.page:126 #: C/toolbar_builder.vala.page:88 C/toolbar_builder.vala.page:95 #: C/toolbar_builder.vala.page:102 C/toolbar_builder.vala.page:109 msgid "Yes" msgstr "Oui" #. (itstool) path: td/p #: C/toolbar_builder.py.page:106 C/toolbar_builder.vala.page:89 msgid "app.open" msgstr "app.open" #. (itstool) path: td/p #: C/toolbar_builder.py.page:107 C/toolbar_builder.vala.page:90 msgid "Open" msgstr "Open (Ouvrir)" #. (itstool) path: td/p #: C/toolbar_builder.py.page:108 C/toolbar_builder.vala.page:91 msgid "gtk-open" msgstr "gtk-open" #. (itstool) path: td/p #: C/toolbar_builder.py.page:111 C/toolbar_builder.vala.page:94 msgid "undo_button" msgstr "undo_button" #. (itstool) path: td/p #: C/toolbar_builder.py.page:113 C/toolbar_builder.vala.page:96 msgid "win.undo" msgstr "win.undo" #. (itstool) path: td/p #: C/toolbar_builder.py.page:114 C/toolbar_builder.vala.page:97 msgid "Undo" msgstr "Undo (Annuler)" #. (itstool) path: td/p #: C/toolbar_builder.py.page:115 C/toolbar_builder.vala.page:98 msgid "gtk-undo" msgstr "gtk-undo" #. (itstool) path: td/p #: C/toolbar_builder.py.page:118 C/toolbar_builder.vala.page:101 msgid "fullscreen_button" msgstr "fullscreen_button" #. (itstool) path: td/p #: C/toolbar_builder.py.page:120 C/toolbar_builder.py.page:127 #: C/toolbar_builder.vala.page:103 C/toolbar_builder.vala.page:110 msgid "win.fullscreen" msgstr "win.fullscreen" #. (itstool) path: td/p #: C/toolbar_builder.py.page:121 C/toolbar_builder.vala.page:104 msgid "Fullscreen" msgstr "Fullscreen (Mode plein écran)" #. (itstool) path: td/p #: C/toolbar_builder.py.page:122 C/toolbar_builder.vala.page:105 msgid "gtk-fullscreen" msgstr "gtk-fullscreen" #. (itstool) path: td/p #: C/toolbar_builder.py.page:125 C/toolbar_builder.vala.page:108 msgid "leave_fullscreen_button" msgstr "leave_fullscreen_button" #. (itstool) path: td/p #: C/toolbar_builder.py.page:128 C/toolbar_builder.vala.page:111 msgid "Leave Fullscreen" msgstr "Leave Fullscreen (Quitter le mode plein écran)" #. (itstool) path: td/p #: C/toolbar_builder.py.page:129 C/toolbar_builder.vala.page:112 msgid "gtk-leave-fullscreen" msgstr "gtk-leave-fullscreen" #. (itstool) path: item/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/toolbar_builder.py.page:133 C/toolbar_builder.vala.page:116 #, fuzzy #| msgid "" #| "@@image: 'media/glade_toolbar_editor.png'; " #| "md5=8af65241e5ca47d5494a7b36640e6f1c" msgctxt "_" msgid "" "external ref='media/glade_toolbar_editor.png' " "md5='8af65241e5ca47d5494a7b36640e6f1c'" msgstr "" "@@image: 'media/glade_toolbar_editor.png'; " "md5=8af65241e5ca47d5494a7b36640e6f1c" #. (itstool) path: item/p #: C/toolbar_builder.py.page:138 C/toolbar_builder.vala.page:121 msgid "Close the Tool Bar Editor." msgstr "Fermez l'Éditeur de barre d'outils." #. (itstool) path: item/p #: C/toolbar_builder.py.page:141 msgid "" "When our program will first start, we do not want the Leave Fullscreen ToolButton to be visible, since the application will not be in " "fullscreen mode. You can set this in the Common tab, by clicking " "the Visible property to No. The ToolButton will still " "appear in the interface designer, but will behave correctly when the file is " "loaded into your program code. Note that the method show_all() " "would override this setting - so in the code we have to use show() separately on all the elements." msgstr "" "Au lancement du programme, nous ne voulons pas que le ToolButton " "Quitter le mode plein écran s'affiche, car nous ne sommes pas en " "mode plein écran. Dans l'onglet Commun, définissez la propriété " "Visible sur Non. Le ToolButton sera toujours présent " "dans le concepteur d'interface, mais se comportera comme souhaité quand le " "fichier sera chargé dans le code de votre programme. Notez que la méthode " "show_all() ne prend pas en compte ce réglage, de sorte qu'il " "nous faut utiliser show() séparément pour chaque élément." #. (itstool) path: p/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/toolbar_builder.py.page:142 C/toolbar_builder.vala.page:125 #, fuzzy #| msgid "" #| "@@image: 'media/glade_visible_no.png'; " #| "md5=dc6c025aa825f4d772fbd283d6330026" msgctxt "_" msgid "" "external ref='media/glade_visible_no.png' " "md5='dc6c025aa825f4d772fbd283d6330026'" msgstr "" "@@image: 'media/glade_visible_no.png'; md5=dc6c025aa825f4d772fbd283d6330026" #. (itstool) path: item/p #: C/toolbar_builder.py.page:142 C/toolbar_builder.vala.page:125 msgid "" " Setting the " "visible property to No " msgstr "" #. (itstool) path: item/p #: C/toolbar_builder.py.page:147 C/toolbar_builder.vala.page:130 msgid "Save your work, and close Glade." msgstr "Enregistrez votre travail et quittez Glade." #. (itstool) path: item/p #: C/toolbar_builder.py.page:150 C/toolbar_builder.vala.page:133 msgid "" "The XML file created by Glade is shown below. This is the description of the " "toolbar. At the time of this writing, the option to add the class Gtk." "STYLE_CLASS_PRIMARY_TOOLBAR in the Glade Interface did not exist. We can " "manually add this to the XML file. To do this, add the following XML code at " "line 9 of toolbar_builder.ui:" msgstr "" "Vous pouvez voir le fichier XML créé par Glade ci-dessous. C'est la " "description de la barre d'outils. Au moment de la rédaction de ces lignes, " "l'option pour ajouter la classe Gtk.STYLE_CLASS_PRIMARY_TOOLBAR dans " "l'interface de Glade n'existait pas. Mais nous pouvons le faire " "manuellement. Pour cela, ajoutez le code XML suivant à la ligne 9 du fichier " "toolbar_builder.ui :" #. (itstool) path: item/code #: C/toolbar_builder.py.page:151 C/toolbar_builder.vala.page:134 #, no-wrap msgid "" "\n" " <style>\n" " <class name=\"primary-toolbar\"/>\n" " </style>\n" " " msgstr "" #. (itstool) path: item/p #: C/toolbar_builder.py.page:156 C/toolbar_builder.vala.page:139 msgid "" "If you do not add this, the program will still work fine. The resulting " "toolbar will however look slightly different then the screenshot at the top " "of this page." msgstr "" "Le programme fonctionnera malgré tout correctement si vous ne l'ajoutez pas, " "mais la barre d'outils que vous obtiendrez sera légèrement différente de " "celle de la capture d'écran en haut de cette page." #. (itstool) path: section/code #. (itstool) path: page/code #: C/toolbar_builder.py.page:159 C/toolbar_builder.vala.page:142 #, no-wrap msgid "" "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<interface>\n" " <!-- interface-requires gtk+ 3.0 -->\n" " <object class=\"GtkToolbar\" id=\"toolbar\">\n" " <property name=\"visible\">True</property>\n" " <property name=\"can_focus\">False</property>\n" " <property name=\"hexpand\">True</property>\n" " <property name=\"show_arrow\">False</property>\n" " <child>\n" " <object class=\"GtkToolButton\" id=\"new_button\">\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"visible\">True</property>\n" " <property name=\"can_focus\">False</property>\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"is_important\">True</property>\n" " <property name=\"action_name\">app.new</property>\n" " <property name=\"label\" translatable=\"yes\">New</property>\n" " <property name=\"use_underline\">True</property>\n" " <property name=\"stock_id\">gtk-new</property>\n" " </object>\n" " <packing>\n" " <property name=\"expand\">False</property>\n" " <property name=\"homogeneous\">True</property>\n" " </packing>\n" " </child>\n" " <child>\n" " <object class=\"GtkToolButton\" id=\"open_button\">\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"visible\">True</property>\n" " <property name=\"can_focus\">False</property>\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"is_important\">True</property>\n" " <property name=\"action_name\">app.open</property>\n" " <property name=\"label\" translatable=\"yes\">Open</property>\n" " <property name=\"use_underline\">True</property>\n" " <property name=\"stock_id\">gtk-open</property>\n" " </object>\n" " <packing>\n" " <property name=\"expand\">False</property>\n" " <property name=\"homogeneous\">True</property>\n" " </packing>\n" " </child>\n" " <child>\n" " <object class=\"GtkToolButton\" id=\"undo_button\">\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"visible\">True</property>\n" " <property name=\"can_focus\">False</property>\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"is_important\">True</property>\n" " <property name=\"action_name\">win.undo</property>\n" " <property name=\"label\" translatable=\"yes\">Undo</property>\n" " <property name=\"use_underline\">True</property>\n" " <property name=\"stock_id\">gtk-undo</property>\n" " </object>\n" " <packing>\n" " <property name=\"expand\">False</property>\n" " <property name=\"homogeneous\">True</property>\n" " </packing>\n" " </child>\n" " <child>\n" " <object class=\"GtkToolButton\" id=\"fullscreen_button\">\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"visible\">True</property>\n" " <property name=\"can_focus\">False</property>\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"is_important\">True</property>\n" " <property name=\"action_name\">win.fullscreen</property>\n" " <property name=\"label\" translatable=\"yes\">Fullscreen</property>\n" " <property name=\"use_underline\">True</property>\n" " <property name=\"stock_id\">gtk-fullscreen</property>\n" " </object>\n" " <packing>\n" " <property name=\"expand\">False</property>\n" " <property name=\"homogeneous\">True</property>\n" " </packing>\n" " </child>\n" " <child>\n" " <object class=\"GtkToolButton\" id=\"leave_fullscreen_button\">\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"can_focus\">False</property>\n" " <property name=\"use_action_appearance\">False</property>\n" " <property name=\"is_important\">True</property>\n" " <property name=\"action_name\">win.fullscreen</property>\n" " <property name=\"label\" translatable=\"yes\">Leave Fullscreen</property>\n" " <property name=\"use_underline\">True</property>\n" " <property name=\"stock_id\">gtk-leave-fullscreen</property>\n" " </object>\n" " <packing>\n" " <property name=\"expand\">False</property>\n" " <property name=\"homogeneous\">True</property>\n" " </packing>\n" " </child>\n" " </object>\n" "</interface>\n" msgstr "" #. (itstool) path: section/p #. (itstool) path: page/p #: C/toolbar_builder.py.page:166 C/toolbar_builder.vala.page:144 msgid "" "We now create the code below, which adds the toolbar from the file we just " "created." msgstr "" "Le code ci-dessous ajoute la barre d'outils du fichier que nous venons de " "finir." #. (itstool) path: section/code #: C/toolbar_builder.py.page:167 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gdk\n" "from gi.repository import Gio\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Toolbar Example\", application=app)\n" " self.set_default_size(400, 200)\n" "\n" " # a grid to attach the toolbar (see below)\n" " grid = Gtk.Grid()\n" " self.add(grid)\n" " # we have to show the grid (and therefore the toolbar) with show(),\n" " # as show_all() would show also the buttons in the toolbar that we want to\n" " # be hidden (such as the leave_fullscreen button)\n" " grid.show()\n" "\n" " # a builder to add the UI designed with Glade to the grid:\n" " builder = Gtk.Builder()\n" " # get the file (if it is there)\n" " try:\n" " builder.add_from_file(\"toolbar_builder.ui\")\n" " except:\n" " print(\"file not found\")\n" " sys.exit()\n" " # and attach it to the grid\n" " grid.attach(builder.get_object(\"toolbar\"), 0, 0, 1, 1)\n" "\n" " # two buttons that will be used later in a method\n" " self.fullscreen_button = builder.get_object(\"fullscreen_button\")\n" " self.leave_fullscreen_button = builder.get_object(\n" " \"leave_fullscreen_button\")\n" "\n" " # create the actions that control the window, connect their signal to a\n" " # callback method (see below), add the action to the window:\n" "\n" " # undo\n" " undo_action = Gio.SimpleAction.new(\"undo\", None)\n" " undo_action.connect(\"activate\", self.undo_callback)\n" " self.add_action(undo_action)\n" "\n" " # and fullscreen\n" " fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n" " fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n" " self.add_action(fullscreen_action)\n" "\n" " # callback for undo\n" " def undo_callback(self, action, parameter):\n" " print(\"You clicked \\\"Undo\\\".\")\n" "\n" " # callback for fullscreen\n" " def fullscreen_callback(self, action, parameter):\n" " # check if the state is the same as Gdk.WindowState.FULLSCREEN, which\n" " # is a bit flag\n" " is_fullscreen = self.get_window().get_state(\n" " ) & Gdk.WindowState.FULLSCREEN != 0\n" " if is_fullscreen:\n" " self.unfullscreen()\n" " self.leave_fullscreen_button.hide()\n" " self.fullscreen_button.show()\n" " else:\n" " self.fullscreen()\n" " self.fullscreen_button.hide()\n" " self.leave_fullscreen_button.show()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " # show the window - with show() not show_all() because that would show also\n" " # the leave_fullscreen button\n" " win.show()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" " # actions that control the application: create, connect their signal to a\n" " # callback method (see below), add the action to the application\n" "\n" " # new\n" " new_action = Gio.SimpleAction.new(\"new\", None)\n" " new_action.connect(\"activate\", self.new_callback)\n" " app.add_action(new_action)\n" "\n" " # open\n" " open_action = Gio.SimpleAction.new(\"open\", None)\n" " open_action.connect(\"activate\", self.open_callback)\n" " app.add_action(open_action)\n" "\n" " # callback for new\n" " def new_callback(self, action, parameter):\n" " print(\"You clicked \\\"New\\\".\")\n" "\n" " # callback for open\n" " def open_callback(self, action, parameter):\n" " print(\"You clicked \\\"Open\\\".\")\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/toolbar_builder.py.page:172 msgid "Useful methods for Gtk.Builder" msgstr "Méthodes utiles pour Gtk.Builder" #. (itstool) path: section/p #: C/toolbar_builder.py.page:173 msgid "" "For the useful methods for a Toolbar widget, see " msgstr "" "Consultez pour connaître les méthodes utiles à " "un élément graphique de barre d'outils" #. (itstool) path: section/p #: C/toolbar_builder.py.page:175 msgid "Gtk.Builder builds an interface from an XML UI definition." msgstr "" "Gtk.Builder construit une interface à partir d'une définition XML d'une " "interface utilisateur." #. (itstool) path: item/p #: C/toolbar_builder.py.page:178 msgid "" "add_from_file(filename) loads and parses the given file and " "merges it with the current contents of the Gtk.Builder." msgstr "" "La méthode add_from_file(nomdufichier) charge et analyse le " "fichier donné et le fusionne avec le contenu actuel de Gtk.Builder." #. (itstool) path: item/p #: C/toolbar_builder.py.page:179 msgid "" "add_from_string(string) parses the given string and merges it " "with the current contents of the Gtk.Builder." msgstr "" "La méthode add_from_string(chaîne) charge et analyse la chaîne " "de caractères donnée et la fusionne avec le contenu actuel de Gtk.Builder." #. (itstool) path: item/p #: C/toolbar_builder.py.page:180 msgid "" "add_objects_from_file(filename, object_ids) is the same as " "add_from_file(), but it loads only the objects with the ids " "given in the object_ids list." msgstr "" "La méthode add_objects_from_file(nomdufichier, object_ids) est " "identique à add_from_file(), mais elle ne charge que les objets " "qui possèdent les identifiants donnés par la liste object_id." #. (itstool) path: item/p #: C/toolbar_builder.py.page:181 #, fuzzy #| msgid "" #| "add_objects_from_string(filename, object_ids) is the same as " #| "add_from_string(), but it loads only the objects with the " #| "ids given in the object_ids list." msgid "" "add_objects_from_string(string, object_ids) is the same as " "add_from_string(), but it loads only the objects with the ids " "given in the object_ids list." msgstr "" "La méthode add_objects_from_string(nomdufichier, object_ids) " "est identique à add_from_string(), mais elle ne charge que les " "objets avec les identifiants donnés par la liste object_id." #. (itstool) path: item/p #: C/toolbar_builder.py.page:182 msgid "" "get_object(object_id) retrieves the widget with the id " "object_id from the loaded objects in the builder." msgstr "" "La méthode get_object(object_id) récupère l'élément graphique " "possédant l'identifiant object_id à partir des objets chargés " "dans le constructeur." #. (itstool) path: item/p #: C/toolbar_builder.py.page:183 msgid "get_objects() returns all loaded objects." msgstr "La méthode get_objects() renvoie tous les objets chargés." #. (itstool) path: item/p #: C/toolbar_builder.py.page:184 #, fuzzy #| msgid "" #| "connect_signals(handler_object) connects the signals to the " #| "methods given in the handler_object. This can be any object " #| "which contains keys or attributes that are called like the signal handler " #| "names given in the interface description, e.g. a class or a dict." msgid "" "connect_signals(handler_object) connects the signals to the " "methods given in the handler_object. This can be any object " "which contains keys or attributes that are called like the signal handler " "names given in the interface description, e.g. a class or a dict. In line 39 " "the signal \"activate\" from the action undo_action is connected to the callback function undo_callback() " "using action.connect(signal, callback " "function). See for a more " "detailed explanation." msgstr "" "La méthode connect_signals(handler_object) connecte les signaux " "aux méthodes fournies par le gestionnaire handler_object. Ce " "peut être n'importe quel objet contenant des clés ou des attributs qui sont " "appelés comme les noms des gestionnaires de signaux dans la description de " "l'interface, par ex. une classe ou un dictionnaire." #. (itstool) path: info/title #: C/toolbar_builder.vala.page:8 #, fuzzy #| msgid "Toolbar created using Glade (Vala)" msgctxt "text" msgid "Toolbar created using Glade (Vala)" msgstr "Barre d'outils créée avec Glade (Vala)" #. (itstool) path: page/p #: C/toolbar_builder.vala.page:26 msgid "" "This example is similar to , except we use " "Glade to create the toolbar in an XML ui file." msgstr "" "Cet exemple est identique à , sauf que nous " "utilisons Glade pour créer la barre d'outils dans un fichier XML .ui." #. (itstool) path: item/p #: C/toolbar_builder.vala.page:124 msgid "" "When our program will first start, we don't want the Leave Fullscreen ToolButton to be visible, since the application will not be in " "fullscreen mode. You can set this in the Common tab, by clicking " "the Visible property to No. The ToolButton will still " "appear in the interface designer, but will behave correctly when the file is " "loaded into your program code." msgstr "" "Au lancement du programme, nous ne voulons pas que le ToolButton " "Quitter le mode plein écran s'affiche, car nous ne sommes pas en " "mode plein écran. Dans l'onglet Commun, définissez la propriété " "Visible sur Non. Le ToolButton sera toujours présent " "dans le concepteur d'interface, mais se comportera comme souhaité quand le " "fichier sera chargé dans le code de votre programme." #. (itstool) path: page/code #: C/toolbar_builder.vala.page:145 #, no-wrap msgid "" "/* This is the Window */\n" "class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* Declare these two ToolButtons, as we will get them\n" "\t * from the ui file (see lines 32 and 33), so we can\n" "\t * hide() and show() them as needed.*/\n" "\tGtk.ToolButton fullscreen_button;\n" "\tGtk.ToolButton leave_fullscreen_button;\n" "\n" "\t/* Constructor */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Toolbar Example\");\n" "\n" "\t\tthis.set_default_size (400, 200);\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tthis.add (grid);\n" "\t\tgrid.show ();\n" "\n" "\t\t/* add the toolbar from the ui file */\n" "\t\tvar builder = new Gtk.Builder ();\n" "\t\ttry {\n" "\t\t\tbuilder.add_from_file (\"toolbar_builder.ui\");\n" "\t\t}\n" "\t\t/* Handle the exception */\n" "\t\tcatch (Error e) {\n" "\t\t\terror (\"Unable to load file: %s\", e.message);\n" "\t\t}\n" "\n" "\t\tgrid.attach (builder.get_object (\"toolbar\") as Gtk.Toolbar, 0, 0, 1, 1);\n" "\n" "\t\t/* get these objects from the ui file so we can toggle between them */\n" "\t\tfullscreen_button = builder.get_object (\"fullscreen_button\") as Gtk.ToolButton;\n" "\t\tleave_fullscreen_button = builder.get_object (\"leave_fullscreen_button\") as Gtk.ToolButton;\n" "\n" "\t\t/* create the \"undo\" window action action */\n" "\t\tvar undo_action = new SimpleAction (\"undo\", null);\n" "\t\tundo_action.activate.connect (undo_callback);\n" "\t\tthis.add_action (undo_action);\n" "\n" "\t\t/* create the \"fullscreen\" window action */\n" "\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n" "\t\tfullscreen_action.activate.connect (fullscreen_callback);\n" "\t\tthis.add_action (fullscreen_action);\n" "\t}\n" "\n" "\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n" "\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n" "\t}\n" "\n" "\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n" "\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n" "\t\t\tthis.unfullscreen ();\n" "\t\t\tleave_fullscreen_button.hide ();\n" "\t\t\tfullscreen_button.show ();\n" "\t\t}\n" "\t\telse {\n" "\t\t\tthis.fullscreen ();\n" "\t\t\tfullscreen_button.hide ();\n" "\t\t\tleave_fullscreen_button.show ();\n" "\t\t}\n" "\t}\n" "}\n" "\n" "/* This is the application */\n" "class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\t/* Create the \"new\" action and add it to the app*/\n" "\t\tvar new_action = new SimpleAction (\"new\", null);\n" "\t\tnew_action.activate.connect (new_callback);\n" "\t\tthis.add_action (new_action);\n" "\n" "\t\t/* Create the \"open\" action, and add it to the app */\n" "\t\tvar open_action = new SimpleAction (\"open\", null);\n" "\t\topen_action.activate.connect (open_callback);\n" "\t\tthis.add_action (open_action);\n" "\n" "\t\t/* You could also add the action to the app menu\n" "\t\t * if you wanted to.\n" "\t\t */\n" "\t\t//var menu = new Menu ();\n" "\t\t//menu.append (\"New\", \"app.new\");\n" "\t\t//this.app_menu = menu;\n" "\t}\n" "\n" "\tvoid new_callback (SimpleAction action, Variant? parameter) {\n" "\t\tprint (\"You clicked \\\"New\\\".\\n\");\n" "\t}\n" "\n" "\tvoid open_callback (SimpleAction action, Variant? parameter) {\n" "\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n" "\t}\n" "}\n" "\n" "/* The main function creates the application and runs it. */\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: info/title #: C/tooltip.c.page:8 #, fuzzy #| msgid "Tooltip" msgctxt "text" msgid "Tooltip (C)" msgstr "Infobulle" #. (itstool) path: info/desc #: C/tooltip.c.page:19 C/tooltip.js.page:19 C/tooltip.py.page:20 #: C/tooltip.vala.page:19 msgid "Add tips to your widgets" msgstr "Ajouter des infobulles à vos éléments graphiques" #. (itstool) path: page/title #: C/tooltip.c.page:22 C/tooltip.js.page:22 C/tooltip.py.page:23 #: C/tooltip.vala.page:22 msgid "Tooltip" msgstr "Infobulle" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/tooltip.c.page:23 C/tooltip.js.page:23 C/tooltip.py.page:24 #: C/tooltip.vala.page:23 msgctxt "_" msgid "external ref='media/tooltip.png' md5='41e35860a51e39cb48c71e57bb8fb1d0'" msgstr "" #. (itstool) path: page/p #: C/tooltip.c.page:24 C/tooltip.js.page:24 C/tooltip.py.page:25 #: C/tooltip.vala.page:24 msgid "A toolbar with a tooltip (with an image) for a button." msgstr "Une barre d'outil avec une infobulle (une image) pour un bouton." #. (itstool) path: note/p #: C/tooltip.c.page:26 msgid "" "This example builds on the Toolbar example." msgstr "" #. (itstool) path: section/code #: C/tooltip.c.page:31 #, no-wrap msgid "" "#include <gtk/gtk.h>\n" "\n" "static gboolean \n" "undo_tooltip_callback (GtkStatusIcon *status_icon,\n" " gint x,\n" " gint y,\n" " gboolean keyboard_mode,\n" " GtkTooltip *tooltip,\n" " gpointer user_data)\n" "{\n" " /* set the text for the tooltip */\n" " gtk_tooltip_set_text (tooltip, \"Undo your last action\");\n" " \n" " /* set an icon for the tooltip */\n" " gtk_tooltip_set_icon_from_stock(tooltip, \"gtk-undo\", GTK_ICON_SIZE_MENU);\n" "\n" " /* show the tooltip */\n" " return TRUE;\n" "}\n" "\n" "\n" "static void\n" "undo_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"Undo\\\".\\n\");\n" "}\n" "\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *grid;\n" " GtkWidget *window;\n" " GtkWidget *toolbar;\n" "\n" " GtkToolItem *new_button;\n" " GtkToolItem *open_button;\n" " GtkToolItem *undo_button;\n" "\n" " GtkStyleContext *style_context;\n" "\n" " GSimpleAction *undo_action;\n" "\n" " window = gtk_application_window_new (app);\n" " gtk_window_set_title (GTK_WINDOW (window), \"Toolbar with Tooltips Example\");\n" " gtk_window_set_default_size (GTK_WINDOW (window), 400, 200);\n" "\n" " /* Here we begin to create the toolbar */\n" " toolbar = gtk_toolbar_new ();\n" "\n" " /* Set the toolbar to be the primary toolbar of the application */\n" " style_context = gtk_widget_get_style_context (toolbar);\n" " gtk_style_context_add_class (style_context, GTK_STYLE_CLASS_PRIMARY_TOOLBAR);\n" "\n" " /* Create a button for the \"new\" action, with a stock image */\n" " new_button = gtk_tool_button_new_from_stock (GTK_STOCK_NEW);\n" " gtk_tool_item_set_is_important (new_button, TRUE);\n" " gtk_toolbar_insert (GTK_TOOLBAR (toolbar), new_button, 0);\n" " gtk_widget_show (GTK_WIDGET (new_button));\n" "\n" " /* Set the action name for the \"new\" action. We use \"app.new\" to\n" " * indicate that the action controls the application.\n" " */\n" " gtk_actionable_set_action_name (GTK_ACTIONABLE (new_button), \"app.new\");\n" "\n" " /*******************************\n" " * Tooltip for the New ToolItem:\n" " * a tooltip with text\n" " *******************************/\n" " gtk_tool_item_set_tooltip_text (new_button, \"Create a new file\"); \n" "\n" " /* \"Open\" */\n" " open_button = gtk_tool_button_new_from_stock (GTK_STOCK_OPEN);\n" " gtk_tool_item_set_is_important (open_button, TRUE);\n" " gtk_toolbar_insert (GTK_TOOLBAR (toolbar), open_button, 1);\n" " gtk_widget_show (GTK_WIDGET (open_button));\n" " gtk_actionable_set_action_name (GTK_ACTIONABLE (open_button), \"app.open\");\n" "\n" " /*******************************\n" " * Tooltip for the Open ToolItem:\n" " * a tooltip using Pango markup \n" " * language\n" " *******************************/\n" " gtk_tool_item_set_tooltip_text (open_button, \"Open an <i>existing</i> file\");\n" "\n" " /* \"Undo\" */\n" " undo_button = gtk_tool_button_new_from_stock (GTK_STOCK_UNDO);\n" " gtk_tool_item_set_is_important (undo_button, TRUE);\n" " gtk_toolbar_insert (GTK_TOOLBAR (toolbar), undo_button, 2);\n" " gtk_widget_show (GTK_WIDGET (undo_button));\n" "\n" " /* In this case, we use \"win.undo\" to indicate that\n" " * the action controls only the window\n" " */\n" " gtk_actionable_set_action_name (GTK_ACTIONABLE (undo_button), \"win.undo\");\n" "\n" " /*******************************\n" " * Tooltip for the Undo ToolItem:\n" " * a tooltip with an image\n" " *******************************/\n" " gtk_widget_set_has_tooltip (GTK_WIDGET (undo_button), TRUE);\n" "\n" " // Next, we connect the query_tooltip signal\n" " g_signal_connect (undo_button, \"query-tooltip\", G_CALLBACK (undo_tooltip_callback), NULL);\n" "\n" " gtk_widget_set_hexpand (toolbar, TRUE);\n" " gtk_widget_show (toolbar);\n" "\n" " grid = gtk_grid_new ();\n" " gtk_grid_attach (GTK_GRID (grid), toolbar, 0, 0, 1, 1);\n" " gtk_container_add (GTK_CONTAINER (window), GTK_WIDGET (grid));\n" " gtk_widget_show (GTK_WIDGET (grid));\n" "\n" " /* Use the action names to create the actions that control the window, and\n" " * connect them to the appropriate callbackfunctions.\n" " */\n" " undo_action = g_simple_action_new (\"undo\", NULL);\n" " g_signal_connect (undo_action, \"activate\", G_CALLBACK (undo_callback),\n" " GTK_WINDOW (window));\n" " g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (undo_action));\n" "\n" " gtk_widget_show (window);\n" "}\n" "\n" "\n" "/* Callback function for the new action */\n" "static void\n" "new_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"New\\\".\\n\");\n" "}\n" "\n" "\n" "/* Callback function for the open action */\n" "static void\n" "open_callback (GSimpleAction *simple,\n" " GVariant *parameter,\n" " gpointer user_data)\n" "{\n" " g_print (\"You clicked \\\"Open\\\".\\n\");\n" "}\n" "\n" "\n" "/* In this function, we create the actions in which control the window, and\n" " * connect their signals to the appropriate callback function.\n" " */\n" "static void\n" "startup (GApplication *app,\n" " gpointer user_data)\n" "{\n" " GSimpleAction *new_action;\n" " GSimpleAction *open_action;\n" "\n" " new_action = g_simple_action_new (\"new\", NULL);\n" " g_signal_connect (new_action, \"activate\", G_CALLBACK (new_callback), app);\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (new_action));\n" "\n" " open_action = g_simple_action_new (\"open\", NULL);\n" " g_signal_connect (open_action, \"activate\", G_CALLBACK (open_callback), app);\n" " g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (open_action));\n" "}\n" "\n" "\n" "\n" "/* Startup function for the application */\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\", G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " g_signal_connect (app, \"startup\", G_CALLBACK (startup), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" "\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/tooltip.c.page:38 C/tooltip.py.page:59 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTooltip" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/tooltip.c.page:40 C/tooltip.py.page:61 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkWidget" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/tooltip.c.page:41 C/tooltip.js.page:40 C/tooltip.py.page:62 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Stock Items" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/tooltip.js.page:8 #, fuzzy #| msgid "Toolbar (JavaScript)" msgctxt "text" msgid "Tooltip (JavaScript)" msgstr "Barre d'outils (JavaScript)" #. (itstool) path: note/p #: C/tooltip.js.page:25 msgid "" "This example builds on the Toolbar example." msgstr "" #. (itstool) path: section/code #: C/tooltip.js.page:30 #, no-wrap msgid "" "//!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gdk = '3.0';\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gdk = imports.gi.Gdk;\n" "const GLib = imports.gi.GLib;\n" "const Gio = imports.gi.Gio;\n" "const Gtk = imports.gi.Gtk; \n" "\n" "class TooltipExample {\n" " // Create the application \n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jstooltip'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents windows when active\n" " _onActivate() {\n" " this.window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" "\n" " // Create the application window\n" " this.window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " title: \"Toolbar with Tooltips Example\",\n" " default_width: 400,\n" " default_height: 200,\n" " border_width: 10\n" " });\n" "\n" " this.grid = new Gtk.Grid();\n" "\n" " this.toolbar = this._createToolbar();\n" " this.toolbar.set_hexpand(true);\n" " this.toolbar.show();\n" "\n" " this.grid.attach(this.toolbar, 0, 0, 1, 1);\n" "\n" " this.window.add(this.grid);\n" "\n" " this._newAction = new Gio.SimpleAction({ name: \"new\" });\n" " this._newAction.connect(\"activate\", this._newCallback.bind(this));\n" " this.window.add_action(this._newAction);\n" "\n" " this._openAction = new Gio.SimpleAction({ name: \"open\" });\n" " this._openAction.connect(\"activate\", this._openCallback.bind(this));\n" " this.window.add_action(this._openAction);\n" "\n" " this._undoAction = new Gio.SimpleAction({ name: \"undo\" });\n" " this._undoAction.connect(\"activate\", this._undoCallback.bind(this));\n" " this.window.add_action(this._undoAction);\n" "\n" " this._fullScreenAction = new Gio.SimpleAction({ name: \"fullscreenToggle\" });\n" " this._fullScreenAction.connect(\"activate\",\n" " this._fullScreenCallback.bind(this));\n" " this.window.add_action(this._fullScreenAction);\n" "\n" " this.window.show_all();\n" " }\n" "\n" " _createToolbar() {\n" " this.toolbar = new Gtk.Toolbar();\n" " this.toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n" "\n" " // button for the \"new\" action\n" " this.newButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW);\n" " // with a tooltip with a given text \n" " this.newButton.set_tooltip_text(\"Create a new file\");\n" " this.newButton.set_is_important(true);\n" " this.toolbar.insert(this.newButton, 0);\n" " this.newButton.show();\n" " this.newButton.set_action_name(\"win.new\");\n" "\n" " // button for the \"open\" action\n" " this.openButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN);\n" " // with a tooltip with a given text in the Pango markup language \n" " this.openButton.set_tooltip_markup(\"Open an <i>existing</i> file\");\n" " this.openButton.set_is_important(true);\n" " this.toolbar.insert(this.openButton, 1);\n" " this.openButton.show();\n" " this.openButton.set_action_name(\"win.open\");\n" "\n" " // button for the \"undo\" action\n" " this.undoButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO);\n" " // with a tooltip with an image\n" " // set true the property \"has-tooltip\" \n" " this.undoButton.set_property(\"has-tooltip\", true);\n" " // connect to the callback function that for the tooltip\n" " // with the signal \"query-tooltip\"\n" " this.undoButton.connect(\"query-tooltip\", this._undoTooltipCallback.bind(this));\n" " this.undoButton.set_is_important(true);\n" " this.toolbar.insert(this.undoButton, 2);\n" " this.undoButton.show();\n" " this.undoButton.set_action_name(\"win.undo\");\n" "\n" " // button for the \"fullscreen/leave fullscreen\" action\n" " this.fullscreenButton = Gtk.ToolButton.new_from_stock(Gtk.STOCK_FULLSCREEN);\n" " this.fullscreenButton.set_is_important(true);\n" " this.toolbar.insert(this.fullscreenButton, 3);\n" " this.fullscreenButton.set_action_name(\"win.fullscreenToggle\");\n" "\n" " return this.toolbar;\n" " }\n" "\n" " _newCallback(action, parameter) {\n" " print(\"You clicked \\\"New\\\".\");\n" " }\n" "\n" " _openCallback(action, parameter) {\n" " print(\"You clicked \\\"Open\\\".\");\n" " }\n" "\n" " // the callback function for the tooltip of the \"undo\" button\n" " _undoTooltipCallback(widget, x, y, keyboard_mode, tooltip) {\n" " // set the text for the tooltip\n" " tooltip.set_text(\"Undo your last action\");\n" " // set an icon for the tooltip\n" " tooltip.set_icon_from_stock(Gtk.STOCK_UNDO, Gtk.IconSize.MENU);\n" " // show the tooltip\n" " return true;\n" " }\n" "\n" " _undoCallback(action, parameter) {\n" " print(\"You clicked \\\"Undo\\\".\");\n" " }\n" "\n" " _fullScreenCallback() {\n" " if ((this.window.get_window().get_state() & Gdk.WindowState.FULLSCREEN) != 0 ){\n" " this.fullscreenButton.set_stock_id(Gtk.STOCK_FULLSCREEN);\n" " this.fullscreenButton.set_tooltip_text(\"Make your window fullscreen\");\n" " this.window.unfullscreen();\n" " } else {\n" " this.fullscreenButton.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN);\n" " this.fullscreenButton.set_tooltip_text(\"Leave fullscreen\");\n" " this.window.fullscreen();\n" " }\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new TooltipExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/tooltip.js.page:37 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "GtkTooltip" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/tooltip.js.page:38 #, fuzzy #| msgid "" #| "At the bottom there is a TextBuffer. This holds the text " #| "itself." msgid "" "GtkToolbar" msgstr "" "En bas se trouve un tampon TextBuffer qui contient le texte " "lui-même." #. (itstool) path: item/p #: C/tooltip.js.page:39 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "GtkWidget" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/tooltip.py.page:8 #, fuzzy #| msgid "Toolbar (Python)" msgctxt "text" msgid "Tooltip (Python)" msgstr "Barre d'outils (Python)" #. (itstool) path: note/p #: C/tooltip.py.page:26 msgid "" "This example builds on the Toolbar example." msgstr "" #. (itstool) path: section/code #: C/tooltip.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Gdk\n" "from gi.repository import Gio\n" "import sys\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(\n" " self, title=\"Toolbar with Tooltips Example\", application=app)\n" " self.set_default_size(400, 200)\n" "\n" " grid = Gtk.Grid()\n" "\n" " toolbar = self.create_toolbar()\n" " toolbar.set_hexpand(True)\n" " toolbar.show()\n" "\n" " grid.attach(toolbar, 0, 0, 1, 1)\n" "\n" " self.add(grid)\n" "\n" " undo_action = Gio.SimpleAction.new(\"undo\", None)\n" " undo_action.connect(\"activate\", self.undo_callback)\n" " self.add_action(undo_action)\n" "\n" " fullscreen_action = Gio.SimpleAction.new(\"fullscreen\", None)\n" " fullscreen_action.connect(\"activate\", self.fullscreen_callback)\n" " self.add_action(fullscreen_action)\n" "\n" " def create_toolbar(self):\n" " toolbar = Gtk.Toolbar()\n" " toolbar.get_style_context().add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)\n" "\n" " # button for the \"new\" action\n" " new_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_NEW)\n" " # with a tooltip with a given text\n" " new_button.set_tooltip_text(\"Create a new file\")\n" " new_button.set_is_important(True)\n" " toolbar.insert(new_button, 0)\n" " new_button.show()\n" " new_button.set_action_name(\"app.new\")\n" "\n" " # button for the \"open\" action\n" " open_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_OPEN)\n" " # with a tooltip with a given text in the Pango markup language\n" " open_button.set_tooltip_markup(\"Open an <i>existing</i> file\")\n" " open_button.set_is_important(True)\n" " toolbar.insert(open_button, 1)\n" " open_button.show()\n" " open_button.set_action_name(\"app.open\")\n" "\n" " # button for the \"undo\" action\n" " undo_button = Gtk.ToolButton.new_from_stock(Gtk.STOCK_UNDO)\n" " # with a tooltip with an image\n" " # set True the property \"has-tooltip\"\n" " undo_button.set_property(\"has-tooltip\", True)\n" " # connect to the callback function that for the tooltip\n" " # with the signal \"query-tooltip\"\n" " undo_button.connect(\"query-tooltip\", self.undo_tooltip_callback)\n" " undo_button.set_is_important(True)\n" " toolbar.insert(undo_button, 2)\n" " undo_button.show()\n" " undo_button.set_action_name(\"win.undo\")\n" "\n" " # button for the \"fullscreen/leave fullscreen\" action\n" " self.fullscreen_button = Gtk.ToolButton.new_from_stock(\n" " Gtk.STOCK_FULLSCREEN)\n" " self.fullscreen_button.set_is_important(True)\n" " toolbar.insert(self.fullscreen_button, 3)\n" " self.fullscreen_button.set_action_name(\"win.fullscreen\")\n" "\n" " return toolbar\n" "\n" " # the callback function for the tooltip of the \"undo\" button\n" " def undo_tooltip_callback(self, widget, x, y, keyboard_mode, tooltip):\n" " # set the text for the tooltip\n" " tooltip.set_text(\"Undo your last action\")\n" " # set an icon for the tooltip\n" " tooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU)\n" " # show the tooltip\n" " return True\n" "\n" " def undo_callback(self, action, parameter):\n" " print(\"You clicked \\\"Undo\\\".\")\n" "\n" " def fullscreen_callback(self, action, parameter):\n" " is_fullscreen = self.get_window().get_state(\n" " ) & Gdk.WindowState.FULLSCREEN != 0\n" " if not is_fullscreen:\n" " self.fullscreen_button.set_stock_id(Gtk.STOCK_LEAVE_FULLSCREEN)\n" " self.fullscreen()\n" " else:\n" " self.fullscreen_button.set_stock_id(Gtk.STOCK_FULLSCREEN)\n" " self.unfullscreen()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" " new_action = Gio.SimpleAction.new(\"new\", None)\n" " new_action.connect(\"activate\", self.new_callback)\n" " app.add_action(new_action)\n" "\n" " open_action = Gio.SimpleAction.new(\"open\", None)\n" " open_action.connect(\"activate\", self.open_callback)\n" " app.add_action(open_action)\n" "\n" " def new_callback(self, action, parameter):\n" " print(\"You clicked \\\"New\\\".\")\n" "\n" " def open_callback(self, action, parameter):\n" " print(\"You clicked \\\"Open\\\".\")\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/tooltip.py.page:36 msgid "Useful methods for a Tooltip widget" msgstr "Méthodes utiles pour un élément graphique infobulle (Tooltip)" #. (itstool) path: section/p #: C/tooltip.py.page:38 msgid "" "set_tooltip_text(text) and set_tooltip_markup(text) can be used to add a tooltip of plain text (or text in the Pango " "Markup Language) to a widget." msgstr "" "Les fonctions set_tooltip_text(text) et " "set_tooltip_markup(text) peuvent être utilisées pour ajouter " "une infobulle textuelle (ou un texte dans le langage de balisage Pango) à un " "élément graphique." #. (itstool) path: section/p #: C/tooltip.py.page:39 msgid "For more complex tooltips, for instance for a tooltip with an image:" msgstr "" "Pour des infobulles plus complexes, par exemple pour une infobulle sous la " "forme d'image :" #. (itstool) path: item/p #: C/tooltip.py.page:41 msgid "" "Set the \"has-tooltip\" property of the widget to True; this will make GTK+ monitor the widget for motion and related events " "which are needed to determine when and where to show a tooltip." msgstr "" "Attribuez la valeur True (vrai) à la propriété \"has-" "tooltip\" de l'élément graphique ; de cette façon GTK+ surveille les " "événements liés aux mouvements de la souris et tous ceux qui sont " "nécessaires afin de déterminer quand et où afficher une infobulle." #. (itstool) path: item/p #: C/tooltip.py.page:42 msgid "" "Connect to the \"query-tooltip\" signal. This signal will be " "emitted when a tooltip is supposed to be shown. One of the arguments passed " "to the signal handler is a GtkTooltip object. This is the object that we are " "about to display as a tooltip, and can be manipulated in your callback using " "functions like set_icon(). There are functions for setting the " "tooltip's markup (set_markup(text)), setting an image from a " "stock icon (set_icon_from_stock(stock_id, size)), or even " "putting in a custom widget (set_custom(widget))." msgstr "" "Connectez le signal \"query-tooltip\". Ce signal est émis " "lorsqu'une infobulle doit s'afficher. Un des arguments transmis au " "gestionnaire de signaux est un objet GtkTooltip. C'est l'objet que nous " "allons afficher comme infobulle et qui peut être manipulé dans votre " "fonction de rappel (callback) en utilisant des fonctions comme " "set_icon(). Ce sont des fonctions servant à paramétrer le " "balisage de l'infobulle (set_markup(text)), à définir une image " "à partir de la collection d'icônes (set_icon_from_stock(stock_id, " "size)), ou même à positionner un élément graphique personnalisé " "(set_custom(widget))." #. (itstool) path: item/p #: C/tooltip.py.page:43 msgid "" "Return True from your query-tooltip handler. This causes the " "tooltip to be show. If you return False, it will not be shown." msgstr "" "Renvoyez la valeur True à partir de votre gestionnaire query-" "tooltip. Cela provoque l'affichage de l'infobulle. Si vous renvoyez " "False, elle n'est pas affichée." #. (itstool) path: section/p #: C/tooltip.py.page:46 msgid "" "In the probably rare case where you want to have even more control over the " "tooltip that is about to be shown, you can set your own GtkWindow which will " "be used as tooltip window. This works as follows:" msgstr "" "Dans le cas peut probable où vous voulez avoir plus de contrôle sur " "l'infobulle qui est sur le point d'être affichée, vous pouvez définir votre " "propre GtkWindow qui sera utilisée comme fenêtre d'infobulle. Cela " "fonctionne comme ceci :" #. (itstool) path: item/p #: C/tooltip.py.page:48 msgid "" "Set \"has-tooltip\" and connect to \"query-tooltip\" as before." msgstr "" "Paramétrez \"has-tooltip\" et connectez le à \"query-" "tooltip\" comme auparavant." #. (itstool) path: item/p #: C/tooltip.py.page:49 msgid "" "Use set_tooltip_window() on the widget to set a GtkWindow " "created by you as tooltip window." msgstr "" "Utilisez set_tooltip_window() sur l'élément graphique pour " "définir un GtkWindow créé par vos soins comme fenêtre d'infobulle." #. (itstool) path: item/p #: C/tooltip.py.page:50 msgid "" "In the \"query-tooltip\" callback you can access your window " "using get_tooltip_window() and manipulate as you wish. The " "semantics of the return value are exactly as before, return True to show the window, False to not show it." msgstr "" "Dans la fonction de rappel \"query-tooltip\" vous pouvez " "accéder à votre fenêtre en utilisant get_tooltip_window() et la " "manipuler comme bon vous semble. La sémantiques pour la valeur retournée est " "exactement comme ci-dessus, renvoyez True pour afficher la " "fenêtre, False dans le cas contraire." #. (itstool) path: info/title #: C/tooltip.vala.page:8 #, fuzzy #| msgid "Toolbar (Vala)" msgctxt "text" msgid "Tooltip (Vala)" msgstr "Barre d'outils (Vala)" #. (itstool) path: note/p #: C/tooltip.vala.page:25 #, fuzzy #| msgid "" #| "This example is similar to , except we use " #| "Glade to create the toolbar in an XML ui file." msgid "" "This example builds on the Toolbar " "example." msgstr "" "Cet exemple est identique à , sauf que nous " "utilisons Glade pour créer la barre d'outils dans un fichier XML .ui." #. (itstool) path: section/code #: C/tooltip.vala.page:31 #, no-wrap msgid "" "/* This is the Window */\n" "class MyWindow : Gtk.ApplicationWindow {\n" "\n" "\t/* Instance variables belonging to the window */\n" "\tGtk.Toolbar toolbar;\n" "\tGtk.ToolButton new_button;\n" "\tGtk.ToolButton open_button;\n" "\tGtk.ToolButton undo_button;\n" "\tGtk.ToolButton fullscreen_button;\n" "\tGtk.ToolButton leave_fullscreen_button;\n" "\n" "\t/* Constructor */\n" "\tinternal MyWindow (MyApplication app) {\n" "\t\tObject (application: app, title: \"Toolbar with Tooltips Example\");\n" "\n" "\t\tthis.set_default_size (400, 200);\n" "\t\tvar grid = new Gtk.Grid ();\n" "\t\tthis.add (grid);\n" "\t\tgrid.show ();\n" "\n" "\t\tcreate_toolbar ();\n" "\t\ttoolbar.set_hexpand (true);\n" "\t\tgrid.attach (toolbar, 0, 0, 1, 1);\n" "\t\ttoolbar.show ();\n" "\n" "\t\t/* create the \"undo\" window action action */\n" "\t\tvar undo_action = new SimpleAction (\"undo\", null);\n" "\t\tundo_action.activate.connect (undo_callback);\n" "\t\tthis.add_action (undo_action);\n" "\n" "\t\t/* create the \"fullscreen\" window action */\n" "\t\tvar fullscreen_action = new SimpleAction (\"fullscreen\", null);\n" "\t\tfullscreen_action.activate.connect (fullscreen_callback);\n" "\t\tthis.add_action (fullscreen_action);\n" "\t}\n" "\n" "\t/* Callback for query_tooltip signal */\n" "\tbool undo_tooltip_callback (int x, int y, bool keyboard_tooltip, Gtk.Tooltip tooltip) {\n" "\n" "\t\t/* set the text for the tooltip */\n" " \ttooltip.set_text (\"Undo your last action\");\n" "\t\t\n" "\t\t/* set an icon for the tooltip */\n" "\t\ttooltip.set_icon_from_stock(\"gtk-undo\", Gtk.IconSize.MENU);\n" "\n" " \t/* show the tooltip */\n" " \treturn true;\n" "\t}\n" "\n" "\t/* This function creates the toolbar, its ToolButtons,\n" "\t * and assigns the actions names to the ToolButtons.*/\n" "\tvoid create_toolbar () {\n" "\t\ttoolbar = new Gtk.Toolbar ();\n" "\t\ttoolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_PRIMARY_TOOLBAR);\n" "\n" "\t\tnew_button = new Gtk.ToolButton.from_stock (Gtk.Stock.NEW);\n" "\n" "\t\t/* tooltip with text */\n" "\t\tnew_button.set_tooltip_text (\"Create a new file\");\n" "\n" "\t\tnew_button.is_important = true; //decides whether to show the label\n" "\t\ttoolbar.add (new_button);\n" "\t\tnew_button.show ();\n" "\t\tnew_button.action_name = \"app.new\";\n" "\n" "\t\topen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.OPEN);\n" "\n" "\t\t/* a tooltip using Pango markup language */\n" "\t\topen_button.set_tooltip_markup (\"Open an <i>existing</i> file\");\n" "\n" "\t\topen_button.is_important = true;\n" "\t\ttoolbar.add (open_button);\n" "\t\topen_button.show ();\n" "\t\topen_button.action_name = \"app.open\";\n" "\n" "\t\tundo_button = new Gtk.ToolButton.from_stock (Gtk.Stock.UNDO);\n" "\t\n" "\t\t/* For a tooltip to have an image, first we must set_has_tooltip to be 'true' */\t\n" "\t\t(undo_button as Gtk.Widget).set_has_tooltip (true);\n" "\n" "\t\t/* Connect the query_tooltip signal to the callback */\n" "\t\tundo_button.query_tooltip.connect (undo_tooltip_callback);\n" "\t\n" "\t\tundo_button.is_important = true;\n" "\t\ttoolbar.add (undo_button);\n" "\t\tundo_button.show ();\n" "\t\tundo_button.action_name = \"win.undo\";\n" "\n" "\t\tfullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.FULLSCREEN);\n" "\t\tfullscreen_button.is_important = true;\n" "\t\ttoolbar.add (fullscreen_button);\n" "\t\tfullscreen_button.show ();\n" "\t\tfullscreen_button.action_name = \"win.fullscreen\";\n" "\n" "\t\tleave_fullscreen_button = new Gtk.ToolButton.from_stock (Gtk.Stock.LEAVE_FULLSCREEN)\n" ";\n" "\t\tleave_fullscreen_button.is_important = true;\n" "\t\ttoolbar.add (leave_fullscreen_button);\n" "\n" "\t\tleave_fullscreen_button.action_name = \"win.fullscreen\";\n" "\t}\n" "\n" "\tvoid undo_callback (SimpleAction simple, Variant? parameter) {\n" "\t\t\tprint (\"You clicked \\\"Undo\\\".\\n\");\n" "\t}\n" "\n" "\tvoid fullscreen_callback (SimpleAction simple, Variant? parameter) {\n" "\t\tif ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {\n" "\t\t\tthis.unfullscreen ();\n" "\t\t\tleave_fullscreen_button.hide ();\n" "\t\t\tfullscreen_button.show ();\n" "\t\t}\n" "\t\telse {\n" "\t\t\tthis.fullscreen ();\n" "\t\t\tfullscreen_button.hide ();\n" "\t\t\tleave_fullscreen_button.show ();\n" "\t\t}\n" "\t}\n" "}\n" "\n" "/* This is the application */\n" "class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\t\tnew MyWindow (this).show ();\n" "\t}\n" "\n" "\tprotected override void startup () {\n" "\t\tbase.startup ();\n" "\n" "\t\t/* Create the \"new\" action and add it to the app*/\n" "\t\tvar new_action = new SimpleAction (\"new\", null);\n" "\t\tnew_action.activate.connect (new_callback);\n" "\t\tthis.add_action (new_action);\n" "\n" "\t\t/* Create the \"open\" action, and add it to the app */\n" "\t\tvar open_action = new SimpleAction (\"open\", null);\n" "\t\topen_action.activate.connect (open_callback);\n" "\t\tthis.add_action (open_action);\n" "\n" "\t\t/* You could also add the action to the app menu\n" "\t\t * if you wanted to.\n" "\t\t */\n" "\t\t//var menu = new Menu ();\n" "\t\t//menu.append (\"New\", \"app.new\");\n" "\t\t//this.app_menu = menu;\n" "\t}\n" "\n" "\tvoid new_callback (SimpleAction action, Variant? parameter) {\n" "\t\tprint (\"You clicked \\\"New\\\".\\n\");\n" "\t}\n" "\n" "\tvoid open_callback (SimpleAction action, Variant? parameter) {\n" "\t\t\tprint (\"You clicked \\\"Open\\\".\\n\");\n" "\t}\n" "}\n" "\n" "/* The main function creates the application and runs it. */\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/tooltip.vala.page:39 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk.Tooltip" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/tooltip.vala.page:41 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "Gtk.Widget.query_tooltip" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/tooltip.vala.page:42 msgid "" "Stock Items" msgstr "" #. (itstool) path: info/title #: C/treeview_advanced_liststore.py.page:8 #, fuzzy #| msgid "Simple Treeview with ListStore (Python)" msgctxt "text" msgid "Simple Treeview with ListStore (Python)" msgstr "Simple TreeView avec ListStore (Python)" #. (itstool) path: info/desc #: C/treeview_advanced_liststore.py.page:19 msgid "A TreeView displaying a ListStore (more complex example)" msgstr "Une TreeView affichant un ListStore (exemple plus complexe)" #. (itstool) path: page/title #: C/treeview_advanced_liststore.py.page:22 #, fuzzy #| msgid "Simple Treeview with ListStore" msgid "More Complex Treeview with ListStore" msgstr "Simple Treeview avec ListStore" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/treeview_advanced_liststore.py.page:23 #, fuzzy #| msgid "" #| "@@image: 'media/treeview_advanced_liststore.png'; " #| "md5=102b512197fb9aa4ed9a16462f6af911" msgctxt "_" msgid "" "external ref='media/treeview_advanced_liststore.png' " "md5='102b512197fb9aa4ed9a16462f6af911'" msgstr "" "@@image: 'media/treeview_advanced_liststore.png'; " "md5=102b512197fb9aa4ed9a16462f6af911" #. (itstool) path: page/p #: C/treeview_advanced_liststore.py.page:24 #: C/treeview_simple_liststore.py.page:25 msgid "" "This TreeView displays a simple ListStore with the selection \"changed\" " "signal connected." msgstr "" "Ce Treeview affiche un ListStore tout simple avec le signal « changed » de " "la sélection connecté." #. (itstool) path: section/code #: C/treeview_advanced_liststore.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Pango\n" "import sys\n" "\n" "list_of_dvd = [[\"The Usual Suspects\"],\n" " [\"Gilda\"],\n" " [\"The Godfather\"],\n" " [\"Pulp Fiction\"],\n" " [\"Once Upon a Time in the West\"],\n" " [\"Rear Window\"]]\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"My DVDs\", application=app)\n" " self.set_default_size(250, 100)\n" " self.set_border_width(10)\n" "\n" " # the data are stored in the model\n" " # create a liststore with one column\n" " self.listmodel = Gtk.ListStore(str)\n" " for i in range(len(list_of_dvd)):\n" " self.listmodel.append(list_of_dvd[i])\n" "\n" " # a treeview to see the data stored in the model\n" " view = Gtk.TreeView(model=self.listmodel)\n" "\n" " # cellrenderer for the first column\n" " cell = Gtk.CellRendererText()\n" " # the first column is created\n" " col = Gtk.TreeViewColumn(\"Title\", cell, text=0)\n" " # and it is appended to the treeview\n" " view.append_column(col)\n" "\n" " # when a row of the treeview is selected, it emits a signal\n" " self.selection = view.get_selection()\n" " self.selection.connect(\"changed\", self.on_changed)\n" "\n" " # the label we use to show the selection\n" " self.label = Gtk.Label()\n" " self.label.set_text(\"\")\n" "\n" " # a button to add new titles, connected to a callback function\n" " self.button_add = Gtk.Button(label=\"Add\")\n" " self.button_add.connect(\"clicked\", self.add_cb)\n" "\n" " # an entry to enter titles\n" " self.entry = Gtk.Entry()\n" "\n" " # a button to remove titles, connected to a callback function\n" " self.button_remove = Gtk.Button(label=\"Remove\")\n" " self.button_remove.connect(\"clicked\", self.remove_cb)\n" "\n" " # a button to remove all titles, connected to a callback function\n" " self.button_remove_all = Gtk.Button(label=\"Remove All\")\n" " self.button_remove_all.connect(\"clicked\", self.remove_all_cb)\n" "\n" " # a grid to attach the widgets\n" " grid = Gtk.Grid()\n" " grid.attach(view, 0, 0, 4, 1)\n" " grid.attach(self.label, 0, 1, 4, 1)\n" " grid.attach(self.button_add, 0, 2, 1, 1)\n" " grid.attach_next_to(\n" " self.entry, self.button_add, Gtk.PositionType.RIGHT, 1, 1)\n" " grid.attach_next_to(\n" " self.button_remove, self.entry, Gtk.PositionType.RIGHT, 1, 1)\n" " grid.attach_next_to(\n" " self.button_remove_all, self.button_remove, Gtk.PositionType.RIGHT, 1, 1)\n" "\n" " # add the grid to the window\n" " self.add(grid)\n" "\n" " def on_changed(self, selection):\n" " # get the model and the iterator that points at the data in the model\n" " (model, iter) = selection.get_selected()\n" " # set the label to a new value depending on the selection, if there is\n" " # one\n" " if iter is not None:\n" " self.label.set_text(\"\\n %s\" % (model[iter][0]))\n" " else:\n" " self.label.set_text(\"\")\n" " return True\n" "\n" " # callback function for the \"Add\" button\n" " def add_cb(self, button):\n" " # append to the model the title that is in the entry\n" " title = self.entry.get_text()\n" " self.listmodel.append([title])\n" " # and print a message in the terminal\n" " print(\"%s has been added\" % (title))\n" "\n" " def remove_cb(self, button):\n" " # if there is still an entry in the model\n" " if len(self.listmodel) != 0:\n" " # get the selection\n" " (model, iter) = self.selection.get_selected()\n" " # if there is a selection, print a message in the terminal\n" " # and remove it from the model\n" " if iter is not None:\n" " print(\"%s has been removed\" % (model[iter][0]))\n" " self.listmodel.remove(iter)\n" " # otherwise, ask the user to select something to remove\n" " else:\n" " print(\"Select a title to remove\")\n" " # else, if there are no entries in the model, print \"Empty list\"\n" " # in the terminal\n" " else:\n" " print(\"Empty list\")\n" "\n" " def remove_all_cb(self, button):\n" " # if there is still an entry in the model\n" " if len(self.listmodel) != 0:\n" " # remove all the entries in the model\n" " for i in range(len(self.listmodel)):\n" " iter = self.listmodel.get_iter(0)\n" " self.listmodel.remove(iter)\n" " # print a message in the terminal alerting that the model is empty\n" " print(\"Empty list\")\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/treeview_advanced_liststore.py.page:35 #: C/treeview_cellrenderertoggle.py.page:35 #: C/treeview_simple_liststore.py.page:36 C/treeview_treestore.py.page:36 msgid "Useful methods for a TreeView widget" msgstr "Méthodes utiles pour un élément graphique TreeView" #. (itstool) path: section/p #: C/treeview_advanced_liststore.py.page:36 #: C/treeview_cellrenderertoggle.py.page:36 C/treeview_treestore.py.page:37 msgid "" "The TreeView widget is designed around a Model/View/Controller " "design: the Model stores the data; the View gets change " "notifications and displays the content of the model; the Controller, finally, changes the state of the model and notifies the view of these " "changes. For more information and for a list of useful methods for TreeModel " "see ." msgstr "" #. (itstool) path: section/p #: C/treeview_advanced_liststore.py.page:37 msgid "" "In line 36 the \"changed\" signal is connected to the callback " "function on_changed() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: info/title #: C/treeview_cellrenderertoggle.py.page:8 C/treeview_treestore.py.page:8 #, fuzzy #| msgid "TreeView with TreeStore (Python)" msgctxt "text" msgid "TreeView with TreeStore (Python)" msgstr "TreeView avec TreeStore (Python)" #. (itstool) path: info/desc #: C/treeview_cellrenderertoggle.py.page:19 msgid "" "A TreeView displaying a TreeStore (more complex example, with " "CellRendererToggle)" msgstr "" "Une TreeView affichant un TreeStore (exemple plus complexe avec " "CellRendererToggle)" #. (itstool) path: page/title #: C/treeview_cellrenderertoggle.py.page:22 #, fuzzy #| msgid "TreeView with TreeStore" msgid "More Complex TreeView with TreeStore" msgstr "TreeView avec TreeStore" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/treeview_cellrenderertoggle.py.page:23 #, fuzzy #| msgid "" #| "@@image: 'media/treeview_cellrenderertoggle.png'; " #| "md5=ade9b9437f8f83150acf37610dab834d" msgctxt "_" msgid "" "external ref='media/treeview_cellrenderertoggle.png' " "md5='ade9b9437f8f83150acf37610dab834d'" msgstr "" "@@image: 'media/treeview_cellrenderertoggle.png'; " "md5=ade9b9437f8f83150acf37610dab834d" # Bruno : toggle = inverseur #. (itstool) path: page/p #: C/treeview_cellrenderertoggle.py.page:24 msgid "" "This TreeView displays a TreeStore with two columns, one of which is " "rendered as a toggle." msgstr "" "Ce TreeView affiche un TreeStore de deux colonnes, dont l'une est affichée " "sous la forme d'un inverseur." #. (itstool) path: section/code #: C/treeview_cellrenderertoggle.py.page:31 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Pango\n" "import sys\n" "\n" "books = [[\"Tolstoy, Leo\", [\"War and Peace\", True], [\"Anna Karenina\", False]],\n" " [\"Shakespeare, William\", [\"Hamlet\", False],\n" " [\"Macbeth\", True], [\"Othello\", False]],\n" " [\"Tolkien, J.R.R.\", [\"The Lord of the Rings\", False]]]\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Library\", application=app)\n" " self.set_default_size(250, 100)\n" " self.set_border_width(10)\n" "\n" " # the data are stored in the model\n" " # create a treestore with two columns\n" " self.store = Gtk.TreeStore(str, bool)\n" " # fill in the model\n" " for i in range(len(books)):\n" " # the iter piter is returned when appending the author in the first column\n" " # and False in the second\n" " piter = self.store.append(None, [books[i][0], False])\n" " # append the books and the associated boolean value as children of\n" " # the author\n" " j = 1\n" " while j < len(books[i]):\n" " self.store.append(piter, books[i][j])\n" " j += 1\n" "\n" " # the treeview shows the model\n" " # create a treeview on the model self.store\n" " view = Gtk.TreeView()\n" " view.set_model(self.store)\n" "\n" " # the cellrenderer for the first column - text\n" " renderer_books = Gtk.CellRendererText()\n" " # the first column is created\n" " column_books = Gtk.TreeViewColumn(\"Books\", renderer_books, text=0)\n" " # and it is appended to the treeview\n" " view.append_column(column_books)\n" "\n" " # the cellrenderer for the second column - boolean rendered as a toggle\n" " renderer_in_out = Gtk.CellRendererToggle()\n" " # the second column is created\n" " column_in_out = Gtk.TreeViewColumn(\"Out?\", renderer_in_out, active=1)\n" " # and it is appended to the treeview\n" " view.append_column(column_in_out)\n" " # connect the cellrenderertoggle with a callback function\n" " renderer_in_out.connect(\"toggled\", self.on_toggled)\n" "\n" " # add the treeview to the window\n" " self.add(view)\n" "\n" " # callback function for the signal emitted by the cellrenderertoggle\n" " def on_toggled(self, widget, path):\n" " # the boolean value of the selected row\n" " current_value = self.store[path][1]\n" " # change the boolean value of the selected row in the model\n" " self.store[path][1] = not current_value\n" " # new current value!\n" " current_value = not current_value\n" " # if length of the path is 1 (that is, if we are selecting an author)\n" " if len(path) == 1:\n" " # get the iter associated with the path\n" " piter = self.store.get_iter(path)\n" " # get the iter associated with its first child\n" " citer = self.store.iter_children(piter)\n" " # while there are children, change the state of their boolean value\n" " # to the value of the author\n" " while citer is not None:\n" " self.store[citer][1] = current_value\n" " citer = self.store.iter_next(citer)\n" " # if the length of the path is not 1 (that is, if we are selecting a\n" " # book)\n" " elif len(path) != 1:\n" " # get the first child of the parent of the book (the first book of\n" " # the author)\n" " citer = self.store.get_iter(path)\n" " piter = self.store.iter_parent(citer)\n" " citer = self.store.iter_children(piter)\n" " # check if all the children are selected\n" " all_selected = True\n" " while citer is not None:\n" " if self.store[citer][1] == False:\n" " all_selected = False\n" " break\n" " citer = self.store.iter_next(citer)\n" " # if they do, the author as well is selected; otherwise it is not\n" " self.store[piter][1] = all_selected\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/p #: C/treeview_cellrenderertoggle.py.page:37 msgid "" "In line 48 the \"toggled\" signal is connected to the callback " "function on_toggled() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/treeview_cellrenderertoggle.py.page:46 C/treeview_treestore.py.page:46 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkTreeStore" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/treeview_cellrenderertoggle.py.page:48 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkCellRendererToggle" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/treeview_simple_liststore.js.page:8 #, fuzzy #| msgid "TreeView with ListStore (JavaScript)" msgctxt "text" msgid "TreeView with ListStore (JavaScript)" msgstr "TreeView avec ListStore (JavaScript)" #. (itstool) path: info/desc #: C/treeview_simple_liststore.js.page:21 msgid "A widget that shows a separate list of items" msgstr "Un élément graphique qui affiche une liste séparée d'éléments" #. (itstool) path: page/title #: C/treeview_simple_liststore.js.page:24 msgid "TreeView with ListStore" msgstr "TreeView avec ListStore" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/treeview_simple_liststore.js.page:25 #, fuzzy #| msgid "" #| "@@image: 'media/treeview_simple_liststore_penguins.png'; " #| "md5=d750a0b9fddf8e508753cc639839871d" msgctxt "_" msgid "" "external ref='media/treeview_simple_liststore_penguins.png' " "md5='d750a0b9fddf8e508753cc639839871d'" msgstr "" "@@image: 'media/treeview_simple_liststore_penguins.png'; " "md5=d750a0b9fddf8e508753cc639839871d" #. (itstool) path: page/p #: C/treeview_simple_liststore.js.page:26 msgid "" "A TreeView is like a window onto the contents of either a ListStore or a " "TreeStore. A ListStore is like a spreadsheet: a \"flat\", two-dimensional " "list of things broken up into rows and columns. A TreeStore, meanwhile, can " "branch out in different directions like a tree can. In this example, we " "create a TreeView that shows the contents of a ListStore with (fictitious) " "names and phone numbers in it, and set it so that the Label at the bottom of the window shows more information about " "whichever name you click on." msgstr "" "Un TreeView est une fenêtre affichant le contenu soit d'un ListStore, soit " "d'un TreeStore. Un ListStore peut être comparé à une feuille de calcul : une " "liste « plate », en deux dimensions, contenant des données réparties sur des " "lignes et dans des colonnes. Alors qu'un TreeStore peut déployer ses " "branches dans différentes directions, à la manière d'un arbre. Dans cet " "exemple, nous créons un TreeView qui affiche le contenu d'un ListStore " "contenant des noms et des numéros de téléphone (fictifs) et nous le " "paramétrons pour que l'étiquette en bas de la " "fenêtre affiche plus d'informations sur le nom qui a été cliqué." #. (itstool) path: page/p #: C/treeview_simple_liststore.js.page:27 msgid "" "The TreeView is not just a single widget, but contains a number of smaller " "ones:" msgstr "" "Un TreeView n'est pas qu'un simple élément graphique, il contient aussi un " "certain nombre d'autres plus petits :" #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:29 msgid "" "TreeViewColumn widgets show each (vertical) column of information from the " "ListStore. Each one has a title which can be shown at the top of the column, " "like in the screenshot." msgstr "" "Les éléments graphiques TreeViewColumn affichent chaque colonne " "d'informations contenue dans le ListStore. Chacune d'elle a un nom qui peut " "être affiché dans l'en-tête de la colonne, comme montré dans la capture " "d'écran." #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:30 msgid "" "CellRenderer widgets are \"packed\" into each TreeViewColumn, and contain " "the instructions for how to display each individual \"cell\", or item from " "the ListStore. There are multiple different types, including the " "CellRendererText used here and the CellRendererPixbuf, which displays a " "picture (\"pixel buffer\")." msgstr "" "Les éléments graphiques CellRenderer sont « empilés » dans chaque " "TreeViewColumn et contiennent les instructions sur la manière d'afficher " "chaque « cellule » individuelle ou chaque élément du ListStore. Il en existe " "beaucoup de types différents, y compris le CellRendererText utilisé ici et " "le CellRendererPixbuf qui affiche une image « pixel buffer »." #. (itstool) path: page/p #: C/treeview_simple_liststore.js.page:32 msgid "" "Finally, we're going to use an object called a TreeIter, which isn't a " "widget so much as an invisible cursor which points to a (horizontal) row in " "the ListStore. Whenever you click on a name in the phonebook, for instance, " "we create a TreeIter pointing to the row that's selected, and then use that " "to tell the ListStore which entry we want the Label to show more information " "about." msgstr "" "Pour finir, nous allons utiliser un objet nommé TreeIter, qui n'est pas à " "proprement parler un élément graphique, mais plutôt un curseur invisible qui " "pointe vers une ligne horizontale du ListStore. Si vous cliquez par exemple " "sur un nom de la liste téléphonique, cela génère un TreeIter qui pointe vers " "la ligne sélectionnée et qui sert à indiquer au ListStore quelles " "informations supplémentaires l'étiquette doit afficher." #. (itstool) path: note/p #: C/treeview_simple_liststore.js.page:33 msgid "" "The TreeView is probably the most complicated Gtk widget, because of how " "many parts it has and how they all have to work together. Give yourself time " "to learn how it works and experiment with it, or try something easier first " "if you're having trouble." msgstr "" "Le TreeView est probablement l'élément graphique Gtk le plus compliqué, de " "par le nombre d'éléments qu'il contient et à cause de la façon dont ils sont " "imbriqués pour travailler ensemble. Prenez le temps d'apprendre et son " "fonctionnement en faisant des essais, ou alors essayez de commencer par " "quelque chose de plus facile si vous n'y arrivez pas." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:38 #, no-wrap msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "const GObject = imports.gi.GObject;\n" "const Gtk = imports.gi.Gtk;\n" "const Lang = imports.lang;\n" "const Pango = imports.gi.Pango;\n" msgstr "" #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:51 #, no-wrap msgid "" "\n" "const TreeViewExample = new Lang.Class({\n" " Name: 'TreeView Example with Simple ListStore',\n" "\n" " // Create the application itself\n" " _init: function() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jstreeviewsimpleliststore'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', Lang.bind(this, this._onActivate));\n" " this.application.connect('startup', Lang.bind(this, this._onStartup));\n" " },\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate: function() {\n" " this._window.present();\n" " },\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup: function() {\n" " this._buildUI ();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:76 msgid "" "All the code for this sample goes in the TreeViewExample class. The above " "code creates a Gtk.Application for our widgets and window to " "go in." msgstr "" "Tout le code utilisé pour cet exemple va dans la classe TreeViewExample. Le " "code ci-dessus crée une Gtk.Application pour nos éléments " "graphiques et la fenêtre qui les contient." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:77 #, no-wrap msgid "" "\n" " // Build the application's UI\n" " _buildUI: function() {\n" "\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 250,\n" " default_width: 100,\n" " border_width: 20,\n" " title: \"My Phone Book\"});\n" msgstr "" #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:95 #, no-wrap msgid "" "\n" " // Create the underlying liststore for the phonebook\n" " this._listStore = new Gtk.ListStore ();\n" " this._listStore.set_column_types ([\n" " GObject.TYPE_STRING,\n" " GObject.TYPE_STRING,\n" " GObject.TYPE_STRING,\n" " GObject.TYPE_STRING]);\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:104 msgid "" "We first create the ListStore like we would any widget. Then we call its " "set_column_types method, and pass it an array of GObject data types. (We " "could have put the types all on one line, but here we are breaking them up " "to make it easier to read.)" msgstr "" "Créons en premier le ListStore comme nous l'aurions fait pour n'importe quel " "élément graphique. Appelons ensuite sa méthode set_column_types et passons " "lui un tableau de types de données GObject (nous aurions pu placer tous les " "types sur une seule et même ligne, mais pour faciliter la lecture, nous les " "séparons)." #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:105 msgid "The GObject data types you can use include:" msgstr "Les types de données GObject que vous pouvez utiliser incluent :" #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:110 msgid "gtk.gdk.Pixbuf -- A picture" msgstr "gtk.gdk.Pixbuf -- une image" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:112 msgid "" "In this case, we're making a ListStore of four columns, each one containing " "string values." msgstr "" "Dans ce cas, nous créons un ListStore de quatre colonnes contenant chacune " "des valeurs de type chaînes de caractères." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:115 #, no-wrap msgid "" "\n" " // Data to go in the phonebook\n" " this.phonebook =\n" " let phonebook =\n" " [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n" " description: \"A friendly person.\"},\n" " { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n" " description: \"Easy phone number to remember.\"},\n" " { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n" " description: \"Another friendly person.\"},\n" " { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n" " description: \"Bring fish for his penguins.\"},\n" " { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n" " description: \"His cake's not a lie.\"},\n" " { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n" " description: \"Very random!\"}];\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:132 msgid "" "Here we have the information to go in the ListStore. It's an array of " "objects, each one corresponding to a single entry in our phone book." msgstr "" "Voici les informations contenues dans le ListStore. C'est un assortiment " "d'objets, chacun correspondant à une entrée de notre répertoire téléphonique." #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:133 msgid "" "Note that the TreeView in the screenshot doesn't actually show the data from " "the \"description\" properties. Instead, that information's shown in the " "Label beneath it, for whichever row that you click on. That's because the " "TreeView and ListStore are two separate things, and a TreeView can show all " "or part of a ListStore, and display what's in it in different ways. You can " "even have multiple widgets show things from the same ListStore, like the " "Label in our example or even a second TreeView." msgstr "" "Notez que le TreeView de la capture d'écran n'affiche pas pour l'instant les " "données des propriétés « description ». Elles s'afficheront dans l'étiquette " "du dessous à chaque clic sur une ligne. C'est parce qu'un TreeView et un " "ListStore sont deux choses bien distinctes et qu'un TreeView peut afficher " "tout ou une partie du contenu d'un ListStore de différentes façons. Vous " "pouvez même posséder plusieurs éléments graphiques affichant des éléments " "d'un même ListStore, comme l'étiquette de notre exemple ou bien encore un " "second TreeView." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:135 #, no-wrap msgid "" "\n" " for (i = 0; i < phonebook.length; i++ ) {\n" " let contact = phonebook [i];\n" " this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n" " [contact.name, contact.surname, contact.phone, contact.description]);\n" " }\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:142 msgid "" "This for loop puts the strings from our phonebook into our " "ListStore in order. In order, we pass the ListStore's set method the iter " "that points to the correct row, an array which says which columns we want to " "set, and an array which contains the data we want to put into those columns." msgstr "" "Cette boucle for place les chaînes de caractères de notre " "répertoire téléphonique dans notre ListStore dans l'ordre. Pour ce faire, " "nous passons à la méthode set du ListStore le curseur qui pointe vers la " "bonne ligne, un tableau qui indique quelles colonnes nous voulons définir et " "un tableau qui contient les données que nous voulons y mettre." #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:143 msgid "" "A ListStore's append method adds a horizontal row onto it (it " "starts out with none), and returns a TreeIter pointing to that row like a " "cursor. So by passing this._listStore.append() to the ListStore " "as a property, we're creating a new row and telling the set " "method which row to set data for at the same time." msgstr "" "La méthode append du ListStore ajoute une ligne horizontale à " "celui-ci (au début, il n'y en a pas) et renvoie un TreeIter pointant vers " "cette ligne comme un curseur. Donc, en transmettant this._listStore." "append() au ListStore comme propriété, nous créons une nouvelle ligne " "en indiquant en même temps à la méthode set à quelle ligne elle " "doit attribuer les données." #. (itstool) path: section/title #: C/treeview_simple_liststore.js.page:148 msgid "Creating the TreeView" msgstr "Création du TreeView" #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:149 #, no-wrap msgid "" "\n" " // Create the treeview\n" " this._treeView = new Gtk.TreeView ({\n" " expand: true,\n" " model: this._listStore });\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:155 msgid "" "Here we create a basic TreeView widget, that expands both horizontally and " "vertically to use as much space as needed. We set it to use the ListStore we " "created as its \"model\", or the thing it'll show us stuff from." msgstr "" "Ici, nous créons un élément graphique TreeView de base, qui s'étend à la " "fois horizontalement et verticalement pour utiliser autant d'espace que " "nécessaire. Nous le paramétrons pour utiliser le ListStore que nous avons " "créé comme étant son « modèle » et d'où proviendront les éléments qu'il " "affichera." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:157 #, no-wrap msgid "" "\n" " // Create the columns for the address book\n" " let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n" " let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n" " let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:163 msgid "" "Now we create each of the vertical TreeViewColumns we'll see in the " "TreeView. The title for each one goes at the top, as you can see in the " "screenshot." msgstr "" "Nous créons maintenant chacun des TreeViewColumns vertical qui s'afficheront " "dans notre TreeView. Comme le montre la capture d'écran, chaque titre se " "situe respectivement en haut de sa colonne." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:165 #, no-wrap msgid "" "\n" " // Create a cell renderer for when bold text is needed\n" " let bold = new Gtk.CellRendererText ({\n" " weight: Pango.Weight.BOLD });\n" "\n" " // Create a cell renderer for normal text\n" " let normal = new Gtk.CellRendererText ();\n" "\n" " // Pack the cell renderers into the columns\n" " firstName.pack_start (bold, true);\n" " lastName.pack_start (normal, true);\n" " phone.pack_start (normal, true);\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:178 msgid "" "Here we create the CellRenderers that we'll use to display the text from our " "ListStore, and pack them into the TreeViewColumns. Each CellRendererText is " "used for all the entries in that column. Our normal CellRendererText just " "creates plain text, while our bold one uses heavier-weight text. We put it " "into the first name column, and tell the other two to use copies of the " "normal one. The \"true\" used as the second parameter for the " "pack_start method tells it to expand the cells when possible, " "instead of keeping them compact." msgstr "" "Ici, nous créons les CellRenderers que nous allons utiliser pour afficher le " "texte contenu dans notre ListStore et nous les positionnons dans les " "TreeViewColumns. Chaque CellRendererText est utilisé pour toutes les entrées " "de cette colonne. Notre CellRendererText normal (normal) ne génère que du " "texte brut, alors que celui en gras (bold) utilise du texte plus gras. Nous " "le mettons dans la première en-tête de colonne et nous indiquons aux deux " "autres d'utiliser des copies du normal. L'argument « true » utilisé comme " "second paramètre de la méthode pack_start lui indique " "d'agrandir les cellules quand cela est possible, au lieu de les laisser " "compactes." #. (itstool) path: note/p #: C/treeview_simple_liststore.js.page:179 msgid "" "Here is " "a list of other text properties you can use. In order to use these " "Pango constants, make sure to put the line const Pango = imports.gi." "Pango; at the beginning of your code like we did." msgstr "" "Voici " "iciune liste d'autres propriétés de texte que vous pouvez utiliser. " "Pour pouvoir utiliser les constantes Pango, assurez-vous d'ajouter la ligne " "const Pango = imports.gi.Pango; au début de votre code comme " "nous l'avons fait." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:181 #, no-wrap msgid "" "\n" " firstName.add_attribute (bold, \"text\", 0);\n" " lastName.add_attribute (normal, \"text\", 1);\n" " phone.add_attribute (normal, \"text\", 2);\n" "\n" " // Insert the columns into the treeview\n" " this._treeView.insert_column (firstName, 0);\n" " this._treeView.insert_column (lastName, 1);\n" " this._treeView.insert_column (phone, 2);\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:191 msgid "" "Now that we've put the CellRenderers into the TreeViewColumns, we use the " "add_attribute method to tell each column to pull in text from " "the model our TreeView is set to use; in this case, the ListStore with the " "phonebook." msgstr "" "Après avoir placé les CellRenderers dans les TreeViewColumns, nous utilisons " "la méthode add_attribute pour indiquer à chaque colonne " "d'extraire du modèle le texte pour lequel notre TreeView est programmée ; " "dans ce cas, le ListStore contenant le répertoire téléphonique." #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:193 msgid "" "The first parameter is which CellRenderer we're going to use to render what " "we're pulling in." msgstr "" "Le premier paramètre indique quel CellRenderer nous allons utiliser pour " "restituer ce que nous extrayons." #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:194 msgid "" "The second parameter is what kind of information we're going to pull in. In " "this case, we're letting it know that we're rendering text." msgstr "" "Le second paramètre indique le type d'information que nous voulons extraire. " "Dans ce cas, nous lui indiquons que nous voulons du texte." #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:195 msgid "" "The third parameter is which of the ListStore's columns we're pulling that " "information in from." msgstr "" "Le troisième paramètre indique de quelle colonne du ListStore nous voulons " "extraire cette information." #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:197 msgid "" "After we've set that up, we use the TreeView's insert_column " "method to put our TreeViewColumns inside it in order. Our TreeView is now " "complete." msgstr "" "Après avoir paramétré ceci, nous utilisons la méthode insert_column pour trier le contenu de nos TreeViewColumns. Notre TreeView est à " "présent terminée." #. (itstool) path: note/p #: C/treeview_simple_liststore.js.page:198 msgid "" "Normally, you might want to use a loop to initialize your TreeView, but in " "this example we're spelling things out step by step for the sake of making " "it easier to understand." msgstr "" "Normalement, vous devriez utiliser une boucle pour initialiser votre " "TreeView, mais dans cet exemple, nous avons détaillé étape par étape ce qui " "ce passe afin de mieux comprendre." #. (itstool) path: section/title #: C/treeview_simple_liststore.js.page:202 msgid "Building the rest of the UI" msgstr "Construction du reste de l'interface utilisateur" #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:203 #, no-wrap msgid "" "\n" " // Create the label that shows details for the name you select\n" " this._label = new Gtk.Label ({ label: \"\" });\n" "\n" " // Get which item is selected\n" " this.selection = this._treeView.get_selection();\n" "\n" " // When something new is selected, call _on_changed\n" " this.selection.connect ('changed', Lang.bind (this, this._onSelectionChanged));\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:213 msgid "" "The TreeView's get_selection method returns an object called a " "TreeSelection. A TreeSelection is like a TreeIter in that it's basically a " "cursor that points at a particular row, except that the one it points to is " "the one that's visibly highlighted as selected." msgstr "" "La méthode get_selection du TreeView retourne un objet appelé " "un TreeSelection. Un TreeSelection est comme un TreeIter, tout simplement un " "curseur qui pointe vers une ligne particulière, à la différence que celui-ci " "pointe vers la ligne qui est marqué visuellement comme sélectionnée." #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:214 msgid "" "After we get the TreeSelection that goes with our TreeView, we ask it to " "tell us when it changes which row it's pointing to. We do this by connecting " "its changed signal to the _onSelectionChanged function we " "wrote. This function changes the text displayed by the Label we just made." msgstr "" "Une fois obtenu le TreeSelection qui va avec notre TreeView, nous lui " "demandons de nous indiquer vers quelle ligne il pointe quand il est modifié. " "Nous obtenons cela en connectant le signal changed à la " "fonction _onSelectionChanged que nous avons programmée. Cette fonction " "modifie le texte affiché par l'étiquette que nous venons de créer." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:216 #, no-wrap msgid "" "\n" " // Create a grid to organize everything in\n" " this._grid = new Gtk.Grid;\n" "\n" " // Attach the treeview and label to the grid\n" " this._grid.attach (this._treeView, 0, 0, 1, 1);\n" " this._grid.attach (this._label, 0, 1, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " },\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:231 msgid "" "After we've gotten that out of the way, we create a Grid to put everything in, then add it to our window and tell the " "window to show itself and its contents." msgstr "" "Ceci fait, nous créons une grille (grid) pour " "y placer le tout, puis nous l'ajoutons à notre fenêtre et demandons à cette " "fenêtre de s'afficher avec son contenu." #. (itstool) path: section/title #: C/treeview_simple_liststore.js.page:235 msgid "Function which handles a changed selection" msgstr "Fonction prenant en charge la modification de la sélection" #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:237 #, no-wrap msgid "" "\n" " _onSelectionChanged: function () {\n" "\n" " // Grab a treeiter pointing to the current selection\n" " let [ isSelected, model, iter ] = this.selection.get_selected();\n" "\n" " // Set the label to read off the values stored in the current selection\n" " this._label.set_label (\"\\n\" +\n" " this._listStore.get_value (iter, 0) + \" \" +\n" " this._listStore.get_value (iter, 1) + \" \" +\n" " this._listStore.get_value (iter, 2) + \"\\n\" +\n" " this._listStore.get_value (iter, 3));\n" "\n" " }\n" "\n" "});\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:254 msgid "" "The line of code with the let statement is a little convoluted, but it's " "nonetheless the best way to get a TreeIter pointing to the same row as our " "TreeSelection. It has to create a couple of other object references, but " "iter is the only one we need." msgstr "" "La ligne de code utilisant l'instruction « let » est quelque peu compliquée, " "mais c'est néanmoins la meilleure façon d'obtenir un TreeIter qui pointe " "vers la même ligne que notre TreeSelection. Elle doit créer quelques autres " "références d'objets, mais le seul qui nous intéresse est l'iter." #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:255 msgid "" "After we've done that, we call the Label's set_label function, " "and use the ListStore's get_value function a handful of times " "to fill in the data we want to put in it. Its parameters are a TreeIter " "pointing to the row we want to get data from, and the column." msgstr "" "Ceci fait, nous appelons la fonction set_label de l'étiquette " "et nous utilisons la fonction get_value du ListStore autant de " "fois que nécessaire pour la remplir de toutes les données que nous " "souhaitons y mettre. Ses paramètres sont un TreeIter pointant vers la ligne " "dont nous voulons extraire les données et la colonne." #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:256 msgid "" "Here, we want to get data from all four columns, including the \"hidden\" " "one that's not part of the TreeView. This way, we can use our Label to show " "strings that are too large to fit in the TreeView, and that we don't need to " "see at a glance." msgstr "" "Ici, nous voulons obtenir les données des quatre colonnes, y compris celles " "qui sont « masquées » et qui ne font pas partie du TreeView. De cette façon, " "nous pouvons utiliser notre étiquette pour afficher les chaînes de " "caractères qui sont trop longues pour tenir dans le TreeView et que nous " "n'avons pas besoin de voir au premier coup d'œil." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:258 #, no-wrap msgid "" "\n" "// Run the application\n" "let app = new TreeViewExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.js.page:263 msgid "" "Finally, we create a new instance of the finished TreeViewExample class, and " "set the application running." msgstr "" "Enfin, nous créons une nouvelle instance de la classe TreeViewExample qui " "est terminée et nous démarrons l'application." #. (itstool) path: section/code #: C/treeview_simple_liststore.js.page:268 #, no-wrap msgid "" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const GObject = imports.gi.GObject;\n" "const Gtk = imports.gi.Gtk;\n" "const Pango = imports.gi.Pango;\n" "\n" "class TreeViewExample {\n" " // Create the application itself\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.jstreeviewsimpleliststore'\n" " });\n" "\n" " // Connect 'activate' and 'startup' signals to the callback functions\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " this.application.connect('startup', this._onStartup.bind(this));\n" " }\n" "\n" " // Callback function for 'activate' signal presents window when active\n" " _onActivate() {\n" " this._window.present();\n" " }\n" "\n" " // Callback function for 'startup' signal builds the UI\n" " _onStartup() {\n" " this._buildUI();\n" " }\n" "\n" " // Build the application's UI\n" " _buildUI() {\n" " // Create the application window\n" " this._window = new Gtk.ApplicationWindow({\n" " application: this.application,\n" " window_position: Gtk.WindowPosition.CENTER,\n" " default_height: 250,\n" " default_width: 100,\n" " border_width: 20,\n" " title: \"My Phone Book\"});\n" "\n" " // Create the underlying liststore for the phonebook\n" " this._listStore = new Gtk.ListStore ();\n" " this._listStore.set_column_types ([\n" " GObject.TYPE_STRING,\n" " GObject.TYPE_STRING,\n" " GObject.TYPE_STRING,\n" " GObject.TYPE_STRING]);\n" "\n" " // Data to go in the phonebook\n" " let phonebook =\n" " [{ name: \"Jurg\", surname: \"Billeter\", phone: \"555-0123\",\n" " description: \"A friendly person.\"},\n" " { name: \"Johannes\", surname: \"Schmid\", phone: \"555-1234\",\n" " description: \"Easy phone number to remember.\"},\n" " { name: \"Julita\", surname: \"Inca\", phone: \"555-2345\",\n" " description: \"Another friendly person.\"},\n" " { name: \"Javier\", surname: \"Jardon\", phone: \"555-3456\",\n" " description: \"Bring fish for his penguins.\"},\n" " { name: \"Jason\", surname: \"Clinton\", phone: \"555-4567\",\n" " description: \"His cake's not a lie.\"},\n" " { name: \"Random J.\", surname: \"Hacker\", phone: \"555-5678\",\n" " description: \"Very random!\"}];\n" "\n" " // Put the data in the phonebook\n" " for (let i = 0; i < phonebook.length; i++ ) {\n" " let contact = phonebook [i];\n" " this._listStore.set (this._listStore.append(), [0, 1, 2, 3],\n" " [contact.name, contact.surname, contact.phone, contact.description]);\n" " }\n" "\n" " // Create the treeview\n" " this._treeView = new Gtk.TreeView ({\n" " expand: true,\n" " model: this._listStore });\n" "\n" " // Create the columns for the address book\n" " let firstName = new Gtk.TreeViewColumn ({ title: \"First Name\" });\n" " let lastName = new Gtk.TreeViewColumn ({ title: \"Last Name\" });\n" " let phone = new Gtk.TreeViewColumn ({ title: \"Phone Number\" });\n" "\n" " // Create a cell renderer for when bold text is needed\n" " let bold = new Gtk.CellRendererText ({\n" " weight: Pango.Weight.BOLD });\n" "\n" " // Create a cell renderer for normal text\n" " let normal = new Gtk.CellRendererText ();\n" "\n" " // Pack the cell renderers into the columns\n" " firstName.pack_start (bold, true);\n" " lastName.pack_start (normal, true);\n" " phone.pack_start (normal, true);\n" "\n" " // Set each column to pull text from the TreeView's model\n" " firstName.add_attribute (bold, \"text\", 0);\n" " lastName.add_attribute (normal, \"text\", 1);\n" " phone.add_attribute (normal, \"text\", 2);\n" "\n" " // Insert the columns into the treeview\n" " this._treeView.insert_column (firstName, 0);\n" " this._treeView.insert_column (lastName, 1);\n" " this._treeView.insert_column (phone, 2);\n" "\n" " // Create the label that shows details for the name you select\n" " this._label = new Gtk.Label ({ label: \"\" });\n" "\n" " // Get which item is selected\n" " this.selection = this._treeView.get_selection();\n" "\n" " // When something new is selected, call _on_changed\n" " this.selection.connect ('changed', this._onSelectionChanged.bind(this));\n" "\n" " // Create a grid to organize everything in\n" " this._grid = new Gtk.Grid;\n" "\n" " // Attach the treeview and label to the grid\n" " this._grid.attach (this._treeView, 0, 0, 1, 1);\n" " this._grid.attach (this._label, 0, 1, 1, 1);\n" "\n" " // Add the grid to the window\n" " this._window.add (this._grid);\n" "\n" " // Show the window and all child widgets\n" " this._window.show_all();\n" " }\n" "\n" " _onSelectionChanged() {\n" " // Grab a treeiter pointing to the current selection\n" " let [ isSelected, model, iter ] = this.selection.get_selected();\n" "\n" " // Set the label to read off the values stored in the current selection\n" " this._label.set_label (\"\\n\" +\n" " this._listStore.get_value (iter, 0) + \" \" +\n" " this._listStore.get_value (iter, 1) + \" \" +\n" " this._listStore.get_value (iter, 2) + \"\\n\" +\n" " this._listStore.get_value (iter, 3)\n" " );\n" " }\n" "};\n" "\n" "// Run the application\n" "let app = new TreeViewExample ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:282 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.TreeSelection" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:283 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.TreeView" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/treeview_simple_liststore.js.page:284 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.TreeViewColumn" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/treeview_simple_liststore.py.page:8 #, fuzzy #| msgid "Simple TreeView with ListStore (Python)" msgctxt "text" msgid "Simple TreeView with ListStore (Python)" msgstr "TreeView tout simple avec ListStore (Python)" #. (itstool) path: info/desc #: C/treeview_simple_liststore.py.page:20 msgid "A TreeView displaying a ListStore (simpler example)" msgstr "Un TreeView affichant un ListStore (exemple le plus simple)" #. (itstool) path: page/title #: C/treeview_simple_liststore.py.page:23 msgid "Simple TreeView with ListStore" msgstr "TreeView tout simple avec ListStore" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/treeview_simple_liststore.py.page:24 #: C/treeview_simple_liststore.vala.page:24 #, fuzzy #| msgid "" #| "@@image: 'media/treeview_simple_liststore.png'; " #| "md5=2dc501a2b95b094da985d37b66aee90c" msgctxt "_" msgid "" "external ref='media/treeview_simple_liststore.png' " "md5='2dc501a2b95b094da985d37b66aee90c'" msgstr "" "@@image: 'media/treeview_simple_liststore.png'; " "md5=2dc501a2b95b094da985d37b66aee90c" #. (itstool) path: section/code #: C/treeview_simple_liststore.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Pango\n" "import sys\n" "\n" "columns = [\"First Name\",\n" " \"Last Name\",\n" " \"Phone Number\"]\n" "\n" "phonebook = [[\"Jurg\", \"Billeter\", \"555-0123\"],\n" " [\"Johannes\", \"Schmid\", \"555-1234\"],\n" " [\"Julita\", \"Inca\", \"555-2345\"],\n" " [\"Javier\", \"Jardon\", \"555-3456\"],\n" " [\"Jason\", \"Clinton\", \"555-4567\"],\n" " [\"Random J.\", \"Hacker\", \"555-5678\"]]\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"My Phone Book\", application=app)\n" " self.set_default_size(250, 100)\n" " self.set_border_width(10)\n" "\n" " # the data in the model (three strings for each row, one for each\n" " # column)\n" " listmodel = Gtk.ListStore(str, str, str)\n" " # append the values in the model\n" " for i in range(len(phonebook)):\n" " listmodel.append(phonebook[i])\n" "\n" " # a treeview to see the data stored in the model\n" " view = Gtk.TreeView(model=listmodel)\n" " # for each column\n" " for i, column in enumerate(columns):\n" " # cellrenderer to render the text\n" " cell = Gtk.CellRendererText()\n" " # the text in the first column should be in boldface\n" " if i == 0:\n" " cell.props.weight_set = True\n" " cell.props.weight = Pango.Weight.BOLD\n" " # the column is created\n" " col = Gtk.TreeViewColumn(column, cell, text=i)\n" " # and it is appended to the treeview\n" " view.append_column(col)\n" "\n" " # when a row is selected, it emits a signal\n" " view.get_selection().connect(\"changed\", self.on_changed)\n" "\n" " # the label we use to show the selection\n" " self.label = Gtk.Label()\n" " self.label.set_text(\"\")\n" "\n" " # a grid to attach the widgets\n" " grid = Gtk.Grid()\n" " grid.attach(view, 0, 0, 1, 1)\n" " grid.attach(self.label, 0, 1, 1, 1)\n" "\n" " # attach the grid to the window\n" " self.add(grid)\n" "\n" " def on_changed(self, selection):\n" " # get the model and the iterator that points at the data in the model\n" " (model, iter) = selection.get_selected()\n" " # set the label to a new value depending on the selection\n" " self.label.set_text(\"\\n %s %s %s\" %\n" " (model[iter][0], model[iter][1], model[iter][2]))\n" " return True\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.py.page:37 msgid "" "The TreeView widget is designed around a Model/View/Controller " "design: the Model stores the data; the View gets change " "notifications and displays the content of the model; the Controller, finally, changes the state of the model and notifies the view of these " "changes. For more information, and for a list of useful methods for " "TreeModel, see ." msgstr "" #. (itstool) path: section/p #: C/treeview_simple_liststore.py.page:38 msgid "" "In line 44 the \"changed\" signal is connected to the callback " "function on_changed() using widget." "connect(signal, callback function). See for a more detailed explanation." msgstr "" #. (itstool) path: item/p #: C/treeview_simple_liststore.py.page:51 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "Fonts" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: info/title #: C/treeview_simple_liststore.vala.page:8 #, fuzzy #| msgid "Simple Treeview with ListStore (Vala)" msgctxt "text" msgid "Simple Treeview with ListStore (Vala)" msgstr "TreeView tout simple avec ListStore (Vala)" #. (itstool) path: info/desc #: C/treeview_simple_liststore.vala.page:20 msgid "A widget can display any TreeModel implementation (lists and trees)" msgstr "" "Un composant graphique peut afficher n'importe quelle implémentation de " "TreeModel (en listes et arborescentes)" #. (itstool) path: page/title #: C/treeview_simple_liststore.vala.page:23 msgid "Simple Treeview with ListStore" msgstr "Simple Treeview avec ListStore" #. (itstool) path: page/p #: C/treeview_simple_liststore.vala.page:25 msgid "" "This TreeView displays a simple ListStore with the Selection \"changed\" " "signal connected." msgstr "" "Ce Treeview affiche un ListStore tout simple avec le signal « changed » de " "la sélection connecté." #. (itstool) path: page/code #: C/treeview_simple_liststore.vala.page:27 #, no-wrap msgid "" "public class PhoneBookEntry {\n" "\tpublic string firstname;\n" "\tpublic string lastname;\n" "\tpublic string phone;\n" "\n" "\tpublic PhoneBookEntry (string f, string l, string p) {\n" "\t\tthis.firstname = f;\n" "\t\tthis.lastname = l;\n" "\t\tthis.phone = p;\n" "\t}\n" "}\n" "\n" "class TreeViewSimpleListStore : Gtk.ApplicationWindow {\n" "\n" "\tGtk.Label label;\n" "\n" "\tPhoneBookEntry[] phonebook = {\n" "\t\tnew PhoneBookEntry (\"Jurg\", \"Billeter\", \"555-0123\"),\n" "\t\tnew PhoneBookEntry (\"Johannes\", \"Schmid\", \"555-1234\"),\n" "\t\tnew PhoneBookEntry (\"Julita\", \"Inca\", \"555-2345\"),\n" "\t\tnew PhoneBookEntry (\"Javier\", \"Jardon\", \"555-3456\"),\n" "\t\tnew PhoneBookEntry (\"Jason\", \"Clinton\", \"555-4567\"),\n" "\t\tnew PhoneBookEntry (\"Random J.\", \"Hacker\", \"555-5678\")\n" "\t};\n" "\n" "\tenum Column {\n" "\t\tFIRSTNAME,\n" "\t\tLASTNAME,\n" "\t\tPHONE\n" "\t}\n" "\n" "\tinternal TreeViewSimpleListStore (MyApplication app) {\n" "\t\tObject (application: app, title: \"My Phone Book\");\n" "\n" "\t\tthis.set_default_size (250, 100);\n" "\t\tthis.border_width = 10;\n" "\n" "\t\tvar view = new Gtk.TreeView ();\n" "\t\tthis.setup_treeview (view);\n" "\t\tview.expand = true;\n" "\n" "\t\tlabel = new Gtk.Label (\"\");\n" "\n" "\t\tvar grid = new Gtk.Grid ();\n" "\n" "\t\tgrid.attach (view, 0, 0, 1, 1);\n" "\t\tgrid.attach (label, 0, 1, 1, 1);\n" "\t\tthis.add (grid);\n" "\n" "\t\tvar selection = view.get_selection ();\n" "\t\tselection.changed.connect (this.on_changed);\n" "\t}\n" "\n" "\tvoid setup_treeview (Gtk.TreeView view) {\n" "\t\tvar listmodel = new Gtk.ListStore (3, typeof (string),\n" " typeof (string),\n" " typeof (string));\n" "\t\tview.set_model (listmodel);\n" "\n" "\t\tvar cell = new Gtk.CellRendererText ();\n" "\n" "\t\t/* 'weight' refers to font boldness.\n" "\t\t * 400 is normal.\n" "\t\t * 700 is bold.\n" "\t\t */\n" "\t\tcell.set (\"weight_set\", true);\n" "\t\tcell.set (\"weight\", 700);\n" "\n" "\t\t/*columns*/\n" "\t\tview.insert_column_with_attributes (-1, \"First Name\",\n" " cell, \"text\",\n" " Column.FIRSTNAME);\n" "\n" "\t\tview.insert_column_with_attributes (-1, \"Last Name\",\n" " new Gtk.CellRendererText (),\n" " \"text\", Column.LASTNAME);\n" "\n" "\t\tview.insert_column_with_attributes (-1, \"Phone Number\",\n" " new Gtk.CellRendererText (),\n" " \"text\", Column.PHONE);\n" "\n" "\t\t/* Insert the phonebook into the ListStore */\n" "\t\tGtk.TreeIter iter;\n" "\t\tfor (int i = 0; i < phonebook.length; i++) {\n" "\t\t\tlistmodel.append (out iter);\n" "\t\t\tlistmodel.set (iter, Column.FIRSTNAME,\n" " phonebook[i].firstname,\n" " Column.LASTNAME, phonebook[i].lastname,\n" " Column.PHONE, phonebook[i].phone);\n" "\t\t}\n" "\t}\n" "\n" "\tvoid on_changed (Gtk.TreeSelection selection) {\n" "\t\tGtk.TreeModel model;\n" "\t\tGtk.TreeIter iter;\n" "\t\tstring name;\n" "\t\tstring lastname;\n" "\t\tstring phone;\n" "\n" "\t\tif (selection.get_selected (out model, out iter)) {\n" "\t\t\tmodel.get (iter,\n" " Column.FIRSTNAME, out name,\n" " Column.LASTNAME, out lastname,\n" " Column.PHONE, out phone);\n" "\n" "\t\t\tlabel.set_text (\"\\n\" + name + \" \" + lastname + \" \" + phone);\n" "\t\t}\n" "\t}\n" "}\n" "\n" "class MyApplication : Gtk.Application {\n" "\tprotected override void activate () {\n" "\n" "\t\t/* Create new Window and show all the things. */\n" "\t\tnew TreeViewSimpleListStore (this).show_all ();\n" "\t}\n" "\n" "\tinternal MyApplication () {\n" "\t\tObject (application_id: \"example.liststore.simple.treeview\");\n" "\t}\n" "}\n" "\n" "int main (string[] args) {\n" "\treturn new MyApplication ().run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/treeview_simple_liststore.vala.page:32 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "TreeView" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: item/p #: C/treeview_simple_liststore.vala.page:34 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk." "TreeSelection" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/desc #: C/treeview_treestore.py.page:20 msgid "A TreeView displaying a TreeStore (simpler example)" msgstr "Un TreeView affichant un TreeStore (exemple le plus simple)" #. (itstool) path: page/title #: C/treeview_treestore.py.page:23 #, fuzzy #| msgid "Simple TreeView with ListStore" msgid "Simpler TreeView with TreeStore" msgstr "TreeView tout simple avec ListStore" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/treeview_treestore.py.page:24 #, fuzzy #| msgid "" #| "@@image: 'media/treeview_treestore.png'; " #| "md5=5ca87bc4acd55c527b3fb5fd46779d85" msgctxt "_" msgid "" "external ref='media/treeview_treestore.png' " "md5='5ca87bc4acd55c527b3fb5fd46779d85'" msgstr "" "@@image: 'media/treeview_treestore.png'; md5=5ca87bc4acd55c527b3fb5fd46779d85" #. (itstool) path: page/p #: C/treeview_treestore.py.page:25 msgid "This TreeView displays a TreeStore." msgstr "Ce TreeView affiche un TreeStore." #. (itstool) path: section/code #: C/treeview_treestore.py.page:32 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import Pango\n" "import sys\n" "\n" "books = [[\"Tolstoy, Leo\", \"War and Peace\", \"Anna Karenina\"],\n" " [\"Shakespeare, William\", \"Hamlet\", \"Macbeth\", \"Othello\"],\n" " [\"Tolkien, J.R.R.\", \"The Lord of the Rings\"]]\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Library\", application=app)\n" " self.set_default_size(250, 100)\n" " self.set_border_width(10)\n" "\n" " # the data are stored in the model\n" " # create a treestore with one column\n" " store = Gtk.TreeStore(str)\n" " for i in range(len(books)):\n" " # the iter piter is returned when appending the author\n" " piter = store.append(None, [books[i][0]])\n" " # append the books as children of the author\n" " j = 1\n" " while j < len(books[i]):\n" " store.append(piter, [books[i][j]])\n" " j += 1\n" "\n" " # the treeview shows the model\n" " # create a treeview on the model store\n" " view = Gtk.TreeView()\n" " view.set_model(store)\n" "\n" " # the cellrenderer for the column - text\n" " renderer_books = Gtk.CellRendererText()\n" " # the column is created\n" " column_books = Gtk.TreeViewColumn(\n" " \"Books by Author\", renderer_books, text=0)\n" " # and it is appended to the treeview\n" " view.append_column(column_books)\n" "\n" " # the books are sortable by author\n" " column_books.set_sort_column_id(0)\n" "\n" " # add the treeview to the window\n" " self.add(view)\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: info/title #: C/tutorial.py.page:9 #, fuzzy #| msgid "Guitar Tuner" msgctxt "text" msgid "Tutorial for beginners (Python)" msgstr "Accordeur de guitare" #. (itstool) path: info/desc #: C/tutorial.py.page:13 msgid "" "A tutorial for beginners who want to learn how to program GUIs using GTK+ in " "Python." msgstr "" "Un tutoriel pour les débutants souhaitant apprendre comment programmer des " "interfaces utilisateur graphiques en Python." #. (itstool) path: credit/years #: C/tutorial.py.page:22 #, fuzzy #| msgid "2010, 2011" msgid "2012 2013" msgstr "2010, 2011" #. (itstool) path: credit/name #: C/tutorial.py.page:25 msgid "Jim Campbell" msgstr "" #. (itstool) path: synopsis/p #: C/tutorial.py.page:34 #, fuzzy #| msgid "" #| "By following these tutorials you will learn the basics of GUI programming " #| "using Gtk+." msgid "" "By following these tutorials you will learn the basics of GUI programming " "using GTK+ in Python." msgstr "" "En suivant ces tutoriels, vous allez apprendre les bases de la programmation " "d'interfaces utilisateurs avec Gtk+." #. (itstool) path: synopsis/p #: C/tutorial.py.page:36 msgid "" "If you have never programmed before, or are not familiar with the concepts " "of object oriented programming, you may need to learn a few basics first. " "The book Learn Python " "the Hard Way or The Python Tutorial may be a better place for you to start. " "You may also be interested in The Python GTK+ 3 Tutorial. " "Once you master the basics, be sure to come back and check out these " "tutorials." msgstr "" "Si vous n'avez jamais programmé auparavant, ou si vous n'êtes pas à l'aise " "avec le concept de programmation orienté objets, il est préférable " "d'acquérir quelques bases avant toute chose. Vous pourriez par exemple " "commencer par lire les livres Learn Python the Hard Way ou The Python Tutorial. Vous pourriez aussi " "être intéressé par The Python GTK+ 3 Tutorial. Dès que vous " "maîtrisez les bases, n'oubliez pas de revenir consulter ces tutoriels." #. (itstool) path: section/title #: C/tutorial.py.page:42 msgid "To run the code samples" msgstr "Lancement des exemples de code" #. (itstool) path: section/p #: C/tutorial.py.page:44 #, fuzzy #| msgid "To run the code samples:" msgid "To run the code samples in the tutorial:" msgstr "Pour lancer les exemples de code :" #. (itstool) path: item/p #: C/tutorial.py.page:46 #, fuzzy #| msgid "Copy and paste the code into filename.py" msgid "" "Type or copy and paste the code into a file, and save the file with a name " "like filename.py" msgstr "Copiez et collez le code dans nomdufichier.py" #. (itstool) path: item/p #: C/tutorial.py.page:47 #, fuzzy #| msgid "These RadioButtons report their activity in the terminal." msgid "To execute the code, type in the terminal:" msgstr "Ces boutons radio signalent leur activité dans le terminal." #. (itstool) path: item/screen #: C/tutorial.py.page:48 #, no-wrap msgid "python filename.py" msgstr "python nomdufichier.py" #. (itstool) path: section/p #: C/tutorial.py.page:51 msgid "" "After executing the code, you will either see the widget on your screen, or " "(if you have mistyped some of the code) you will see an error message that " "will help you identify the problem." msgstr "" #. (itstool) path: section/title #: C/tutorial.py.page:55 #, fuzzy #| msgid "A path through the widgets" msgid "A path through the widgets (with some theory)" msgstr "Parcours des éléments graphiques" #. (itstool) path: section/p #: C/tutorial.py.page:56 msgid "" "The tutorial will walk you through increasingly complex examples and " "programming theory, but you can also feel free to just go directly to the " "tutorial that is most helpful to you." msgstr "" #. (itstool) path: steps/title #: C/tutorial.py.page:58 msgid "Tutorial" msgstr "Tutoriel" #. (itstool) path: steps/title #: C/tutorial.py.page:60 msgid "Basic windows" msgstr "Fenêtres élémentaires" #. (itstool) path: steps/title #: C/tutorial.py.page:65 msgid "Images and labels" msgstr "Images et étiquettes" #. (itstool) path: steps/title #: C/tutorial.py.page:71 #, fuzzy #| msgid "Introduction" msgid "Introduction to properties" msgstr "Introduction" #. (itstool) path: steps/title #: C/tutorial.py.page:75 msgid "Grid, separator and scrolling" msgstr "" #. (itstool) path: steps/title #: C/tutorial.py.page:82 #, fuzzy #| msgid "Signals and callbacks" msgid "Signals, callbacks and buttons" msgstr "Signaux et rappels" #. (itstool) path: steps/title #: C/tutorial.py.page:96 msgid "Other display widgets" msgstr "Autre éléments graphiques d'affichage" #. (itstool) path: steps/title #: C/tutorial.py.page:102 #, fuzzy #| msgid "Grid widget" msgid "Entry widgets" msgstr "Élément graphique Grille" #. (itstool) path: steps/title #: C/tutorial.py.page:108 #, fuzzy #| msgid "A widget which displays text" msgid "A widget to write and display text" msgstr "Un élément graphique qui affiche du texte" #. (itstool) path: steps/title #: C/tutorial.py.page:112 msgid "Dialogs" msgstr "Boîtes de dialogue" #. (itstool) path: steps/title #: C/tutorial.py.page:118 #, fuzzy #| msgid "Menus and toolbars (also: using Glade)" msgid "Menus, Toolbars and Tooltips (also: using Glade and GtkBuilder)" msgstr "Menus et barres d'outils (et également utilisation de Glade)" #. (itstool) path: steps/title #: C/tutorial.py.page:133 msgid "TreeViews and ComboBoxes (using the M/V/C design)" msgstr "Arborescences et boites combinées (utilisant la conception M/V/C)" #. (itstool) path: steps/title #: C/tutorial.py.page:143 msgid "Custom widget" msgstr "Élément graphique personnalisé" #. (itstool) path: info/title #: C/vala.page:7 #, fuzzy #| msgid "Vala" msgctxt "link" msgid "Vala" msgstr "Vala" #. (itstool) path: page/title #: C/vala.page:21 msgid "Tutorials, code samples and platform demos in Vala" msgstr "Tutoriels, exemples de code et plateforme de démonstrations en vala" #. (itstool) path: section/title #: C/vala.page:26 msgid "Code samples and tutorial" msgstr "Exemples de code et tutoriel" #. (itstool) path: info/title #: C/weatherApp.js.page:7 #, fuzzy #| msgid "Weather Application (JavaScript)" msgctxt "text" msgid "Weather application (JavaScript)" msgstr "Application météo (JavaScript)" #. (itstool) path: info/desc #: C/weatherApp.js.page:22 msgid "" "How to plan an application that uses asynchronous calls. Asynchronous calls " "will be presented through a weather application." msgstr "" "Comment planifier une application qui utilise des appels asynchrones. Les " "appels asynchrones sont présentés au travers d'une application météo." #. (itstool) path: page/title #: C/weatherApp.js.page:27 #, fuzzy #| msgid "4 Weather Application" msgid "Weather application" msgstr "4 Application météo" #. (itstool) path: synopsis/p #: C/weatherApp.js.page:29 msgid "" "In this guide well construct a weather application using asynchronous calls. " "Weather information in this example is fetched from geonames.org and the " "application is using the ICAO codes to place your weather " "request. To write and run all the code examples yourself, you need an editor " "to write code in, Terminal and GNOME 3 or higher installed into your " "computer. In this guide we we'll go through the following parts:" msgstr "" "Dans cette partie du guide, nous allons construire une application météo " "utilisant des appels asynchrones. Dans cet exemple, les informations " "météorologiques sont récupérées sur geonames.org et l'application utilise " "les codes OACI pour localiser les requêtes météo. Pour " "écrire et lancer tous les exemples de code, vous avez besoin d'un éditeur " "pour écrire le code, de l'application Terminal et d'un ordinateur sur lequel " "GNOME 3 ou supérieur est installé. Dans ce guide, nous illustrerons les " "éléments suivants :" #. (itstool) path: item/p #: C/weatherApp.js.page:32 #, fuzzy #| msgid "Planning the graphical user interface" msgid "Planning the graphical user interface" msgstr "Organisation de l'interface graphique utilisateur" #. (itstool) path: item/p #: C/weatherApp.js.page:33 msgid "Asynchronous calls" msgstr "" #. (itstool) path: item/p #: C/weatherApp.js.page:34 #, fuzzy #| msgid "The main program file" msgid "The main program file" msgstr "Le fichier du programme principal" #. (itstool) path: item/p #: C/weatherApp.js.page:35 #, fuzzy #| msgid "Local library GeoNames" msgid "Local library GeoNames" msgstr "Bibliothèque locale GeoNames" #. (itstool) path: item/p #: C/weatherApp.js.page:36 msgid "Autotools and Icons" msgstr "" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/weatherApp.js.page:41 #, fuzzy #| msgid "" #| "@@image: 'media/weatherAppJs.png'; md5=1fe859ac4854273d72ea8fc9203639b2" msgctxt "_" msgid "" "external ref='media/weatherAppJs.png' md5='1fe859ac4854273d72ea8fc9203639b2'" msgstr "" "@@image: 'media/weatherAppJs.png'; md5=1fe859ac4854273d72ea8fc9203639b2" #. (itstool) path: section/title #: C/weatherApp.js.page:44 msgid "Planning the graphical user interface" msgstr "Organisation de l'interface graphique utilisateur" #. (itstool) path: section/p #: C/weatherApp.js.page:45 msgid "" "Structuring an application for GNOME 3 means you will be using GTK+. The " "most important thing is to remember that the main window will only accept " "one widget. You must plan your structure accordingly (this example is using " "Gtk.Grid). A useful method is to draw out the main window and place every " "widget needed inside that box. By looking at an image of your future " "application it is easier to tell what are the relations between widgets. For " "example Gtk.Grid places your widgets in relation to other widgets, so after " "the first widget is in place, placing widgets can be done in relation to any " "widget on the grid." msgstr "" "Pour structurer une application pour GNOME 3, vous devez utiliser GTK+. " "Vous devez aussi vous souvenir que la fenêtre principale ne peut comporter " "qu'un seul composant graphique, donc organisez votre structure en fonction " "de cet impératif (dans cet exemple, nous utilisons Gtk.Grid). Une bonne " "méthode consiste à dessiner la boîte « fenêtre principale » et d'y placer " "chaque composant graphique nécessaire. En regardant l'image de votre future " "application, vous pourrez plus facilement déceler les relations existantes " "entre les éléments graphiques. Par exemple, Gtk.Grid place vos éléments " "graphiques en fonction des autres, donc la position du premier sur la grille " "conditionne le placement des autres." #. (itstool) path: section/title #: C/weatherApp.js.page:48 msgid "Asynchronous calls" msgstr "Appels asynchrones" # Bruno : for example file system I/O ??? #. (itstool) path: section/p #: C/weatherApp.js.page:49 msgid "" "With many programming languages, all operations are run synchronously - you " "tell the program to do something, and it will wait until that action " "completes before proceeding. This is however bad for graphical user " "interfaces, as then the whole application will be frozen while the program " "waits for the operation. Going asynchronous (async) helps here. With async " "calls, your UI won't be blocked with any requests. Async calls make your " "application more flexible and better equipped to handle situations when " "calls take more time than expected or for some reason get jammed. Async " "calls can be used for example file system I/O and for slower calculations in " "the background." msgstr "" "Avec beaucoup de langages de programmation, toutes les opérations sont " "exécutées de manière synchrone : quand vous exécutez une action, le " "programme attend qu'elle soit terminée avant de continuer. Cependant, cette " "procédure est mal adaptée aux interfaces utilisateurs graphiques, car " "l'application devient inactive pendant ce temps. La méthode asynchrone " "(async) est donc beaucoup mieux adaptée dans notre cas, car elle ne bloque " "pas votre interface pour d'autres actions. Elle rend ainsi votre application " "plus flexible et mieux armée pour affronter des appels plus longs que " "prévus, ou qui parfois restent bloqués pour une raison ou une autre. Vous " "pouvez par exemple utiliser cette méthode pour des accès entrée/sortie de " "fichiers systèmes et des calculs lents en arrière-plan." # Bruno : would have to ***be*** killed from terminal." #. (itstool) path: section/p #: C/weatherApp.js.page:52 msgid "" "In this example we have to get data from geonames.org. While we do that we " "want the rest of our program to continue. If we wouldn't get any information " "from geonames.org for the lack of internet connection and this would be a " "synchronous application we would never get to the point where our " "main_quit() is processed correctly and the application would have to killed " "from Terminal." msgstr "" "Dans cet exemple, il nous faut obtenir des données de geonames.org. Pendant " "ce temps, nous voulons que le reste du programme continue à tourner. Si nous " "utilisions pour cela une application synchrone et que nous n'arrivions pas à " "avoir une connexion internet fonctionnelle avec le site geonames.org, nous " "n'obtiendrions aucune donnée et donc nous n'atteindrions jamais la ligne où " "l'instruction main_quit() est exécutée. Il faudrait alors « tuer » " "l'application à partir du Terminal." #. (itstool) path: section/title #: C/weatherApp.js.page:55 msgid "The different parts of the program" msgstr "Les différentes parties du programme" #. (itstool) path: page/title #: C/weatherAppMain.js.page:19 msgid "The main program file" msgstr "Le fichier du programme principal" #. (itstool) path: synopsis/p #: C/weatherAppMain.js.page:21 msgid "" "In this part of the guide well construct the main program file of the " "weather application. To write and run all the code examples yourself, you " "need an editor to write code in, Terminal and GNOME 3 or higher installed " "into your computer. In this part we we'll go through the following parts:" msgstr "" "Dans cette partie du guide, nous allons construire le fichier du programme " "principal de l'application météo. Pour écrire et lancer tous les exemples de " "code, vous avez besoin d'un éditeur pour écrire le code, de l'application " "Terminal et d'un ordinateur sur lequel GNOME 3 ou supérieur est installé. " "Dans ce guide, nous illustrerons les éléments suivants :" #. (itstool) path: item/p #: C/weatherAppMain.js.page:26 #, fuzzy #| msgid "Adding a grid and all the necessary widgets to it" msgid "" "Adding a grid and all the necessary widgets to it" msgstr "Ajout d'une grille et de tous les éléments graphiques nécessaires" #. (itstool) path: item/p #: C/weatherAppMain.js.page:27 #, fuzzy #| msgid "Requesting the weather information asynchronously" msgid "" "Requesting the weather information asynchronously" msgstr "Requête des informations météo de manière asynchrone" #. (itstool) path: item/p #: C/weatherAppMain.js.page:28 #, fuzzy #| msgid "Connecting signals to button and entry." msgid "" "Connecting signals to button and entry." msgstr "Connexion des signaux au bouton et champ de saisie." #. (itstool) path: item/p #: C/weatherAppMain.js.page:29 msgid "weatherapp.js" msgstr "" #. (itstool) path: section/p #: C/weatherAppMain.js.page:36 msgid "" "This line tells how to run the script. It needs to be the first line of the " "code and it needs to be executable. To get the execution rights go to " "Terminal and run in right folder: chmod +x scriptname. Or you can use the " "graphical filemanager. Just go to the right folder where your code is, right " "click you code file, choose properties, click the permissions tab and check " "the box for allow executing file as a program" msgstr "" "Cette ligne indique comment exécuter le script. Elle doit être la première " "ligne de code et le script doit être exécutable. Pour donner les bonnes " "permissions, allez dans Terminal et lancez dans le dossier correct la " "commande : chmod +x nomduscript. Vous pouvez aussi utiliser le gestionnaire " "de fichiers. Déplacez-vous dans le dossier où se trouve votre code, faites " "un clic-droit sur le fichier, sélectionnez Propriétés, cliquez sur l'onglet " "Permissions et cochez la case pour permettre l'exécution du fichier comme un " "programme." #. (itstool) path: section/code #: C/weatherAppMain.js.page:42 #, no-wrap msgid "" "\n" "var Gtk = imports.gi.Gtk;\n" "const WeatherService = imports.geonames;" msgstr "" #. (itstool) path: section/p #: C/weatherAppMain.js.page:45 msgid "" "In order to have a working program we need to import a GObject Introspection " "-library to our use. For working UI, we need Gtk. Gtk is imported in the " "beginning so we have it in our use everywhere. We also import our own local " "JavaScript library geonames to our use here." msgstr "" "Afin que le programme fonctionne, vous devez importer une bibliothèque " "d'introspection GObject à utiliser. Pour faire une interface graphique, nous " "avons besoin de Gtk. Gtk est importée au début afin de pouvoir l'utiliser " "partout ensuite. Nous importons également notre propre bibliothèque locale " "JavaScript geonames afin de pouvoir l'utiliser ici." #. (itstool) path: section/code #: C/weatherAppMain.js.page:50 #, no-wrap msgid "" "\n" "// Initialize the gtk\n" "Gtk.init(null, 0);\n" "//create your window, name it and connect the x to quit function. Remember that window is a taken word\n" "var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n" "weatherwindow.title = \"Today's weather\";\n" "//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n" "weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n" "\n" "weatherwindow.show_all();\n" "//and run it\n" "Gtk.main();" msgstr "" #. (itstool) path: section/title #: C/weatherAppMain.js.page:64 msgid "Adding a grid and all the necessary widgets to it" msgstr "Ajout d'une grille et de tous les éléments graphiques nécessaires" #. (itstool) path: section/code #: C/weatherAppMain.js.page:65 #, no-wrap msgid "" "\n" "var grid = new Gtk.Grid();\n" "weatherwindow.add(grid);\n" "\n" "//We initialize the icon here, but decide the file later in geonames.js.\n" "var weatherIcon = new Gtk.Image();\n" "\n" "//Set some labels to your window\n" "var label1 = new Gtk.Label({label: \"\"});\n" "var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n" "var label3 = new Gtk.Label({label: \"\"});\n" "\n" "var entry = new Gtk.Entry();\n" "entry.set_width_chars(4);\n" "entry.set_max_length(4);\n" "var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n" "var button1 = new Gtk.Button({label: \"search!\"});\n" "\n" "grid.attach(label4, 2, 1, 1, 1);\n" "grid.attach_next_to(label1,label4,3,1,1);\n" "grid.attach_next_to(label2,label1,3,1,1);\n" "grid.attach_next_to(label3,label2,3,1,1);\n" "grid.attach_next_to(entry,label4,1,1,1);\n" "grid.attach_next_to(button1,entry,1,1,1);\n" "grid.attach_next_to(weatherIcon,label2,1,1,1)\n" msgstr "" #. (itstool) path: section/p #: C/weatherAppMain.js.page:91 #, fuzzy #| msgid "" #| "In this section we create the grid we are going to use for positioning " #| "the widgets. All the buttons, labels and entrys are initialized and " #| "placed on the grid. As seen from the placing of the different widgets, " #| "they don't need to be related only to one widget. At this point some of " #| "the labels don't have any content. The content for those widgets is " #| "applied later. If you run the application at this stage, you have the UI " #| "ready, but the widgets are not connected to anything. For this we need to " #| "first build the weather searching local library, and then get the " #| "information we need asynchronously. When we have our local library ready " #| "we can connect it to the necessary widgets." msgid "" "In this section we create the grid we are going to use for positioning the " "widgets. All the buttons, labels and entries are initialized and placed on " "the grid. As seen from the placing of the different widgets, they don't need " "to be related only to one widget. At this point some of the labels don't " "have any content. The content for those widgets is applied later. If you run " "the application at this stage, you have the UI ready, but the widgets are " "not connected to anything. For this we need to first build the weather " "searching local library, and then get the information we need " "asynchronously. When we have our local library ready we can connect it to " "the necessary widgets." msgstr "" "Dans cette section, nous créons la grille que nous allons utiliser pour " "positionner les éléments graphiques. Tous les boutons, étiquettes et champs " "de saisie sont initialisés et positionnés dans la grille. Comme vous pouvez " "le voir à partir du positionnement des différents éléments graphiques, ils " "ne sont pas nécessairement en relation avec un seul composant graphique. " "Pour l'instant, certaines étiquettes n'ont pas de contenu. Le contenu de ces " "éléments graphiques est appliqué plus tard. Si vous lancez l'application à " "cet instant, l'interface graphique est prête mais les éléments graphiques ne " "sont connectés à rien. Pour cela, nous avons besoin de construire d'abord la " "bibliothèque locale de recherche météorologique puis de récupérer les " "informations nécessaires de manière asynchrone. Lorsque notre bibliothèque " "locale est prête, nous pouvons la connecter aux éléments graphiques " "nécessaires." #. (itstool) path: section/title #: C/weatherAppMain.js.page:95 msgid "Requesting the weather information asynchronously" msgstr "Requête des informations météo de manière asynchrone" #. (itstool) path: section/code #: C/weatherAppMain.js.page:96 #, no-wrap msgid "" "\n" "function getWeatherForStation() {\n" " var station = entry.get_text();\n" "\n" " var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n" "\n" " GeoNames.getWeather(function(error, weather) {\n" " //this here works bit like signals. This code will be run when we have weather.\n" " if (error) {\n" " label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n" " return; }\n" " weatherIcon.file = GeoNames.getIcon(weather);\n" "\n" " label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n" " if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n" " label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the sky.\");\n" " }\n" " else {\n" " label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n" " }\n" " label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n" " // ...\n" " });\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/weatherAppMain.js.page:121 msgid "" "This function is dedicated for calling for the weather information and " "updating labels and icons accordingly. In the beginning of the function we " "get the user input for the search. So here for the first time we use our own " "library and assign it to variable GeoNames. While assigning WeatherService " "we give it the station. The firs thing we do with GeoNames is to request " "weather. Everything after GeoNames.getWeather(function(error, weather) " "happens only if we either get an error message or weather information. If " "either doesn't come, the rest of the program works as normal, so main_Quit " "works." msgstr "" "Cette fonction est dédiée à la recherche des informations météo et à la mise " "à jour des étiquettes et des icônes de manière adéquate. Au début de la " "fonction, nous récupérons la saisie de l'utilisateur pour la recherche. " "Ainsi, ici, pour la première fois, nous utilisons notre propre bibliothèque " "et l'attribuons à la variable GeoNames. Lors de l'attribution de " "WeatherService, nous lui fournissons la station. La première chose que nous " "faisons avec GeoNames est la requête météo. Tout ce qui se trouve derrière " "GeoNames.getWeather(function(error, weather) ne se produit que si nous " "obtenons un message d'erreur ou des informations météo. Si aucun des deux ne " "se produit, le reste du programme fonctionne normalement, donc main_Quit " "fonctionne." #. (itstool) path: section/title #: C/weatherAppMain.js.page:125 msgid "Connecting signals to button and entry." msgstr "Connexion des signaux au bouton et champ de saisie." #. (itstool) path: section/code #: C/weatherAppMain.js.page:126 #, no-wrap msgid "" "\n" "entry.connect(\"key_press_event\", function(widget, event) {\n" " if (entry.get_text().length === 4) {\n" " // Enough is enough\n" " getWeatherForStation();\n" " }\n" " return false;\n" "});\n" "\n" "button1.connect(\"clicked\", function(){\n" " getWeatherForStation();\n" "});" msgstr "" #. (itstool) path: section/p #: C/weatherAppMain.js.page:138 msgid "" "And finally we have the connections that make the whole application run as " "it should. We connect both the entry and the button to do the same thing, " "getting the weather. So it doesn't matter weather you press enter of click " "the search button." msgstr "" "Enfin, nous avons les connexions qui permettent à l'application de " "fonctionner comme il se doit. Nous connectons à la fois le champ de saisie " "et le bouton afin qu'ils fassent la même chose : obtenir la météo. De cette " "manière, peu importe que l'utilisateur appuie sur la touche Entrée ou clique " "sur le bouton de recherche." #. (itstool) path: section/title #: C/weatherAppMain.js.page:142 msgid "Weatherapp.js" msgstr "Weatherapp.js" #. (itstool) path: section/p #: C/weatherAppMain.js.page:143 msgid "Weatherapp.js file looks like this:" msgstr "Le fichier weatherapp.js ressemble à ceci :" #. (itstool) path: section/code #: C/weatherAppMain.js.page:144 #, no-wrap msgid "" "\n" "#!/usr/bin/gjs\n" "//The previous line is a hash bang tells how to run the script.\n" "// Note that the script has to be executable (run in terminal in the right folder: chmod +x scriptname)\n" "\n" "var Gtk = imports.gi.Gtk;\n" "\n" "const WeatherService = imports.geonames;\n" "//Bring your own library from same folder (as set in GJS_PATH). If using autotools .desktop will take care of this\n" "\n" "// Initialize the gtk\n" "Gtk.init(null, 0);\n" "//create your window, name it and connect the x to quit function. Remember that window is a taken word\n" "var weatherwindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n" "weatherwindow.title = \"Today's weather\";\n" "//Window only accepts one widget and a title. Further structure with Gtk.boxes of similar\n" "weatherwindow.connect(\"destroy\", function(){Gtk.main_quit()});\n" "//We initialize the icon here, but decide the file later in geonames.js.\n" "\n" "var weatherIcon = new Gtk.Image();\n" "\n" "//Set some labels to your window\n" "var label1 = new Gtk.Label({label: \"\"});\n" "var label2 = new Gtk.Label({label: \"Looking in the sky...\"});\n" "var label3 = new Gtk.Label({label: \"\"});\n" "\n" "var grid = new Gtk.Grid();\n" "weatherwindow.add(grid);\n" "\n" "var entry = new Gtk.Entry();\n" "entry.set_width_chars(4);\n" "entry.set_max_length(4);\n" "var label4 = new Gtk.Label({label: \"Enter ICAO station for weather: \"});\n" "var button1 = new Gtk.Button({label: \"search!\"});\n" "\n" "//some weather\n" "\n" "entry.connect(\"key_press_event\", function(widget, event) {\n" " // FIXME: Get weather on enter (key 13)\n" " if (entry.get_text().length === 4) {\n" " // Enough is enough\n" " getWeatherForStation();\n" " }\n" " return false;\n" "});\n" "\n" "button1.connect(\"clicked\", function(){\n" " getWeatherForStation();\n" "});\n" "\n" "function getWeatherForStation() {\n" " var station = entry.get_text();\n" "\n" " var GeoNames = new WeatherService.GeoNames(station); //\"EFHF\";\n" "\n" " GeoNames.getWeather(function(error, weather) {\n" " //this here works bit like signals. This code will be run when we have weather.\n" " if (error) {\n" " label2.set_text(\"Suggested ICAO station does not exist Try EFHF\");\n" " return; }\n" " weatherIcon.file = GeoNames.getIcon(weather);\n" "\n" " label1.set_text(\"Temperature is \" + weather.weatherObservation.temperature + \" degrees.\");\n" " if (weather.weatherObservation.weatherCondition !== \"n/a\"){\n" " label2.set_text(\"Looks like there is \" + weather.weatherObservation.weatherCondition + \" in the sky.\");\n" " }\n" " else {\n" " label2.set_text(\"Looks like there is \" + weather.weatherObservation.clouds + \" in the sky.\");\n" " }\n" " label3.set_text(\"Windspeed is \" + weather.weatherObservation.windSpeed + \" m/s\")\n" " // ...\n" " });\n" "}\n" "\n" "grid.attach(label4, 2, 1, 1, 1);\n" "grid.attach_next_to(label1,label4,3,1,1);\n" "grid.attach_next_to(label2,label1,3,1,1);\n" "grid.attach_next_to(label3,label2,3,1,1);\n" "grid.attach_next_to(entry,label4,1,1,1);\n" "grid.attach_next_to(button1,entry,1,1,1);\n" "grid.attach_next_to(weatherIcon,label2,1,1,1)\n" "weatherwindow.show_all();\n" "//and run it\n" "Gtk.main();\n" msgstr "" #. (itstool) path: section/p #: C/weatherAppMain.js.page:229 msgid "Running until you have all the autotools files ready. :" msgstr "Exécutez-le jusqu'à obtenir tous les fichiers autotools prêts." #. (itstool) path: section/screen #: C/weatherAppMain.js.page:231 #, no-wrap msgid " $ GJS_PATH=`pwd` gjs weatherapp.js" msgstr "" #. (itstool) path: section/p #: C/weatherAppMain.js.page:232 msgid "" "Use this command on terminal while developing your modules. When calling " "your program in this manner it knows where to find your custom JSlibraries, " "in this case geonames.js." msgstr "" "Utilisez cette commande dans un terminal pendant le développement de votre " "module. En appelant votre programme de cette manière, il sait où trouver " "votre bibliothèques JavaScript personnalisées, dans ce cas geonames.js." #. (itstool) path: page/title #: C/weatherAutotools.js.page:19 msgid "Autotools and Icons" msgstr "Autotools et icônes" #. (itstool) path: synopsis/p #: C/weatherAutotools.js.page:21 msgid "" "In this part of the guide well construct the autotools and custom icons " "needed for weather application to be a seamless part of your desktop. To " "write and run all the code examples yourself, you need an editor to write " "code in, Terminal and GNOME 3 or higher installed into your computer. In " "this guide we we'll go through the following parts:" msgstr "" "Dans cette partie du guide, nous allons construire les « autotools » et " "personnaliser les icônes dont nous avons besoin pour que l'application météo " "fasse partie intégrante de notre bureau. Pour écrire et lancer tous les " "exemples de code, vous avez besoin d'un éditeur pour écrire le code, de " "l'application Terminal et d'un ordinateur sur lequel GNOME 3 ou supérieur " "est installé. Dans ce guide, nous illustrerons les éléments suivants :" #. (itstool) path: item/p #: C/weatherAutotools.js.page:24 msgid " Autotools" msgstr "" #. (itstool) path: item/p #: C/weatherAutotools.js.page:25 #, fuzzy #| msgid "Custom icons for your application" msgid "Custom icons for your application" msgstr "Icônes personnalisées pour votre application" #. (itstool) path: section/title #: C/weatherAutotools.js.page:32 msgid "Autotools and necessary files" msgstr "Autotools et fichiers nécessaires" #. (itstool) path: section/p #: C/weatherAutotools.js.page:33 #, fuzzy #| msgid "" #| "Having more than one file in your folder makes using autotools a bit " #| "tricky. You need the .desktop file, autogen.sh, Makefile.am, configure.ac " #| "and as a new file: myapp.sh.in file. Hacking the autotools file is a " #| "complicated field. More information can be found in many different " #| "sources, the " #| "wikipedia article provides a good overwiev on the subject." msgid "" "Having more than one file in your folder makes using autotools a bit tricky. " "You need the .desktop file, autogen.sh, Makefile.am, configure.ac and as a " "new file: myapp.sh.in file. Hacking the autotools file is a complicated " "field. More information can be found in many different sources, the Wikipedia article provides a good overview on the subject." msgstr "" "Le fait d'avoir plus d'un seul fichier dans votre dossier rend l'usage " "d'autotools un peu complexe. Vous avez besoin des fichiers .desktop, de " "autogen.sh, Makefile.am, configure.ac et d'un nouveau fichier : " "monapplication.sh.in par exemple. Détailler le fichier autotools est un peu " "compliqué. Vous trouverez plus d'informations dans de nombreuses autres " "sources, cet " "article sur wikipédia fournit un bon aperçu sur le sujet." #. (itstool) path: item/p #. (itstool) path: section/p #: C/weatherAutotools.js.page:36 C/weatherAutotools.js.page:42 msgid "weatherapp.desktop" msgstr "weatherapp.desktop" #. (itstool) path: item/p #. (itstool) path: section/p #: C/weatherAutotools.js.page:37 C/weatherAutotools.js.page:57 msgid "weatherapp.sh.in" msgstr "weatherapp.sh.in" #. (itstool) path: section/code #: C/weatherAutotools.js.page:43 #, no-wrap msgid "" "\n" "[Desktop Entry]\n" "Version=1.0\n" "Encoding=UTF-8\n" "Name=Weather app\n" "Comment=Weather showing application\n" "Exec=weatherapp.sh\n" "Icon=application-default-icon\n" "Terminal=false\n" "Type=Application\n" "StartupNotify=true\n" "Categories=GNOME;GTK;Utility;" msgstr "" # Bruno : l'anglais est totalement incompréhensible ! #. (itstool) path: section/p #: C/weatherAutotools.js.page:55 msgid "" "The thing to notice in this file is that the Exec line will make this ." "desktop file work only after running all the other makefiles. Weatherapp.sh " "is a small shell script created with the weatherapp.sh.in." msgstr "" "La chose à noter dans ce fichier est que la ligne « Exec » rendra " "fonctionnel ce fichier « desktop » seulement après avoir exécuté tous les " "autres « makefiles ». Weatherapp.sh est un petit script créé avec le " "weatherapp.sh.in." #. (itstool) path: section/code #: C/weatherAutotools.js.page:58 #, no-wrap msgid "" "\n" "#!/bin/sh\n" "export GJS_PATH=@bindir@\n" "gjs @bindir@/weatherapp.js" msgstr "" #. (itstool) path: section/p #: C/weatherAutotools.js.page:62 msgid "" "This file is a template to the file Makefile will do to be run from .desktop." msgstr "" "Ce fichier est un modèle que le fichier Makefile va créer pour être lancé à " "partir de .desktop." #. (itstool) path: section/code #: C/weatherAutotools.js.page:65 #, no-wrap msgid "" "\n" "# The actual runnable program is set to the SCRIPTS primitive. Prefix bin_ tells where to copy this\n" "bin_SCRIPTS = weatherapp.js geonames.js weatherapp.sh\n" "# List of files to be distributed\n" "EXTRA_DIST= \\\n" " $(bin_SCRIPTS) \\\n" " $(private_icons)\t\\\n" "\t $(NULL)\n" "\n" "CLEANFILES =\n" "\n" "# The desktop files\n" "desktopdir = $(datadir)/applications\n" "desktop_DATA =weatherapp.desktop\n" "\n" "# convenience command for doing Makefile variable substitutions in non-Makefile\n" "# files (scripts, service files, etc.)\n" "do_subst = sed -e 's|@abs_top_srcdir[@]|$(abs_top_srcdir)|g' \\\n" " -e 's|@abs_top_builddir[@]|$(abs_top_builddir)|g' \\\n" " -e 's|@localedir[@]|$(localedir)|g' \\\n" " -e 's|@bindir[@]|$(bindir)|g' \\\n" " -e 's|@libexecdir[@]|$(libexecdir)|g' \\\n" "\t -e 's|@pkglibdir[@]|$(pkglibdir)|g' \\\n" "\t -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' \\\n" "\t -e 's|@have_libnotify[@]|$(HAVE_LIBNOTIFY)|g' \\\n" "\t -e 's|@have_libsoup[@]|$(HAVE_LIBSOUP)|g' \\\n" "\t -e 's|@have_cheese[@]|$(HAVE_CHEESE)|g'\n" "\n" "weatherapp.sh: weatherapp.sh.in\n" "\t$(AM_V_GEN) $(do_subst) $< > $@\n" "\tchmod +x $@\n" "\n" "CLEANFILES += weatherapp.sh\n" "EXTRA_DIST += weatherapp.sh.in\n" "\n" "#the application icon\n" "appicondir=$(datadir)/icons/hicolor/scalable/apps\n" "appicon_DATA=weather-icon.svg\n" "\n" "#icons in the application\n" "NULL =\n" "\n" "private_icons = \\\n" "\tweather-clear.svg \\\n" " weather-few-clouds.svg \\\n" " weather-fog.svg \\\n" " weather-icon.svg \\\n" " weather-overcast.svg \\\n" " weather-showers.svg \\\n" " weather-showers-scattered.svg \\\n" " weather-snow.svg \\\n" " $(NULL)\n" "\n" "install-icons:\n" "\tfor icon in $(private_icons); do \\\n" "\t\tmkdir -p $(DESTDIR)$(pkgdatadir)/icons/; \\\n" "\t\t$(INSTALL_DATA) $(srcdir)/$$icon $(DESTDIR)$(pkgdatadir)/icons/; \\\n" "\tdone\n" "\n" "install-data-local: install-icons" msgstr "" #. (itstool) path: section/p #: C/weatherAutotools.js.page:125 msgid "" "This needs a bit more explaining. Compared to the HelloWorld Makefile.am " "this has changed quite a bit. Lets go through all the new blocks:" msgstr "" "Ceci nécessite un peu plus d'explications. Comparé au Makefile.am de " "Helloworld, celui-ci a été fortement modifié. Parcourons tous les nouveaux " "blocs :" #. (itstool) path: section/p #: C/weatherAutotools.js.page:126 msgid "" "bin_scripts are the files that are needed to run your application. In thin " "case they are the first two files are the program itself and the third is " "the script that launches the application." msgstr "" "« bin_scripts » sont les fichiers nécessaires pour exécuter votre " "application. Dans ce cas, les deux premiers fichiers sont les programmes eux-" "mêmes et le troisième est le script qui lance l'application." #. (itstool) path: section/p #: C/weatherAutotools.js.page:127 msgid "EXTRA_DIST are the files that are to be distributed" msgstr "EXTRA_DIST sont les fichiers qui doivent être distribués." #. (itstool) path: section/p #: C/weatherAutotools.js.page:128 msgid "do_subst block is bits and pieces that need to be where they are" msgstr "" "le bloc « do_subst » est quelque chose qui a besoin d'être là où il est." #. (itstool) path: section/p #: C/weatherAutotools.js.page:129 #, fuzzy #| msgid "" #| "after the comment #icons in the application there are all the icons that " #| "are used by the program. For them to be useful you need to install the " #| "icons in correct places and that is done byt the install-icons: bit" msgid "" "after the comment #icons in the application there are all the icons that are " "used by the program. For them to be useful you need to install the icons in " "correct places and that is done by the install-icons: bit" msgstr "" "Après le commentaire « #icons in the application » se trouvent toutes les " "icônes qui sont utilisées par le programme. Pour qu'elles soient utiles, " "vous devez installer les icônes aux emplacements corrects, ce qui est " "réalisé par la partie « install-icons »." #. (itstool) path: section/code #: C/weatherAutotools.js.page:132 #, no-wrap msgid "" "\n" "dnl This file is processed by autoconf to create a configure script\n" "AC_INIT([Weather App], 1.0)\n" "AM_INIT_AUTOMAKE([1.10 no-define foreign])\n" "AC_CONFIG_FILES(Makefile)\n" "AC_OUTPUT" msgstr "" #. (itstool) path: section/code #: C/weatherAutotools.js.page:139 #, no-wrap msgid "" "\n" "#!/bin/sh\n" "# This will run autoconf, automake, etc. for us\n" "autoreconf --force --install" msgstr "" #. (itstool) path: section/title #: C/weatherAutotools.js.page:145 msgid "Custom icons for your application" msgstr "Icônes personnalisées pour votre application" #. (itstool) path: section/p #: C/weatherAutotools.js.page:146 msgid "" "When thinking about custom icons a good rule of thumb is: do you expect to " "see that icon used elsewhere or is it private to your app? If the first (e." "g. the icons in the desktop file that are shown by the shell) then you need /" "usr/share/hicolor, otherwise (e.g. the weather icons of your app) /usr/share/" "$application/bla/bla" msgstr "" "Lorsque vous pensez icônes personnalisées, une bonne règle est : souhaitez-" "vous que cette icône puisse être utilisée autre part ou est-elle privée ? " "Dans le premier cas (par ex. des icônes dans le fichier desktop qui sont " "affichées par le shell) alors vous avez besoin de /usr/share/hicolor sinon " "(par ex. les icônes météo de votre application) /usr/share/$application/bla/" "bla" #. (itstool) path: section/p #: C/weatherAutotools.js.page:147 msgid "" "Using autotools you have to make some changes to your .desktop and Makefile." "am files. In the desktop file you change the Icon's name Icon=weather-icon. " "In the Makefile.am file you add these two lines to the end of your " "application #the application icon" msgstr "" "Pour utiliser autotools, vous devez apporter quelques modifications à vos " "fichiers .desktop et Makefile. Dans le fichier desktop, modifiez le nom de " "l'icône Icon=weather-icon. Dans le fichier Makefile.am, ajoutez ces deux " "lignes à la fin de votre application #the application icon." #. (itstool) path: section/p #: C/weatherAutotools.js.page:148 msgid "appicondir=$(datadir)/icons/hicolor/scalable/apps" msgstr "appicondir=$(datadir)/icons/hicolor/scalable/apps" #. (itstool) path: section/p #: C/weatherAutotools.js.page:149 msgid "appicon_DATA=weather-icon.svg" msgstr "appicon_DATA=weather-icon.svg" #. (itstool) path: page/title #: C/weatherGeonames.js.page:19 msgid "Local library geoNames" msgstr "Bibliothèque locale geoNames" #. (itstool) path: synopsis/p #: C/weatherGeonames.js.page:21 msgid "" "In this part of the guide we'll construct the local library geoNames using " "asynchronous calls. Weather information in this example is fetched from " "geonames.org and the application is using the ICAO codes to " "place your weather request. To write and run all the code examples yourself, " "you need an editor to write code in, Terminal and GNOME 3 or higher " "installed into your computer. In this guide we'll go through the following " "parts:" msgstr "" "Dans cette partie du guide nous allons construire la bibliothèque locale " "geoNames en utilisant des appels asynchrones. Dans cet exemple, les " "informations météorologiques sont récupérés sur geonames.org et " "l'application utilise les codes OACI pour localiser " "les requêtes météo. Pour écrire et lancer tous les exemples de code vous " "avez besoin d'un éditeur pour saisir le code, de l'application Terminal et " "d'un ordinateur sur lequel GNOME 3 ou supérieur est installé. Dans ce guide, " "nous illustrerons les éléments suivants :" #. (itstool) path: item/p #: C/weatherGeonames.js.page:24 #, fuzzy #| msgid "Local library for getting the weather" msgid "" "Local library for getting the weather" msgstr "Bibliothèque locale pour obtenir la météo" #. (itstool) path: item/p #: C/weatherGeonames.js.page:25 msgid "Creating function geoNames" msgstr "" #. (itstool) path: item/p #: C/weatherGeonames.js.page:26 msgid "Methods for geoNames" msgstr "" #. (itstool) path: item/p #: C/weatherGeonames.js.page:27 msgid "geonames.js " msgstr "" #. (itstool) path: section/title #: C/weatherGeonames.js.page:32 msgid "Local library for getting the weather" msgstr "Bibliothèque locale pour obtenir la météo" #. (itstool) path: section/p #: C/weatherGeonames.js.page:33 msgid "For this we need a new file that will be our local library." msgstr "" "Pour cela, nous avons besoin d'un nouveau fichier qui sera notre " "bibliothèque locale." #. (itstool) path: section/code #: C/weatherGeonames.js.page:34 #, no-wrap msgid "" "\n" "const Soup = imports.gi.Soup;\n" "const _httpSession = new Soup.SessionAsync();\n" "Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n" msgstr "" #. (itstool) path: section/p #: C/weatherGeonames.js.page:39 msgid "" "In the first lines we'll import and initialize the libraries we need to use " "in this local library. Soup handles all the requests we have to make with " "http." msgstr "" "Dès les premières lignes, nous importons et initialisons les bibliothèques " "dont nous avons besoin dans cette bibliothèque locale. « Soup » prend en " "charge toutes les requêtes que nous devons faire via http." #. (itstool) path: section/title #: C/weatherGeonames.js.page:43 msgid "Creating function GeoNames" msgstr "Création de la fonction GeoNames" #. (itstool) path: section/code #: C/weatherGeonames.js.page:44 #, no-wrap msgid "" "\n" "function GeoNames(station) {\n" " this.station = station;\n" "}\n" "\n" "GeoNames.prototype = {\n" "\n" "}\n" msgstr "" #. (itstool) path: section/p #: C/weatherGeonames.js.page:53 msgid "" "Here we create the function GeoNames that will handle getting weather for " "us. JavaScript allows us to create functions that have little inside at " "first and later expand them. This will be done inside the GeoNames.prototype " "curly braces{}" msgstr "" "Ici, nous créons la fonction GeoNames qui prend en charge l'obtention de la " "météo pour nous. Le JavaScript nous permet de créer des fonctions qui, au " "départ contiennent peu de code et de les étendre ensuite. Cela se fait à " "l'intérieur des accolades {} de GeoNames.prototype." #. (itstool) path: section/title #: C/weatherGeonames.js.page:57 msgid "Methods for GeoNames" msgstr "Méthodes pour GeoNames" #. (itstool) path: section/code #: C/weatherGeonames.js.page:58 #, no-wrap msgid "" "\n" "getWeather: function(callback) {\n" " var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station + '&username=demo');\n" " _httpSession.queue_message(request, function(_httpSession, message) {\n" " if (message.status_code !== 200) {\n" " callback(message.status_code, null);\n" " return;\n" " }\n" " var weatherJSON = request.response_body.data;\n" " var weather = JSON.parse(weatherJSON);\n" " callback(null, weather);\n" " });\n" "},\n" "\n" "getIcon: function(weather){\n" " switch (weather.weatherObservation.weatherCondition){\n" " case \"drizzle\":\n" " case \"light showers rain\":\n" " case \"light rain\":\n" " return \"weather-showers-scattered.svg\";\n" " case \"rain\":\n" " return \"weather-showers.svg\";\n" " case \"light snow\":\n" " case \"snow grains\":\n" " return \"weather-snow.svg\";\n" " }\n" " switch (weather.weatherObservation.clouds){\n" " case \"few clouds\":\n" " case \"scattered clouds\":\n" " return \"weather-few-clouds.svg\";\n" " case \"clear sky\":\n" " return \"weather-clear.svg\"\n" " case \"broken clouds\":\n" " case \"overcast\":\n" " return \"weather-overcast.svg\";\n" " }\n" " return \"weather-fog.svg\";\n" "}\n" msgstr "" # Bruno : then parse the information from the request ***to a form that we can use.*** ??? #. (itstool) path: section/p #: C/weatherGeonames.js.page:97 msgid "" "The first method for GeoNames is getWeather and the second getIcon. In " "getWeather we make a http request with soup, handle errors and then parse " "the information from the request to form we can use it. In getIcon we simply " "compare the results we got from getWeather to the switch we have in order to " "get the icon matching current weather. Now that we have our local library " "ready, it's time to make use of it." msgstr "" "La première méthode de GeoNames est getWeather et la seconde getIcon. Dans " "getWeather, une requête http est effectuée avec « soup », nous prenons en " "charge les erreurs puis analysons (parse) les informations à partir de la " "requête vers une forme utilisable. Dans getIcon, nous comparons tout " "simplement les résultats obtenus avec getWeather à l'aide de l'instruction " "switch afin d'obtenir l'icône correspondant à la météo actuelle. Notre " "bibliothèque locale est prête et nous pouvons maintenant l'utiliser." #. (itstool) path: section/title #: C/weatherGeonames.js.page:102 msgid "geonames.js" msgstr "geonames.js" #. (itstool) path: section/p #: C/weatherGeonames.js.page:103 msgid "" "Here is the entire code for our local library. The main program file calls " "this asynchronously." msgstr "" "Voici le code complet pour notre bibliothèque locale. Le fichier principal " "du programme l'appelle de manière asynchrone." #. (itstool) path: section/code #: C/weatherGeonames.js.page:104 #, no-wrap msgid "" "\n" "const Soup = imports.gi.Soup;\n" "const _httpSession = new Soup.SessionAsync();\n" "Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());\n" "\n" "function GeoNames(station) {\n" " this.station = station;\n" "}\n" "\n" "GeoNames.prototype = {\n" " getWeather: function(callback) {\n" " var request = Soup.Message.new('GET', 'http://api.geonames.org/weatherIcaoJSON?ICAO=' + this.station + '&username=demo');\n" " _httpSession.queue_message(request, function(_httpSession, message) {\n" " if (message.status_code !== 200) {\n" " callback(message.status_code, null);\n" " return;\n" " }\n" " var weatherJSON = request.response_body.data;\n" " var weather = JSON.parse(weatherJSON);\n" " callback(null, weather);\n" " });\n" " },\n" "\n" " getIcon: function(weather){\n" " switch (weather.weatherObservation.weatherCondition){\n" " case \"drizzle\":\n" " case \"light showers rain\":\n" " case \"light rain\":\n" " return \"weather-showers-scattered.svg\";\n" " case \"rain\":\n" " return \"weather-showers.svg\";\n" " case \"light snow\":\n" " case \"snow grains\":\n" " return \"weather-snow.svg\";\n" " }\n" " switch (weather.weatherObservation.clouds){\n" " case \"few clouds\":\n" " case \"scattered clouds\":\n" " return \"weather-few-clouds.svg\";\n" " case \"clear sky\":\n" " return \"weather-clear.svg\"\n" " case \"broken clouds\":\n" " case \"overcast\":\n" " return \"weather-overcast.svg\";\n" " }\n" " return \"weather-fog.svg\";\n" " }\n" "}\n" "} " msgstr "" #. (itstool) path: info/title #: C/widget_drawing.py.page:8 #, fuzzy #| msgid "Window (Python)" msgctxt "text" msgid "Widget (Python)" msgstr "Window (Python)" #. (itstool) path: info/desc #: C/widget_drawing.py.page:18 msgid "A widget that uses the Cairo library to draw" msgstr "" #. (itstool) path: page/title #: C/widget_drawing.py.page:21 #, fuzzy #| msgid "GtkWidget" msgid "Widget" msgstr "GtkWidget" #. (itstool) path: page/media #. This is a reference to an external file such as an image or video. When #. the file changes, the md5 hash will change to let you know you need to #. update your localized copy. The msgstr is not used at all. Set it to #. whatever you like once you have updated your copy of the file. #: C/widget_drawing.py.page:22 msgctxt "_" msgid "" "external ref='media/widget_drawing.png' " "md5='d00abd8cb9e158018c57fd75b81dfe58'" msgstr "" #. (itstool) path: page/p #: C/widget_drawing.py.page:23 msgid "Enter an angle, visualize it." msgstr "" #. (itstool) path: section/code #: C/widget_drawing.py.page:30 #, no-wrap msgid "" "from gi.repository import Gtk\n" "from gi.repository import cairo\n" "import sys\n" "import math\n" "\n" "\n" "class MyWindow(Gtk.ApplicationWindow):\n" "\n" " def __init__(self, app):\n" " Gtk.Window.__init__(self, title=\"Choose an angle\", application=app)\n" " self.set_default_size(400, 400)\n" " self.set_border_width(10)\n" "\n" " # a default angle\n" " self.angle = 360\n" "\n" " grid = Gtk.Grid()\n" "\n" " # a spinbutton that takes the value of an angle\n" " ad = Gtk.Adjustment(360, 0, 360, 1, 0, 0)\n" " self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0)\n" " self.spin.connect(\"value-changed\", self.get_angle)\n" "\n" " # a drawing area for drawing whatever we want\n" " self.darea = Gtk.DrawingArea()\n" " # that we describe in the method draw(), connected to the signal \"draw\"\n" " self.darea.connect(\"draw\", self.draw)\n" " # we have to request a minimum size of the drawing area, or it will\n" " # disappear\n" " self.darea.set_size_request(300, 300)\n" "\n" " grid.attach(self.spin, 0, 0, 1, 1)\n" " grid.attach(self.darea, 0, 1, 1, 1)\n" "\n" " self.add(grid)\n" "\n" " # whenever we get a new angle in the spinbutton\n" " def get_angle(self, event):\n" " self.angle = self.spin.get_value_as_int()\n" " # redraw what is in the drawing area\n" " self.darea.queue_draw()\n" "\n" " def draw(self, darea, cr):\n" " # a 10-pixels-wide line\n" " cr.set_line_width(10)\n" " # red\n" " cr.set_source_rgba(0.5, 0.0, 0.0, 1.0)\n" "\n" " # get the width and height of the drawing area\n" " w = self.darea.get_allocated_width()\n" " h = self.darea.get_allocated_height()\n" "\n" " # move to the center of the drawing area\n" " # (translate from the top left corner to w/2, h/2)\n" " cr.translate(w / 2, h / 2)\n" " # draw a line to (55, 0)\n" " cr.line_to(55, 0)\n" " # and get back to (0, 0)\n" " cr.line_to(0, 0)\n" " # draw an arc centered in the origin, 50 pixels wide, from the angle 0\n" " # (in radians) to the angle given by the spinbutton (in degrees)\n" " cr.arc(0, 0, 50, 0, self.angle * (math.pi / 180))\n" " # draw a line back to the origin\n" " cr.line_to(0, 0)\n" " # drawing the path, and keeping the path for future use\n" " cr.stroke_preserve()\n" "\n" " # set a colour\n" " cr.set_source_rgba(0.0, 0.5, 0.5, 1.0)\n" " # and use it to fill the path (that we had kept)\n" " cr.fill()\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def __init__(self):\n" " Gtk.Application.__init__(self)\n" "\n" " def do_activate(self):\n" " win = MyWindow(self)\n" " win.show_all()\n" "\n" " def do_startup(self):\n" " Gtk.Application.do_startup(self)\n" "\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: item/p #: C/widget_drawing.py.page:39 #, fuzzy #| msgid "" #| "Signals in GObject documentation" msgid "" "GtkDrawingArea" msgstr "" "Les " "signaux dans la documentation GObject" #. (itstool) path: item/p #: C/widget_drawing.py.page:40 msgid "" "The Cairo " "Tutorial for Python Programmers" msgstr "" #. (itstool) path: info/title #: C/window.c.page:8 #, fuzzy #| msgid "Window (C)" msgctxt "text" msgid "Window (C)" msgstr "Fenêtre (C)" #. (itstool) path: info/desc #: C/window.c.page:18 C/window.py.page:25 C/window.vala.page:18 msgid "A toplevel window which can contain other widgets" msgstr "" "Une fenêtre de niveau supérieur qui peut contenir d'autres éléments " "graphiques" #. (itstool) path: page/title #: C/window.c.page:21 C/window.js.page:21 C/window.py.page:28 #: C/window.vala.page:21 msgid "Window" msgstr "Fenêtre" # Bruno : bug : pas d'espace entre Application et Window #. (itstool) path: page/p #: C/window.c.page:24 msgid "" "A minimal GtkApplication. Use Application Window if you need GMenu support." msgstr "" "Une GtkApplication minimale. Utilisez ApplicationWindow si vous avez besoin de la prise en charge de " "GMenu." #. (itstool) path: page/code #: C/window.c.page:28 #, no-wrap msgid "" "\n" "#include <gtk/gtk.h>\n" "\n" "static void\n" "activate (GtkApplication *app,\n" " gpointer user_data)\n" "{\n" " GtkWidget *window;\n" "\n" " window = gtk_window_new (GTK_WINDOW_TOPLEVEL);\n" "\n" " gtk_window_set_application (GTK_WINDOW (window), GTK_APPLICATION (app));\n" " gtk_window_set_title (GTK_WINDOW (window), \"Hello GNOME\");\n" "\n" " gtk_widget_show_all (GTK_WIDGET (window));\n" "}\n" "\n" "int\n" "main (int argc, char **argv)\n" "{\n" " GtkApplication *app;\n" " int status;\n" "\n" " app = gtk_application_new (\"org.gtk.example\",G_APPLICATION_FLAGS_NONE);\n" " g_signal_connect (app, \"activate\", G_CALLBACK (activate), NULL);\n" " status = g_application_run (G_APPLICATION (app), argc, argv);\n" " g_object_unref (app);\n" " return status;\n" "}\n" msgstr "" #. (itstool) path: info/title #: C/window.js.page:8 #, fuzzy #| msgid "Window (JavaScript)" msgctxt "text" msgid "Window (JavaScript)" msgstr "Fenêtre (JavaScript)" #. (itstool) path: info/desc #: C/window.js.page:18 msgid "A basic window which can contain other widgets" msgstr "Une fenêtre élémentaire qui peut contenir d'autres éléments graphiques" #. (itstool) path: td/p #: C/window.js.page:26 msgid "A minimal GtkApplication" msgstr "Une GtkApplication minimale" #. (itstool) path: td/p #: C/window.js.page:29 msgid "" "Use ApplicationWindow if you " "need GMenu support." msgstr "" "Utilisez ApplicationWindow si " "vous avez besoin de la prise en charge de GMenu." #. (itstool) path: page/code #: C/window.js.page:33 #, no-wrap msgid "" "\n" "#!/usr/bin/gjs\n" "\n" "imports.gi.versions.Gtk = '3.0';\n" "\n" "const Gio = imports.gi.Gio;\n" "const GLib = imports.gi.GLib;\n" "const Gtk = imports.gi.Gtk;\n" "\n" "class Application {\n" " //create the application\n" " constructor() {\n" " this.application = new Gtk.Application({\n" " application_id: 'org.example.myapp',\n" " flags: Gio.ApplicationFlags.FLAGS_NONE\n" " });\n" "\n" " this.application.connect('activate', this._onActivate.bind(this));\n" " }\n" "\n" " //callback function for 'activate' signal\n" " _onActivate() {\n" " let myWindow = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});\n" " myWindow.title = \"Welcome to GNOME\";\n" "\n" " /* Here are a few ways we can customize our window.\n" " Try uncommenting them or changing their values! */\n" " //myWindow.set_default_size (400,200);\n" " //myWindow.set_has_resize_grip (false);\n" " //myWindow.set_opacity (0.5);\n" " //myWindow.maximize ();\n" "\n" " //show the window and all child widgets (none in this case)\n" " myWindow.show_all();\n" " this.application.add_window(myWindow);\n" " }\n" "};\n" "\n" "//run the application\n" "let app = new Application ();\n" "app.application.run (ARGV);\n" msgstr "" #. (itstool) path: page/p #: C/window.js.page:35 msgid "In this example we used the following:" msgstr "Dans cet exemple, les éléments suivants sont utilisés :" #. (itstool) path: item/p #: C/window.js.page:40 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "Gtk.Window" msgstr "" "L'élément graphique Gtk.Window" #. (itstool) path: info/title #: C/window.py.page:8 #, fuzzy #| msgid "Window (Python)" msgctxt "text" msgid "Window (Python)" msgstr "Window (Python)" #. (itstool) path: td/p #: C/window.py.page:34 #, fuzzy #| msgid "A minimal Gtk+ Application: a window with a title." msgid "A minimal GTK+ Application: a window with a title." msgstr "Une application Gtk+ minimale : une fenêtre avec un titre." #. (itstool) path: td/p #: C/window.py.page:37 #, fuzzy #| msgid "" #| "Use Application Window if " #| "you need GMenu support." msgid "" "Use if you need support." msgstr "" "Utilisez Application Window si " "vous avez besoin de la prise en charge de GMenu." #. (itstool) path: section/code #: C/window.py.page:47 #, no-wrap msgid "" "from gi.repository import Gtk\n" "import sys\n" "\n" "\n" "class MyApplication(Gtk.Application):\n" "\n" " def do_activate(self):\n" " # create a Gtk Window belonging to the application itself\n" " window = Gtk.Window(application=self)\n" " # set the title\n" " window.set_title(\"Welcome to GNOME\")\n" " # show the window\n" " window.show_all()\n" "\n" "# create and run the application, exit with the value returned by\n" "# running the program\n" "app = MyApplication()\n" "exit_status = app.run(sys.argv)\n" "sys.exit(exit_status)\n" msgstr "" #. (itstool) path: section/title #: C/window.py.page:52 msgid "Useful methods for a Window widget" msgstr "Méthodes utiles pour un composant graphique fenêtre" #. (itstool) path: info/title #: C/window.vala.page:8 #, fuzzy #| msgid "Window (Vala)" msgctxt "text" msgid "Window (Vala)" msgstr "Fenêtre (Vala)" #. (itstool) path: td/p #: C/window.vala.page:26 msgid "The simplest Gtk.Application" msgstr "L'application Gtk.Application la plus basique" #. (itstool) path: td/p #: C/window.vala.page:29 msgid "" "Use Application Window if " "you need GMenu support." msgstr "" "Utilisez Application Window " "si vous avez besoin de la prise en charge de GMenu." #. (itstool) path: page/code #: C/window.vala.page:33 #, no-wrap msgid "" "/* This is the application. */\n" "public class Application : Gtk.Application {\n" "\n" "\t/* Constructor */\n" "\tpublic Application () {\n" "\t\tObject (application_id: \"org.example.window\");\n" "\t}\n" "\n" "\t/* Override the 'activate' signal of GLib.Application,\n" "\t * which is inherited by Gtk.Application. */\n" "\tpublic override void activate () {\n" "\n" "\t\tvar window = new Gtk.Window ();\n" "\t\twindow.title = \"Welcome to GNOME\";\n" "\n" "\t\t/* The following 3 lines are included here to introduce\n" "\t\t * you to ways you can adjust the toplevel window to suit\n" "\t\t * your needs. Uncomment them to see what they do.\n" "\t\t */\n" "\n" "\t\t//window.border_width = 10;\n" "\t\t//window.set_default_size (350, 70);\n" "\t\t//window.window_position = Gtk.WindowPosition.CENTER;\n" "\n" "\t\t/* Add the window to this application. */\n" "\t\tthis.add_window (window);\n" "\n" "\t\t/* Show the window. */\n" "\t\twindow.show ();\n" "\t}\n" "}\n" "\n" "/* The main function creates the application and runs it.*/\n" "int main (string[] args) {\n" "\tvar app = new Application ();\n" "\treturn app.run (args);\n" "}\n" msgstr "" #. (itstool) path: item/p #: C/window.vala.page:39 msgid "" "The widget Gtk.Window" msgstr "" "Le composant graphique Gtk.Window" #. (itstool) path: item/p #: C/window.vala.page:41 msgid "" "The enum Gtk.WindowPosition" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: item/p #: C/window.vala.page:43 msgid "" "The method set_default_size" msgstr "" "La méthode set_default_size" #. (itstool) path: item/p #: C/window.vala.page:45 #, fuzzy #| msgid "" #| "The widget Gtk.Window" msgid "" "border_width" msgstr "" "Le composant graphique Gtk.Window" #. (itstool) path: item/p #: C/window.vala.page:47 #, fuzzy #| msgid "" #| "The enum Gtk.WindowPosition" msgid "" "window_position" msgstr "" "L'énumération Gtk.WindowPosition" #. (itstool) path: credit/name #: C/custom-gsource.c.page:11 #, fuzzy #| msgid "Philip Chimento" msgid "Philip Withnall" msgstr "Philip Chimento" #. (itstool) path: credit/years #: C/custom-gsource.c.page:13 msgid "2015" msgstr "" #. (itstool) path: info/desc #: C/custom-gsource.c.page:18 msgid "Tutorial for writing a custom GSource implementation" msgstr "" #. (itstool) path: page/title #: C/custom-gsource.c.page:23 msgid "Custom GSources" msgstr "" #. (itstool) path: synopsis/title #: C/custom-gsource.c.page:26 msgid "Summary" msgstr "" #. (itstool) path: synopsis/p #: C/custom-gsource.c.page:28 msgid "" "This article is a tutorial on creating a custom GSource. For " "the reference documentation, see the GLib API reference." msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:37 msgid "What is GSource?" msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:39 msgid "" "A GSource is an expected event with an " "associated callback function which will be invoked when that event is " "received. An event could be a timeout or data being received on a socket, " "for example." msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:46 msgid "" "GLib contains various types of GSource, but also allows " "applications to define their own, allowing custom events to be integrated " "into the main loop." msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:52 msgid "" "The structure of a GSource and its virtual functions are " "documented in detail in the GLib API reference." msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:61 msgid "A Message Queue Source" msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:63 msgid "" "As a running example, a message queue source will be used which dispatches " "its callback whenever a message is enqueued to a queue internal to the " "source (potentially from another thread)." msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:69 msgid "" "This type of source is useful for efficiently transferring large numbers of " "messages between main contexts. The alternative is transferring each message " "as a separate idle GSource using g_source_attach(). For large numbers of messages, this means a lot of allocations and " "frees of GSources." msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:78 #, fuzzy #| msgid "Event Structures" msgid "Structure" msgstr "Event Structures" #. (itstool) path: section/p #: C/custom-gsource.c.page:80 msgid "" "Firstly, a structure for the source needs to be declared. This must contain " "a GSource as its parent, followed by the private fields for the " "source: the queue and a function to call to free each message once finished " "with." msgstr "" #. (itstool) path: section/code #: C/custom-gsource.c.page:86 #, no-wrap msgid "" "\n" "typedef struct {\n" " GSource parent;\n" " GAsyncQueue *queue; /* owned */\n" " GDestroyNotify destroy_message;\n" "} MessageQueueSource;" msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:95 msgid "Prepare Function" msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:97 msgid "" "Next, the prepare function for the source must be defined. This determines " "whether the source is ready to be dispatched. As this source is using an in-" "memory queue, this can be determined by checking the queue’s length: if " "there are elements in the queue, the source can be dispatched to handle them." msgstr "" #. (itstool) path: section/code #: C/custom-gsource.c.page:104 #, no-wrap msgid "" "\n" "return (g_async_queue_length (message_queue_source->queue) > 0);" msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:109 #, fuzzy #| msgid "CheckButton" msgid "Check Function" msgstr "CheckButton" #. (itstool) path: section/p #: C/custom-gsource.c.page:111 msgid "" "As this source has no file descriptors, the prepare and check functions " "essentially have the same job, so a check function is not needed. Setting " "the field to NULL in GSourceFuncs bypasses the " "check function for this source type." msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:120 msgid "Dispatch Function" msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:122 msgid "" "For this source, the dispatch function is where the complexity lies. It " "needs to dequeue a message from the queue, then pass that message to the " "GSource’s callback function. No messages may be queued: even " "through the prepare function returned true, another source wrapping the same " "queue may have been dispatched in the mean time and taken the final message " "from the queue. Further, if no callback has been set for the GSource (which is allowed), the message must be destroyed and silently dropped." msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:133 msgid "" "If both a message and callback are set, the callback can be invoked on the " "message and its return value propagated as the return value of the dispatch " "function. This is FALSE to destroy the GSource and " "TRUE to keep it alive, just as for GSourceFunc — " "these semantics are the same for all dispatch function implementations." msgstr "" #. (itstool) path: section/code #: C/custom-gsource.c.page:141 #, no-wrap msgid "" "\n" "/* Pop a message off the queue. */\n" "message = g_async_queue_try_pop (message_queue_source->queue);\n" "\n" "/* If there was no message, bail. */\n" "if (message == NULL)\n" " {\n" " /* Keep the source around to handle the next message. */\n" " return TRUE;\n" " }\n" "\n" "/* @func may be %NULL if no callback was specified.\n" " * If so, drop the message. */\n" "if (func == NULL)\n" " {\n" " if (message_queue_source->destroy_message != NULL)\n" " {\n" " message_queue_source->destroy_message (message);\n" " }\n" "\n" " /* Keep the source around to consume the next message. */\n" " return TRUE;\n" " }\n" "\n" "return func (message, user_data);" msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:169 msgid "Callback Functions" msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:171 msgid "" "The callback from a GSource does not have to have type " "GSourceFunc. It can be whatever function type is called in the " "source’s dispatch function, as long as that type is sufficiently documented." msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:178 msgid "" "Normally, g_source_set_callback() is used to set the callback " "function for a source instance. With its GDestroyNotify, a " "strong reference can be held to keep an object alive while the source is " "still alive:" msgstr "" #. (itstool) path: section/code #: C/custom-gsource.c.page:184 #, no-wrap msgid "" "\n" "g_source_set_callback (source, callback_func,\n" " g_object_ref (object_to_strong_ref),\n" " (GDestroyNotify) g_object_unref);" msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:189 msgid "" "However, GSource has a layer of indirection for retrieving this " "callback, exposed as g_source_set_callback_indirect(). This " "allows GObject to set a GClosure as the callback for a source, " "which allows for sources which are automatically destroyed when an object is " "finalized — a weak reference, in contrast to the strong " "reference above:" msgstr "" #. (itstool) path: section/code #: C/custom-gsource.c.page:197 #, no-wrap msgid "" "\n" "g_source_set_closure (source,\n" " g_cclosure_new_object (callback_func,\n" " object_to_weak_ref));" msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:202 msgid "" "It also allows for a generic, closure-based ‘dummy’ callback, which can be " "used when a source needs to exist but no action needs to be performed in its " "callback:" msgstr "" #. (itstool) path: section/code #: C/custom-gsource.c.page:207 #, no-wrap msgid "" "\n" "g_source_set_dummy_callback (source);" msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:212 msgid "Constructor" msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:214 msgid "" "Finally, the GSourceFuncs definition of the GSource can be written, alongside a construction function. It is typical " "practice to expose new source types simply as GSources, not as " "the subtype structure; so the constructor returns a GSource*." msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:222 msgid "" "The example constructor here also demonstrates use of a child source to " "support cancellation conveniently. If the GCancellable is " "cancelled, the application’s callback will be dispatched and can check for " "cancellation. (The application code will need to make a pointer to the " "GCancellable available to its callback, as a field of the " "callback’s user data set in g_source_set_callback())." msgstr "" #. (itstool) path: section/code #: C/custom-gsource.c.page:230 #, no-wrap msgid "" "\n" "GSource *\n" "message_queue_source_new (GAsyncQueue *queue,\n" " GDestroyNotify destroy_message,\n" " GCancellable *cancellable)\n" "{\n" " GSource *source; /* alias of @message_queue_source */\n" " MessageQueueSource *message_queue_source; /* alias of @source */\n" "\n" " g_return_val_if_fail (queue != NULL, NULL);\n" " g_return_val_if_fail (cancellable == NULL ||\n" " G_IS_CANCELLABLE (cancellable), NULL);\n" "\n" " source = g_source_new (&message_queue_source_funcs,\n" " sizeof (MessageQueueSource));\n" " message_queue_source = (MessageQueueSource *) source;\n" "\n" " /* The caller can overwrite this name with something more useful later. */\n" " g_source_set_name (source, \"MessageQueueSource\");\n" "\n" " message_queue_source->queue = g_async_queue_ref (queue);\n" " message_queue_source->destroy_message = destroy_message;\n" "\n" " /* Add a cancellable source. */\n" " if (cancellable != NULL)\n" " {\n" " GSource *cancellable_source;\n" "\n" " cancellable_source = g_cancellable_source_new (cancellable);\n" " g_source_set_dummy_callback (cancellable_source);\n" " g_source_add_child_source (source, cancellable_source);\n" " g_source_unref (cancellable_source);\n" " }\n" "\n" " return source;\n" "}" msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:270 #, fuzzy #| msgid "Complete code sample" msgid "Complete Example" msgstr "Exemple complet de code" #. (itstool) path: listing/title #: C/custom-gsource.c.page:273 #, fuzzy #| msgid "Complete code sample" msgid "Complete Example Code" msgstr "Exemple complet de code" #. (itstool) path: listing/code #: C/custom-gsource.c.page:275 #, no-wrap msgid "" "/**\n" " * MessageQueueSource:\n" " *\n" " * This is a #GSource which wraps a #GAsyncQueue and is dispatched whenever a\n" " * message can be pulled off the queue. Messages can be enqueued from any\n" " * thread.\n" " *\n" " * The callbacks dispatched by a #MessageQueueSource have type\n" " * #MessageQueueSourceFunc.\n" " *\n" " * #MessageQueueSource supports adding a #GCancellable child source which will\n" " * additionally dispatch if a provided #GCancellable is cancelled.\n" " */\n" "typedef struct {\n" " GSource parent;\n" " GAsyncQueue *queue; /* owned */\n" " GDestroyNotify destroy_message;\n" "} MessageQueueSource;\n" "\n" "/**\n" " * MessageQueueSourceFunc:\n" " * @message: (transfer full) (nullable): message pulled off the queue\n" " * @user_data: user data provided to g_source_set_callback()\n" " *\n" " * Callback function type for #MessageQueueSource.\n" " */\n" "typedef gboolean (*MessageQueueSourceFunc) (gpointer message,\n" " gpointer user_data);\n" "\n" "static gboolean\n" "message_queue_source_prepare (GSource *source,\n" " gint *timeout_)\n" "{\n" " MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n" "\n" " return (g_async_queue_length (message_queue_source->queue) > 0);\n" "}\n" "\n" "static gboolean\n" "message_queue_source_dispatch (GSource *source,\n" " GSourceFunc callback,\n" " gpointer user_data)\n" "{\n" " MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n" " gpointer message;\n" " MessageQueueSourceFunc func = (MessageQueueSourceFunc) callback;\n" "\n" " /* Pop a message off the queue. */\n" " message = g_async_queue_try_pop (message_queue_source->queue);\n" "\n" " /* If there was no message, bail. */\n" " if (message == NULL)\n" " {\n" " /* Keep the source around to handle the next message. */\n" " return TRUE;\n" " }\n" "\n" " /* @func may be %NULL if no callback was specified.\n" " * If so, drop the message. */\n" " if (func == NULL)\n" " {\n" " if (message_queue_source->destroy_message != NULL)\n" " {\n" " message_queue_source->destroy_message (message);\n" " }\n" "\n" " /* Keep the source around to consume the next message. */\n" " return TRUE;\n" " }\n" "\n" " return func (message, user_data);\n" "}\n" "\n" "static void\n" "message_queue_source_finalize (GSource *source)\n" "{\n" " MessageQueueSource *message_queue_source = (MessageQueueSource *) source;\n" "\n" " g_async_queue_unref (message_queue_source->queue);\n" "}\n" "\n" "static gboolean\n" "message_queue_source_closure_callback (gpointer message,\n" " gpointer user_data)\n" "{\n" " GClosure *closure = user_data;\n" " GValue param_value = G_VALUE_INIT;\n" " GValue result_value = G_VALUE_INIT;\n" " gboolean retval;\n" "\n" " /* The invoked function is responsible for freeing @message. */\n" " g_value_init (&result_value, G_TYPE_BOOLEAN);\n" " g_value_init (&param_value, G_TYPE_POINTER);\n" " g_value_set_pointer (&param_value, message);\n" "\n" " g_closure_invoke (closure, &result_value, 1, &param_value, NULL);\n" " retval = g_value_get_boolean (&result_value);\n" "\n" " g_value_unset (&param_value);\n" " g_value_unset (&result_value);\n" "\n" " return retval;\n" "}\n" "\n" "static GSourceFuncs message_queue_source_funcs =\n" " {\n" " message_queue_source_prepare,\n" " NULL, /* check */\n" " message_queue_source_dispatch,\n" " message_queue_source_finalize,\n" " (GSourceFunc) message_queue_source_closure_callback,\n" " NULL,\n" " };\n" "\n" "/**\n" " * message_queue_source_new:\n" " * @queue: the queue to check\n" " * @destroy_message: (nullable): function to free a message, or %NULL\n" " * @cancellable: (nullable): a #GCancellable, or %NULL\n" " *\n" " * Create a new #MessageQueueSource, a type of #GSource which dispatches for\n" " * each message queued to it.\n" " *\n" " * If a callback function of type #MessageQueueSourceFunc is connected to the\n" " * returned #GSource using g_source_set_callback(), it will be invoked for each\n" " * message, with the message passed as its first argument. It is responsible for\n" " * freeing the message. If no callback is set, messages are automatically freed\n" " * as they are queued.\n" " *\n" " * Returns: (transfer full): a new #MessageQueueSource\n" " */\n" "GSource *\n" "message_queue_source_new (GAsyncQueue *queue,\n" " GDestroyNotify destroy_message,\n" " GCancellable *cancellable)\n" "{\n" " GSource *source; /* alias of @message_queue_source */\n" " MessageQueueSource *message_queue_source; /* alias of @source */\n" "\n" " g_return_val_if_fail (queue != NULL, NULL);\n" " g_return_val_if_fail (cancellable == NULL ||\n" " G_IS_CANCELLABLE (cancellable), NULL);\n" "\n" " source = g_source_new (&message_queue_source_funcs,\n" " sizeof (MessageQueueSource));\n" " message_queue_source = (MessageQueueSource *) source;\n" "\n" " /* The caller can overwrite this name with something more useful later. */\n" " g_source_set_name (source, \"MessageQueueSource\");\n" "\n" " message_queue_source->queue = g_async_queue_ref (queue);\n" " message_queue_source->destroy_message = destroy_message;\n" "\n" " /* Add a cancellable source. */\n" " if (cancellable != NULL)\n" " {\n" " GSource *cancellable_source;\n" "\n" " cancellable_source = g_cancellable_source_new (cancellable);\n" " g_source_set_dummy_callback (cancellable_source);\n" " g_source_add_child_source (source, cancellable_source);\n" " g_source_unref (cancellable_source);\n" " }\n" "\n" " return source;\n" "}\n" msgstr "" #. (itstool) path: section/title #: C/custom-gsource.c.page:282 #, fuzzy #| msgid "Furthermore:" msgid "Further Examples" msgstr "Furthermore:" #. (itstool) path: section/p #: C/custom-gsource.c.page:284 msgid "" "Sources can be more complex than the example given above. In libnice, a custom GSource is needed to poll a set of sockets which changes dynamically. The " "implementation is given as ComponentSource in component.c and demonstrates a more complex use of the " "prepare function." msgstr "" #. (itstool) path: section/p #: C/custom-gsource.c.page:293 msgid "" "Another example is a custom source to interface GnuTLS with GLib in its " "GTlsConnection implementation. GTlsConnectionGnutlsSource synchronizes the " "main thread and a TLS worker thread which performs the blocking TLS " "operations." msgstr "" #, fuzzy #~| msgid "" #~| "Signals in GObject documentation" #~ msgid "" #~ "MenuButton" #~ msgstr "" #~ "Les " #~ "signaux dans la documentation GObject" #~ msgid "" #~ "Gdk.keyval_name(event.keyval) converts the key value " #~ "event.keyval into a symbolic name. The names and " #~ "corresponding key values can be found here,but for instance " #~ "GDK_KEY_BackSpace becomes the string \"BackSpace\"." #~ msgstr "" #~ "La fonction Gdk.keyval_name(event.keyval) donne à la touche " #~ "event.keyval un nom symbolique. Les noms avec leurs valeurs " #~ "correspondantes se trouvent ici, mais par exemple, " #~ "GDK_KEY_BackSpace devient la chaîne « Retour " #~ "arrière »." #~ msgid "tiffany.antopolski@gmail.com" #~ msgstr "tiffany.antopolski@gmail.com" #~ msgid "Gtk.Application" #~ msgstr "Gtk.Application" #~ msgid "border_width" #~ msgstr "border_width" #~ msgid "window_position" #~ msgstr "window_position" #~ msgid "mmcasetti@gmail.com" #~ msgstr "mmcasetti@gmail.com" #~ msgid "" #~ "window = Gtk.Window(application=self, title=\"Welcome to GNOME\") sets the title as well, without the need for the line window." #~ "set_title(\"Welcome to GNOME\"). For a general discussion of this, " #~ "see here." #~ msgstr "" #~ "Le code window = Gtk.Window(application=self, title=\"Welcome to " #~ "GNOME\") définit aussi le titre, sans avoir besoin de la ligne " #~ "window.set_title(\"Welcome to GNOME\"). Pour de plus amples " #~ "informations, voyez ici." #~ msgid "GtkApplication" #~ msgstr "GtkApplication" #~ msgid "GtkWindow" #~ msgstr "GtkWindow" #~ msgid "jewelfox@fursona.net" #~ msgstr "jewelfox@fursona.net" #~ msgid "Gtk.Window" #~ msgstr "Gtk.Window" #~ msgid "ihmis.suski@gmail.com" #~ msgstr "ihmis.suski@gmail.com" #~ msgid "Creating function geoNames" #~ msgstr "Création de la fonction geoNames" #~ msgid "Methods for geoNames" #~ msgstr "Méthodes pour geoNames" #~ msgid "Autotools" #~ msgstr "Autotools" #~ msgid "Connecting signals to button and entry.\">" #~ msgstr "Connexion des signaux au bouton et champ de saisie" #~ msgid "weatherapp.js" #~ msgstr "weatherapp.js" #~ msgid "$" #~ msgstr "$" #~ msgid "GJS_PATH=`pwd` gjs weatherapp.js" #~ msgstr "GJS_PATH=`pwd` gjs weatherapp.js" #~ msgid "Beginner's Tutorial (Python)" #~ msgstr "Tutoriels pour les débutants (Python)" #~ msgid "0 Beginner's Tutorial" #~ msgstr "0 Tutoriels pour les débutants" #~ msgid "Basic buttons" #~ msgstr "Boutons élémentaires" #~ msgid "Entry widgets (with a detour on basic scrolling)" #~ msgstr "" #~ "Éléments graphiques de saisie (avec un détour sur les bases du défilement)" #~ msgid "Selectors (a recap)" #~ msgstr "Sélecteurs (récapitulation)" #~ msgid "More containers" #~ msgstr "Davantage de conteneurs" #~ msgid "More scrolling" #~ msgstr "Davantage sur le défilement" #~ msgid "\"scrollbar.py\"" #~ msgstr "\"scrollbar.py\"" #~ msgid "\"widget.py\"" #~ msgstr "\"widget.py\"" #~ msgid "Some theory to help you" #~ msgstr "Un peu de théorie pour vous aider" #~ msgid "mdhillca@gmail.com" #~ msgstr "mdhillca@gmail.com" #~ msgid "" #~ "The TreeView widget is designed around a Model/View/Controller " #~ "design. For more information, and for a list of useful methods for " #~ "TreeView and the interface TreeModel, see here." #~ msgstr "" #~ "L'élément graphique TreeView est articulé autour d'un concept Modèle/" #~ "Vue/Contrôleur. Pour de plus amples informations et pour consulter " #~ "une liste de méthodes utiles à l'utilisation de TreeView et de " #~ "l'interface TreeModel, rendez-vous ici." #~ msgid "GtkTreeView" #~ msgstr "GtkTreeView" #~ msgid "GtkTreeModel" #~ msgstr "GtkTreeModel" #~ msgid "GtkTreeStore" #~ msgstr "GtkTreeStore" #~ msgid "GtkCellRendererText" #~ msgstr "GtkCellRendererText" #~ msgid "GtkTreeViewColumn" #~ msgstr "GtkTreeViewColumn" #~ msgid "Gtk.TreeView" #~ msgstr "Gtk.TreeView" #~ msgid "Gtk.ListStore" #~ msgstr "Gtk.ListStore" #~ msgid "Gtk.TreeSelection" #~ msgstr "Gtk.TreeSelection" #~ msgid "GtkListStore" #~ msgstr "GtkListStore" #~ msgid "pygobject - Python bindings for GObject Introspection" #~ msgstr "pygobject - Liaisons Python pour l'introspection GObject" #~ msgid "Fonts" #~ msgstr "Polices" #~ msgid "Gtk.ApplicationWindow" #~ msgstr "Gtk.ApplicationWindow" #~ msgid "Gtk.CellRendererText" #~ msgstr "Gtk.CellRendererText" #~ msgid "Gtk.TreeIter" #~ msgstr "Gtk.TreeIter" #~ msgid "Gtk.TreeViewColumn" #~ msgstr "Gtk.TreeViewColumn" #~ msgid "GtkCellRendererToggle" #~ msgstr "GtkCellRendererToggle" #~ msgid "" #~ "For buttons and callbacks functions, see here" #~ msgstr "" #~ "Pour les boutons et les fonctions de rappel, voyez ici" #~ msgid "@@image: 'media/tooltip.png'; md5=6950da5f4444aa941ecc2f0fc5951d52" #~ msgstr "@@image: 'media/tooltip.png'; md5=6950da5f4444aa941ecc2f0fc5951d52" #~ msgid "GtkTooltip" #~ msgstr "GtkTooltip" #~ msgid "GtkToolbar" #~ msgstr "GtkToolbar" #~ msgid "Stock Items" #~ msgstr "Éléments de la collection" #~ msgid "Screenshot of Glade ui" #~ msgstr "Capture d'écran de l'interface utilisateur de Glade" #~ msgid "Screenshot of toolbar icon in Glade ui" #~ msgstr "" #~ "Capture d'écran de l'icône de la barre d'outils dans l'interface " #~ "utilisateur de Glade" #~ msgid "Screenshot of General tab" #~ msgstr "Capture d'écran de l'onglet Général" #~ msgid "Screenshot of Common tab" #~ msgstr "Capture d'écran de l'onglet Commun" #~ msgid "Setting the visible property to No" #~ msgstr "Définition de la propriété « Visible » à « Non »" #~ msgid "Gtk.Toolbar" #~ msgstr "Gtk.Toolbar" #~ msgid "Gtk.Toolbutton" #~ msgstr "Gtk.Toolbutton" #~ msgid "Gtk.Stock" #~ msgstr "Gtk.Stock" #~ msgid "sebp@k-d-w.org" #~ msgstr "sebp@k-d-w.org" #~ msgid "GtkGrid" #~ msgstr "GtkGrid" #~ msgid "GtkBuilder" #~ msgstr "GtkBuilder" #~ msgid "The Python Gtk+ 3 Tutorial - Glade and Gtk.Builder" #~ msgstr "Tutoriel Gtk+ 3 Python - Glade et Gtk.Builder" #~ msgid "GtkToolButton" #~ msgstr "GtkToolButton" #~ msgid "GtkToolItem" #~ msgstr "GtkToolItem" #~ msgid "GtkActionable" #~ msgstr "GtkActionable" #~ msgid "Gtk.ToolButton" #~ msgstr "Gtk.ToolButton" #~ msgid "Gtk Stock items" #~ msgstr "Éléments de la collection Gtk" #~ msgid "Gdk.WindowState" #~ msgstr "Gdk.WindowState" #~ msgid "Gtk.ToggleButton" #~ msgstr "Gtk.ToggleButton" #~ msgid "" #~ "For an explanation of signals and callback functions, see this page." #~ msgstr "" #~ "Pour de plus amples informations sur les signaux et fonctions de rappel, " #~ "consultez cette page." #~ msgid "GtkToggleButton" #~ msgstr "GtkToggleButton" #~ msgid "GtkSpinner" #~ msgstr "GtkSpinner" #~ msgid "Gtk.Grid" #~ msgstr "Gtk.Grid" #~ msgid "Gtk.Spinner" #~ msgstr "Gtk.Spinner" #~ msgid "monicakochofar@gmail.com" #~ msgstr "monicakochofar@gmail.com" #~ msgid "GtkTogglebutton" #~ msgstr "GtkTogglebutton" #~ msgid "Gtk.TextBuffer" #~ msgstr "Gtk.TextBuffer" #~ msgid "Gtk.TextView" #~ msgstr "Gtk.TextView" #~ msgid "Gtk.ScrolledWindow" #~ msgstr "Gtk.ScrolledWindow" #~ msgid "Gtk.WrapMode" #~ msgstr "Gtk.WrapMode" #~ msgid "Gtk.PolicyType" #~ msgstr "Gtk.PolicyType" #~ msgid "GtkTextView" #~ msgstr "GtkTextView" #~ msgid "GtkTextBuffer" #~ msgstr "GtkTextBuffer" #~ msgid "GtkTextTag" #~ msgstr "GtkTextTag" #~ msgid "GtkScrolledWindow" #~ msgstr "GtkScrolledWindow" #~ msgid "Standard Enumerations" #~ msgstr "Énumérations standards" #~ msgid "Gtk.Button" #~ msgstr "Gtk.Button" #~ msgid "Gtk.Label" #~ msgstr "Gtk.Label" #~ msgid "Gtk.RadioButton" #~ msgstr "Gtk.RadioButton" #~ msgid "GtkContainer" #~ msgstr "GtkContainer" #~ msgid "Gtk.Switch" #~ msgstr "Gtk.Switch" #~ msgid "" #~ "For a discussion on signals and callback functions, see this page." #~ msgstr "" #~ "Pour obtenir des informations sur les signaux et fonctions de rappel, " #~ "consultez cette page." #~ msgid "GtkSwitch" #~ msgstr "GtkSwitch" #~ msgid "GtkLabel" #~ msgstr "GtkLabel" #~ msgid "GSimpleAction" #~ msgstr "GSimpleAction" #~ msgid "Gtk.Image" #~ msgstr "Gtk.Image" #~ msgid "Definitions" #~ msgstr "Définition" #~ msgid "" #~ "Conceptionally, a string is a list of characters such " #~ "as 'A', 'B', 'C' or 'È'. Characters are abstract representations and " #~ "their meaning depends on the language and context they are used in. The " #~ "Unicode standard describes how characters are represented by " #~ "code points. For example the characters above are represented " #~ "with the code points U+0041, U+0042, U+0043, and U+00C9, respectively. " #~ "Basically, code points are numbers in the range from 0 to 0x10FFFF." #~ msgstr "" #~ "Par principe, une chaîne est composée de caractères " #~ "comme « A », « B », « C » ou « È ». Les caractères sont des " #~ "représentations abstraites et leur signification dépend de la langue et " #~ "du contexte dans lesquels ils sont utilisés. Le standard Unicode " #~ "décrit comment les caractères sont représentés par des points de " #~ "code. Par exemple, les caractères ci-dessus sont représentés " #~ "respectivement par les points de code U+0041, U+0042, U+0043 et U+00C9. " #~ "Basiquement, les points de code sont des nombres compris entre 0 et " #~ "0x10FFFF." #~ msgid "" #~ "The representation of a string as a list of code points is abstract. In " #~ "order to convert this abstract representation into a sequence of bytes " #~ "the Unicode string must be encoded. The simplest from of " #~ "encoding is ASCII and is performed as follows:" #~ msgstr "" #~ "La représentation d'une chaîne comme une liste de points de code est " #~ "abstraite. Afin de convertir cette représentation abstraite en une " #~ "séquence d'octets, la chaîne Unicode doit être codée. La méthode " #~ "de codage la plus simple est l'ASCII et se présente ainsi :" #~ msgid "" #~ "If the code point is strictly less than 128, each byte is the same as the " #~ "value of the code point." #~ msgstr "" #~ "Si le point de code est strictement inférieur à 128, chaque octet est " #~ "identique à la valeur du point de code." #~ msgid "" #~ "If the code point is 128 or greater, the Unicode string can’t be " #~ "represented in this encoding. (Python raises a UnicodeEncodeError exception in this case.)" #~ msgstr "" #~ "Si le point de code est égal ou supérieur à 128, la chaîne Unicode ne " #~ "peut pas être codée de cette façon (Python retourne une exception " #~ "UnicodeEncodeError dans ce cas)." #~ msgid "" #~ "Although ASCII encoding is simple to apply it can only encode for 128 " #~ "different characters which is hardly enough. One of the most commonly " #~ "used encodings that addresses this problem is UTF-8 (it can handle any " #~ "Unicode code point). UTF stands for “Unicode Transformation Format”, and " #~ "the ‘8’ means that 8-bit numbers are used in the encoding." #~ msgstr "" #~ "Bien que le codage en ASCII soit facile d'utilisation, il ne peut coder " #~ "que128 caractères différents, ce qui est largement insuffisant. Pour " #~ "contourner ce problème, une des méthodes de codage les plus utilisées est " #~ "UTF-8 (elle prend en charge n'importe quel point de code Unicode). UTF " #~ "signifie « Unicode Transformation Format » et le « 8 » signifie que des " #~ "nombres à 8 bits sont utilisés dans le codage." #~ msgid "How To Deal With Strings - The Python GTK+ 3 Tutorial" #~ msgstr "Travailler avec les chaînes - Le tutoriel Python GTK+ 3" #~ msgid "Gtk.Statusbar" #~ msgstr "Gtk.Statusbar" #~ msgid "GtkStatusbar" #~ msgstr "GtkStatusbar" #~ msgid "Gdk - Key Values" #~ msgstr "Gdk - Key Values" #~ msgid "Gtk.Frame" #~ msgstr "Gtk.Frame" #~ msgid "Gtk.Paned" #~ msgstr "Gtk.Paned" #~ msgid "GtkStatusBar" #~ msgstr "GtkStatusBar" #~ msgid "String Utility Functions" #~ msgstr "Fonctions de chaînes utilitaires" #~ msgid "Gtk.Widget" #~ msgstr "Gtk.Widget" #~ msgid "Gdk.keyval_name" #~ msgstr "Gdk.keyval_name" #~ msgid "Key Values" #~ msgstr "Valeurs des touches" #~ msgid "GObject" #~ msgstr "GObject" #~ msgid "Gtk.SpinButton" #~ msgstr "Gtk.SpinButton" #~ msgid "" #~ "For an explanation of signals and callback functions, see this page. An example is the " #~ "\"value-changed\" signal, emitted when the value of the spinbutton " #~ "changes." #~ msgstr "" #~ "Pour de plus amples informations sur les signaux et les fonctions de " #~ "rappel, consultez cette page. " #~ "Un exemple est le signal \"value-changed\", émis quand la " #~ "valeur du BoutonDactivité change." #~ msgid "GtkSpinButton" #~ msgstr "GtkSpinButton" #~ msgid "GtkAdjustment" #~ msgstr "GtkAdjustment" #~ msgid "Gtk.Adjustment" #~ msgstr "Gtk.Adjustment" #~ msgid "GtkSeparator" #~ msgstr "GtkSeparator" #~ msgid "GtkImage" #~ msgstr "GtkImage" #~ msgid "Gtk.Scale" #~ msgstr "Gtk.Scale" #~ msgid "Gtk.PositionType" #~ msgstr "Gtk.PositionType" #~ msgid "Gtk.Orientation" #~ msgstr "Gtk.Orientation" #~ msgid "" #~ "For an explanation of signals and callback functions, see this page. An example is the " #~ "\"value-changed\" signal, emitted when the value of the scale " #~ "changes." #~ msgstr "" #~ "Pour de plus amples informations sur les signaux et les fonctions de " #~ "rappel, consultez cette page. " #~ "Un exemple est le signal \"value-changed\" qui est émis " #~ "quand la valeur de l'échelle est modifiée." #~ msgid "GtkScale" #~ msgstr "GtkScale" #~ msgid "GtkRange" #~ msgstr "GtkRange" #~ msgid "gnome-doc-list@gnome.org" #~ msgstr "gnome-doc-list@gnome.org" #~ msgid "jhs@gnome.org" #~ msgstr "jhs@gnome.org" #~ msgid "" #~ "For a general discussion of this, see here." #~ msgstr "" #~ "Pour de plus amples informations sur cela, voyez ici." #~ msgid "GtkRadioButton" #~ msgstr "GtkRadioButton" #~ msgid "This is equivalent to:" #~ msgstr "Ce qui est équivalent à :" #~ msgid "Gtk.ProgressBar" #~ msgstr "Gtk.ProgressBar" #~ msgid "GLib.Timeout" #~ msgstr "GLib.Timeout" #~ msgid "GtkProgressBar" #~ msgstr "GtkProgressBar" #~ msgid "GLib - The Main Event Loop" #~ msgstr "GLib - La boucle de l'événement principal" #~ msgid "GLib" #~ msgstr "GLib" #~ msgid "G_Timeout" #~ msgstr "G_Timeout" #~ msgid "chrisk@openismus.com" #~ msgstr "chrisk@openismus.com" #~ msgid "Line 7: We'll look at this function in a later section." #~ msgstr "" #~ "Ligne 7 : nous regarderons cette fonction dans une section ultérieure." #~ msgid "" #~ "Line 9: This adds our ClutterActor to a GSList " #~ "so that we can later iterate over the ClutterActors." #~ msgstr "" #~ "Ligne 9 : cela ajoute notre ClutterActor à une GSList afin que nous puissions plus tard itérer sur les " #~ "ClutterActor." #~ msgid "" #~ "Interesting to note is that we want to prepend the ClutterActors rather than append so that we avoid traversing the list upon each " #~ "insertion. You will often see g_slist_prepend followed by " #~ "g_slist_reverse because it faster than inserting many " #~ "objects at the end of the list." #~ msgstr "" #~ "Il est intéressant de noter que nous ajoutons les ClutterActor en tête de liste plutôt qu'en fin de liste afin d'éviter d'avoir à " #~ "parcourir la liste à chaque insertion. Vous verrez souvent " #~ "g_slist_prepend suivi de g_slist_reverse car " #~ "c'est plus rapide que d'insérer beaucoup d'objets à la fin de la liste." #~ msgid "" #~ "Line 9: This line of code runs a custom function, " #~ "foreach_set_focus_state, for each element in our " #~ "actor_list, passing it the address to the is_focused flag. We'll see the definition of the " #~ "foreach_set_focus_state function in the next section." #~ msgstr "" #~ "Ligne 9 : cette ligne de code exécute une fonction personnalisée " #~ "foreach_set_focus_state, pour chaque élément de notre " #~ "actor_list, en lui transmettant l'adresse du drapeau " #~ "is_focused. Nous verrons la définition de la fonction " #~ "foreach_set_focus_state dans la prochaine section." #~ msgid "The address of the ClutterActor to animate" #~ msgstr "L'adresse du ClutterActor à animer" #~ msgid "" #~ "The animation mode to use. Here we use CLUTTER_LINEAR so " #~ "that we have a constant speed for animation." #~ msgstr "" #~ "Le mode d'animation à utiliser. Ici nous utilisons CLUTTER_LINEAR pour avoir une vitesse d'animation constante." #~ msgid "" #~ "The duration of the animation in milliseconds. I've chosen 500 ms for " #~ "this example." #~ msgstr "" #~ "La durée de l'animation en millisecondes. J'ai choisi 500 ms pour cet " #~ "exemple." #~ msgid "" #~ "The remaining arguments are property/value pairs. Here we want to set the " #~ "x value to the starting x value this " #~ "ClutterActor was at before being brought into focus." #~ msgstr "" #~ "Les arguments restants sont des paires propriété/valeur. Ici nous voulons " #~ "définir la valeur x à la valeur x initiale, où " #~ "ce ClutterActor était avant de posséder le focus." #~ msgid "" #~ "The last argument must always be NULL to indicate that there " #~ "are no more properties to be set." #~ msgstr "" #~ "Le dernier argument doit toujours être NULL pour indiquer " #~ "qu'il n'y a plus de propriétés à définir." #~ msgid "" #~ "The depth property needs a little more explaining. We need " #~ "to raise the focused image so that it doesn't slide behind other " #~ "ClutterActors. In this section we are returning it to the " #~ "same depth as the others on the wall." #~ msgstr "" #~ "La propriété depth nécessite un peu plus d'explications. " #~ "Nous avons besoin de mettre au premier plan l'image qui possède le focus " #~ "afin qu'elle ne glisse pas derrière d'autres ClutterActor. " #~ "Dans cette section, nous réajustons sa propriété à la même altitude que " #~ "les autres images sur le mur." #~ msgid "" #~ "Depth also determines which ClutterActors receive events. A " #~ "ClutterActor with a higher depth value receives the click " #~ "events and can choose whether the event gets sent to ClutterActors under it. We'll see how that works in a few steps." #~ msgstr "" #~ "« Depth » détermine aussi quels ClutterActor reçoivent les " #~ "événements. Un ClutterActor avec une altitude plus grande " #~ "reçoit les événements de clic et peut choisir si l'événement est transmis " #~ "au ClutterActor en dessous de lui. Nous verrons comment cela " #~ "fonctionne un peu plus loin." #~ msgid "" #~ "Lines 27‒33: This is similar to the above block of code. Notice that we " #~ "are setting the the depth to raise it above the other images." #~ msgstr "" #~ "Ligne 27-33 : similaire au bloc de code ci-dessus. Notez que nous " #~ "paramétrons l'altitude afin de placer l'acteur devant les autres images." #~ msgid "" #~ "The following is the convenience function passed to " #~ "g_slist_foreach." #~ msgstr "" #~ "Ce qui suit est la fonction bien commode transmise à " #~ "g_slist_foreach." #~ msgid "" #~ "Lines 2‒5: The signature of this function requires two gpointers. The first is a pointer to the ClutterActor that our " #~ "GSList holds and the other is the is_focused " #~ "flag that we've passed in the previous section. We want to cast these and " #~ "store them for easy use." #~ msgstr "" #~ "Ligne 2-5 : la signature de cette fonction nécessite deux gpointer. Le premier est un pointeur vers le ClutterActor que " #~ "notre GSList contient et l'autre est le drapeau " #~ "is_focused que nous avons transmis dans la section " #~ "précédente. Nous allons en garder une trace et les enregistrer pour " #~ "pouvoir les utiliser facilement." #~ msgid "" #~ "Line 7: Depending on which boolean value is passed in, the " #~ "ClutterActor will be set to respond to events or not." #~ msgstr "" #~ "Ligne 7 : en fonction de la valeur booléenne transmise, le " #~ "ClutterActor est paramétré pour répondre aux événements ou " #~ "pas." #, fuzzy #~| msgid "@@image: 'media/window.png'; md5=eb0cde3530978619c25bddfaeb453345" #~ msgid "@@image: 'media/paned.png'; md5=01e36d8a51ee18313616d63d2e15d993" #~ msgstr "@@image: 'media/window.png'; md5=eb0cde3530978619c25bddfaeb453345" #, fuzzy #~| msgid "Gtk.Paned" #~ msgid "GtkPaned" #~ msgstr "Gtk.Paned" #~ msgid "GtkComboBox" #~ msgstr "GtkComboBox" #~ msgid "GtkCellRenderer" #~ msgstr "GtkCellRenderer" #~ msgid "The Python Gtk+ 3 Tutorial - Tree and List Widgets" #~ msgstr "" #~ "Le tutoriel Python Gtk+ 3 - éléments graphiques arborescents et listes" #~ msgid "The Python Gtk+ 3 Tutorial - CellRenderers" #~ msgstr "Le tutoriel Python Gtk+ 3 - Générateurs de rendu" #~ msgid "The Python Gtk+ 3 Tutorial - ComboBox" #~ msgstr "Le tutoriel Python Gtk+ 3 - Boîte combinée" #~ msgid "Gtk.MessageDialog" #~ msgstr "Gtk.MessageDialog" #~ msgid "Gtk.DialogFlags" #~ msgstr "Gtk.DialogFlags" #~ msgid "Gtk.MessageType" #~ msgstr "Gtk.MessageType" #~ msgid "Gtk.ButtonsType" #~ msgstr "Gtk.ButtonsType" #~ msgid "GtkMessageDialog" #~ msgstr "GtkMessageDialog" #~ msgid "GtkDialog" #~ msgstr "GtkDialog" #~ msgid "GActionMap" #~ msgstr "GActionMap" #~ msgid "List of button types" #~ msgstr "Liste de types de boutons" #~ msgid "List of message types" #~ msgstr "Liste de types de messages" #, fuzzy #~| msgid "GtkApplication" #~ msgid "GApplication" #~ msgstr "GtkApplication" #~ msgid "shaunm@gnome.org" #~ msgstr "shaunm@gnome.org" #~ msgid "\"UTF-8\"" #~ msgstr "« UTF-8 »" #~ msgid "NULL" #~ msgstr "NULL" #~ msgid "shaunm" #~ msgstr "shaunm" #~ msgid "FIXME: Is this true? Does query_selector take CSS, CSSish, or what?" #~ msgstr "" #~ "FIXME : est-ce vrai ? est-ce que « query_selector » prend en charge le " #~ "CSS, le CSSish, ou quoi ?" #~ msgid "" #~ "Not passing the GError**, but we should give it a quick mention and link " #~ "to somewhere that explains how GError-handling works." #~ msgstr "" #~ "Not passing the GError**, but we should give it a quick mention and link " #~ "to somewhere that explains how GError-handling works." #~ msgid "g_base64_encode has bad args" #~ msgstr "g_base64_encode has bad args" #~ msgid "Link to method to get HTML from DOM and to GIO APIs." #~ msgstr "" #~ "Lien vers une méthode pour obtenir de l'HTML de DOM vers les API GIO." #~ msgid "Link to strftime or something" #~ msgstr "Lien vers « strftime » où autre" #~ msgid "" #~ "@@image: 'media/menubutton.png'; md5=1feb7b836a522c3007079d4420621d9d" #~ msgstr "" #~ "@@image: 'media/menubutton.png'; md5=1feb7b836a522c3007079d4420621d9d" #~ msgid "azzurroverde@gmail.com" #~ msgstr "azzurroverde@gmail.com" #~ msgid "Glib.ActionEntry" #~ msgstr "Glib.ActionEntry" #~ msgid "Gtk.Builder" #~ msgstr "Gtk.Builder" #~ msgid "dgsiegel@gnome.org" #~ msgstr "dgsiegel@gnome.org" #~ msgid "Gtk.LinkButton" #~ msgstr "Gtk.LinkButton" #~ msgid "GtkLinkButton" #~ msgstr "GtkLinkButton" #~ msgid "" #~ "label = Gtk.Label(label=\"Hello GNOME!\") could also be used " #~ "create a label and set the text directly. For a general discussion of " #~ "this, see here." #~ msgstr "" #~ "La fonction label = Gtk.Label(label=\"Hello GNOME!\") " #~ "pourrait aussi être utilisée pour créer une étiquette et y définir le " #~ "texte directement. Pour de plus amples informations sur cela, voyez ici." #~ msgid "philip.chimento@gmail.com" #~ msgstr "philip.chimento@gmail.com" #~ msgid "1 Image Viewer" #~ msgstr "1 Visionneur d'images" #~ msgid "jwendell@gnome.org" #~ msgstr "jwendell@gnome.org" #~ msgid "GtkApplicationWindow" #~ msgstr "GtkApplicationWindow" #, fuzzy #~| msgid "" #~| "To set a stock icon as image, you can use set_from_stock(stock_id, " #~| "size) where stock_id is a stock icon such as " #~| "Gtk.STOCK_ABOUT (more can be found at Stock Items, with " #~| "the caveat that they should be modified as above) and size " #~| "is a stock icon size to be chosen from Gtk.IconSize.INVALID, Gtk." #~| "IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize.LARGE_TOOLBAR, " #~| "Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize.DIALOG." #~ msgid "" #~ "To set a stock icon as image, you can use set_from_stock(stock_id, " #~ "size) where stock_id is a stock icon such as " #~ "Gtk.STOCK_ABOUT (more can be found at Stock Items, " #~ "with the caveat that they should be modified as above) and size is a stock icon size to be chosen from Gtk.IconSize.INVALID, " #~ "Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize." #~ "LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize." #~ "DIALOG." #~ msgstr "" #~ "Pour définir une icône de la collection comme image, utilisez " #~ "set_from_stock(stock_id, taille), où stock_id " #~ "est une icône de la collection Gtk.STOCK_ABOUT (vous en " #~ "trouverez d'autres dans Éléments de la collection, à ceci près qu'elles " #~ "doivent être modifiées comme ci-dessus) et où taille est une " #~ "taille d'icône de la collection à choisir parmi Gtk.IconSize." #~ "INVALID, Gtk.IconSize.MENU, Gtk.IconSize.SMALL_TOOLBAR, Gtk.IconSize." #~ "LARGE_TOOLBAR, Gtk.IconSize.BUTTON, Gtk.IconSize.DND, Gtk.IconSize." #~ "DIALOG." #~ msgid "" #~ "You can also use set_from_icon_name(icon_name, size), where " #~ "icon_name is a stock icon name such as \"gtk-about\" (more can be found as above) and size is as above." #~ msgstr "" #~ "Vous pouvez aussi utiliser la méthode set_from_icon_name(icon_name, " #~ "taille), où icon_name est une icône de la collection " #~ "\"gtk-about\" (il y en a d'autres à l'emplacement ci-dessus) " #~ "et taille comme ci-dessus." #, fuzzy #~| msgid "helloWorld.js" #~ msgid "gjs helloWorld.js" #~ msgstr "helloWorld.js" #, fuzzy #~| msgid "chmod +x helloWorld.js" #~ msgid "chmod +x helloWorld" #~ msgstr "chmod +x helloWorld.js" #~ msgid "chmod +x autogen.sh" #~ msgstr "chmod +x autogen.sh" #~ msgid "2 Guitar Tuner" #~ msgstr "2 Accordeur de guitare" #~ msgid "GJS_PATH=`pwd` gjs guitarTuner.js" #~ msgstr "GJS_PATH=`pwd` gjs guitarTuner.js" #~ msgid "GtkButton" #~ msgstr "GtkButton" #~ msgid "desrt@desrt.ca" #~ msgstr "desrt@desrt.ca" #~ msgid "" #~ "This program will not compile with the quit action connected until Bug #674090 is fixed. Therefore, the problematic line has been commented out." #~ msgstr "" #~ "Ce programme ne se compilera pas avec l'action « quitter » connectée, " #~ "tant que le Bug #674090 ne sera pas résolu. En conséquence, la " #~ "ligne posant problème a été mise en commentaire." #~ msgid "Menu" #~ msgstr "Menu" #~ msgid "append" #~ msgstr "append" #~ msgid "SimpleAction" #~ msgstr "SimpleAction" #~ msgid "add_action" #~ msgstr "add_action" #~ msgid "GVariantType" #~ msgstr "GVariantType" #~ msgid "GVariant" #~ msgstr "GVariant" #~ msgid "Automatic installation" #~ msgstr "Installation automatique" #~ msgid "" #~ "On an up-to-date distribution you should be able to simply install the " #~ "required packages by clicking on Install now." #~ msgstr "" #~ "Avec une distribution à jour, vous devriez pouvoir installer les paquets " #~ "nécessaires tout simplement en cliquant sur Installer maintenant." #~ msgid "Ubuntu" #~ msgstr "Ubuntu" #~ msgid "Fedora" #~ msgstr "Fedora" #~ msgid "OpenSuSE" #~ msgstr "OpenSuSE" #~ msgid "Others" #~ msgstr "Autres" #~ msgid "GtkFontChooserWidget" #~ msgstr "Élément graphique GtkFontChooser" #~ msgid "FileChooser" #~ msgstr "FileChooser" #~ msgid "GLib.ActionEntry" #~ msgstr "GLib.ActionEntry" #, fuzzy #~| msgid "FileChooserDialog" #~ msgid "GtkFileChooserDialog" #~ msgstr "Boîte de dialogue FileChooser" #, fuzzy #~| msgid "FileChooser" #~ msgid "GtkFileChooser" #~ msgstr "FileChooser" #~ msgid "Gtk.Entry" #~ msgstr "Gtk.Entry" #~ msgid "GtkEntry" #~ msgstr "GtkEntry" #~ msgid "Gtk.Dialog" #~ msgstr "Gtk.Dialog" #~ msgid "Gtk.Dialog.with_buttons" #~ msgstr "Gtk.Dialog.with_buttons" #~ msgid "get_content_area" #~ msgstr "get_content_area" #~ msgid "GtkCellRendererPixbuf" #~ msgstr "GtkCellRendererPixbuf" #~ msgid "Gtk.ComboBox" #~ msgstr "Gtk.ComboBox" #~ msgid "set_attributes" #~ msgstr "set_attributes" #~ msgid "GtkCellLayout" #~ msgstr "GtkCellLayout" #, fuzzy #~| msgid "GtkCellRendererPixbuf" #~ msgid "Gtk.CellRendererPixbuf" #~ msgstr "GtkCellRendererPixbuf" #~ msgid "Gtk.ComboBoxText" #~ msgstr "Gtk.ComboBoxText" #~ msgid "Gtk.ColorButton" #~ msgstr "Gtk.ColorButton" #~ msgid "Gdk.RGBA" #~ msgstr "Gdk.RGBA" #~ msgid "GtkColorButton" #~ msgstr "GtkColorButton" #~ msgid "GtkColorChooser" #~ msgstr "GtkColorChooser" #~ msgid "RGBA Colors" #~ msgstr "Couleurs RVBA" #~ msgid "Gtk.CheckButton" #~ msgstr "Gtk.CheckButton" #~ msgid "" #~ "We could also create the CheckButton with button = Gtk.CheckButton." #~ "new_with_label(\"Show Title\")." #~ msgstr "" #~ "Nous aurions pu aussi créer la CaseAcocher avec button = Gtk." #~ "CheckButton.new_with_label(\"Show Title\")." #~ msgid "GtkCheckButton" #~ msgstr "GtkCheckButton" #~ msgid "tiffany.antpoolski@gmail.com" #~ msgstr "tiffany.antpoolski@gmail.com" #, fuzzy #~| msgid "GtkButton" #~ msgid "GtkButtonBox" #~ msgstr "GtkButton" #, fuzzy #~| msgid "GtkButton" #~ msgid "GtkBox" #~ msgstr "GtkButton" #~ msgid "" #~ "button = Gtk.Button(label=\"Click me\") could also be used " #~ "create a button and set the text directly. For a general discussion of " #~ "this, see here." #~ msgstr "" #~ "La méthode button = Gtk.Button(label=« Cliquez moi ») " #~ "pourrait aussi servir à créer un bouton et définir le texte directement. " #~ "Pour de plus amples informations sur cette fonction, rendez-vous ici." #~ msgid "Unicode Manipulation" #~ msgstr "Manipulation Unicode" #~ msgid "tiffany@antopolski.com" #~ msgstr "tiffany@antopolski.com" #, fuzzy #~| msgid "0 Beginner's Tutorials" #~ msgid "Beginner Tutorials (Vala)" #~ msgstr "Tutoriels pour les débutants zéro" #~ msgid "0 Beginner's Tutorials" #~ msgstr "Tutoriels pour les débutants zéro" #~ msgid "The Vala Tutorial" #~ msgstr "Le tutoriel Vala" #~ msgid "Sample Vala code" #~ msgstr "Exemple de code Vala" #~ msgid "0 Beginner's tutorials and samples" #~ msgstr "Tutoriels pour les débutants zéro et exemples" #, fuzzy #~| msgid "0 Beginner's Tutorials" #~ msgid "Beginner's Tutorials (C)" #~ msgstr "Tutoriels pour les débutants zéro" #~ msgid "set_default_size" #~ msgstr "set_default_size" #~ msgid "GtkAboutDialog" #~ msgstr "GtkAboutDialog" #~ msgid "Gtk.AboutDialog" #~ msgstr "Gtk.AboutDialog"