Blame platform-demos/fr/toolbar_builder.vala.page

Packit 1470ea
Packit 1470ea
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" xmlns:xi="http://www.w3.org/2001/XInclude" type="guide" style="task" id="toolbar_builder.vala" xml:lang="fr">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">Toolbar created using Glade (Vala)</title>
Packit 1470ea
    <link type="guide" xref="beginner.vala#menu-combo-toolbar"/>
Packit 1470ea
    <link type="seealso" xref="toolbar.vala"/>
Packit 1470ea
    <link type="seealso" xref="grid.vala"/>
Packit 1470ea
    <revision version="0.1" date="2012-05-08" status="draft"/>
Packit 1470ea
Packit 1470ea
    <credit type="author copyright">
Packit 1470ea
      <name>Tiffany Antopolski</name>
Packit 1470ea
      <email its:translate="no">tiffany.antopolski@gmail.com</email>
Packit 1470ea
      <years>2012</years>
Packit 1470ea
    </credit>
Packit 1470ea
Packit 1470ea
    <desc>Une barre de boutons</desc>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luc Rebert,</mal:name>
Packit 1470ea
      <mal:email>traduc@rebert.name</mal:email>
Packit 1470ea
      <mal:years>2011</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Alain Lojewski,</mal:name>
Packit 1470ea
      <mal:email>allomervan@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011-2012</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luc Pionchon</mal:name>
Packit 1470ea
      <mal:email>pionchon.luc@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Bruno Brouard</mal:name>
Packit 1470ea
      <mal:email>annoa.b@gmail.com</mal:email>
Packit 1470ea
      <mal:years>2011-12</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  
Packit 1470ea
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
Packit 1470ea
      <mal:name>Luis Menina</mal:name>
Packit 1470ea
      <mal:email>liberforce@freeside.fr</mal:email>
Packit 1470ea
      <mal:years>2014</mal:years>
Packit 1470ea
    </mal:credit>
Packit 1470ea
  </info>
Packit 1470ea
Packit 1470ea
  <title>Barre d'outils créée avec Glade</title>
Packit 1470ea
Packit 1470ea
  <media type="image" mime="image/png" src="media/toolbar.png"/>
Packit 1470ea
  

Cet exemple est identique à <link xref="toolbar.vala"/>, sauf que nous utilisons Glade pour créer la barre d'outils dans un fichier XML .ui.

Packit 1470ea
Packit 1470ea
  

Pour créer la barre d'outils avec <link href="http://glade.gnome.org/">Glade</link> :

Packit 1470ea
  <steps>
Packit 1470ea
    <item>

ouvrez Glade et enregistrez le fichier sous <file>toolbar_builder.ui</file>

Packit 1470ea
          

<media type="image" src="media/glade_ui.png" width="900">

Packit 1470ea
              Screenshot of Glade ui
Packit 1470ea
           </media>

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

Au-dessous de <gui>Conteneurs</gui>, dans la partie gauche, faites un clic droit sur une icône de la barre d'outils et sélectionnez <gui>Ajouter un widget comme premier niveau</gui>.

Packit 1470ea
          

<media type="image" src="media/glade_select_toolbar.png">

Packit 1470ea
           Screenshot of toolbar icon in Glade ui
Packit 1470ea
          </media>

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

Dans l'onglet <gui>Général</gui>, dans la partie inférieure droite, modifiez le <gui>Nom</gui> en <input>toolbar</input> et mettez l'option <gui>Afficher la flèche</gui> à <gui>Non</gui>.

Packit 1470ea
          

<media type="image" src="media/glade_toolbar_general.png">

Packit 1470ea
             Screenshot of General tab
Packit 1470ea
          </media>

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

Dans l'onglet <gui>Commun</gui>, définissez <gui>Extension horizontale</gui>à <gui>Oui</gui>.

Packit 1470ea
         

<media type="image" src="media/glade_toolbar_common.png">

Packit 1470ea
              Screenshot of Common tab
Packit 1470ea
          </media>

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

Faites un clic droit sur « toolbar » dans la partie en haut à droite et sélectionnez <gui>Éditer</gui>. La boîte de dialogue <gui>Éditeur de barre d'outils</gui> s'affiche.

Packit 1470ea
         

<media type="image" src="media/glade_toolbar_edit.png">

Packit 1470ea
             Screenshot of where to right click to edit toolbar.
Packit 1470ea
          </media>

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

Nous voulons ajouter 5 ToolButtons (boutons) : « Nouveau », « Ouvrir », « Mode plein écran » et « Quitter le mode plein écran ». Ajoutons d'abord le ToolButton « Nouveau ».

Packit 1470ea
     <steps>
Packit 1470ea
       <item>

Dans l'onglet <gui>Hiérarchie</gui>, cliquez sur <gui>Ajouter</gui>.

</item>
Packit 1470ea
       <item>

Modifiez le nom de l'élément outil (ToolItem) en <input>new_button</input>.

</item>
Packit 1470ea
       <item>

Faites défiler vers le bas et définissez <gui>Est important</gui> à <gui>Oui</gui>. Ceci provoque l'affichage de l'étiquette du ToolButton quand vous affichez la barre d'outils.

</item>
Packit 1470ea
       <item>

Saisissez le <gui>nom de l'action</gui> : <input>app.new</input>.

</item>
Packit 1470ea
       <item>

Modifiez le champ <gui>Étiquette</gui> en <input>New</input> (Nouveau).

</item>
Packit 1470ea
       <item>

Dans le menu déroulant « ID prédéfini », sélectionnez <gui>Nouveau</gui>, ou saisissez <input>gtk-new</input>.

</item>
Packit 1470ea
     </steps>
Packit 1470ea
     

Répétez les étapes ci-dessus pour tous les autres ToolButtons en leur attribuant les propriétés suivantes :

Packit 1470ea
  
Packit 1470ea
    
Packit 1470ea
      
Packit 1470ea
        

Nom

Packit 1470ea
        

Est important

Packit 1470ea
        

Nom de l'action

Packit 1470ea
        

Étiquette

Packit 1470ea
        

ID prédéfini

Packit 1470ea
      
Packit 1470ea
    
Packit 1470ea
    
Packit 1470ea
    
Packit 1470ea
      

open_button

Packit 1470ea
      

Oui

Packit 1470ea
      

app.open

Packit 1470ea
      

Open (Ouvrir)

Packit 1470ea
      

gtk-open

Packit 1470ea
    
Packit 1470ea
    
Packit 1470ea
      

undo_button

Packit 1470ea
      

Oui

Packit 1470ea
      

win.undo

Packit 1470ea
      

Undo (Annuler)

Packit 1470ea
      

gtk-undo

Packit 1470ea
    
Packit 1470ea
    
Packit 1470ea
      

fullscreen_button

Packit 1470ea
      

Oui

Packit 1470ea
      

win.fullscreen

Packit 1470ea
      

Fullscreen (Mode plein écran)

Packit 1470ea
      

gtk-fullscreen

Packit 1470ea
    
Packit 1470ea
    
Packit 1470ea
      

leave_fullscreen_button

Packit 1470ea
      

Oui

Packit 1470ea
      

win.fullscreen

Packit 1470ea
      

Leave Fullscreen (Quitter le mode plein écran)

Packit 1470ea
      

gtk-leave-fullscreen

Packit 1470ea
    
Packit 1470ea
    
Packit 1470ea
Packit 1470ea
          <media type="image" src="media/glade_toolbar_editor.png">
Packit 1470ea
Packit 1470ea
          </media>
Packit 1470ea
    </item>
Packit 1470ea
Packit 1470ea
    <item>

Fermez l'<gui>Éditeur de barre d'outils</gui>.

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

Au lancement du programme, nous ne voulons pas que le ToolButton <gui>Quitter le mode plein écran</gui> s'affiche, car nous ne sommes pas en mode plein écran. Dans l'onglet <gui>Commun</gui>, définissez la propriété <gui>Visible</gui> sur <gui>Non</gui>. 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.

Packit 1470ea
          

<media type="image" src="media/glade_visible_no.png">

Packit 1470ea
                 Setting the visible property to No
Packit 1470ea
          </media>

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

Enregistrez votre travail et quittez Glade.

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

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 <file>toolbar_builder.ui</file> :

Packit 1470ea
   
Packit 1470ea
  <style>
Packit 1470ea
     <class name="primary-toolbar"/>
Packit 1470ea
  </style>
Packit 1470ea
  ]]>
Packit 1470ea
  

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.

Packit 1470ea
   </item>
Packit 1470ea
</steps>
Packit 1470ea
  <?xml version="1.0" encoding="UTF-8"?>
Packit 1470ea
<interface>
Packit 1470ea
  <!-- interface-requires gtk+ 3.0 -->
Packit 1470ea
  <object class="GtkToolbar" id="toolbar">
Packit 1470ea
    <property name="visible">True</property>
Packit 1470ea
    <property name="can_focus">False</property>
Packit 1470ea
    <property name="hexpand">True</property>
Packit 1470ea
    <property name="show_arrow">False</property>
Packit 1470ea
    <child>
Packit 1470ea
      <object class="GtkToolButton" id="new_button">
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="visible">True</property>
Packit 1470ea
        <property name="can_focus">False</property>
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="is_important">True</property>
Packit 1470ea
        <property name="action_name">app.new</property>
Packit 1470ea
        <property name="label" translatable="yes">New</property>
Packit 1470ea
        <property name="use_underline">True</property>
Packit 1470ea
        <property name="stock_id">gtk-new</property>
Packit 1470ea
      </object>
Packit 1470ea
      <packing>
Packit 1470ea
        <property name="expand">False</property>
Packit 1470ea
        <property name="homogeneous">True</property>
Packit 1470ea
      </packing>
Packit 1470ea
    </child>
Packit 1470ea
    <child>
Packit 1470ea
      <object class="GtkToolButton" id="open_button">
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="visible">True</property>
Packit 1470ea
        <property name="can_focus">False</property>
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="is_important">True</property>
Packit 1470ea
        <property name="action_name">app.open</property>
Packit 1470ea
        <property name="label" translatable="yes">Open</property>
Packit 1470ea
        <property name="use_underline">True</property>
Packit 1470ea
        <property name="stock_id">gtk-open</property>
Packit 1470ea
      </object>
Packit 1470ea
      <packing>
Packit 1470ea
        <property name="expand">False</property>
Packit 1470ea
        <property name="homogeneous">True</property>
Packit 1470ea
      </packing>
Packit 1470ea
    </child>
Packit 1470ea
    <child>
Packit 1470ea
      <object class="GtkToolButton" id="undo_button">
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="visible">True</property>
Packit 1470ea
        <property name="can_focus">False</property>
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="is_important">True</property>
Packit 1470ea
        <property name="action_name">win.undo</property>
Packit 1470ea
        <property name="label" translatable="yes">Undo</property>
Packit 1470ea
        <property name="use_underline">True</property>
Packit 1470ea
        <property name="stock_id">gtk-undo</property>
Packit 1470ea
      </object>
Packit 1470ea
      <packing>
Packit 1470ea
        <property name="expand">False</property>
Packit 1470ea
        <property name="homogeneous">True</property>
Packit 1470ea
      </packing>
Packit 1470ea
    </child>
Packit 1470ea
    <child>
Packit 1470ea
      <object class="GtkToolButton" id="fullscreen_button">
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="visible">True</property>
Packit 1470ea
        <property name="can_focus">False</property>
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="is_important">True</property>
Packit 1470ea
        <property name="action_name">win.fullscreen</property>
Packit 1470ea
        <property name="label" translatable="yes">Fullscreen</property>
Packit 1470ea
        <property name="use_underline">True</property>
Packit 1470ea
        <property name="stock_id">gtk-fullscreen</property>
Packit 1470ea
      </object>
Packit 1470ea
      <packing>
Packit 1470ea
        <property name="expand">False</property>
Packit 1470ea
        <property name="homogeneous">True</property>
Packit 1470ea
      </packing>
Packit 1470ea
    </child>
Packit 1470ea
    <child>
Packit 1470ea
      <object class="GtkToolButton" id="leave_fullscreen_button">
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="can_focus">False</property>
Packit 1470ea
        <property name="use_action_appearance">False</property>
Packit 1470ea
        <property name="is_important">True</property>
Packit 1470ea
        <property name="action_name">win.fullscreen</property>
Packit 1470ea
        <property name="label" translatable="yes">Leave Fullscreen</property>
Packit 1470ea
        <property name="use_underline">True</property>
Packit 1470ea
        <property name="stock_id">gtk-leave-fullscreen</property>
Packit 1470ea
      </object>
Packit 1470ea
      <packing>
Packit 1470ea
        <property name="expand">False</property>
Packit 1470ea
        <property name="homogeneous">True</property>
Packit 1470ea
      </packing>
Packit 1470ea
    </child>
Packit 1470ea
  </object>
Packit 1470ea
</interface>
Packit 1470ea
Packit 1470ea
Packit 1470ea
  

Le code ci-dessous ajoute la barre d'outils du fichier que nous venons de finir.

Packit 1470ea
/* This is the Window */
Packit 1470ea
class MyWindow : Gtk.ApplicationWindow {
Packit 1470ea
Packit 1470ea
	/* Declare these two ToolButtons, as we will get them
Packit 1470ea
	 * from the ui file (see lines 32 and 33), so we can
Packit 1470ea
	 * hide() and show() them as needed.*/
Packit 1470ea
	Gtk.ToolButton fullscreen_button;
Packit 1470ea
	Gtk.ToolButton leave_fullscreen_button;
Packit 1470ea
Packit 1470ea
	/* Constructor */
Packit 1470ea
	internal MyWindow (MyApplication app) {
Packit 1470ea
		Object (application: app, title: "Toolbar Example");
Packit 1470ea
Packit 1470ea
		this.set_default_size (400, 200);
Packit 1470ea
		var grid = new Gtk.Grid ();
Packit 1470ea
		this.add (grid);
Packit 1470ea
		grid.show ();
Packit 1470ea
Packit 1470ea
		/* add the toolbar from the ui file */
Packit 1470ea
		var builder = new Gtk.Builder ();
Packit 1470ea
		try {
Packit 1470ea
			builder.add_from_file ("toolbar_builder.ui");
Packit 1470ea
		}
Packit 1470ea
		/* Handle the exception */
Packit 1470ea
		catch (Error e) {
Packit 1470ea
			error ("Unable to load file: %s", e.message);
Packit 1470ea
		}
Packit 1470ea
Packit 1470ea
		grid.attach (builder.get_object ("toolbar") as Gtk.Toolbar, 0, 0, 1, 1);
Packit 1470ea
Packit 1470ea
		/* get these objects from the ui file so we can toggle between them */
Packit 1470ea
		fullscreen_button = builder.get_object ("fullscreen_button") as Gtk.ToolButton;
Packit 1470ea
		leave_fullscreen_button = builder.get_object ("leave_fullscreen_button") as Gtk.ToolButton;
Packit 1470ea
Packit 1470ea
		/* create the "undo" window action action */
Packit 1470ea
		var undo_action = new SimpleAction ("undo", null);
Packit 1470ea
		undo_action.activate.connect (undo_callback);
Packit 1470ea
		this.add_action (undo_action);
Packit 1470ea
Packit 1470ea
		/* create the "fullscreen" window action */
Packit 1470ea
		var fullscreen_action = new SimpleAction ("fullscreen", null);
Packit 1470ea
		fullscreen_action.activate.connect (fullscreen_callback);
Packit 1470ea
		this.add_action (fullscreen_action);
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void undo_callback (SimpleAction simple, Variant? parameter) {
Packit 1470ea
			print ("You clicked \"Undo\".\n");
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void fullscreen_callback (SimpleAction simple, Variant? parameter) {
Packit 1470ea
		if ((this.get_window ().get_state () & Gdk.WindowState.FULLSCREEN) != 0) {
Packit 1470ea
			this.unfullscreen ();
Packit 1470ea
			leave_fullscreen_button.hide ();
Packit 1470ea
			fullscreen_button.show ();
Packit 1470ea
		}
Packit 1470ea
		else {
Packit 1470ea
			this.fullscreen ();
Packit 1470ea
			fullscreen_button.hide ();
Packit 1470ea
			leave_fullscreen_button.show ();
Packit 1470ea
		}
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
/* This is the application */
Packit 1470ea
class MyApplication : Gtk.Application {
Packit 1470ea
	protected override void activate () {
Packit 1470ea
		new MyWindow (this).show ();
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	protected override void startup () {
Packit 1470ea
		base.startup ();
Packit 1470ea
Packit 1470ea
		/* Create the "new" action and add it to the app*/
Packit 1470ea
		var new_action = new SimpleAction ("new", null);
Packit 1470ea
		new_action.activate.connect (new_callback);
Packit 1470ea
		this.add_action (new_action);
Packit 1470ea
Packit 1470ea
		/* Create the "open" action, and add it to the app */
Packit 1470ea
		var open_action = new SimpleAction ("open", null);
Packit 1470ea
		open_action.activate.connect (open_callback);
Packit 1470ea
		this.add_action (open_action);
Packit 1470ea
Packit 1470ea
		/* You could also add the action to the app menu
Packit 1470ea
		 * if you wanted to.
Packit 1470ea
		 */
Packit 1470ea
		//var menu = new Menu ();
Packit 1470ea
		//menu.append ("New", "app.new");
Packit 1470ea
		//this.app_menu = menu;
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void new_callback (SimpleAction action, Variant? parameter) {
Packit 1470ea
		print ("You clicked \"New\".\n");
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void open_callback (SimpleAction action, Variant? parameter) {
Packit 1470ea
			print ("You clicked \"Open\".\n");
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
/* The main function creates the application and runs it. */
Packit 1470ea
int main (string[] args) {
Packit 1470ea
	return new MyApplication ().run (args);
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
Packit 1470ea

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

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

<link href="http://www.valadoc.org/gtk+-3.0/Gtk.Toolbar.html">Gtk.Toolbar</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.valadoc.org/gtk+-3.0/Gtk.ToolButton.html">Gtk.Toolbutton</link>

</item>
Packit 1470ea
  <item>

<link href="http://www.valadoc.org/gtk+-3.0/Gtk.Stock.html">Gtk.Stock</link>

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