Blame platform-demos/fr/menubar.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="menubar.vala" xml:lang="fr">
Packit 1470ea
  <info>
Packit 1470ea
  <title type="text">MenuBar (Vala)</title>
Packit 1470ea
  <link type="guide" xref="beginner.vala#menu-combo-toolbar"/>
Packit 1470ea
  <link type="seealso" xref="aboutdialog.vala"/>
Packit 1470ea
  <link type="seealso" xref="gmenu.vala"/>
Packit 1470ea
    <revision version="0.1" date="2012-05-25" 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>Un composant graphique qui contient des éléments graphiques GtkMenuItem</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>BarreDeMenu</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/menubar.png"/>
Packit 1470ea
  

Une BarreDeMenu créée avec XML et GtkBuilder.

Packit 1470ea
Packit 1470ea
  <links type="section"/>
Packit 1470ea
Packit 1470ea
  <section id="xml"> <title>Création d'une BarreDeMenu avec XML</title>
Packit 1470ea
   

Pour créer une BarreDeMenu avec XML :

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

créez le fichier <file>barredemenu.ui</file> avec votre éditeur de texte favorit.

</item>
Packit 1470ea
     <item>

Saisissez la ligne suivante en haut du fichier :

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

We want to create the interface which will contain our menubar and its submenus. Our menubar will contain <gui>File</gui>, <gui>Edit</gui>, <gui>Choices</gui> and <gui>Help</gui> submenus. We add the following XML code to the file:

Packit 1470ea
    <?xml version="1.0" encoding="UTF-8"?>
Packit 1470ea
<interface>
Packit 1470ea
  <menu id="menubar">
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">File</attribute>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Edit</attribute>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Choices</attribute>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Help</attribute>
Packit 1470ea
    </submenu>
Packit 1470ea
  </menu>
Packit 1470ea
</interface>
Packit 1470ea
Packit 1470ea
     </item>
Packit 1470ea
     <item>

Créons maintenant le fichier .vala et utilisons GtkBuilder pour importer le fichier <file>barredemenu.ui</file> que nous venons de faire.

</item>
Packit 1470ea
   </steps>
Packit 1470ea
   </section>
Packit 1470ea
   <section id="basis"> <title>Ajout de la BarreDeMenu à la fenêtre avec GtkBuilder</title>
Packit 1470ea
public class MyWindow : Gtk.ApplicationWindow {
Packit 1470ea
	internal MyWindow (MyApplication app) {
Packit 1470ea
		Object (application: app, title: "MenuBar Example");
Packit 1470ea
		this.set_default_size (200, 200);
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
class MyApplication: Gtk.Application {
Packit 1470ea
	protected override void activate () {
Packit 1470ea
		new MyWindow (this).show ();
Packit 1470ea
	}
Packit 1470ea
	protected override void startup () {
Packit 1470ea
		base.startup ();
Packit 1470ea
Packit 1470ea
		/* Setup menubar. */
Packit 1470ea
		/* Get the UI file. */
Packit 1470ea
		var builder = new Gtk.Builder ();
Packit 1470ea
		try {
Packit 1470ea
			builder.add_from_file ("menubar_basis.ui");
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
		/* Get the menubar from the builder. */
Packit 1470ea
		this.menubar = builder.get_object ("menubar") as MenuModel;
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
/* main creates and runs the application. */
Packit 1470ea
public int main (string[] args) {
Packit 1470ea
	return new MyApplication ().run (args);
Packit 1470ea
}
Packit 1470ea
Packit 1470ea

Maintenant, compilez le fichier vala et lancez-le. L'application devrait ressembler à l'image en haut de cette page.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
Packit 1470ea
<section id="xml2"> <title>Ajout d'éléments aux menus</title>
Packit 1470ea

Commençons par ajouter 2 éléments au menu <gui>Fichier</gui> : <gui>Nouveau</gui> et <gui>Quitter</gui>. Pour ce faire, ajoutons une section contenant ces éléments au SouMenu Fichier. Le fichier <file>barredemenu.ui</file> devrait ressembler à ceci (les lignes 6 à 13 comportent la section nouvellement ajoutée) :

Packit 1470ea
      
Packit 1470ea
Packit 1470ea
<interface>
Packit 1470ea
  <menu id="menubar">
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">File</attribute>
Packit 1470ea
      <section>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">New</attribute>
Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name ="label">Quit</attribute>
Packit 1470ea
        </item>
Packit 1470ea
      </section>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Edit</attribute>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Choices</attribute>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Help</attribute>
Packit 1470ea
    </submenu>
Packit 1470ea
  </menu>
Packit 1470ea
</interface>]]>
Packit 1470ea
Packit 1470ea

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 <link xref="menubar.vala#choices">Choix</link> d'être un peu plus loin dans ce guide.

Packit 1470ea
Packit 1470ea
<note style="tip">

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.

</note>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="actions"><title>Définition des actions</title>
Packit 1470ea

Ceci est un processus en trois étapes.

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

Premièrement, créons la matrice ActionEntry dans la classe MyApplication. Une ActionEntry se compose :

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

du nom « action name » (obligatoire)

</item>
Packit 1470ea
    <item>

de la fonction de rappel pour connecter le signal « activate » à l'action (si applicable)

</item>
Packit 1470ea
    <item>

du type de paramètre qui doit être transmis à la fonction activate pour l'action (si applicable)

</item>
Packit 1470ea
    <item>

de l'état initial de cette action (si applicable)

</item>
Packit 1470ea
    <item>

du rappel à connecter au signal « change-state » (si applicable)

</item>
Packit 1470ea
  </list>
Packit 1470ea
   
Packit 1470ea
const ActionEntry[] actions = {
Packit 1470ea
    { "new", new_cb }, // {"action name", callback_function}
Packit 1470ea
    { "quit", quit_cb }
Packit 1470ea
};
Packit 1470ea
Packit 1470ea
  </item>
Packit 1470ea
  <item>

Deuxièmement, nous créons les fonctions de rappel qui sont connectées aux actions.

Packit 1470ea
  
Packit 1470ea
void new_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
    print ("You clicked \"New\"\n");
Packit 1470ea
    //new MyWindow (this).show ();
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
void quit_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
    print ("You clicked \"Quit\"\n");
Packit 1470ea
    this.quit ();
Packit 1470ea
}
Packit 1470ea
 </item>
Packit 1470ea
  <item>

Et troisièmement, nous connectons les éléments du menu aux actions dans le fichier XML en y ajoutant l'attribut « action » :

Packit 1470ea
    
Packit 1470ea
<item>
Packit 1470ea
  <attribute name="label">New</attribute>
Packit 1470ea
  <attribute name="action">app.new</attribute>
Packit 1470ea
</item>
Packit 1470ea
<item>
Packit 1470ea
  <attribute name="label">Quit</attribute>
Packit 1470ea
  <attribute name="action">app.quit</attribute>
Packit 1470ea
</item>]]>
Packit 1470ea
 </item>
Packit 1470ea
</steps>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
<section id="choices"><title>Le SousMenu Choix et les éléments avec leur état</title>
Packit 1470ea
  <media type="image" mime="image/png" src="media/menubar_choices.png"/>
Packit 1470ea
  

Les lignes 30 à 80 inclues de <link xref="menubar.vala#xml-code"/> décrivent le code XML utilisé pour créer le menu <gui>Choix</gui> de l'interface utilisateur.

Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
<section id="win-app"><title>Actions : application ou fenêtre ?</title>
Packit 1470ea
  

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.

Packit 1470ea
Packit 1470ea
  

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.

Packit 1470ea
Packit 1470ea
  

Packit 1470ea
   The complete example files contain both application actions and
Packit 1470ea
   window applications.  The window actions are the ones usually included in the <link xref="gmenu.vala">application menu</link> 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.
Packit 1470ea
  

Packit 1470ea
Packit 1470ea
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
  <section id="xml-code"><title>Fichier XML complet de l'interface utilisateur de cet exemple</title>
Packit 1470ea
<?xml version="1.0" encoding="UTF-8"?>
Packit 1470ea
<interface>
Packit 1470ea
  <menu id="menubar">
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">File</attribute>
Packit 1470ea
      <section>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">New</attribute>
Packit 1470ea
          <attribute name="action">app.new</attribute>
Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">Quit</attribute>
Packit 1470ea
          <attribute name="action">app.quit</attribute>
Packit 1470ea
        </item>
Packit 1470ea
      </section>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Edit</attribute>
Packit 1470ea
      <section>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">Copy</attribute>
Packit 1470ea
          <attribute name="action">win.copy</attribute>
Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">Paste</attribute>
Packit 1470ea
          <attribute name="action">win.paste</attribute>
Packit 1470ea
        </item>
Packit 1470ea
      </section>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Choices</attribute>
Packit 1470ea
      <submenu>
Packit 1470ea
        <attribute name="label">Shapes</attribute>
Packit 1470ea
          <section>
Packit 1470ea
            <item>
Packit 1470ea
              <attribute name="label">Line</attribute>
Packit 1470ea
              <attribute name="action">win.shape</attribute>
Packit 1470ea
              <attribute name="target">line</attribute>
Packit 1470ea
            </item>
Packit 1470ea
            <item>
Packit 1470ea
              <attribute name="label">Triangle</attribute>
Packit 1470ea
              <attribute name="action">win.shape</attribute>
Packit 1470ea
              <attribute name="target">triangle</attribute>
Packit 1470ea
            </item>
Packit 1470ea
            <item>
Packit 1470ea
              <attribute name="label">Square</attribute>
Packit 1470ea
              <attribute name="action">win.shape</attribute>
Packit 1470ea
              <attribute name="target">square</attribute>
Packit 1470ea
            </item>
Packit 1470ea
            <item>
Packit 1470ea
              <attribute name="label">Polygon</attribute>
Packit 1470ea
              <attribute name="action">win.shape</attribute>
Packit 1470ea
              <attribute name="target">polygon</attribute>
Packit 1470ea
            </item>
Packit 1470ea
            <item>
Packit 1470ea
              <attribute name="label">Circle</attribute>
Packit 1470ea
              <attribute name="action">win.shape</attribute>
Packit 1470ea
              <attribute name="target">circle</attribute>
Packit 1470ea
            </item>
Packit 1470ea
          </section>
Packit 1470ea
      </submenu>
Packit 1470ea
      <section>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">On</attribute>
Packit 1470ea
          <attribute name="action">app.state</attribute>
Packit 1470ea
          <attribute name="target">on</attribute>
Packit 1470ea
        </item>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">Off</attribute>
Packit 1470ea
          <attribute name="action">app.state</attribute>
Packit 1470ea
          <attribute name="target">off</attribute>
Packit 1470ea
        </item>
Packit 1470ea
      </section>
Packit 1470ea
      <section>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">Awesome</attribute>
Packit 1470ea
          <attribute name="action">app.awesome</attribute>
Packit 1470ea
        </item>
Packit 1470ea
      </section>
Packit 1470ea
    </submenu>
Packit 1470ea
    <submenu>
Packit 1470ea
      <attribute name="label">Help</attribute>
Packit 1470ea
      <section>
Packit 1470ea
        <item>
Packit 1470ea
          <attribute name="label">About</attribute>
Packit 1470ea
          <attribute name="action">win.about</attribute>
Packit 1470ea
        </item>
Packit 1470ea
      </section>
Packit 1470ea
    </submenu>
Packit 1470ea
  </menu>
Packit 1470ea
  <menu id="appmenu">
Packit 1470ea
    <section>
Packit 1470ea
      <item>
Packit 1470ea
        <attribute name="label">New</attribute>
Packit 1470ea
        <attribute name="action">app.new</attribute>
Packit 1470ea
      </item>
Packit 1470ea
      <item>
Packit 1470ea
        <attribute name="label">Quit</attribute>
Packit 1470ea
        <attribute name="action">app.quit</attribute>
Packit 1470ea
      </item>
Packit 1470ea
    </section>
Packit 1470ea
  </menu>
Packit 1470ea
</interface>
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
  <section id="vala-code"><title>Fichier vala complet de cet exemple</title>
Packit 1470ea
public class MyWindow : Gtk.ApplicationWindow {
Packit 1470ea
Packit 1470ea
	/* Callback functions for the window actions. */
Packit 1470ea
	void copy_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
		print ("\"Copy\" activated\n");
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void paste_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
		print ("\"Paste\" activated\n");
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void shape_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
		print ("shape is set to %s\n", parameter.get_string(null));
Packit 1470ea
		action.set_state (parameter);
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	/* Create the window actions. */
Packit 1470ea
	const ActionEntry[] actions = {
Packit 1470ea
		/*{ "action name", cb to connect to "activate" signal, parameter type,
Packit 1470ea
		     initial state, cb to connect to "change-state" signal } */
Packit 1470ea
		{ "copy", copy_cb },
Packit 1470ea
		{ "paste", paste_cb },
Packit 1470ea
		{ "shape", shape_cb, "s", "'line'"}
Packit 1470ea
	};
Packit 1470ea
Packit 1470ea
	internal MyWindow (MyApplication app) {
Packit 1470ea
		Object (application: app, title: "MenuBar Example");
Packit 1470ea
		this.set_default_size (200, 200);
Packit 1470ea
Packit 1470ea
		/* Setup window actions. */
Packit 1470ea
		this.add_action_entries (actions, this);
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
class MyApplication: Gtk.Application {
Packit 1470ea
	protected override void activate () {
Packit 1470ea
		new MyWindow (this).show ();
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	/* Callback functions for the application actions. */
Packit 1470ea
	void new_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
		//new MyWindow (this).show ();
Packit 1470ea
		print ("You clicked \"New\"\n");
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void quit_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
		print ("You clicked \"Quit\"\n");
Packit 1470ea
		this.quit ();
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void awesome_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
		var active = action.get_state ().get_boolean ();
Packit 1470ea
		action.set_state (new Variant.boolean (!active));
Packit 1470ea
		if (active)
Packit 1470ea
			print ("You unchecked \"Awesome\"\n");
Packit 1470ea
		else
Packit 1470ea
			print ("You checked \"Awesome\"\n");
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	void state_cb (SimpleAction action, Variant? parameter) {
Packit 1470ea
		print ("state is set to %s\n", parameter.get_string(null));
Packit 1470ea
		action.set_state (parameter);
Packit 1470ea
	}
Packit 1470ea
Packit 1470ea
	/* Create the application actions. */
Packit 1470ea
	const ActionEntry[] actions = {
Packit 1470ea
		{ "new", new_cb },
Packit 1470ea
		{ "quit", quit_cb },
Packit 1470ea
		{ "awesome", awesome_cb, null, "false" },
Packit 1470ea
		{ "state", state_cb, "s", "'off'" }
Packit 1470ea
	};
Packit 1470ea
Packit 1470ea
	protected override void startup () {
Packit 1470ea
		base.startup ();
Packit 1470ea
Packit 1470ea
		/* Setup application actions. */
Packit 1470ea
		this.add_action_entries (actions, this);
Packit 1470ea
Packit 1470ea
		/* Setup menubar and app_menu. */
Packit 1470ea
		/* Get the UI file. */
Packit 1470ea
		var builder = new Gtk.Builder ();
Packit 1470ea
		try {
Packit 1470ea
			builder.add_from_file ("menubar.ui");
Packit 1470ea
		} catch (Error e) {
Packit 1470ea
			error ("Unable to load file: %s", e.message);
Packit 1470ea
		}
Packit 1470ea
Packit 1470ea
		/* Get the menubar from the builder. */
Packit 1470ea
		this.menubar = builder.get_object ("menubar") as MenuModel;
Packit 1470ea
Packit 1470ea
		/* Get the app_menu from the builder. */
Packit 1470ea
		this.app_menu = builder.get_object ("appmenu") as MenuModel;
Packit 1470ea
	}
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
/* main creates and runs the application. */
Packit 1470ea
public int main (string[] args) {
Packit 1470ea
	return new MyApplication ().run (args);
Packit 1470ea
}
Packit 1470ea
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="mnemonics"><title>Mnémoniques</title>
Packit 1470ea
    

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.

Packit 1470ea
   

Vous pouvez voir les mnémoniques en appuyant sur la touche <key>Alt</key>. Pour ouvrir le menu <gui>Fichier</gui>, appuyez sur la combinaison de touches <keyseq><key>Alt</key><key>F</key></keyseq>.

Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="accelerators"><title>Raccourcis clavier</title>
Packit 1470ea
    

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 <keyseq><key>Ctrl</key><key>Q</key></keyseq> ou enregistrer un fichier avec <keyseq><key>Ctrl</key><key>S</key></keyseq>. Pour ajouter un raccourci clavier à la définition de l'interface, ajoutez simplement un attribut « accel » à l'élément.

Packit 1470ea

<Primary>q</attribute>]]> will create the <keyseq><key>Ctrl</key><key>Q</key></keyseq> sequence when added to the Quit label item. Here, "Primary" refers to the <key>Ctrl</key> key on a PC or the <key>⌘</key> key on a Mac.

Packit 1470ea
Packit 1470ea
  
Packit 1470ea
<item>
Packit 1470ea
  <attribute name="label">_Quit</attribute>
Packit 1470ea
  <attribute name="action">app.quit</attribute>
Packit 1470ea
  <attribute name="accel"><Primary>q</attribute>
Packit 1470ea
</item>]]>
Packit 1470ea
  </section>
Packit 1470ea
Packit 1470ea
  <section id="translatable"><title>Chaînes de caractères traduisibles</title>
Packit 1470ea
   

Packit 1470ea
   Since GNOME applications are being translated into <link href="http://l10n.gnome.org/languages/">many languages</link>, it is important that the strings in your application are translatable.  To make a label translatable, simple set translatable="yes":
Packit 1470ea
   

Packit 1470ea
   

Packit 1470ea
     Quit</attribute>]]>
Packit 1470ea
  

Packit 1470ea
  </section>
Packit 1470ea
  <section id="documentation"><title>Documentation API associée</title>
Packit 1470ea

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

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

<link href="http://valadoc.org/gio-2.0/GLib.ActionEntry.html">Glib.ActionEntry</link>

</item>
Packit 1470ea
  <item>

<link href="http://valadoc.org/gio-2.0/Gtk.Builder.html">Gtk.Builder</link>

</item>
Packit 1470ea
</list>
Packit 1470ea
</section>
Packit 1470ea
Packit 1470ea
Packit 1470ea
<section id="exercises"><title>Exercices</title>
Packit 1470ea
  <xi:include href="exercises/menubar.vala.exercises"><xi:fallback/></xi:include>
Packit 1470ea
</section>
Packit 1470ea
</page>