[gtkmm-documentation] Update Spanish translation



commit 211a1abf9d6b226c5cbeb0cb284ec2255c00b2a1
Author: Daniel Mustieles <daniel mustieles gmail com>
Date:   Wed Jan 13 12:47:19 2021 +0000

    Update Spanish translation

 docs/tutorial/es/es.po | 24667 +++++++++++++++++++++++++++++++----------------
 1 file changed, 16501 insertions(+), 8166 deletions(-)
---
diff --git a/docs/tutorial/es/es.po b/docs/tutorial/es/es.po
index b44aa96..874bcd1 100644
--- a/docs/tutorial/es/es.po
+++ b/docs/tutorial/es/es.po
@@ -14,156 +14,121 @@
 # Rafael Angel <rafo424 gmail com>, 2011.
 # Rafael Chunga <rafo424 gmail com>, 2012.
 # Nicolás Satragno <nsatragno gnome org>, 2012, 2013.
-# Daniel Mustieles <daniel mustieles gmail com>, 2011, 2012, 2013.
+# Daniel Mustieles <daniel mustieles gmail com>, 2011-2021.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: gtkmm-documentation.tutorial.master\n"
-"POT-Creation-Date: 2014-04-03 21:30+0000\n"
-"PO-Revision-Date: 2013-11-22 17:12+0100\n"
+"POT-Creation-Date: 2021-01-07 11:53+0000\n"
+"PO-Revision-Date: 2021-01-13 13:43+0100\n"
 "Last-Translator: Daniel Mustieles <daniel mustieles gmail com>\n"
-"Language-Team: Español <gnome-es-list gnome org>\n"
-"Language: es\n"
+"Language-Team: Spanish - Spain <gnome-es-list gnome org>\n"
+"Language: es_ES\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: Gtranslator 2.91.6\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Gtranslator 3.38.0\n"
 
-#: C/gtkmm-tutorial-in.xml:34(title)
-msgid "Programming with <application>gtkmm</application> 3"
-msgstr "Programar con <application>gtkmm</application> 3"
-
-#: C/gtkmm-tutorial-in.xml:38(firstname)
-msgid "Murray"
-msgstr "Murray"
-
-#: C/gtkmm-tutorial-in.xml:39(surname)
-msgid "Cumming"
-msgstr "Cumming"
-
-#: C/gtkmm-tutorial-in.xml:42(firstname)
-msgid "Bernhard"
-msgstr "Bernhard"
-
-#: C/gtkmm-tutorial-in.xml:43(surname)
-msgid "Rieder"
-msgstr "Rieder"
-
-#: C/gtkmm-tutorial-in.xml:44(contrib)
-msgid "Chapter on \"Timeouts\"."
-msgstr "Capítulo acerca de «Tiempos de espera»."
-
-#: C/gtkmm-tutorial-in.xml:47(firstname)
-msgid "Jonathon"
-msgstr "Jonathon"
-
-#: C/gtkmm-tutorial-in.xml:48(surname)
-msgid "Jongsma"
-msgstr "Jongsma"
-
-#: C/gtkmm-tutorial-in.xml:49(contrib)
-msgid "Chapter on \"Drawing with Cairo\"."
-msgstr "Capítulo acerca de «Dibujar con Cairo»."
-
-#: C/gtkmm-tutorial-in.xml:50(contrib)
-msgid "Chapter on \"Working with gtkmm's Source Code\"."
-msgstr "Capítulo acerca de «Trabajar con el código fuente de gtkmm»."
-
-#: C/gtkmm-tutorial-in.xml:51(contrib)
-msgid "Chapter on \"Recent Files\"."
-msgstr "Capítulo acerca de «Archivos recientes»."
-
-#: C/gtkmm-tutorial-in.xml:54(firstname)
-msgid "Ole"
-msgstr "Ole"
-
-#: C/gtkmm-tutorial-in.xml:55(surname)
-msgid "Laursen"
-msgstr "Laursen"
+#. Put one translator per line, in the form NAME <EMAIL>, YEAR1, YEAR2
+#, fuzzy
+#| msgid "translator-credits"
+msgctxt "_"
+msgid "translator-credits"
+msgstr ""
+"Nicolás Satragno <nsatragno gmail com>, 2012\n"
+"José Zambrano <jozaol gmail com>, 2011\n"
+"Daniel Mustieles <daniel mustieles gmail com>, 2011\n"
+"Jorge González <jorgegonz svn gnome org>, 2010"
 
-#: C/gtkmm-tutorial-in.xml:56(contrib) C/gtkmm-tutorial-in.xml:62(contrib)
-msgid "Parts of chapter on \"Internationalization\"."
-msgstr "Partes del capítulo acerca de «Internacionalización»."
+#. (itstool) path: bookinfo/title
+#: C/index-in.docbook:45
+#, fuzzy
+#| msgid "Programming with <application>gtkmm</application> 3"
+msgid "Programming with <application>gtkmm</application> 4"
+msgstr "Programar con <application>gtkmm</application> 3"
 
-#: C/gtkmm-tutorial-in.xml:59(firstname)
-msgid "Marko"
-msgstr "Marko"
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:48
+msgid "<firstname>Murray</firstname> <surname>Cumming</surname>"
+msgstr "<firstname>Murray</firstname> <surname>Cumming</surname>"
 
-#: C/gtkmm-tutorial-in.xml:60(surname)
-msgid "Anastasov"
-msgstr "Anastasov"
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:52
+msgid ""
+"<firstname>Bernhard</firstname> <surname>Rieder</surname> <contrib>Chapter "
+"on \"Timeouts\".</contrib>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:61(contrib)
-msgid "Chapter on \"Printing\"."
-msgstr "Capítulo acerca de «Imprimir»."
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:57
+msgid ""
+"<firstname>Jonathon</firstname> <surname>Jongsma</surname> <contrib>Chapter "
+"on \"Drawing with Cairo\".</contrib> <contrib>Chapter on \"Working with "
+"gtkmm's Source Code\".</contrib> <contrib>Chapter on \"Recent Files\".</"
+"contrib>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:65(firstname)
-msgid "Daniel"
-msgstr "Daniel"
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:64
+msgid ""
+"<firstname>Ole</firstname> <surname>Laursen</surname> <contrib>Parts of "
+"chapter on \"Internationalization\".</contrib>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:66(surname)
-msgid "Elstner"
-msgstr "Elstner"
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:69
+msgid ""
+"<firstname>Marko</firstname> <surname>Anastasov</surname> <contrib>Chapter "
+"on \"Printing\".</contrib> <contrib>Parts of chapter on "
+"\"Internationalization\".</contrib>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:67(contrib)
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:75
+#, fuzzy
+#| msgid ""
+#| "Section \"Build Structure\" of chapter on \"Wrapping C Libraries with "
+#| "gmmproc\"."
 msgid ""
-"Section \"Build Structure\" of chapter on \"Wrapping C Libraries with gmmproc"
-"\"."
+"<firstname>Daniel</firstname> <surname>Elstner</surname> <contrib>Section "
+"\"Build Structure\" of chapter on \"Wrapping C Libraries with gmmproc\".</"
+"contrib>"
 msgstr ""
 "Sección «Construir la estructura» del capítulo acerca de «Envolver "
 "bibliotecas de C con gmmproc»."
 
-#: C/gtkmm-tutorial-in.xml:71(firstname)
-msgid "Chris"
-msgstr "Chris"
-
-#: C/gtkmm-tutorial-in.xml:72(surname)
-msgid "Vine"
-msgstr "Vine"
-
-#: C/gtkmm-tutorial-in.xml:73(contrib)
-msgid "Chapter on \"Multi-threaded programs\"."
-msgstr "Capítulo acerca de «Programas con múltiples hilos»."
-
-#: C/gtkmm-tutorial-in.xml:76(firstname)
-msgid "David"
-msgstr "David"
-
-#: C/gtkmm-tutorial-in.xml:77(surname)
-msgid "King"
-msgstr "King"
-
-#: C/gtkmm-tutorial-in.xml:78(contrib)
-msgid "Section on Gtk::Grid."
-msgstr "Sección acerca de Gtk::Grid."
-
-#: C/gtkmm-tutorial-in.xml:81(firstname)
-msgid "Pedro"
-msgstr "Pedro"
-
-#: C/gtkmm-tutorial-in.xml:82(surname)
-msgid "Ferreira"
-msgstr "Ferreira"
-
-#: C/gtkmm-tutorial-in.xml:83(contrib)
-msgid "Chapter on Keyboard Events."
-msgstr "Capítulo acerca de «Eventos del teclado»."
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:81
+msgid ""
+"<firstname>Chris</firstname> <surname>Vine</surname> <contrib>Chapter on "
+"\"Multi-threaded programs\".</contrib>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:86(firstname)
-msgid "Kjell"
-msgstr "Kjell"
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:86
+msgid ""
+"<firstname>David</firstname> <surname>King</surname> <contrib>Section on "
+"Gtk::Grid.</contrib>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:87(surname)
-msgid "Ahlstedt"
-msgstr "Ahlstedt"
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:91
+msgid ""
+"<firstname>Pedro</firstname> <surname>Ferreira</surname> <contrib>Chapter on "
+"Keyboard Events.</contrib>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:88(contrib)
-msgid "Parts of the update from gtkmm 2 to gtkmm 3."
-msgstr "Partes de la actualización de gtkmm 2 a gtkmm 3."
+#. (itstool) path: authorgroup/author
+#: C/index-in.docbook:96
+msgid ""
+"<firstname>Kjell</firstname> <surname>Ahlstedt</surname> <contrib>Update "
+"from gtkmm 3 to gtkmm 4.</contrib> <contrib>Chapter on \"Building "
+"applications\".</contrib>"
+msgstr ""
 
-#. This text is copied from the introduction.
-#: C/gtkmm-tutorial-in.xml:95(para)
+#. (itstool) path: abstract/para
+#: C/index-in.docbook:107
 msgid ""
 "This book explains key concepts of the <application>gtkmm</application> C++ "
 "API for creating user interfaces. It also introduces the main user interface "
@@ -173,15 +138,18 @@ msgstr ""
 "application> de C++ para la creación de interfaces de usuario. También "
 "introduce los elementos principales de la interfaz de usuario («widgets»)."
 
-#: C/gtkmm-tutorial-in.xml:101(year)
-msgid "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010"
-msgstr "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010"
-
-#: C/gtkmm-tutorial-in.xml:102(holder)
-msgid "Murray Cumming"
-msgstr "Murray Cumming"
+#. (itstool) path: bookinfo/copyright
+#: C/index-in.docbook:112
+#| msgid "2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010"
+msgid ""
+"<year>2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010</year> "
+"<holder>Murray Cumming</holder>"
+msgstr ""
+"<year>2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010</year> "
+"<holder>Murray Cumming</holder>"
 
-#: C/gtkmm-tutorial-in.xml:106(para)
+#. (itstool) path: legalnotice/para
+#: C/index-in.docbook:118
 msgid ""
 "Permission is granted to copy, distribute and/or modify this document under "
 "the terms of the GNU Free Documentation License, Version 1.2 or any later "
@@ -200,15 +168,18 @@ msgstr ""
 "Free Software Fundation, Inc., 59 Temple Place - Suite 330, Boston, MA "
 "02111-1307, EE. UU."
 
-#: C/gtkmm-tutorial-in.xml:118(title)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:130
 msgid "Introduction"
 msgstr "Introducción"
 
-#: C/gtkmm-tutorial-in.xml:121(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:133
 msgid "This book"
 msgstr "Este libro"
 
-#: C/gtkmm-tutorial-in.xml:123(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:135
 msgid ""
 "This book explains key concepts of the <application>gtkmm</application> C++ "
 "API for creating user interfaces. It also introduces the main user interface "
@@ -223,7 +194,8 @@ msgstr ""
 "se explican en gran detalle. Por lo tanto, para obtener información completa "
 "sobre la API, diríjase a los enlaces en la documentación de referencia."
 
-#: C/gtkmm-tutorial-in.xml:125(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:137
 msgid ""
 "This book assumes a good understanding of C++, and how to create C++ "
 "programs."
@@ -231,7 +203,8 @@ msgstr ""
 "Este libro asume un buen entendimiento sobre C++, y cómo crear programas en C"
 "++."
 
-#: C/gtkmm-tutorial-in.xml:127(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:139
 msgid ""
 "We would very much like to hear of any problems you have learning "
 "<application>gtkmm</application> with this document, and would appreciate "
@@ -244,14 +217,33 @@ msgstr ""
 "sección <link linkend=\"chapter-contributing\">contribuir</link> para "
 "obtener más información."
 
-#: C/gtkmm-tutorial-in.xml:134(title)
+#. (itstool) path: note/para
+#: C/index-in.docbook:145
+msgid ""
+"This book describes <application>gtkmm</application> 4, but some sections "
+"have not been fully updated. There are paragraphs that describe "
+"<application>gtkmm</application> 3 rather than <application>gtkmm</"
+"application> 4. All shown example programs are compatible with "
+"<application>gtkmm</application> 4, though."
+msgstr ""
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:154
 msgid "gtkmm"
 msgstr "gtkmm"
 
-#: C/gtkmm-tutorial-in.xml:135(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:155
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> is a C++ wrapper for <ulink url=\"http://";
+#| "www.gtk.org/\">GTK+</ulink>, a library used to create graphical user "
+#| "interfaces. It is licensed using the LGPL license, so you can develop "
+#| "open software, free software, or even commercial non-free software using "
+#| "<application>gtkmm</application> without purchasing licenses."
 msgid ""
 "<application>gtkmm</application> is a C++ wrapper for <ulink url=\"http://";
-"www.gtk.org/\">GTK+</ulink>, a library used to create graphical user "
+"www.gtk.org/\">GTK</ulink>, a library used to create graphical user "
 "interfaces. It is licensed using the LGPL license, so you can develop open "
 "software, free software, or even commercial non-free software using "
 "<application>gtkmm</application> without purchasing licenses."
@@ -263,12 +255,19 @@ msgstr ""
 "comercial usando <application>gtkmm</application> sin comprar ninguna "
 "licencia."
 
-#: C/gtkmm-tutorial-in.xml:143(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:163
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> was originally named gtk-- because GTK+ "
+#| "already has a + in the name. However, as -- is not easily indexed by "
+#| "search engines the package generally went by the name <application>gtkmm</"
+#| "application>, and that's what we stuck with."
 msgid ""
-"<application>gtkmm</application> was originally named gtk-- because GTK+ "
-"already has a + in the name. However, as -- is not easily indexed by search "
-"engines the package generally went by the name <application>gtkmm</"
-"application>, and that's what we stuck with."
+"<application>gtkmm</application> was originally named gtk-- because GTK was "
+"originally named GTK+ and had a + in the name. However, as -- is not easily "
+"indexed by search engines, the package generally went by the name "
+"<application>gtkmm</application>, and that's what we stuck with."
 msgstr ""
 "<application>gtkmm</application> fue originalmente llamado gtk-- debido a "
 "que GTK+ ya tenía el signo + en el nombre. Sin embargo, debido a que -- no "
@@ -276,11 +275,15 @@ msgstr ""
 "generalmente llamado <application>gtkmm</application>, y eso fue con lo que "
 "nos quedamos."
 
-#: C/gtkmm-tutorial-in.xml:146(title)
-msgid "Why use <application>gtkmm</application> instead of GTK+?"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:168
+#, fuzzy
+#| msgid "Why use <application>gtkmm</application> instead of GTK+?"
+msgid "Why use <application>gtkmm</application> instead of GTK?"
 msgstr "¿Por qué usar <application>gtkmm</application> en vez de GTK+?"
 
-#: C/gtkmm-tutorial-in.xml:147(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:169
 msgid ""
 "<application>gtkmm</application> allows you to write code using normal C++ "
 "techniques such as encapsulation, derivation, and polymorphism. As a C++ "
@@ -292,7 +295,8 @@ msgstr ""
 "programador de C++, probablemente ya se habrá dado cuenta de que esto "
 "conlleva a un código más limpio y mejor organizado."
 
-#: C/gtkmm-tutorial-in.xml:148(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:170
 msgid ""
 "<application>gtkmm</application> is more type-safe, so the compiler can "
 "detect errors that would only be detected at run time when using C. This use "
@@ -305,10 +309,17 @@ msgstr ""
 "a que puede ver qué tipos deberían usarse con sólo mirar la declaración de "
 "un método."
 
-#: C/gtkmm-tutorial-in.xml:149(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:171
+#, fuzzy
+#| msgid ""
+#| "Inheritance can be used to derive new widgets. The derivation of new "
+#| "widgets in GTK+ C code is so complicated and error prone that almost no C "
+#| "coders do it. As a C++ developer you know that derivation is an essential "
+#| "Object Orientated technique."
 msgid ""
 "Inheritance can be used to derive new widgets. The derivation of new widgets "
-"in GTK+ C code is so complicated and error prone that almost no C coders do "
+"in GTK C code is so complicated and error prone that almost no C coders do "
 "it. As a C++ developer you know that derivation is an essential Object "
 "Orientated technique."
 msgstr ""
@@ -317,9 +328,15 @@ msgstr ""
 "ningún codificador de C lo hace. Como programador en C++ usted sabe que la "
 "derivación es una técnica orientada a objetos esencial."
 
-#: C/gtkmm-tutorial-in.xml:150(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:172
+#, fuzzy
+#| msgid ""
+#| "Member instances can be used, simplifying memory management. All GTK+ C "
+#| "widgets are dealt with by use of pointers. As a C++ coder you know that "
+#| "pointers should be avoided where possible."
 msgid ""
-"Member instances can be used, simplifying memory management. All GTK+ C "
+"Member instances can be used, simplifying memory management. All GTK C "
 "widgets are dealt with by use of pointers. As a C++ coder you know that "
 "pointers should be avoided where possible."
 msgstr ""
@@ -327,19 +344,26 @@ msgstr ""
 "Todos los widgets C GTK+ son tratados usando punteros. Como programador en C+"
 "+ usted sabe que los punteros deben evitarse siempre que sea posible."
 
-#: C/gtkmm-tutorial-in.xml:151(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:173
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> involves less code compared to GTK+, "
+#| "which uses prefixed function names and lots of cast macros."
 msgid ""
-"<application>gtkmm</application> involves less code compared to GTK+, which "
+"<application>gtkmm</application> involves less code compared to GTK, which "
 "uses prefixed function names and lots of cast macros."
 msgstr ""
 "<application>gtkmm</application> implica menos código en comparación con GTK"
 "+, el cual usa nombres de funciones prefijadas y muchos macros."
 
-#: C/gtkmm-tutorial-in.xml:155(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:177
 msgid "<application>gtkmm</application> compared to Qt"
 msgstr "<application>gtkmm</application> comparado con Qt"
 
-#: C/gtkmm-tutorial-in.xml:156(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:178
 msgid ""
 "Trolltech's Qt is the closest competition to <application>gtkmm</"
 "application>, so it deserves discussion."
@@ -347,7 +371,8 @@ msgstr ""
 "Qt de Trolltech es el competidor más cercano de <application>gtkmm</"
 "application>, por lo que merece discusión."
 
-#: C/gtkmm-tutorial-in.xml:158(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:180
 #, fuzzy
 #| msgid ""
 #| "<application>gtkmm</application> developers tend to prefer "
@@ -388,19 +413,33 @@ msgstr ""
 "Consulte las preguntas frecuentes para conocer las diferencias de manera "
 "detallada."
 
-#: C/gtkmm-tutorial-in.xml:163(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:185
 msgid "<application>gtkmm</application> is a wrapper"
 msgstr "<application>gtkmm</application> es un envoltorio"
 
-#: C/gtkmm-tutorial-in.xml:164(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:186
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> is not a native C++ toolkit, but a C++ "
+#| "wrapper of a C toolkit. This separation of interface and implementation "
+#| "has advantages. The <application>gtkmm</application> developers spend "
+#| "most of their time talking about how <application>gtkmm</application> can "
+#| "present the clearest API, without awkward compromises due to obscure "
+#| "technical details. We contribute a little to the underlying GTK+ code "
+#| "base, but so do the C coders, and the Perl coders and the Python coders, "
+#| "etc. Therefore GTK+ benefits from a broader user base than language-"
+#| "specific toolkits - there are more implementers, more developers, more "
+#| "testers, and more users."
 msgid ""
 "<application>gtkmm</application> is not a native C++ toolkit, but a C++ "
 "wrapper of a C toolkit. This separation of interface and implementation has "
 "advantages. The <application>gtkmm</application> developers spend most of "
 "their time talking about how <application>gtkmm</application> can present "
 "the clearest API, without awkward compromises due to obscure technical "
-"details. We contribute a little to the underlying GTK+ code base, but so do "
-"the C coders, and the Perl coders and the Python coders, etc. Therefore GTK+ "
+"details. We contribute a little to the underlying GTK code base, but so do "
+"the C coders, and the Perl coders and the Python coders, etc. Therefore GTK "
 "benefits from a broader user base than language-specific toolkits - there "
 "are more implementers, more developers, more testers, and more users."
 msgstr ""
@@ -417,47 +456,62 @@ msgstr ""
 "herramientas específicas; hay más desarrolladores, más personas que prueban "
 "software en desarrollo, y más usuarios."
 
-#: C/gtkmm-tutorial-in.xml:172(title)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:194
 msgid "Installation"
 msgstr "Instalación"
 
-#: C/gtkmm-tutorial-in.xml:174(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:196
 msgid "Dependencies"
 msgstr "Dependecias"
 
-#: C/gtkmm-tutorial-in.xml:175(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:197
+#, fuzzy
+#| msgid ""
+#| "Before attempting to install <application>gtkmm</application> 3.0, you "
+#| "might first need to install these other packages."
 msgid ""
-"Before attempting to install <application>gtkmm</application> 3.0, you might "
-"first need to install these other packages."
+"Before attempting to install <application>gtkmm</"
+"application><application>-4.0</application>, you might first need to install "
+"these other packages."
 msgstr ""
 "Antes de intentar instalar <application>gtkmm</application> 3.0, "
 "probablemente deba instalar primero estos otros paquetes."
 
-#: C/gtkmm-tutorial-in.xml:180(application)
-msgid "libsigc++ 2.0"
-msgstr "libsigc++ 2.0"
-
-#: C/gtkmm-tutorial-in.xml:181(application)
-msgid "GTK+ 3.0"
-msgstr "GTK+ 3.0"
-
-#: C/gtkmm-tutorial-in.xml:182(application)
-msgid "glibmm"
-msgstr "glibmm"
-
-#: C/gtkmm-tutorial-in.xml:183(application)
-msgid "cairomm"
-msgstr "cairomm"
-
-#: C/gtkmm-tutorial-in.xml:184(application)
-msgid "pangomm"
-msgstr "pangomm"
-
-#: C/gtkmm-tutorial-in.xml:185(application)
-msgid "atkmm"
-msgstr "atkmm"
-
-#: C/gtkmm-tutorial-in.xml:187(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:202
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>sigc++-3.0</application>"
+msgstr "<application>sigc++-3.0</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:203
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>gtk4</application>"
+msgstr "<application>gtk4</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:204
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>glibmm-2.68</application>"
+msgstr "<application>glibmm-2.68</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:205
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>cairomm-1.16</application>"
+msgstr "<application>cairomm-1.16</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:206
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>pangomm-2.48</application>"
+msgstr "<application>pangomm-2.48</application>"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:208
 msgid ""
 "These dependencies have their own dependencies, including the following "
 "applications and libraries:"
@@ -465,39 +519,54 @@ msgstr ""
 "Estas dependencias tienen sus propias dependencias, incluyendo las "
 "siguientes aplicaciones y bibliotecas:"
 
-#: C/gtkmm-tutorial-in.xml:192(application)
-msgid "pkg-config"
-msgstr "pkg-config"
-
-#: C/gtkmm-tutorial-in.xml:193(application)
-msgid "glib"
-msgstr "glib"
-
-#: C/gtkmm-tutorial-in.xml:194(application)
-msgid "ATK"
-msgstr "ATK"
-
-#: C/gtkmm-tutorial-in.xml:195(application)
-msgid "Pango"
-msgstr "Pango"
-
-#: C/gtkmm-tutorial-in.xml:196(application)
-msgid "cairo"
-msgstr "cairo"
-
-#: C/gtkmm-tutorial-in.xml:197(application)
-msgid "gdk-pixbuf"
-msgstr "gdk-pixbuf"
-
-#: C/gtkmm-tutorial-in.xml:202(title)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:213
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>pkg-config</application>"
+msgstr "<application>pkg-config</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:214
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>glib-2.0</application>"
+msgstr "<application>glib-2.0</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:215
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>pango</application>"
+msgstr "<application>pango</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:216
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>cairo</application>"
+msgstr "<application>cairo</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:217
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>gdk-pixbuf-2.0</application>"
+msgstr "<application>gdk-pixbuf-2.0</application>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:218
+#| msgid "<application>gtkmm</application> and Win32"
+msgid "<application>graphene-1.0</application>"
+msgstr "<application>graphene-1.0</application>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:223
 msgid "Unix and Linux"
 msgstr "Unix y Linux"
 
-#: C/gtkmm-tutorial-in.xml:205(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:226
 msgid "Prebuilt Packages"
 msgstr "Paquetes preconstruidos"
 
-#: C/gtkmm-tutorial-in.xml:207(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:228
 msgid ""
 "Recent versions of <application>gtkmm</application> are packaged by nearly "
 "every major Linux distribution these days. So, if you use Linux, you can "
@@ -514,11 +583,20 @@ msgstr ""
 "<application>gtkmm</application> en sus repositorios son Debian, Ubuntu, Red "
 "Hat, Fedora, Mandriva, Suse, y muchas otras."
 
-#: C/gtkmm-tutorial-in.xml:215(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:236
+#, fuzzy
+#| msgid ""
+#| "The names of the <application>gtkmm</application> packages vary from "
+#| "distribution to distribution (e.g. <application>libgtkmm-3.0-dev</"
+#| "application> on Debian and Ubuntu or <application>gtkmm30-devel</"
+#| "application> on Red Hat Fedora), so check with your distribution's "
+#| "package management program for the correct package name and install it "
+#| "like you would any other package."
 msgid ""
 "The names of the <application>gtkmm</application> packages vary from "
-"distribution to distribution (e.g. <application>libgtkmm-3.0-dev</"
-"application> on Debian and Ubuntu or <application>gtkmm30-devel</"
+"distribution to distribution (e.g. <application>libgtkmm-4.0-dev</"
+"application> on Debian and Ubuntu or <application>gtkmm40-devel</"
 "application> on Red Hat Fedora), so check with your distribution's package "
 "management program for the correct package name and install it like you "
 "would any other package."
@@ -530,13 +608,21 @@ msgstr ""
 "nombre del paquete correcto en el gestor de paquetes de su distribución para "
 "instalarlo como lo haría con cualquier otro paquete."
 
-#: C/gtkmm-tutorial-in.xml:223(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:244
+#, fuzzy
+#| msgid ""
+#| "The package names will not change when new API/ABI-compatible versions of "
+#| "<application>gtkmm</application> are released. Otherwise they would not "
+#| "be API/ABI-compatible. So don't be surprised, for instance, to find "
+#| "<application>gtkmm</application> 3.8 supplied by Debian's "
+#| "<application>libgtkmm-3.0-dev</application> package."
 msgid ""
 "The package names will not change when new API/ABI-compatible versions of "
 "<application>gtkmm</application> are released. Otherwise they would not be "
 "API/ABI-compatible. So don't be surprised, for instance, to find "
-"<application>gtkmm</application> 3.8 supplied by Debian's "
-"<application>libgtkmm-3.0-dev</application> package."
+"<application>gtkmm</application> 4.8 supplied by Debian's "
+"<application>libgtkmm-4.0-dev</application> package."
 msgstr ""
 "Los nombres de los paquetes no cambiarán cuando se libere la nueva API/ABI "
 "compatible con versiones de <application>gtkmm</application>. De lo "
@@ -544,17 +630,28 @@ msgstr ""
 "ejemplo, de encontrar <application>gtkmm</application> 3.8 suministrado por "
 "el paquete <application>libgtkmm-3.0-dev</application> de Debian."
 
-#: C/gtkmm-tutorial-in.xml:233(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:254
 msgid "Installing From Source"
 msgstr "Instalar desde las fuentes"
 
-#: C/gtkmm-tutorial-in.xml:235(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:256
+#, fuzzy
+#| msgid ""
+#| "If your distribution does not provide a pre-built <application>gtkmm</"
+#| "application> package, or if you want to install a different version than "
+#| "the one provided by your distribution, you can also install "
+#| "<application>gtkmm</application> from source. The source code for "
+#| "<application>gtkmm</application> can be downloaded from <ulink url="
+#| "\"http://www.gtkmm.org/\"/>."
 msgid ""
 "If your distribution does not provide a pre-built <application>gtkmm</"
 "application> package, or if you want to install a different version than the "
 "one provided by your distribution, you can also install <application>gtkmm</"
 "application> from source. The source code for <application>gtkmm</"
-"application> can be downloaded from <ulink url=\"http://www.gtkmm.org/\"/>."
+"application> can be downloaded from <ulink url=\"https://download.gnome.org/";
+"sources/gtkmm/\"/>."
 msgstr ""
 "Si su distribución no proporciona un paquete <application>gtkmm</"
 "application> pre-construido, o si desea instalar una versión diferente a la "
@@ -563,32 +660,28 @@ msgstr ""
 "<application>gtkmm</application> se puede descargar desde <ulink url="
 "\"http://www.gtkmm.org/\"/>."
 
-#: C/gtkmm-tutorial-in.xml:241(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:262
+#, fuzzy
+#| msgid ""
+#| "After you've installed all of the dependencies, download the "
+#| "<application>gtkmm</application> source code, unpack it, and change to "
+#| "the newly created directory. <application>gtkmm</application> can be "
+#| "built and installed with the following sequence of commands:"
 msgid ""
 "After you've installed all of the dependencies, download the "
 "<application>gtkmm</application> source code, unpack it, and change to the "
-"newly created directory. <application>gtkmm</application> can be built and "
-"installed with the following sequence of commands:"
+"newly created directory. <application>gtkmm</application> can be built with "
+"Meson. See the <filename>README</filename> file in the <application>gtkmm</"
+"application> version you've downloaded."
 msgstr ""
 "Después de haber instalado todas las dependencias, descargue el código "
 "fuente de <application>gtkmm</application>, descomprímalo y cámbiese a la "
 "carpeta creada. <application>gtkmm</application> se puede construir e "
 "instalar con la siguiente secuencia de comandos:"
 
-#: C/gtkmm-tutorial-in.xml:246(screen)
-#, no-wrap
-msgid ""
-"\n"
-"# ./configure\n"
-"# make\n"
-"# make install\n"
-msgstr ""
-"\n"
-"# ./configure\n"
-"# make\n"
-"# make install\n"
-
-#: C/gtkmm-tutorial-in.xml:252(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:269
 msgid ""
 "Remember that on a Unix or Linux operating system, you will probably need to "
 "be <literal>root</literal> to install software. The <command>su</command> or "
@@ -601,25 +694,49 @@ msgstr ""
 "<literal>root</literal>para tener el acceso de <literal>root</literal> "
 "temporalmente."
 
-#: C/gtkmm-tutorial-in.xml:259(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:276
+#, fuzzy
+#| msgid ""
+#| "The <filename>configure</filename> script will check to make sure all of "
+#| "the required dependencies are already installed. If you are missing any "
+#| "dependencies, it will exit and display an error."
 msgid ""
-"The <filename>configure</filename> script will check to make sure all of the "
-"required dependencies are already installed. If you are missing any "
-"dependencies, it will exit and display an error."
+"The <filename>configure</filename> script or <command>meson</command> will "
+"check to make sure all of the required dependencies are already installed. "
+"If you are missing any dependencies, it will exit and display an error."
 msgstr ""
 "El script <filename>configure</filename> hará comprobaciones para asegurarse "
 "de que todas las dependencias necesarias ya están instaladas. Si le falta "
 "alguna dependencia, terminará y mostrará un error."
 
-#: C/gtkmm-tutorial-in.xml:264(para)
+#. (itstool) path: para/screen
+#: C/index-in.docbook:287
+#, no-wrap
 msgid ""
-"By default, <application>gtkmm</application> will be installed under the "
-"<filename>/usr/local</filename> directory. On some systems you may need to "
-"install to a different location. For instance, on Red Hat Linux systems you "
-"might use the <literal>--prefix</literal> option with configure, like so: "
-"<screen>\n"
+"\n"
+"# ./configure --prefix=/usr\n"
+msgstr ""
+"\n"
 "# ./configure --prefix=/usr\n"
-"</screen>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:281
+#, fuzzy
+#| msgid ""
+#| "By default, <application>gtkmm</application> will be installed under the "
+#| "<filename>/usr/local</filename> directory. On some systems you may need "
+#| "to install to a different location. For instance, on Red Hat Linux "
+#| "systems you might use the <literal>--prefix</literal> option with "
+#| "configure, like so: <screen>\n"
+#| "# ./configure --prefix=/usr\n"
+#| "</screen>"
+msgid ""
+"By default, <application>gtkmm</application> if built with Autotools, will "
+"be installed under the <filename>/usr/local</filename> directory. On some "
+"systems you may need to install to a different location. For instance, on "
+"Red Hat Linux systems you might use the <literal>--prefix</literal> option "
+"with configure, like so: <_:screen-1/>"
 msgstr ""
 "De manera predeterminada, <application>gtkmm</application> se instalará en "
 "la carpeta <filename>/usr/local</filename>, En algunos sistemas es posible "
@@ -627,7 +744,8 @@ msgstr ""
 "Red Hat Linux puede utilizar la opción <literal>--prefix </literal>, de este "
 "modo: <screen># ./configure --prefix=/usr</screen>"
 
-#: C/gtkmm-tutorial-in.xml:275(para)
+#. (itstool) path: warning/para
+#: C/index-in.docbook:292
 msgid ""
 "You should be very careful when installing to standard system prefixes such "
 "as <filename>/usr</filename>. Linux distributions install software packages "
@@ -644,7 +762,8 @@ msgstr ""
 "manera ideal, debería usar un prefijo separado para todo el software que "
 "instale desde las fuentes."
 
-#: C/gtkmm-tutorial-in.xml:284(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:301
 msgid ""
 "If you want to help develop <application>gtkmm</application> or experiment "
 "with new features, you can also install <application>gtkmm</application> "
@@ -661,11 +780,13 @@ msgstr ""
 "\"chapter-working-with-source\">Trabajando con el código fuente de gtkmm</"
 "link>."
 
-#: C/gtkmm-tutorial-in.xml:295(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:312
 msgid "Microsoft Windows"
 msgstr "Microsoft Windows"
 
-#: C/gtkmm-tutorial-in.xml:296(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:313
 #, fuzzy
 #| msgid ""
 #| "GTK+ and <application>gtkmm</application> were designed to work well with "
@@ -675,12 +796,14 @@ msgstr "Microsoft Windows"
 #| "gtkmm/MSWindows\">Windows Installation</ulink> page for Windows-specific "
 #| "installation instructions and notes."
 msgid ""
-"GTK+ and <application>gtkmm</application> were designed to work well with "
+"GTK and <application>gtkmm</application> were designed to work well with "
 "Microsoft Windows, and the developers encourage its use on the win32 "
 "platform. However, Windows has no standard installation system for "
 "development libraries. Please see the <ulink url=\"https://wiki.gnome.org/";
-"Projects/gtkmm/MSWindows\">Windows Installation</ulink> page for Windows-"
-"specific installation instructions and notes."
+"Projects/gtkmm/MSWindows\">Windows Installation</ulink> page or the <link "
+"linkend=\"sec-windows-installation\"><application>gtkmm</application> and "
+"Win32</link> appendix for Windows-specific installation instructions and "
+"notes."
 msgstr ""
 "GTK+ y <application>gtkmm</application> están diseñados para funcionar "
 "correctamente con Microsoft Windows, y los desarrolladores fomentan su uso "
@@ -690,11 +813,13 @@ msgstr ""
 "página <ulink url=\"http://live.gnome.org/gtkmm/MSWindows\";>Instalación en "
 "Windows</ulink>."
 
-#: C/gtkmm-tutorial-in.xml:303(title)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:324
 msgid "Basics"
 msgstr "Conceptos básicos"
 
-#: C/gtkmm-tutorial-in.xml:305(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:326
 msgid ""
 "This chapter will introduce some of the most important aspects of "
 "<application>gtkmm</application> coding. These will be demonstrated with "
@@ -707,7 +832,8 @@ msgstr ""
 "por lo que es necesario leer otros capítulos para obtener más información "
 "importante."
 
-#: C/gtkmm-tutorial-in.xml:308(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:329
 msgid ""
 "Your existing knowledge of C++ will help you with <application>gtkmm</"
 "application> as it would with any library. Unless we state otherwise, you "
@@ -721,11 +847,14 @@ msgstr ""
 "el de cualquier otra clase C++, de manera que podrá utilizar sus actuales "
 "técnicas de C++ con las clases de <application>gtkmm</application>."
 
-#: C/gtkmm-tutorial-in.xml:313(title) C/gtkmm-tutorial-in.xml:3341(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:334 C/index-in.docbook:3324
 msgid "Simple Example"
 msgstr "Ejemplo simple"
 
-#: C/gtkmm-tutorial-in.xml:315(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:336
 msgid ""
 "To begin our introduction to <application>gtkmm</application>, we'll start "
 "with the simplest program possible. This program will create an empty 200 x "
@@ -735,54 +864,28 @@ msgstr ""
 "a empezar con el programa más simple posible. Este programa va a crear una "
 "ventana vacía de 200 x 200 píxeles."
 
-#: C/gtkmm-tutorial-in.xml:320(ulink) C/gtkmm-tutorial-in.xml:502(ulink)
-#: C/gtkmm-tutorial-in.xml:769(ulink) C/gtkmm-tutorial-in.xml:877(ulink)
-#: C/gtkmm-tutorial-in.xml:986(ulink) C/gtkmm-tutorial-in.xml:1108(ulink)
-#: C/gtkmm-tutorial-in.xml:1164(ulink) C/gtkmm-tutorial-in.xml:1234(ulink)
-#: C/gtkmm-tutorial-in.xml:1281(ulink) C/gtkmm-tutorial-in.xml:1308(ulink)
-#: C/gtkmm-tutorial-in.xml:1333(ulink) C/gtkmm-tutorial-in.xml:1469(ulink)
-#: C/gtkmm-tutorial-in.xml:1530(ulink) C/gtkmm-tutorial-in.xml:1554(ulink)
-#: C/gtkmm-tutorial-in.xml:1585(ulink) C/gtkmm-tutorial-in.xml:1642(ulink)
-#: C/gtkmm-tutorial-in.xml:1682(ulink) C/gtkmm-tutorial-in.xml:1727(ulink)
-#: C/gtkmm-tutorial-in.xml:1762(ulink) C/gtkmm-tutorial-in.xml:1801(ulink)
-#: C/gtkmm-tutorial-in.xml:1930(ulink) C/gtkmm-tutorial-in.xml:2091(ulink)
-#: C/gtkmm-tutorial-in.xml:2132(ulink) C/gtkmm-tutorial-in.xml:2174(ulink)
-#: C/gtkmm-tutorial-in.xml:2235(ulink) C/gtkmm-tutorial-in.xml:2275(ulink)
-#: C/gtkmm-tutorial-in.xml:2867(ulink) C/gtkmm-tutorial-in.xml:2886(ulink)
-#: C/gtkmm-tutorial-in.xml:2905(ulink) C/gtkmm-tutorial-in.xml:2927(ulink)
-#: C/gtkmm-tutorial-in.xml:2949(ulink) C/gtkmm-tutorial-in.xml:3022(ulink)
-#: C/gtkmm-tutorial-in.xml:3035(ulink) C/gtkmm-tutorial-in.xml:3106(ulink)
-#: C/gtkmm-tutorial-in.xml:3119(ulink) C/gtkmm-tutorial-in.xml:3350(ulink)
-#: C/gtkmm-tutorial-in.xml:3523(ulink) C/gtkmm-tutorial-in.xml:3536(ulink)
-#: C/gtkmm-tutorial-in.xml:3592(ulink) C/gtkmm-tutorial-in.xml:3847(ulink)
-#: C/gtkmm-tutorial-in.xml:3909(ulink) C/gtkmm-tutorial-in.xml:3936(ulink)
-#: C/gtkmm-tutorial-in.xml:3959(ulink) C/gtkmm-tutorial-in.xml:3983(ulink)
-#: C/gtkmm-tutorial-in.xml:4015(ulink) C/gtkmm-tutorial-in.xml:4216(ulink)
-#: C/gtkmm-tutorial-in.xml:4306(ulink) C/gtkmm-tutorial-in.xml:4334(ulink)
-#: C/gtkmm-tutorial-in.xml:4410(ulink) C/gtkmm-tutorial-in.xml:4482(ulink)
-#: C/gtkmm-tutorial-in.xml:4545(ulink) C/gtkmm-tutorial-in.xml:4571(ulink)
-#: C/gtkmm-tutorial-in.xml:4786(ulink) C/gtkmm-tutorial-in.xml:4952(ulink)
-#: C/gtkmm-tutorial-in.xml:4972(ulink) C/gtkmm-tutorial-in.xml:5346(ulink)
-#: C/gtkmm-tutorial-in.xml:5567(ulink) C/gtkmm-tutorial-in.xml:5701(ulink)
-#: C/gtkmm-tutorial-in.xml:5825(ulink) C/gtkmm-tutorial-in.xml:5893(ulink)
-#: C/gtkmm-tutorial-in.xml:5955(ulink) C/gtkmm-tutorial-in.xml:6052(ulink)
-#: C/gtkmm-tutorial-in.xml:6090(ulink) C/gtkmm-tutorial-in.xml:6417(ulink)
-#: C/gtkmm-tutorial-in.xml:6485(ulink) C/gtkmm-tutorial-in.xml:7129(ulink)
-#: C/gtkmm-tutorial-in.xml:7186(ulink) C/gtkmm-tutorial-in.xml:7442(ulink)
-#: C/gtkmm-tutorial-in.xml:8327(ulink)
-msgid "Source Code"
-msgstr "Código fuente"
-
-#: C/gtkmm-tutorial-in.xml:322(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:341
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/base\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/base\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:343
 msgid "We will now explain each line of the example"
 msgstr "Ahora se explicará cada línea del ejemplo"
 
-#: C/gtkmm-tutorial-in.xml:323(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:344
 #, no-wrap
 msgid "#include &lt;gtkmm.h&gt;"
 msgstr "#include &lt;gtkmm.h&gt;"
 
-#: C/gtkmm-tutorial-in.xml:324(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:345
 msgid ""
 "All <application>gtkmm</application> programs must include certain "
 "<application>gtkmm</application> headers; <literal>gtkmm.h</literal> "
@@ -796,23 +899,33 @@ msgstr ""
 "ser una buena idea, ya que incluye casi un megabyte de cabeceras, pero para "
 "programas sencillos, basta."
 
-#: C/gtkmm-tutorial-in.xml:334(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:355
 #, no-wrap
-msgid "Glib::RefPtr&lt;Gtk::Application&gt; app = Gtk::Application::create(argc, argv, 
\"org.gtkmm.examples.base\");"
-msgstr "Glib::RefPtr&lt;Gtk::Application&gt; app = Gtk::Application::create(argc, argv, 
\"org.gtkmm.examples.base\");"
-
-#: C/gtkmm-tutorial-in.xml:331(para)
-msgid ""
-"The next statement: <placeholder-1/> creates a <classname>Gtk::Application</"
-"classname> object, stored in a <classname>RefPtr</classname> smartpointer. "
-"This is needed in all <application>gtkmm</application> applications. The "
-"<methodname>create()</methodname> method for this object initializes "
-"<application>gtkmm</application>, and checks the arguments passed to your "
-"application on the command line, looking for standard options such as "
-"<literal>--display</literal>. It takes these from the argument list, leaving "
-"anything it does not recognize for your application to parse or ignore. This "
-"ensures that all <application>gtkmm</application> applications accept the "
-"same set of standard arguments."
+#| msgid "Glib::RefPtr&lt;Gtk::Application&gt; app = Gtk::Application::create(argc, argv, 
\"org.gtkmm.examples.base\");"
+msgid "auto app = Gtk::Application::create(\"org.gtkmm.examples.base\");"
+msgstr "auto app = Gtk::Application::create(\"org.gtkmm.examples.base\");"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:352
+#, fuzzy
+#| msgid ""
+#| "The next statement: <placeholder-1/> creates a <classname>Gtk::"
+#| "Application</classname> object, stored in a <classname>RefPtr</classname> "
+#| "smartpointer. This is needed in all <application>gtkmm</application> "
+#| "applications. The <methodname>create()</methodname> method for this "
+#| "object initializes <application>gtkmm</application>, and checks the "
+#| "arguments passed to your application on the command line, looking for "
+#| "standard options such as <literal>--display</literal>. It takes these "
+#| "from the argument list, leaving anything it does not recognize for your "
+#| "application to parse or ignore. This ensures that all <application>gtkmm</"
+#| "application> applications accept the same set of standard arguments."
+msgid ""
+"The next statement: <_:programlisting-1/> creates a <classname>Gtk::"
+"Application</classname> object, stored in a <classname>Glib::RefPtr</"
+"classname> smartpointer. This is needed in all <application>gtkmm</"
+"application> applications. The <methodname>create()</methodname> method for "
+"this object initializes <application>gtkmm</application>."
 msgstr ""
 "La siguiente línea: <placeholder-1/> crea un objeto <classname>Gtk::"
 "Application</classname>, almacenado en un puntero inteligente "
@@ -825,7 +938,8 @@ msgstr ""
 "o la ignore. Esto asegura que todas las aplicaciones <application>gtkmm</"
 "application> acepten el mismo conjunto de argumentos estándar."
 
-#: C/gtkmm-tutorial-in.xml:344(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:361
 msgid ""
 "The next two lines of code create a window and set its default (initial) "
 "size:"
@@ -833,7 +947,8 @@ msgstr ""
 "Las dos siguientes líneas de código crean una ventana y establecen su tamaño "
 "(inicial) predeterminado:"
 
-#: C/gtkmm-tutorial-in.xml:347(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:364
 #, no-wrap
 msgid ""
 "Gtk::Window window;\n"
@@ -842,33 +957,58 @@ msgstr ""
 "Gtk::Window window;\n"
 "window.set_default_size(200, 200);"
 
-#: C/gtkmm-tutorial-in.xml:349(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:366
+#, fuzzy
+#| msgid ""
+#| "The last line shows the window and enters the <application>gtkmm</"
+#| "application> main processing loop, which will finish when the window is "
+#| "closed. Your <function>main()</function> function will then return with "
+#| "an appropriate success or error code."
 msgid ""
 "The last line shows the window and enters the <application>gtkmm</"
 "application> main processing loop, which will finish when the window is "
 "closed. Your <function>main()</function> function will then return with an "
-"appropriate success or error code."
+"appropriate success or error code. The <parameter>argc</parameter> and "
+"<parameter>argv</parameter> arguments, passed to your application on the "
+"command line, can be checked when <methodname>run()</methodname> is called, "
+"but this simple application does not use those arguments."
 msgstr ""
 "La última línea muestra la ventana y entra al bucle principal de "
 "<application>gtkmm</application>, que terminará cuando la ventana se cierre. "
 "Su función <function>main()</function> entonces retornará con un éxito "
 "apropiado o un código de error."
 
-#: C/gtkmm-tutorial-in.xml:354(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:373
 #, no-wrap
-msgid "return app-&gt;run(window);"
-msgstr "return app-&gt;run(window);"
+#| msgid "return app-&gt;run(window);"
+msgid "return app-&gt;run(window, argc, argv);"
+msgstr "return app-&gt;run(window, argc, argv);"
 
-#: C/gtkmm-tutorial-in.xml:359(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:378
 #, no-wrap
-msgid "g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`"
-msgstr "g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`"
+#| msgid "g++ simple.cc -o simple `pkg-config gtkmm-3.0 --cflags --libs`"
+msgid "g++ simple.cc -o simple `pkg-config gtkmm-4.0 --cflags --libs`"
+msgstr "g++ simple.cc -o simple `pkg-config gtkmm-4.0 --cflags --libs`"
 
-#: C/gtkmm-tutorial-in.xml:356(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:375
+#, fuzzy
+#| msgid ""
+#| "After putting the source code in <literal>simple.cc</literal> you can "
+#| "compile the above program with <application>gcc</application> using: "
+#| "<placeholder-1/> Note that you must surround the <literal>pkg-config</"
+#| "literal> invocation with backquotes. Backquotes cause the shell to "
+#| "execute the command inside them, and to use the command's output as part "
+#| "of the command line. Note also that <literal>simple.cc</literal> must "
+#| "come before the <literal>pkg-config</literal> invocation on the command "
+#| "line."
 msgid ""
 "After putting the source code in <literal>simple.cc</literal> you can "
-"compile the above program with <application>gcc</application> using: "
-"<placeholder-1/> Note that you must surround the <literal>pkg-config</"
+"compile the above program with <application>gcc</application> using: <_:"
+"programlisting-1/> Note that you must surround the <literal>pkg-config</"
 "literal> invocation with backquotes. Backquotes cause the shell to execute "
 "the command inside them, and to use the command's output as part of the "
 "command line. Note also that <literal>simple.cc</literal> must come before "
@@ -882,11 +1022,13 @@ msgstr ""
 "También tenga en cuenta que <literal>simple.cc</literal> debe venir antes de "
 "la invocación de <literal>pkg-config</literal> en la línea de comandos."
 
-#: C/gtkmm-tutorial-in.xml:369(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:388
 msgid "Headers and Linking"
 msgstr "Cabeceras y enlazado"
 
-#: C/gtkmm-tutorial-in.xml:370(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:389
 #, fuzzy
 #| msgid ""
 #| "Although we have shown the compilation command for the simple example, "
@@ -914,7 +1056,8 @@ msgstr ""
 "tendrá que encontrar la carpeta adecuada e introducir <literal>make</"
 "literal>."
 
-#: C/gtkmm-tutorial-in.xml:373(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:392
 msgid ""
 "To simplify compilation, we use <literal>pkg-config</literal>, which is "
 "present in all (properly installed) <application>gtkmm</application> "
@@ -937,17 +1080,27 @@ msgstr ""
 "carpetas en las que encontrarlas. Intente ejecutarlo desde su intérprete de "
 "comandos para ver los resultados en su sistema."
 
-#: C/gtkmm-tutorial-in.xml:386(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:405
 #, no-wrap
-msgid "PKG_CHECK_MODULES([MYAPP], [gtkmm-3.0 &gt;= 3.8.0])"
-msgstr "PKG_CHECK_MODULES([MYAPP], [gtkmm-3.0 &gt;= 3.8.0])"
+#| msgid "PKG_CHECK_MODULES([MYAPP], [gtkmm-3.0 &gt;= 3.8.0])"
+msgid "PKG_CHECK_MODULES([MYAPP], [gtkmm-4.0 &gt;= 4.8.0])"
+msgstr "PKG_CHECK_MODULES([MYAPP], [gtkmm-4.0 &gt;= 4.8.0])"
 
-#: C/gtkmm-tutorial-in.xml:383(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:402
+#, fuzzy
+#| msgid ""
+#| "However, this is even simpler when using the "
+#| "<function>PKG_CHECK_MODULES()</function> macro in a standard configure.ac "
+#| "file with autoconf and automake. For instance: <placeholder-1/> This "
+#| "checks for the presence of gtkmm and defines MYAPP_LIBS and MYAPP_CFLAGS "
+#| "for use in your Makefile.am files."
 msgid ""
 "However, this is even simpler when using the <function>PKG_CHECK_MODULES()</"
 "function> macro in a standard configure.ac file with autoconf and automake. "
-"For instance: <placeholder-1/> This checks for the presence of gtkmm and "
-"defines MYAPP_LIBS and MYAPP_CFLAGS for use in your Makefile.am files."
+"For instance: <_:programlisting-1/> This checks for the presence of gtkmm "
+"and defines MYAPP_LIBS and MYAPP_CFLAGS for use in your Makefile.am files."
 msgstr ""
 "Sin embargo, es aún más simple cuando se utiliza la macro "
 "<function>PKG_CHECK_MODULES()</function> en un archivo estándar configure.ac "
@@ -955,7 +1108,8 @@ msgstr ""
 "presencia de gtkmm y define MYAPP_LIBS y MYAPP_CFLAGS para su uso en los "
 "archivos Makefile.am."
 
-#: C/gtkmm-tutorial-in.xml:389(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:408
 #, fuzzy
 #| msgid ""
 #| "gtkmm-3.0 is the name of the current stable API. There was an older API "
@@ -967,13 +1121,13 @@ msgstr ""
 #| "would install in parallel with gtkmm-3.0 without affecting existing "
 #| "applications."
 msgid ""
-"gtkmm-3.0 is the name of the current stable API. There was an older API "
-"called gtkmm-2-4 which installs in parallel when it is available. There were "
-"several versions of gtkmm-2.4, such as gtkmm 2.10 and there are several "
-"versions of the gtkmm-3.0 API. Note that the API name does not change for "
-"every version because that would be an incompatible API and ABI break. "
-"Theoretically, there might be a future gtkmm-4.0 API which would install in "
-"parallel with gtkmm-3.0 without affecting existing applications."
+"gtkmm-4.0 is the name of the current stable API. There are older APIs called "
+"gtkmm-2.4 and gtkmm-3.0 which install in parallel when they are available. "
+"There are several versions of gtkmm-2.4, such as gtkmm 2.10 and there are "
+"several versions of the gtkmm-3.0 API. Note that the API name does not "
+"change for every version because that would be an incompatible API and ABI "
+"break. There might be a future gtkmm-5.0 API which would install in parallel "
+"with gtkmm-4.0 without affecting existing applications."
 msgstr ""
 "gtkmm-3.0 es el nombre de la API estable actual. Hubo una API más antigua "
 "llamada gtkmm-2-4 que se instalará en paralelo cuando está disponible. Hubo "
@@ -983,27 +1137,43 @@ msgstr ""
 "y una ABI rota. Teóricamente, podría haber un futura API gtkmm-4.0 que se "
 "instalaría en paralelo con gtkmm-3.0 sin afectar las aplicaciones existentes."
 
-#: C/gtkmm-tutorial-in.xml:392(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:415
+#, fuzzy
+#| msgid ""
+#| "Note that if you mention extra modules in addition to gtkmm-3.0, they "
+#| "should be separated by spaces, not commas."
 msgid ""
-"Note that if you mention extra modules in addition to gtkmm-3.0, they should "
+"Note that if you mention extra modules in addition to gtkmm-4.0, they should "
 "be separated by spaces, not commas."
 msgstr ""
 "Tenga en cuenta que si menciona módulos adicionales, además de gtkmm-3.0, "
 "deben estar separados por espacios, no por comas."
 
-#: C/gtkmm-tutorial-in.xml:394(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:418
+msgid ""
+"The GNU site has more information about <ulink url=\"https://www.gnu.org/";
+"software/autoconf/\">autoconf</ulink> and <ulink url=\"https://www.gnu.org/";
+"software/automake/\">automake</ulink>."
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:421
 msgid ""
-"Openismus has more <ulink url=\"http://www.openismus.com/documents/linux/";
-"automake/automake.shtml\">basic help with automake and autoconf</ulink>."
+"If you start by experimenting with a small application that you plan to use "
+"just for yourself, it's easier to start with a Makefile similar to the "
+"<filename>Makefile.example</filename> files in the <link linkend=\"chapter-"
+"building-applications\">Building applications</link> chapter."
 msgstr ""
-"Openismus tiene más <ulink url=\"http://www.openismus.com/documents/linux/";
-"automake/automake.shtml\">ayuda básica con automake y autoconf</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:401(title) C/gtkmm-tutorial-in.xml:6113(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:429 C/index-in.docbook:5858
 msgid "Widgets"
 msgstr "Widgets"
 
-#: C/gtkmm-tutorial-in.xml:402(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:430
 msgid ""
 "<application>gtkmm</application> applications consist of windows containing "
 "widgets, such as buttons and text boxes. In some other systems, widgets are "
@@ -1018,31 +1188,49 @@ msgstr ""
 "ventanas de una aplicación. Sólo debe llamar a un método de la clase widget "
 "para afectar al widget visible."
 
-#: C/gtkmm-tutorial-in.xml:404(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:432
 #, no-wrap
+#| msgid ""
+#| "m_box.pack_start(m_Button1);\n"
+#| "m_box.pack_start(m_Button2);"
 msgid ""
-"m_box.pack_start(m_Button1);\n"
-"m_box.pack_start(m_Button2);"
+"m_box.append(m_Button1);\n"
+"m_box.append(m_Button2);"
 msgstr ""
-"m_box.pack_start(m_Button1);\n"
-"m_box.pack_start(m_Button2);"
+"m_box.append(m_Button1);\n"
+"m_box.append(m_Button2);"
 
-#: C/gtkmm-tutorial-in.xml:407(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:435
 #, no-wrap
-msgid "m_frame.add(m_box);"
-msgstr "m_frame.add(m_box);"
+#| msgid "m_frame.add(m_box);"
+msgid "m_frame.set_child(m_box);"
+msgstr "m_frame.set_child(m_box);"
 
-#: C/gtkmm-tutorial-in.xml:403(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:431
+#, fuzzy
+#| msgid ""
+#| "Widgets are arranged inside container widgets such as frames and "
+#| "notebooks, in a hierarchy of widgets within widgets. Some of these "
+#| "container widgets, such as <classname>Gtk::Grid</classname>, are not "
+#| "visible - they exist only to arrange other widgets. Here is some example "
+#| "code that adds 2 <classname>Gtk::Button</classname> widgets to a "
+#| "<classname>Gtk::Box</classname> container widget: <placeholder-1/> and "
+#| "here is how to add the <classname>Gtk::Box</classname>, containing those "
+#| "buttons, to a <classname>Gtk::Frame</classname>, which has a visible "
+#| "frame and title: <placeholder-2/>"
 msgid ""
 "Widgets are arranged inside container widgets such as frames and notebooks, "
 "in a hierarchy of widgets within widgets. Some of these container widgets, "
 "such as <classname>Gtk::Grid</classname>, are not visible - they exist only "
 "to arrange other widgets. Here is some example code that adds 2 "
 "<classname>Gtk::Button</classname> widgets to a <classname>Gtk::Box</"
-"classname> container widget: <placeholder-1/> and here is how to add the "
-"<classname>Gtk::Box</classname>, containing those buttons, to a "
-"<classname>Gtk::Frame</classname>, which has a visible frame and title: "
-"<placeholder-2/>"
+"classname> container widget: <_:programlisting-1/> and here is how to add "
+"the <classname>Gtk::Box</classname>, containing those buttons, to a "
+"<classname>Gtk::Frame</classname>, which has a visible frame and title: <_:"
+"programlisting-2/>"
 msgstr ""
 "Los widgets se ordenan dentro de widgets contenedores como marcos y "
 "cuardenos de notas, en una jerarquía de widgets dentro de widgets. Algunos "
@@ -1054,7 +1242,8 @@ msgstr ""
 "botones, a un <classname>Gtk::Frame</classname>, que tiene un cuadro y "
 "título visibles: <placeholder-2/>"
 
-#: C/gtkmm-tutorial-in.xml:409(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:437
 msgid ""
 "Most of the chapters in this book deal with specific widgets. See the <link "
 "linkend=\"chapter-container-widgets\">Container Widgets</link> section for "
@@ -1065,7 +1254,8 @@ msgstr ""
 "contenedores</link> para obtener más detalles sobre de cómo agregar widgets "
 "a widgets contenedores."
 
-#: C/gtkmm-tutorial-in.xml:413(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:441
 msgid ""
 "Although you can specify the layout and appearance of windows and widgets "
 "with C++ code, you will probably find it more convenient to design your user "
@@ -1079,17 +1269,30 @@ msgstr ""
 "ejecución con <literal>Gtk::Builder</literal>. Consulte el capítulo <link "
 "linkend=\"chapter-builder\">Glade y Gtk::Builder</link>."
 
-#: C/gtkmm-tutorial-in.xml:416(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:444
+#, fuzzy
+#| msgid ""
+#| "Although <application>gtkmm</application> widget instances have lifetimes "
+#| "and scopes just like those of other C++ classes, <application>gtkmm</"
+#| "application> has an optional time-saving feature that you will see in "
+#| "some of the examples. <function>Gtk::manage()</function> allows you to "
+#| "say that a child widget is owned by the container into which you place "
+#| "it. This allows you to <function>new</function> the widget, add it to the "
+#| "container and forget about deleting it. You can learn more about "
+#| "<application>gtkmm</application> memory management techniques in the "
+#| "<link linkend=\"chapter-memory\">Memory Management chapter</link>."
 msgid ""
 "Although <application>gtkmm</application> widget instances have lifetimes "
 "and scopes just like those of other C++ classes, <application>gtkmm</"
 "application> has an optional time-saving feature that you will see in some "
-"of the examples. <function>Gtk::manage()</function> allows you to say that a "
-"child widget is owned by the container into which you place it. This allows "
-"you to <function>new</function> the widget, add it to the container and "
-"forget about deleting it. You can learn more about <application>gtkmm</"
-"application> memory management techniques in the <link linkend=\"chapter-"
-"memory\">Memory Management chapter</link>."
+"of the examples. The <function>Gtk::make_managed()</function> allows you to "
+"create a new widget and state that it will become owned by the container "
+"into which you place it. This allows you to create the widget, add it to the "
+"container and not be concerned about deleting it, since that will occur when "
+"the parent container (which may itself be managed) is deleted. You can learn "
+"more about <application>gtkmm</application> memory management techniques in "
+"the <link linkend=\"chapter-memory\">Memory Management chapter</link>."
 msgstr ""
 "A pesar de que las instancias de widgets <application>gtkmm</application> "
 "tienen ámbito y duración de la misma manera que otras clases de C++, "
@@ -1102,14 +1305,17 @@ msgstr ""
 "application> en el <link linkend=\"chapter-memory\">capítulo de gestión de "
 "memoria</link>."
 
-#: C/gtkmm-tutorial-in.xml:422(title) C/gtkmm-tutorial-in.xml:773(title)
-#: C/gtkmm-tutorial-in.xml:4699(title) C/gtkmm-tutorial-in.xml:5001(title)
-#: C/gtkmm-tutorial-in.xml:7722(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: sect2/title
+#. (itstool) path: appendix/title
+#: C/index-in.docbook:458 C/index-in.docbook:4696 C/index-in.docbook:4940
+#: C/index-in.docbook:8065
 msgid "Signals"
 msgstr "Señales"
 
 #
-#: C/gtkmm-tutorial-in.xml:424(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:460
 msgid ""
 "<application>gtkmm</application>, like most GUI toolkits, is <emphasis>event-"
 "driven</emphasis>. When an event occurs, such as the press of a mouse "
@@ -1123,31 +1329,39 @@ msgstr ""
 "evento, como la pulsación de un botón del ratón sobre un widget, éste "
 "emitirá la señal apropiada. Cada widget puede emitir un conjunto de señales "
 "diferente. Para hacer que la pulsación de un botón resulte en una acción, "
-"establecemos un <emphasis>gestor de señales</emphasis> para atrapar la "
-"señal «clicked» del botón."
+"establecemos un <emphasis>gestor de señales</emphasis> para atrapar la señal "
+"«clicked» del botón."
 
-#: C/gtkmm-tutorial-in.xml:432(programlisting)
-#, no-wrap
-msgid ""
-"m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n"
-"  &amp;HelloWorld::on_button_clicked) );"
-msgstr ""
-"m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n"
-"  &amp;HelloWorld::on_button_clicked) );"
-
-#: C/gtkmm-tutorial-in.xml:431(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:467
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> uses the libsigc++ library to implement "
+#| "signals. Here is an example line of code that connects a Gtk::Button's "
+#| "\"clicked\" signal with a signal handler called \"on_button_clicked\": "
+#| "<placeholder-1/>"
 msgid ""
 "<application>gtkmm</application> uses the libsigc++ library to implement "
 "signals. Here is an example line of code that connects a Gtk::Button's "
-"\"clicked\" signal with a signal handler called \"on_button_clicked\": "
-"<placeholder-1/>"
+"\"clicked\" signal with a signal handler called \"on_button_clicked\":"
 msgstr ""
 "<application>gtkmm</application> usa la biblioteca libsigc++ para "
 "implementar señales. Aquí hay una línea de código de ejemplo que conecta una "
 "señal «clicked» de Gtk::Button a un gestor de señales llamado "
 "«on_button_clicked»: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:436(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:469
+#, no-wrap
+msgid ""
+"m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n"
+"  &amp;HelloWorld::on_button_clicked) );"
+msgstr ""
+"m_button1.signal_clicked().connect( sigc::mem_fun(*this,\n"
+"  &amp;HelloWorld::on_button_clicked) );"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:472
 msgid ""
 "For more detailed information about signals, see the <link linkend=\"chapter-"
 "signals\">appendix</link>."
@@ -1155,7 +1369,8 @@ msgstr ""
 "Para obtener información más detallada acerca de señales, consulte el <link "
 "linkend=\"chapter-signals\">apéndice</link>."
 
-#: C/gtkmm-tutorial-in.xml:437(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:473
 msgid ""
 "For information about implementing your own signals rather than just "
 "connecting to the existing <application>gtkmm</application> signals, see the "
@@ -1166,11 +1381,13 @@ msgstr ""
 "application>, consulte el <link linkend=\"chapter-custom-signals\">apéndice</"
 "link>."
 
-#: C/gtkmm-tutorial-in.xml:443(title) C/gtkmm-tutorial-in.xml:9842(classname)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:479
 msgid "Glib::ustring"
 msgstr "Glib::ustring"
 
-#: C/gtkmm-tutorial-in.xml:444(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:480
 msgid ""
 "You might be surprised to learn that <application>gtkmm</application> "
 "doesn't use <classname>std::string</classname> in its interfaces. Instead it "
@@ -1189,15 +1406,27 @@ msgstr ""
 "aplicación."
 
 #
-#: C/gtkmm-tutorial-in.xml:445(para)
-msgid ""
-"std::string uses 8 bit per character, but 8 bits aren't enough to encode "
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:481
+#, fuzzy
+#| msgid ""
+#| "std::string uses 8 bit per character, but 8 bits aren't enough to encode "
+#| "languages such as Arabic, Chinese, and Japanese. Although the encodings "
+#| "for these languages have now been specified by the Unicode Consortium, "
+#| "the C and C++ languages do not yet provide any standardised Unicode "
+#| "support. GTK+ and GNOME chose to implement Unicode using UTF-8, and "
+#| "that's what is wrapped by Glib::ustring. It provides almost exactly the "
+#| "same interface as std::string, along with automatic conversions to and "
+#| "from std::string."
+msgid ""
+"std::string uses 8 bits per character, but 8 bits aren't enough to encode "
 "languages such as Arabic, Chinese, and Japanese. Although the encodings for "
-"these languages have now been specified by the Unicode Consortium, the C and "
-"C++ languages do not yet provide any standardised Unicode support. GTK+ and "
-"GNOME chose to implement Unicode using UTF-8, and that's what is wrapped by "
-"Glib::ustring. It provides almost exactly the same interface as std::string, "
-"along with automatic conversions to and from std::string."
+"these languages have been specified by the <ulink url=\"http://www.unicode.";
+"org/\">Unicode Consortium</ulink>, the C and C++ languages do not yet "
+"provide any standardised Unicode support for UTF-8 encoding. GTK and GNOME "
+"chose to implement Unicode using UTF-8, and that's what is wrapped by Glib::"
+"ustring. It provides almost exactly the same interface as std::string, along "
+"with automatic conversions to and from std::string."
 msgstr ""
 "std::string utiliza 8 bits por carácter, pero 8 bits no son suficientes para "
 "codificar lenguajes como árabe, chino y japonés. A pesar de que las "
@@ -1208,7 +1437,8 @@ msgstr ""
 "la misma interfaz que std::string, además de conversiones automáticas desde "
 "y hacia std::string."
 
-#: C/gtkmm-tutorial-in.xml:446(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:486
 msgid ""
 "One of the benefits of UTF-8 is that you don't need to use it unless you "
 "want to, so you don't need to retrofit all of your code at once. "
@@ -1226,7 +1456,8 @@ msgstr ""
 "Entonces, todo lo que necesitará hacer es empezar a utilizar "
 "<classname>Glib::ustring</classname> en su lugar."
 
-#: C/gtkmm-tutorial-in.xml:447(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:487
 msgid ""
 "Note that UTF-8 isn't compatible with 8-bit encodings like ISO-8859-1. For "
 "instance, German umlauts are not in the ASCII range and need more than 1 "
@@ -1240,7 +1471,8 @@ msgstr ""
 "cadenas literales de 8 bits, debe convertirlas a UTF-8 (por ejemplo, el "
 "saludo bávaro «Grüß Gott» sería «Gr\\xC3\\xBC\\xC3\\x9F Gott»)."
 
-#: C/gtkmm-tutorial-in.xml:448(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:488
 msgid ""
 "You should avoid C-style pointer arithmetic, and functions such as strlen(). "
 "In UTF-8, each character might need anywhere from 1 to 6 bytes, so it's not "
@@ -1256,7 +1488,8 @@ msgstr ""
 "métodos como Glib::ustring::substr() y seguir pensando en términos de "
 "caracteres en vez de bytes."
 
-#: C/gtkmm-tutorial-in.xml:450(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:490
 msgid ""
 "Unlike the Windows UCS-2 Unicode solution, this does not require any special "
 "compiler options to process string literals, and it does not result in "
@@ -1267,33 +1500,15 @@ msgstr ""
 "resulta en que los ejecutables y bibliotecas Unicode sean incompatibles con "
 "las ASCII."
 
-#: C/gtkmm-tutorial-in.xml:452(ulink) C/gtkmm-tutorial-in.xml:753(ulink)
-#: C/gtkmm-tutorial-in.xml:851(ulink) C/gtkmm-tutorial-in.xml:866(ulink)
-#: C/gtkmm-tutorial-in.xml:969(ulink) C/gtkmm-tutorial-in.xml:1023(ulink)
-#: C/gtkmm-tutorial-in.xml:1040(ulink) C/gtkmm-tutorial-in.xml:1085(ulink)
-#: C/gtkmm-tutorial-in.xml:1146(ulink) C/gtkmm-tutorial-in.xml:1218(ulink)
-#: C/gtkmm-tutorial-in.xml:1264(ulink) C/gtkmm-tutorial-in.xml:1452(ulink)
-#: C/gtkmm-tutorial-in.xml:1495(ulink) C/gtkmm-tutorial-in.xml:1543(ulink)
-#: C/gtkmm-tutorial-in.xml:1631(ulink) C/gtkmm-tutorial-in.xml:1671(ulink)
-#: C/gtkmm-tutorial-in.xml:1712(ulink) C/gtkmm-tutorial-in.xml:1745(ulink)
-#: C/gtkmm-tutorial-in.xml:1785(ulink) C/gtkmm-tutorial-in.xml:2021(ulink)
-#: C/gtkmm-tutorial-in.xml:2120(ulink) C/gtkmm-tutorial-in.xml:2157(ulink)
-#: C/gtkmm-tutorial-in.xml:2224(ulink) C/gtkmm-tutorial-in.xml:2264(ulink)
-#: C/gtkmm-tutorial-in.xml:2311(ulink) C/gtkmm-tutorial-in.xml:2327(ulink)
-#: C/gtkmm-tutorial-in.xml:2345(ulink) C/gtkmm-tutorial-in.xml:2453(ulink)
-#: C/gtkmm-tutorial-in.xml:2968(ulink) C/gtkmm-tutorial-in.xml:3158(ulink)
-#: C/gtkmm-tutorial-in.xml:3186(ulink) C/gtkmm-tutorial-in.xml:3215(ulink)
-#: C/gtkmm-tutorial-in.xml:3267(ulink) C/gtkmm-tutorial-in.xml:3287(ulink)
-#: C/gtkmm-tutorial-in.xml:3335(ulink) C/gtkmm-tutorial-in.xml:3829(ulink)
-#: C/gtkmm-tutorial-in.xml:3886(ulink) C/gtkmm-tutorial-in.xml:3897(ulink)
-#: C/gtkmm-tutorial-in.xml:3924(ulink) C/gtkmm-tutorial-in.xml:3947(ulink)
-#: C/gtkmm-tutorial-in.xml:3971(ulink) C/gtkmm-tutorial-in.xml:4003(ulink)
-#: C/gtkmm-tutorial-in.xml:4819(ulink) C/gtkmm-tutorial-in.xml:5091(ulink)
-#: C/gtkmm-tutorial-in.xml:5123(ulink) C/gtkmm-tutorial-in.xml:7594(ulink)
-msgid "Reference"
-msgstr "Referencia"
-
-#: C/gtkmm-tutorial-in.xml:454(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:492
+msgid ""
+"<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGlib_1_1ustring.";
+"html\">Reference</ulink>"
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:494
 msgid ""
 "See the <link linkend=\"chapter-internationalization\">Internationalization</"
 "link> section for information about providing the UTF-8 string literals."
@@ -1302,79 +1517,27 @@ msgstr ""
 "UTF-8, consulte la sección <link linkend=\"chapter-internationalization"
 "\">Internacionalización</link>."
 
-#: C/gtkmm-tutorial-in.xml:459(title)
-msgid "Intermediate types"
-msgstr "Tipos intermedios"
-
-#: C/gtkmm-tutorial-in.xml:460(para)
-msgid ""
-"Some API related to gtkmm uses intermediate data containers, such as "
-"<classname>Glib::StringArrayHandle</classname>, instead of a specific "
-"Standard C++ container such as <classname>std::vector</classname> or "
-"<classname>std::list</classname>, though <application>gtkmm</application> "
-"itself now uses just <classname>std::vector</classname> since "
-"<application>gtkmm</application> 3.0."
-msgstr ""
-"Algunas API relacionadas con gtkmm utilizan contenedores de datos "
-"intermedios, como <classname>Glib::StringArrayHandle</classname>, en vez de "
-"un contenedor específico estándar de C++ como <classname>std::vector</"
-"classname> o <classname>std::list</classname>, a pesar de que "
-"<application>gtkmm</application> en sí mismo ahora sólo usa <classname>std::"
-"vector</classname> desde <application>gtkmm</application> 3.0."
-
-#: C/gtkmm-tutorial-in.xml:463(para)
-msgid ""
-"<classname>Glib::StringArrayHandle</classname> or <classname>Glib::"
-"ArrayHandle&lt;Glib::ustring&gt;</classname>: Use <classname>std::vector&lt;"
-"Glib::ustring&gt;</classname>, <classname>std::list&lt;Glib::ustring&gt;</"
-"classname>, <type>const char*[]</type>, etc."
-msgstr ""
-"<classname>Glib::StringArrayHandle</classname> o <classname>Glib::"
-"ArrayHandle&lt;Glib::ustring&gt;</classname>: usan <classname>std::vector&lt;"
-"Glib::ustring&gt;</classname>, <classname>std::list&lt;Glib::ustring&gt;</"
-"classname>, <type>const char*[]</type>, etc."
-
-#: C/gtkmm-tutorial-in.xml:464(para)
-msgid ""
-"<classname>Glib::ListHandle&lt;Gtk::Widget*&gt;</classname>: Use "
-"<classname>std::vector&lt;Gtk::Widget*&gt;</classname>, <classname>std::"
-"list&lt;Gtk::Widget*&gt;</classname>, etc."
-msgstr ""
-"<classname>Glib::ListHandle&lt;Gtk::Widget*&gt;</classname>: usa "
-"<classname>std::vector&lt;Gtk::Widget*&gt;</classname>, <classname>std::"
-"list&lt;Gtk::Widget*&gt;</classname>, etc."
-
-#: C/gtkmm-tutorial-in.xml:465(para)
-msgid ""
-"<classname>Glib::SListHandle&lt;Gtk::Widget*&gt;</classname>: Use "
-"<classname>std::vector&lt;Gtk::Widget*&gt;</classname>, <classname>std::"
-"list&lt;Gtk::Widget*&gt;</classname>, etc."
-msgstr ""
-"<classname>Glib::SListHandle&lt;Gtk::Widget*&gt;</classname>: usa "
-"<classname>std::vector&lt;Gtk::Widget*&gt;</classname>, <classname>std::"
-"list&lt;Gtk::Widget*&gt;</classname>, etc."
-
-#: C/gtkmm-tutorial-in.xml:461(para)
-msgid ""
-"You should not declare these types yourself. You should instead use whatever "
-"Standard C++ container you prefer. glibmm will do the conversion for you. "
-"Here are some of these intermediate types: <placeholder-1/>"
-msgstr ""
-"No declare estos tipos usted mismo. Utilice, en cambio, el contenedor "
-"estándar C++ que prefiera. glibmm hará la conversión. Aquí hay algunos de "
-"estos tipos intermedios: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:473(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:499
 msgid "Mixing C and C++ APIs"
 msgstr "Mezclando las API de C y C++"
 
-#: C/gtkmm-tutorial-in.xml:474(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:500
+#, fuzzy
+#| msgid ""
+#| "You can use C APIs which do not yet have convenient C++ interfaces. It is "
+#| "generally not a problem to use C APIs from C++, and <application>gtkmm</"
+#| "application> helps by providing access to the underlying C object, and "
+#| "providing an easy way to create a C++ wrapper object from a C object, "
+#| "provided that the C API is also based on the GObject system."
 msgid ""
 "You can use C APIs which do not yet have convenient C++ interfaces. It is "
 "generally not a problem to use C APIs from C++, and <application>gtkmm</"
 "application> helps by providing access to the underlying C object, and "
 "providing an easy way to create a C++ wrapper object from a C object, "
-"provided that the C API is also based on the GObject system."
+"provided that the C API is also based on the <classname>GObject</classname> "
+"system."
 msgstr ""
 "Puede usar las API de C que no tengan todavía interfaces C++ convenientes. "
 "Generalmente no es un problema usar las API de C desde C++, y "
@@ -1382,52 +1545,122 @@ msgstr ""
 "C subyacente y una forma fácil de crear un objeto C++ envoltorio desde un "
 "objeto C, si la API de C también está basada en el sistema GObject."
 
-#: C/gtkmm-tutorial-in.xml:476(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:506
+#, fuzzy
+#| msgid ""
+#| "To use a <application>gtkmm</application> instance with a C function that "
+#| "requires a C GObject instance, use the <function>gobj()</function> "
+#| "function to obtain a pointer to the underlying GObject instance. For "
+#| "instance"
 msgid ""
 "To use a <application>gtkmm</application> instance with a C function that "
-"requires a C GObject instance, use the <function>gobj()</function> function "
-"to obtain a pointer to the underlying GObject instance. For instance"
+"requires a C <classname>GObject</classname> instance, use the C++ instance’s "
+"<function>gobj()</function> function to obtain a pointer to the underlying C "
+"instance. For example:"
 msgstr ""
 "Para usar una instancia de <application>gtkmm</application> con una función "
 "C que requiere una instancia GObject C, use la función <function>gobj()</"
 "function> para obtener un puntero a la instancia GObject subyacente. Por "
 "ejemplo"
 
-#: C/gtkmm-tutorial-in.xml:479(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:511
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Gtk::Button* button = new Gtk::Button(\"example\");\n"
+#| "gtk_button_do_something_new(button-&gt;gobj());\n"
 msgid ""
 "\n"
-"Gtk::Button* button = new Gtk::Button(\"example\");\n"
-"gtk_button_do_something_new(button-&gt;gobj());\n"
+"Gtk::Button button(\"example\");\n"
+"gtk_button_do_something_that_gtkmm_cannot(button.gobj());\n"
 msgstr ""
 "\n"
-"Gtk::Button* button = new Gtk::Button(\"example\");\n"
-"gtk_button_do_something_new(button-&gt;gobj());\n"
-
-#: C/gtkmm-tutorial-in.xml:485(para)
-msgid ""
-"To obtain a <application>gtkmm</application> instance from a C GObject "
-"instance, use the Glib::wrap() function. For instance"
-msgstr ""
-"Para obtener una instancia <application>gtkmm</application> desde una "
-"instancia C GObject, use la función Glib::wrap(). Por ejemplo"
+"Gtk::Button button(\"example\");\n"
+"gtk_button_do_something_that_gtkmm_cannot(button.gobj());\n"
 
-#: C/gtkmm-tutorial-in.xml:487(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:522
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "GtkButton* cbutton = get_a_button();\n"
+#| "Gtk::Button* button = Glib::wrap(cbutton);\n"
 msgid ""
 "\n"
 "GtkButton* cbutton = get_a_button();\n"
 "Gtk::Button* button = Glib::wrap(cbutton);\n"
+"button-&gt;set_label(\"Now I speak C++ too!\");\n"
 msgstr ""
 "\n"
 "GtkButton* cbutton = get_a_button();\n"
 "Gtk::Button* button = Glib::wrap(cbutton);\n"
+"button-&gt;set_label(\"Now I speak C++ too!\");\n"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:529
+#, fuzzy
+#| msgid ""
+#| "This macro declares a wrapper for a type that is derived from "
+#| "<classname>GTypeInterface</classname>."
+msgid ""
+"it's a widget or other class that inherits from <classname>Gtk::Object</"
+"classname>, and"
+msgstr ""
+"Esta macro declara un envoltorio para un tipo que deriva de "
+"<classname>GTypeInterface</classname>."
 
-#: C/gtkmm-tutorial-in.xml:495(title)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:530
+msgid ""
+"the C instance has a floating reference when the wrapper is created, and"
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:531
+msgid ""
+"<function>Gtk::manage()</function> has not been called on it (which includes "
+"if it was created with <function>Gtk::make_managed()</function>), or"
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:532
+msgid ""
+"<function>Gtk::manage()</function> was called on it, but it was never added "
+"to, or was later removed from, its parent."
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:516
+msgid ""
+"To obtain a <application>gtkmm</application> instance from a C "
+"<classname>GObject</classname> instance, use one of the many overloaded "
+"<function>Glib::wrap()</function> functions. The C instance’s reference "
+"count is not incremented, unless you set the optional <parameter>take_copy</"
+"parameter> argument to <literal>true</literal>. For example: <_:"
+"programlisting-1/> The C++ wrapper shall be explicitly deleted if <_:"
+"itemizedlist-2/> <function>Glib::wrap()</function> binds the C and C++ "
+"instances to each other. Don't delete the C++ instance before you want the C "
+"instance to die."
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:537
+msgid ""
+"In all other cases the C++ instance is automatically deleted when the last "
+"reference to the C instance is dropped. This includes all <function>Glib::"
+"wrap()</function> overloads that return a <classname>Glib::RefPtr</"
+"classname>."
+msgstr ""
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:544
 msgid "Hello World in <application>gtkmm</application>"
 msgstr "«Hola mundo» en <application>gtkmm</application>"
 
-#: C/gtkmm-tutorial-in.xml:497(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:546
 msgid ""
 "We've now learned enough to look at a real example. In accordance with an "
 "ancient tradition of computer science, we now introduce Hello World, a la "
@@ -1437,18 +1670,28 @@ msgstr ""
 "una antigua tradición de la informática, se introducirá la aplicación Hola "
 "Mundo en <application>gtkmm</application>:"
 
-#: C/gtkmm-tutorial-in.xml:504(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:551
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/helloworld\">Source Code</ulink>"
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:553
 msgid ""
 "Try to compile and run it before going on. You should see something like "
 "this:"
 msgstr ""
 "Intente compilarla y ejecutarla antes de continuar. Debería ver algo así:"
 
-#: C/gtkmm-tutorial-in.xml:509(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:558
 msgid "Hello World"
 msgstr "Hello World"
 
-#: C/gtkmm-tutorial-in.xml:515(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:564
 msgid ""
 "Pretty thrilling, eh? Let's examine the code. First, the "
 "<classname>HelloWorld</classname> class:"
@@ -1456,19 +1699,34 @@ msgstr ""
 "Fascinante, ¿verdad? Examinemos el código. Primero, la clase "
 "<classname>HelloWorld</classname>:"
 
-#: C/gtkmm-tutorial-in.xml:520(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:569
 #, no-wrap
+#| msgid ""
+#| "class HelloWorld : public Gtk::Window\n"
+#| "{\n"
+#| "\n"
+#| "public:\n"
+#| "  HelloWorld();\n"
+#| "  virtual ~HelloWorld();\n"
+#| "\n"
+#| "protected:\n"
+#| "  //Signal handlers:\n"
+#| "  virtual void on_button_clicked();\n"
+#| "\n"
+#| "  //Member widgets:\n"
+#| "  Gtk::Button m_button;\n"
+#| "};"
 msgid ""
 "class HelloWorld : public Gtk::Window\n"
 "{\n"
-"\n"
 "public:\n"
 "  HelloWorld();\n"
-"  virtual ~HelloWorld();\n"
+"  ~HelloWorld() override;\n"
 "\n"
 "protected:\n"
 "  //Signal handlers:\n"
-"  virtual void on_button_clicked();\n"
+"  void on_button_clicked();\n"
 "\n"
 "  //Member widgets:\n"
 "  Gtk::Button m_button;\n"
@@ -1476,20 +1734,20 @@ msgid ""
 msgstr ""
 "class HelloWorld : public Gtk::Window\n"
 "{\n"
-"\n"
 "public:\n"
 "  HelloWorld();\n"
-"  virtual ~HelloWorld();\n"
+"  ~HelloWorld() override;\n"
 "\n"
 "protected:\n"
 "  //Signal handlers:\n"
-"  virtual void on_button_clicked();\n"
+"  void on_button_clicked();\n"
 "\n"
 "  //Member widgets:\n"
 "  Gtk::Button m_button;\n"
 "};"
 
-#: C/gtkmm-tutorial-in.xml:535(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:583
 msgid ""
 "This class implements the \"Hello World\" window. It's derived from "
 "<classname>Gtk::Window</classname>, and has a single <classname>Gtk::Button</"
@@ -1503,32 +1761,41 @@ msgstr ""
 "inicialización de la ventana, incluyendo establecer las señales. Aquí está, "
 "sin los comentarios:"
 
-#: C/gtkmm-tutorial-in.xml:544(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:592
 #, no-wrap
+#| msgid ""
+#| "HelloWorld::HelloWorld()\n"
+#| ":\n"
+#| "  m_button (\"Hello World\")\n"
+#| "{\n"
+#| "  set_border_width(10);\n"
+#| "  m_button.signal_clicked().connect(sigc::mem_fun(*this,\n"
+#| "    &amp;HelloWorld::on_button_clicked));\n"
+#| "  add(m_button);.\n"
+#| "  m_button.show();\n"
+#| "}"
 msgid ""
 "HelloWorld::HelloWorld()\n"
-":\n"
-"  m_button (\"Hello World\")\n"
+": m_button(\"Hello World\")\n"
 "{\n"
-"  set_border_width(10);\n"
+"  m_button.set_margin(10);\n"
 "  m_button.signal_clicked().connect(sigc::mem_fun(*this,\n"
 "    &amp;HelloWorld::on_button_clicked));\n"
-"  add(m_button);.\n"
-"  m_button.show();\n"
+"  set_child(m_button);\n"
 "}"
 msgstr ""
 "HelloWorld::HelloWorld()\n"
-":\n"
-"  m_button (\"Hello World\")\n"
+": m_button(\"Hello World\")\n"
 "{\n"
-"  set_border_width(10);\n"
+"  m_button.set_margin(10);\n"
 "  m_button.signal_clicked().connect(sigc::mem_fun(*this,\n"
 "    &amp;HelloWorld::on_button_clicked));\n"
-"  add(m_button);.\n"
-"  m_button.show();\n"
+"  set_child(m_button);\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:555(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:601
 msgid ""
 "Notice that we've used an initialiser statement to give the "
 "<literal>m_button</literal> object the label \"Hello World\"."
@@ -1536,17 +1803,23 @@ msgstr ""
 "Tenga en cuenta que se ha usado una declaración de inicialización para darle "
 "al objeto <literal>m_button</literal> la etiqueta «Hello World»."
 
-#: C/gtkmm-tutorial-in.xml:560(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:606
+#, fuzzy
+#| msgid ""
+#| "Next we call the Window's <methodname>set_border_width()</methodname> "
+#| "method. This sets the amount of space between the sides of the window and "
+#| "the widget it contains."
 msgid ""
-"Next we call the Window's <methodname>set_border_width()</methodname> "
-"method. This sets the amount of space between the sides of the window and "
-"the widget it contains."
+"Next we call the Button's <methodname>set_margin()</methodname> method. This "
+"sets the amount of space around the button."
 msgstr ""
 "A continuación, llamamos al método <methodname>set_border_width()</"
 "methodname> de la ventana. Esto establece el tamaño del espacio entre los "
 "lados de la ventana y el widget que contiene."
 
-#: C/gtkmm-tutorial-in.xml:566(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:611
 msgid ""
 "We then hook up a signal handler to <literal>m_button</literal>'s "
 "<literal>clicked</literal> signal. This prints our friendly greeting to "
@@ -1556,27 +1829,24 @@ msgstr ""
 "literal> de <literal>m_button</literal>. Esto imprime nuestro amigable "
 "saludo a <literal>stdout</literal>."
 
-#: C/gtkmm-tutorial-in.xml:571(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:616
+#, fuzzy
+#| msgid ""
+#| "Next we call the Window's <methodname>set_border_width()</methodname> "
+#| "method. This sets the amount of space between the sides of the window and "
+#| "the widget it contains."
 msgid ""
-"Next, we use the Window's <methodname>add()</methodname> method to put "
-"<literal>m_button</literal> in the Window. (<methodname>add()</methodname> "
-"comes from <classname>Gtk::Container</classname>, which is described in the "
-"chapter on container widgets.) The <methodname>add()</methodname> method "
-"places the Widget in the Window, but it doesn't display the widget. "
-"<application>gtkmm</application> widgets are always invisible when you "
-"create them - to display them, you must call their <methodname>show()</"
-"methodname> method, which is what we do in the next line."
+"Next, we use the Window's <methodname>set_child()</methodname> method to put "
+"<literal>m_button</literal> in the Window. The <methodname>set_child()</"
+"methodname> method places the Widget in the Window."
 msgstr ""
-"A continuación usamos el método <methodname>add()</methodname> de la ventana "
-"para situar el <literal>m_button</literal> en ella. (<methodname>add()</"
-"methodname> deriva de <classname>Gtk::Container</classname>, que se describe "
-"en el capítulo sobre widgets contenedores). El método <methodname>add()</"
-"methodname> ubica al widget en la ventana, pero no lo muestra. Los widgets "
-"de <application>gtkmm</application> siempre son invisibles cuando se crean: "
-"para mostrarlos, debe llamar a su método <methodname>show()</methodname>, "
-"que es lo que se hace en la siguiente línea."
+"A continuación, llamamos al método <methodname>set_border_width()</"
+"methodname> de la ventana. Esto establece el tamaño del espacio entre los "
+"lados de la ventana y el widget que contiene."
 
-#: C/gtkmm-tutorial-in.xml:581(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:622
 msgid ""
 "Now let's look at our program's <function>main()</function> function. Here "
 "it is, without comments:"
@@ -1584,33 +1854,47 @@ msgstr ""
 "Ahora eche un vistazo a la función <function>main()</function> del programa. "
 "Aquí está, sin comentarios:"
 
-#: C/gtkmm-tutorial-in.xml:586(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:627
 #, no-wrap
-msgid ""
-"int main(int argc, char** argv)\n"
+#| msgid ""
+#| "int main(int argc, char** argv)\n"
+#| "{\n"
+#| "  Glib::RefPtr&lt;Gtk::Application&gt; app = Gtk::Application::create(argc, argv, 
\"org.gtkmm.example\");\n"
+#| "\n"
+#| "  HelloWorld helloworld;\n"
+#| "  return app-&gt;run(helloworld);\n"
+#| "}"
+msgid ""
+"int main(int argc, char* argv[])\n"
 "{\n"
-"  Glib::RefPtr&lt;Gtk::Application&gt; app = Gtk::Application::create(argc, argv, \"org.gtkmm.example\");\n"
-"\n"
+"  auto app = Gtk::Application::create(\"org.gtkmm.example\");\n"
 "  HelloWorld helloworld;\n"
-"  return app-&gt;run(helloworld);\n"
+"  return app-&gt;run(helloworld, argc, argv);\n"
 "}"
 msgstr ""
-"int main(int argc, char** argv)\n"
+"int main(int argc, char* argv[])\n"
 "{\n"
-"  Glib::RefPtr&lt;Gtk::Application&gt; app = Gtk::Application::create(argc, argv, \"org.gtkmm.example\");\n"
-"\n"
+"  auto app = Gtk::Application::create(\"org.gtkmm.example\");\n"
 "  HelloWorld helloworld;\n"
-"  return app-&gt;run(helloworld);\n"
+"  return app-&gt;run(helloworld, argc, argv);\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:594(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:634
+#, fuzzy
+#| msgid ""
+#| "First we instantiate an object stored in a <classname>RefPtr</classname> "
+#| "smartpointer called <literal>app</literal>. This is of type "
+#| "<classname>Gtk::Application</classname>. Every <application>gtkmm</"
+#| "application> program must have one of these. We pass our command-line "
+#| "arguments to its create() method. It takes the arguments it wants, and "
+#| "leaves you the rest, as we described earlier."
 msgid ""
 "First we instantiate an object stored in a <classname>RefPtr</classname> "
 "smartpointer called <literal>app</literal>. This is of type <classname>Gtk::"
 "Application</classname>. Every <application>gtkmm</application> program must "
-"have one of these. We pass our command-line arguments to its create() "
-"method. It takes the arguments it wants, and leaves you the rest, as we "
-"described earlier."
+"have one of these."
 msgstr ""
 "Primero, se instancia un objeto almacenado en un puntero inteligente "
 "<classname>RefPtr</classname> llamado <literal>app</literal>. Éste es del "
@@ -1619,7 +1903,8 @@ msgstr ""
 "nuestros argumentos de línea de comandos a su método «create()». Toma los "
 "argumentos que quiere, y le deja el resto, como se ha descrito anteriormente."
 
-#: C/gtkmm-tutorial-in.xml:601(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:639
 #, fuzzy
 #| msgid ""
 #| "Next we make an object of our <classname>HelloWorld</classname> class, "
@@ -1635,12 +1920,13 @@ msgid ""
 "Next we make an object of our <classname>HelloWorld</classname> class, whose "
 "constructor takes no arguments, but it isn't visible yet. When we call "
 "<methodname>Gtk::Application::run()</methodname>, giving it the helloworld "
-"Window, it shows the Window and starts the <application>gtkmm</"
-"application><emphasis>event loop</emphasis>. During the event loop "
-"<application>gtkmm</application> idles, waiting for actions from the user, "
-"and responding appropriately. When the user closes the Window, run() will "
-"return, causing the final line of our main() function be to executed. The "
-"application will then finish."
+"Window and the command-line arguments, it shows the Window and starts the "
+"<application>gtkmm</application> <emphasis>event loop</emphasis>. During the "
+"event loop <application>gtkmm</application> idles, waiting for actions from "
+"the user, and responding appropriately. When the user closes the Window, "
+"<methodname>run()</methodname> will return, causing the final line of our "
+"<function>main()</function> function be to executed. The application will "
+"then finish."
 msgstr ""
 "A continuación, se crea un objeto de la clase <classname>HelloWorld</"
 "classname>, cuyo constructor no toma argumentos, pero todavía no es visible. "
@@ -1652,15 +1938,37 @@ msgstr ""
 "última línea de nuestra función «main()» se ejecute. Entonces, la aplicación "
 "finalizará."
 
-#: C/gtkmm-tutorial-in.xml:610(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:648
+msgid ""
+"Like the simple example we showed earlier, this Hello World program does not "
+"use the command-line parameters. It's not necessary to pass them to "
+"<methodname>run()</methodname>."
+msgstr ""
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:657
 msgid "Changes in <application>gtkmm</application> 3"
 msgstr "Cambios en <application>gtkmm</application> 3"
 
-#: C/gtkmm-tutorial-in.xml:612(para)
-msgid ""
-"<application>gtkmm</application>-3.0 is a new version of the "
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:659
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application>-3.0 is a new version of the "
+#| "<application>gtkmm</application> API that installs in parallel with the "
+#| "older <application>gtkmm</application>-2.4 API. The last version of the "
+#| "<application>gtkmm</application>-2.4 API was <application>gtkmm</"
+#| "application> 2.24. <application>gtkmm</application> 3 has no major "
+#| "fundamental differences to <application>gtkmm</application> 2 but does "
+#| "make several small changes that were not possible while maintaining "
+#| "binary compatibility. If you never used the <application>gtkmm</"
+#| "application>-2.4 API then you can safely ignore this chapter."
+msgid ""
+"<application>gtkmm</application>-3.0 is an old version of the "
 "<application>gtkmm</application> API that installs in parallel with the "
-"older <application>gtkmm</application>-2.4 API. The last version of the "
+"still older <application>gtkmm</application>-2.4 API and the new "
+"<application>gtkmm</application>-4.0 API. The last version of the "
 "<application>gtkmm</application>-2.4 API was <application>gtkmm</"
 "application> 2.24. <application>gtkmm</application> 3 has no major "
 "fundamental differences to <application>gtkmm</application> 2 but does make "
@@ -1678,7 +1986,8 @@ msgstr ""
 "compatibilidad de los binarios. Si nunca ha usado la API <application>gtkmm</"
 "application>-2.4, entonces puede ignorar con seguridad este capítulo."
 
-#: C/gtkmm-tutorial-in.xml:614(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:661
 msgid ""
 "<application>gtkmm</application> 3's library is called "
 "<literal>libgtkmm-3.0</literal> rather than <literal>libgtkmm-2.4</literal> "
@@ -1692,11 +2001,13 @@ msgstr ""
 "lo que su verificación pkg-config debería buscar <literal>gtkmm-3.0</"
 "literal> en vez de <literal>gtkmm-2.4</literal>."
 
-#: C/gtkmm-tutorial-in.xml:617(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:664
 msgid "<application>gtkmm</application> 3 added some new classes:"
 msgstr "<application>gtkmm</application> 3 añadió algunas clases nuevas:"
 
-#: C/gtkmm-tutorial-in.xml:620(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:667
 msgid ""
 "<classname>Gtk::AppChooser</classname>, <classname>Gtk::AppChooserButton</"
 "classname>, <classname>Gtk::AppChooserDialog</classname> allow the user to "
@@ -1707,7 +2018,8 @@ msgstr ""
 "seleccionar una aplicación instalada para abrir un determinado tipo de "
 "contenido."
 
-#: C/gtkmm-tutorial-in.xml:621(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:668
 msgid ""
 "<classname>Gtk::Grid</classname> is a new container widget that will "
 "eventually replace <classname>Gtk::Box</classname> and <classname>Gtk::"
@@ -1719,17 +2031,24 @@ msgstr ""
 "<classname>Gtk::Table</classname>. Ordena a sus hijos de acuerdo a sus "
 "propiedades en lugar de sus propios detalles de disposición."
 
-#: C/gtkmm-tutorial-in.xml:622(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:669
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::Switch</classname> displays On/Off states more explictly "
+#| "than <classname>Gtk::CheckBox</classname>. It may be useful, for "
+#| "instance, when allowing users to activate hardware."
 msgid ""
 "<classname>Gtk::Switch</classname> displays On/Off states more explictly "
-"than <classname>Gtk::CheckBox</classname>. It may be useful, for instance, "
-"when allowing users to activate hardware."
+"than <classname>Gtk::CheckButton</classname>. It may be useful, for "
+"instance, when allowing users to activate hardware."
 msgstr ""
 "<classname>Gtk::Switch</classname> muestra los estados Encendido/Apagado más "
 "explícitamente que <classname>Gtk::CheckBox</classname>. Puede ser útil, por "
 "ejemplo, al permitir a los usuarios activar hardware."
 
-#: C/gtkmm-tutorial-in.xml:625(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:672
 msgid ""
 "<application>gtkmm</application> 3 also made several small changes to the "
 "API, which you will probably encounter when porting code that used "
@@ -1739,7 +2058,8 @@ msgstr ""
 "API, que probablemente encontrará cuando porte código que usaba "
 "<application>gtkmm</application>-2.4. Aquí hay una lista corta:"
 
-#: C/gtkmm-tutorial-in.xml:630(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:677
 msgid ""
 "<classname>Gtk::CellLayout</classname>, used by <classname>Gtk::IconView</"
 "classname>, <classname>Gtk::TreeView::Column</classname> and <classname>Gtk::"
@@ -1753,7 +2073,8 @@ msgstr ""
 "que puede usarse para especificar más detalles acerca de cómo las "
 "<classname>CellRenderer</classname> se ordenan y alinean."
 
-#: C/gtkmm-tutorial-in.xml:632(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:679
 msgid ""
 "Gtk::ComboBox now derives from CellLayout, allowing easier layout and "
 "alignment of its <classname>Gtk::CellRenderer</classname>s."
@@ -1761,7 +2082,8 @@ msgstr ""
 "Gtk::ComboBox ahora deriva de CellLayout, permitiendo una disposición y "
 "alineación más fácil de sus <classname>Gtk::CellRenderer</classname>."
 
-#: C/gtkmm-tutorial-in.xml:634(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:681
 msgid ""
 "<classname>Gtk::Adjustment</classname> and <classname>IconSet</classname> "
 "and <classname>Gdk::Cursor</classname> are now used via <classname>Glib::"
@@ -1771,7 +2093,8 @@ msgstr ""
 "<classname>Gdk::Cursor</classname> se usan ahora a través de "
 "<classname>Glib::RefPtr</classname>."
 
-#: C/gtkmm-tutorial-in.xml:636(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:683
 msgid ""
 "<classname>Gtk::Box</classname>, <classname>Gtk::ButtonBox</classname>, "
 "<classname>Gtk::IconView</classname>, <classname>Gtk::Paned</classname>, "
@@ -1791,7 +2114,8 @@ msgstr ""
 "sin requerir el uso de una clase derivada como <classname>Gtk::HBox</"
 "classname>."
 
-#: C/gtkmm-tutorial-in.xml:639(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:686
 msgid ""
 "<classname>Gtk::IconView</classname>, <classname>Gtk::TextView</classname>, "
 "<classname>Gtk::TreeView</classname> and other widgets derive from "
@@ -1804,7 +2128,8 @@ msgstr ""
 "en vez de tener sus propios métodos como <methodname>get_vadjustment()</"
 "methodname> y su propia señal set_scroll_adjustments."
 
-#: C/gtkmm-tutorial-in.xml:641(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:688
 msgid ""
 "<classname>Gtk::Style</classname> and <classname>Gtk::Rc</classname> were "
 "removed, replaced by <classname>Gtk::StyleContext</classname>, and "
@@ -1816,7 +2141,8 @@ msgstr ""
 "<classname>Gtk::StyleProvider</classname>, así como <classname>Gtk::"
 "CssProvider</classname>."
 
-#: C/gtkmm-tutorial-in.xml:643(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:690
 msgid ""
 "Widget::on_expose_event() was replaced by Widget::on_draw(), which assumes "
 "that cairomm is used for drawing, via the provided <classname>Cairo::"
@@ -1828,7 +2154,8 @@ msgstr ""
 "classname> provisto y no requiere que llame a <methodname>Cairo::Context::"
 "clip()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:645(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:692
 msgid ""
 "<classname>Gdk::RGBA</classname> replaces <classname>Color</classname>, "
 "adding an alpha component for opacity. <classname>Colormap</classname> was "
@@ -1838,7 +2165,8 @@ msgstr ""
 "añadiendo un componente alfa para la opacidad. <classname>Colormap</"
 "classname> se eliminó, junto con su molesto uso para asignar colores."
 
-#: C/gtkmm-tutorial-in.xml:647(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:694
 msgid ""
 "<classname>Gdk::Pixmap</classname> and <classname>Gdk::Bitmap</classname> "
 "were removed in favour of <classname>Gdk::Pixbuf</classname>."
@@ -1846,7 +2174,8 @@ msgstr ""
 "<classname>Gdk::Pixmap</classname> y <classname>Gdk::Bitmap</classname> se "
 "eliminaron en favor de <classname>Gdk::Pixbuf</classname>."
 
-#: C/gtkmm-tutorial-in.xml:649(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:696
 msgid ""
 "<classname>Gdk::Drawable</classname> was removed, with its methods moving "
 "into <classname>Gdk::Window</classname>."
@@ -1854,7 +2183,8 @@ msgstr ""
 "<classname>Gdk::Drawable</classname> se quitó, y sus métodos se movieron a "
 "<classname>Gdk::Window</classname>."
 
-#: C/gtkmm-tutorial-in.xml:651(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:698
 msgid ""
 "We now use std::vector in several methods instead of the intermediate "
 "*Handle types to make the API clearer."
@@ -1862,15 +2192,22 @@ msgstr ""
 "Ahora se usa std::vector en muchos métodos en vez de los tipos intermedios "
 "*Handle para hacer a la API más clara."
 
-#: C/gtkmm-tutorial-in.xml:656(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:703
+#, fuzzy
+#| msgid ""
+#| "All deprecated API was removed in <application>gtkmm</application> 3.0, "
+#| "though there will be new deprecations in future versions."
 msgid ""
 "All deprecated API was removed in <application>gtkmm</application> 3.0, "
-"though there will be new deprecations in future versions."
+"though there have been new deprecations in later <application>gtkmm</"
+"application> 3.x versions."
 msgstr ""
 "Toda la API obsoleta se quitó en <application>gtkmm</application> 3.0, sin "
 "embargo, se marcarán más partes como obsoletas en versiones futuras."
 
-#: C/gtkmm-tutorial-in.xml:658(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:705
 #, fuzzy
 #| msgid ""
 #| "As a first step to porting your source code to <application>gtkmm</"
@@ -1898,22 +2235,473 @@ msgstr ""
 "gnome.org/gtkmm/PortingToGtkmm3\">página de la wiki de portar de gtkmm 3</"
 "ulink> para obtener más detalles."
 
-#: C/gtkmm-tutorial-in.xml:663(title)
-msgid "Buttons"
-msgstr "Botones"
-
-#: C/gtkmm-tutorial-in.xml:665(para)
-msgid "<application>gtkmm</application> provides four basic types of buttons:"
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:710
+#, fuzzy
+#| msgid ""
+#| "Installing <application>gtkmm</application> with <application>jhbuild</"
+#| "application>"
+msgid ""
+"Changes in <application>gtkmm</application>-4.0 and "
+"<application>glibmm-2.68</application>"
 msgstr ""
-"<application>gtkmm</application> proporciona cuatro tipos básicos de botones:"
-
-#: C/gtkmm-tutorial-in.xml:672(term)
-msgid "Push-Buttons"
-msgstr "Pulsadores"
+"Instalar <application>gtkmm</application> con <application>jhbuild</"
+"application>"
 
-#: C/gtkmm-tutorial-in.xml:674(para)
-msgid ""
-"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.";
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:712
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application>-3.0 is a new version of the "
+#| "<application>gtkmm</application> API that installs in parallel with the "
+#| "older <application>gtkmm</application>-2.4 API. The last version of the "
+#| "<application>gtkmm</application>-2.4 API was <application>gtkmm</"
+#| "application> 2.24. <application>gtkmm</application> 3 has no major "
+#| "fundamental differences to <application>gtkmm</application> 2 but does "
+#| "make several small changes that were not possible while maintaining "
+#| "binary compatibility. If you never used the <application>gtkmm</"
+#| "application>-2.4 API then you can safely ignore this chapter."
+msgid ""
+"<application>gtkmm</application>-4.0 is a new version of the "
+"<application>gtkmm</application> API that installs in parallel with the "
+"older <application>gtkmm</application>-2.4 and <application>gtkmm</"
+"application>-3.0 APIs. The last version of the <application>gtkmm</"
+"application>-3.0 API is <application>gtkmm</application> 3.24. "
+"<application>gtkmm</application> 4 has no major fundamental differences to "
+"<application>gtkmm</application> 3 but does make several changes (both small "
+"and large ones) that were not possible while maintaining binary "
+"compatibility. If you never used the <application>gtkmm</application>-3.0 "
+"API then you can safely ignore this chapter."
+msgstr ""
+"<application>gtkmm</application>-3.0 es una versión nueva de la API "
+"<application>gtkmm</application> que se instala en paralelo con la API "
+"<application>gtkmm</application>-2.4, más vieja. La última versión de la API "
+"<application>gtkmm</application>-2.4 fue <application>gtkmm</application> "
+"2.24. <application>gtkmm</application> 3 no tiene diferencias fundamentales "
+"importantes con respecto a <application>gtkmm</application> 2, pero hace "
+"varios cambios pequeños que no fueron posibles mientras se mantenía la "
+"compatibilidad de los binarios. Si nunca ha usado la API <application>gtkmm</"
+"application>-2.4, entonces puede ignorar con seguridad este capítulo."
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:720
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> 3's library is called "
+#| "<literal>libgtkmm-3.0</literal> rather than <literal>libgtkmm-2.4</"
+#| "literal> and installs its headers in a similarly-versioned directory, so "
+#| "your pkg-config check should ask for <literal>gtkmm-3.0</literal> rather "
+#| "than <literal>gtkmm-2.4</literal>."
+msgid ""
+"<application>gtkmm</application> 4's library is called "
+"<literal>libgtkmm-4.0</literal> rather than <literal>libgtkmm-3.0</literal> "
+"and installs its headers in a similarly-versioned directory, so your "
+"<application>pkg-config</application> check should ask for "
+"<literal>gtkmm-4.0</literal> rather than <literal>gtkmm-3.0</literal>."
+msgstr ""
+"La biblioteca de <application>gtkmm</application> 3 se llama "
+"<literal>libgtkmm-3.0</literal>, en vez de <literal>libgtkmm-2.4</literal> e "
+"instala sus archivos de cabecera en una carpeta versionada similarmente, por "
+"lo que su verificación pkg-config debería buscar <literal>gtkmm-3.0</"
+"literal> en vez de <literal>gtkmm-2.4</literal>."
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:726
+msgid ""
+"<application>gtkmm</application>-4.0 is used in combination with "
+"<application>glibmm-2.68</application>, which sets the global locale for "
+"your program. The older <application>glibmm-2.4</application> does not do "
+"that, and <application>gtkmm</application>-3.0 does it only to some extent. "
+"What this means is briefly that if your <application>gtkmm</application>-3.0 "
+"program contains a call to <function>std::locale::global(std::locale(\"\"))</"
+"function>, you can probably remove it. If you don't want "
+"<application>glibmm</application> or <application>gtkmm</application> to set "
+"the global locale for you, you should add a call to <function>Glib::"
+"set_init_to_users_preferred_locale(false)</function> before any call to "
+"<function>Glib::init()</function> or <methodname>Gtk::Application::create()</"
+"methodname>."
+msgstr ""
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:736
+msgid ""
+"<ulink url=\"http://developer.gnome.org/glibmm/unstable/namespaceGlib.html";
+"\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/glibmm/unstable/namespaceGlib.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:738
+msgid ""
+"There are lots and lots of differences between <application>gtkmm</"
+"application>-3.0 and <application>gtkmm</application>-4.0. The following "
+"lists are not complete."
+msgstr ""
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:741
+#, fuzzy
+#| msgid ""
+#| "Installing <application>gtkmm</application> with <application>jhbuild</"
+#| "application>"
+msgid ""
+"Some new classes were added in <application>gtkmm</application> 4 and "
+"<application>glibmm</application> 2.68:"
+msgstr ""
+"Instalar <application>gtkmm</application> con <application>jhbuild</"
+"application>"
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:744
+msgid ""
+"<classname>Glib::ExtraClassInit</classname> and <classname>Gtk::Snapshot</"
+"classname>: These classes are needed only for writing custom widgets. See "
+"the <link linkend=\"sec-custom-widgets\">Custom Widgets</link> section."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:747
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::Adjustment</classname> and <classname>IconSet</classname> "
+#| "and <classname>Gdk::Cursor</classname> are now used via <classname>Glib::"
+#| "RefPtr</classname>."
+msgid ""
+"<classname>Gtk::EventControllerKey</classname>, <classname>Gtk::"
+"EventControllerMotion</classname>, <classname>Gtk::EventControllerScroll</"
+"classname> and <classname>Gtk::GestureStylus</classname>"
+msgstr ""
+"<classname>Gtk::Adjustment</classname>, <classname>IconSet</classname> y "
+"<classname>Gdk::Cursor</classname> se usan ahora a través de "
+"<classname>Glib::RefPtr</classname>."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:750
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::Adjustment</classname> and <classname>IconSet</classname> "
+#| "and <classname>Gdk::Cursor</classname> are now used via <classname>Glib::"
+#| "RefPtr</classname>."
+msgid ""
+"<classname>Gdk::Paintable</classname>, <classname>Gdk::Texture</classname>, "
+"<classname>Gtk::Picture</classname> and <classname>Gtk::WidgetPaintable</"
+"classname>"
+msgstr ""
+"<classname>Gtk::Adjustment</classname>, <classname>IconSet</classname> y "
+"<classname>Gdk::Cursor</classname> se usan ahora a través de "
+"<classname>Glib::RefPtr</classname>."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:753
+#, fuzzy
+#| msgid ""
+#| "<classname>Gdk::Pixmap</classname> and <classname>Gdk::Bitmap</classname> "
+#| "were removed in favour of <classname>Gdk::Pixbuf</classname>."
+msgid ""
+"<classname>Gdk::Window</classname> has been renamed to <classname>Gdk::"
+"Surface</classname>. (<classname>Gtk::Window</classname> keeps its name.)"
+msgstr ""
+"<classname>Gdk::Pixmap</classname> y <classname>Gdk::Bitmap</classname> se "
+"eliminaron en favor de <classname>Gdk::Pixbuf</classname>."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:755
+#, fuzzy
+#| msgid ""
+#| "<classname>Gdk::Pixmap</classname> and <classname>Gdk::Bitmap</classname> "
+#| "were removed in favour of <classname>Gdk::Pixbuf</classname>."
+msgid ""
+"<classname>Gdk::DrawContext</classname> and <classname>Gdk::CairoContext</"
+"classname> are new. <classname>Gdk::DrawingContext</classname> has been "
+"removed."
+msgstr ""
+"<classname>Gdk::Pixmap</classname> y <classname>Gdk::Bitmap</classname> se "
+"eliminaron en favor de <classname>Gdk::Pixbuf</classname>."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:757
+#, fuzzy
+#| msgid ""
+#| "<classname>Gdk::Drawable</classname> was removed, with its methods moving "
+#| "into <classname>Gdk::Window</classname>."
+msgid ""
+"<classname>Gtk::Clipboard</classname> has been replaced by the new "
+"<classname>Gdk::Clipboard</classname>."
+msgstr ""
+"<classname>Gdk::Drawable</classname> se quitó, y sus métodos se movieron a "
+"<classname>Gdk::Window</classname>."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:759
+#, fuzzy
+#| msgid ""
+#| "<classname>Gdk::Pixmap</classname> and <classname>Gdk::Bitmap</classname> "
+#| "were removed in favour of <classname>Gdk::Pixbuf</classname>."
+msgid ""
+"<classname>Gdk::DragContext</classname> has been split into <classname>Gdk::"
+"Drag</classname> and <classname>Gdk::Drop</classname>."
+msgstr ""
+"<classname>Gdk::Pixmap</classname> y <classname>Gdk::Bitmap</classname> se "
+"eliminaron en favor de <classname>Gdk::Pixbuf</classname>."
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:763
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> 3 also made several small changes to the "
+#| "API, which you will probably encounter when porting code that used "
+#| "<application>gtkmm</application>-2.4. Here is a short list:"
+msgid ""
+"There have also been several changes to the API, which you will probably "
+"encounter when porting code that used <application>gtkmm</application>-3.0 "
+"and <application>glibmm</application>-2.4. Here is a short list:"
+msgstr ""
+"<application>gtkmm</application> 3 también hizo varios cambios pequeños a la "
+"API, que probablemente encontrará cuando porte código que usaba "
+"<application>gtkmm</application>-2.4. Aquí hay una lista corta:"
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:768
+#, fuzzy
+#| msgid "Less C++ code is required."
+msgid "A C++17 compiler is required."
+msgstr "Se requiere menos código en C++."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:769
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::CellLayout</classname>, used by <classname>Gtk::IconView</"
+#| "classname>, <classname>Gtk::TreeView::Column</classname> and "
+#| "<classname>Gtk::ComboBox</classname>, now has a <classname>Gtk::CellArea</"
+#| "classname> which can be used to specify more details of how the "
+#| "<classname>CellRenderer</classname>s are arranged and aligned."
+msgid ""
+"<classname>Gtk::Button</classname>, <classname>Gtk::ToolButton</classname>, "
+"<classname>Gtk::MenuItem</classname> and <classname>Gtk::Switch</classname> "
+"implement the <classname>Gtk::Actionable</classname> interface instead of "
+"the removed <classname>Gtk::Activatable</classname> interface."
+msgstr ""
+"<classname>Gtk::CellLayout</classname>, usada por <classname>Gtk::IconView</"
+"classname>, <classname>Gtk::TreeView::Column</classname> y <classname>Gtk::"
+"ComboBox</classname> ahora tiene una <classname>Gtk::CellArea</classname>, "
+"que puede usarse para especificar más detalles acerca de cómo las "
+"<classname>CellRenderer</classname> se ordenan y alinean."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:773
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::Button</classname> is also a container so you could put "
+#| "any other widget, such as a <classname>Gtk::Image</classname> into it."
+msgid ""
+"<classname>Gtk::FontButton</classname> implements the <classname>Gtk::"
+"FontChooser</classname> interface."
+msgstr ""
+"<classname>Gtk::Button</classname> también es un contenedor, por lo que "
+"puede poner otro widget, como un <classname>Gtk::Image</classname> dentro de "
+"él."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:774
+msgid ""
+"<classname>Gtk::Widget</classname>: The <methodname>get_preferred_*_vfunc()</"
+"methodname>s have been replaced by <methodname>measure_vfunc()</methodname>. "
+"This change only affects custom widgets."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:777
+#, fuzzy
+#| msgid ""
+#| "<classname>Glib::StringArrayHandle</classname> or <classname>Glib::"
+#| "ArrayHandle&lt;Glib::ustring&gt;</classname>: Use <classname>std::"
+#| "vector&lt;Glib::ustring&gt;</classname>, <classname>std::list&lt;Glib::"
+#| "ustring&gt;</classname>, <type>const char*[]</type>, etc."
+msgid ""
+"<classname>sigc::slot</classname>s use the <classname>sigc::slot&lt;"
+"R(Args...)&gt;</classname> syntax. Example: <classname>sigc::slot&lt;"
+"void(int, int)&gt;</classname> instead of <classname>sigc::slot&lt;void, "
+"int, int&gt;</classname>."
+msgstr ""
+"<classname>Glib::StringArrayHandle</classname> o <classname>Glib::"
+"ArrayHandle&lt;Glib::ustring&gt;</classname>: usan <classname>std::vector&lt;"
+"Glib::ustring&gt;</classname>, <classname>std::list&lt;Glib::ustring&gt;</"
+"classname>, <type>const char*[]</type>, etc."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:779
+#, fuzzy
+#| msgid ""
+#| "The <classname>Gtk::TreeView</classname> widget can contain lists or "
+#| "trees of data, in columns."
+msgid ""
+"<classname>Gtk::DrawingArea</classname> uses a draw function instead of the "
+"draw signal."
+msgstr ""
+"El widget <classname>Gtk::TreeView</classname> puede contener listas o "
+"árboles de datos, en columnas."
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:780
+msgid ""
+"<classname>Glib::ArrayHandle</classname>, <classname>Glib::"
+"StringArrayHandle</classname>, <classname>Glib::ListHandle</classname> and "
+"<classname>Glib::SListHandle</classname> have been removed. They were used "
+"in <application>glibmm</application>-2.4, but not used in "
+"<application>gtkmm</application>-3.0. If you've ever used these classes, "
+"replace them with a standard C++ container, such as <classname>std::vector</"
+"classname>."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:784
+msgid "<classname>Gtk::Container</classname> has been removed."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:785
+msgid ""
+"<methodname>Gtk::Widget::show_all()</methodname> has been removed. The "
+"default value of <methodname>Gtk::Widget::property_visible()</methodname>has "
+"been changed from <literal>false</literal> to <literal>true</literal>."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:788
+msgid ""
+"All event signals have been removed from <classname>Gtk::Widget</classname>. "
+"In most cases you can use one of the subclasses of <classname>Gtk::"
+"EventController</classname> as a replacement. For instance, use "
+"<classname>Gtk::GestureMultiPress</classname> instead of "
+"<methodname>signal_button_press_event()</methodname> and "
+"<methodname>signal_button_release_event()</methodname>, and <classname>Gtk::"
+"EventControllerKey</classname> instead of "
+"<methodname>signal_key_press_event()</methodname> and "
+"<methodname>signal_key_release_event()</methodname>."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:795
+msgid ""
+"<classname>Glib::RefPtr</classname> is an alias for <classname>std::"
+"shared_ptr</classname>. If you make your own <classname>Glib::ObjectBase</"
+"classname>-derived classes with <methodname>create()</methodname> methods "
+"that return a <classname>Glib::RefPtr</classname>, you must use "
+"<methodname>Glib::make_refptr_for_instance()</methodname> in your "
+"<methodname>create()</methodname> methods."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:800
+msgid ""
+"<methodname>Gtk::Box::pack_start()</methodname> and <methodname>Gtk::Box::"
+"pack_end()</methodname> have been removed. Use the new <classname>Gtk::Box</"
+"classname> methods <methodname>append()</methodname>, <methodname>prepend()</"
+"methodname>, <methodname>insert_child_after()</methodname> and "
+"<methodname>insert_child_at_start()</methodname>."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:805
+msgid "<classname>Gtk::ButtonBox</classname> has been removed."
+msgstr ""
+
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:806
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::Style</classname> and <classname>Gtk::Rc</classname> were "
+#| "removed, replaced by <classname>Gtk::StyleContext</classname>, and "
+#| "<classname>Gtk::StyleProvider</classname>s, such as <classname>Gtk::"
+#| "CssProvider</classname>."
+msgid ""
+"<classname>Gtk::RadioButton</classname> and <classname>Gtk::"
+"RadioButtonGroup</classname> have been removed. Use <classname>Gtk::"
+"CheckButton</classname> or <classname>Gtk::ToggleButton</classname> with "
+"<methodname>set_group()</methodname>."
+msgstr ""
+"<classname>Gtk::Style</classname> y <classname>Gtk::Rc</classname> se "
+"quitaron y se reemplazaron por <classname>Gtk::StyleContext</classname>, y "
+"<classname>Gtk::StyleProvider</classname>, así como <classname>Gtk::"
+"CssProvider</classname>."
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:812
+#, fuzzy
+#| msgid ""
+#| "All deprecated API was removed in <application>gtkmm</application> 3.0, "
+#| "though there will be new deprecations in future versions."
+msgid ""
+"All deprecated API was removed in <application>gtkmm</application> 4.0 and "
+"<application>glibmm</application> 2.68, though there will be new "
+"deprecations in future versions."
+msgstr ""
+"Toda la API obsoleta se quitó en <application>gtkmm</application> 3.0, sin "
+"embargo, se marcarán más partes como obsoletas en versiones futuras."
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:815
+#, fuzzy
+#| msgid ""
+#| "As a first step to porting your source code to <application>gtkmm</"
+#| "application>-3.0; you should probably ensure that your application builds "
+#| "with the deprecated <application>gtkmm</application>-2.4; API disabled, "
+#| "by defining macro such as GTK_DISABLE_DEPRECATED. There are some "
+#| "autotools macros that can help with this by defining them optionally at "
+#| "build time. See the <ulink url=\"https://live.gnome.org/gtkmm/";
+#| "PortingToGtkmm3\">gtkmm 3 porting wiki page</ulink> for more details."
+msgid ""
+"As a first step to porting your source code to <application>gtkmm</"
+"application>-4.0 you should probably ensure that your application builds "
+"with the deprecated <application>gtkmm</application>-3.0 and "
+"<application>glibmm-2.4</application> API disabled, by defining the macros "
+"GTKMM_DISABLE_DEPRECATED, GDKMM_DISABLE_DEPRECATED, "
+"GLIBMM_DISABLE_DEPRECATED and GIOMM_DISABLE_DEPRECATED. There are some "
+"autotools macros that can help with this by defining them optionally at "
+"build time. See the <ulink url=\"https://wiki.gnome.org/Projects/gtkmm/";
+"PortingToGtkmm3\">Porting from gtkmm-2.4 to gtkmm-3.0</ulink> wiki page for "
+"more details."
+msgstr ""
+"Como un primer paso para portar su código fuente a <application>gtkmm</"
+"application>-3.0, probablemente deba asegurarse de que su aplicación se "
+"construye con la API obsoleta <application>gtkmm</application>-2.4 "
+"desactivada, definiendo una macro como GTK_DISABLE_DEPRECATED. Hay algunas "
+"macros de autotools que le pueden ayudar con esto mediante su definición "
+"opcional en tiempo de construcción. Consulte la <ulink url=\"https://live.";
+"gnome.org/gtkmm/PortingToGtkmm3\">página de la wiki de portar de gtkmm 3</"
+"ulink> para obtener más detalles."
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:823
+msgid ""
+"See also <ulink url=\"https://developer.gnome.org/gtk4/unstable/gtk-";
+"migrating-3-to-4.html\"> Migrating from GTK 3.x to GTK 4</ulink>."
+msgstr ""
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:829
+msgid "Buttons"
+msgstr "Botones"
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:831
+msgid "<application>gtkmm</application> provides four basic types of buttons:"
+msgstr ""
+"<application>gtkmm</application> proporciona cuatro tipos básicos de botones:"
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:838
+#, fuzzy
+#| msgid "Push-Buttons"
+msgid "Push buttons"
+msgstr "Pulsadores"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:840
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.";
 "html\"><classname>Gtk::Button</classname></ulink>. Standard buttons, usually "
 "marked with a label or picture. Pushing one triggers an action. See the "
 "<link linkend=\"sec-pushbuttons\">Button</link> section."
@@ -1924,11 +2712,13 @@ msgstr ""
 "una acción. Consulte la sección <link linkend=\"sec-pushbuttons\">botón</"
 "link>."
 
-#: C/gtkmm-tutorial-in.xml:681(term)
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:847
 msgid "Toggle buttons"
 msgstr "Botones conmutables"
 
-#: C/gtkmm-tutorial-in.xml:683(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:849
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1ToggleButton.html\"><classname>Gtk::ToggleButton</classname></"
@@ -1943,17 +2733,29 @@ msgstr ""
 "presionar. Puede ser útil como conmutador de encendido/apagado. Consulte la "
 "sección <link linkend=\"sec-toggle-buttons\">botón conmutador</link>."
 
-#: C/gtkmm-tutorial-in.xml:691(term)
-msgid "Checkboxes"
-msgstr "Casillas de verificación"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:857
+#, fuzzy
+#| msgid "CheckButton"
+msgid "Check buttons"
+msgstr "Casilla de verificación"
 
-#: C/gtkmm-tutorial-in.xml:693(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:859
+#, fuzzy
+#| msgid ""
+#| "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+#| "classGtk_1_1CheckButton.html\"><classname>Gtk::CheckButton</classname></"
+#| "ulink>. These act like ToggleButtons, but show their state in small "
+#| "squares, with their label at the side. They should be used in most "
+#| "situations which require an on/off setting. See the <link linkend=\"sec-"
+#| "checkboxes\">CheckButton</link> section."
 msgid ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1CheckButton.html\"><classname>Gtk::CheckButton</classname></"
 "ulink>. These act like ToggleButtons, but show their state in small squares, "
 "with their label at the side. They should be used in most situations which "
-"require an on/off setting. See the <link linkend=\"sec-checkboxes"
+"require an on/off setting. See the <link linkend=\"sec-checkbuttons"
 "\">CheckButton</link> section."
 msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
@@ -1964,20 +2766,31 @@ msgstr ""
 "Consulte la sección<link linkend=\"sec-checkboxes\">casilla de verificación</"
 "link>."
 
-#: C/gtkmm-tutorial-in.xml:703(term)
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:869
 msgid "Radio buttons"
 msgstr "Botones de radio"
 
-#: C/gtkmm-tutorial-in.xml:705(para)
-msgid ""
-"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
-"classGtk_1_1RadioButton.html\"><classname>Gtk::RadioButton</classname></"
-"ulink>. Named after the station selectors on old car radios, these buttons "
-"are used in groups for options which are mutually exclusive. Pressing one "
-"causes all the others in its group to turn off. They are similar to "
-"CheckBoxes (a small widget with a label at the side), but usually look "
-"different. See the <link linkend=\"sec-radio-buttons\">RadioButton</link> "
-"section."
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:871
+#, fuzzy
+#| msgid ""
+#| "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+#| "classGtk_1_1RadioButton.html\"><classname>Gtk::RadioButton</classname></"
+#| "ulink>. Named after the station selectors on old car radios, these "
+#| "buttons are used in groups for options which are mutually exclusive. "
+#| "Pressing one causes all the others in its group to turn off. They are "
+#| "similar to CheckBoxes (a small widget with a label at the side), but "
+#| "usually look different. See the <link linkend=\"sec-radio-buttons"
+#| "\">RadioButton</link> section."
+msgid ""
+"Named after the station selectors on old car radios, these buttons are used "
+"in groups for options which are mutually exclusive. Pressing one causes all "
+"the others in its group to turn off. They are similar to ToggleButtons or "
+"CheckButtons (a small widget with a label at the side), but usually look "
+"different. There is no separate radio button class. Check buttons and toggle "
+"buttons can act as radio buttons. See the <link linkend=\"sec-radio-buttons"
+"\">Radio Button</link> section."
 msgstr ""
 "<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
 "classGtk_1_1RadioButton.html\"><classname>Gtk::RadioButton</classname></"
@@ -1989,25 +2802,29 @@ msgstr ""
 "Consulte la sección <link linkend=\"sec-radio-buttons\">botón de radio</"
 "link>."
 
-#: C/gtkmm-tutorial-in.xml:719(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:885
+#, fuzzy
+#| msgid ""
+#| "Note that, due to GTK+'s theming system, the appearance of these widgets "
+#| "will vary. In the case of checkboxes and radio buttons, they may vary "
+#| "considerably."
 msgid ""
-"Note that, due to GTK+'s theming system, the appearance of these widgets "
-"will vary. In the case of checkboxes and radio buttons, they may vary "
+"Note that, due to GTK's theming system, the appearance of these widgets will "
+"vary. In the case of check buttons and radio buttons, they may vary "
 "considerably."
 msgstr ""
 "Tenga en cuenta que, debido a sistema de tema de GTK+, las apariencia de "
 "estos widgets variará. En el caso de las casillas y de los botones de radio, "
 "variará considerablemente."
 
-#: C/gtkmm-tutorial-in.xml:726(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:892
 msgid "Button"
 msgstr "Botón"
 
-#: C/gtkmm-tutorial-in.xml:728(title)
-msgid "Constructors"
-msgstr "Constructores"
-
-#: C/gtkmm-tutorial-in.xml:730(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:894
 msgid ""
 "There are two ways to create a Button. You can specify a label string in the "
 "<classname>Gtk::Button</classname> constructor, or set it later with "
@@ -2017,7 +2834,8 @@ msgstr ""
 "constructor de <classname>Gtk::Button</classname>, o establecerla más tarde "
 "con <methodname>set_label()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:736(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:900
 msgid ""
 "To define an accelerator key for keyboard navigation, place an underscore "
 "before one of the label's characters and specify <literal>true</literal> for "
@@ -2027,22 +2845,14 @@ msgstr ""
 "antes de uno de los caracteres y especifique <literal>true</literal> para el "
 "parámetro opcional <literal>mnemonic</literal>. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:738(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:902
 #, no-wrap
 msgid "Gtk::Button* pButton = new Gtk::Button(\"_Something\", true);"
 msgstr "Gtk::Button* pButton = new Gtk::Button(\"_Something\", true);"
 
-#: C/gtkmm-tutorial-in.xml:740(para)
-msgid ""
-"Stock items have been recommended for use in buttons. From "
-"<application>gtkmm</application>-3.10 they are deprecated. They should not "
-"be used in newly-written code. However, the documentation of <ulink url="
-"\"http://developer.gnome.org/gtkmm/unstable/namespaceGtk_1_1Stock.html";
-"\">namespace Gtk::Stock</ulink> shows recommended labels and named icons to "
-"show in buttons."
-msgstr ""
-
-#: C/gtkmm-tutorial-in.xml:747(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:904
 msgid ""
 "<classname>Gtk::Button</classname> is also a container so you could put any "
 "other widget, such as a <classname>Gtk::Image</classname> into it."
@@ -2051,92 +2861,75 @@ msgstr ""
 "puede poner otro widget, como un <classname>Gtk::Image</classname> dentro de "
 "él."
 
-#: C/gtkmm-tutorial-in.xml:756(title) C/gtkmm-tutorial-in.xml:868(title)
-#: C/gtkmm-tutorial-in.xml:973(title) C/gtkmm-tutorial-in.xml:1091(title)
-#: C/gtkmm-tutorial-in.xml:1148(title) C/gtkmm-tutorial-in.xml:1456(title)
-#: C/gtkmm-tutorial-in.xml:1521(title) C/gtkmm-tutorial-in.xml:1545(title)
-#: C/gtkmm-tutorial-in.xml:1576(title) C/gtkmm-tutorial-in.xml:1633(title)
-#: C/gtkmm-tutorial-in.xml:1673(title) C/gtkmm-tutorial-in.xml:1714(title)
-#: C/gtkmm-tutorial-in.xml:1748(title) C/gtkmm-tutorial-in.xml:1788(title)
-#: C/gtkmm-tutorial-in.xml:2087(title) C/gtkmm-tutorial-in.xml:2123(title)
-#: C/gtkmm-tutorial-in.xml:2159(title) C/gtkmm-tutorial-in.xml:2226(title)
-#: C/gtkmm-tutorial-in.xml:2266(title) C/gtkmm-tutorial-in.xml:3832(title)
-#: C/gtkmm-tutorial-in.xml:3900(title) C/gtkmm-tutorial-in.xml:3927(title)
-#: C/gtkmm-tutorial-in.xml:3950(title) C/gtkmm-tutorial-in.xml:3974(title)
-#: C/gtkmm-tutorial-in.xml:4006(title) C/gtkmm-tutorial-in.xml:4178(title)
-#: C/gtkmm-tutorial-in.xml:4322(title) C/gtkmm-tutorial-in.xml:4397(title)
-#: C/gtkmm-tutorial-in.xml:4469(title) C/gtkmm-tutorial-in.xml:4534(title)
-#: C/gtkmm-tutorial-in.xml:4776(title) C/gtkmm-tutorial-in.xml:5327(title)
-#: C/gtkmm-tutorial-in.xml:5807(title) C/gtkmm-tutorial-in.xml:5856(title)
-#: C/gtkmm-tutorial-in.xml:6411(title) C/gtkmm-tutorial-in.xml:6480(title)
-#: C/gtkmm-tutorial-in.xml:7116(title) C/gtkmm-tutorial-in.xml:7175(title)
-#: C/gtkmm-tutorial-in.xml:7418(title) C/gtkmm-tutorial-in.xml:8321(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:910
+#, fuzzy
+#| msgid ""
+#| "The <classname>Gtk::Button</classname> widget has the following signals, "
+#| "but most of the time you will just handle the <literal>clicked</literal> "
+#| "signal:"
+msgid ""
+"The <classname>Gtk::Button</classname> widget has the <literal>clicked</"
+"literal> signal which is emitted when the button is pressed and released."
+msgstr ""
+"El widget <classname>Gtk::Button</classname> tiene las siguientes señales, "
+"pero la mayor parte del tiempo sólo manejara la señal <literal>clicked</"
+"literal>:"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:915
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Button.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/title
+#. (itstool) path: sect1/title
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:917 C/index-in.docbook:970 C/index-in.docbook:1027
+#: C/index-in.docbook:1145 C/index-in.docbook:1202 C/index-in.docbook:1510
+#: C/index-in.docbook:1575 C/index-in.docbook:1599 C/index-in.docbook:1629
+#: C/index-in.docbook:1684 C/index-in.docbook:1724 C/index-in.docbook:1765
+#: C/index-in.docbook:1799 C/index-in.docbook:2085 C/index-in.docbook:2115
+#: C/index-in.docbook:2169 C/index-in.docbook:2209 C/index-in.docbook:3882
+#: C/index-in.docbook:3909 C/index-in.docbook:3932 C/index-in.docbook:3956
+#: C/index-in.docbook:3988 C/index-in.docbook:4166 C/index-in.docbook:4312
+#: C/index-in.docbook:4386 C/index-in.docbook:4458 C/index-in.docbook:4523
+#: C/index-in.docbook:4760 C/index-in.docbook:5260 C/index-in.docbook:5566
+#: C/index-in.docbook:5615 C/index-in.docbook:6178 C/index-in.docbook:6298
+#: C/index-in.docbook:6928 C/index-in.docbook:7001 C/index-in.docbook:7227
+#: C/index-in.docbook:8631
 msgid "Example"
 msgstr "Ejemplo"
 
-#: C/gtkmm-tutorial-in.xml:758(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:919
 msgid "This example creates a button with a picture and a label."
 msgstr "Este ejemplo crea un botón con una imagen y una etiqueta."
 
-#: C/gtkmm-tutorial-in.xml:763(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:924
 msgid "buttons example"
 msgstr "ejemplo de botones"
 
-#: C/gtkmm-tutorial-in.xml:775(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:930
 msgid ""
-"The <classname>Gtk::Button</classname> widget has the following signals, but "
-"most of the time you will just handle the <literal>clicked</literal> signal:"
-msgstr ""
-"El widget <classname>Gtk::Button</classname> tiene las siguientes señales, "
-"pero la mayor parte del tiempo sólo manejara la señal <literal>clicked</"
-"literal>:"
-
-#: C/gtkmm-tutorial-in.xml:783(literal)
-msgid "pressed"
-msgstr "pressed"
-
-#: C/gtkmm-tutorial-in.xml:785(para)
-msgid "Emitted when the button is pressed."
-msgstr "Emitida cuando se pulsa el botón."
-
-#: C/gtkmm-tutorial-in.xml:791(literal)
-msgid "released"
-msgstr "released"
-
-#: C/gtkmm-tutorial-in.xml:793(para)
-msgid "Emitted when the button is released."
-msgstr "Emitida cuando se suelta el botón."
-
-#: C/gtkmm-tutorial-in.xml:799(literal)
-msgid "clicked"
-msgstr "clicked"
-
-#: C/gtkmm-tutorial-in.xml:801(para)
-msgid "Emitted when the button is pressed and released."
-msgstr "Emitida cuando el botón se pulsa y se suelta."
-
-#: C/gtkmm-tutorial-in.xml:807(literal)
-msgid "enter"
-msgstr "enter"
-
-#: C/gtkmm-tutorial-in.xml:809(para)
-msgid "Emitted when the mouse pointer moves over the button's window."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buttons/button\">Source Code</ulink>"
 msgstr ""
-"Emitida cuando se mueve el puntero del ratón sobre el botón de la ventana."
-
-#: C/gtkmm-tutorial-in.xml:815(literal)
-msgid "leave"
-msgstr "leave"
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buttons/button\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:817(para)
-msgid "Emitted when the mouse pointer leaves the button's window."
-msgstr "Emitida cuando el puntero del ratón sale del botón de la ventana."
-
-#: C/gtkmm-tutorial-in.xml:829(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:937
 msgid "ToggleButton"
 msgstr "Botón Conmutable"
 
-#: C/gtkmm-tutorial-in.xml:831(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:939
 msgid ""
 "<classname>ToggleButton</classname>s are like normal <classname>Button</"
 "classname>s, but when clicked they remain activated, or pressed, until "
@@ -2146,7 +2939,8 @@ msgstr ""
 "classname> normales, pero cuando se pulsan quedan activados, o presionados, "
 "hasta que se vuelvan a pulsar."
 
-#: C/gtkmm-tutorial-in.xml:833(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:941
 msgid ""
 "To retrieve the state of the <classname>ToggleButton</classname>, you can "
 "use the <methodname>get_active()</methodname> method. This returns "
@@ -2162,7 +2956,8 @@ msgstr ""
 "Tenga en cuenta que, si hace esto, y el estado efectivamente cambia, hace "
 "que se emita la señal «clicked». Esto normalmente será lo que quiera."
 
-#: C/gtkmm-tutorial-in.xml:840(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:948
 msgid ""
 "You can use the <methodname>toggled()</methodname> method to toggle the "
 "button, rather than forcing it to be up or down: This switches the button's "
@@ -2172,26 +2967,36 @@ msgstr ""
 "botón, en vez de forzarlo a estar arriba o abajo: esto conmuta el estado del "
 "botón, y hace que se emita la señal <literal>toggled</literal>."
 
-#: C/gtkmm-tutorial-in.xml:845(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:953
 msgid ""
-"<classname>Gtk::ToggleButton</classname> is most useful as a base class for "
-"the <classname>Gtk::CheckButton</classname> and <classname>Gtk::RadioButton</"
-"classname> classes."
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1ToggleButton.html\">Reference</ulink>"
 msgstr ""
-"<classname>Gtk::ToggleButton</classname> es más útil como clase base para "
-"las clases <classname>Gtk::CheckButton</classname> y <classname>Gtk::"
-"RadioButton</classname>."
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1ToggleButton.html\">Referencia</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:856(title) C/gtkmm-tutorial-in.xml:871(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:958 C/index-in.docbook:973
 msgid "CheckButton"
 msgstr "Casilla de verificación"
 
-#: C/gtkmm-tutorial-in.xml:858(para)
-msgid ""
-"<classname>Gtk::CheckButton</classname> inherits from <classname>Gtk::"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:960
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::CheckButton</classname> inherits from <classname>Gtk::"
+#| "ToggleButton</classname>. The only real difference between the two is "
+#| "<classname>Gtk::CheckButton</classname>'s appearance. You can check, set, "
+#| "and toggle a checkbox using the same member methods as for "
+#| "<classname>Gtk::ToggleButton</classname>."
+msgid ""
+"<classname>Gtk::CheckButton</classname> inherits directly from "
+"<classname>Gtk::Widget</classname>. It is similar to <classname>Gtk::"
 "ToggleButton</classname>. The only real difference between the two is "
-"<classname>Gtk::CheckButton</classname>'s appearance. You can check, set, "
-"and toggle a checkbox using the same member methods as for <classname>Gtk::"
+"<classname>Gtk::CheckButton</classname>'s appearance. You can check and set "
+"a check button using the same member methods as for <classname>Gtk::"
 "ToggleButton</classname>."
 msgstr ""
 "<classname>Gtk::CheckButton</classname> hereda de <classname>Gtk::"
@@ -2200,87 +3005,93 @@ msgstr ""
 "establecer, y conmutar una casilla de verificación utilizando los mismos "
 "métodos miembro que para <classname>Gtk::ToggleButton</classname>."
 
-#: C/gtkmm-tutorial-in.xml:883(title) C/gtkmm-tutorial-in.xml:980(title)
-msgid "RadioButton"
-msgstr "Botón de radio"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:968
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1CheckButton.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1CheckButton.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:979
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buttons/checkbutton\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buttons/checkbutton\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:985
+#, fuzzy
+#| msgid "RadioButton"
+msgid "Radio Button"
+msgstr "Botón de radio"
 
-#: C/gtkmm-tutorial-in.xml:885(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:987
+#, fuzzy
+#| msgid ""
+#| "Like checkboxes, radio buttons also inherit from <classname>Gtk::"
+#| "ToggleButton</classname>, but these work in groups, and only one "
+#| "RadioButton in a group can be selected at any one time."
 msgid ""
-"Like checkboxes, radio buttons also inherit from <classname>Gtk::"
-"ToggleButton</classname>, but these work in groups, and only one RadioButton "
-"in a group can be selected at any one time."
+"There is no separate class for radio buttons. Check buttons and toggle "
+"buttons act as radio buttons when they form a group. Only one button in a "
+"group can be selected at any one time."
 msgstr ""
 "Al igual que las casillas de verificación, los botones de radio también "
 "heredan de <classname>Gtk::ToggleButton</classname>, pero trabajan en "
 "grupos, y sólo se puede seleccionar un un botón de radio en un grupo a la "
 "vez."
 
-#: C/gtkmm-tutorial-in.xml:891(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:993
 msgid "Groups"
 msgstr "Grupos"
 
-#: C/gtkmm-tutorial-in.xml:892(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:994
 msgid ""
-"There are two ways to set up a group of radio buttons. The first way is to "
-"create the buttons, and set up their groups afterwards. Only the first two "
-"constructors are used. In the following example, we make a new window class "
-"called <classname>RadioButtons</classname>, and then put three radio buttons "
-"in it:"
+"You create the buttons, and set up their group afterwards. In the following "
+"example, we put 3 radio buttons in a group:"
 msgstr ""
-"Hay dos maneras de establecer un grupo de botones de radio. La primera "
-"manera es crear los botones, y establecer sus grupos luego. Sólo los dos "
-"primeros constructores se usan. En el siguiente ejemplo, se crea una clase "
-"de ventana nueva llamada <classname>RadioButtons</classname> y luego se "
-"ubican tres botones de radio en ella:"
 
-#: C/gtkmm-tutorial-in.xml:900(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:999
 #, no-wrap
 msgid ""
-"class RadioButtons : public Gtk::Window\n"
-"{\n"
-"public:\n"
-"    RadioButtons();\n"
-"\n"
-"protected:\n"
-"    Gtk::RadioButton m_rb1, m_rb2, m_rb3;\n"
-"};\n"
 "\n"
-"RadioButtons::RadioButtons()\n"
-"  : m_rb1(\"button1\"),\n"
-"    m_rb2(\"button2\"),\n"
-"    m_rb3(\"button3\")\n"
-"{\n"
-"    Gtk::RadioButton::Group group = m_rb1.get_group();\n"
-"    m_rb2.set_group(group);\n"
-"    m_rb3.set_group(group);\n"
-"}"
+"auto rb1 = Gtk::make_managed&lt;Gtk::CheckButton&gt;(\"button1\");\n"
+"auto rb2 = Gtk::make_managed&lt;Gtk::CheckButton&gt;(\"button2\");\n"
+"auto rb3 = Gtk::make_managed&lt;Gtk::CheckButton&gt;(\"button3\");\n"
+"rb2-&gt;set_group(*rb1);\n"
+"rb3-&gt;set_group(*rb1);\n"
 msgstr ""
-"class RadioButtons : public Gtk::Window\n"
-"{\n"
-"public:\n"
-"    RadioButtons();\n"
-"\n"
-"protected:\n"
-"    Gtk::RadioButton m_rb1, m_rb2, m_rb3;\n"
-"};\n"
 "\n"
-"RadioButtons::RadioButtons()\n"
-"  : m_rb1(\"button1\"),\n"
-"    m_rb2(\"button2\"),\n"
-"    m_rb3(\"button3\")\n"
-"{\n"
-"    Gtk::RadioButton::Group group = m_rb1.get_group();\n"
-"    m_rb2.set_group(group);\n"
-"    m_rb3.set_group(group);\n"
-"}"
+"auto rb1 = Gtk::make_managed&lt;Gtk::CheckButton&gt;(\"button1\");\n"
+"auto rb2 = Gtk::make_managed&lt;Gtk::CheckButton&gt;(\"button2\");\n"
+"auto rb3 = Gtk::make_managed&lt;Gtk::CheckButton&gt;(\"button3\");\n"
+"rb2-&gt;set_group(*rb1);\n"
+"rb3-&gt;set_group(*rb1);\n"
 
-#: C/gtkmm-tutorial-in.xml:918(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1007
+#, fuzzy
+#| msgid ""
+#| "We told <application>gtkmm</application> to put all three "
+#| "<classname>RadioButton</classname>s in the same group by obtaining the "
+#| "group with <methodname>get_group()</methodname> and using "
+#| "<methodname>set_group()</methodname> to tell the other "
+#| "<classname>RadioButton</classname>s to share that group."
 msgid ""
 "We told <application>gtkmm</application> to put all three "
-"<classname>RadioButton</classname>s in the same group by obtaining the group "
-"with <methodname>get_group()</methodname> and using <methodname>set_group()</"
-"methodname> to tell the other <classname>RadioButton</classname>s to share "
-"that group."
+"<classname>CheckButton</classname>s in the same group by using "
+"<methodname>set_group()</methodname> to tell the other "
+"<classname>CheckButton</classname>s to share group with the first "
+"<classname>CheckButton</classname>."
 msgstr ""
 "Se indicó a <application>gtkmm</application> que colocase los tres "
 "<classname>RadioButton</classname> en el mismo grupo obteniéndolo con "
@@ -2288,105 +3099,73 @@ msgstr ""
 "methodname> para indicarle a los otros <classname>RadioButton</classname> "
 "que compartan ese grupo."
 
-#: C/gtkmm-tutorial-in.xml:927(programlisting)
-#, no-wrap
-msgid "m_rb2.set_group(m_rb1.get_group()); //doesn't work"
-msgstr "m_rb2.set_group(m_rb1.get_group()); //doesn't work"
-
-#: C/gtkmm-tutorial-in.xml:925(para)
-msgid ""
-"Note that you can't just do <placeholder-1/> because the group is modified "
-"by <methodname>set_group()</methodname> and therefore non-const."
-msgstr ""
-"Tenga en cuenta que no puede simplemente hacer <placeholder-1/> porque se "
-"modifica al grupo mediante <methodname>set_group()</methodname>, y por lo "
-"tanto, no es constante."
-
-#: C/gtkmm-tutorial-in.xml:933(para)
-msgid ""
-"The second way to set up radio buttons is to make a group first, and then "
-"add radio buttons to it. Here's an example:"
-msgstr ""
-"La segunda manera de establecer botones de radio es hacer primero un grupo y "
-"luego añadirle los botones a él. Aquí hay un ejemplo:"
-
-#: C/gtkmm-tutorial-in.xml:937(programlisting)
-#, no-wrap
-msgid ""
-"class RadioButtons : public Gtk::Window\n"
-"{\n"
-"public:\n"
-"    RadioButtons();\n"
-"};\n"
-"\n"
-"RadioButtons::RadioButtons()\n"
-"{\n"
-"    Gtk::RadioButton::Group group;\n"
-"    Gtk::RadioButton *m_rb1 = Gtk::manage(\n"
-"      new Gtk::RadioButton(group,\"button1\"));\n"
-"    Gtk::RadioButton *m_rb2 = manage(\n"
-"      new Gtk::RadioButton(group,\"button2\"));\n"
-"      Gtk::RadioButton *m_rb3 = manage(\n"
-"        new Gtk::RadioButton(group,\"button3\"));\n"
-"}"
-msgstr ""
-"class RadioButtons : public Gtk::Window\n"
-"{\n"
-"public:\n"
-"    RadioButtons();\n"
-"};\n"
-"\n"
-"RadioButtons::RadioButtons()\n"
-"{\n"
-"    Gtk::RadioButton::Group group;\n"
-"    Gtk::RadioButton *m_rb1 = Gtk::manage(\n"
-"      new Gtk::RadioButton(group,\"button1\"));\n"
-"    Gtk::RadioButton *m_rb2 = manage(\n"
-"      new Gtk::RadioButton(group,\"button2\"));\n"
-"      Gtk::RadioButton *m_rb3 = manage(\n"
-"        new Gtk::RadioButton(group,\"button3\"));\n"
-"}"
-
-#: C/gtkmm-tutorial-in.xml:954(para)
-msgid ""
-"We made a new group by simply declaring a variable, <literal>group</"
-"literal>, of type <classname>Gtk::RadioButton::Group</classname>. Then we "
-"made three radio buttons, using a constructor to make each of them part of "
-"<literal>group</literal>."
-msgstr ""
-"Se creó un grupo nuevo simplemente declarando una variable, <literal>group</"
-"literal>, del tipo <classname>Gtk::RadioButton::Group</classname>. Luego, se "
-"hicieron tres botones de radio, usando un constructor para hacer que cada "
-"uno sea parte de <literal>group</literal>."
-
-#: C/gtkmm-tutorial-in.xml:962(title) C/gtkmm-tutorial-in.xml:1418(title)
-#: C/gtkmm-tutorial-in.xml:4645(title)
+#. (itstool) path: sect2/title
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:1016 C/index-in.docbook:1472 C/index-in.docbook:4634
 msgid "Methods"
 msgstr "Métodos"
 
-#: C/gtkmm-tutorial-in.xml:963(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1017
+#, fuzzy
+#| msgid ""
+#| "<classname>RadioButtons</classname> are \"off\" when created; this means "
+#| "that when you first make a group of them, they will all be off. Don't "
+#| "forget to turn one of them on using <methodname>set_active()</methodname>:"
 msgid ""
-"<classname>RadioButtons</classname> are \"off\" when created; this means "
-"that when you first make a group of them, they will all be off. Don't forget "
-"to turn one of them on using <methodname>set_active()</methodname>:"
+"<classname>CheckButton</classname>s and <classname>ToggleButton</classname>s "
+"are \"off\" when created; this means that when you first make a group of "
+"them, they will all be off. Don't forget to turn one of them on using "
+"<methodname>set_active()</methodname>."
 msgstr ""
 "Los <classname>RadioButtons</classname> están «apagados» cuando se crean; "
 "esto significa que cuando hace un grupo de ellos, primero estarán todos "
 "apagados. No olvide encender uno de ellos usando <methodname>set_active()</"
 "methodname>:"
 
-#: C/gtkmm-tutorial-in.xml:974(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1023
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1RadioButton.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1RadioButton.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1028
+#, fuzzy
+#| msgid ""
+#| "The following example demonstrates the use of <classname>RadioButton</"
+#| "classname>s:"
 msgid ""
-"The following example demonstrates the use of <classname>RadioButton</"
-"classname>s:"
+"The following example demonstrates the use of grouped "
+"<classname>CheckButton</classname>s:"
 msgstr ""
 "El siguiente ejemplo muestra el uso de <classname>RadioButton</classname>:"
 
-#: C/gtkmm-tutorial-in.xml:996(title) C/gtkmm-tutorial-in.xml:1102(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1034
+msgid "RadioButton"
+msgstr "Botón de radio"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1040
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buttons/radiobutton\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buttons/radiobutton\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1050 C/index-in.docbook:1156
 msgid "Range Widgets"
 msgstr "Widgets de Rango"
 
-#: C/gtkmm-tutorial-in.xml:998(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:1052
 msgid ""
 "<classname>Gtk::Scale</classname> and <classname>Gtk::Scrollbar</classname> "
 "both inherit from <classname>Gtk::Range</classname> and share much "
@@ -2406,10 +3185,24 @@ msgstr ""
 "cantidad definida dependiendo del botón que se use. Este es el "
 "comportamiento normal de las barras de desplazamiento."
 
-#: C/gtkmm-tutorial-in.xml:1009(para)
-msgid ""
-"As will be explained in the <link linkend=\"chapter-adjustment\">Adjustment</"
-"link> section, all Range widgets are associated with a "
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:1063
+#, fuzzy
+#| msgid ""
+#| "As will be explained in the <link linkend=\"chapter-adjustment"
+#| "\">Adjustment</link> section, all Range widgets are associated with a "
+#| "<classname>Adjustment</classname> object. To change the lower, upper, and "
+#| "current values used by the widget you need to use the methods of its "
+#| "<classname>Adjustment</classname>, which you can get with the "
+#| "<methodname>get_adjustment()</methodname> method. The <classname>Range</"
+#| "classname> widgets' default constructors create an <classname>Adjustment</"
+#| "classname> automatically, or you can specify an existing "
+#| "<classname>Adjustment</classname>, maybe to share it with another widget. "
+#| "See the <link linkend=\"chapter-adjustment\">Adjustments</link> section "
+#| "for further details."
+msgid ""
+"As will be explained in the <link linkend=\"chapter-adjustment"
+"\">Adjustments</link> section, all Range widgets are associated with an "
 "<classname>Adjustment</classname> object. To change the lower, upper, and "
 "current values used by the widget you need to use the methods of its "
 "<classname>Adjustment</classname>, which you can get with the "
@@ -2432,14 +3225,31 @@ msgstr ""
 "sección <link linkend=\"chapter-adjustment\">ajuste</link> para obtener más "
 "detalles."
 
-#: C/gtkmm-tutorial-in.xml:1026(title)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:1077
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Range.html";
+"\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Range.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:1080
 msgid "Scrollbar Widgets"
 msgstr "Widgets de barras de desplazamiento"
 
-#: C/gtkmm-tutorial-in.xml:1028(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1082
+#, fuzzy
+#| msgid ""
+#| "These are standard scrollbars. They should be used only to scroll another "
+#| "widget, such as, a <classname>Gtk::Entry</classname>, or a "
+#| "<classname>Gtk::Viewport</classname>, though it's usually easier to use "
+#| "the <classname>Gtk::ScrolledWindow</classname> widget in most cases."
 msgid ""
 "These are standard scrollbars. They should be used only to scroll another "
-"widget, such as, a <classname>Gtk::Entry</classname>, or a <classname>Gtk::"
+"widget, such as a <classname>Gtk::Entry</classname> or a <classname>Gtk::"
 "Viewport</classname>, though it's usually easier to use the <classname>Gtk::"
 "ScrolledWindow</classname> widget in most cases."
 msgstr ""
@@ -2449,7 +3259,8 @@ msgstr ""
 "el widget <classname>Gtk::ScrolledWindow</classname> en la mayoría de los "
 "casos."
 
-#: C/gtkmm-tutorial-in.xml:1035(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1089
 msgid ""
 "The orientation of a <classname>Gtk::Scrollbar</classname> can be either "
 "horizontal or vertical."
@@ -2457,11 +3268,22 @@ msgstr ""
 "La orientación de una <classname>Gtk::Scrollbar</classname> puede ser "
 "horizontal o vertical."
 
-#: C/gtkmm-tutorial-in.xml:1045(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1094
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Scrollbar.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Scrollbar.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:1099
 msgid "Scale Widgets"
 msgstr "Widgets de Escala"
 
-#: C/gtkmm-tutorial-in.xml:1047(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1101
 msgid ""
 "<classname>Gtk::Scale</classname> widgets (or \"sliders\") allow the user to "
 "visually select and manipulate a value within a specific range. You might "
@@ -2476,7 +3298,8 @@ msgstr ""
 "color, o especificar la cantidad de minutos de inactividad antes de que "
 "aparezca un salvapantallas."
 
-#: C/gtkmm-tutorial-in.xml:1056(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1110
 msgid ""
 "As with <classname>Scrollbar</classname>s, the orientation can be either "
 "horizontal or vertical. The default constructor creates an "
@@ -2491,11 +3314,13 @@ msgstr ""
 "algunos detalles del <classname>Adjustment</classname> para obtener un "
 "comportamiento significativo."
 
-#: C/gtkmm-tutorial-in.xml:1065(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1119
 msgid "Useful methods"
 msgstr "Métodos útiles"
 
-#: C/gtkmm-tutorial-in.xml:1067(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1121
 msgid ""
 "<classname>Scale</classname> widgets can display their current value as a "
 "number next to the trough. By default they show the value, but you can "
@@ -2505,7 +3330,8 @@ msgstr ""
 "un número junto al canal. De manera predeterminada muestran el valor, pero "
 "puede cambiar esto con el método <methodname>set_draw_value()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1073(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1127
 msgid ""
 "The value displayed by a scale widget is rounded to one decimal point by "
 "default, as is the <literal>value</literal> field in its <classname>Gtk::"
@@ -2517,7 +3343,8 @@ msgstr ""
 "<classname>Gtk::Adjustment</classname>. Puede cambiar esto con el método "
 "<methodname>set_digits()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1080(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1134
 msgid ""
 "Also, the value can be drawn in different positions relative to the trough, "
 "specified by the <methodname>set_value_pos()</methodname> method."
@@ -2525,7 +3352,17 @@ msgstr ""
 "Además, pueden dibujar el valor en diferentes posiciones relativas al canal, "
 "especificadas por el método <methodname>set_value_pos()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1093(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1139
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Scale.html";
+"\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Scale.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1147
 msgid ""
 "This example displays a window with three range widgets all connected to the "
 "same adjustment, along with a couple of controls for adjusting some of the "
@@ -2538,19 +3375,39 @@ msgstr ""
 "que pueda ver cómo afectan la manera en la que estos widgets funcionan para "
 "el usuario."
 
-#: C/gtkmm-tutorial-in.xml:1115(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1162
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/range_widgets\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/range_widgets\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:1169
 msgid "Miscellaneous Widgets"
 msgstr "Widgets varios"
 
-#: C/gtkmm-tutorial-in.xml:1118(title) C/gtkmm-tutorial-in.xml:1158(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1172 C/index-in.docbook:1212
 msgid "Label"
 msgstr "Etiqueta"
 
-#: C/gtkmm-tutorial-in.xml:1120(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1174
+#, fuzzy
+#| msgid ""
+#| "Labels are the main method of placing non-editable text in windows, for "
+#| "instance to place a title next to a <classname>Entry</classname> widget. "
+#| "You can specify the text in the constructor, or later with the "
+#| "<methodname>set_text()</methodname> or <methodname>set_markup()</"
+#| "methodname> methods."
 msgid ""
 "Labels are the main method of placing non-editable text in windows, for "
-"instance to place a title next to a <classname>Entry</classname> widget. You "
-"can specify the text in the constructor, or later with the "
+"instance to place a title next to an <classname>Entry</classname> widget. "
+"You can specify the text in the constructor, or later with the "
 "<methodname>set_text()</methodname> or <methodname>set_markup()</methodname> "
 "methods."
 msgstr ""
@@ -2560,7 +3417,8 @@ msgstr ""
 "o más tarde con los métodos <methodname>set_text()</methodname> o "
 "<methodname>set_markup()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1127(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1181
 msgid ""
 "The width of the label will be adjusted automatically. You can produce multi-"
 "line labels by putting line breaks (\"\\n\") in the label string."
@@ -2569,7 +3427,8 @@ msgstr ""
 "con varias líneas poniendo saltos de línea («\\n») en la cadena de la "
 "etiqueta."
 
-#: C/gtkmm-tutorial-in.xml:1131(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1185
 msgid ""
 "The label text can be justified using the <methodname>set_justify()</"
 "methodname> method. The widget is also capable of word-wrapping, which can "
@@ -2580,14 +3439,23 @@ msgstr ""
 "ajustar el texto, lo que se puede activar con <methodname>set_line_wrap()</"
 "methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1137(para)
-msgid ""
-"Gtk::Label support some simple formatting, for instance allowing you to make "
-"some text bold, colored, or larger. You can do this by providing a string to "
-"<methodname>set_markup()</methodname>, using the <ulink url=\"http://";
-"developer.gnome.org/pango/unstable/PangoMarkupFormat.html\">Pango Markup "
-"syntax</ulink>. For instance, <code> &lt;b&gt;bold text&lt;/b&gt; and &lt;"
-"s&gt;strikethrough text&lt;/s&gt; </code> ."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1191
+#, fuzzy
+#| msgid ""
+#| "Gtk::Label support some simple formatting, for instance allowing you to "
+#| "make some text bold, colored, or larger. You can do this by providing a "
+#| "string to <methodname>set_markup()</methodname>, using the <ulink url="
+#| "\"http://developer.gnome.org/pango/unstable/PangoMarkupFormat.html";
+#| "\">Pango Markup syntax</ulink>. For instance, <code> &lt;b&gt;bold "
+#| "text&lt;/b&gt; and &lt;s&gt;strikethrough text&lt;/s&gt; </code> ."
+msgid ""
+"Gtk::Label supports some simple formatting, for instance allowing you to "
+"make some text bold, colored, or larger. You can do this by providing a "
+"string to <methodname>set_markup()</methodname>, using the <ulink url="
+"\"http://developer.gnome.org/pango/unstable/PangoMarkupFormat.html\";>Pango "
+"Markup syntax</ulink>. For instance, <code> &lt;b&gt;bold text&lt;/b&gt; and "
+"&lt;s&gt;strikethrough text&lt;/s&gt; </code> ."
 msgstr ""
 "Gtk::Label soporta formateado simple, por ejemplo, permitiéndole hacer que "
 "el texto se vea en negrita, coloreado, o más grande. Puede hacer esto "
@@ -2596,7 +3464,17 @@ msgstr ""
 "html\">sintaxis de marcado de Pango</ulink>. Por ejemplo, <code> &lt;b&gt;"
 "texto en negrita&lt;/b&gt; y &lt;s&gt;texto tachado&lt;/s&gt; </code> ."
 
-#: C/gtkmm-tutorial-in.xml:1149(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1200
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Label.html";
+"\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Label.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1203
 msgid ""
 "Below is a short example to illustrate these functions. This example makes "
 "use of the Frame widget to better demonstrate the label styles. (The Frame "
@@ -2612,15 +3490,28 @@ msgstr ""
 "<literal>m_Label_Normal</literal> aparece subrayado cuando pulsa la tecla "
 "<keycap>Alt</keycap>."
 
-#: C/gtkmm-tutorial-in.xml:1171(title) C/gtkmm-tutorial-in.xml:1228(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1218
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/label\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/label\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1225 C/index-in.docbook:1282
 msgid "Entry"
 msgstr "Entry"
 
-#: C/gtkmm-tutorial-in.xml:1174(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1228
 msgid "Simple Use"
 msgstr "Uso simple"
 
-#: C/gtkmm-tutorial-in.xml:1176(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1230
 msgid ""
 "Entry widgets allow the user to enter text. You can change the contents with "
 "the <methodname>set_text()</methodname> method, and read the current "
@@ -2630,7 +3521,8 @@ msgstr ""
 "cambiar el contenido con el método <methodname>set_text()</methodname>, y "
 "leer el contenido actual con el método <methodname>get_text()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1181(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1235
 msgid ""
 "Occasionally you might want to make an <classname>Entry</classname> widget "
 "read-only. This can be done by passing <literal>false</literal> to the "
@@ -2640,7 +3532,8 @@ msgstr ""
 "sólo lectura. Esto se puede hacer pasándole <literal>false</literal> al "
 "método <methodname>set_editable()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1187(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1241
 msgid ""
 "For the input of passwords, passphrases and other information you don't want "
 "echoed on the screen, calling <methodname>set_visibility()</methodname> with "
@@ -2650,20 +3543,37 @@ msgstr ""
 "quiera que aparezca en la pantalla, llamar a <methodname>set_visibility</"
 "methodname> con <literal>false</literal> hará que el texto permanezca oculto."
 
-#: C/gtkmm-tutorial-in.xml:1193(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1247
+#, fuzzy
+#| msgid ""
+#| "You might want to be notified whenever the user types in a text entry "
+#| "widget. <classname>Gtk::Entry</classname> provides two signals, "
+#| "<literal>activate</literal> and <literal>changed</literal>, for this "
+#| "purpose. <literal>activate</literal> is emitted when the user presses the "
+#| "Enter key in a text-entry widget; <literal>changed</literal> is emitted "
+#| "when the text in the widget changes. You can use these, for instance, to "
+#| "validate or filter the text the user types. Moving the keyboard focus to "
+#| "another widget may also signal that the user has finished entering text. "
+#| "The <literal>focus_out_event</literal> signal that <classname>Gtk::Entry</"
+#| "classname> inherits from <classname>Gtk::Widget</classname> can notify "
+#| "you when that happens. The <link linkend=\"sec-comboboxentry\">ComboBox "
+#| "with an Entry</link> section contains example programs that use these "
+#| "signals."
 msgid ""
 "You might want to be notified whenever the user types in a text entry "
 "widget. <classname>Gtk::Entry</classname> provides two signals, "
 "<literal>activate</literal> and <literal>changed</literal>, for this "
 "purpose. <literal>activate</literal> is emitted when the user presses the "
-"Enter key in a text-entry widget; <literal>changed</literal> is emitted when "
-"the text in the widget changes. You can use these, for instance, to validate "
-"or filter the text the user types. Moving the keyboard focus to another "
-"widget may also signal that the user has finished entering text. The "
-"<literal>focus_out_event</literal> signal that <classname>Gtk::Entry</"
-"classname> inherits from <classname>Gtk::Widget</classname> can notify you "
-"when that happens. The <link linkend=\"sec-comboboxentry\">ComboBox with an "
-"Entry</link> section contains example programs that use these signals."
+"<keycap>Enter</keycap> key in a text-entry widget; <literal>changed</"
+"literal> is emitted when the text in the widget changes. You can use these, "
+"for instance, to validate or filter the text the user types. Moving the "
+"keyboard focus to another widget may also signal that the user has finished "
+"entering text. The <literal>focus_out_event</literal> signal that "
+"<classname>Gtk::Entry</classname> inherits from <classname>Gtk::Widget</"
+"classname> can notify you when that happens. The <link linkend=\"sec-"
+"comboboxentry\">ComboBox with an Entry</link> section contains example "
+"programs that use these signals."
 msgstr ""
 "Tal vez quiera que se le notifique cuando el usuario escribe en un widget de "
 "entrada de texto. <classname>Gtk::Entry</classname> proporciona dos señales, "
@@ -2679,16 +3589,28 @@ msgstr ""
 "\"sec-comboboxentry\">«ComboBox» con una entrada</link> contiene programas "
 "de ejemplo que usan estas señales."
 
-#: C/gtkmm-tutorial-in.xml:1208(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1262
+#, fuzzy
+#| msgid ""
+#| "If you pass <literal>true</literal> to the "
+#| "<methodname>set_activates_default()</methodname> method, pressing Enter "
+#| "in the <classname>Gtk::Entry</classname> will activate the default widget "
+#| "for the window containing the <classname>Gtk::Entry</classname>. This is "
+#| "especially useful in dialog boxes. The default widget is usually one of "
+#| "the dialog buttons, which e.g. will close the dialog box. To set a widget "
+#| "as the default widget, use <methodname>Gtk::Widget::set_can_default()</"
+#| "methodname> and <methodname>Gtk::Widget::grab_default()</methodname>."
 msgid ""
 "If you pass <literal>true</literal> to the "
-"<methodname>set_activates_default()</methodname> method, pressing Enter in "
-"the <classname>Gtk::Entry</classname> will activate the default widget for "
-"the window containing the <classname>Gtk::Entry</classname>. This is "
-"especially useful in dialog boxes. The default widget is usually one of the "
-"dialog buttons, which e.g. will close the dialog box. To set a widget as the "
-"default widget, use <methodname>Gtk::Widget::set_can_default()</methodname> "
-"and <methodname>Gtk::Widget::grab_default()</methodname>."
+"<methodname>set_activates_default()</methodname> method, pressing "
+"<keycap>Enter</keycap> in the <classname>Gtk::Entry</classname> will "
+"activate the default widget for the window containing the <classname>Gtk::"
+"Entry</classname>. This is especially useful in dialog boxes. The default "
+"widget is usually one of the dialog buttons, which e.g. will close the "
+"dialog box. To set a widget as the default widget, use <methodname>Gtk::"
+"Widget::set_can_default()</methodname> and <methodname>Gtk::Widget::"
+"grab_default()</methodname>."
 msgstr ""
 "Si le pasa <literal>true</literal> al método "
 "<methodname>set_activates_default()</methodname>, pulsar Intro en el "
@@ -2700,11 +3622,22 @@ msgstr ""
 "<methodname>Gtk::Widget::set_can_default()</methodname> y <methodname>Gtk::"
 "Widget::grab_default()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1220(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1272
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Entry.html";
+"\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Entry.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:1274
 msgid "Simple Entry Example"
 msgstr "Ejemplo simple de «Entry»"
 
-#: C/gtkmm-tutorial-in.xml:1221(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1275
 msgid ""
 "This example uses <classname>Gtk::Entry</classname>. It also has two "
 "<classname>CheckButton</classname>s, with which you can toggle the editable "
@@ -2714,13 +3647,30 @@ msgstr ""
 "<classname>CheckButton</classname>, con los que puede conmutar las opciones "
 "«editable» y «visible»."
 
-#: C/gtkmm-tutorial-in.xml:1241(title) C/gtkmm-tutorial-in.xml:1275(title)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1288
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/entry/simple\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/entry/simple\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1295 C/index-in.docbook:1329
 msgid "Entry Completion"
 msgstr "Completado de «Entry»"
 
-#: C/gtkmm-tutorial-in.xml:1242(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1296
+#, fuzzy
+#| msgid ""
+#| "A <classname>Entry</classname> widget can offer a drop-down list of pre-"
+#| "existing choices based on the first few characters typed by the user. For "
+#| "instance, a search dialog could suggest text from previous searches."
 msgid ""
-"A <classname>Entry</classname> widget can offer a drop-down list of pre-"
+"An <classname>Entry</classname> widget can offer a drop-down list of pre-"
 "existing choices based on the first few characters typed by the user. For "
 "instance, a search dialog could suggest text from previous searches."
 msgstr ""
@@ -2729,9 +3679,16 @@ msgstr ""
 "por el usuario. Por ejemplo, un cuadro de diálogo de búsqueda podría sugerir "
 "el texto de búsquedas anteriores."
 
-#: C/gtkmm-tutorial-in.xml:1247(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1301
+#, fuzzy
+#| msgid ""
+#| "To enable this functionality, you must create a "
+#| "<classname>EntryCompletion</classname> object, and provide it to the "
+#| "<classname>Entry</classname> widget via the <methodname>set_completion()</"
+#| "methodname> method."
 msgid ""
-"To enable this functionality, you must create a <classname>EntryCompletion</"
+"To enable this functionality, you must create an <classname>EntryCompletion</"
 "classname> object, and provide it to the <classname>Entry</classname> widget "
 "via the <methodname>set_completion()</methodname> method."
 msgstr ""
@@ -2739,7 +3696,8 @@ msgstr ""
 "classname> y proporcióneselo al widget <classname>Entry</classname> mediante "
 "el método <methodname>set_completion()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1252(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1306
 msgid ""
 "The <classname>EntryCompletion</classname> may use a <classname>TreeModel</"
 "classname> containing possible entries, specified with "
@@ -2753,7 +3711,8 @@ msgstr ""
 "<methodname>set_text_column()</methodname> para especificar cuál de las "
 "columnas de su modelo debe usarse para las posibles entradas de texto."
 
-#: C/gtkmm-tutorial-in.xml:1258(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1312
 msgid ""
 "Alternatively, if a complete list of possible entries would be too large or "
 "too inconvenient to generate, a callback slot may instead be specified with "
@@ -2765,11 +3724,22 @@ msgstr ""
 "para una retrollamada con <methodname>set_match_func()</methodname>. Esto "
 "también es útil si no desea usar el principio de la cadena."
 
-#: C/gtkmm-tutorial-in.xml:1266(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1318
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1EntryCompletion.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1EntryCompletion.html\">Referencia</ulink>"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:1320
 msgid "Entry Completion Example"
 msgstr "Ejemplo de completado de «Entry»"
 
-#: C/gtkmm-tutorial-in.xml:1267(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1321
 msgid ""
 "This example creates a <classname>Gtk::EntryCompletion</classname> and "
 "associates it with a <classname>Gtk::Entry</classname> widget. The "
@@ -2781,11 +3751,22 @@ msgstr ""
 "TreeModel</classname> de entradas posibles para el completado y algunas "
 "acciones adicionales."
 
-#: C/gtkmm-tutorial-in.xml:1287(title)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1335
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/entry/completion\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/entry/completion\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1341
 msgid "Entry Icons"
 msgstr "Iconos de «Entry»"
 
-#: C/gtkmm-tutorial-in.xml:1288(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1342
 #, fuzzy
 #| msgid ""
 #| "An <classname>Entry</classname> widget can show an icon at the start or "
@@ -2809,11 +3790,13 @@ msgstr ""
 "responder al usuario que pulsa el icono manejando la señal "
 "<methodname>signal_icon_press</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1295(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:1349
 msgid "Entry Icon Example"
 msgstr "Ejemplo de icono de «Entry»"
 
-#: C/gtkmm-tutorial-in.xml:1296(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1350
 msgid ""
 "This example shows a <classname>Gtk::Entry</classname> widget with a named "
 "search icon, and prints text to the terminal when the icon is pressed."
@@ -2822,15 +3805,27 @@ msgstr ""
 "icono de búsqueda del almacén, e imprime texto en la terminal cuando se "
 "pulsa el icono."
 
-#: C/gtkmm-tutorial-in.xml:1302(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1356
 msgid "Entry with Icon"
 msgstr "«Entry» con icono"
 
-#: C/gtkmm-tutorial-in.xml:1314(title)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1362
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/entry/icon\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/entry/icon\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1368
 msgid "Entry Progress"
 msgstr "«Entry» de progreso"
 
-#: C/gtkmm-tutorial-in.xml:1315(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1369
 msgid ""
 "An <classname>Entry</classname> widget can show a progress bar inside the "
 "text area, under the entered text. The progress bar will be shown if the "
@@ -2842,11 +3837,13 @@ msgstr ""
 "se mostrará si se llama a los métodos <methodname>set_progress_fraction()</"
 "methodname> o <methodname>set_progress_pulse_step()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1320(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:1374
 msgid "Entry Progress Example"
 msgstr "Ejemplo de «Entry» de progreso"
 
-#: C/gtkmm-tutorial-in.xml:1321(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1375
 msgid ""
 "This example shows a <classname>Gtk::Entry</classname> widget with a "
 "progress bar."
@@ -2854,15 +3851,28 @@ msgstr ""
 "Este ejemplo muestra un widget <classname>Gtk::Entry</classname> con una "
 "barra de progreso."
 
-#: C/gtkmm-tutorial-in.xml:1327(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1381
 msgid "Entry with Progress Bar"
 msgstr "«Entry» con barra de progreso"
 
-#: C/gtkmm-tutorial-in.xml:1341(title) C/gtkmm-tutorial-in.xml:1463(title)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1387
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/entry/progress\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/entry/progress\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1395 C/index-in.docbook:1517
 msgid "SpinButton"
 msgstr "SpinButton"
 
-#: C/gtkmm-tutorial-in.xml:1343(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1397
 #, fuzzy
 #| msgid ""
 #| "A <classname>SpinButton</classname> allows the user to select a value "
@@ -2885,7 +3895,8 @@ msgstr ""
 "suba y baje en toda la gama de valores posibles. El widget <classname>Entry</"
 "classname> también puede utilizarse para introducir un valor directamente."
 
-#: C/gtkmm-tutorial-in.xml:1351(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1405
 msgid ""
 "The value can have an adjustable number of decimal places, and the step size "
 "is configurable. <classname>SpinButton</classname>s have an 'auto-repeat' "
@@ -2899,51 +3910,73 @@ msgstr ""
 "puede, opcionalmente, causar que el valor cambie más rápidamente cuanto más "
 "tiempo se mantenga pulsada la flecha."
 
-#: C/gtkmm-tutorial-in.xml:1366(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1420
 msgid "<literal>value</literal>: value for the Spin Button"
 msgstr "<literal>value</literal>: valor del «SpinButton»"
 
-#: C/gtkmm-tutorial-in.xml:1372(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1426
 msgid "<literal>lower</literal>: lower range value"
 msgstr "<literal>lower</literal>: valor mínimo del rango"
 
-#: C/gtkmm-tutorial-in.xml:1378(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1432
 msgid "<literal>upper</literal>: upper range value"
 msgstr "<literal>upper</literal>: valor máximo del rango"
 
-#: C/gtkmm-tutorial-in.xml:1383(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1437
+#, fuzzy
+#| msgid ""
+#| "<literal>step_increment</literal>: value to increment/decrement when "
+#| "pressing mouse button 1 on a button"
 msgid ""
 "<literal>step_increment</literal>: value to increment/decrement when "
-"pressing mouse button 1 on a button"
+"pressing mouse button 1"
 msgstr ""
 "<literal>step_increment</literal>: valor en el que se incrementa/decrementa "
 "cuando se presiona un botón con el botón 1 del ratón"
 
-#: C/gtkmm-tutorial-in.xml:1390(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1444
+#, fuzzy
+#| msgid ""
+#| "<literal>page_increment</literal>: value to increment/decrement when "
+#| "pressing mouse button 2 on a button"
 msgid ""
 "<literal>page_increment</literal>: value to increment/decrement when "
-"pressing mouse button 2 on a button"
+"pressing mouse button 2"
 msgstr ""
 "<literal>page_increment</literal>: valor en el que se incrementa/decrementa "
 "cuando se presiona un botón con el botón 2 del ratón"
 
-#: C/gtkmm-tutorial-in.xml:1397(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1451
 msgid "<literal>page_size</literal>: unused"
 msgstr "<literal>page_size</literal>: no se usa"
 
-#: C/gtkmm-tutorial-in.xml:1358(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1412
+#, fuzzy
+#| msgid ""
+#| "<classname>SpinButton</classname>s use an <link linkend=\"chapter-"
+#| "adjustment\">Adjustment</link> object to hold information about the range "
+#| "of values. These Adjustment attributes are used by the Spin Button like "
+#| "so: <placeholder-1/>"
 msgid ""
 "<classname>SpinButton</classname>s use an <link linkend=\"chapter-adjustment"
 "\">Adjustment</link> object to hold information about the range of values. "
-"These Adjustment attributes are used by the Spin Button like so: "
-"<placeholder-1/>"
+"These Adjustment attributes are used by the Spin Button like so: <_:"
+"itemizedlist-1/>"
 msgstr ""
 "Los <classname>SpinButton</classname> usan un objeto <link linkend=\"chapter-"
 "adjustment\">Adjustment</link> para mantener la información del rango de "
 "valores. Los «SpinButton» usan estos atributos del «Adjustment» así: "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:1405(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1459
 msgid ""
 "Additionally, mouse button 3 can be used to jump directly to the "
 "<literal>upper</literal> or <literal>lower</literal> values."
@@ -2951,7 +3984,8 @@ msgstr ""
 "Además, el botón 3 del ratón se puede usar para saltar directamente a los "
 "valores <literal>upper</literal> o <literal>lower</literal>."
 
-#: C/gtkmm-tutorial-in.xml:1410(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1464
 msgid ""
 "The <classname>SpinButton</classname> can create a default "
 "<classname>Adjustment</classname>, which you can access via the "
@@ -2963,7 +3997,8 @@ msgstr ""
 "<methodname>get_adjustment()</methodname>, o puede especificar un "
 "<classname>Adjustment</classname> existente en el constructor."
 
-#: C/gtkmm-tutorial-in.xml:1420(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1474
 msgid ""
 "The number of decimal places can be altered using the "
 "<methodname>set_digits()</methodname> method."
@@ -2971,7 +4006,8 @@ msgstr ""
 "La cantidad de lugares decimales se puede alterar usando el método "
 "<methodname>set_digits()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1425(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1479
 msgid ""
 "You can set the spinbutton's value using the <methodname>set_value()</"
 "methodname> method, and retrieve it with <methodname>get_value()</"
@@ -2981,7 +4017,8 @@ msgstr ""
 "<methodname>set_value()</methodname>, y obtenerlo con "
 "<methodname>get_value()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1430(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1484
 msgid ""
 "The <methodname>spin()</methodname> method 'spins' the "
 "<classname>SpinButton</classname>, as if its increment or decrement button "
@@ -2993,7 +4030,8 @@ msgstr ""
 "especificar un <classname>Gtk::SpinType</classname> para especificar la "
 "dirección de su posición nueva."
 
-#: C/gtkmm-tutorial-in.xml:1437(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1491
 msgid ""
 "To prevent the user from typing non-numeric characters into the entry box, "
 "pass <literal>true</literal> to the <methodname>set_numeric()</methodname> "
@@ -3003,7 +4041,8 @@ msgstr ""
 "entrada, pásele <literal>true</literal> al método <methodname>set_numeric()</"
 "methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1442(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1496
 msgid ""
 "To make the <classname>SpinButton</classname> 'wrap' between its upper and "
 "lower bounds, use the <methodname>set_wrap()</methodname> method."
@@ -3011,7 +4050,8 @@ msgstr ""
 "Para que el <classname>SpinButton</classname> «salte» entre sus límites "
 "superior e inferior, use el método <methodname>set_wrap()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1447(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1501
 msgid ""
 "To force it to snap to the nearest <literal>step_increment</literal>, use "
 "<methodname>set_snap_to_ticks()</methodname>."
@@ -3019,15 +4059,37 @@ msgstr ""
 "Para forzarlo a encajar en el <literal>step_increment</literal> más cercano, "
 "use <methodname>set_snap_to_ticks()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1458(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1506
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1SpinButton.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1SpinButton.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1512
 msgid "Here's an example of a <classname>SpinButton</classname> in action:"
 msgstr "Aquí hay un ejemplo de un <classname>SpinButton</classname> en acción:"
 
-#: C/gtkmm-tutorial-in.xml:1476(title) C/gtkmm-tutorial-in.xml:1524(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1523
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/spinbutton\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/spinbutton\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1530 C/index-in.docbook:1578
 msgid "ProgressBar"
 msgstr "ProgressBar"
 
-#: C/gtkmm-tutorial-in.xml:1478(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1532
 msgid ""
 "Progress bars are used to show the status of an ongoing operation. For "
 "instance, a <classname>ProgressBar</classname> can show how much of a task "
@@ -3037,17 +4099,24 @@ msgstr ""
 "curso. Por ejemplo, una <classname>ProgressBar</classname> puede mostrar "
 "cuánto se ha completado de una tarea."
 
-#: C/gtkmm-tutorial-in.xml:1484(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1538
+#, fuzzy
+#| msgid ""
+#| "To change the value shown, use the <methodname>set_fraction()</"
+#| "methodname> method, passing a <type>double</type> between 0.0 and 1.0 to "
+#| "provide the new percentage."
 msgid ""
 "To change the value shown, use the <methodname>set_fraction()</methodname> "
 "method, passing a <type>double</type> between 0.0 and 1.0 to provide the new "
-"percentage."
+"fraction."
 msgstr ""
 "Para cambiar el valor mostrado, use el método <methodname>set_fraction()</"
 "methodname>, pasándole un <type>double</type> entre 0.0 y 1.0 para "
 "proporcionarle el porcentaje nuevo."
 
-#: C/gtkmm-tutorial-in.xml:1489(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1543
 msgid ""
 "A <classname>ProgressBar</classname> is horizontal and left-to-right by "
 "default, but you can change it to a vertical progress bar by using the "
@@ -3058,11 +4127,22 @@ msgstr ""
 "progreso vertical mediante el uso del método <methodname>set_orientation()</"
 "methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1498(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1549
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1ProgressBar.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1ProgressBar.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1552
 msgid "Activity Mode"
 msgstr "Modo de actividad"
 
-#: C/gtkmm-tutorial-in.xml:1499(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1553
 msgid ""
 "Besides indicating the amount of progress that has occured, the progress bar "
 "can also be used to indicate that there is some activity; this is done by "
@@ -3080,7 +4160,8 @@ msgstr ""
 "el progreso de una operación no se puede calcular como un rango de valores "
 "(por ejemplo, cuando se recibe un archivo de tamaño desconocido)."
 
-#: C/gtkmm-tutorial-in.xml:1509(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1563
 msgid ""
 "To do this, you need to call the <methodname>pulse()</methodname> method at "
 "regular intervals. You can also choose the step size, with the "
@@ -3090,19 +4171,36 @@ msgstr ""
 "intervalos regulares. También puede elegir el tamaño del paso con el método "
 "<methodname>set_pulse_step()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1515(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1569
+#, fuzzy
+#| msgid ""
+#| "The progress bar can also display a configurable text string within its "
+#| "trough, using the <methodname>set_text()</methodname> method."
 msgid ""
-"The progress bar can also display a configurable text string within its "
-"trough, using the <methodname>set_text()</methodname> method."
+"The progress bar can also display a configurable text string next to the "
+"bar, using the <methodname>set_text()</methodname> method."
 msgstr ""
 "La barra de progreso también puede mostrar una cadena de texto configurable "
 "en su canal, usando el método <methodname>set_text()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1538(title) C/gtkmm-tutorial-in.xml:1548(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1584
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/progressbar\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/progressbar\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1592 C/index-in.docbook:1602
 msgid "InfoBar"
 msgstr "InfoBar"
 
-#: C/gtkmm-tutorial-in.xml:1540(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1594
 msgid ""
 "An <classname>InfoBar</classname> may show small items of information or ask "
 "brief questions. Unlike a <classname>Dialog</classname>, it appears at the "
@@ -3115,19 +4213,46 @@ msgstr ""
 "nueva. Su API es muy similar a la del <link linkend=\"chapter-dialogs\">Gtk::"
 "Dialog</link>."
 
-#: C/gtkmm-tutorial-in.xml:1561(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1597
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1InfoBar.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1InfoBar.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1608
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/infobar\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/infobar\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:1615
 msgid "Tooltips"
 msgstr "Consejos"
 
-#: C/gtkmm-tutorial-in.xml:1563(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1617
+#, fuzzy
+#| msgid ""
+#| "Tooltips are the little information windows that pop up when you leave "
+#| "your pointer over a widget for a few seconds. Use "
+#| "<methodname>set_tooltip_text()</methodname> to set a text string as a "
+#| "tooltip on any <classname>Widget</classname>. <classname>Gtk::ToolItem</"
+#| "classname>s are not <classname>Widget</classname>s, but have the same "
+#| "method for convenience. <classname>Gtk::Tooltip</classname> is used for "
+#| "more advanced tooltip usage, such as showing an image as well as text."
 msgid ""
 "Tooltips are the little information windows that pop up when you leave your "
 "pointer over a widget for a few seconds. Use <methodname>set_tooltip_text()</"
 "methodname> to set a text string as a tooltip on any <classname>Widget</"
-"classname>. <classname>Gtk::ToolItem</classname>s are not <classname>Widget</"
-"classname>s, but have the same method for convenience. <classname>Gtk::"
-"Tooltip</classname> is used for more advanced tooltip usage, such as showing "
-"an image as well as text."
+"classname>. <classname>Gtk::Tooltip</classname> is used for more advanced "
+"tooltip usage, such as showing an image as well as text."
 msgstr ""
 "Los consejos son pequeñas ventanas de información que aparecen cuando deja "
 "su puntero sobre un widget por unos segundos. Use "
@@ -3137,27 +4262,56 @@ msgstr ""
 "mismo método por convenio. <classname>Gtk::Tooltip</classname> es para un "
 "uso de los consejos más avanzado, como mostrar una imagen junto al texto."
 
-#: C/gtkmm-tutorial-in.xml:1573(ulink)
-msgid "Widget Reference"
-msgstr "Referencia de widgets"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1626
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Widget.";
+"html\">Widget Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Widget.";
+"html\">Widget >Referencia</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:1574(ulink)
-msgid "Tooltip Reference"
-msgstr "Referencia de consejos"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1627
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Tooltip.";
+"html\">Tooltip Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Tooltip.";
+"html\">Tooltip >Referencia</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:1579(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1632
 msgid "Tooltip"
 msgstr "Consejo"
 
-#: C/gtkmm-tutorial-in.xml:1594(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1638
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/tooltips\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/tooltips\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:1647
 msgid "Container Widgets"
 msgstr "Widgets contenedores"
 
-#: C/gtkmm-tutorial-in.xml:1596(para)
-msgid ""
-"All container widgets derive from <classname>Gtk::Container</classname>, not "
-"always directly. Some container widgets, such as <classname>Gtk::Grid</"
-"classname> can hold many child widgets, so these typically have more complex "
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:1649
+#, fuzzy
+#| msgid ""
+#| "All container widgets derive from <classname>Gtk::Container</classname>, "
+#| "not always directly. Some container widgets, such as <classname>Gtk::"
+#| "Grid</classname> can hold many child widgets, so these typically have "
+#| "more complex interfaces. Others, such as <classname>Gtk::Frame</"
+#| "classname> contain only one child widget."
+msgid ""
+"Container widgets, like other widgets, derive from <classname>Gtk::Widget</"
+"classname>. Some container widgets, such as <classname>Gtk::Grid</classname> "
+"can hold many child widgets, so these typically have more complex "
 "interfaces. Others, such as <classname>Gtk::Frame</classname> contain only "
 "one child widget."
 msgstr ""
@@ -3167,15 +4321,24 @@ msgstr ""
 "lo que típicamente tienen interfaces más complejas. Otros, como "
 "<classname>Gtk::Frame</classname> contienen sólo un widget hijo."
 
-#: C/gtkmm-tutorial-in.xml:1605(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:1657
 msgid "Single-item Containers"
 msgstr "Contenedor de un sólo elemento"
 
-#: C/gtkmm-tutorial-in.xml:1607(para)
-msgid ""
-"The single-item container widgets derive from <classname>Gtk::Bin</"
-"classname>, which provides the <methodname>add()</methodname> and "
-"<methodname>remove()</methodname> methods for the child widget. Note that "
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1659
+#, fuzzy
+#| msgid ""
+#| "The single-item container widgets derive from <classname>Gtk::Bin</"
+#| "classname>, which provides the <methodname>add()</methodname> and "
+#| "<methodname>remove()</methodname> methods for the child widget. Note that "
+#| "<classname>Gtk::Button</classname> and <classname>Gtk::Window</classname> "
+#| "are technically single-item containers, but we have discussed them "
+#| "already elsewhere."
+msgid ""
+"Most single-item container widgets have <methodname>set_child()</methodname> "
+"and <methodname>unset_child()</methodname> methods for the child widget. "
 "<classname>Gtk::Button</classname> and <classname>Gtk::Window</classname> "
 "are technically single-item containers, but we have discussed them already "
 "elsewhere."
@@ -3187,7 +4350,8 @@ msgstr ""
 "técnicamente, contenedores de un sólo elemento, pero ya se ha hablado de "
 "ellos anteriormente."
 
-#: C/gtkmm-tutorial-in.xml:1615(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1666
 msgid ""
 "We also discuss the <classname>Gtk::Paned</classname> widget, which allows "
 "you to divide a window into two separate \"panes\". This widget actually "
@@ -3198,14 +4362,23 @@ msgstr ""
 "realidad, contiene dos widgets hijos, pero el número es fijo, por lo que "
 "parece apropiado."
 
-#: C/gtkmm-tutorial-in.xml:1622(title) C/gtkmm-tutorial-in.xml:1636(title)
+#. (itstool) path: sect2/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1673 C/index-in.docbook:1687
 msgid "Frame"
 msgstr "Marco"
 
-#: C/gtkmm-tutorial-in.xml:1624(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1675
+#, fuzzy
+#| msgid ""
+#| "Frames can enclose one or a group of widgets within a box, optionally "
+#| "with a title. For instance, you might place a group of "
+#| "<classname>RadioButton</classname>s or <classname>CheckButton</"
+#| "classname>s in a <classname>Frame</classname>."
 msgid ""
 "Frames can enclose one or a group of widgets within a box, optionally with a "
-"title. For instance, you might place a group of <classname>RadioButton</"
+"title. For instance, you might place a group of <classname>ToggleButton</"
 "classname>s or <classname>CheckButton</classname>s in a <classname>Frame</"
 "classname>."
 msgstr ""
@@ -3214,11 +4387,32 @@ msgstr ""
 "<classname>RadioButton</classname> o <classname>CheckButton</classname> en "
 "un <classname>Frame</classname>."
 
-#: C/gtkmm-tutorial-in.xml:1650(title) C/gtkmm-tutorial-in.xml:1676(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1682
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Frame.html";
+"\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Frame.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1693
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/frame\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/frame\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1701 C/index-in.docbook:1727
 msgid "Paned"
 msgstr "Con paneles"
 
-#: C/gtkmm-tutorial-in.xml:1652(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1703
 msgid ""
 "Panes divide a widget into two halves, separated by a moveable divider. The "
 "two halves (panes) can be oriented either horizontally (side by side) or "
@@ -3228,19 +4422,27 @@ msgstr ""
 "un divisor móvil. Las dos mitades (paneles) pueden orientarse tanto "
 "horizontal (lado a lado) como verticalmente (uno encima de otro)."
 
-#: C/gtkmm-tutorial-in.xml:1658(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1709
+#, fuzzy
+#| msgid ""
+#| "Unlike the other widgets in this section, pane widgets contain not one "
+#| "but two child widgets, one in each pane. Therefore, you should use "
+#| "<methodname>add1()</methodname> and <methodname>add2()</methodname> "
+#| "instead of the <methodname>add()</methodname> method."
 msgid ""
 "Unlike the other widgets in this section, pane widgets contain not one but "
 "two child widgets, one in each pane. Therefore, you should use "
-"<methodname>add1()</methodname> and <methodname>add2()</methodname> instead "
-"of the <methodname>add()</methodname> method."
+"<methodname>set_start_child()</methodname> and <methodname>set_end_child()</"
+"methodname> instead of a <methodname>set_child()</methodname> method."
 msgstr ""
 "A diferencia de los otros widgets en esta sección, los paneles no contienen "
 "un widget hijo, sino dos, uno en cada panel. Por lo tanto, debe usar los "
 "métodos <methodname>add1()</methodname> y <methodname>add2()</methodname> en "
 "vez de <methodname>add()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1665(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1716
 msgid ""
 "You can adjust the position of the divider using the "
 "<methodname>set_position()</methodname> method, and you will probably need "
@@ -3249,17 +4451,46 @@ msgstr ""
 "Puede ajustar la posición del divisor usando el método "
 "<methodname>set_position()</methodname>, y probablemente lo necesite."
 
-#: C/gtkmm-tutorial-in.xml:1689(title) C/gtkmm-tutorial-in.xml:1721(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1722
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Paned.html";
+"\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Paned.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1733
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/paned\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/paned\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1740 C/index-in.docbook:1772
 msgid "ScrolledWindow"
 msgstr "ScrolledWindow"
 
-#: C/gtkmm-tutorial-in.xml:1691(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1742
+#, fuzzy
+#| msgid ""
+#| "<classname>ScrolledWindow</classname> widgets create a scrollable area. "
+#| "You can insert any type of widget into a <classname>ScrolledWindow</"
+#| "classname> window, and it will be accessible regardless of its size by "
+#| "using the scrollbars. Note that <classname>ScrolledWindow</classname> is "
+#| "not a <classname>Gtk::Window</classname> despite the slightly misleading "
+#| "name."
 msgid ""
 "<classname>ScrolledWindow</classname> widgets create a scrollable area. You "
-"can insert any type of widget into a <classname>ScrolledWindow</classname> "
-"window, and it will be accessible regardless of its size by using the "
-"scrollbars. Note that <classname>ScrolledWindow</classname> is not a "
-"<classname>Gtk::Window</classname> despite the slightly misleading name."
+"can insert any type of widget into a <classname>ScrolledWindow</classname>, "
+"and it will be accessible regardless of its size by using the scrollbars. "
+"Note that <classname>ScrolledWindow</classname> is not a <classname>Gtk::"
+"Window</classname> despite the slightly misleading name."
 msgstr ""
 "Los widgets <classname>ScrolledWindow</classname> crean un área desplazable. "
 "Puede insertar cualquier tipo de widget en una ventana "
@@ -3268,16 +4499,29 @@ msgstr ""
 "<classname>ScrolledWindow</classname> no es un <classname>Gtk::Window</"
 "classname>, a pesar del nombre ligeramente confuso."
 
-#: C/gtkmm-tutorial-in.xml:1700(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1751
+#, fuzzy
+#| msgid ""
+#| "Scrolled windows have <emphasis>scrollbar policies</emphasis> which "
+#| "determine whether the <classname>Scrollbar</classname>s will be "
+#| "displayed. The policies can be set with the <methodname>set_policy()</"
+#| "methodname> method. The policy may be one of <literal>Gtk::"
+#| "POLICY_AUTOMATIC</literal> or <literal>Gtk::POLICY_ALWAYS</literal>. "
+#| "<literal>Gtk::POLICY_AUTOMATIC</literal> will cause the scrolled window "
+#| "to display the scrollbar only if the contained widget is larger than the "
+#| "visible area. <literal>Gtk::POLICY_ALWAYS</literal> will cause the "
+#| "scrollbar to be displayed always."
 msgid ""
 "Scrolled windows have <emphasis>scrollbar policies</emphasis> which "
 "determine whether the <classname>Scrollbar</classname>s will be displayed. "
 "The policies can be set with the <methodname>set_policy()</methodname> "
-"method. The policy may be one of <literal>Gtk::POLICY_AUTOMATIC</literal> or "
-"<literal>Gtk::POLICY_ALWAYS</literal>. <literal>Gtk::POLICY_AUTOMATIC</"
-"literal> will cause the scrolled window to display the scrollbar only if the "
-"contained widget is larger than the visible area. <literal>Gtk::"
-"POLICY_ALWAYS</literal> will cause the scrollbar to be displayed always."
+"method. The policy may be for instance <literal>Gtk::PolicyType::AUTOMATIC</"
+"literal> or <literal>Gtk::PolicyType::ALWAYS</literal>. <literal>Gtk::"
+"PolicyType::AUTOMATIC</literal> will cause the scrolled window to display "
+"the scrollbar only if the contained widget is larger than the visible area. "
+"<literal>Gtk::PolicyType::ALWAYS</literal> will cause the scrollbar to be "
+"displayed always."
 msgstr ""
 "Las ventanas desplazables tienen <emphasis>políticas de desplazamiento</"
 "emphasis> que determinan si se muestran las <classname>Scrollbar</classname> "
@@ -3289,7 +4533,17 @@ msgstr ""
 "que el área visible. <literal>Gtk::POLICY_ALWAYS</literal> hace que la barra "
 "de desplazamiento se muestre siempre."
 
-#: C/gtkmm-tutorial-in.xml:1716(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1763
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1ScrolledWindow.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1ScrolledWindow.html\">Referencia</ulink>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1767
 msgid ""
 "Here is a simple example that packs 100 toggle buttons into a "
 "ScrolledWindow. Try resizing the window to see the scrollbars react."
@@ -3298,11 +4552,23 @@ msgstr ""
 "ventana ScrolledWindow. Intente redimensionar la ventana para ver reaccionar "
 "a las barras de desplazamiento."
 
-#: C/gtkmm-tutorial-in.xml:1734(title) C/gtkmm-tutorial-in.xml:1756(title)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1778
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/scrolledwindow\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/scrolledwindow\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1785 C/index-in.docbook:1807
 msgid "AspectFrame"
 msgstr "AspectFrame"
 
-#: C/gtkmm-tutorial-in.xml:1736(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1787
 msgid ""
 "The <classname>AspectFrame</classname> widget looks like a <classname>Frame</"
 "classname> widget, but it also enforces the <emphasis>aspect ratio</"
@@ -3318,7 +4584,17 @@ msgstr ""
 "una fotografía sin permitirle al usuario distorsionarla horizontal o "
 "verticalmente cuando la redimensione."
 
-#: C/gtkmm-tutorial-in.xml:1749(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1796
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1AspectFrame.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1AspectFrame.html\">Referencia</ulink>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1800
 msgid ""
 "The following program uses a <classname>Gtk::AspectFrame</classname> to "
 "present a drawing area whose aspect ratio will always be 2:1, no matter how "
@@ -3328,64 +4604,71 @@ msgstr ""
 "presentar un área de dibujo cuya relación de aspecto siempre es 2:1, sin "
 "importar cómo el usuario redimensiona la ventana superior."
 
-#: C/gtkmm-tutorial-in.xml:1769(title) C/gtkmm-tutorial-in.xml:1795(title)
-msgid "Alignment"
-msgstr "Alignment"
-
-#: C/gtkmm-tutorial-in.xml:1771(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:1813
 msgid ""
-"The <classname>Alignment</classname> widget allows you to place a widget at "
-"a position and size relative to the size of the <classname>Alignment</"
-"classname> widget itself. For instance, it might be used to center a widget."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/aspectframe\">Source Code</ulink>"
 msgstr ""
-"El widget <classname>Alignment</classname> le permite poner un widget en una "
-"posición y tamaño relativos al tamaño del widget <classname>Alignment</"
-"classname> en sí. Por ejemplo, puede usarse para centrar un widget."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/aspectframe\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:1777(para)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1820
+#, fuzzy
+#| msgid "Single-item Containers"
+msgid "Other Single-item Containers"
+msgstr "Contenedor de un sólo elemento"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1822
 msgid ""
-"You need to specify the <classname>Alignment</classname>'s characteristics "
-"to the constructor, or to the <methodname>set()</methodname> method. In "
-"particular, you won't notice much effect unless you specify a number other "
-"than 1.0 for the <literal>xscale</literal> and <literal>yscale</literal> "
-"parameters, because 1.0 simply means that the child widget will expand to "
-"fill all available space."
+"There are other single-item containers. See the reference documentation for "
+"a complete list. Here are links to some example programs that show "
+"containers, which are not mentioned elsewhere in this tutorial."
 msgstr ""
-"Debe especificar las características del <classname>Alignment</classname> al "
-"constructor, o al método <methodname>set()</methodname>. En particular, no "
-"notará ningún efecto a menos que especifique un número distinto a 1.0 para "
-"los parámetros <literal>xscale</literal> e <literal>yscale</literal>, porque "
-"1.0 simplemente significa que el widget se expandirá hasta cubrir todo el "
-"espacio disponible."
 
-#: C/gtkmm-tutorial-in.xml:1789(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1828
 msgid ""
-"This example right-aligns a button in a window by using an "
-"<classname>Alignment</classname> widget."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/expander\">Source Code, Expander</ulink>"
 msgstr ""
-"Este ejemplo alinea a la derecha un botón en una ventana mediante el uso de "
-"un widget <classname>Alignment</classname>."
 
-#: C/gtkmm-tutorial-in.xml:1803(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1829
 msgid ""
-"See the <link linkend=\"sec-progressbar\">ProgressBar</link> section for "
-"another example that uses an <classname>Alignment</classname>."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/popover\">Source Code, Popover</ulink>"
 msgstr ""
-"Consulte la sección <link linkend=\"sec-progressbar\">ProgressBar</link> "
-"para ver otro ejemplo que usa un <classname>Alignment</classname>."
 
-#: C/gtkmm-tutorial-in.xml:1815(title)
-msgid "Multiple-item widgets"
-msgstr "Widgets de elementos múltiples"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:1836
+#, fuzzy
+#| msgid "Single-item Containers"
+msgid "Multiple-item Containers"
+msgstr "Contenedor de un sólo elemento"
 
-#: C/gtkmm-tutorial-in.xml:1817(para)
-msgid ""
-"Multiple-item widgets inherit from <classname>Gtk::Container</classname>; "
-"just as with <classname>Gtk::Bin</classname>, you use the <methodname>add()</"
-"methodname> and <methodname>remove()</methodname> methods to add and remove "
-"contained widgets. Unlike <methodname>Gtk::Bin::remove()</methodname>, "
-"however, the <methodname>remove()</methodname> method for <classname>Gtk::"
-"Container</classname> takes an argument, specifiying which widget to remove."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:1838
+#, fuzzy
+#| msgid ""
+#| "Multiple-item widgets inherit from <classname>Gtk::Container</classname>; "
+#| "just as with <classname>Gtk::Bin</classname>, you use the "
+#| "<methodname>add()</methodname> and <methodname>remove()</methodname> "
+#| "methods to add and remove contained widgets. Unlike <methodname>Gtk::Bin::"
+#| "remove()</methodname>, however, the <methodname>remove()</methodname> "
+#| "method for <classname>Gtk::Container</classname> takes an argument, "
+#| "specifiying which widget to remove."
+msgid ""
+"Multiple-item container widgets have other methods than "
+"<methodname>set_child()</methodname> and <methodname>unset_child()</"
+"methodname>. Different containers can have different methods for adding and "
+"removing child widgets. For instance, <classname>Gtk::Box</classname> has "
+"<methodname>append()</methodname> and <methodname>remove()</methodname> as "
+"well as other methods. The <methodname>remove()</methodname> method for "
+"multiple-item containers takes an argument, specifying which widget to "
+"remove."
 msgstr ""
 "Los widgets de elementos múltiples heredan de <classname>Gtk::Container</"
 "classname>; al igual que con <classname>Gtk::Bin</classname>, use los "
@@ -3395,11 +4678,13 @@ msgstr ""
 "<methodname>remove()</methodname> para <classname>Gtk::Container</classname> "
 "toma un argumento, especificando qué widget eliminar."
 
-#: C/gtkmm-tutorial-in.xml:1827(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1848
 msgid "Packing"
 msgstr "Empaquetado"
 
-#: C/gtkmm-tutorial-in.xml:1828(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1849
 msgid ""
 "You've probably noticed that <application>gtkmm</application> windows seem "
 "\"elastic\" - they can usually be stretched in many different ways. This is "
@@ -3410,7 +4695,8 @@ msgstr ""
 "maneras diferentes. Esto es así por el sistema de <emphasis>empaquetado de "
 "widgets</emphasis>."
 
-#: C/gtkmm-tutorial-in.xml:1833(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1854
 msgid ""
 "Many GUI toolkits require you to precisely place widgets in a window, using "
 "absolute positioning, often using a visual editor. This leads to several "
@@ -3420,7 +4706,8 @@ msgstr ""
 "widgets en una ventana, utilizando posicionamiento absoluto, a menudo usando "
 "un editor visual. Esto lleva a muchos problemas:"
 
-#: C/gtkmm-tutorial-in.xml:1840(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1861
 msgid ""
 "The widgets don't rearrange themselves when the window is resized. Some "
 "widgets are hidden when the window is made smaller, and lots of useless "
@@ -3430,7 +4717,8 @@ msgstr ""
 "esconden cuando las ventanas se hacen más pequeñas, y aparece un montón de "
 "espacio sin utilizar cuando la ventana se agranda."
 
-#: C/gtkmm-tutorial-in.xml:1844(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1865
 msgid ""
 "It's impossible to predict the amount of space necessary for text after it "
 "has been translated to other languages, or displayed in a different font. On "
@@ -3442,7 +4730,8 @@ msgstr ""
 "Unix, también es imposible anticipar los efectos de cada tema y gestor de "
 "ventanas."
 
-#: C/gtkmm-tutorial-in.xml:1848(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1869
 msgid ""
 "Changing the layout of a window \"on the fly\", to make some extra widgets "
 "appear, for instance, is complex. It requires tedious recalculation of every "
@@ -3452,7 +4741,8 @@ msgstr ""
 "que algunos widgets adicionales aparezcan, es complejo. Requiere un cálculo "
 "tedioso de la posición de cada widget."
 
-#: C/gtkmm-tutorial-in.xml:1854(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1875
 #, fuzzy
 #| msgid ""
 #| "<application>gtkmm</application> uses the packing system to solve these "
@@ -3476,10 +4766,10 @@ msgid ""
 "in turn, determined by the amount of text they contain, or the minimum and "
 "maximum sizes that you specify, and/or how you have requested that the "
 "available space should be shared between sets of widgets. You can perfect "
-"your layout by specifying padding distance and centering values for each of "
-"your widgets. <application>gtkmm</application> then uses all this "
-"information to resize and reposition everything sensibly and smoothly when "
-"the user manipulates the window."
+"your layout by specifying margins and centering values for each of your "
+"widgets. <application>gtkmm</application> then uses all this information to "
+"resize and reposition everything sensibly and smoothly when the user "
+"manipulates the window."
 msgstr ""
 "<application>gtkmm</application> usa el sistema de empaquetado para resolver "
 "estos problemas. En lugar de especificar el tamaño y posición de cada widget "
@@ -3495,17 +4785,28 @@ msgstr ""
 "reposicionar todo suave y sensiblemente cuando el usuario manipula la "
 "ventana."
 
-#: C/gtkmm-tutorial-in.xml:1863(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1884
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> arranges widgets hierarchically, using "
+#| "<emphasis>containers</emphasis>. A Container widget contains other "
+#| "widgets. Most <application>gtkmm</application> widgets are containers. "
+#| "Windows, Notebook tabs, and Buttons are all container widgets. There are "
+#| "two flavours of containers: single-child containers, which are all "
+#| "descendants of <classname>Gtk::Bin</classname>, and multiple-child "
+#| "containers, which are descendants of <classname>Gtk::Container</"
+#| "classname>. Most widgets in <application>gtkmm</application> are "
+#| "descendants of <classname>Gtk::Bin</classname>, including <classname>Gtk::"
+#| "Window</classname>."
 msgid ""
 "<application>gtkmm</application> arranges widgets hierarchically, using "
-"<emphasis>containers</emphasis>. A Container widget contains other widgets. "
+"<emphasis>containers</emphasis>. A container widget contains other widgets. "
 "Most <application>gtkmm</application> widgets are containers. Windows, "
 "Notebook tabs, and Buttons are all container widgets. There are two flavours "
-"of containers: single-child containers, which are all descendants of "
-"<classname>Gtk::Bin</classname>, and multiple-child containers, which are "
-"descendants of <classname>Gtk::Container</classname>. Most widgets in "
-"<application>gtkmm</application> are descendants of <classname>Gtk::Bin</"
-"classname>, including <classname>Gtk::Window</classname>."
+"of containers: single-child containers and multiple-child containers. Most "
+"container widgets in <application>gtkmm</application> are single-child "
+"containers, including <classname>Gtk::Window</classname>."
 msgstr ""
 "<application>gtkmm</application> ordena los widgets jerárquicamente, usando "
 "<emphasis>contenedores</emphasis>. Un widget contenedor contiene a otros "
@@ -3518,7 +4819,8 @@ msgstr ""
 "<classname>Gtk::Bin</classname>, incluyendo <classname>Gtk::Window</"
 "classname>."
 
-#: C/gtkmm-tutorial-in.xml:1874(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1893
 msgid ""
 "Yes, that's correct: a Window can contain at most one widget. How, then, can "
 "we use a window for anything useful? By placing a multiple-child container "
@@ -3530,33 +4832,46 @@ msgstr ""
 "hijos en la ventana. Los widgets contenedores más útiles son <classname>Gtk::"
 "Grid</classname> y <classname>Gtk::Box</classname>."
 
-#: C/gtkmm-tutorial-in.xml:1885(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1904
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::Grid</classname> arranges its child widgets in rows and "
+#| "columns. Use <methodname>attach()</methodname>, "
+#| "<methodname>attach_next_to()</methodname> and <methodname>add()</"
+#| "methodname> to insert child widgets."
 msgid ""
 "<classname>Gtk::Grid</classname> arranges its child widgets in rows and "
-"columns. Use <methodname>attach()</methodname>, "
-"<methodname>attach_next_to()</methodname> and <methodname>add()</methodname> "
-"to insert child widgets."
+"columns. Use <methodname>attach()</methodname> and "
+"<methodname>attach_next_to()</methodname> to insert child widgets."
 msgstr ""
 "<classname>Gtk::Grid</classname> ordena sus widgets hijos en filas y "
 "columnas. Use <methodname>attach()</methodname>, "
 "<methodname>attach_next_to()</methodname> y <methodname>add()</methodname> "
 "para insertar widgets hijos."
 
-#: C/gtkmm-tutorial-in.xml:1894(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:1912
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::Box</classname> arranges its child widgets vertically or "
+#| "horizontally. Use <methodname>pack_start()</methodname> and "
+#| "<methodname>pack_end()</methodname> to insert child widgets."
 msgid ""
 "<classname>Gtk::Box</classname> arranges its child widgets vertically or "
-"horizontally. Use <methodname>pack_start()</methodname> and "
-"<methodname>pack_end()</methodname> to insert child widgets."
+"horizontally. Use <methodname>append()</methodname> to insert child widgets."
 msgstr ""
 "<classname>Gtk::Box</classname> ordena a sus widgets hijos vertical u "
 "horizontalmente. Use <methodname>pack_start()</methodname> y "
 "<methodname>pack_end()</methodname> para insertar widgets hijos."
 
-#: C/gtkmm-tutorial-in.xml:1903(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1920
 msgid "There are several other containers, which we will also discuss."
 msgstr "Hay muchos más contenedores, de los que también se hablará."
 
-#: C/gtkmm-tutorial-in.xml:1907(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1924
 msgid ""
 "If you've never used a packing toolkit before, it can take some getting used "
 "to. You'll probably find, however, that you don't need to rely on visual "
@@ -3567,11 +4882,13 @@ msgstr ""
 "no necesita editores de formularios visuales tanto como con otros kits de "
 "herramientas."
 
-#: C/gtkmm-tutorial-in.xml:1917(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1934
 msgid "An improved Hello World"
 msgstr "Un «Hola mundo» mejorado"
 
-#: C/gtkmm-tutorial-in.xml:1919(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1936
 msgid ""
 "Let's take a look at a slightly improved <literal>helloworld</literal>, "
 "showing what we've learnt."
@@ -3579,35 +4896,65 @@ msgstr ""
 "Eche un vistazo a un <literal>helloworld</literal> ligeramente mejorado, "
 "mostrando lo que ha aprendido."
 
-#: C/gtkmm-tutorial-in.xml:1924(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:1941
 msgid "Hello World 2"
 msgstr "Hola mundo 2"
 
-#: C/gtkmm-tutorial-in.xml:1932(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1947
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/helloworld2\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/helloworld2\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1949
+#, fuzzy
+#| msgid ""
+#| "After building and running this program, try resizing the window to see "
+#| "the behaviour. Also, try playing with the options to "
+#| "<methodname>pack_start()</methodname> while reading the <link linkend="
+#| "\"sec-boxes\">Boxes</link> section."
 msgid ""
 "After building and running this program, try resizing the window to see the "
-"behaviour. Also, try playing with the options to <methodname>pack_start()</"
-"methodname> while reading the <link linkend=\"sec-boxes\">Boxes</link> "
-"section."
+"behaviour. Also, try playing with <methodname>set_expand()</methodname>, "
+"<methodname>set_hexpand()</methodname>, <methodname>set_vexpand()</"
+"methodname>, <methodname>set_halign()</methodname> and "
+"<methodname>set_valign()</methodname> while reading the <link linkend=\"sec-"
+"boxes\">Boxes</link> section."
 msgstr ""
 "Después de haber construido y ejecutado este programa, pruebe a "
 "redimensionar la ventana para observar su comportamiento. Además, pruebe "
 "modificar las opciones a <methodname>pack_start()</methodname> mientras lee "
 "la sección <link linkend=\"sec-boxes\">Cajas</link>."
 
-#: C/gtkmm-tutorial-in.xml:1942(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:1960
 msgid "Boxes"
 msgstr "Cajas"
 
-#: C/gtkmm-tutorial-in.xml:1944(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:1962
+#, fuzzy
+#| msgid ""
+#| "Most packing uses boxes as in the above example. These are invisible "
+#| "containers into which we can pack our widgets. When packing widgets into "
+#| "a horizontal box, the objects are inserted horizontally from left to "
+#| "right or right to left depending on whether <methodname>pack_start()</"
+#| "methodname> or <methodname>pack_end()</methodname> is used. In a vertical "
+#| "box, widgets are packed from top to bottom or vice versa. You may use any "
+#| "combination of boxes inside or beside other boxes to create the desired "
+#| "effect."
 msgid ""
 "Most packing uses boxes as in the above example. These are invisible "
 "containers into which we can pack our widgets. When packing widgets into a "
-"horizontal box, the objects are inserted horizontally from left to right or "
-"right to left depending on whether <methodname>pack_start()</methodname> or "
-"<methodname>pack_end()</methodname> is used. In a vertical box, widgets are "
-"packed from top to bottom or vice versa. You may use any combination of "
-"boxes inside or beside other boxes to create the desired effect."
+"horizontal box, the objects are inserted horizontally from left to right. In "
+"a vertical box, widgets are packed from top to bottom. You may use any "
+"combination of boxes inside or beside other boxes to create the desired "
+"effect."
 msgstr ""
 "La mayor parte del empaquetado usa cajas como en el ejemplo anterior. Éstas "
 "son contenedores invisibles en los que podemos empaquetar a nuestros "
@@ -3618,25 +4965,38 @@ msgstr ""
 "empaquetan de arriba a abajo o viceversa. Puede usar cualquier combinación "
 "de cajas dentro o al lado de otras cajas para crear el efecto deseado."
 
-#: C/gtkmm-tutorial-in.xml:1955(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:1971
 msgid "Adding widgets"
 msgstr "Añadir widgets"
 
-#: C/gtkmm-tutorial-in.xml:1956(title)
+#. (itstool) path: sect4/title
+#: C/index-in.docbook:1972
 msgid "Per-child packing options"
 msgstr "Opciones de empaquetado por hijo"
 
-#: C/gtkmm-tutorial-in.xml:1957(para)
-msgid ""
-"The <methodname>pack_start()</methodname> and <methodname>pack_end()</"
-"methodname> methods place widgets inside these containers. The "
-"<methodname>pack_start()</methodname> method will start at the top and work "
-"its way down in a <classname>Box</classname> with vertical orientation, or "
-"pack left to right in a <classname>Box</classname> with horizontal "
-"orientation. <methodname>pack_end()</methodname> will do the opposite, "
-"packing from bottom to top or from right to left. Using these methods allows "
-"us to right justify or left justify our widgets. We will use "
-"<methodname>pack_start()</methodname> in most of our examples."
+#. (itstool) path: sect4/para
+#: C/index-in.docbook:1973
+#, fuzzy
+#| msgid ""
+#| "The <methodname>pack_start()</methodname> and <methodname>pack_end()</"
+#| "methodname> methods place widgets inside these containers. The "
+#| "<methodname>pack_start()</methodname> method will start at the top and "
+#| "work its way down in a <classname>Box</classname> with vertical "
+#| "orientation, or pack left to right in a <classname>Box</classname> with "
+#| "horizontal orientation. <methodname>pack_end()</methodname> will do the "
+#| "opposite, packing from bottom to top or from right to left. Using these "
+#| "methods allows us to right justify or left justify our widgets. We will "
+#| "use <methodname>pack_start()</methodname> in most of our examples."
+msgid ""
+"The <methodname>append()</methodname> method places widgets inside these "
+"containers. It will start at the top and work its way down in a "
+"<classname>Box</classname> with vertical orientation, or pack left to right "
+"in a <classname>Box</classname> with horizontal orientation. If it's "
+"inconvenient to add widgets in this order, use "
+"<methodname>insert_child_after()</methodname> or "
+"<methodname>insert_child_at_start()</methodname>. We will use "
+"<methodname>append()</methodname> in our examples."
 msgstr ""
 "Los métodos <methodname>pack_start()</methodname> y <methodname>pack_end()</"
 "methodname> ponen widgets dentro de estos contenedores. El método "
@@ -3648,13 +5008,26 @@ msgstr ""
 "métodos le permite justificar a derecha o izquierda a sus widgets. Se usará "
 "<methodname>pack_start()</methodname> en la mayoría de los ejemplos."
 
-#: C/gtkmm-tutorial-in.xml:1969(para)
+#. (itstool) path: sect4/para
+#: C/index-in.docbook:1983
+#, fuzzy
+#| msgid ""
+#| "There are several options governing how widgets are to be packed, and "
+#| "this can be confusing at first. If you have difficulties then it is "
+#| "sometimes a good idea to play with the <application>glade</application> "
+#| "GUI designer to see what is possible. You might even decide to use the "
+#| "<application>Gtk::Builder</application> API to load your GUI at runtime."
 msgid ""
 "There are several options governing how widgets are to be packed, and this "
-"can be confusing at first. If you have difficulties then it is sometimes a "
-"good idea to play with the <application>glade</application> GUI designer to "
-"see what is possible. You might even decide to use the <application>Gtk::"
-"Builder</application> API to load your GUI at runtime."
+"can be confusing at first. You can modify the packing by using "
+"<methodname>set_expand()</methodname>, <methodname>set_hexpand()</"
+"methodname>, <methodname>set_vexpand()</methodname>, "
+"<methodname>set_halign()</methodname>, <methodname>set_valign()</methodname> "
+"and/or <methodname>set_margin()</methodname> on the child widgets. If you "
+"have difficulties, then it is sometimes a good idea to play with the "
+"<application>glade</application> GUI designer to see what is possible. You "
+"might even decide to use the <classname>Gtk::Builder</classname> API to load "
+"your GUI at runtime."
 msgstr ""
 "Hay muchas opciones que determinan cómo se empaquetan los widgets, y esto "
 "puede resultar confuso al principio. Si tiene dificultades, entonces a veces "
@@ -3663,148 +5036,127 @@ msgstr ""
 "<application>Gtk::Builder</application> para cargar su IGU en tiempo de "
 "ejecución."
 
-#: C/gtkmm-tutorial-in.xml:1977(para)
+#. (itstool) path: sect4/para
+#: C/index-in.docbook:1995
 msgid "There are basically five different styles, as shown in this picture:"
 msgstr ""
 "Básicamente, hay cinco estilos diferentes, como se muestra en esta imagen."
 
-#: C/gtkmm-tutorial-in.xml:1983(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2001
 msgid "Box Packing 1"
 msgstr "Caja de empaquetado 1"
 
-#: C/gtkmm-tutorial-in.xml:1989(para)
+#. (itstool) path: sect4/para
+#: C/index-in.docbook:2007
+#, fuzzy
+#| msgid ""
+#| "Each line contains one horizontal <classname>Box</classname> with several "
+#| "buttons. Each of the buttons on a line is packed into the <classname>Box</"
+#| "classname> with the same arguments to the <methodname>pack_start()</"
+#| "methodname> method."
 msgid ""
 "Each line contains one horizontal <classname>Box</classname> with several "
 "buttons. Each of the buttons on a line is packed into the <classname>Box</"
-"classname> with the same arguments to the <methodname>pack_start()</"
-"methodname> method."
+"classname> with the same arguments to the <methodname>set_hexpand()</"
+"methodname>, <methodname>set_halign()</methodname>, "
+"<methodname>set_margin_start()</methodname> and "
+"<methodname>set_margin_end()</methodname> methods."
 msgstr ""
 "Cada línea contiene una <classname>Box</classname> horizontal con varios "
 "botones. Cada uno de los botones en una línea está empaquetado en la "
 "<classname>Box</classname>, con los mismos argumentos pasados al método "
 "<methodname>pack_start()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:1996(para)
+#. (itstool) path: sect4/para
+#: C/index-in.docbook:2016
 msgid ""
-"This is the declaration of the <methodname>pack_start()</methodname> method:"
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Box.html";
+"\">Reference</ulink>"
 msgstr ""
-"Esta es la declaración del método <methodname>pack_start()</methodname>."
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Box.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: sect4/title
+#: C/index-in.docbook:2020
+msgid "Per-container packing options"
+msgstr "Opciones de empaquetado por contenedor"
 
-#: C/gtkmm-tutorial-in.xml:1999(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:2024
 #, no-wrap
+#| msgid ""
+#| "Gtk::Box(Gtk::Orientation orientation = Gtk::ORIENTATION_HORIZONTAL, int spacing = 0);\n"
+#| "void set_spacing(int spacing);\n"
+#| "void set_homogeneous(bool homogeneous = true);"
 msgid ""
-"void pack_start(Gtk::Widget&amp; child,\n"
-"                Gtk::PackOptions options = Gtk::PACK_EXPAND_WIDGET,\n"
-"                guint padding = 0);"
+"Gtk::Box(Gtk::Orientation orientation = Gtk::Orientation::HORIZONTAL, int spacing = 0);\n"
+"void set_orientation(Gtk::Orientation orientation);\n"
+"void set_spacing(int spacing);\n"
+"void set_homogeneous(bool homogeneous = true);"
 msgstr ""
-"void pack_start(Gtk::Widget&amp; child,\n"
-"                Gtk::PackOptions options = Gtk::PACK_EXPAND_WIDGET,\n"
-"                guint padding = 0);"
+"Gtk::Box(Gtk::Orientation orientation = Gtk::Orientation::HORIZONTAL, int spacing = 0);\n"
+"void set_orientation(Gtk::Orientation orientation);\n"
+"void set_spacing(int spacing);\n"
+"void set_homogeneous(bool homogeneous = true);"
 
-#: C/gtkmm-tutorial-in.xml:2003(para)
+#. (itstool) path: sect4/para
+#: C/index-in.docbook:2021
+#, fuzzy
+#| msgid ""
+#| "Here's the constructor for the <classname>Box</classname> widget, and "
+#| "methods that set per-container packing options: <placeholder-1/> Passing "
+#| "<literal>true</literal> to <methodname>set_homogeneous()</methodname> "
+#| "will cause all of the contained widgets to be the same size. "
+#| "<parameter>spacing</parameter> is a (minimum) number of pixels to leave "
+#| "between each widget."
 msgid ""
-"The first argument is the widget you're packing. In our example these are "
-"all <classname>Button</classname>s."
+"Here's the constructor for the <classname>Box</classname> widget, and "
+"methods that set per-container packing options: <_:programlisting-1/> "
+"Passing <literal>true</literal> to <methodname>set_homogeneous()</"
+"methodname> will cause all of the contained widgets to be the same size. "
+"<parameter>spacing</parameter> is a (minimum) number of pixels to leave "
+"between each widget."
 msgstr ""
-"El primer argumento es el widget que está empaquetando. En el ejemplo estos "
-"son todos los <classname>Button</classname>."
+"Aquí está el constructor del widget <classname>Box</classname>, y métodos "
+"que establecen opciones de empaquetado por contenedor: <placeholder-1/> "
+"Pasarle <literal>true</literal> a <parameter>set_homogeneous()</parameter> "
+"hará que todos los widgets contenidos sean del mismo tamaño. "
+"<parameter>spacing</parameter> es el número (mínimo) de píxeles que dejar "
+"entre cada widget."
 
-#: C/gtkmm-tutorial-in.xml:2010(para)
-msgid ""
-"<literal>Gtk::PACK_SHRINK</literal>: Space is contracted to the child widget "
-"size. The widget will take up just-enough space and never expand."
-msgstr ""
-"<literal>Gtk::PACK_SHRINK</literal>: el espacio se contrae al tamaño del "
-"widget hijo. El widget usará el espacio justo y necesario, y nunca se "
-"expandirá."
-
-#: C/gtkmm-tutorial-in.xml:2011(para)
-msgid ""
-"<literal>Gtk::PACK_EXPAND_PADDING</literal>: Extra space is filled with "
-"padding. The widgets will be spaced out evenly, but their sizes won't change "
-"- there will be empty space between the widgets instead."
-msgstr ""
-"<literal>Gtk::PACK_EXPAND_PADDING</literal>: se rellena espacio adicional. "
-"Los widgets se espacian de manera similar, pero sus tamaños no cambiarán: en "
-"su lugar, habrá espacio vacío."
-
-#: C/gtkmm-tutorial-in.xml:2012(para)
-msgid ""
-"<literal>Gtk::PACK_EXPAND_WIDGET</literal>: Extra space is taken up by "
-"increasing the child widget size, without changing the amount of space "
-"between widgets."
-msgstr ""
-"<literal>Gtk::PACK_EXPAND_WIDGET</literal>: se usa espacio adicional "
-"incrementando el tamaño del widget hijo, sin cambiar la cantidad de espacio "
-"entre los widgets."
-
-#: C/gtkmm-tutorial-in.xml:2007(para)
-msgid ""
-"The <parameter>options</parameter> argument can take one of these three "
-"options: <placeholder-1/>"
-msgstr ""
-"El argumento <parameter>options</parameter> puede tomar una de estas tres "
-"opciones: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:2016(para)
-msgid ""
-"The <parameter>padding</parameter> argument specifies the width of an extra "
-"border area to leave around the packed widget."
-msgstr ""
-"El argumento <parameter>padding</parameter> especifica el ancho de un área "
-"adicional en el borde para dejar alrededor del widget empaquetado."
-
-#: C/gtkmm-tutorial-in.xml:2025(title)
-msgid "Per-container packing options"
-msgstr "Opciones de empaquetado por contenedor"
-
-#: C/gtkmm-tutorial-in.xml:2029(programlisting)
-#, no-wrap
-msgid ""
-"Gtk::Box(Gtk::Orientation orientation = Gtk::ORIENTATION_HORIZONTAL, int spacing = 0);\n"
-"void set_spacing(int spacing);\n"
-"void set_homogeneous(bool homogeneous = true);"
-msgstr ""
-"Gtk::Box(Gtk::Orientation orientation = Gtk::ORIENTATION_HORIZONTAL, int spacing = 0);\n"
-"void set_spacing(int spacing);\n"
-"void set_homogeneous(bool homogeneous = true);"
-
-#: C/gtkmm-tutorial-in.xml:2026(para)
-msgid ""
-"Here's the constructor for the <classname>Box</classname> widget, and "
-"methods that set per-container packing options: <placeholder-1/> Passing "
-"<literal>true</literal> to <methodname>set_homogeneous()</methodname> will "
-"cause all of the contained widgets to be the same size. <parameter>spacing</"
-"parameter> is a (minimum) number of pixels to leave between each widget."
-msgstr ""
-"Aquí está el constructor del widget <classname>Box</classname>, y métodos "
-"que establecen opciones de empaquetado por contenedor: <placeholder-1/> "
-"Pasarle <literal>true</literal> a <parameter>set_homogeneous()</parameter> "
-"hará que todos los widgets contenidos sean del mismo tamaño. "
-"<parameter>spacing</parameter> es el número (mínimo) de píxeles que dejar "
-"entre cada widget."
-
-#: C/gtkmm-tutorial-in.xml:2038(para)
+#. (itstool) path: sect4/para
+#: C/index-in.docbook:2034
+#, fuzzy
+#| msgid ""
+#| "What's the difference between spacing (set when the box is created) and "
+#| "padding (set when elements are packed)? Spacing is added between objects, "
+#| "and padding is added on either side of a widget. The following figure "
+#| "should make it clearer:"
 msgid ""
 "What's the difference between spacing (set when the box is created) and "
-"padding (set when elements are packed)? Spacing is added between objects, "
-"and padding is added on either side of a widget. The following figure should "
-"make it clearer:"
+"margins (set separately for each child widget)? Spacing is added between "
+"objects, and margins are added on one or more sides of a widget. The "
+"following figure should make it clearer. The shown margins are the left and "
+"right margins of each button in the row."
 msgstr ""
 "¿Cuál es la diferencia entre el espaciado (establecido cuando se crea la "
 "caja) y el relleno (establecido cuando se empaquetan los elementos)? El "
 "espaciado se añade entre objetos, y el relleno a cada lado del widget. La "
 "siguiente figura debería aclararlo:"
 
-#: C/gtkmm-tutorial-in.xml:2046(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2043
 msgid "Box Packing 2"
 msgstr "Caja de empaquetado 2"
 
-#: C/gtkmm-tutorial-in.xml:2056(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:2053
 msgid "Gtk::Application and command-line options"
 msgstr "Gtk::Application y opciones de línea de comandos"
 
-#: C/gtkmm-tutorial-in.xml:2057(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2054
 msgid ""
 "The following example program requires a command-line option. The source "
 "code shows two ways of handling command-line options in combination with "
@@ -3814,30 +5166,47 @@ msgstr ""
 "El código fuente muestra dos maneras de manejarla, en combinación con "
 "<classname>Gtk::Application</classname>."
 
-#: C/gtkmm-tutorial-in.xml:2063(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:2060
+#, fuzzy
+#| msgid ""
+#| "Handle the options in <function>main()</function> and hide them from "
+#| "<classname>Gtk::Application</classname> by setting <literal>argc = 1</"
+#| "literal> in the call to <methodname>Gtk::Application::create()</"
+#| "methodname>."
 msgid ""
 "Handle the options in <function>main()</function> and hide them from "
 "<classname>Gtk::Application</classname> by setting <literal>argc = 1</"
-"literal> in the call to <methodname>Gtk::Application::create()</methodname>."
+"literal> in the call to <methodname>Gtk::Application::run()</methodname>."
 msgstr ""
 "Maneje las opciones en <function>main()</function> y ocúltelas de "
 "<classname>Gtk::Application</classname> estableciendo <literal>argc = 1</"
 "literal> en la llamada a <methodname>Gtk::Application::create()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2069(para)
-msgid ""
-"Give all command-line options to <methodname>Gtk::Application::create()</"
-"methodname> and add the flag <literal>Gio::APPLICATION_HANDLES_COMMAND_LINE</"
-"literal>. Connect a signal handler to the <literal>command_line</literal> "
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:2066
+#, fuzzy
+#| msgid ""
+#| "Give all command-line options to <methodname>Gtk::Application::create()</"
+#| "methodname> and add the flag <literal>Gio::"
+#| "APPLICATION_HANDLES_COMMAND_LINE</literal>. Connect a signal handler to "
+#| "the <literal>command_line</literal> signal, and handle the command-line "
+#| "options in the signal handler."
+msgid ""
+"Give all command-line options to <methodname>Gtk::Application::run()</"
+"methodname> and add the flag <literal>Gio::Application::Flags::"
+"HANDLES_COMMAND_LINE</literal> to <methodname>Gtk::Application::create()</"
+"methodname>. Connect a signal handler to the <literal>command_line</literal> "
 "signal, and handle the command-line options in the signal handler."
 msgstr ""
 "Pásele todas las opciones de línea de comandos a <methodname>Gtk::"
 "Application::create()</methodname> y añada la opción <literal>Gio::"
-"APPLICATION_HANDLES_COMMAND_LINE</literal>. Conecte un gestor de señales "
-"a la señal <literal>command_line</literal>, y maneje las opciones de línea "
-"de comandos en él."
+"APPLICATION_HANDLES_COMMAND_LINE</literal>. Conecte un gestor de señales a "
+"la señal <literal>command_line</literal>, y maneje las opciones de línea de "
+"comandos en él."
 
-#: C/gtkmm-tutorial-in.xml:2075(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:2073
 msgid ""
 "You must set the optional parameter <literal>after = false</literal> in the "
 "call to <literal>signal_command_line().connect()</literal>, because your "
@@ -3849,13 +5218,14 @@ msgid ""
 msgstr ""
 "Debe establecer el parámetro opcional <literal>after = false</literal> en la "
 "llamada a <literal>signal_command_line().connect()</literal>, porque su "
-"gestor de señales debe llamarse antes que el gestor predeterminado. "
-"También debe llamar a <methodname>Gio::Application::activate()</methodname> "
-"en este, a menos que quiere que su aplicación se cierre sin mostrar su "
-"ventana principal. (<classname>Gio::Application</classname> es una clase "
-"base de <classname>Gtk::Application</classname>)."
+"gestor de señales debe llamarse antes que el gestor predeterminado. También "
+"debe llamar a <methodname>Gio::Application::activate()</methodname> en este, "
+"a menos que quiere que su aplicación se cierre sin mostrar su ventana "
+"principal. (<classname>Gio::Application</classname> es una clase base de "
+"<classname>Gtk::Application</classname>)."
 
-#: C/gtkmm-tutorial-in.xml:2088(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2086
 msgid ""
 "Here is the source code for the example that produced the screenshots above. "
 "When you run this example, provide a number between 1 and 3 as a command-"
@@ -3866,55 +5236,23 @@ msgstr ""
 "como opción de línea de comandos, para ver las diferentes opciones de "
 "empaquetado en acción."
 
-#: C/gtkmm-tutorial-in.xml:2097(title)
-msgid "ButtonBoxes"
-msgstr "Cajas de Botones"
-
-#: C/gtkmm-tutorial-in.xml:2099(para)
-msgid ""
-"Button boxes are a convenient way to quickly arrange a group of buttons. "
-"Their orientation can be either horizontal or vertical."
-msgstr ""
-"Las cajas de botones son una manera conveniente de ordenar rápidamente un "
-"grupo de botones. Su orientación puede ser tanto horizontal como vertical."
-
-#: C/gtkmm-tutorial-in.xml:2104(para)
-msgid ""
-"<classname>ButtonBox</classname>es help to make applications appear "
-"consistent because they use standard settings, such as inter-button spacing "
-"and packing."
-msgstr ""
-"Las <classname>ButtonBox</classname> ayudan a hacer que las aplicaciones "
-"aparezcan consistentes porque usan opciones estándar, como espaciado entre "
-"botones y empaquetado."
-
-#: C/gtkmm-tutorial-in.xml:2109(para)
-msgid ""
-"Buttons are added to a <classname>ButtonBox</classname> with the "
-"<methodname>add()</methodname> method."
-msgstr ""
-"Los botones se añaden a una <classname>ButtonBox</classname> con el método "
-"<methodname>add()</methodname>."
-
-#: C/gtkmm-tutorial-in.xml:2114(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2089
 msgid ""
-"Button boxes support several layout styles. The style can be retrieved and "
-"changed using <methodname>get_layout()</methodname> and "
-"<methodname>set_layout()</methodname>."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/box\">Source Code</ulink>"
 msgstr ""
-"Las cajas de botones soportan varios estilos de disposición. Puede obtener y "
-"modificar el estilo usando <methodname>get_layout()</methodname> y "
-"<methodname>set_layout()</methodname>. "
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/box\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:2126(title)
-msgid "ButtonBox"
-msgstr "ButtonBox"
-
-#: C/gtkmm-tutorial-in.xml:2139(title) C/gtkmm-tutorial-in.xml:2168(title)
+#. (itstool) path: sect2/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2095 C/index-in.docbook:2124
 msgid "Grid"
 msgstr "Grid"
 
-#: C/gtkmm-tutorial-in.xml:2141(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2097
 msgid ""
 "A <classname>Grid</classname> dynamically lays out child widgets in rows and "
 "columns. The dimensions of the grid do not need to be specified in the "
@@ -3924,7 +5262,8 @@ msgstr ""
 "filas y columnas. No es necesario especificar las dimensiones de la red en "
 "el constructor."
 
-#: C/gtkmm-tutorial-in.xml:2146(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2102
 msgid ""
 "Child widgets can span multiple rows or columns, using <methodname>attach()</"
 "methodname>, or added next to an existing widget inside the grid with "
@@ -3940,7 +5279,8 @@ msgstr ""
 "altura o ancho uniforme con <methodname>set_row_homogeneous()</methodname> y "
 "<methodname>set_column_homogeneous()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2153(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2109
 msgid ""
 "You can set the <emphasis>margin</emphasis> and <emphasis>expand</emphasis> "
 "properties of the child <classname>Widget</classname>s to control their "
@@ -3950,7 +5290,17 @@ msgstr ""
 "<emphasis>expand</emphasis> de los <classname>Widget</classname> hijos para "
 "controlar su espaciado y comportamiento cuando se redimensiona la cuadrícula."
 
-#: C/gtkmm-tutorial-in.xml:2160(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2113
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Grid.html";
+"\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Grid.html";
+"\">Referencia</ulink>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2116
 msgid ""
 "This example creates a window with three buttons in a grid. The first two "
 "buttons are in the upper row, from left to right. A third button is attached "
@@ -3961,33 +5311,23 @@ msgstr ""
 "añadido un tercer botón bajo el primer botón, en una nueva fila más abajo, "
 "abarcando dos columnas."
 
-#: C/gtkmm-tutorial-in.xml:2181(title)
-msgid "Table"
-msgstr "Tabla"
-
-#: C/gtkmm-tutorial-in.xml:2183(para)
-msgid ""
-"<classname>Gtk::Table</classname> allows us to place widgets in a grid, "
-"similar to <classname>Gtk::Grid</classname>."
-msgstr ""
-"<classname>Gtk::Table</classname> permite poner widgets en una cuadrícula, "
-"de manera similar a <classname>Gtk::Grid</classname>."
-
-#: C/gtkmm-tutorial-in.xml:2187(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2130
 msgid ""
-"<classname>Gtk::Table</classname> is deprecated from <application>gtkmm</"
-"application> version 3.4 and should not be used in newly-written code. Use "
-"<classname>Gtk::Grid</classname> instead."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/grid\">Source Code</ulink>"
 msgstr ""
-"<classname>Gtk::Table</classname> se marcó como obsoleto en "
-"<application>gtkmm</application> 3.4 y no se debe usar en el código nuevo. "
-"Use <classname>Gtk::Grid</classname> en su lugar."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/grid\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:2194(title) C/gtkmm-tutorial-in.xml:2229(title)
+#. (itstool) path: sect2/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2137 C/index-in.docbook:2172
 msgid "Notebook"
 msgstr "Cuaderno"
 
-#: C/gtkmm-tutorial-in.xml:2196(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2139
 msgid ""
 "A <classname>Notebook</classname> has a set of stacked <literal>pages</"
 "literal>, each of which contains widgets. Labelled <literal>tabs</literal> "
@@ -4002,7 +5342,8 @@ msgstr ""
 "conjuntos de widgets en un espacio reducido, mostrando sólo una página a la "
 "vez. Por ejemplo, se utilizan a menudo en los diálogos de preferencias."
 
-#: C/gtkmm-tutorial-in.xml:2205(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2148
 msgid ""
 "Use the <methodname>append_page()</methodname>, <methodname>prepend_page()</"
 "methodname> and <methodname>insert_page()</methodname> methods to add tabbed "
@@ -4014,7 +5355,8 @@ msgstr ""
 "methodname> para añadir páginas con pestañas al <literal>Notebook</literal>, "
 "proporcionándoles el widget hijo y el nombre de la pestaña."
 
-#: C/gtkmm-tutorial-in.xml:2212(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2155
 msgid ""
 "To discover the currently visible page, use the "
 "<methodname>get_current_page()</methodname> method. This returns the page "
@@ -4026,7 +5368,8 @@ msgstr ""
 "página. Después llame a <methodname>get_nth_page()</methodname> con ese "
 "número le dará un puntero al widget hijo en sí."
 
-#: C/gtkmm-tutorial-in.xml:2219(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2162
 msgid ""
 "To programmatically change the selected page, use the "
 "<methodname>set_current_page()</methodname> method."
@@ -4034,11 +5377,32 @@ msgstr ""
 "Para cambiar la página seleccionada mediante programación, use el método "
 "<methodname>set_current_page()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2242(title) C/gtkmm-tutorial-in.xml:2269(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2167
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Notebook.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Notebook.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2178
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/notebook/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/notebook/\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2185 C/index-in.docbook:2212
 msgid "Assistant"
 msgstr "Asistente"
 
-#: C/gtkmm-tutorial-in.xml:2244(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2187
 msgid ""
 "An <classname>Assistant</classname> splits a complex operation into steps. "
 "Each step is a page, containing a header, a child widget and an action area. "
@@ -4052,7 +5416,8 @@ msgstr ""
 "se actualizan automáticamente dependiendo del tipo de la página, establecido "
 "con <methodname>set_page_type()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2248(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2191
 msgid ""
 "Use the <methodname>append_page()</methodname>, <methodname>prepend_page</"
 "methodname> and <methodname>insert_page()</methodname> methods to add pages "
@@ -4064,7 +5429,8 @@ msgstr ""
 "methodname> para añadirle páginas al <classname>Assistant</classname>, "
 "proporcionándole el widget hijo por cada página."
 
-#: C/gtkmm-tutorial-in.xml:2252(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2195
 msgid ""
 "To determine the currently-visible page, use the "
 "<methodname>get_current_page()</methodname> method, and pass the result to "
@@ -4078,20 +5444,21 @@ msgstr ""
 "widget en sí. Para cambiar mediante programación la página actual, use el "
 "método <methodname>set_current_page()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2256(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2199
+#, fuzzy
+#| msgid ""
+#| "To programmatically change the selected page, use the "
+#| "<methodname>set_current_page()</methodname> method."
 msgid ""
 "To set the title of a page, use the <methodname>set_page_title()</"
-"methodname> method. The header and side images of a page can be set with the "
-"<methodname>set_page_header_image()</methodname> and "
-"<methodname>set_page_side_image()</methodname> methods."
+"methodname> method."
 msgstr ""
-"Para establecer el título de una página, use el método "
-"<methodname>set_page_title()</methodname>. Las imágenes de cabecera y de "
-"lado de una página se pueden establecer con los métodos "
-"<methodname>set_page_header_image()</methodname> y "
-"<methodname>set_page_side_image()</methodname>."
+"Para cambiar la página seleccionada mediante programación, use el método "
+"<methodname>set_current_page()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2260(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2203
 msgid ""
 "To add widgets to the action area, use the <methodname>add_action_widget()</"
 "methodname> method. They will be packed alongside the default buttons. Use "
@@ -4102,11 +5469,67 @@ msgstr ""
 "botones predeterminados. Use el método <methodname>remove_action_widget()</"
 "methodname> para borrar los widgets."
 
-#: C/gtkmm-tutorial-in.xml:2287(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2207
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Assistant.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Assistant.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2218
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/assistant/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/assistant/\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2225
+#, fuzzy
+#| msgid "Single-item Containers"
+msgid "Other Multi-item Containers"
+msgstr "Contenedor de un sólo elemento"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2227
+msgid ""
+"There are other multi-item containers. See the reference documentation for a "
+"complete list. Here are links to some example programs that show containers, "
+"which are not mentioned elsewhere in this tutorial."
+msgstr ""
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2233
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/actionbar\">Source Code, ActionBar</ulink>"
+msgstr ""
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2234
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/flowbox\">Source Code, FlowBox</ulink>"
+msgstr ""
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2235
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/iconview\">Source Code, IconView</ulink>"
+msgstr ""
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:2245
 msgid "The TreeView widget"
 msgstr "El widget TreeView"
 
-#: C/gtkmm-tutorial-in.xml:2288(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:2246
 msgid ""
 "The <classname>Gtk::TreeView</classname> widget can contain lists or trees "
 "of data, in columns."
@@ -4114,11 +5537,13 @@ msgstr ""
 "El widget <classname>Gtk::TreeView</classname> puede contener listas o "
 "árboles de datos, en columnas."
 
-#: C/gtkmm-tutorial-in.xml:2294(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:2252
 msgid "The Model"
 msgstr "El modelo"
 
-#: C/gtkmm-tutorial-in.xml:2295(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2253
 msgid ""
 "Each <classname>Gtk::TreeView</classname> has an associated <classname>Gtk::"
 "TreeModel</classname>, which contains the data displayed by the "
@@ -4138,7 +5563,8 @@ msgstr ""
 "modelos de datos, de la misma manera que dos consultas SQL (o «vistas») "
 "pueden mostrar diferentes campos de la misma tabla de la base de datos."
 
-#: C/gtkmm-tutorial-in.xml:2305(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2263
 msgid ""
 "Although you can theoretically implement your own Model, you will normally "
 "use either the <classname>ListStore</classname> or <classname>TreeStore</"
@@ -4148,11 +5574,22 @@ msgstr ""
 "normalmente usará las clases de los modelos <classname>ListStore</classname> "
 "o <classname>TreeStore</classname>."
 
-#: C/gtkmm-tutorial-in.xml:2314(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2269
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeModel.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeModel.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2272
 msgid "ListStore, for rows"
 msgstr "ListStore, para filas"
 
-#: C/gtkmm-tutorial-in.xml:2315(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2273
 msgid ""
 "The <classname>ListStore</classname> contains simple rows of data, and each "
 "row has no children."
@@ -4160,15 +5597,27 @@ msgstr ""
 "El <classname>ListStore</classname> contiene filas simples de datos, y "
 "ninguna fila tiene hijos."
 
-#: C/gtkmm-tutorial-in.xml:2321(title) C/gtkmm-tutorial-in.xml:2861(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2279 C/index-in.docbook:2847
 msgid "TreeView - ListStore"
 msgstr "TreeView - ListStore"
 
-#: C/gtkmm-tutorial-in.xml:2332(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2285
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1ListStore.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1ListStore.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2290
 msgid "TreeStore, for a hierarchy"
 msgstr "TreeStore, para una jerarquía"
 
-#: C/gtkmm-tutorial-in.xml:2333(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2291
 msgid ""
 "The <classname>TreeStore</classname> contains rows of data, and each row may "
 "have child rows."
@@ -4176,15 +5625,27 @@ msgstr ""
 "El <classname>TreeStore</classname> contiene filas de datos, y cada fila "
 "puede tener filas hijas."
 
-#: C/gtkmm-tutorial-in.xml:2339(title) C/gtkmm-tutorial-in.xml:2880(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2297 C/index-in.docbook:2866
 msgid "TreeView - TreeStore"
 msgstr "TreeView - TreeStore"
 
-#: C/gtkmm-tutorial-in.xml:2350(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2303
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeStore.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeStore.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2308
 msgid "Model Columns"
 msgstr "Columnas del modelo"
 
-#: C/gtkmm-tutorial-in.xml:2351(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2309
 msgid ""
 "The <classname>TreeModelColumnRecord</classname> class is used to keep track "
 "of the columns and their data types. You add <classname>TreeModelColumn</"
@@ -4203,7 +5664,8 @@ msgstr ""
 "classname> que tenga a sus instancias <classname>TreeModelColumn</classname> "
 "como datos miembro."
 
-#: C/gtkmm-tutorial-in.xml:2362(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2320
 #, no-wrap
 msgid ""
 "class ModelColumns : public Gtk::TreeModelColumnRecord\n"
@@ -4232,7 +5694,8 @@ msgstr ""
 "\n"
 "ModelColumns m_Columns;"
 
-#: C/gtkmm-tutorial-in.xml:2375(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2333
 msgid ""
 "You specify the <classname>ColumnRecord</classname> when creating the Model, "
 "like so:"
@@ -4240,7 +5703,8 @@ msgstr ""
 "Especifique el <classname>ColumnRecord</classname> cuando cree el modelo, "
 "así:"
 
-#: C/gtkmm-tutorial-in.xml:2379(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2337
 #, no-wrap
 msgid ""
 "Glib::RefPtr&lt;Gtk::ListStore&gt; refListStore =\n"
@@ -4249,21 +5713,25 @@ msgstr ""
 "Glib::RefPtr&lt;Gtk::ListStore&gt; refListStore =\n"
 "    Gtk::ListStore::create(m_Columns);"
 
-#: C/gtkmm-tutorial-in.xml:2381(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2339
 msgid ""
-"Note that the instance (such as m_Columns here) should usually not be "
-"static, because it often needs to be instantiated after glibmm has been "
-"instantiated."
+"As a <classname>TreeModelColumnRecord</classname> describes structure, not "
+"data, it can be shared among multiple models, and this is preferable for "
+"efficiency. However, the instance (such as <varname>m_Columns</varname> "
+"here) should usually not be static, because it often needs to be "
+"instantiated after <application>glibmm</application> has been initialized. "
+"The best solution is to make it a lazily instantiated singleton, so that it "
+"will be constructed on-demand, whenever the first model accesses it."
 msgstr ""
-"Tenga en cuenta que la instancia (como m_Columns aquí) normalmente no debe "
-"ser estática, porque a menudo se necesita instanciarla después de haber "
-"instanciado a glibmm."
 
-#: C/gtkmm-tutorial-in.xml:2386(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2351
 msgid "Adding Rows"
 msgstr "Añadir filas"
 
-#: C/gtkmm-tutorial-in.xml:2387(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2352
 msgid ""
 "Add rows to the model with the <methodname>append()</methodname>, "
 "<methodname>prepend()</methodname>, or <methodname>insert()</methodname> "
@@ -4272,25 +5740,32 @@ msgstr ""
 "Añadir filas al modelo con los métodos <methodname>append()</methodname>, "
 "<methodname>prepend()</methodname>, o <methodname>insert()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2391(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2356
 #, no-wrap
-msgid "Gtk::TreeModel::iterator iter = m_refListStore-&gt;append();"
-msgstr "Gtk::TreeModel::iterator iter = m_refListStore-&gt;append();"
+#| msgid "Gtk::TreeModel::iterator iter = m_refListStore-&gt;append();"
+msgid "auto iter = m_refListStore-&gt;append();"
+msgstr "auto iter = m_refListStore-&gt;append();"
 
-#: C/gtkmm-tutorial-in.xml:2392(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2357
 msgid "You can dereference the iterator to get the Row:"
 msgstr "Puede desreferenciar al iterador para obtener la fila:"
 
-#: C/gtkmm-tutorial-in.xml:2394(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2359
 #, no-wrap
-msgid "Gtk::TreeModel::Row row = *iter;"
-msgstr "Gtk::TreeModel::Row row = *iter;"
+#| msgid "Gtk::TreeModel::Row row = *iter;"
+msgid "auto row = *iter;"
+msgstr "auto row = *iter;"
 
-#: C/gtkmm-tutorial-in.xml:2395(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:2360
 msgid "Adding child rows"
 msgstr "Añadiendo filas secundarias"
 
-#: C/gtkmm-tutorial-in.xml:2396(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2361
 msgid ""
 "<classname>Gtk::TreeStore</classname> models can have child items. Add them "
 "with the <methodname>append()</methodname>, <methodname>prepend()</"
@@ -4300,22 +5775,33 @@ msgstr ""
 "hijos. Añádalos con los métodos <methodname>append()</methodname>, "
 "<methodname>prepend()</methodname>, o <methodname>insert()</methodname>, así:"
 
-#: C/gtkmm-tutorial-in.xml:2401(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:2366
 #, no-wrap
+#| msgid ""
+#| "Gtk::TreeModel::iterator iter_child =\n"
+#| "    m_refTreeStore-&gt;append(row.children());"
 msgid ""
-"Gtk::TreeModel::iterator iter_child =\n"
+"auto iter_child =\n"
 "    m_refTreeStore-&gt;append(row.children());"
 msgstr ""
-"Gtk::TreeModel::iterator iter_child =\n"
+"auto iter_child =\n"
 "    m_refTreeStore-&gt;append(row.children());"
 
-#: C/gtkmm-tutorial-in.xml:2408(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2373
 msgid "Setting values"
 msgstr "Configurar los valores"
 
-#: C/gtkmm-tutorial-in.xml:2409(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2374
+#, fuzzy
+#| msgid ""
+#| "You can use the <methodname>operator[]</methodname> override to set the "
+#| "data for a particular column in the row, specifying the "
+#| "<classname>TreeModelColumn</classname> used to create the model."
 msgid ""
-"You can use the <methodname>operator[]</methodname> override to set the data "
+"You can use the <methodname>operator[]</methodname> overload to set the data "
 "for a particular column in the row, specifying the "
 "<classname>TreeModelColumn</classname> used to create the model."
 msgstr ""
@@ -4323,35 +5809,48 @@ msgstr ""
 "establecer los datos de una columna particular en la fila, especificando la "
 "<classname>TreeModelColumn</classname> que se usó para crear el modelo."
 
-#: C/gtkmm-tutorial-in.xml:2414(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2379
 #, no-wrap
 msgid "row[m_Columns.m_col_text] = \"sometext\";"
 msgstr "row[m_Columns.m_col_text] = \"sometext\";"
 
-#: C/gtkmm-tutorial-in.xml:2418(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2383
 msgid "Getting values"
 msgstr "Obtener los valores"
 
-#: C/gtkmm-tutorial-in.xml:2419(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2384
+#, fuzzy
+#| msgid ""
+#| "You can use the <methodname>operator[]</methodname> override to get the "
+#| "data in a particular column in a row, specifiying the "
+#| "<classname>TreeModelColumn</classname> used to create the model."
 msgid ""
-"You can use the <methodname>operator[]</methodname> override to get the data "
-"in a particular column in a row, specifiying the <classname>TreeModelColumn</"
+"You can use the <methodname>operator[]</methodname> overload to get the data "
+"in a particular column in a row, specifying the <classname>TreeModelColumn</"
 "classname> used to create the model."
 msgstr ""
 "Puede usar la sobrecarga <methodname>operator[]</methodname> para obtener "
 "los datos de una columna particular en una fila, especificando la "
 "<classname>TreeModelColumn</classname> que se usó para crear el modelo."
 
-#: C/gtkmm-tutorial-in.xml:2424(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2389
 #, no-wrap
+#| msgid ""
+#| "Glib::ustring strText = row[m_Columns.m_col_text];\n"
+#| "int number = row[m_Columns.m_col_number];"
 msgid ""
-"Glib::ustring strText = row[m_Columns.m_col_text];\n"
-"int number = row[m_Columns.m_col_number];"
+"auto strText = row[m_Columns.m_col_text];\n"
+"auto number = row[m_Columns.m_col_number];"
 msgstr ""
-"Glib::ustring strText = row[m_Columns.m_col_text];\n"
-"int number = row[m_Columns.m_col_number];"
+"auto strText = row[m_Columns.m_col_text];\n"
+"auto number = row[m_Columns.m_col_number];"
 
-#: C/gtkmm-tutorial-in.xml:2426(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2391
 msgid ""
 "The compiler will complain if you use an inappropriate type. For instance, "
 "this would generate a compiler error:"
@@ -4359,7 +5858,8 @@ msgstr ""
 "El compilador le hará saber si usa un tipo inapropiado. Por ejemplo, esto "
 "generaría un error de compilación:"
 
-#: C/gtkmm-tutorial-in.xml:2430(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2395
 #, no-wrap
 msgid ""
 "//compiler error - no conversion from ustring to int.\n"
@@ -4368,11 +5868,13 @@ msgstr ""
 "//compiler error - no conversion from ustring to int.\n"
 "int number = row[m_Columns.m_col_text];"
 
-#: C/gtkmm-tutorial-in.xml:2435(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2400
 msgid "\"Hidden\" Columns"
 msgstr "Columnas «ocultas»"
 
-#: C/gtkmm-tutorial-in.xml:2436(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2401
 msgid ""
 "You might want to associate extra data with each row. If so, just add it as "
 "a Model column, but don't add it to the View."
@@ -4380,11 +5882,14 @@ msgstr ""
 "Puede querer asociar datos adicionales a cada fila. Si es así, sólo añádalos "
 "como una columa del modelo, pero no se los añada a la vista."
 
-#: C/gtkmm-tutorial-in.xml:2445(title) C/gtkmm-tutorial-in.xml:3272(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2410 C/index-in.docbook:3256
 msgid "The View"
 msgstr "La vista"
 
-#: C/gtkmm-tutorial-in.xml:2446(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2411
 msgid ""
 "The View is the actual widget (<classname>Gtk::TreeView</classname>) that "
 "displays the model (<classname>Gtk::TreeModel</classname>) data and allows "
@@ -4396,11 +5901,22 @@ msgstr ""
 "permite al usuario interactuar con él. La vista puede mostrar todas las "
 "columnas del modelo, o sólo algunas, y puede mostrarlas de varias maneras."
 
-#: C/gtkmm-tutorial-in.xml:2456(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2418
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeView.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TreeView.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2421
 msgid "Using a Model"
 msgstr "Usar un modelo"
 
-#: C/gtkmm-tutorial-in.xml:2457(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2422
 msgid ""
 "You can specify a <classname>Gtk::TreeModel</classname> when constructing "
 "the <classname>Gtk::TreeView</classname>, or you can use the "
@@ -4410,16 +5926,19 @@ msgstr ""
 "la <classname>Gtk::TreeView</classname>, o puede usar el método "
 "<methodname>set_model()</methodname>, así:"
 
-#: C/gtkmm-tutorial-in.xml:2462(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2427
 #, no-wrap
 msgid "m_TreeView.set_model(m_refListStore);"
 msgstr "m_TreeView.set_model(m_refListStore);"
 
-#: C/gtkmm-tutorial-in.xml:2466(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2431
 msgid "Adding View Columns"
 msgstr "Añadir columnas a la vista"
 
-#: C/gtkmm-tutorial-in.xml:2467(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2432
 msgid ""
 "You can use the <methodname>append_column()</methodname> method to tell the "
 "View that it should display certain Model columns, in a certain order, with "
@@ -4429,14 +5948,29 @@ msgstr ""
 "la vista que debe mostrar ciertas columnas del modelo, en cierto orden, con "
 "un cierto título de columna."
 
-#: C/gtkmm-tutorial-in.xml:2472(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2437
 #, no-wrap
 msgid "m_TreeView.append_column(\"Messages\", m_Columns.m_col_text);"
 msgstr "m_TreeView.append_column(\"Messages\", m_Columns.m_col_text);"
 
-#: C/gtkmm-tutorial-in.xml:2473(para)
-msgid ""
-"When using this simple <methodname>append_column()</methodname> override, "
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2438
+#, fuzzy
+#| msgid ""
+#| "When using this simple <methodname>append_column()</methodname> override, "
+#| "the <classname>TreeView</classname> will display the model data with an "
+#| "appropriate <classname>CellRenderer</classname>. For instance, strings "
+#| "and numbers are shown in a simple <classname>Gtk::Entry</classname> "
+#| "widget, and booleans are shown in a <classname>Gtk::CheckButton</"
+#| "classname>. This is usually what you need. For other column types you "
+#| "must either connect a callback that converts your type into a string "
+#| "representation, with <methodname>TreeViewColumn::set_cell_data_func()</"
+#| "methodname>, or derive a custom <classname>CellRenderer</classname>. Note "
+#| "that (unsigned) short is not supported by default - You could use "
+#| "(unsigned) int or (unsigned) long as the column type instead."
+msgid ""
+"When using this simple <methodname>append_column()</methodname> overload, "
 "the <classname>TreeView</classname> will display the model data with an "
 "appropriate <classname>CellRenderer</classname>. For instance, strings and "
 "numbers are shown in a simple <classname>Gtk::Entry</classname> widget, and "
@@ -4461,11 +5995,13 @@ msgstr ""
 "predeterminada: puede usar como tipo de columna «(unsigned) int» o "
 "«(unsigned) long» en su lugar."
 
-#: C/gtkmm-tutorial-in.xml:2489(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2454
 msgid "More than one Model Column per View Column"
 msgstr "Más de una columna del modelo por columna de la vista"
 
-#: C/gtkmm-tutorial-in.xml:2490(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2455
 msgid ""
 "To render more than one model column in a view column, you need to create "
 "the <classname>TreeView::Column</classname> widget manually, and use "
@@ -4476,7 +6012,8 @@ msgstr ""
 "manualmente, y usar <methodname>pack_start()</methodname> para añadirle las "
 "columnas del modelo."
 
-#: C/gtkmm-tutorial-in.xml:2496(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2461
 #, fuzzy
 #| msgid ""
 #| "Then use <methodname>append_column()</methodname> to add the view Column "
@@ -4488,7 +6025,7 @@ msgstr ""
 msgid ""
 "Then use <methodname>append_column()</methodname> to add the view Column to "
 "the View. Notice that <methodname>Gtk::TreeView::append_column()</"
-"methodname> is overridden to accept either a prebuilt <classname>Gtk::"
+"methodname> is overloaded to accept either a prebuilt <classname>Gtk::"
 "TreeView::Column</classname> widget, or just the <classname>TreeModelColumn</"
 "classname> from which it generates an appropriate <classname>Gtk::TreeView::"
 "Column</classname> widget."
@@ -4500,21 +6037,37 @@ msgstr ""
 "<classname>TreeModelColumn</classname> del cual genera un widget "
 "<classname>Gtk::View::Column</classname> apropiado."
 
-#: C/gtkmm-tutorial-in.xml:2503(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2468
+#, fuzzy
+#| msgid ""
+#| "Here is some example code from <filename>gtkmm/demos/gtk-demo/"
+#| "example_icontheme.cc</filename>, which has a pixbuf icon and a text name "
+#| "in the same column:"
 msgid ""
-"Here is some example code from <filename>gtkmm/demos/gtk-demo/"
-"example_icontheme.cc</filename>, which has a pixbuf icon and a text name in "
-"the same column:"
+"Here is some example code, which has a pixbuf icon and a text name in the "
+"same column:"
 msgstr ""
 "Aquí hay algo de código de ejemplo de <filename>gtkmm/demos/gtk-demo/"
 "example_icontheme.cc</filename>, que tiene un icono pixbuf y un nombre de "
 "texto en la misma columna:"
 
-#: C/gtkmm-tutorial-in.xml:2508(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2471
 #, no-wrap
+#| msgid ""
+#| "Gtk::TreeView::Column* pColumn =\n"
+#| "  Gtk::manage(new Gtk::TreeView::Column(\"Icon Name\"));\n"
+#| "\n"
+#| "// m_columns.icon and m_columns.iconname are columns in the model.\n"
+#| "// pColumn is the column in the TreeView:\n"
+#| "pColumn-&gt;pack_start(m_columns.icon, /* expand= */ false);\n"
+#| "pColumn-&gt;pack_start(m_columns.iconname);\n"
+#| "\n"
+#| "m_TreeView.append_column(*pColumn);"
 msgid ""
-"Gtk::TreeView::Column* pColumn =\n"
-"  Gtk::manage(new Gtk::TreeView::Column(\"Icon Name\"));\n"
+"\n"
+"auto pColumn = Gtk::make_managed&lt;Gtk::TreeView::Column&gt;(\"Icon Name\");\n"
 "\n"
 "// m_columns.icon and m_columns.iconname are columns in the model.\n"
 "// pColumn is the column in the TreeView:\n"
@@ -4523,8 +6076,8 @@ msgid ""
 "\n"
 "m_TreeView.append_column(*pColumn);"
 msgstr ""
-"Gtk::TreeView::Column* pColumn =\n"
-"  Gtk::manage(new Gtk::TreeView::Column(\"Icon Name\"));\n"
+"\n"
+"auto pColumn = Gtk::make_managed&lt;Gtk::TreeView::Column&gt;(\"Icon Name\");\n"
 "\n"
 "// m_columns.icon and m_columns.iconname are columns in the model.\n"
 "// pColumn is the column in the TreeView:\n"
@@ -4533,11 +6086,13 @@ msgstr ""
 "\n"
 "m_TreeView.append_column(*pColumn);"
 
-#: C/gtkmm-tutorial-in.xml:2520(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2483
 msgid "Specifying CellRenderer details"
 msgstr "Especificar los detalles del CellRenderer"
 
-#: C/gtkmm-tutorial-in.xml:2521(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2484
 #, fuzzy
 #| msgid ""
 #| "The default <classname>CellRenderers</classname> and their default "
@@ -4562,28 +6117,37 @@ msgstr ""
 "que procese los datos de varias columnas de modelo a través de varios "
 "aspectos de su apariencia."
 
-#: C/gtkmm-tutorial-in.xml:2529(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2492
 #, no-wrap
-msgid ""
-"int cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n"
-"Gtk::TreeViewColumn* pColumn = m_TreeView.get_column(cols_count-1);\n"
+#| msgid ""
+#| "int cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n"
+#| "Gtk::TreeViewColumn* pColumn = m_TreeView.get_column(cols_count-1);\n"
+#| "if(pColumn)\n"
+#| "{\n"
+#| "  Gtk::CellRendererToggle* pRenderer =\n"
+#| "    static_cast&lt;Gtk::CellRendererToggle*&gt;(pColumn-&gt;get_first_cell());\n"
+#| "  pColumn-&gt;add_attribute(pRenderer-&gt;property_visible(), m_columns.visible);\n"
+#| "  pColumn-&gt;add_attribute(pRenderer-&gt;property_activatable(), m_columns.world);"
+msgid ""
+"auto cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n"
+"auto pColumn = m_TreeView.get_column(cols_count-1);\n"
 "if(pColumn)\n"
 "{\n"
-"  Gtk::CellRendererToggle* pRenderer =\n"
-"    static_cast&lt;Gtk::CellRendererToggle*&gt;(pColumn-&gt;get_first_cell());\n"
+"  auto pRenderer = static_cast&lt;Gtk::CellRendererToggle*&gt;(pColumn-&gt;get_first_cell());\n"
 "  pColumn-&gt;add_attribute(pRenderer-&gt;property_visible(), m_columns.visible);\n"
 "  pColumn-&gt;add_attribute(pRenderer-&gt;property_activatable(), m_columns.world);"
 msgstr ""
-"int cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n"
-"Gtk::TreeViewColumn* pColumn = m_TreeView.get_column(cols_count-1);\n"
+"auto cols_count = m_TreeView.append_column_editable(\"Alex\", m_columns.alex);\n"
+"auto pColumn = m_TreeView.get_column(cols_count-1);\n"
 "if(pColumn)\n"
 "{\n"
-"  Gtk::CellRendererToggle* pRenderer =\n"
-"    static_cast&lt;Gtk::CellRendererToggle*&gt;(pColumn-&gt;get_first_cell());\n"
+"  auto pRenderer = static_cast&lt;Gtk::CellRendererToggle*&gt;(pColumn-&gt;get_first_cell());\n"
 "  pColumn-&gt;add_attribute(pRenderer-&gt;property_visible(), m_columns.visible);\n"
 "  pColumn-&gt;add_attribute(pRenderer-&gt;property_activatable(), m_columns.world);"
 
-#: C/gtkmm-tutorial-in.xml:2538(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2500
 msgid ""
 "You can also connect to <classname>CellRenderer</classname> signals to "
 "detect user actions. For instance:"
@@ -4591,36 +6155,58 @@ msgstr ""
 "También puede conectarle señales a un <classname>CellRenderer</classname> "
 "para detectar las acciones del usuario. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:2542(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2504
 #, no-wrap
+#| msgid ""
+#| "Gtk::CellRendererToggle* pRenderer =\n"
+#| "    Gtk::manage( new Gtk::CellRendererToggle() );\n"
+#| "pRenderer-&gt;signal_toggled().connect(\n"
+#| "    sigc::bind( sigc::mem_fun(*this,\n"
+#| "        &amp;Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave)\n"
+#| ");"
 msgid ""
-"Gtk::CellRendererToggle* pRenderer =\n"
-"    Gtk::manage( new Gtk::CellRendererToggle() );\n"
+"\n"
+"auto pRenderer = Gtk::make_managed&lt;Gtk::CellRendererToggle&gt;();\n"
 "pRenderer-&gt;signal_toggled().connect(\n"
 "    sigc::bind( sigc::mem_fun(*this,\n"
 "        &amp;Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave)\n"
 ");"
 msgstr ""
-"Gtk::CellRendererToggle* pRenderer =\n"
-"    Gtk::manage( new Gtk::CellRendererToggle() );\n"
+"\n"
+"auto pRenderer = Gtk::make_managed&lt;Gtk::CellRendererToggle&gt;();\n"
 "pRenderer-&gt;signal_toggled().connect(\n"
 "    sigc::bind( sigc::mem_fun(*this,\n"
 "        &amp;Example_TreeView_TreeStore::on_cell_toggled), m_columns.dave)\n"
 ");"
 
-#: C/gtkmm-tutorial-in.xml:2551(title) C/gtkmm-tutorial-in.xml:2890(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2513 C/index-in.docbook:2876
 msgid "Editable Cells"
 msgstr "Celdas editables"
 
-#: C/gtkmm-tutorial-in.xml:2554(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:2516
 msgid "Automatically-stored editable cells."
 msgstr "Celdas editables guardadas automáticamente."
 
-#: C/gtkmm-tutorial-in.xml:2555(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2517
+#, fuzzy
+#| msgid ""
+#| "Cells in a <classname>TreeView</classname> can be edited in-place by the "
+#| "user. To allow this, use the <classname>Gtk::TreeView</"
+#| "classname><methodname>insert_column_editable()</methodname> and "
+#| "<methodname>append_column_editable()</methodname> methods instead of "
+#| "<methodname>insert_column()</methodname> and <methodname>append_column()</"
+#| "methodname>. When these cells are edited the new values will be stored "
+#| "immediately in the Model. Note that these methods are templates which can "
+#| "only be instantiated for simple column types such as <classname>Glib::"
+#| "ustring</classname>, int, and long."
 msgid ""
 "Cells in a <classname>TreeView</classname> can be edited in-place by the "
-"user. To allow this, use the <classname>Gtk::TreeView</"
-"classname><methodname>insert_column_editable()</methodname> and "
+"user. To allow this, use the <classname>Gtk::TreeView</classname> "
+"<methodname>insert_column_editable()</methodname> and "
 "<methodname>append_column_editable()</methodname> methods instead of "
 "<methodname>insert_column()</methodname> and <methodname>append_column()</"
 "methodname>. When these cells are edited the new values will be stored "
@@ -4638,11 +6224,13 @@ msgstr ""
 "plantillas que sólo se pueden instanciar para tipos de columnas simples como "
 "<classname>Glib::ustring</classname>, int, y long."
 
-#: C/gtkmm-tutorial-in.xml:2569(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:2531
 msgid "Implementing custom logic for editable cells."
 msgstr "Implementación de la lógica personalizada para celdas editables."
 
-#: C/gtkmm-tutorial-in.xml:2570(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2532
 msgid ""
 "However, you might not want the new values to be stored immediately. For "
 "instance, maybe you want to restrict the input to certain characters or "
@@ -4652,10 +6240,18 @@ msgstr ""
 "inmediatamente. Por ejemplo, tal vez quiera restringir la entrada a ciertos "
 "caracteres o rangos de valores."
 
-#: C/gtkmm-tutorial-in.xml:2575(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2537
+#, fuzzy
+#| msgid ""
+#| "To achieve this, you should use the normal <classname>Gtk::TreeView</"
+#| "classname><methodname>insert_column()</methodname> and "
+#| "<methodname>append_column()</methodname> methods, then use "
+#| "<methodname>get_column_cell_renderer()</methodname> to get the "
+#| "<classname>Gtk::CellRenderer</classname> used by that column."
 msgid ""
 "To achieve this, you should use the normal <classname>Gtk::TreeView</"
-"classname><methodname>insert_column()</methodname> and "
+"classname> <methodname>insert_column()</methodname> and "
 "<methodname>append_column()</methodname> methods, then use "
 "<methodname>get_column_cell_renderer()</methodname> to get the "
 "<classname>Gtk::CellRenderer</classname> used by that column."
@@ -4666,7 +6262,8 @@ msgstr ""
 "methodname> para obtener el <classname>Gtk::CellRenderer</classname> que usa "
 "esa columna."
 
-#: C/gtkmm-tutorial-in.xml:2581(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2543
 msgid ""
 "You should then cast that <classname>Gtk::CellRenderer*</classname> to the "
 "specific <classname>CellRenderer</classname> that you expect, so you can use "
@@ -4676,7 +6273,8 @@ msgstr ""
 "<classname>CellRenderer</classname> específico que espera, para que pueda "
 "usar la API específica."
 
-#: C/gtkmm-tutorial-in.xml:2585(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2547
 msgid ""
 "For instance, for a CellRendererText, you would set the cell's "
 "<emphasis>editable</emphasis> property to true, like so:"
@@ -4684,12 +6282,15 @@ msgstr ""
 "Por ejemplo, para un CellRendererText, establecería la propiedad "
 "<emphasis>editable</emphasis> de la celda a «true», así:"
 
-#: C/gtkmm-tutorial-in.xml:2588(programlisting)
-#, no-wrap
-msgid "cell.property_editable() = true;"
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:2550
+#, fuzzy, no-wrap
+#| msgid "cell.property_editable() = true;"
+msgid "cell-&gt;property_editable() = true;"
 msgstr "cell.property_editable() = true;"
 
-#: C/gtkmm-tutorial-in.xml:2589(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2551
 msgid ""
 "For a CellRendererToggle, you would set the <emphasis>activatable</emphasis> "
 "property instead."
@@ -4697,15 +6298,24 @@ msgstr ""
 "Para un CellRendererToggle, establecería la propiedad <emphasis>activable</"
 "emphasis> en su lugar."
 
-#: C/gtkmm-tutorial-in.xml:2593(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2555
+#, fuzzy
+#| msgid ""
+#| "You can then connect to the appropriate \"edited\" signal. For instance, "
+#| "connect to <methodname>Gtk::CellRendererText::signal_edited()</"
+#| "methodname>, or <methodname>Gtk::CellRendererToggle::signal_toggled()</"
+#| "methodname>. If the column contains more than one "
+#| "<classname>CellRenderer</classname> then you will need to use "
+#| "<methodname>Gtk::TreeView::get_column()</methodname> and then call "
+#| "<methodname>get_cell_renderers()</methodname> on that view Column."
 msgid ""
 "You can then connect to the appropriate \"edited\" signal. For instance, "
 "connect to <methodname>Gtk::CellRendererText::signal_edited()</methodname>, "
 "or <methodname>Gtk::CellRendererToggle::signal_toggled()</methodname>. If "
 "the column contains more than one <classname>CellRenderer</classname> then "
 "you will need to use <methodname>Gtk::TreeView::get_column()</methodname> "
-"and then call <methodname>get_cell_renderers()</methodname> on that view "
-"Column."
+"and then call <methodname>get_cells()</methodname> on that view Column."
 msgstr ""
 "Entonces, puede conectar la señal «edited» apropiada. Por ejemplo, "
 "conectarlo a <methodname>Gtk::CellRendererText::signal_edited()</"
@@ -4715,19 +6325,22 @@ msgstr ""
 "get_column()</methodname> y luego llamar a <methodname>get_cell_renderers()</"
 "methodname> en esa columna de la vista."
 
-#: C/gtkmm-tutorial-in.xml:2601(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:2563
 msgid ""
 "In your signal handler, you should examine the new value and then store it "
 "in the Model if that is appropriate for your application."
 msgstr ""
-"En su gestor de señales, debe examinar el valor nuevo y luego almacenarlo "
-"en el modelo, si eso es lo apropiado para su aplicación."
+"En su gestor de señales, debe examinar el valor nuevo y luego almacenarlo en "
+"el modelo, si eso es lo apropiado para su aplicación."
 
-#: C/gtkmm-tutorial-in.xml:2613(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:2575
 msgid "Iterating over Model Rows"
 msgstr "Iterar sobre las filas del modelo"
 
-#: C/gtkmm-tutorial-in.xml:2614(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2576
 msgid ""
 "<classname>Gtk::TreeModel</classname> provides a C++ Standard Library-style "
 "container of its children, via the <methodname>children()</methodname> "
@@ -4740,53 +6353,95 @@ msgstr ""
 "familiares de los métodos <methodname>begin()</methodname> y "
 "<methodname>end()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2620(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:2582
+#, no-wrap
+#| msgid ""
+#| "typedef Gtk::TreeModel::Children type_children; //minimise code length.\n"
+#| "type_children children = refModel-&gt;children();\n"
+#| "for(type_children::iterator iter = children.begin();\n"
+#| "    iter != children.end(); ++iter)\n"
+#| "{\n"
+#| "  Gtk::TreeModel::Row row = *iter;\n"
+#| "  //Do something with the row - see above for set/get.\n"
+#| "}"
+msgid ""
+"\n"
+"auto children = refModel-&gt;children();\n"
+"for (auto iter = children.begin(), end = children.end(); iter != end; ++iter)\n"
+"{\n"
+"  auto row = *iter;\n"
+"  //Do something with the row - see above for set/get.\n"
+"}"
+msgstr ""
+"\n"
+"auto children = refModel-&gt;children();\n"
+"for (auto iter = children.begin(), end = children.end(); iter != end; ++iter)\n"
+"{\n"
+"  auto row = *iter;\n"
+"  //Do something with the row - see above for set/get.\n"
+"}"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2589
+msgid ""
+"If you always want to iterate across the entire range, much more succinct "
+"syntax is possible using C++'s range-based <literal>for</literal> loop:"
+msgstr ""
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:2593
 #, no-wrap
 msgid ""
-"typedef Gtk::TreeModel::Children type_children; //minimise code length.\n"
-"type_children children = refModel-&gt;children();\n"
-"for(type_children::iterator iter = children.begin();\n"
-"    iter != children.end(); ++iter)\n"
+"\n"
+"for (auto row: refModel-&gt;children())\n"
 "{\n"
-"  Gtk::TreeModel::Row row = *iter;\n"
 "  //Do something with the row - see above for set/get.\n"
 "}"
 msgstr ""
-"typedef Gtk::TreeModel::Children type_children; //minimise code length.\n"
-"type_children children = refModel-&gt;children();\n"
-"for(type_children::iterator iter = children.begin();\n"
-"    iter != children.end(); ++iter)\n"
+"\n"
+"for (auto row: refModel-&gt;children())\n"
 "{\n"
-"  Gtk::TreeModel::Row row = *iter;\n"
 "  //Do something with the row - see above for set/get.\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:2630(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2600
 msgid "Row children"
 msgstr "Fila hija"
 
-#: C/gtkmm-tutorial-in.xml:2635(programlisting)
-#, no-wrap
-msgid "Gtk::TreeModel::Children children = row.children();"
-msgstr "Gtk::TreeModel::Children children = row.children();"
-
-#: C/gtkmm-tutorial-in.xml:2631(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2601
+#, fuzzy
+#| msgid ""
+#| "When using a <classname>Gtk::TreeStore</classname>, the rows can have "
+#| "child rows, which can have their own children in turn. Use "
+#| "<methodname>Gtk::TreeModel::Row::children()</methodname> to get the "
+#| "container of child <classname>Row</classname>s: <placeholder-1/>"
 msgid ""
 "When using a <classname>Gtk::TreeStore</classname>, the rows can have child "
 "rows, which can have their own children in turn. Use <methodname>Gtk::"
 "TreeModel::Row::children()</methodname> to get the container of child "
-"<classname>Row</classname>s: <placeholder-1/>"
+"<classname>Row</classname>s:"
 msgstr ""
 "Cuando usa un <classname>Gtk::TreeStore</classname>, las filas pueden tener "
 "filas hijas, que a su vez pueden tener sus propios hijos. Use "
 "<methodname>Gtk::TreeModel::Row::children()</methodname> para obtener el "
 "contenedor de las <classname>Row</classname> hijas: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:2642(title)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2606
+#, no-wrap
+msgid "Gtk::TreeModel::Children children = row.children();"
+msgstr "Gtk::TreeModel::Children children = row.children();"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:2612
 msgid "The Selection"
 msgstr "La selección"
 
-#: C/gtkmm-tutorial-in.xml:2643(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2613
 msgid ""
 "To find out what rows the user has selected, get the <classname>Gtk::"
 "TreeView::Selection</classname> object from the <classname>TreeView</"
@@ -4796,38 +6451,49 @@ msgstr ""
 "<classname>Gtk::TreeView::Selection</classname> del <classname>TreeView</"
 "classname>, así:"
 
-#: C/gtkmm-tutorial-in.xml:2648(programlisting)
-#, no-wrap
-msgid ""
-"Glib::RefPtr&lt;Gtk::TreeSelection&gt; refTreeSelection =\n"
-"    m_TreeView.get_selection();"
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:2618
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Glib::RefPtr&lt;Gtk::TreeSelection&gt; refTreeSelection =\n"
+#| "    m_TreeView.get_selection();"
+msgid "auto refTreeSelection = m_TreeView.get_selection();"
 msgstr ""
 "Glib::RefPtr&lt;Gtk::TreeSelection&gt; refTreeSelection =\n"
 "    m_TreeView.get_selection();"
 
-#: C/gtkmm-tutorial-in.xml:2652(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2621
 msgid "Single or multiple selection"
 msgstr "Selección única o múltiple"
 
-#: C/gtkmm-tutorial-in.xml:2656(programlisting)
-#, no-wrap
-msgid "refTreeSelection-&gt;set_mode(Gtk::SELECTION_MULTIPLE);"
-msgstr "refTreeSelection-&gt;set_mode(Gtk::SELECTION_MULTIPLE);"
-
-#: C/gtkmm-tutorial-in.xml:2653(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2622
+#, fuzzy
+#| msgid ""
+#| "By default, only single rows can be selected, but you can allow multiple "
+#| "selection by setting the mode, like so: <placeholder-1/>"
 msgid ""
 "By default, only single rows can be selected, but you can allow multiple "
-"selection by setting the mode, like so: <placeholder-1/>"
+"selection by setting the mode, like so:"
 msgstr ""
 "De manera predeterminada, sólo se pueden seleccionar filas únicas, pero "
 "puede permitir la selección múltiple estableciendo el modo, así: "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:2661(title)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2626
+#, no-wrap
+msgid "refTreeSelection-&gt;set_mode(Gtk::SELECTION_MULTIPLE);"
+msgstr "refTreeSelection-&gt;set_mode(Gtk::SELECTION_MULTIPLE);"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2630
 msgid "The selected rows"
 msgstr "Las filas seleccionadas"
 
-#: C/gtkmm-tutorial-in.xml:2662(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2631
 msgid ""
 "For single-selection, you can just call <methodname>get_selected()</"
 "methodname>, like so:"
@@ -4835,26 +6501,42 @@ msgstr ""
 "Para la selección simple, puede simplemente llamar "
 "<methodname>get_selected()</methodname>, así:"
 
-#: C/gtkmm-tutorial-in.xml:2666(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2635
 #, no-wrap
-msgid ""
-"TreeModel::iterator iter = refTreeSelection-&gt;get_selected();\n"
+#| msgid ""
+#| "TreeModel::iterator iter = refTreeSelection-&gt;get_selected();\n"
+#| "if(iter) //If anything is selected\n"
+#| "{\n"
+#| "  TreeModel::Row row = *iter;\n"
+#| "  //Do something with the row.\n"
+#| "}"
+msgid ""
+"auto iter = refTreeSelection-&gt;get_selected();\n"
 "if(iter) //If anything is selected\n"
 "{\n"
-"  TreeModel::Row row = *iter;\n"
+"  auto row = *iter;\n"
 "  //Do something with the row.\n"
 "}"
 msgstr ""
-"TreeModel::iterator iter = refTreeSelection-&gt;get_selected();\n"
+"auto iter = refTreeSelection-&gt;get_selected();\n"
 "if(iter) //If anything is selected\n"
 "{\n"
-"  TreeModel::Row row = *iter;\n"
+"  auto row = *iter;\n"
 "  //Do something with the row.\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:2673(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2642
+#, fuzzy
+#| msgid ""
+#| "For multiple-selection, you need to define a callback, and give it to "
+#| "<methodname>selected_foreach()</methodname>, "
+#| "<methodname>selected_foreach_path()</methodname>, or "
+#| "<methodname>selected_foreach_iter()</methodname>, like so:"
 msgid ""
-"For multiple-selection, you need to define a callback, and give it to "
+"For multiple-selection, you need to call <methodname>get_selected_rows()</"
+"methodname> or define a callback, and give it to "
 "<methodname>selected_foreach()</methodname>, "
 "<methodname>selected_foreach_path()</methodname>, or "
 "<methodname>selected_foreach_iter()</methodname>, like so:"
@@ -4864,16 +6546,27 @@ msgstr ""
 "<methodname>selected_foreach_path()</methodname>, o "
 "<methodname>selected_foreach_iter()</methodname>, así:"
 
-#: C/gtkmm-tutorial-in.xml:2679(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2649
 #, no-wrap
+#| msgid ""
+#| "refTreeSelection-&gt;selected_foreach_iter(\n"
+#| "    sigc::mem_fun(*this, &amp;TheClass::selected_row_callback) );\n"
+#| "\n"
+#| "void TheClass::selected_row_callback(\n"
+#| "    const Gtk::TreeModel::iterator&amp; iter)\n"
+#| "{\n"
+#| "  TreeModel::Row row = *iter;\n"
+#| "  //Do something with the row.\n"
+#| "}"
 msgid ""
 "refTreeSelection-&gt;selected_foreach_iter(\n"
 "    sigc::mem_fun(*this, &amp;TheClass::selected_row_callback) );\n"
 "\n"
 "void TheClass::selected_row_callback(\n"
-"    const Gtk::TreeModel::iterator&amp; iter)\n"
+"    const Gtk::TreeModel::const_iterator&amp; iter)\n"
 "{\n"
-"  TreeModel::Row row = *iter;\n"
+"  auto row = *iter;\n"
 "  //Do something with the row.\n"
 "}"
 msgstr ""
@@ -4881,17 +6574,19 @@ msgstr ""
 "    sigc::mem_fun(*this, &amp;TheClass::selected_row_callback) );\n"
 "\n"
 "void TheClass::selected_row_callback(\n"
-"    const Gtk::TreeModel::iterator&amp; iter)\n"
+"    const Gtk::TreeModel::const_iterator&amp; iter)\n"
 "{\n"
-"  TreeModel::Row row = *iter;\n"
+"  auto row = *iter;\n"
 "  //Do something with the row.\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:2692(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2662
 msgid "The \"changed\" signal"
 msgstr "La señal «changed»"
 
-#: C/gtkmm-tutorial-in.xml:2693(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2663
 msgid ""
 "To respond to the user clicking on a row or range of rows, connect to the "
 "signal like so:"
@@ -4899,7 +6594,8 @@ msgstr ""
 "Para responder a la pulsación del usuario en una fila o un rango de filas, "
 "conéctese a la señal así:"
 
-#: C/gtkmm-tutorial-in.xml:2697(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2667
 #, no-wrap
 msgid ""
 "refTreeSelection-&gt;signal_changed().connect(\n"
@@ -4910,11 +6606,13 @@ msgstr ""
 "    sigc::mem_fun(*this, &amp;Example_IconTheme::on_selection_changed)\n"
 ");"
 
-#: C/gtkmm-tutorial-in.xml:2703(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2673
 msgid "Preventing row selection"
 msgstr "Evitar la selección de la fila"
 
-#: C/gtkmm-tutorial-in.xml:2704(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2674
 msgid ""
 "Maybe the user should not be able to select every item in your list or tree. "
 "For instance, in the gtk-demo, you can select a demo to see the source code, "
@@ -4925,7 +6623,8 @@ msgstr ""
 "demostración para ver su código fuente, pero no tiene ningún sentido "
 "seleccionar una categoría de demostraciones."
 
-#: C/gtkmm-tutorial-in.xml:2709(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2679
 msgid ""
 "To control which rows can be selected, use the "
 "<methodname>set_select_function()</methodname> method, providing a "
@@ -4935,7 +6634,8 @@ msgstr ""
 "<methodname>set_select_function()</methodname>, proporcionándole un retorno "
 "de llamada <classname>sigc::slot</classname>. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:2714(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2684
 #, no-wrap
 msgid ""
 "m_refTreeSelection-&gt;set_select_function( sigc::mem_fun(*this,\n"
@@ -4944,18 +6644,28 @@ msgstr ""
 "m_refTreeSelection-&gt;set_select_function( sigc::mem_fun(*this,\n"
 "    &amp;DemoWindow::select_function) );"
 
-#: C/gtkmm-tutorial-in.xml:2716(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2686
 msgid "and then"
 msgstr "Y luego"
 
-#: C/gtkmm-tutorial-in.xml:2719(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2689
 #, no-wrap
+#| msgid ""
+#| "bool DemoWindow::select_function(\n"
+#| "    const Glib::RefPtr&lt;Gtk::TreeModel&gt;&amp; model,\n"
+#| "    const Gtk::TreeModel::Path&amp; path, bool)\n"
+#| "{\n"
+#| "  const Gtk::TreeModel::iterator iter = model-&gt;get_iter(path);\n"
+#| "  return iter-&gt;children().empty(); // only allow leaf nodes to be selected\n"
+#| "}"
 msgid ""
 "bool DemoWindow::select_function(\n"
 "    const Glib::RefPtr&lt;Gtk::TreeModel&gt;&amp; model,\n"
 "    const Gtk::TreeModel::Path&amp; path, bool)\n"
 "{\n"
-"  const Gtk::TreeModel::iterator iter = model-&gt;get_iter(path);\n"
+"  const auto iter = model-&gt;get_iter(path);\n"
 "  return iter-&gt;children().empty(); // only allow leaf nodes to be selected\n"
 "}"
 msgstr ""
@@ -4963,15 +6673,17 @@ msgstr ""
 "    const Glib::RefPtr&lt;Gtk::TreeModel&gt;&amp; model,\n"
 "    const Gtk::TreeModel::Path&amp; path, bool)\n"
 "{\n"
-"  const Gtk::TreeModel::iterator iter = model-&gt;get_iter(path);\n"
+"  const auto iter = model-&gt;get_iter(path);\n"
 "  return iter-&gt;children().empty(); // only allow leaf nodes to be selected\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:2729(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2699
 msgid "Changing the selection"
 msgstr "Cambiar la selección"
 
-#: C/gtkmm-tutorial-in.xml:2730(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2700
 msgid ""
 "To change the selection, specify a <classname>Gtk::TreeModel::iterator</"
 "classname> or <classname>Gtk::TreeModel::Row</classname>, like so:"
@@ -4979,37 +6691,50 @@ msgstr ""
 "Para cambiar la selección, especifique un <classname>Gtk::TreeModel::"
 "iterator</classname> o un <classname>Gtk::TreeModel::Row</classname>, así:"
 
-#: C/gtkmm-tutorial-in.xml:2735(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2705
 #, no-wrap
+#| msgid ""
+#| "Gtk::TreeModel::Row row = m_refModel-&gt;children()[5]; //The fifth row.\n"
+#| "if(row)\n"
+#| "  refTreeSelection-&gt;select(row);"
 msgid ""
-"Gtk::TreeModel::Row row = m_refModel-&gt;children()[5]; //The fifth row.\n"
+"auto row = m_refModel-&gt;children()[5]; //The sixth row.\n"
 "if(row)\n"
-"  refTreeSelection-&gt;select(row);"
+"  refTreeSelection-&gt;select(row.get_iter());"
 msgstr ""
-"Gtk::TreeModel::Row row = m_refModel-&gt;children()[5]; //The fifth row.\n"
+"auto row = m_refModel-&gt;children()[5]; //The sixth row.\n"
 "if(row)\n"
-"  refTreeSelection-&gt;select(row);"
+"  refTreeSelection-&gt;select(row.get_iter());"
 
-#: C/gtkmm-tutorial-in.xml:2738(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2708
 msgid "or"
 msgstr "o"
 
-#: C/gtkmm-tutorial-in.xml:2741(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2711
 #, no-wrap
+#| msgid ""
+#| "Gtk::TreeModel::iterator iter = m_refModel-&gt;children().begin()\n"
+#| "if(iter)\n"
+#| "  refTreeSelection-&gt;select(iter);"
 msgid ""
-"Gtk::TreeModel::iterator iter = m_refModel-&gt;children().begin()\n"
+"auto iter = m_refModel-&gt;children().begin()\n"
 "if(iter)\n"
 "  refTreeSelection-&gt;select(iter);"
 msgstr ""
-"Gtk::TreeModel::iterator iter = m_refModel-&gt;children().begin()\n"
+"auto iter = m_refModel-&gt;children().begin()\n"
 "if(iter)\n"
 "  refTreeSelection-&gt;select(iter);"
 
-#: C/gtkmm-tutorial-in.xml:2750(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:2720
 msgid "Sorting"
 msgstr "Ordenar"
 
-#: C/gtkmm-tutorial-in.xml:2751(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2721
 msgid ""
 "The standard tree models (<classname>TreeStore</classname> and "
 "<classname>ListStore</classname>) derive from <classname>TreeSortable</"
@@ -5027,15 +6752,20 @@ msgstr ""
 "<methodname>set_sort_func()</methodname> para implementar un algoritmo de "
 "ordenación más complejo."
 
-#: C/gtkmm-tutorial-in.xml:2755(ulink)
-msgid "TreeSortable Reference"
-msgstr "Referencia de TreeSortable"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2725
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1TreeSortable.html\">TreeSortable Reference</ulink>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:2758(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2728
 msgid "Sorting by clicking on columns"
 msgstr "Ordenación al pulsar en columnas"
 
-#: C/gtkmm-tutorial-in.xml:2759(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2729
 #, fuzzy
 #| msgid ""
 #| "So that a user can click on a <classname>TreeView</classname>'s column "
@@ -5056,28 +6786,46 @@ msgstr ""
 "set_sort_column()</methodname>, proporcionando al modelo la columna por la "
 "que se deba ordenar cuando se pulse sobre la cabecera. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:2762(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2732
 #, no-wrap
+#| msgid ""
+#| "Gtk::TreeView::Column* pColumn = treeview.get_column(0);\n"
+#| "if(pColumn)\n"
+#| "  pColumn-&gt;set_sort_column(m_columns.m_col_id);"
 msgid ""
-"Gtk::TreeView::Column* pColumn = treeview.get_column(0);\n"
+"auto pColumn = treeview.get_column(0);\n"
 "if(pColumn)\n"
 "  pColumn-&gt;set_sort_column(m_columns.m_col_id);"
 msgstr ""
-"Gtk::TreeView::Column* pColumn = treeview.get_column(0);\n"
+"auto pColumn = treeview.get_column(0);\n"
 "if(pColumn)\n"
 "  pColumn-&gt;set_sort_column(m_columns.m_col_id);"
 
-#: C/gtkmm-tutorial-in.xml:2768(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2738
 msgid "Independently sorted views of the same model"
 msgstr "Vistas ordenadas independientemente del mismo modelo"
 
-#: C/gtkmm-tutorial-in.xml:2769(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2739
+#, fuzzy
+#| msgid ""
+#| "The <classname>TreeView</classname> already allows you to show the same "
+#| "<classname>TreeModel</classname> in two <classname>TreeView</classname> "
+#| "widgets. If you need one of these TreeViews to sort the model differently "
+#| "than the other then you should use a <classname>TreeModelSort</classname> "
+#| "instead of just, for instance, <methodname>Gtk::TreeViewModel::"
+#| "set_sort_column()</methodname>. <classname>TreeModelSort</classname> is a "
+#| "model that contains another model, presenting a sorted version of that "
+#| "model. For instance, you might add a sorted version of a model to a "
+#| "<classname>TreeView</classname> like so:"
 msgid ""
 "The <classname>TreeView</classname> already allows you to show the same "
 "<classname>TreeModel</classname> in two <classname>TreeView</classname> "
 "widgets. If you need one of these TreeViews to sort the model differently "
 "than the other then you should use a <classname>TreeModelSort</classname> "
-"instead of just, for instance, <methodname>Gtk::TreeViewModel::"
+"instead of just, for instance, <methodname>Gtk::TreeViewColumn::"
 "set_sort_column()</methodname>. <classname>TreeModelSort</classname> is a "
 "model that contains another model, presenting a sorted version of that "
 "model. For instance, you might add a sorted version of a model to a "
@@ -5093,20 +6841,25 @@ msgstr ""
 "modelo. Por ejemplo, puede añadir una versión ordenada de un modelo a un "
 "<classname>TreeView</classname> así:"
 
-#: C/gtkmm-tutorial-in.xml:2772(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2747
 #, no-wrap
+#| msgid ""
+#| "Glib::RefPtr&lt;Gtk::TreeModelSort&gt; sorted_model =\n"
+#| "    Gtk::TreeModelSort::create(model);\n"
+#| "sorted_model-&gt;set_sort_column(columns.m_col_name, Gtk::SORT_ASCENDING);\n"
+#| "treeview.set_model(sorted_model);"
 msgid ""
-"Glib::RefPtr&lt;Gtk::TreeModelSort&gt; sorted_model =\n"
-"    Gtk::TreeModelSort::create(model);\n"
+"auto sorted_model = Gtk::TreeModelSort::create(model);\n"
 "sorted_model-&gt;set_sort_column(columns.m_col_name, Gtk::SORT_ASCENDING);\n"
 "treeview.set_model(sorted_model);"
 msgstr ""
-"Glib::RefPtr&lt;Gtk::TreeModelSort&gt; sorted_model =\n"
-"    Gtk::TreeModelSort::create(model);\n"
+"auto sorted_model = Gtk::TreeModelSort::create(model);\n"
 "sorted_model-&gt;set_sort_column(columns.m_col_name, Gtk::SORT_ASCENDING);\n"
 "treeview.set_model(sorted_model);"
 
-#: C/gtkmm-tutorial-in.xml:2777(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2751
 msgid ""
 "Note, however, that the TreeView will provide iterators to the sorted model. "
 "You must convert them to iterators to the underlying child model in order to "
@@ -5116,21 +6869,36 @@ msgstr ""
 "al modelo ordenado. Debe convertirlos a iteradores del modelo hijo "
 "subyacente para llevar a cabo acciones en ese modelo. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:2779(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:2753
 #, no-wrap
+#| msgid ""
+#| "void ExampleWindow::on_button_delete()\n"
+#| "{\n"
+#| "  Glib::RefPtr&lt;Gtk::TreeSelection&gt; refTreeSelection =\n"
+#| "      m_treeview.get_selection();\n"
+#| "  if(refTreeSelection)\n"
+#| "  {\n"
+#| "    Gtk::TreeModel::iterator sorted_iter =\n"
+#| "        m_refTreeSelection-&gt;get_selected();\n"
+#| "    if(sorted_iter)\n"
+#| "    {\n"
+#| "      Gtk::TreeModel::iterator iter =\n"
+#| "          m_refModelSort-&gt;convert_iter_to_child_iter(sorted_iter);\n"
+#| "      m_refModel-&gt;erase(iter);\n"
+#| "    }\n"
+#| "  }\n"
+#| "}"
 msgid ""
 "void ExampleWindow::on_button_delete()\n"
 "{\n"
-"  Glib::RefPtr&lt;Gtk::TreeSelection&gt; refTreeSelection =\n"
-"      m_treeview.get_selection();\n"
+"  auto refTreeSelection = m_treeview.get_selection();\n"
 "  if(refTreeSelection)\n"
 "  {\n"
-"    Gtk::TreeModel::iterator sorted_iter =\n"
-"        m_refTreeSelection-&gt;get_selected();\n"
+"    auto sorted_iter = m_refTreeSelection-&gt;get_selected();\n"
 "    if(sorted_iter)\n"
 "    {\n"
-"      Gtk::TreeModel::iterator iter =\n"
-"          m_refModelSort-&gt;convert_iter_to_child_iter(sorted_iter);\n"
+"      auto iter = m_refModelSort-&gt;convert_iter_to_child_iter(sorted_iter);\n"
 "      m_refModel-&gt;erase(iter);\n"
 "    }\n"
 "  }\n"
@@ -5138,32 +6906,36 @@ msgid ""
 msgstr ""
 "void ExampleWindow::on_button_delete()\n"
 "{\n"
-"  Glib::RefPtr&lt;Gtk::TreeSelection&gt; refTreeSelection =\n"
-"      m_treeview.get_selection();\n"
+"  auto refTreeSelection = m_treeview.get_selection();\n"
 "  if(refTreeSelection)\n"
 "  {\n"
-"    Gtk::TreeModel::iterator sorted_iter =\n"
-"        m_refTreeSelection-&gt;get_selected();\n"
+"    auto sorted_iter = m_refTreeSelection-&gt;get_selected();\n"
 "    if(sorted_iter)\n"
 "    {\n"
-"      Gtk::TreeModel::iterator iter =\n"
-"          m_refModelSort-&gt;convert_iter_to_child_iter(sorted_iter);\n"
+"      auto iter = m_refModelSort-&gt;convert_iter_to_child_iter(sorted_iter);\n"
 "      m_refModel-&gt;erase(iter);\n"
 "    }\n"
 "  }\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:2796(ulink)
-msgid "TreeModelSort Reference"
-msgstr "Referencia de TreeModelSort"
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2767
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1TreeModelSort.html\">TreeModelSort Reference</ulink>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:2802(title) C/gtkmm-tutorial-in.xml:2909(title)
-#: C/gtkmm-tutorial-in.xml:3576(title) C/gtkmm-tutorial-in.xml:4616(title)
-#: C/gtkmm-tutorial-in.xml:4780(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: sect2/title
+#. (itstool) path: chapter/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2773 C/index-in.docbook:2895 C/index-in.docbook:4611
+#: C/index-in.docbook:4764
 msgid "Drag and Drop"
 msgstr "Arrastrar y soltar"
 
-#: C/gtkmm-tutorial-in.xml:2803(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2774
 msgid ""
 "<classname>Gtk::TreeView</classname> already implements simple drag-and-drop "
 "when used with the <classname>Gtk::ListStore</classname> or <classname>Gtk::"
@@ -5178,11 +6950,13 @@ msgstr ""
 "elementos, usando la API de <link linkend=\"chapter-draganddrop\">Arrastrar "
 "y soltar</link> normal."
 
-#: C/gtkmm-tutorial-in.xml:2812(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2783
 msgid "Reorderable rows"
 msgstr "Filas reordenables"
 
-#: C/gtkmm-tutorial-in.xml:2813(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2784
 msgid ""
 "If you call <methodname>Gtk::TreeView::set_reorderable()</methodname> then "
 "your TreeView's items can be moved within the treeview itself. This is "
@@ -5192,17 +6966,29 @@ msgstr ""
 "se podrán mover los elementos de su «TreeView» dentro del «TreeView» en sí. "
 "Esto se demuestra en el ejemplo <classname>TreeStore</classname>."
 
-#: C/gtkmm-tutorial-in.xml:2818(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2789
+#, fuzzy
+#| msgid ""
+#| "However, this does not allow you any control of which items can be "
+#| "dragged, and where they can be dropped. If you need that extra control "
+#| "then you might create a derived <literal>Gtk::TreeModel</literal> from "
+#| "<literal>Gtk::TreeStore</literal> or <literal>Gtk::ListStore</literal> "
+#| "and override the <literal>Gtk::TreeDragSource::row_draggable()</literal> "
+#| "and <literal>Gdk::TreeDragDest::row_drop_possible()</literal> virtual "
+#| "methods. You can examine the <literal>Gtk::TreeModel::Path</literal>s "
+#| "provided and allow or disallow dragging or dropping by returning "
+#| "<literal>true</literal> or <literal>false</literal>."
 msgid ""
 "However, this does not allow you any control of which items can be dragged, "
 "and where they can be dropped. If you need that extra control then you might "
 "create a derived <literal>Gtk::TreeModel</literal> from <literal>Gtk::"
 "TreeStore</literal> or <literal>Gtk::ListStore</literal> and override the "
-"<literal>Gtk::TreeDragSource::row_draggable()</literal> and <literal>Gdk::"
-"TreeDragDest::row_drop_possible()</literal> virtual methods. You can examine "
-"the <literal>Gtk::TreeModel::Path</literal>s provided and allow or disallow "
-"dragging or dropping by returning <literal>true</literal> or <literal>false</"
-"literal>."
+"<literal>Gtk::TreeDragSource::row_draggable_vfunc()</literal> and "
+"<literal>Gtk::TreeDragDest::row_drop_possible_vfunc()</literal> virtual "
+"methods. You can examine the <literal>Gtk::TreeModel::Path</literal>s "
+"provided and allow or disallow dragging or dropping by returning "
+"<literal>true</literal> or <literal>false</literal>."
 msgstr ""
 "Sin embargo, esto no le permite ningún control acerca de qué elementos "
 "pueden arrastrarse, ni dónde pueden soltarse. Si necesita ese control "
@@ -5214,15 +7000,19 @@ msgstr ""
 "proporcionados y permitir o no arrastrar y soltar devolviendo <literal>true</"
 "literal> o <literal>false</literal>."
 
-#: C/gtkmm-tutorial-in.xml:2819(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2796
 msgid "This is demonstrated in the drag_and_drop example."
 msgstr "Esto se demuestra en el ejemplo «drag_and_drop»."
 
-#: C/gtkmm-tutorial-in.xml:2825(title) C/gtkmm-tutorial-in.xml:2931(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2802 C/index-in.docbook:2917
 msgid "Popup Context Menu"
 msgstr "Menú contextual emergente"
 
-#: C/gtkmm-tutorial-in.xml:2826(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2803
 msgid ""
 "Lots of people need to implement right-click context menus for "
 "<classname>TreeView</classname>'s so we will explain how to do that here to "
@@ -5236,11 +7026,13 @@ msgstr ""
 "contextual normal, tal como se describe en el <link linkend=\"sec-menus-popup"
 "\">capítulo acerca de menús</link>."
 
-#: C/gtkmm-tutorial-in.xml:2835(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2812
 msgid "Handling <literal>button_press_event</literal>"
 msgstr "Manejar <literal>button_press_event</literal>"
 
-#: C/gtkmm-tutorial-in.xml:2836(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2813
 #, fuzzy
 #| msgid ""
 #| "To detect a click of the right mouse button, you need to handle the "
@@ -5257,36 +7049,60 @@ msgid ""
 "<literal>button_press_event</literal> signal, and check exactly which button "
 "was pressed. Because the <classname>TreeView</classname> normally handles "
 "this signal completely, you need to either override the default signal "
-"handler in a derived <classname>TreeView</classname> class, or use "
-"<methodname>connect_notify()</methodname> instead of <methodname>connect()</"
-"methodname>. You probably also want to call the default handler before doing "
-"anything else, so that the right-click will cause the row to be selected "
-"first."
+"handler in a derived <classname>TreeView</classname> class, use "
+"<methodname>connect_notify()</methodname> or use <methodname>connect(slot, /"
+"* after= */ false)</methodname>. You probably also want to call the default "
+"handler before doing anything else, so that the right-click will cause the "
+"row to be selected first."
 msgstr ""
 "Para detectar la pulsación del botón derecho del ratón, debe manejar la "
 "señal <literal>button_press_event</literal>, y verificar exactamente qué "
 "botón se ha pulsado. Dado que el <classname>TreeView</classname> normalmente "
-"maneja esta señal por completo, necesitará sobrecargar el gestor de "
-"señales predeterminado en una clase <classname>TreeView</classname> derivada "
-"o bien usar el método <methodname>connect_notify()</methodname> en lugar de "
+"maneja esta señal por completo, necesitará sobrecargar el gestor de señales "
+"predeterminado en una clase <classname>TreeView</classname> derivada o bien "
+"usar el método <methodname>connect_notify()</methodname> en lugar de "
 "<methodname>connect()</methodname>. Probablemente también quiera llamar al "
-"gestor predeterminado antes de hacer nada más, para que la pulsación "
-"derecha haga que se seleccione la fila primero."
+"gestor predeterminado antes de hacer nada más, para que la pulsación derecha "
+"haga que se seleccione la fila primero."
 
-#: C/gtkmm-tutorial-in.xml:2846(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2823
 msgid "This is demonstrated in the Popup Context Menu example."
 msgstr "Esto queda demostrado en el ejemplo del menú emergente personalizado."
 
-#: C/gtkmm-tutorial-in.xml:2851(title) C/gtkmm-tutorial-in.xml:3339(title)
-#: C/gtkmm-tutorial-in.xml:3512(title) C/gtkmm-tutorial-in.xml:4935(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:2828 C/index-in.docbook:3322 C/index-in.docbook:3626
+#: C/index-in.docbook:4874
 msgid "Examples"
 msgstr "Ejemplos"
 
-#: C/gtkmm-tutorial-in.xml:2853(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2830
+msgid ""
+"Some <classname>TreeView</classname> examples are shown here. There are more "
+"examples in the <ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-";
+"documentation/tree/master/examples/book/treeview/\">treeview directory</"
+"ulink> in <application>gtkmm-documentation</application>'s examples."
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2834
+msgid ""
+"If neither <classname>ListStore</classname> nor <classname>TreeStore</"
+"classname> is suitable for your application, look at the <ulink url="
+"\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/examples/";
+"book/treeview/custom_treemodel\">custom TreeModel</ulink> example. It shows "
+"how you can make your own implementation of the <classname>TreeModel</"
+"classname> interface."
+msgstr ""
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2840
 msgid "ListStore"
 msgstr "ListStore"
 
-#: C/gtkmm-tutorial-in.xml:2854(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2841
 msgid ""
 "This example has a <classname>Gtk::TreeView</classname> widget, with a "
 "<classname>Gtk::ListStore</classname> model."
@@ -5294,11 +7110,22 @@ msgstr ""
 "Este ejemplo tiene un widget <classname>Gtk::TreeView</classname>, con un "
 "modelo <classname>Gtk::ListStore</classname>."
 
-#: C/gtkmm-tutorial-in.xml:2871(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2853
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/list/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/list/\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2857
 msgid "TreeStore"
 msgstr "TreeStore"
 
-#: C/gtkmm-tutorial-in.xml:2873(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2859
 msgid ""
 "This example is very similar to the <classname>ListStore</classname> "
 "example, but uses a <classname>Gtk::TreeStore</classname> model instead, and "
@@ -5308,7 +7135,17 @@ msgstr ""
 "pero usa el modelo <classname>Gtk::TreeStore</classname> en su lugar, y le "
 "añade hijos a las filas."
 
-#: C/gtkmm-tutorial-in.xml:2892(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2872
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/tree/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/tree/\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2878
 msgid ""
 "This example is identical to the <classname>ListStore</classname> example, "
 "but it uses <methodname>TreeView::append_column_editable()</methodname> "
@@ -5318,11 +7155,22 @@ msgstr ""
 "<methodname>TreeView::append_column_editable()</methodname> en lugar de "
 "<methodname>TreeView::append_column()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:2899(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2885
 msgid "TreeView - Editable Cells"
 msgstr "TreeView: celdas editables"
 
-#: C/gtkmm-tutorial-in.xml:2911(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2891
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/editable_cells/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/editable_cells/\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2897
 msgid ""
 "This example is much like the <classname>TreeStore</classname> example, but "
 "has 2 extra columns to indicate whether the row can be dragged, and whether "
@@ -5338,11 +7186,22 @@ msgstr ""
 "virtuales como se describe en la sección <link linkend=\"sec-treeview-"
 "draganddrop\">TreeView: arrastrar y soltar</link>."
 
-#: C/gtkmm-tutorial-in.xml:2921(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2907
 msgid "TreeView - Drag And Drop"
 msgstr "TreeView: arrastrar y soltar"
 
-#: C/gtkmm-tutorial-in.xml:2933(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2913
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/drag_and_drop/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/drag_and_drop/\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2919
 msgid ""
 "This example is much like the <classname>ListStore</classname> example, but "
 "derives a custom <classname>TreeView</classname> in order to override the "
@@ -5357,20 +7216,41 @@ msgstr ""
 "sección <link linkend=\"sec-treeview-contextmenu\">TreeView: menú contextual "
 "emergente</link>."
 
-#: C/gtkmm-tutorial-in.xml:2943(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:2929
 msgid "TreeView - Popup Context Menu"
 msgstr "TreeView: menú de contexto emergente"
 
-#: C/gtkmm-tutorial-in.xml:2960(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:2935
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/popup/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/treeview/popup/\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:2942
 msgid "Combo Boxes"
 msgstr "Cajas combinadas"
 
-#: C/gtkmm-tutorial-in.xml:2962(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:2944
+#, fuzzy
+#| msgid ""
+#| "The <classname>ComboBox</classname> widget offers a list (or tree) of "
+#| "choices in a dropdown menu. If appropriate, it can show extra information "
+#| "about each item, such as text, a picture, a checkbox, or a progress bar. "
+#| "The <classname>ComboBox</classname> widget usually restricts the user to "
+#| "the available choices, but it can optionally have an <classname>Entry</"
+#| "classname>, allowing the user to enter arbitrary text if none of the "
+#| "available choices are suitable."
 msgid ""
 "The <classname>ComboBox</classname> widget offers a list (or tree) of "
 "choices in a dropdown menu. If appropriate, it can show extra information "
-"about each item, such as text, a picture, a checkbox, or a progress bar. The "
-"<classname>ComboBox</classname> widget usually restricts the user to the "
+"about each item, such as text, a picture, a check button, or a progress bar. "
+"The <classname>ComboBox</classname> widget usually restricts the user to the "
 "available choices, but it can optionally have an <classname>Entry</"
 "classname>, allowing the user to enter arbitrary text if none of the "
 "available choices are suitable."
@@ -5384,7 +7264,8 @@ msgstr ""
 "classname>, permitiéndole al usuario introducir texto arbitrario si ninguna "
 "de las opciones disponibles es apropiada."
 
-#: C/gtkmm-tutorial-in.xml:2965(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:2947
 msgid ""
 "The list is provided via a <classname>TreeModel</classname>, and columns "
 "from this model are added to the ComboBox's view with the "
@@ -5400,11 +7281,22 @@ msgstr ""
 "<classname>ComboBoxText</classname> proporciona una especialización más "
 "simple basada en texto en caso de que no se requiera la flexibilidad."
 
-#: C/gtkmm-tutorial-in.xml:2971(title)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:2950
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1ComboBox.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1ComboBox.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:2953
 msgid "The model"
 msgstr "El modelo"
 
-#: C/gtkmm-tutorial-in.xml:2972(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2954
 msgid ""
 "The model for a ComboBox can be defined and filled exactly as for a "
 "<classname>TreeView</classname>. For instance, you might derive a ComboBox "
@@ -5414,11 +7306,28 @@ msgstr ""
 "<classname>TreeView</classname>. Por ejemplo, puede derivar una clase "
 "«ComboBox» con una columna de números enteros y otra de texto, así:"
 
-#: C/gtkmm-tutorial-in.xml:2974(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:2956
 #, no-wrap
-msgid ""
-"ModelColumns()\n"
-"{ add(m_col_id); add(m_col_name); }\n"
+#| msgid ""
+#| "class ModelColumns : public Gtk::TreeModelColumnRecord\n"
+#| "{\n"
+#| "public:\n"
+#| "\n"
+#| "  ModelColumns()\n"
+#| "    { add(m_col_text); add(m_col_number); }\n"
+#| "\n"
+#| "  Gtk::TreeModelColumn&lt;Glib::ustring&gt; m_col_text;\n"
+#| "  Gtk::TreeModelColumn&lt;int&gt; m_col_number;\n"
+#| "};\n"
+#| "\n"
+#| "ModelColumns m_Columns;"
+msgid ""
+"class ModelColumns : public Gtk::TreeModel::ColumnRecord\n"
+"{\n"
+"public:\n"
+"  ModelColumns()\n"
+"  { add(m_col_id); add(m_col_name); }\n"
 "\n"
 "  Gtk::TreeModelColumn&lt;int&gt; m_col_id;\n"
 "  Gtk::TreeModelColumn&lt;Glib::ustring&gt; m_col_name;\n"
@@ -5426,8 +7335,11 @@ msgid ""
 "\n"
 "ModelColumns m_columns;"
 msgstr ""
-"ModelColumns()\n"
-"{ add(m_col_id); add(m_col_name); }\n"
+"class ModelColumns : public Gtk::TreeModel::ColumnRecord\n"
+"{\n"
+"public:\n"
+"  ModelColumns()\n"
+"  { add(m_col_id); add(m_col_name); }\n"
 "\n"
 "  Gtk::TreeModelColumn&lt;int&gt; m_col_id;\n"
 "  Gtk::TreeModelColumn&lt;Glib::ustring&gt; m_col_name;\n"
@@ -5435,7 +7347,8 @@ msgstr ""
 "\n"
 "ModelColumns m_columns;"
 
-#: C/gtkmm-tutorial-in.xml:2983(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2968
 msgid ""
 "After appending rows to this model, you should provide the model to the "
 "<classname>ComboBox</classname> with the <methodname>set_model()</"
@@ -5461,11 +7374,13 @@ msgstr ""
 "<methodname>set_cell_data_func()</methodname>. Tenga en cuenta que estos "
 "métodos están en la clase base <classname>CellLayout</classname>."
 
-#: C/gtkmm-tutorial-in.xml:2987(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:2972
 msgid "The chosen item"
 msgstr "El elemento elegido"
 
-#: C/gtkmm-tutorial-in.xml:2988(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2973
 #, fuzzy
 #| msgid ""
 #| "To discover what item, if any, the user has chosen from the ComboBox, "
@@ -5492,17 +7407,31 @@ msgstr ""
 "de que ha seleccionado mostrar sólo la descripción legible por los humanos "
 "en el «Combo». Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:2990(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:2975
 #, no-wrap
+#| msgid ""
+#| "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n"
+#| "if(iter)\n"
+#| "{\n"
+#| "  Gtk::TreeModel::Row row = *iter;\n"
+#| "\n"
+#| "  //Get the data for the selected row, using our knowledge\n"
+#| "  //of the tree model:\n"
+#| "  int id = row[m_Columns.m_col_id];\n"
+#| "  set_something_id_chosen(id); //Your own function.\n"
+#| "}\n"
+#| "else\n"
+#| "  set_nothing_chosen(); //Your own function."
 msgid ""
 "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n"
 "if(iter)\n"
 "{\n"
-"  Gtk::TreeModel::Row row = *iter;\n"
+"  auto row = *iter;\n"
 "\n"
 "  //Get the data for the selected row, using our knowledge\n"
 "  //of the tree model:\n"
-"  int id = row[m_Columns.m_col_id];\n"
+"  auto id = row[m_Columns.m_col_id];\n"
 "  set_something_id_chosen(id); //Your own function.\n"
 "}\n"
 "else\n"
@@ -5511,21 +7440,24 @@ msgstr ""
 "Gtk::TreeModel::iterator iter = m_Combo.get_active();\n"
 "if(iter)\n"
 "{\n"
-"  Gtk::TreeModel::Row row = *iter;\n"
+"  auto row = *iter;\n"
 "\n"
 "  //Get the data for the selected row, using our knowledge\n"
 "  //of the tree model:\n"
-"  int id = row[m_Columns.m_col_id];\n"
+"  auto id = row[m_Columns.m_col_id];\n"
 "  set_something_id_chosen(id); //Your own function.\n"
 "}\n"
 "else\n"
 "  set_nothing_chosen(); //Your own function."
 
-#: C/gtkmm-tutorial-in.xml:3005(title) C/gtkmm-tutorial-in.xml:3061(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2990 C/index-in.docbook:3046
 msgid "Responding to changes"
 msgstr "Responder a los cambios"
 
-#: C/gtkmm-tutorial-in.xml:3006(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:2991
 msgid ""
 "You might need to react to every change of selection in the ComboBox, for "
 "instance to update other widgets. To do so, you should handle the "
@@ -5535,7 +7467,8 @@ msgstr ""
 "por ejemplo, para actualizar otros widgets. Para hacer esto, debe manejar la "
 "señal <literal>changed</literal>. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:3009(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:2994
 #, no-wrap
 msgid ""
 "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n"
@@ -5544,27 +7477,53 @@ msgstr ""
 "m_combo.signal_changed().connect( sigc::mem_fun(*this,\n"
 "      &amp;ExampleWindow::on_combo_changed) );"
 
-#: C/gtkmm-tutorial-in.xml:3013(title) C/gtkmm-tutorial-in.xml:3097(title)
+#. (itstool) path: sect1/title
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:2998 C/index-in.docbook:3079
 msgid "Full Example"
 msgstr "Ejemplo completo"
 
-#: C/gtkmm-tutorial-in.xml:3016(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3001
 msgid "ComboBox"
 msgstr "ComboBox"
 
-#: C/gtkmm-tutorial-in.xml:3026(title) C/gtkmm-tutorial-in.xml:3110(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3007
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/combobox/complex\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/combobox/complex\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3011 C/index-in.docbook:3092
 msgid "Simple Text Example"
 msgstr "Ejemplo de texto simple"
 
-#: C/gtkmm-tutorial-in.xml:3029(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3014
 msgid "ComboBoxText"
 msgstr "ComboBoxText"
 
-#: C/gtkmm-tutorial-in.xml:3040(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3020
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/combobox/text\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/combobox/text\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3025
 msgid "ComboBox with an Entry"
 msgstr "«ComboBox» con una entrada"
 
-#: C/gtkmm-tutorial-in.xml:3042(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3027
 msgid ""
 "A <classname>ComboBox</classname> may contain an <classname>Entry</"
 "classname> widget for entering of arbitrary text, by specifying "
@@ -5576,28 +7535,37 @@ msgstr ""
 "la especificación de <literal>true</literal> al parámetro "
 "<literal>has_entry</literal> del constructor."
 
-#: C/gtkmm-tutorial-in.xml:3045(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3030
 msgid "The text column"
 msgstr "La columna de texto"
 
-#: C/gtkmm-tutorial-in.xml:3047(programlisting)
-#, no-wrap
-msgid "m_combo.set_entry_text_column(m_columns.m_col_name);"
-msgstr "m_combo.set_entry_text_column(m_columns.m_col_name);"
-
-#: C/gtkmm-tutorial-in.xml:3046(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3031
+#, fuzzy
+#| msgid ""
+#| "So that the <classname>Entry</classname> can interact with the drop-down "
+#| "list of choices, you must specify which of your model columns is the text "
+#| "column, with <methodname>set_entry_text_column()</methodname>. For "
+#| "instance: <placeholder-1/>"
 msgid ""
 "So that the <classname>Entry</classname> can interact with the drop-down "
 "list of choices, you must specify which of your model columns is the text "
-"column, with <methodname>set_entry_text_column()</methodname>. For instance: "
-"<placeholder-1/>"
+"column, with <methodname>set_entry_text_column()</methodname>. For instance:"
 msgstr ""
 "Para que la <classname>Entry</classname> pueda interactuar con la lista "
 "desplegable de opciones, debe especificar cuál de las columnas de su modelo "
 "es la columna de texto, con <methodname>set_text_column()</methodname>. Por "
 "ejemplo: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:3049(para)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:3033
+#, no-wrap
+msgid "m_combo.set_entry_text_column(m_columns.m_col_name);"
+msgstr "m_combo.set_entry_text_column(m_columns.m_col_name);"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3034
 msgid ""
 "When you select a choice from the drop-down menu, the value from this column "
 "will be placed in the <classname>Entry</classname>."
@@ -5605,11 +7573,13 @@ msgstr ""
 "Cuando seleccione una opción de la lista desplegable, el valor de esta "
 "columna se pondrá en el widget <classname>Entry</classname>."
 
-#: C/gtkmm-tutorial-in.xml:3055(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3040
 msgid "The entry"
 msgstr "La entrada"
 
-#: C/gtkmm-tutorial-in.xml:3056(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3041
 msgid ""
 "Because the user may enter arbitrary text, an active model row isn't enough "
 "to tell us what text the user has entered. Therefore, you should retrieve "
@@ -5623,15 +7593,30 @@ msgstr ""
 "<methodname>ComboBoxEntry::get_entry()</methodname> y llamar a "
 "<methodname>get_text()</methodname> sobre él."
 
-#: C/gtkmm-tutorial-in.xml:3070(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:3055
 #, no-wrap
-msgid ""
-"Gtk::Entry* entry = m_Combo.get_entry();\n"
+#| msgid ""
+#| "Gtk::Entry* entry = m_Combo.get_entry();\n"
+#| "if (entry)\n"
+#| "{\n"
+#| "  // The Entry shall receive focus-out events.\n"
+#| "  entry-&gt;add_events(Gdk::FOCUS_CHANGE_MASK);\n"
+#| "\n"
+#| "  // Alternatively you can connect to m_Combo.signal_changed().\n"
+#| "  entry-&gt;signal_changed().connect(sigc::mem_fun(*this,\n"
+#| "    &amp;ExampleWindow::on_entry_changed) );\n"
+#| "\n"
+#| "  entry-&gt;signal_activate().connect(sigc::mem_fun(*this,\n"
+#| "    &amp;ExampleWindow::on_entry_activate) );\n"
+#| "\n"
+#| "  entry-&gt;signal_focus_out_event().connect(sigc::mem_fun(*this,\n"
+#| "    &amp;ExampleWindow::on_entry_focus_out_event) );\n"
+#| "}"
+msgid ""
+"auto entry = m_Combo.get_entry();\n"
 "if (entry)\n"
 "{\n"
-"  // The Entry shall receive focus-out events.\n"
-"  entry-&gt;add_events(Gdk::FOCUS_CHANGE_MASK);\n"
-"\n"
 "  // Alternatively you can connect to m_Combo.signal_changed().\n"
 "  entry-&gt;signal_changed().connect(sigc::mem_fun(*this,\n"
 "    &amp;ExampleWindow::on_entry_changed) );\n"
@@ -5643,12 +7628,9 @@ msgid ""
 "    &amp;ExampleWindow::on_entry_focus_out_event) );\n"
 "}"
 msgstr ""
-"Gtk::Entry* entry = m_Combo.get_entry();\n"
+"auto entry = m_Combo.get_entry();\n"
 "if (entry)\n"
 "{\n"
-"  // The Entry shall receive focus-out events.\n"
-"  entry-&gt;add_events(Gdk::FOCUS_CHANGE_MASK);\n"
-"\n"
 "  // Alternatively you can connect to m_Combo.signal_changed().\n"
 "  entry-&gt;signal_changed().connect(sigc::mem_fun(*this,\n"
 "    &amp;ExampleWindow::on_entry_changed) );\n"
@@ -5660,18 +7642,34 @@ msgstr ""
 "    &amp;ExampleWindow::on_entry_focus_out_event) );\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:3062(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3047
+#, fuzzy
+#| msgid ""
+#| "When the user enters arbitrary text, it may not be enough to connect to "
+#| "the <literal>changed</literal> signal, which is emitted for every typed "
+#| "character. It is not emitted when the user presses the Enter key. "
+#| "Pressing the Enter key or moving the keyboard focus to another widget may "
+#| "signal that the user has finished entering text. To be notified of these "
+#| "events, connect to the <classname>Entry</classname>'s <literal>activate</"
+#| "literal> and <literal>focus_out_event</literal> signals, like so "
+#| "<placeholder-1/> The <literal>changed</literal> signals of "
+#| "<classname>ComboBox</classname> and <classname>Entry</classname> are both "
+#| "emitted for every change. It doesn't matter which one you connect to. But "
+#| "only <classname>Entry</classname>'s <literal>focus_out_event</literal> "
+#| "signal is useful here."
 msgid ""
 "When the user enters arbitrary text, it may not be enough to connect to the "
 "<literal>changed</literal> signal, which is emitted for every typed "
-"character. It is not emitted when the user presses the Enter key. Pressing "
-"the Enter key or moving the keyboard focus to another widget may signal that "
-"the user has finished entering text. To be notified of these events, connect "
-"to the <classname>Entry</classname>'s <literal>activate</literal> and "
-"<literal>focus_out_event</literal> signals, like so <placeholder-1/> The "
-"<literal>changed</literal> signals of <classname>ComboBox</classname> and "
-"<classname>Entry</classname> are both emitted for every change. It doesn't "
-"matter which one you connect to. But only <classname>Entry</classname>'s "
+"character. It is not emitted when the user presses the <keycap>Enter</"
+"keycap> key. Pressing the <keycap>Enter</keycap> key or moving the keyboard "
+"focus to another widget may signal that the user has finished entering text. "
+"To be notified of these events, connect to the <classname>Entry</"
+"classname>'s <literal>activate</literal> and <literal>focus_out_event</"
+"literal> signals, like so <_:programlisting-1/> The <literal>changed</"
+"literal> signals of <classname>ComboBox</classname> and <classname>Entry</"
+"classname> are both emitted for every change. It doesn't matter which one "
+"you connect to. But only <classname>Entry</classname>'s "
 "<literal>focus_out_event</literal> signal is useful here."
 msgstr ""
 "Cuando el usuario introduce texto arbitrario, puede no ser suficiente "
@@ -5687,7 +7685,8 @@ msgstr ""
 "<literal>focus_out_event</literal> del <classname>Entry</classname> es útil "
 "aquí."
 
-#: C/gtkmm-tutorial-in.xml:3091(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3073
 msgid ""
 "X events are described in more detail in the <link linkend=\"sec-"
 "xeventsignals\">X Event signals</link> section in the appendix."
@@ -5695,19 +7694,42 @@ msgstr ""
 "Los eventos de X se describen con mayor detalle en la sección <link linkend="
 "\"sec-xeventsignals\">Señales de eventos de X</link> en el apéndice."
 
-#: C/gtkmm-tutorial-in.xml:3100(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3082
 msgid "ComboBox with Entry"
 msgstr "«ComboBox» con una entrada"
 
-#: C/gtkmm-tutorial-in.xml:3113(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3088
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/combobox/entry_complex\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/combobox/entry_complex\">Código fuente</ulink>"
+
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3095
 msgid "ComboBoxText with Entry"
 msgstr "«ComboBoxText» con una entrada"
 
-#: C/gtkmm-tutorial-in.xml:3132(title) C/gtkmm-tutorial-in.xml:3344(title)
-msgid "TextView"
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3101
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/combobox/entry_text\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/combobox/entry_text\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3114 C/index-in.docbook:3327
+msgid "TextView"
 msgstr "TextView"
 
-#: C/gtkmm-tutorial-in.xml:3133(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3115
 msgid ""
 "The <classname>TextView</classname> widget can be used to display and edit "
 "large amounts of formatted text. Like the <classname>TreeView</classname>, "
@@ -5719,11 +7741,13 @@ msgstr ""
 "classname>, tiene un diseño modelo/vista. En este caso, el "
 "<classname>TextBuffer</classname> es el modelo."
 
-#: C/gtkmm-tutorial-in.xml:3141(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3123
 msgid "The Buffer"
 msgstr "El búfer"
 
-#: C/gtkmm-tutorial-in.xml:3142(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3124
 msgid ""
 "<classname>Gtk::TextBuffer</classname> is a model containing the data for "
 "the <classname>Gtk::TextView</classname>, like the <classname>Gtk::"
@@ -5743,7 +7767,8 @@ msgstr ""
 "<classname>Gtk::TextBuffer</classname> y elegir mostrar cada uno en "
 "distintas ocasiones en el mismo widget <classname>GtK::TextView</classname>."
 
-#: C/gtkmm-tutorial-in.xml:3152(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3134
 msgid ""
 "The <classname>TextView</classname> creates its own default "
 "<classname>TextBuffer</classname>, which you can access via the "
@@ -5753,19 +7778,53 @@ msgstr ""
 "classname> predeterminado, al que puede acceder mediante el método "
 "<methodname>get_buffer()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:3161(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3140
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1TextBuffer.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1TextBuffer.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3143
 msgid "Iterators"
 msgstr "Iteradores"
 
-#: C/gtkmm-tutorial-in.xml:3167(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3144
+msgid ""
+"A <classname>Gtk::TextBuffer::iterator</classname> and a <classname>Gtk::"
+"TextBuffer::const_iterator</classname> represent a position between two "
+"characters in the text buffer. Whenever the buffer is modified in a way that "
+"affects the number of characters in 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, use "
+"<classname>Gtk::TextBuffer::Mark</classname>."
+msgstr ""
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3151
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextIter.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextIter.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3155
 msgid "Tags and Formatting"
 msgstr "Etiquetas y formateado"
 
-#: C/gtkmm-tutorial-in.xml:3170(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:3158
 msgid "Tags"
 msgstr "Etiquetas"
 
-#: C/gtkmm-tutorial-in.xml:3171(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3159
 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 "
@@ -5777,18 +7836,22 @@ msgstr ""
 "aplíquela a la región de texto. Por ejemplo, para definir la etiqueta y sus "
 "propiedades:"
 
-#: C/gtkmm-tutorial-in.xml:3174(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:3162
 #, no-wrap
+#| msgid ""
+#| "Glib::RefPtr&lt;Gtk::TextBuffer::Tag&gt; refTagMatch =\n"
+#| "    Gtk::TextBuffer::Tag::create();\n"
+#| "refTagMatch-&gt;property_background() = \"orange\";"
 msgid ""
-"Glib::RefPtr&lt;Gtk::TextBuffer::Tag&gt; refTagMatch =\n"
-"    Gtk::TextBuffer::Tag::create();\n"
+"auto refTagMatch = Gtk::TextBuffer::Tag::create();\n"
 "refTagMatch-&gt;property_background() = \"orange\";"
 msgstr ""
-"Glib::RefPtr&lt;Gtk::TextBuffer::Tag&gt; refTagMatch =\n"
-"    Gtk::TextBuffer::Tag::create();\n"
+"auto refTagMatch = Gtk::TextBuffer::Tag::create();\n"
 "refTagMatch-&gt;property_background() = \"orange\";"
 
-#: C/gtkmm-tutorial-in.xml:3177(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3164
 msgid ""
 "You can specify a name for the <classname>Tag</classname> when using the "
 "<methodname>create()</methodname> method, but it is not necessary."
@@ -5796,15 +7859,27 @@ msgstr ""
 "Puede especificar un nombre para la clase <classname>Tag</classname> cuando "
 "use el método <methodname>create()</methodname>, pero no es necesario."
 
-#: C/gtkmm-tutorial-in.xml:3182(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3169
 msgid "The <classname>Tag</classname> class has many other properties."
 msgstr "La clase <classname>Tag</classname> tiene muchas otras propiedades."
 
-#: C/gtkmm-tutorial-in.xml:3191(title)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3173
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextTag.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextTag.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:3178
 msgid "TagTable"
 msgstr "TagTable"
 
-#: C/gtkmm-tutorial-in.xml:3193(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3180
 msgid ""
 "Each <classname>Gtk::TextBuffer</classname> uses a <classname>Gtk::"
 "TextBuffer::TagTable</classname>, which contains the <classname>Tag</"
@@ -5820,26 +7895,32 @@ msgstr ""
 "<classname>Tag</classname>, añádalas a la <classname>TagTable</classname>. "
 "Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:3201(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:3188
 #, no-wrap
-msgid ""
-"Glib::RefPtr&lt;Gtk::TextBuffer::TagTable&gt; refTagTable =\n"
-"    Gtk::TextBuffer::TagTable::create();\n"
+#| msgid ""
+#| "Glib::RefPtr&lt;Gtk::TextBuffer::TagTable&gt; refTagTable =\n"
+#| "    Gtk::TextBuffer::TagTable::create();\n"
+#| "refTagTable-&gt;add(refTagMatch);\n"
+#| "//Hopefully a future version of <application>gtkmm</application> will have a set_tag_table() method,\n"
+#| "//for use after creation of the buffer.\n"
+#| "Glib::RefPtr&lt;Gtk::TextBuffer&gt; refBuffer =\n"
+#| "    Gtk::TextBuffer::create(refTagTable);"
+msgid ""
+"auto refTagTable = Gtk::TextBuffer::TagTable::create();\n"
 "refTagTable-&gt;add(refTagMatch);\n"
 "//Hopefully a future version of <application>gtkmm</application> will have a set_tag_table() method,\n"
 "//for use after creation of the buffer.\n"
-"Glib::RefPtr&lt;Gtk::TextBuffer&gt; refBuffer =\n"
-"    Gtk::TextBuffer::create(refTagTable);"
+"auto refBuffer = Gtk::TextBuffer::create(refTagTable);"
 msgstr ""
-"Glib::RefPtr&lt;Gtk::TextBuffer::TagTable&gt; refTagTable =\n"
-"    Gtk::TextBuffer::TagTable::create();\n"
+"auto refTagTable = Gtk::TextBuffer::TagTable::create();\n"
 "refTagTable-&gt;add(refTagMatch);\n"
 "//Hopefully a future version of <application>gtkmm</application> will have a set_tag_table() method,\n"
 "//for use after creation of the buffer.\n"
-"Glib::RefPtr&lt;Gtk::TextBuffer&gt; refBuffer =\n"
-"    Gtk::TextBuffer::create(refTagTable);"
+"auto refBuffer = Gtk::TextBuffer::create(refTagTable);"
 
-#: C/gtkmm-tutorial-in.xml:3209(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3194
 msgid ""
 "You can also use <methodname>get_tag_table()</methodname> to get, and maybe "
 "modify, the <classname>TextBuffer</classname>'s default <classname>TagTable</"
@@ -5849,11 +7930,22 @@ msgstr ""
 "tal vez modificar, la <classname>TagTable</classname> predeterminada del "
 "<classname>TextBuffer</classname> en lugar de crear una explícitamente."
 
-#: C/gtkmm-tutorial-in.xml:3220(title)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3200
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1TextTagTable.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1TextTagTable.html\">Referencia</ulink>"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:3205
 msgid "Applying Tags"
 msgstr "Aplicar etiquetas"
 
-#: C/gtkmm-tutorial-in.xml:3221(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3206
 msgid ""
 "If you have created a <classname>Tag</classname> and added it to the "
 "<classname>TagTable</classname>, you may apply that tag to part of the "
@@ -5867,24 +7959,31 @@ msgstr ""
 "con ese formato. Puede definir el inicio y el fin del rango de texto "
 "especificando <classname>Gtk::TextBuffer::iterator</classname>. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:3228(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:3213
 #, no-wrap
 msgid "refBuffer-&gt;apply_tag(refTagMatch, iterRangeStart, iterRangeStop);"
 msgstr "refBuffer-&gt;apply_tag(refTagMatch, iterRangeStart, iterRangeStop);"
 
-#: C/gtkmm-tutorial-in.xml:3231(programlisting)
-#, no-wrap
-msgid "refBuffer-&gt;insert_with_tag(iter, \"Some text\", refTagMatch);"
-msgstr "refBuffer-&gt;insert_with_tag(iter, \"Some text\", refTagMatch);"
-
-#: C/gtkmm-tutorial-in.xml:3229(para)
-msgid ""
-"Or you could specify the tag when first inserting the text: <placeholder-1/>"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3214
+#, fuzzy
+#| msgid ""
+#| "Or you could specify the tag when first inserting the text: "
+#| "<placeholder-1/>"
+msgid "Or you could specify the tag when first inserting the text:"
 msgstr ""
 "O puede especificar la etiqueta cuando inserta el texto por primera vez: "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:3234(para)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:3217
+#, no-wrap
+msgid "refBuffer-&gt;insert_with_tag(iter, \"Some text\", refTagMatch);"
+msgstr "refBuffer-&gt;insert_with_tag(iter, \"Some text\", refTagMatch);"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3219
 msgid ""
 "You can apply more than one <classname>Tag</classname> to the same text, by "
 "using <methodname>apply_tag()</methodname> more than once, or by using "
@@ -5899,11 +7998,13 @@ msgstr ""
 "puede resolver estos conflictos usando <methodname>Tag::set_priority()</"
 "methodname>."
 
-#: C/gtkmm-tutorial-in.xml:3246(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3231
 msgid "Marks"
 msgstr "Marcas"
 
-#: C/gtkmm-tutorial-in.xml:3247(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3232
 msgid ""
 "<classname>TextBuffer</classname> iterators are generally invalidated when "
 "the text changes, but you can use a <classname>Gtk::TextBuffer::Mark</"
@@ -5914,16 +8015,19 @@ msgstr ""
 "TextBuffer::Mark</classname> para recordar una posición en estas "
 "situaciones. Por ejemplo,"
 
-#: C/gtkmm-tutorial-in.xml:3252(programlisting)
-#, no-wrap
-msgid ""
-"Glib::RefPtr&lt;Gtk::TextBuffer::Mark&gt; refMark =\n"
-"    refBuffer-&gt;create_mark(iter);"
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:3237
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Glib::RefPtr&lt;Gtk::TextBuffer::Mark&gt; refMark =\n"
+#| "    refBuffer-&gt;create_mark(iter);"
+msgid "auto refMark = refBuffer-&gt;create_mark(iter);"
 msgstr ""
 "Glib::RefPtr&lt;Gtk::TextBuffer::Mark&gt; refMark =\n"
 "    refBuffer-&gt;create_mark(iter);"
 
-#: C/gtkmm-tutorial-in.xml:3255(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3239
 msgid ""
 "You can then use the <methodname>get_iter()</methodname> method later to "
 "create an iterator for the <classname>Mark</classname>'s new position."
@@ -5932,7 +8036,8 @@ msgstr ""
 "para crear un iterador para la posición nueva de la <classname>Mark</"
 "classname>."
 
-#: C/gtkmm-tutorial-in.xml:3260(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3244
 msgid ""
 "There are two built-in <classname>Mark</classname>s - <literal>insert</"
 "literal> and <literal>selection_bound</literal>, which you can access with "
@@ -5945,7 +8050,17 @@ msgstr ""
 "<methodname>get_selection_bound()</methodname> de <classname>TextBuffer</"
 "classname>."
 
-#: C/gtkmm-tutorial-in.xml:3273(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3251
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextMark.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextMark.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3257
 msgid ""
 "As mentioned above, each <classname>TextView</classname> has a "
 "<classname>TextBuffer</classname>, and one or more <classname>TextView</"
@@ -5955,7 +8070,8 @@ msgstr ""
 "un <classname>TextBuffer</classname>, y uno o más <classname>TextView</"
 "classname> pueden compartir el mismo <classname>TextBuffer</classname>."
 
-#: C/gtkmm-tutorial-in.xml:3280(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3264
 msgid ""
 "Like the <classname>TreeView</classname>, you should probably put your "
 "<classname>TextView</classname> inside a <classname>ScrolledWindow</"
@@ -5967,11 +8083,22 @@ msgstr ""
 "<classname>ScrolledWindow</classname> para permitirle al usuario ver y mover "
 "toda el área de texto con barras de desplazamiento."
 
-#: C/gtkmm-tutorial-in.xml:3290(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3271
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextView.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1TextView.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:3274
 msgid "Default formatting"
 msgstr "Formato predeterminado"
 
-#: C/gtkmm-tutorial-in.xml:3291(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3275
 msgid ""
 "<classname>TextView</classname> has various methods which allow you to "
 "change the presentation of the buffer for this particular view. Some of "
@@ -5987,17 +8114,26 @@ msgstr ""
 "methodname>, <methodname>set_right_margin()</methodname>, "
 "<methodname>set_indent()</methodname>, etc."
 
-#: C/gtkmm-tutorial-in.xml:3302(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:3286
 msgid "Scrolling"
 msgstr "Desplazamiento"
 
-#: C/gtkmm-tutorial-in.xml:3303(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:3287
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::TextView</classname> has various "
+#| "<methodname>scroll_to_*()</methodname> methods. These allow you to ensure "
+#| "that a particular part of the text buffer is visible. For instance, your "
+#| "application's Find feature might use <methodname>Gtk::TextView::"
+#| "scroll_to_iter()</methodname> to show the found text."
 msgid ""
-"<classname>Gtk::TextView</classname> has various <methodname>scroll_to_*()</"
+"<classname>Gtk::TextView</classname> has various <methodname>scroll_to()</"
 "methodname> methods. These allow you to ensure that a particular part of the "
 "text buffer is visible. For instance, your application's Find feature might "
-"use <methodname>Gtk::TextView::scroll_to_iter()</methodname> to show the "
-"found text."
+"use <methodname>Gtk::TextView::scroll_to()</methodname> to show the found "
+"text."
 msgstr ""
 "<classname>Gtk::TextView</classname> tiene varios métodos "
 "<methodname>scroll_to_*()</methodname>. Estos le permiten asegurarse de que "
@@ -6005,11 +8141,13 @@ msgstr ""
 "característica «Encontrar» de su aplicación podría usar <methodname>Gtk::"
 "TextView::scroll_to_iter()</methodname> para mostrar el texto encontrado."
 
-#: C/gtkmm-tutorial-in.xml:3318(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3302
 msgid "Widgets and ChildAnchors"
 msgstr "Widgets y ChildAnchors"
 
-#: C/gtkmm-tutorial-in.xml:3319(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3303
 msgid ""
 "You can embed widgets, such as <classname>Gtk::Button</classname>s, in the "
 "text. Each such child widget needs a <classname>ChildAnchor</classname>. "
@@ -6023,16 +8161,19 @@ msgstr ""
 "ejemplo, para crear un «ChildAnchor» en una posición particular, use "
 "<methodname>Gtk::TextBuffer::create_child_anchor()</methodname>:"
 
-#: C/gtkmm-tutorial-in.xml:3326(programlisting)
-#, no-wrap
-msgid ""
-"Glib::RefPtr&lt;Gtk::TextChildAnchor&gt; refAnchor =\n"
-"    refBuffer-&gt;create_child_anchor(iter);"
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3310
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Glib::RefPtr&lt;Gtk::TextChildAnchor&gt; refAnchor =\n"
+#| "    refBuffer-&gt;create_child_anchor(iter);"
+msgid "auto refAnchor = refBuffer-&gt;create_child_anchor(iter);"
 msgstr ""
 "Glib::RefPtr&lt;Gtk::TextChildAnchor&gt; refAnchor =\n"
 "    refBuffer-&gt;create_child_anchor(iter);"
 
-#: C/gtkmm-tutorial-in.xml:3329(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3312
 msgid ""
 "Then, to add a widget at that position, use <methodname>Gtk::TextView::"
 "add_child_at_anchor()</methodname>:"
@@ -6040,23 +8181,53 @@ msgstr ""
 "Luego, para añadir un widget en esa posición, use <methodname>Gtk::TextView::"
 "add_child_at_anchor()</methodname>:"
 
-#: C/gtkmm-tutorial-in.xml:3333(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3316
 #, no-wrap
 msgid "m_TextView.add_child_at_anchor(m_Button, refAnchor);"
 msgstr "m_TextView.add_child_at_anchor(m_Button, refAnchor);"
 
-#: C/gtkmm-tutorial-in.xml:3359(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3318
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1TextChildAnchor.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1TextChildAnchor.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3333
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/textview/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/textview/\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:3342
 msgid "Menus and Toolbars"
 msgstr "Menús y barras de herramientas"
 
-#: C/gtkmm-tutorial-in.xml:3361(para)
-msgid ""
-"There are specific APIs for Menus and toolbars, but you should usually deal "
-"with them together, using the <classname>UIManager</classname> to define "
-"<classname>Action</classname>s which you can then arrange in menus and "
-"toolbars. In this way you can handle activation of the action instead of "
-"responding to the menu and toolbar items separately. And you can enable or "
-"disable both the menu and toolbar item via the action."
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3344
+#, fuzzy
+#| msgid ""
+#| "There are specific APIs for Menus and toolbars, but you should usually "
+#| "deal with them together, using the <classname>UIManager</classname> to "
+#| "define <classname>Action</classname>s which you can then arrange in menus "
+#| "and toolbars. In this way you can handle activation of the action instead "
+#| "of responding to the menu and toolbar items separately. And you can "
+#| "enable or disable both the menu and toolbar item via the action."
+msgid ""
+"There are specific APIs for menus and toolbars, but you should usually deal "
+"with them together, creating <classname>Gio::SimpleAction</classname>s that "
+"you can refer to in both menus and toolbars. In this way you can handle "
+"activation of the action instead of responding to the menu and toolbar items "
+"separately. And you can enable or disable both the menu and toolbar item via "
+"the action. <classname>Gtk::Builder</classname> can create menus and "
+"toolbars."
 msgstr ""
 "Hay API específicas para los menús y las barras de herramientas, pero "
 "usualmente debe tratarlas juntas, usando el <classname>UIManager</classname> "
@@ -6066,12 +8237,21 @@ msgstr ""
 "herramientas separadamente. Y puede activar o desactivar tanto el elemento "
 "del menú como el de la barra de herramientas a través de la acción."
 
-#: C/gtkmm-tutorial-in.xml:3369(para)
-msgid ""
-"This involves the use of the <classname>Gtk::ActionGroup</classname>, "
-"<classname>Gtk::Action</classname>, and <classname>UIManager</classname> "
-"classes, all of which should be instantiated via their <methodname>create()</"
-"methodname> methods, which return <classname>RefPtr</classname>s."
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3352
+#, fuzzy
+#| msgid ""
+#| "This involves the use of the <classname>Gtk::ActionGroup</classname>, "
+#| "<classname>Gtk::Action</classname>, and <classname>UIManager</classname> "
+#| "classes, all of which should be instantiated via their "
+#| "<methodname>create()</methodname> methods, which return "
+#| "<classname>RefPtr</classname>s."
+msgid ""
+"This involves the use of the <classname>Gio::SimpleActionGroup</classname>, "
+"<classname>Gio::SimpleAction</classname> and <classname>Gtk::Builder</"
+"classname> classes, all of which should be instantiated via their "
+"<methodname>create()</methodname> methods, which return <classname>RefPtr</"
+"classname>s."
 msgstr ""
 "Esto implica el uso de las clases <classname>Gtk::ActionGroup</classname>, "
 "<classname>Gtk::Action</classname>, y <classname>UIManager</classname>, "
@@ -6079,103 +8259,118 @@ msgstr ""
 "<methodname>create()</methodname>, que devuelven <classname>RefPtr</"
 "classname>."
 
-#: C/gtkmm-tutorial-in.xml:3378(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3360
 msgid "Actions"
 msgstr "Acciones"
 
-#: C/gtkmm-tutorial-in.xml:3379(para)
-msgid ""
-"First create the <classname>Action</classname>s and add them to an "
-"<classname>ActionGroup</classname>, with <methodname>ActionGroup::add()</"
-"methodname>."
-msgstr ""
-"Primero cree las <classname>Action</classname>s y añádaselas a un "
-"<classname>ActionGroup</classname>, con <methodname>ActionGroup::add()</"
-"methodname>."
-
-#: C/gtkmm-tutorial-in.xml:3385(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3361
 msgid ""
-"The arguments to <methodname>Action::create()</methodname> specify the "
-"action's name and how it will appear in menus and toolbars."
+"First create the <classname>Gio::SimpleAction</classname>s and add them to a "
+"<classname>Gio::SimpleActionGroup</classname>, with <methodname>Gio::"
+"ActionMap::add_action()</methodname>. (<classname>Gio::ActionMap</classname> "
+"is a base class of <classname>Gio::SimpleActionGroup</classname>.) Then add "
+"the action group to your window with <methodname>Gtk::Widget::"
+"insert_action_group()</methodname>."
 msgstr ""
-"Los argumentos de <methodname>Action::create()</methodname> especifican el "
-"nombre de la acción y cómo aparecerá en los menús y las barras de "
-"herramientas."
 
-#: C/gtkmm-tutorial-in.xml:3389(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3369
+#, fuzzy
+#| msgid ""
+#| "You can also specify a signal handler when calling "
+#| "<methodname>ActionGroup::add()</methodname>. This signal handler will be "
+#| "called when the action is activated via either a menu item or a toolbar "
+#| "button."
 msgid ""
-"You can also specify a signal handler when calling <methodname>ActionGroup::"
-"add()</methodname>. This signal handler will be called when the action is "
-"activated via either a menu item or a toolbar button."
+"The arguments to <methodname>add_action()</methodname> specify the action's "
+"name, which is used in the menu items and toolbar buttons. You can also "
+"specify a signal handler when calling <methodname>add_action()</methodname>. "
+"This signal handler will be called when the action is activated via either a "
+"menu item or a toolbar button."
 msgstr ""
 "También puede especificar un gestor de señales cuando llame a "
 "<methodname>ActionGroup::add()</methodname>. Se llamará a este gestor de "
 "señales cuando se active la acción a través de un elemento del menú o un "
 "botón de la barra de herramientas."
 
-#: C/gtkmm-tutorial-in.xml:3394(para)
-msgid "Note that you must specify actions for sub menus as well as menu items."
-msgstr ""
-"Tenga en cuenta que debe especificar acciones para submenús así como para "
-"elementos del menú."
-
-#: C/gtkmm-tutorial-in.xml:3396(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3377 C/index-in.docbook:3503
 msgid "For instance:"
 msgstr "Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:3398(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3379
 #, no-wrap
+#| msgid ""
+#| "m_refActionGroup = Gtk::ActionGroup::create();\n"
+#| "\n"
+#| "m_refActionGroup-&gt;add( Gtk::Action::create(\"MenuFile\", \"_File\") );\n"
+#| "m_refActionGroup-&gt;add( Gtk::Action::create(\"New\", \"_New\"),\n"
+#| "  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_new) );\n"
+#| "m_refActionGroup-&gt;add( Gtk::Action::create(\"ExportData\", \"Export Data\"),\n"
+#| "  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_open) );\n"
+#| "m_refActionGroup-&gt;add( Gtk::Action::create(\"Quit\", \"_Quit\"),\n"
+#| "  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_quit) );"
 msgid ""
-"m_refActionGroup = Gtk::ActionGroup::create();\n"
 "\n"
-"m_refActionGroup-&gt;add( Gtk::Action::create(\"MenuFile\", \"_File\") );\n"
-"m_refActionGroup-&gt;add( Gtk::Action::create(\"New\", \"_New\"),\n"
-"  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_new) );\n"
-"m_refActionGroup-&gt;add( Gtk::Action::create(\"ExportData\", \"Export Data\"),\n"
-"  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_open) );\n"
-"m_refActionGroup-&gt;add( Gtk::Action::create(\"Quit\", \"_Quit\"),\n"
-"  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_quit) );"
+"m_refActionGroup = Gio::SimpleActionGroup::create();\n"
+"\n"
+"m_refActionGroup-&gt;add_action(\"new\", sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_new));\n"
+"m_refActionGroup-&gt;add_action(\"open\", sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_open));\n"
+"m_refActionGroup-&gt;add_action(\"quit\", sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_quit));\n"
+"\n"
+"insert_action_group(\"example\", m_refActionGroup);\n"
 msgstr ""
-"m_refActionGroup = Gtk::ActionGroup::create();\n"
 "\n"
-"m_refActionGroup-&gt;add( Gtk::Action::create(\"MenuFile\", \"_File\") );\n"
-"m_refActionGroup-&gt;add( Gtk::Action::create(\"New\", \"_New\"),\n"
-"  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_new) );\n"
-"m_refActionGroup-&gt;add( Gtk::Action::create(\"ExportData\", \"Export Data\"),\n"
-"  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_open) );\n"
-"m_refActionGroup-&gt;add( Gtk::Action::create(\"Quit\", \"_Quit\"),\n"
-"  sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_quit) );"
+"m_refActionGroup = Gio::SimpleActionGroup::create();\n"
+"\n"
+"m_refActionGroup-&gt;add_action(\"new\", sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_new));\n"
+"m_refActionGroup-&gt;add_action(\"open\", sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_open));\n"
+"m_refActionGroup-&gt;add_action(\"quit\", sigc::mem_fun(*this, &amp;ExampleWindow::on_action_file_quit));\n"
+"\n"
+"insert_action_group(\"example\", m_refActionGroup);\n"
 
-#: C/gtkmm-tutorial-in.xml:3408(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3389
 #, fuzzy
 #| msgid ""
-#| "Note that this is where we specify the names of the actions as they will "
-#| "be seen by users in menus and toolbars. Therefore, this is where you "
-#| "should make strings translatable, by putting them inside the _() macro. "
-#| "When we use the Gtk::Stock items, of course, translations are "
-#| "automatically available."
+#| "<classname>Gtk::Adjustment</classname> and <classname>IconSet</classname> "
+#| "and <classname>Gdk::Cursor</classname> are now used via <classname>Glib::"
+#| "RefPtr</classname>."
 msgid ""
-"Note that this is where we specify the names of the actions as they will be "
-"seen by users in menus and toolbars. Therefore, this is where you should "
-"make strings translatable, by putting them inside the _() macro."
+"If you use an <classname>Gtk::ApplicationWindow</classname>, you don't have "
+"to create your own action group. <classname>Gio::ActionGroup</classname> and "
+"<classname>Gio::ActionMap</classname> are base classes of <classname>Gtk::"
+"ApplicationWindow</classname>."
 msgstr ""
-"Tenga en cuenta que aquí es donde se especifican los nombres de las acciones "
-"como las verán los usuarios en los menús y las barras de herramientas. Por "
-"lo tanto, aquí es donde debe hacer las cadenas traducibles, poniéndolas "
-"dentro de la macro _(). Cuando use los elementos de Gtk::Stock, las "
-"traducciones estarán disponibles automáticamente, por supuesto."
+"<classname>Gtk::Adjustment</classname>, <classname>IconSet</classname> y "
+"<classname>Gdk::Cursor</classname> se usan ahora a través de "
+"<classname>Glib::RefPtr</classname>."
 
-#: C/gtkmm-tutorial-in.xml:3413(title)
-msgid "UIManager"
-msgstr "UIManager"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3400
+#, fuzzy
+#| msgid "Menus and Toolbars"
+msgid "Menubar and Toolbar"
+msgstr "Menús y barras de herramientas"
 
-#: C/gtkmm-tutorial-in.xml:3414(para)
-msgid ""
-"Next you should create a <classname>UIManager</classname> and add the "
-"<classname>ActionGroup</classname> to the <classname>UIManager</classname> "
-"with <methodname>insert_action_group()</methodname> At this point is also a "
-"good idea to tell the parent window to respond to the specified keyboard "
-"shortcuts, by using <methodname>add_accel_group()</methodname>."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3401
+#, fuzzy
+#| msgid ""
+#| "Next you should create a <classname>UIManager</classname> and add the "
+#| "<classname>ActionGroup</classname> to the <classname>UIManager</"
+#| "classname> with <methodname>insert_action_group()</methodname> At this "
+#| "point is also a good idea to tell the parent window to respond to the "
+#| "specified keyboard shortcuts, by using <methodname>add_accel_group()</"
+#| "methodname>."
+msgid ""
+"Next you should create a <classname>Gtk::Builder</classname>. At this point "
+"is also a good idea to tell the application to respond to keyboard "
+"shortcuts, by using <methodname>Gtk::Application::set_accel_for_action()</"
+"methodname>."
 msgstr ""
 "A continuación debe crear un <classname>UIManager</classname> y añadirle el "
 "<classname>ActionGroup</classname> con <classname>insert_action_group()</"
@@ -6183,122 +8378,213 @@ msgstr ""
 "madre que responda a los atajos del teclado especificados, usando "
 "<methodname>add_accel_group()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:3422(para) C/gtkmm-tutorial-in.xml:4856(para)
+#. (itstool) path: sect1/para
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3407 C/index-in.docbook:5053 C/index-in.docbook:5118
+#: C/index-in.docbook:10564
 msgid "For instance,"
 msgstr "Por ejemplo,"
 
-#: C/gtkmm-tutorial-in.xml:3424(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3409
 #, no-wrap
 msgid ""
-"Glib::RefPtr&lt;Gtk::UIManager&gt; m_refUIManager =\n"
-"    Gtk::UIManager::create();\n"
-"m_refUIManager-&gt;insert_action_group(m_refActionGroup);\n"
-"add_accel_group(m_refUIManager-&gt;get_accel_group());"
+"\n"
+"m_refBuilder = Gtk::Builder::create();\n"
+"\n"
+"app-&gt;set_accel_for_action(\"example.new\", \"&lt;Primary&gt;n\");\n"
+"app-&gt;set_accel_for_action(\"example.quit\", \"&lt;Primary&gt;q\");\n"
+"app-&gt;set_accel_for_action(\"example.copy\", \"&lt;Primary&gt;c\");\n"
+"app-&gt;set_accel_for_action(\"example.paste\", \"&lt;Primary&gt;v\");\n"
+msgstr ""
+"\n"
+"m_refBuilder = Gtk::Builder::create();\n"
+"\n"
+"app-&gt;set_accel_for_action(\"example.new\", \"&lt;Primary&gt;n\");\n"
+"app-&gt;set_accel_for_action(\"example.quit\", \"&lt;Primary&gt;q\");\n"
+"app-&gt;set_accel_for_action(\"example.copy\", \"&lt;Primary&gt;c\");\n"
+"app-&gt;set_accel_for_action(\"example.paste\", \"&lt;Primary&gt;v\");\n"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3417
+msgid ""
+"If your main window is derived from <classname>ApplicationWindow</classname> "
+"and you instantiate your menubar with <methodname>Gtk::Application::"
+"set_menubar()</methodname>, then you don't have to call "
+"<methodname>set_accel_for_action()</methodname>. See <link linkend=\"menu-"
+"example-main\">Application Menu and Main Menu example</link> for an example."
 msgstr ""
-"Glib::RefPtr&lt;Gtk::UIManager&gt; m_refUIManager =\n"
-"    Gtk::UIManager::create();\n"
-"m_refUIManager-&gt;insert_action_group(m_refActionGroup);\n"
-"add_accel_group(m_refUIManager-&gt;get_accel_group());"
 
-#: C/gtkmm-tutorial-in.xml:3428(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3425
+#, fuzzy
+#| msgid ""
+#| "Then, you can define the actual visible layout of the menus and toolbars, "
+#| "and add the UI layout to the <classname>UIManager</classname>. This \"ui "
+#| "string\" uses an XML format, in which you should mention the names of the "
+#| "actions that you have already created. For instance:"
 msgid ""
 "Then, you can define the actual visible layout of the menus and toolbars, "
-"and add the UI layout to the <classname>UIManager</classname>. This \"ui "
-"string\" uses an XML format, in which you should mention the names of the "
-"actions that you have already created. For instance:"
+"and add the UI layout to the <classname>Builder</classname>. This \"ui string"
+"\" uses an XML format, in which you should mention the names of the actions "
+"that you have already created. For instance:"
 msgstr ""
 "Luego, puede definir la distribución visible real de los menús y las barras "
 "de herramientas, y añadírsela al <classname>UIManager</classname>. Esta "
 "«cadena de IU» usa un formato XML, en el que debe mencionar los nombre de "
 "las acciones que ya ha creado. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:3434(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3431
 #, no-wrap
 msgid ""
+"\n"
 "Glib::ustring ui_info =\n"
-"    \"&lt;ui&gt;\"\n"
-"    \"  &lt;menubar name='MenuBar'&gt;\"\n"
-"    \"    &lt;menu action='MenuFile'&gt;\"\n"
-"    \"      &lt;menuitem action='New'/&gt;\"\n"
-"    \"      &lt;menuitem action='Open'/&gt;\"\n"
-"    \"      &lt;separator/&gt;\"\n"
-"    \"      &lt;menuitem action='Quit'/&gt;\"\n"
-"    \"    &lt;/menu&gt;\"\n"
-"    \"    &lt;menu action='MenuEdit'&gt;\"\n"
-"    \"      &lt;menuitem action='Cut'/&gt;\"\n"
-"    \"      &lt;menuitem action='Copy'/&gt;\"\n"
-"    \"      &lt;menuitem action='Paste'/&gt;\"\n"
-"    \"    &lt;/menu&gt;\"\n"
-"    \"  &lt;/menubar&gt;\"\n"
-"    \"  &lt;toolbar  name='ToolBar'&gt;\"\n"
-"    \"    &lt;toolitem action='Open'/&gt;\"\n"
-"    \"    &lt;toolitem action='Quit'/&gt;\"\n"
-"    \"  &lt;/toolbar&gt;\"\n"
-"    \"&lt;/ui&gt;\";\n"
-"\n"
-"m_refUIManager-&gt;add_ui_from_string(ui_info);"
+"  \"&lt;interface&gt;\"\n"
+"  \"  &lt;menu id='menubar'&gt;\"\n"
+"  \"    &lt;submenu&gt;\"\n"
+"  \"      &lt;attribute name='label' translatable='yes'&gt;_File&lt;/attribute&gt;\"\n"
+"  \"      &lt;section&gt;\"\n"
+"  \"        &lt;item&gt;\"\n"
+"  \"          &lt;attribute name='label' translatable='yes'&gt;_New&lt;/attribute&gt;\"\n"
+"  \"          &lt;attribute name='action'&gt;example.new&lt;/attribute&gt;\"\n"
+"  \"          &lt;attribute name='accel'&gt;&amp;lt;Primary&amp;gt;n&lt;/attribute&gt;\"\n"
+"  \"        &lt;/item&gt;\"\n"
+"  \"      &lt;/section&gt;\"\n"
+"  \"      &lt;section&gt;\"\n"
+"  \"        &lt;item&gt;\"\n"
+"  \"          &lt;attribute name='label' translatable='yes'&gt;_Quit&lt;/attribute&gt;\"\n"
+"  \"          &lt;attribute name='action'&gt;example.quit&lt;/attribute&gt;\"\n"
+"  \"          &lt;attribute name='accel'&gt;&amp;lt;Primary&amp;gt;q&lt;/attribute&gt;\"\n"
+"  \"        &lt;/item&gt;\"\n"
+"  \"      &lt;/section&gt;\"\n"
+"  \"    &lt;/submenu&gt;\"\n"
+"  \"    &lt;submenu&gt;\"\n"
+"  \"      &lt;attribute name='label' translatable='yes'&gt;_Edit&lt;/attribute&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;_Copy&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;example.copy&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='accel'&gt;&amp;lt;Primary&amp;gt;c&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;_Paste&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;example.paste&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='accel'&gt;&amp;lt;Primary&amp;gt;v&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"    &lt;/submenu&gt;\"\n"
+"  \"  &lt;/menu&gt;\"\n"
+"  \"&lt;/interface&gt;\";\n"
+"\n"
+"m_refBuilder-&gt;add_from_string(ui_info);\n"
+"m_refBuilder-&gt;add_from_resource(\"/toolbar/toolbar.glade\");\n"
 msgstr ""
+"\n"
 "Glib::ustring ui_info =\n"
-"    \"&lt;ui&gt;\"\n"
-"    \"  &lt;menubar name='MenuBar'&gt;\"\n"
-"    \"    &lt;menu action='MenuFile'&gt;\"\n"
-"    \"      &lt;menuitem action='New'/&gt;\"\n"
-"    \"      &lt;menuitem action='Open'/&gt;\"\n"
-"    \"      &lt;separator/&gt;\"\n"
-"    \"      &lt;menuitem action='Quit'/&gt;\"\n"
-"    \"    &lt;/menu&gt;\"\n"
-"    \"    &lt;menu action='MenuEdit'&gt;\"\n"
-"    \"      &lt;menuitem action='Cut'/&gt;\"\n"
-"    \"      &lt;menuitem action='Copy'/&gt;\"\n"
-"    \"      &lt;menuitem action='Paste'/&gt;\"\n"
-"    \"    &lt;/menu&gt;\"\n"
-"    \"  &lt;/menubar&gt;\"\n"
-"    \"  &lt;toolbar  name='ToolBar'&gt;\"\n"
-"    \"    &lt;toolitem action='Open'/&gt;\"\n"
-"    \"    &lt;toolitem action='Quit'/&gt;\"\n"
-"    \"  &lt;/toolbar&gt;\"\n"
-"    \"&lt;/ui&gt;\";\n"
-"\n"
-"m_refUIManager-&gt;add_ui_from_string(ui_info);"
-
-#: C/gtkmm-tutorial-in.xml:3457(para)
-msgid ""
-"Remember that these names are just the identifiers that we used when "
-"creating the actions. They are not the text that the user will see in the "
-"menus and toolbars. We provided those human-readable names when we created "
-"the actions."
-msgstr ""
-"Recuerde que estos nombres son sólo identificadores que se usaron cuando se "
-"crearon las acciones. No son el texto que el usuario verá en los menús y "
-"barras de herramientas. Se han proporcionado esos nombres legibles por el "
-"humano cuando se crearon las acciones."
-
-#: C/gtkmm-tutorial-in.xml:3458(para)
-msgid ""
-"To instantiate a <classname>Gtk::MenuBar</classname> or <classname>Gtk::"
+"  \"&lt;interface&gt;\"\n"
+"  \"  &lt;menu id='menubar'&gt;\"\n"
+"  \"    &lt;submenu&gt;\"\n"
+"  \"      &lt;attribute name='label' translatable='yes'&gt;_File&lt;/attribute&gt;\"\n"
+"  \"      &lt;section&gt;\"\n"
+"  \"        &lt;item&gt;\"\n"
+"  \"          &lt;attribute name='label' translatable='yes'&gt;_New&lt;/attribute&gt;\"\n"
+"  \"          &lt;attribute name='action'&gt;example.new&lt;/attribute&gt;\"\n"
+"  \"          &lt;attribute name='accel'&gt;&amp;lt;Primary&amp;gt;n&lt;/attribute&gt;\"\n"
+"  \"        &lt;/item&gt;\"\n"
+"  \"      &lt;/section&gt;\"\n"
+"  \"      &lt;section&gt;\"\n"
+"  \"        &lt;item&gt;\"\n"
+"  \"          &lt;attribute name='label' translatable='yes'&gt;_Quit&lt;/attribute&gt;\"\n"
+"  \"          &lt;attribute name='action'&gt;example.quit&lt;/attribute&gt;\"\n"
+"  \"          &lt;attribute name='accel'&gt;&amp;lt;Primary&amp;gt;q&lt;/attribute&gt;\"\n"
+"  \"        &lt;/item&gt;\"\n"
+"  \"      &lt;/section&gt;\"\n"
+"  \"    &lt;/submenu&gt;\"\n"
+"  \"    &lt;submenu&gt;\"\n"
+"  \"      &lt;attribute name='label' translatable='yes'&gt;_Edit&lt;/attribute&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;_Copy&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;example.copy&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='accel'&gt;&amp;lt;Primary&amp;gt;c&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;_Paste&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;example.paste&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='accel'&gt;&amp;lt;Primary&amp;gt;v&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"    &lt;/submenu&gt;\"\n"
+"  \"  &lt;/menu&gt;\"\n"
+"  \"&lt;/interface&gt;\";\n"
+"\n"
+"m_refBuilder-&gt;add_from_string(ui_info);\n"
+"m_refBuilder-&gt;add_from_resource(\"/toolbar/toolbar.glade\");\n"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3472
+#, fuzzy
+#| msgid ""
+#| "Note that this is where we specify the names of the actions as they will "
+#| "be seen by users in menus and toolbars. Therefore, this is where you "
+#| "should make strings translatable, by putting them inside the _() macro. "
+#| "When we use the Gtk::Stock items, of course, translations are "
+#| "automatically available."
+msgid ""
+"This is where we specify the names of the menu items as they will be seen by "
+"users in the menu. Therefore, this is where you should make strings "
+"translatable, by adding <literal>translatable='yes'</literal>."
+msgstr ""
+"Tenga en cuenta que aquí es donde se especifican los nombres de las acciones "
+"como las verán los usuarios en los menús y las barras de herramientas. Por "
+"lo tanto, aquí es donde debe hacer las cadenas traducibles, poniéndolas "
+"dentro de la macro _(). Cuando use los elementos de Gtk::Stock, las "
+"traducciones estarán disponibles automáticamente, por supuesto."
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3476
+#, fuzzy
+#| msgid ""
+#| "To instantiate a <classname>Gtk::MenuBar</classname> or <classname>Gtk::"
+#| "Toolbar</classname> which you can actually show, you should use the "
+#| "<methodname>UIManager::get_widget()</methodname> method, and then add the "
+#| "widget to a container. For instance:"
+msgid ""
+"To instantiate a <classname>Gtk::MenuBar</classname> and <classname>Gtk::"
 "Toolbar</classname> which you can actually show, you should use the "
-"<methodname>UIManager::get_widget()</methodname> method, and then add the "
-"widget to a container. For instance:"
+"<methodname>Builder::get_object()</methodname> and <methodname>Builder::"
+"get_widget()</methodname> methods, and then add the widgets to a container. "
+"For instance:"
 msgstr ""
 "Para instanciar una <classname>Gtk::MenuBar</classname> o una "
 "<classname>Gtk::Toolbar</classname>, a la que en realidad puede mostrar, "
 "debe usar el método <methodname>UIManager::get_widget()</methodname>, y "
 "luego añadirle el widget a un contenedor. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:3464(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3483
 #, no-wrap
 msgid ""
-"Gtk::Widget* pMenubar = m_refUIManager-&gt;get_widget(\"/MenuBar\");\n"
-"pBox-&gt;add(*pMenuBar, Gtk::PACK_SHRINK);"
+"\n"
+"auto gmenu = m_refBuilder-&gt;get_object&lt;Gio::Menu&gt;(\"menubar\");\n"
+"auto pMenuBar = Gtk::make_managed&lt;Gtk::MenuBar&gt;(gmenu);\n"
+"m_Box.append(*pMenuBar);\n"
+"\n"
+"auto toolbar = m_refBuilder-&gt;get_widget&lt;Gtk::Toolbar&gt;(\"toolbar\");\n"
+"m_Box.append(*toolbar);\n"
 msgstr ""
-"Gtk::Widget* pMenubar = m_refUIManager-&gt;get_widget(\"/MenuBar\");\n"
-"pBox-&gt;add(*pMenuBar, Gtk::PACK_SHRINK);"
+"\n"
+"auto gmenu = m_refBuilder-&gt;get_object&lt;Gio::Menu&gt;(\"menubar\");\n"
+"auto pMenuBar = Gtk::make_managed&lt;Gtk::MenuBar&gt;(gmenu);\n"
+"m_Box.append(*pMenuBar);\n"
+"\n"
+"auto toolbar = m_refBuilder-&gt;get_widget&lt;Gtk::Toolbar&gt;(\"toolbar\");\n"
+"m_Box.append(*toolbar);\n"
 
-#: C/gtkmm-tutorial-in.xml:3470(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3495
 msgid "Popup Menus"
 msgstr "Menús emergentes"
 
-#: C/gtkmm-tutorial-in.xml:3471(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3496
 msgid ""
 "<classname>Menus</classname> are normally just added to a window, but they "
 "can also be displayed temporarily as the result of a mouse button click. For "
@@ -6310,40 +8596,64 @@ msgstr ""
 "pulsación del botón del ratón. Por ejemplo, se puede mostrar un menú "
 "contextual cuando el usuario pulsa el botón derecho de su ratón."
 
-#: C/gtkmm-tutorial-in.xml:3478(para)
-msgid ""
-"The UI layout for a popup menu should use the <literal>popup</literal> node. "
-"For instance:"
-msgstr ""
-"La distribución de la IU para un menú emergente debe usar el nodo "
-"<literal>popup</literal>. Por ejemplo:"
-
-#: C/gtkmm-tutorial-in.xml:3480(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3505
 #, no-wrap
 msgid ""
-"Glib::ustring ui_info =\n"
-"    \"&lt;ui&gt;\"\n"
-"    \"  &lt;popup name='PopupMenu'&gt;\"\n"
-"    \"    &lt;menuitem action='ContextEdit'/&gt;\"\n"
-"    \"    &lt;menuitem action='ContextProcess'/&gt;\"\n"
-"    \"    &lt;menuitem action='ContextRemove'/&gt;\"\n"
-"    \"  &lt;/popup&gt;\"\n"
-"    \"&lt;/ui&gt;\";\n"
 "\n"
-"m_refUIManager-&gt;add_ui_from_string(ui_info);"
-msgstr ""
 "Glib::ustring ui_info =\n"
-"    \"&lt;ui&gt;\"\n"
-"    \"  &lt;popup name='PopupMenu'&gt;\"\n"
-"    \"    &lt;menuitem action='ContextEdit'/&gt;\"\n"
-"    \"    &lt;menuitem action='ContextProcess'/&gt;\"\n"
-"    \"    &lt;menuitem action='ContextRemove'/&gt;\"\n"
-"    \"  &lt;/popup&gt;\"\n"
-"    \"&lt;/ui&gt;\";\n"
+"  \"&lt;interface&gt;\"\n"
+"  \"  &lt;menu id='menu-examplepopup'&gt;\"\n"
+"  \"    &lt;section&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;Edit&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;examplepopup.edit&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;Process&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;examplepopup.process&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;Remove&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;examplepopup.remove&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"    &lt;/section&gt;\"\n"
+"  \"  &lt;/menu&gt;\"\n"
+"  \"&lt;/interface&gt;\";\n"
+"\n"
+"m_refBuilder-&gt;add_from_string(ui_info);\n"
+"\n"
+"auto gmenu = m_refBuilder-&gt;get_object&lt;Gio::Menu&gt;(\"menu-examplepopup\");\n"
+"m_pMenuPopup = std::make_unique&lt;Gtk::Menu&gt;(gmenu);\n"
+msgstr ""
 "\n"
-"m_refUIManager-&gt;add_ui_from_string(ui_info);"
-
-#: C/gtkmm-tutorial-in.xml:3491(para)
+"Glib::ustring ui_info =\n"
+"  \"&lt;interface&gt;\"\n"
+"  \"  &lt;menu id='menu-examplepopup'&gt;\"\n"
+"  \"    &lt;section&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;Edit&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;examplepopup.edit&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;Process&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;examplepopup.process&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"      &lt;item&gt;\"\n"
+"  \"        &lt;attribute name='label' translatable='yes'&gt;Remove&lt;/attribute&gt;\"\n"
+"  \"        &lt;attribute name='action'&gt;examplepopup.remove&lt;/attribute&gt;\"\n"
+"  \"      &lt;/item&gt;\"\n"
+"  \"    &lt;/section&gt;\"\n"
+"  \"  &lt;/menu&gt;\"\n"
+"  \"&lt;/interface&gt;\";\n"
+"\n"
+"m_refBuilder-&gt;add_from_string(ui_info);\n"
+"\n"
+"auto gmenu = m_refBuilder-&gt;get_object&lt;Gio::Menu&gt;(\"menu-examplepopup\");\n"
+"m_pMenuPopup = std::make_unique&lt;Gtk::Menu&gt;(gmenu);\n"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3532
 msgid ""
 "To show the popup menu, use <classname>Gtk::Menu</classname>'s "
 "<methodname>popup()</methodname> method, providing the button identifier and "
@@ -6356,218 +8666,267 @@ msgstr ""
 "señal <literal>button_press_event</literal> que, de todos modos, deberá "
 "manejar. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:3497(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3538
 #, no-wrap
+#| msgid ""
+#| "bool ExampleWindow::on_button_press_event(GdkEventButton* event)\n"
+#| "{\n"
+#| "  if( (event-&gt;type == GDK_BUTTON_PRESS) &amp;&amp;\n"
+#| "      (event-&gt;button == 3) )\n"
+#| "  {\n"
+#| "    m_Menu_Popup-&gt;popup(event-&gt;button, event-&gt;time);\n"
+#| "    return true; //It has been handled.\n"
+#| "  }\n"
+#| "  else\n"
+#| "    return false;\n"
+#| "}"
 msgid ""
+"\n"
 "bool ExampleWindow::on_button_press_event(GdkEventButton* event)\n"
 "{\n"
-"  if( (event-&gt;type == GDK_BUTTON_PRESS) &amp;&amp;\n"
-"      (event-&gt;button == 3) )\n"
+"  if( (event-&gt;type == GDK_BUTTON_PRESS) &amp;&amp; (event-&gt;button == 3) )\n"
 "  {\n"
-"    m_Menu_Popup-&gt;popup(event-&gt;button, event-&gt;time);\n"
+"    if(!m_pMenuPopup-&gt;get_attach_widget())\n"
+"      m_pMenuPopup-&gt;attach_to_widget(*this);\n"
+"\n"
+"    m_pMenuPopup-&gt;popup(event-&gt;button, event-&gt;time);\n"
 "    return true; //It has been handled.\n"
 "  }\n"
 "  else\n"
 "    return false;\n"
-"}"
+"}\n"
 msgstr ""
+"\n"
 "bool ExampleWindow::on_button_press_event(GdkEventButton* event)\n"
 "{\n"
-"  if( (event-&gt;type == GDK_BUTTON_PRESS) &amp;&amp;\n"
-"      (event-&gt;button == 3) )\n"
+"  if( (event-&gt;type == GDK_BUTTON_PRESS) &amp;&amp; (event-&gt;button == 3) )\n"
 "  {\n"
-"    m_Menu_Popup-&gt;popup(event-&gt;button, event-&gt;time);\n"
+"    if(!m_pMenuPopup-&gt;get_attach_widget())\n"
+"      m_pMenuPopup-&gt;attach_to_widget(*this);\n"
+"\n"
+"    m_pMenuPopup-&gt;popup(event-&gt;button, event-&gt;time);\n"
 "    return true; //It has been handled.\n"
 "  }\n"
 "  else\n"
 "    return false;\n"
-"}"
-
-#: C/gtkmm-tutorial-in.xml:3514(title)
-msgid "Main Menu example"
-msgstr "Ejemplo de menú principal"
-
-#: C/gtkmm-tutorial-in.xml:3517(title)
-msgid "Main Menu"
-msgstr "Menú principal"
-
-#: C/gtkmm-tutorial-in.xml:3527(title)
-msgid "Popup Menu example"
-msgstr "Ejemplo de menú emergente"
+"}\n"
 
-#: C/gtkmm-tutorial-in.xml:3530(title)
-msgid "Popup Menu"
-msgstr "Menú emergente"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3557
+msgid "Gio::Resource and glib-compile-resources"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:3545(title) C/gtkmm-tutorial-in.xml:3586(title)
-msgid "ToolPalette"
-msgstr "ToolPalette"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3559
+msgid ""
+"Applications and libraries often contain binary or textual data that is "
+"really part of the application, rather than user data. For instance "
+"<classname>Gtk::Builder</classname> <filename class=\"extension\">.glade</"
+"filename> files, splashscreen images, <classname>Gio::Menu</classname> "
+"markup xml, CSS files, icons, etc. These are often shipped as files in "
+"<filename class=\"directory\">$datadir/appname</filename>, or manually "
+"included as literal strings in the code."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:3547(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3567
 msgid ""
-"A <classname>ToolPalette</classname> is similar to a <classname>Toolbar</"
-"classname> but can contain a grid of items, categorized into groups. The "
-"user may hide or expand each group. As in a toolbar, the items may be "
-"displayed as only icons, as only text, or as icons with text."
+"The <classname>Gio::Resource</classname> API and the <application>glib-"
+"compile-resources</application> program provide a convenient and efficient "
+"alternative to this, which has some nice properties. You maintain the files "
+"as normal files, so it's easy to edit them, but during the build the files "
+"are combined into a binary bundle that is linked into the executable. This "
+"means that loading the resource files is efficient (as they are already in "
+"memory, shared with other instances) and simple (no need to check for things "
+"like I/O errors or locate the files in the filesystem). It also makes it "
+"easier to create relocatable applications."
 msgstr ""
-"Una <classname>ToolPalette</classname> es similar a una <classname>Toolbar</"
-"classname>, pero puede contener una rejilla de elementos categorizados en "
-"grupos. El usuario puede ocultar o expandir cada grupo. Al igual que en una "
-"barra de herramientas, los elementos pueden aparecer sólo como iconos, como "
-"sólo texto, o en forma de iconos con el texto."
 
-#: C/gtkmm-tutorial-in.xml:3549(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3576
 msgid ""
-"The <classname>ToolPalette</classname>'s items might be dragged or simply "
-"activated. For instance, the user might drag objects to a canvas to create "
-"new items there. Or the user might click an item to activate a certain brush "
-"size in a drawing application."
+"Resource bundles are created by the <ulink url=\"https://developer.gnome.org/";
+"gio/stable/glib-compile-resources.html\">glib-compile-resources</ulink> "
+"program which takes an xml file that describes the bundle, and a set of "
+"files that the xml references. These are combined into a binary resource "
+"bundle."
 msgstr ""
-"Los elementos del <classname>ToolPalette</classname> pueden arrastrarse o "
-"simplemente activarse. Por ejemplo, el usuario tal vez arrastre objetos a un "
-"lienzo para crear elementos nuevos allí. O bien, el usuario podría pulsar "
-"sobre un elemento para activar un determinado tamaño de pincel en una "
-"aplicación de dibujo."
 
-#: C/gtkmm-tutorial-in.xml:3550(para)
-#, fuzzy
-#| msgid ""
-#| "<classname>ToolItemGroup</classname>s should be added to the tool pallete "
-#| "via the base class's <function>Gtk::Container::add()</function> method, "
-#| "for instance like so:"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3582
 msgid ""
-"<classname>ToolItemGroup</classname>s should be added to the tool palette "
-"via the base class's <function>Gtk::Container::add()</function> method, for "
-"instance like so:"
+"<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGio_1_1Resource.";
+"html\">Gio::Resource Reference</ulink>"
 msgstr ""
-"Los <classname>ToolItemGroup</classname> deben añadirse a la paleta de "
-"herramientas a través del método <function>Gtk::Container::add()</function> "
-"de la clase base, por ejemplo, así:"
 
-#: C/gtkmm-tutorial-in.xml:3553(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:3585
 #, no-wrap
 msgid ""
 "\n"
-"Gtk::ToolItemGroup* group_brushes =\n"
-"  Gtk::manage(new Gtk::ToolItemGroup(\"Brushes\"));\n"
-"m_ToolPalette.add(*group_brushes);\n"
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;gresources&gt;\n"
+"  &lt;gresource prefix=\"/toolbar\"&gt;\n"
+"    &lt;file preprocess=\"xml-stripblanks\"&gt;toolbar.glade&lt;/file&gt;\n"
+"    &lt;file&gt;rain.png&lt;/file&gt;\n"
+"  &lt;/gresource&gt;\n"
+"&lt;/gresources&gt;\n"
 msgstr ""
 "\n"
-"Gtk::ToolItemGroup* group_brushes =\n"
-"  Gtk::manage(new Gtk::ToolItemGroup(\"Brushes\"));\n"
-"m_ToolPalette.add(*group_brushes);\n"
+"&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n"
+"&lt;gresources&gt;\n"
+"  &lt;gresource prefix=\"/toolbar\"&gt;\n"
+"    &lt;file preprocess=\"xml-stripblanks\"&gt;toolbar.glade&lt;/file&gt;\n"
+"    &lt;file&gt;rain.png&lt;/file&gt;\n"
+"  &lt;/gresource&gt;\n"
+"&lt;/gresources&gt;\n"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:3596
+msgid "<filename>/toolbar/toolbar.glade</filename>"
+msgstr "<filename>/toolbar/toolbar.glade</filename>"
 
-#: C/gtkmm-tutorial-in.xml:3559(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:3597
+msgid "<filename>/toolbar/rain.png</filename>"
+msgstr "<filename>/toolbar/rain.png</filename>"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3583
 msgid ""
-"<classname>Gtk::ToolItem</classname>s can then be added to the group. For "
-"instance, like so:"
+"An example: <_:programlisting-1/> This will create a resource bundle with "
+"the files <_:itemizedlist-2/>"
 msgstr ""
-"Entonces podrá añadir varios <classname>Gtk::ToolItem</classname> al grupo. "
-"Por ejemplo, así:"
 
-#: C/gtkmm-tutorial-in.xml:3563(programlisting)
+#. (itstool) path: para/screen
+#: C/index-in.docbook:3605
 #, no-wrap
+msgid "$ glib-compile-resources --target=resources.c --generate-source toolbar.gresource.xml"
+msgstr "$ glib-compile-resources --target=resources.c --generate-source toolbar.gresource.xml"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3600
 msgid ""
-"\n"
-"Gtk::ToolButton* button = Gtk::manage(new Gtk::ToolButton(icon, \"Big\"));\n"
-"button-&gt;set_tooltip_text(\"Big Brush);\n"
-"group_brushes-&gt;insert(*button);\n"
-msgstr ""
-"\n"
-"Gtk::ToolButton* button = Gtk::manage(new Gtk::ToolButton(icon, \"Big\"));\n"
-"button-&gt;set_tooltip_text(\"Big Brush);\n"
-"group_brushes-&gt;insert(*button);\n"
-
-#: C/gtkmm-tutorial-in.xml:3569(para)
-msgid ""
-"You might then handle the <classname>ToolButton</classname>'s "
-"<literal>clicked</literal> signal. Alternatively, you could allow the item "
-"to be dragged to another widget, by calling <methodname>Gtk::ToolPalette::"
-"add_drag_dest()</methodname> and then using <methodname>Gtk::ToolPalette::"
-"get_drag_item()</methodname> in the other widget's "
-"<literal>drag_data_received</literal> signal handler."
-msgstr ""
-"Entonces podrá manejar la señal <literal>clicked</literal> del "
-"<classname>ToolButton</classname>. Alternativamente puede permitir que se "
-"arrastre el elemento a otro widget, llamando a <methodname>Gtk::ToolPalette::"
-"add_drag_dest()</methodname> y después usando <methodname>Gtk::ToolPalette::"
-"get_drag_item()</methodname> en el gestor de la señal "
-"<literal>drag_data_received</literal> del otro widget."
-
-#: C/gtkmm-tutorial-in.xml:3571(ulink)
-msgid "ToolPalette Reference"
-msgstr "Referencia de ToolPalette"
-
-#: C/gtkmm-tutorial-in.xml:3572(ulink)
-msgid "ToolItemGroup Reference"
-msgstr "Referencia de ToolItemGroup"
-
-#: C/gtkmm-tutorial-in.xml:3573(ulink)
-msgid "ToolItem Reference"
-msgstr "Referencia de ToolItem"
-
-#: C/gtkmm-tutorial-in.xml:3577(para)
-#, fuzzy
-#| msgid ""
-#| "Call <methodname>add_drag_dest()</methodname> to allow items or groups to "
-#| "be dragged from the tool palette to a particular destination widget. You "
-#| "can then use <methodname>get_drag_item()</methodname> to discover which "
-#| "ToolItem or ToolItemGroup is being dragged. You can use "
-#| "<literal>dynamic_cast</literal> to discover whether is it an item or a "
-#| "group. For instance, you might use this in your "
-#| "<literal>drag_data_received</literal> signal handler, to add a dropped "
-#| "item, or to show a suitable icon while dragging."
-msgid ""
-"Call <methodname>add_drag_dest()</methodname> to allow items or groups to be "
-"dragged from the tool palette to a particular destination widget. You can "
-"then use <methodname>get_drag_item()</methodname> to discover which ToolItem "
-"or ToolItemGroup is being dragged. You can use <literal>dynamic_cast</"
-"literal> to discover whether it is an item or a group. For instance, you "
-"might use this in your <literal>drag_data_received</literal> signal handler, "
-"to add a dropped item, or to show a suitable icon while dragging."
-msgstr ""
-"Llame a <methodname>add_drag_dest()</methodname> para permitir arrastrar "
-"elementos o grupos de la paleta de herramientas un widget particular de "
-"destino. Entonces podrá usar <methodname>get_drag_item()</methodname> para "
-"descubrir qué «ToolItem» o «ToolItemGroup» se está arrastrando. Después "
-"podrá usar <literal>dynamic_cast</literal> para descubrir si es un elemento "
-"o un grupo. Por ejemplo, podría usar esto en su gestor de la señal "
-"<literal>drag_data_received</literal>, para añadir un elemento soltado, o "
-"para mostrar un icono adecuado mientras se arrastra."
-
-#: C/gtkmm-tutorial-in.xml:3578(para)
-msgid ""
-"See the <link linkend=\"chapter-draganddrop\">Drag and Drop</link> chapter "
-"for general advice about Drag and Drop with gtkmm."
-msgstr ""
-"Consulte el capítulo <link linkend=\"chapter-draganddrop\">Arrastrar y "
-"soltar</link> para obtener información general acerca de arrastrar y soltar "
-"con gtkmm."
-
-#: C/gtkmm-tutorial-in.xml:3581(title)
-msgid "ToolPalette Example"
-msgstr "Ejemplo de ToolPalette"
-
-#: C/gtkmm-tutorial-in.xml:3583(para)
-msgid ""
-"This example adds a <classname>ToolPalette</classname> and a "
-"<classname>DrawingArea</classname> to a window and allows the user to drag "
-"icons from the tool palette to the drawing area. The tool palette contains "
-"several groups of items. The combo boxes allow the user to change the style "
-"and orientation of the tool palette."
-msgstr ""
-"Este ejemplo añade una <classname>ToolPalette</classname> y una "
-"<classname>DrawingArea</classname> a una ventana y le permite al usuario "
-"arrastrar iconos de la paleta de herramientas al área de dibujo. La paleta "
-"de herramientas contiene varios grupos de elementos. Las cajas combinadas le "
-"permiten al usuario cambiar el estilo y la orientación de la paleta de "
-"herramientas."
+"You can then use <application>glib-compile-resources</application> to "
+"compile the xml to a binary bundle that you can load with <methodname>Gio::"
+"Resource::create_from_file()</methodname>. However, it's more common to use "
+"the <parameter class=\"command\">--generate-source</parameter> argument to "
+"create a C source file to link directly into your application. E.g. <_:"
+"screen-1/>"
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3607
+msgid ""
+"Once a <classname>Gio::Resource</classname> has been created and registered "
+"all the data in it can be accessed globally in the process by using API "
+"calls like <methodname>Gio::Resource::open_stream_from_global_resources()</"
+"methodname> to stream the data or <methodname>Gio::Resource::"
+"lookup_data_in_global_resources()</methodname> to get a direct pointer to "
+"the data. You can also use URIs like <uri>resource:///toolbar/rain.png</uri> "
+"with <classname>Gio::File</classname> to access the resource data."
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3615
+msgid ""
+"Often you don't need a <classname>Gio::Resource</classname> instance, "
+"because resource data can be loaded with methods such as <methodname>Gdk::"
+"Pixbuf::create_from_resource()</methodname>, <methodname>Gtk::Builder::"
+"add_from_resource()</methodname> and <methodname>Gtk::Image::"
+"set_from_resource()</methodname>."
+msgstr ""
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3628
+#, fuzzy
+#| msgid "Main Menu example"
+msgid "Application Menu and Main Menu example"
+msgstr "Ejemplo de menú principal"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3629
+msgid ""
+"This program contains an application menu, a menubar and a toolbar. Classes "
+"are derived from <classname>Gtk::Application</classname> and <classname>Gtk::"
+"ApplicationWindow</classname>."
+msgstr ""
+
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3636
+#, fuzzy
+#| msgid "Main Menu"
+msgid "App and Main Menu"
+msgstr "Menú principal"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3642
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/menus/main_menu/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/menus/main_menu/\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3646
+msgid "Main Menu example"
+msgstr "Ejemplo de menú principal"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3647
+#, fuzzy
+#| msgid ""
+#| "This macro declares a wrapper for a type that is derived from "
+#| "<classname>GTypeInterface</classname>."
+msgid ""
+"This program contains a menubar and a toolbar. A class is derived from "
+"<classname>Gtk::Window</classname>."
+msgstr ""
+"Esta macro declara un envoltorio para un tipo que deriva de "
+"<classname>GTypeInterface</classname>."
+
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3653
+msgid "Main Menu"
+msgstr "Menú principal"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3659
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/menus_and_toolbars\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/menus_and_toolbars\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:3663
+msgid "Popup Menu example"
+msgstr "Ejemplo de menú emergente"
 
-#: C/gtkmm-tutorial-in.xml:3599(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3666
+msgid "Popup Menu"
+msgstr "Menú emergente"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3672
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/menus/popup/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/menus/popup/\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:3681
 msgid "Adjustments"
 msgstr "Ajustes"
 
-#: C/gtkmm-tutorial-in.xml:3601(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3683
 msgid ""
 "<application>gtkmm</application> has various widgets that can be visually "
 "adjusted using the mouse or the keyboard, such as the <classname>Range</"
@@ -6585,7 +8944,8 @@ msgstr ""
 "classname>. Estos widgets tienen objetos <classname>Gtk::Adjustment</"
 "classname> que expresan esta parte común de sus API."
 
-#: C/gtkmm-tutorial-in.xml:3611(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3693
 msgid ""
 "So that applications can react to changes, for instance when a user moves a "
 "scrollbar, <classname>Gtk::Adjustment</classname> has a "
@@ -6598,11 +8958,13 @@ msgstr ""
 "Entonces, usar el método <methodname>get_value()</methodname> para descubrir "
 "el valor nuevo."
 
-#: C/gtkmm-tutorial-in.xml:3619(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3701
 msgid "Creating an Adjustment"
 msgstr "Crear un ajuste"
 
-#: C/gtkmm-tutorial-in.xml:3621(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3703
 #, fuzzy
 #| msgid ""
 #| "The <classname>Gtk::Adjustment</classname> constructor is as follows:"
@@ -6611,7 +8973,8 @@ msgid ""
 "<methodname>create()</methodname> method which is as follows:"
 msgstr "El constructor de <classname>Gtk::Adjustment</classname> es así:"
 
-#: C/gtkmm-tutorial-in.xml:3626(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3708
 #, no-wrap
 msgid ""
 "Glib::RefPtr&lt;Gtk::Adjustment&gt; Gtk::Adjustment::create(\n"
@@ -6630,7 +8993,8 @@ msgstr ""
 "  double page_increment = 10,\n"
 "  double page_size = 0);"
 
-#: C/gtkmm-tutorial-in.xml:3634(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3716
 #, fuzzy
 #| msgid ""
 #| "The <parameter>value</parameter> argument is the initial value of the "
@@ -6669,11 +9033,13 @@ msgstr ""
 "argumento <parameter>upper</parameter> se usa para representar la coordenada "
 "de más abajo o de más a la derecha en el hijo de un widget panorámico."
 
-#: C/gtkmm-tutorial-in.xml:3653(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3735
 msgid "Using Adjustments the Easy Way"
 msgstr "Usar ajustes de la manera fácil"
 
-#: C/gtkmm-tutorial-in.xml:3655(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3737
 msgid ""
 "The adjustable widgets can be roughly divided into those which use and "
 "require specific units for these values, and those which treat them as "
@@ -6683,7 +9049,8 @@ msgstr ""
 "unidades específicas para estos valores, y aquellos que los tratan como "
 "números arbitrarios."
 
-#: C/gtkmm-tutorial-in.xml:3660(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3742
 msgid ""
 "The group which treats the values as arbitrary numbers includes the "
 "<classname>Range</classname> widgets (<classname>Scrollbar</classname> and "
@@ -6706,7 +9073,8 @@ msgstr ""
 "predeterminada, sólo modificarán el <parameter>value</parameter> de un "
 "ajuste."
 
-#: C/gtkmm-tutorial-in.xml:3672(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3754
 msgid ""
 "The other group includes the <classname>Viewport</classname> widget and the "
 "<classname>ScrolledWindow</classname> widget. All of these widgets use pixel "
@@ -6723,7 +9091,8 @@ msgstr ""
 "generalmente querrá dejarle a esta categoría particular de widgets crear sus "
 "propios ajustes."
 
-#: C/gtkmm-tutorial-in.xml:3681(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3763
 msgid ""
 "If you share an adjustment object between a Scrollbar and a TextView widget, "
 "manipulating the scrollbar will automagically adjust the TextView widget. "
@@ -6733,7 +9102,8 @@ msgstr ""
 "widget «TextView», manipular la barra de desplazamiento ajustará "
 "automágicamente al widget «TextView». Puede establecerlo así:"
 
-#: C/gtkmm-tutorial-in.xml:3686(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3768
 #, no-wrap
 msgid ""
 "// creates its own adjustments\n"
@@ -6746,11 +9116,13 @@ msgstr ""
 "// uses the newly-created adjustment for the scrollbar as well\n"
 "Gtk::Scrollbar vscrollbar (textview.get_vadjustment(), Gtk::ORIENTATION_VERTICAL);"
 
-#: C/gtkmm-tutorial-in.xml:3694(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3776
 msgid "Adjustment Internals"
 msgstr "Interioridades del ajuste"
 
-#: C/gtkmm-tutorial-in.xml:3696(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3778
 msgid ""
 "OK, you say, that's nice, but what if I want to create my own handlers to "
 "respond when the user adjusts a <classname>Range</classname> widget or a "
@@ -6758,13 +9130,14 @@ msgid ""
 "Adjustment</classname>, you can use the <methodname>get_value()</methodname> "
 "and <methodname>set_value()</methodname> methods:"
 msgstr ""
-"Hasta aquí está todo bien, pero ¿y si quiere crear sus propios gestores "
-"para responder cuando el usuario ajusta un widget <classname>Range</"
-"classname> o un <classname>SpinButton</classname>? Para acceder al valor de "
-"un <classname>Gtk::Adjustment</classname>, puede usar los métodos "
+"Hasta aquí está todo bien, pero ¿y si quiere crear sus propios gestores para "
+"responder cuando el usuario ajusta un widget <classname>Range</classname> o "
+"un <classname>SpinButton</classname>? Para acceder al valor de un "
+"<classname>Gtk::Adjustment</classname>, puede usar los métodos "
 "<methodname>get_value()</methodname> y <methodname>set_value()</methodname>:"
 
-#: C/gtkmm-tutorial-in.xml:3704(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3786
 msgid ""
 "As mentioned earlier, <classname>Gtk::Adjustment</classname> can emit "
 "signals. This is, of course, how updates happen automatically when you share "
@@ -6781,7 +9154,8 @@ msgstr ""
 "<literal>value_changed</literal> de sus ajustes, como también puede su "
 "programa."
 
-#: C/gtkmm-tutorial-in.xml:3713(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3795
 msgid ""
 "So, for example, if you have a <classname>Scale</classname> widget, and you "
 "want to change the rotation of a picture whenever its value changes, you "
@@ -6791,7 +9165,8 @@ msgstr ""
 "quiere cambiar la rotación de una imagen cuando su valor cambia, podría "
 "crear un gestor de señales de esta forma:"
 
-#: C/gtkmm-tutorial-in.xml:3718(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3800
 #, no-wrap
 msgid ""
 "void cb_rotate_picture (MyPicture* picture)\n"
@@ -6804,11 +9179,13 @@ msgstr ""
 "  picture-&gt;set_rotation(adj-&gt;get_value());\n"
 "..."
 
-#: C/gtkmm-tutorial-in.xml:3722(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3804
 msgid "and connect it to the scale widget's adjustment like this:"
 msgstr "y conectarlo al ajuste del widget de escala así:"
 
-#: C/gtkmm-tutorial-in.xml:3725(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3807
 #, no-wrap
 msgid ""
 "adj-&gt;signal_value_changed().connect(sigc::bind&lt;MyPicture*&gt;(sigc::mem_fun(*this,\n"
@@ -6817,7 +9194,8 @@ msgstr ""
 "adj-&gt;signal_value_changed().connect(sigc::bind&lt;MyPicture*&gt;(sigc::mem_fun(*this,\n"
 "    &amp;cb_rotate_picture), picture));"
 
-#: C/gtkmm-tutorial-in.xml:3728(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3810
 msgid ""
 "What if a widget reconfigures the <parameter>upper</parameter> or "
 "<parameter>lower</parameter> fields of its <classname>Adjustment</"
@@ -6829,7 +9207,8 @@ msgstr ""
 "cuando un usuario le añade más texto a un widget de texto? En este caso, "
 "emite la señal <literal>changed</literal>."
 
-#: C/gtkmm-tutorial-in.xml:3735(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3817
 msgid ""
 "<classname>Range</classname> widgets typically connect a handler to this "
 "signal, which changes their appearance to reflect the change - for example, "
@@ -6844,173 +9223,28 @@ msgstr ""
 "valores <parameter>lower</parameter> y <parameter>upper</parameter> de su "
 "<classname>Adjustment</classname>."
 
-#: C/gtkmm-tutorial-in.xml:3744(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3826
 msgid ""
 "You probably won't ever need to attach a handler to this signal, unless "
 "you're writing a new type of range widget."
 msgstr ""
-"Probablemente nunca necesite adjuntarle un gestor a esta señal, a menos "
-"que esté escribiendo un nuevo tipo de widget de rango."
+"Probablemente nunca necesite adjuntarle un gestor a esta señal, a menos que "
+"esté escribiendo un nuevo tipo de widget de rango."
 
-#: C/gtkmm-tutorial-in.xml:3748(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:3830
 #, no-wrap
 msgid "adjustment-&gt;signal_changed();"
 msgstr "adjustment-&gt;signal_changed();"
 
-#: C/gtkmm-tutorial-in.xml:3755(title)
-msgid "Widgets Without X-Windows"
-msgstr "Widgets sin X-Windows"
-
-#: C/gtkmm-tutorial-in.xml:3757(para)
-msgid ""
-"Some Widgets do not have an associated X-Window, so they therefore do not "
-"receive X events. This means that the signals described in the <link linkend="
-"\"sec-xeventsignals\">X event signals</link> section will not be emitted. If "
-"you want to capture events for these widgets you can use a special container "
-"called <classname>Gtk::EventBox</classname>, which is described in the <link "
-"linkend=\"sec-eventbox\">EventBox</link> section."
-msgstr ""
-"Algunos widgets no tienen una X-Window asociada, por lo que no reciben "
-"eventos de X. Esto significa que las señales descritas en la sección <link "
-"linkend=\"sec-xeventsignals\">Señales de eventos de X</link> no se emitirán. "
-"Si quiere capturar eventos para estos widgets, puede usar un contenedor "
-"especial llamado <classname>Gtk::EventBox</classname>, que se describe en la "
-"sección <link linkend=\"sec-eventbox\">EventBox</link>."
-
-#: C/gtkmm-tutorial-in.xml:3766(para)
-msgid "Here is a list of some of these Widgets:"
-msgstr "Aquí hay una lista de estos widgets"
-
-#: C/gtkmm-tutorial-in.xml:3769(programlisting)
-#, no-wrap
-msgid ""
-"Gtk::Alignment\n"
-"Gtk::Arrow\n"
-"Gtk::AspectFrame\n"
-"Gtk::Bin\n"
-"Gtk::Box\n"
-"Gtk::Button\n"
-"Gtk::CheckButton\n"
-"Gtk::Fixed\n"
-"Gtk::Frame\n"
-"Gtk::Grid\n"
-"Gtk::Image\n"
-"Gtk::Label\n"
-"Gtk::MenuItem\n"
-"Gtk::Notebook\n"
-"Gtk::Paned\n"
-"Gtk::RadioButton\n"
-"Gtk::Range\n"
-"Gtk::ScrolledWindow\n"
-"Gtk::Separator\n"
-"Gtk::Table (deprecated from <application>gtkmm</application> version 3.4)\n"
-"Gtk::Toolbar"
-msgstr ""
-"Gtk::Alignment\n"
-"Gtk::Arrow\n"
-"Gtk::AspectFrame\n"
-"Gtk::Bin\n"
-"Gtk::Box\n"
-"Gtk::Button\n"
-"Gtk::CheckButton\n"
-"Gtk::Fixed\n"
-"Gtk::Frame\n"
-"Gtk::Grid\n"
-"Gtk::Image\n"
-"Gtk::Label\n"
-"Gtk::MenuItem\n"
-"Gtk::Notebook\n"
-"Gtk::Paned\n"
-"Gtk::RadioButton\n"
-"Gtk::Range\n"
-"Gtk::ScrolledWindow\n"
-"Gtk::Separator\n"
-"Gtk::Table (marcado como obsoleto en la versión de <application>gtkmm</application> 3.4)\n"
-"Gtk::Toolbar"
-
-#: C/gtkmm-tutorial-in.xml:3791(para)
-msgid ""
-"These widgets are mainly used for decoration or layout, so you won't often "
-"need to capture events on them. They are intended to have no X-Window in "
-"order to improve performance."
-msgstr ""
-"Estos widgets se usan principalmente para decorar o distribuir, por lo que a "
-"menudo no necesitará capturar sus eventos. Están destinados a no tener X-"
-"Window para mejorar su desempeño."
-
-#: C/gtkmm-tutorial-in.xml:3797(title) C/gtkmm-tutorial-in.xml:3841(title)
-msgid "EventBox"
-msgstr "EventBox"
-
-#: C/gtkmm-tutorial-in.xml:3799(para)
-msgid ""
-"Some <application>gtkmm</application> widgets don't have associated X "
-"windows; they draw on their parents' windows. Because of this, they cannot "
-"receive events. Also, if they are incorrectly sized, they don't clip, so you "
-"can get messy overwriting etc. To receive events on one of these widgets, "
-"you can place it inside an <classname>EventBox</classname> widget and then "
-"call <methodname>Gtk::Widget::set_events()</methodname> on the EventBox "
-"before showing it."
-msgstr ""
-"Algunos widgets de <application>gtkmm</application> no tienen X-Windows "
-"asociadas; dibujan en las ventanas de sus padres. Es por esto que no pueden "
-"recibir eventos. Además, si tienen el tamaño incorrecto, no se recortan, por "
-"lo que puede aparecer sobrescritura errónea, etc. Para recibir eventos en "
-"uno de estos widgets, puede ponerlo dentro de un widget <classname>EventBox</"
-"classname> y después llamar a <methodname>Gtk::Widget::set_events()</"
-"methodname> en la «EventBox» antes de mostrarlo."
-
-#: C/gtkmm-tutorial-in.xml:3807(para)
-msgid ""
-"Although the name <classname>EventBox</classname> emphasises the event-"
-"handling method, the widget can also be used for clipping (and more; see the "
-"example below)."
-msgstr ""
-"A pesar de que el nombre <classname>EventBox</classname> hace énfasis en el "
-"método de manipulación de eventos, el widget también puede usarse para "
-"recortar (y para más cosas; consulte el ejemplo más abajo)."
-
-#. <para>TODO: Why don't they have X Windows - explain clipping.
-#. Also, how does this affect platform such as Windows and MacOS that don't use X.
-#. </para>
-#: C/gtkmm-tutorial-in.xml:3817(para)
-msgid "The constructor for <classname>Gtk::EventBox</classname> is:"
-msgstr "El constructor de <classname>Gtk::EventBox</classname> es:"
-
-#: C/gtkmm-tutorial-in.xml:3821(programlisting)
-#, no-wrap
-msgid "Gtk::EventBox();"
-msgstr "Gtk::EventBox();"
-
-#: C/gtkmm-tutorial-in.xml:3823(para)
-msgid ""
-"A child widget can be added to the <classname>EventBox</classname> using:"
-msgstr ""
-"Se puede agregar un widget hijo a <classname>EventBox</classname> utilizando:"
-
-#: C/gtkmm-tutorial-in.xml:3827(programlisting)
-#, no-wrap
-msgid "event_box.add(child_widget);"
-msgstr "event_box.add(child_widget);"
-
-#: C/gtkmm-tutorial-in.xml:3833(para)
-msgid ""
-"The following example demonstrates both uses of an <classname>EventBox</"
-"classname> - a label is created that is clipped to a small box, and set up "
-"so that a mouse-click on the label causes the program to exit. Resizing the "
-"window reveals varying amounts of the label."
-msgstr ""
-"El siguiente ejemplo demuestra ambos usos de una <classname>EventBox</"
-"classname>: se crea una etiqueta que se adjunta a un pequeño cuadro, "
-"configurada de manera que una pulsación del ratón en ella hace que el "
-"programa termine. Redimensionar la ventana revelará partes variables de la "
-"etiqueta."
-
-#: C/gtkmm-tutorial-in.xml:3855(title)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:3837
 msgid "Dialogs"
 msgstr "Diálogos"
 
-#: C/gtkmm-tutorial-in.xml:3857(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3839
 msgid ""
 "Dialogs are used as secondary windows, to provide specific information or to "
 "ask questions. <classname>Gtk::Dialog</classname> windows contain a few pre-"
@@ -7023,7 +9257,8 @@ msgstr ""
 "la consistencia, y un método <methodname>run()</methodname> que se bloquea "
 "hasta que el usuario cierra el diálogo."
 
-#: C/gtkmm-tutorial-in.xml:3864(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3846
 msgid ""
 "There are several derived <classname>Dialog</classname> classes which you "
 "might find useful. <classname>Gtk::MessageDialog</classname> is used for "
@@ -7036,7 +9271,8 @@ msgstr ""
 "derivar su propia clase de diálogo para proporcionar una funcionalidad más "
 "compleja."
 
-#: C/gtkmm-tutorial-in.xml:3871(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3853
 msgid ""
 "To pack widgets into a custom dialog, you should pack them into the "
 "<classname>Gtk::Box</classname>, available via "
@@ -7050,7 +9286,8 @@ msgstr ""
 "<classname>Button</classname> a la parte inferior del <classname>Dialog</"
 "classname>, puede usar el método <methodname>add_button()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:3879(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3861
 msgid ""
 "The <methodname>run()</methodname> method returns an <literal>int</literal>. "
 "This may be a value from the <literal>Gtk::ResponseType</literal> if the "
@@ -7064,11 +9301,23 @@ msgstr ""
 "respuesta personalizada que ha especificado cuando usó "
 "<methodname>add_button()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:3888(title) C/gtkmm-tutorial-in.xml:3903(title)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:3868
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Dialog.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Dialog.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3870 C/index-in.docbook:3885
 msgid "MessageDialog"
 msgstr "MessageDialog"
 
-#: C/gtkmm-tutorial-in.xml:3889(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3871
 msgid ""
 "<classname>MessageDialog</classname> is a convenience class, used to create "
 "simple, standard message dialogs, with a message, an icon, and buttons for "
@@ -7082,11 +9331,31 @@ msgstr ""
 "mensaje y el texto en el constructor, así como los botones estándar a través "
 "de la enum <literal>Gtk::ButtonsType</literal>."
 
-#: C/gtkmm-tutorial-in.xml:3914(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3879
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1MessageDialog.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1MessageDialog.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3891
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/messagedialog\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/messagedialog\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3896
 msgid "FileChooserDialog"
 msgstr "FileChooserDialog"
 
-#: C/gtkmm-tutorial-in.xml:3915(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3897
 msgid ""
 "The <classname>FileChooserDialog</classname> is suitable for use with \"Open"
 "\" or \"Save\" menu items."
@@ -7094,7 +9363,8 @@ msgstr ""
 "El <classname>FileChooserDialog</classname> es adecuado para usarse con "
 "elementos «abrir» o «guardar» en el menú."
 
-#: C/gtkmm-tutorial-in.xml:3919(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3901
 msgid ""
 "Most of the useful member methods for this class are actually in the "
 "<classname>Gtk::FileChooser</classname> base class."
@@ -7102,15 +9372,38 @@ msgstr ""
 "La mayoría de los métodos miembros útiles de esta clase están en realidad en "
 "la clase base <classname>Gtk::FileChooser</classname>."
 
-#: C/gtkmm-tutorial-in.xml:3930(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3906
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1FileChooserDialog.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1FileChooserDialog.html\">Referencia</ulink>"
+
+#. (itstool) path: figure/title
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3912 C/index-in.docbook:5440
 msgid "FileChooser"
 msgstr "Selector de archivos"
 
-#: C/gtkmm-tutorial-in.xml:3940(title) C/gtkmm-tutorial-in.xml:3953(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3918
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/filechooserdialog\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/filechooserdialog\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3922 C/index-in.docbook:3935
 msgid "ColorChooserDialog"
 msgstr "ColorChooserDialog"
 
-#: C/gtkmm-tutorial-in.xml:3941(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3923
 msgid ""
 "The <classname>ColorChooserDialog</classname> allows the user to choose a "
 "color. The <classname>ColorButton</classname> opens a color selection dialog "
@@ -7120,11 +9413,32 @@ msgstr ""
 "color. El <classname>ColorButton</classname> abre un diálogo de selección de "
 "color cuando se pulsa."
 
-#: C/gtkmm-tutorial-in.xml:3964(title) C/gtkmm-tutorial-in.xml:3977(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3929
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1ColorChooserDialog.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1ColorChooserDialog.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3941
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/colorchooserdialog\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/colorchooserdialog\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3946 C/index-in.docbook:3959
 msgid "FontChooserDialog"
 msgstr "FontChooserDialog"
 
-#: C/gtkmm-tutorial-in.xml:3965(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3947
 msgid ""
 "The <classname>FontChooserDialog</classname> allows the user to choose a "
 "font. The <classname>FontButton</classname> opens a font chooser dialog when "
@@ -7134,11 +9448,31 @@ msgstr ""
 "tipografía. El <classname>FontButton</classname> abre un diálogo de "
 "selección de tipografía cuando se pulsa."
 
-#: C/gtkmm-tutorial-in.xml:3988(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3953
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1FontChooserDialog.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1FontChooserDialog.html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3965
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/fontchooserdialog\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/fontchooserdialog\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:3970
 msgid "Non-modal AboutDialog"
 msgstr "AboutDialog no modal"
 
-#: C/gtkmm-tutorial-in.xml:3989(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3971
 msgid ""
 "The <classname>AboutDialog</classname> offers a simple way to display "
 "information about a program, like its logo, name, copyright, website and "
@@ -7148,7 +9482,8 @@ msgstr ""
 "mostrar información sobre el programa, como su logo, nombre, copyright, "
 "página web y licencia."
 
-#: C/gtkmm-tutorial-in.xml:3993(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3975
 msgid ""
 "Most dialogs in this chapter are modal, that is, they freeze the rest of the "
 "application while they are shown. It's also possible to create a non-modal "
@@ -7159,24 +9494,59 @@ msgid ""
 "application>'s search-and-replace dialog is non-modal."
 msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:4009(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:3985
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1AboutDialog.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1AboutDialog.html\">Referencia</ulink>"
+
+#. (itstool) path: figure/title
+#: C/index-in.docbook:3991
 msgid "AboutDialog"
 msgstr "AboutDialog"
 
-#: C/gtkmm-tutorial-in.xml:4023(title)
-msgid "The Drawing Area Widget"
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:3997
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/aboutdialog\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/dialogs/aboutdialog\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:4005
+#, fuzzy
+#| msgid "The Drawing Area Widget"
+msgid "The DrawingArea Widget"
 msgstr "El widget de área de dibujo"
 
-#: C/gtkmm-tutorial-in.xml:4024(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4006
+#, fuzzy
+#| msgid ""
+#| "The <classname>DrawingArea</classname> widget is a blank window that "
+#| "gives you the freedom to create any graphic you desire. Along with that "
+#| "freedom comes the responsibility to handle draw signals on the widget. "
+#| "When a widget is first shown, or when it is covered and then uncovered "
+#| "again it needs to redraw itself. Most widgets have code to do this, but "
+#| "the DrawingArea does not, allowing you to write your own draw signal "
+#| "handler to determine how the contents of the widget will be drawn. This "
+#| "is most often done by overriding the virtual <methodname>on_draw()</"
+#| "methodname> member function."
 msgid ""
 "The <classname>DrawingArea</classname> widget is a blank window that gives "
 "you the freedom to create any graphic you desire. Along with that freedom "
-"comes the responsibility to handle draw signals on the widget. When a widget "
-"is first shown, or when it is covered and then uncovered again it needs to "
-"redraw itself. Most widgets have code to do this, but the DrawingArea does "
-"not, allowing you to write your own draw signal handler to determine how the "
-"contents of the widget will be drawn. This is most often done by overriding "
-"the virtual <methodname>on_draw()</methodname> member function."
+"comes the responsibility to draw on the widget. When a widget is first "
+"shown, or when it is covered and then uncovered again it needs to redraw "
+"itself. Most widgets have code to do this, but the <classname>DrawingArea</"
+"classname> does not, allowing you to write your own draw function to "
+"determine how the contents of the widget will be drawn. This is done by "
+"setting a draw function with a call to the <methodname>set_draw_func()</"
+"methodname> member function."
 msgstr ""
 "El widget <classname>DrawingArea</classname> es una ventana vacía que le da "
 "la libertad de crear cualquier gráfico que desee. Junto con esa libertad "
@@ -7184,13 +9554,20 @@ msgstr ""
 "Cuando un widget se muestra por primera vez, o cuando se cubre y descubre, "
 "debe redibujarse a sí mismo. La mayoría de los widgets tiene código para "
 "hacer esto, pero el área de dibujo no, permitiéndole escribir su propio "
-"gestor de señales de dibujo para determinar cómo se dibujarán los "
-"contenidos del widget. La mayor parte de las veces, esto se hace "
-"sobrecargando la función miembro virtual <methodname>on_draw()</methodname>."
+"gestor de señales de dibujo para determinar cómo se dibujarán los contenidos "
+"del widget. La mayor parte de las veces, esto se hace sobrecargando la "
+"función miembro virtual <methodname>on_draw()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4036(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4018
+#, fuzzy
+#| msgid ""
+#| "GTK+ uses the <ulink url=\"http://cairographics.org\";>Cairo</ulink> "
+#| "drawing API. With <application>gtkmm</application>, you may use the "
+#| "<ulink url=\"http://www.cairographics.org/cairomm/\";>cairomm</ulink> C++ "
+#| "API for cairo."
 msgid ""
-"GTK+ uses the <ulink url=\"http://cairographics.org\";>Cairo</ulink> drawing "
+"GTK uses the <ulink url=\"http://cairographics.org\";>Cairo</ulink> drawing "
 "API. With <application>gtkmm</application>, you may use the <ulink url="
 "\"http://www.cairographics.org/cairomm/\";>cairomm</ulink> C++ API for cairo."
 msgstr ""
@@ -7198,7 +9575,8 @@ msgstr ""
 "ulink>. Con <application>gtkmm</application>, puede usar la API C++ <ulink "
 "url=\"http://www.cairographics.org/cairomm/\";>cairomm</ulink> para Cairo."
 
-#: C/gtkmm-tutorial-in.xml:4041(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4023
 msgid ""
 "You can draw very sophisticated shapes using Cairo, but the methods to do so "
 "are quite basic. Cairo provides methods for drawing straight lines, curved "
@@ -7216,11 +9594,13 @@ msgstr ""
 "realizar transformaciones complejas, componer imágenes, y generar texto con "
 "«antialiasing»."
 
-#: C/gtkmm-tutorial-in.xml:4051(title)
+#. (itstool) path: note/title
+#: C/index-in.docbook:4033
 msgid "Cairo and Pango"
 msgstr "Cairo y Pango"
 
-#: C/gtkmm-tutorial-in.xml:4052(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:4034
 msgid ""
 "Although Cairo can render text, it's not meant to be a replacement for "
 "Pango. Pango is a better choice if you need to perform more advanced text "
@@ -7232,7 +9612,8 @@ msgstr ""
 "por ejemplo, con ajuste de línea o elipses. Sólo debe dibujar texto con "
 "Cairo si éste es parte de un gráfico."
 
-#: C/gtkmm-tutorial-in.xml:4057(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4039
 msgid ""
 "In this section of the tutorial, we'll cover the basic Cairo drawing model, "
 "describe each of the basic drawing elements in some detail (with examples), "
@@ -7244,11 +9625,13 @@ msgstr ""
 "ejemplos), y luego se prsentará una aplicación simple que usa Cairo para "
 "dibujar un widget de reloj personalizado."
 
-#: C/gtkmm-tutorial-in.xml:4064(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4046
 msgid "The Cairo Drawing Model"
 msgstr "El modelo de dibujo de Cairo"
 
-#: C/gtkmm-tutorial-in.xml:4065(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4047
 msgid ""
 "The basic concept of drawing in Cairo involves defining 'invisible' paths "
 "and then stroking or filling them to make them visible."
@@ -7256,18 +9639,38 @@ msgstr ""
 "El concepto básico de dibujar con Cairo implica definir caminos «invisibles» "
 "y luego tacharlos o rellenarlos para hacerlos visibles."
 
-#: C/gtkmm-tutorial-in.xml:4069(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4051
+#, fuzzy
+#| msgid ""
+#| "To do any drawing in <application>gtkmm</application> with Cairo, you "
+#| "must first create a <classname>Cairo::Context</classname> object. This "
+#| "class holds all of the graphics state parameters that describe how "
+#| "drawing is to be done. This includes information such as line width, "
+#| "color, the surface to draw to, and many other things. This allows the "
+#| "actual drawing functions to take fewer arguments to simplify the "
+#| "interface. In <application>gtkmm</application>, a <classname>Cairo::"
+#| "Context</classname> is created by calling the <methodname>Gdk::Window::"
+#| "create_cairo_context()</methodname> function. Since Cairo contexts are "
+#| "reference-counted objects, this function returns a <classname>Cairo::"
+#| "RefPtr&lt;Cairo::Context&gt;</classname> object."
 msgid ""
 "To do any drawing in <application>gtkmm</application> with Cairo, you must "
-"first create a <classname>Cairo::Context</classname> object. This class "
-"holds all of the graphics state parameters that describe how drawing is to "
-"be done. This includes information such as line width, color, the surface to "
+"first get a <classname>Cairo::Context</classname> object. This class holds "
+"all of the graphics state parameters that describe how drawing is to be "
+"done. This includes information such as line width, color, the surface to "
 "draw to, and many other things. This allows the actual drawing functions to "
-"take fewer arguments to simplify the interface. In <application>gtkmm</"
-"application>, a <classname>Cairo::Context</classname> is created by calling "
-"the <methodname>Gdk::Window::create_cairo_context()</methodname> function. "
-"Since Cairo contexts are reference-counted objects, this function returns a "
-"<classname>Cairo::RefPtr&lt;Cairo::Context&gt;</classname> object."
+"take fewer arguments to simplify the interface. Usually, you use the "
+"<classname>Cairo::Context</classname> that you get as input data to the draw "
+"function that you set with the call to <methodname>set_draw_func()</"
+"methodname>. It's also possible to create a <classname>Cairo::Context</"
+"classname> by calling the <methodname>Gdk::Surface::create_cairo_context()</"
+"methodname> and <methodname>Gdk::CairoContext::cairo_create()</methodname> "
+"functions. Since Cairo contexts are reference-counted objects, "
+"<methodname>cairo_create()</methodname> returns a <classname>Cairo::"
+"RefPtr&lt;Cairo::Context&gt;</classname> object. (Note the difference "
+"between <classname>Gdk::CairoContext</classname> and <classname>Cairo::"
+"Context</classname>.)"
 msgstr ""
 "Para hacer cualquier dibujo en <application>Gtkmm</application> con Cairo, "
 "primero debe crear un objeto <classname>Cairo::Context</classname>. Esta "
@@ -7281,7 +9684,8 @@ msgstr ""
 "objetos contados por referencia, esta función devuelve un objeto "
 "<classname>Cairo::RefPtr&lt;Cairo::Context&gt;</classname>"
 
-#: C/gtkmm-tutorial-in.xml:4082(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4068
 msgid ""
 "The following example shows how to set up a Cairo context with a foreground "
 "color of red and a width of 2. Any drawing functions that use this context "
@@ -7291,25 +9695,46 @@ msgstr ""
 "frente rojo y un ancho de 2. Cualquier función de dibujo que use este "
 "contexto usará esta configuración"
 
-#: C/gtkmm-tutorial-in.xml:4087(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:4073
 #, no-wrap
+#| msgid ""
+#| "Gtk::DrawingArea myArea;\n"
+#| "Cairo::RefPtr&lt;Cairo::Context&gt; myContext = myArea.get_window()-&gt;create_cairo_context();\n"
+#| "myContext-&gt;set_source_rgb(1.0, 0.0, 0.0);\n"
+#| "myContext-&gt;set_line_width(2.0);"
 msgid ""
+"\n"
 "Gtk::DrawingArea myArea;\n"
-"Cairo::RefPtr&lt;Cairo::Context&gt; myContext = myArea.get_window()-&gt;create_cairo_context();\n"
+"auto gdkCairoContext = myArea.get_surface()-&gt;create_cairo_context();\n"
+"auto myContext = gdkCairoContext-&gt;cairo_create();\n"
 "myContext-&gt;set_source_rgb(1.0, 0.0, 0.0);\n"
-"myContext-&gt;set_line_width(2.0);"
+"myContext-&gt;set_line_width(2.0);\n"
+"    "
 msgstr ""
+"\n"
 "Gtk::DrawingArea myArea;\n"
-"Cairo::RefPtr&lt;Cairo::Context&gt; myContext = myArea.get_window()-&gt;create_cairo_context();\n"
+"auto gdkCairoContext = myArea.get_surface()-&gt;create_cairo_context();\n"
+"auto myContext = gdkCairoContext-&gt;cairo_create();\n"
 "myContext-&gt;set_source_rgb(1.0, 0.0, 0.0);\n"
-"myContext-&gt;set_line_width(2.0);"
+"myContext-&gt;set_line_width(2.0);\n"
+"    "
 
-#: C/gtkmm-tutorial-in.xml:4091(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4080
+#, fuzzy
+#| msgid ""
+#| "Each <classname>Cairo::Context</classname> is associated with a "
+#| "particular <classname>Gdk::Window</classname>, so the first line of the "
+#| "above example creates a <classname>Gtk::DrawingArea</classname> widget "
+#| "and the second line uses its associated <classname>Gdk::Window</"
+#| "classname> to create a <classname>Cairo::Context</classname> object. The "
+#| "final two lines change the graphics state of the context."
 msgid ""
 "Each <classname>Cairo::Context</classname> is associated with a particular "
-"<classname>Gdk::Window</classname>, so the first line of the above example "
-"creates a <classname>Gtk::DrawingArea</classname> widget and the second line "
-"uses its associated <classname>Gdk::Window</classname> to create a "
+"<classname>Gdk::Surface</classname>, so the first line of the above example "
+"creates a <classname>Gtk::DrawingArea</classname> widget and the next two "
+"lines use its associated <classname>Gdk::Surface</classname> to create a "
 "<classname>Cairo::Context</classname> object. The final two lines change the "
 "graphics state of the context."
 msgstr ""
@@ -7320,7 +9745,8 @@ msgstr ""
 "objeto <classname>Cairo::Context</classname>. Las dos últimas líneas cambian "
 "el estado gráfico del contexto."
 
-#: C/gtkmm-tutorial-in.xml:4100(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4088
 msgid ""
 "There are a number of graphics state variables that can be set for a Cairo "
 "context. The most common context attributes are color (using "
@@ -7351,7 +9777,8 @@ msgstr ""
 "documentación de la API de <ulink url=\"http://www.cairographics.org/cairomm/";
 "\">cairomm</ulink>."
 
-#: C/gtkmm-tutorial-in.xml:4132(para)
+#. (itstool) path: tip/para
+#: C/index-in.docbook:4120
 msgid ""
 "It is good practice to put all modifications to the graphics state between "
 "<methodname>save()</methodname>/<methodname>restore()</methodname> function "
@@ -7365,7 +9792,8 @@ msgstr ""
 "toma una referencia a <classname>Cairo::Context</classname> como argumento, "
 "puede implementarlo como sigue:"
 
-#: C/gtkmm-tutorial-in.xml:4138(programlisting)
+#. (itstool) path: tip/programlisting
+#: C/index-in.docbook:4126
 #, no-wrap
 msgid ""
 "void doSomething(const Cairo::RefPtr&lt;Cairo::Context&gt;&amp; context, int x)\n"
@@ -7384,7 +9812,24 @@ msgstr ""
 "    context-&gt;restore();\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:4115(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4103
+#, fuzzy
+#| msgid ""
+#| "The current state of a <classname>Cairo::Context</classname> can be saved "
+#| "to an internal stack of saved states and later be restored to the state "
+#| "it was in when you saved it. To do this, use the <methodname>save()</"
+#| "methodname> method and the <methodname>restore()</methodname> method. "
+#| "This can be useful if you need to temporarily change the line width and "
+#| "color (or any other graphics setting) in order to draw something and then "
+#| "return to the previous settings. In this situation, you could call "
+#| "<methodname>Cairo::Context::save()</methodname>, change the graphics "
+#| "settings, draw the lines, and then call <methodname>Cairo::Context::"
+#| "restore()</methodname> to restore the original graphics state. Multiple "
+#| "calls to <methodname>save()</methodname> and <methodname>restore()</"
+#| "methodname> can be nested; each call to <methodname>restore()</"
+#| "methodname> restores the state from the matching paired "
+#| "<methodname>save()</methodname>. <placeholder-1/>"
 msgid ""
 "The current state of a <classname>Cairo::Context</classname> can be saved to "
 "an internal stack of saved states and later be restored to the state it was "
@@ -7398,7 +9843,7 @@ msgid ""
 "original graphics state. Multiple calls to <methodname>save()</methodname> "
 "and <methodname>restore()</methodname> can be nested; each call to "
 "<methodname>restore()</methodname> restores the state from the matching "
-"paired <methodname>save()</methodname>. <placeholder-1/>"
+"paired <methodname>save()</methodname>. <_:tip-1/>"
 msgstr ""
 "El estado actual de un <classname>Cairo::Context</classname> puede guardarse "
 "en una pila interna de estados guardados y restaurarse más tarde como estaba "
@@ -7415,23 +9860,32 @@ msgstr ""
 "estado de su par <methodname>save()</methodname> correspondiente. "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:4147(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4135
+#, fuzzy
+#| msgid ""
+#| "The virtual <methodname>on_draw()</methodname> method provides a Cairo "
+#| "context that you shall use for drawing in the <classname>Gtk::"
+#| "DrawingArea</classname> widget. It is not necessary to save and restore "
+#| "this Cairo context in <methodname>on_draw()</methodname>."
 msgid ""
-"The virtual <methodname>on_draw()</methodname> method provides a Cairo "
-"context that you shall use for drawing in the <classname>Gtk::DrawingArea</"
-"classname> widget. It is not necessary to save and restore this Cairo "
-"context in <methodname>on_draw()</methodname>."
+"The draw function that you set with a call to <methodname>set_draw_func()</"
+"methodname> is called with a Cairo context that you shall use for drawing in "
+"the <classname>Gtk::DrawingArea</classname> widget. It is not necessary to "
+"save and restore this Cairo context in the draw function."
 msgstr ""
 "El método virtual <methodname>on_draw()</methodname> proporciona un contexto "
 "Cairo que deberá usar para dibujar en el widget <classname>Gtk::DrawingArea</"
 "classname>. No es necesario guardar y restaurar este contexto Cairo en "
 "<methodname>on_draw()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4155(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4143
 msgid "Drawing Straight Lines"
 msgstr "Dibujar Lineas Rectas"
 
-#: C/gtkmm-tutorial-in.xml:4164(para)
+#. (itstool) path: tip/para
+#: C/index-in.docbook:4152
 msgid ""
 "Since the Cairo graphics library was written with support for multiple "
 "output targets (the X window system, PNG images, OpenGL, etc), there is a "
@@ -7455,14 +9909,23 @@ msgstr ""
 "aplicación. Esto puede realizarse con la función <methodname>Cairo::Context::"
 "scale()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4156(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4144
+#, fuzzy
+#| msgid ""
+#| "Now that we understand the basics of the Cairo graphics library, we're "
+#| "almost ready to start drawing. We'll start with the simplest of drawing "
+#| "elements: the straight line. But first you need to know a little bit "
+#| "about Cairo's coordinate system. The origin of the Cairo coordinate "
+#| "system is located in the upper-left corner of the window with positive x "
+#| "values to the right and positive y values going down. <placeholder-1/>"
 msgid ""
 "Now that we understand the basics of the Cairo graphics library, we're "
 "almost ready to start drawing. We'll start with the simplest of drawing "
 "elements: the straight line. But first you need to know a little bit about "
 "Cairo's coordinate system. The origin of the Cairo coordinate system is "
 "located in the upper-left corner of the window with positive x values to the "
-"right and positive y values going down. <placeholder-1/>"
+"right and positive y values going down. <_:tip-1/>"
 msgstr ""
 "Ahora que entiende lo básico sobre la biblioteca de gráficos Cairo, está "
 "casi listo para empezar a dibujar. Empezará con el elemento de dibujo más "
@@ -7471,7 +9934,8 @@ msgstr ""
 "la esquina superior izquierda de la ventana, con valores positivos de x "
 "hacia la derecha y valores positivos de y hacia abajo. <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:4179(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4167
 msgid ""
 "In this example, we'll construct a small but fully functional "
 "<application>gtkmm</application> program and draw some lines into the "
@@ -7493,7 +9957,8 @@ msgstr ""
 "entre el punto en el que estaba y el punto al que se movió. Para dibujar una "
 "línea entre dos puntos, use la función <methodname>line_to()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4191(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4179
 msgid ""
 "After you've finished creating your path, you still haven't drawn anything "
 "visible yet. To make the path visible, you must use the function "
@@ -7509,7 +9974,8 @@ msgstr ""
 "Después de rellenar, el camino actual se despejará para que pueda comenzar "
 "el próximo."
 
-#: C/gtkmm-tutorial-in.xml:4200(para)
+#. (itstool) path: tip/para
+#: C/index-in.docbook:4188
 msgid ""
 "Many Cairo drawing functions have a <methodname>_preserve()</methodname> "
 "variant. Normally drawing functions such as <methodname>clip()</methodname>, "
@@ -7525,24 +9991,53 @@ msgstr ""
 "variante <methodname>_preserve()</methodname>, el camino actual se retendrá, "
 "por lo que podrá usar el mismo camino con la próxima función de dibujo."
 
-#: C/gtkmm-tutorial-in.xml:4210(title) C/gtkmm-tutorial-in.xml:4328(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:4198 C/index-in.docbook:4318
 msgid "Drawing Area - Lines"
 msgstr "Área de dibujo: líneas"
 
-#: C/gtkmm-tutorial-in.xml:4218(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4204
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/simple\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/simple\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4206
+#, fuzzy
+#| msgid ""
+#| "This program contains a single class, <classname>MyArea</classname>, "
+#| "which is a subclass of <classname>Gtk::DrawingArea</classname> and "
+#| "contains an <methodname>on_draw()</methodname> member function. This "
+#| "function is called whenever the image in the drawing area needs to be "
+#| "redrawn. It is passed a <classname>Cairo::RefPtr</classname> pointer to a "
+#| "<classname>Cairo::Context</classname> that we use for the drawing. The "
+#| "actual drawing code sets the color we want to use for drawing by using "
+#| "<methodname>set_source_rgb()</methodname> which takes arguments defining "
+#| "the Red, Green, and Blue components of the desired color (valid values "
+#| "are between 0 and 1). After setting the color, we created a new path "
+#| "using the functions <methodname>move_to()</methodname> and "
+#| "<methodname>line_to()</methodname>, and then stroked this path with "
+#| "<methodname>stroke()</methodname>."
 msgid ""
 "This program contains a single class, <classname>MyArea</classname>, which "
 "is a subclass of <classname>Gtk::DrawingArea</classname> and contains an "
-"<methodname>on_draw()</methodname> member function. This function is called "
-"whenever the image in the drawing area needs to be redrawn. It is passed a "
-"<classname>Cairo::RefPtr</classname> pointer to a <classname>Cairo::Context</"
-"classname> that we use for the drawing. The actual drawing code sets the "
-"color we want to use for drawing by using <methodname>set_source_rgb()</"
-"methodname> which takes arguments defining the Red, Green, and Blue "
-"components of the desired color (valid values are between 0 and 1). After "
-"setting the color, we created a new path using the functions "
-"<methodname>move_to()</methodname> and <methodname>line_to()</methodname>, "
-"and then stroked this path with <methodname>stroke()</methodname>."
+"<methodname>on_draw()</methodname> member function. This function becomes "
+"the draw function by a call to <methodname>set_draw_func()</methodname> in "
+"<classname>MyArea</classname>'s constructor. <methodname>on_draw()</"
+"methodname> is then called whenever the image in the drawing area needs to "
+"be redrawn. It is passed a <classname>Cairo::RefPtr</classname> pointer to a "
+"<classname>Cairo::Context</classname> that we use for the drawing. The "
+"actual drawing code sets the color we want to use for drawing by using "
+"<methodname>set_source_rgb()</methodname> which takes arguments defining the "
+"Red, Green, and Blue components of the desired color (valid values are "
+"between 0 and 1). After setting the color, we created a new path using the "
+"functions <methodname>move_to()</methodname> and <methodname>line_to()</"
+"methodname>, and then stroked this path with <methodname>stroke()</"
+"methodname>."
 msgstr ""
 "Este programa contiene una sola clase, <classname>MyArea</classname>, que es "
 "una subclase de <classname>Gtk::DrawingArea</classname> y contiene una "
@@ -7557,11 +10052,13 @@ msgstr ""
 "<methodname>move_to()</methodname> y <methodname>line_to()</methodname>, y "
 "luego lo rellenamos usando <methodname>stroke()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4235(title)
+#. (itstool) path: tip/title
+#: C/index-in.docbook:4225
 msgid "Drawing with relative coordinates"
 msgstr "Dibujar con coordenadas relativas"
 
-#: C/gtkmm-tutorial-in.xml:4236(para)
+#. (itstool) path: tip/para
+#: C/index-in.docbook:4226
 msgid ""
 "In the example above we drew everything using absolute coordinates. You can "
 "also draw using relative coordinates. For a straight line, this is done with "
@@ -7572,11 +10069,13 @@ msgstr ""
 "esto se hace con la función <methodname>Cairo::Context::rel_line_to()</"
 "methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4242(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:4232
 msgid "Line styles"
 msgstr "Estilos de línea"
 
-#: C/gtkmm-tutorial-in.xml:4243(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4233
 msgid ""
 "In addition to drawing basic straight lines, there are a number of things "
 "that you can customize about a line. You've already seen examples of setting "
@@ -7586,7 +10085,8 @@ msgstr ""
 "cosas de las líneas. Ya ha visto ejemplos de cómo establecer el color y "
 "anchura de una línea, pero también hay otras cosas."
 
-#: C/gtkmm-tutorial-in.xml:4249(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4239
 msgid ""
 "If you've drawn a series of lines that form a path, you may want them to "
 "join together in a certain way. Cairo offers three different ways to join "
@@ -7596,11 +10096,13 @@ msgstr ""
 "se junten de alguna manera. Cairo le ofrece tres maneras distintas de juntar "
 "líneas: «Miter», «Bevel», y «Round». Se muestran a continuación:"
 
-#: C/gtkmm-tutorial-in.xml:4256(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:4246
 msgid "Different join types in Cairo"
 msgstr "Distintos tipos de uniones en Cairo"
 
-#: C/gtkmm-tutorial-in.xml:4261(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4251
 msgid ""
 "The line join style is set using the function <methodname>Cairo::Context::"
 "set_line_join()</methodname>."
@@ -7608,7 +10110,8 @@ msgstr ""
 "El estilo de unión de línea se establece usando la función "
 "<methodname>Cairo::Context::set_line_join()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4265(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4255
 msgid ""
 "Line ends can have different styles as well. The default style is for the "
 "line to start and stop exactly at the destination points of the line. This "
@@ -7625,7 +10128,8 @@ msgstr ""
 "cuadrado en el último punto). Esta opción se establece usando la función "
 "<methodname>Cairo::Context::set_line_cap()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4275(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4265
 msgid ""
 "There are other things you can customize as well, including creating dashed "
 "lines and other things. For more information, see the Cairo API "
@@ -7635,11 +10139,13 @@ msgstr ""
 "líneas punteadas y otras cosas. Para obtener más información, consulte la "
 "documentación de la API de Cairo."
 
-#: C/gtkmm-tutorial-in.xml:4282(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:4272
 msgid "Drawing thin lines"
 msgstr "Dibujar líneas estrechas"
 
-#: C/gtkmm-tutorial-in.xml:4283(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4273
 msgid ""
 "If you try to draw one pixel wide lines, you may notice that the line "
 "sometimes comes up blurred and wider than it ought to be. This happens "
@@ -7659,7 +10165,8 @@ msgstr ""
 "unidad posible). Esto sucede cuando la anchura de la línea es un número "
 "impar de píxeles (no sólo uno)."
 
-#: C/gtkmm-tutorial-in.xml:4293(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4283
 msgid ""
 "The trick is to position in the middle of the pixel where you want the line "
 "to be drawn, and thus guaranteeing you get the desired results. See <ulink "
@@ -7670,15 +10177,27 @@ msgstr ""
 "Consulte las <ulink url=\"http://cairographics.org/FAQ/#sharp_lines";
 "\">preguntas más frecuentes de Cairo</ulink>."
 
-#: C/gtkmm-tutorial-in.xml:4300(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:4290
 msgid "Drawing Area - Thin Lines"
 msgstr "Área de dibujo: líneas estrechas"
 
-#: C/gtkmm-tutorial-in.xml:4311(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4296
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/thin_lines\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/thin_lines\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4301
 msgid "Drawing Curved Lines"
 msgstr "Dibujar líneas curvas"
 
-#: C/gtkmm-tutorial-in.xml:4312(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4302
 msgid ""
 "In addition to drawing straight lines Cairo allows you to easily draw curved "
 "lines (technically a cubic Bézier spline) using the <methodname>Cairo::"
@@ -7694,7 +10213,8 @@ msgstr ""
 "de un punto de destino y de dos puntos de «control». Esto se entiende mejor "
 "con un ejemplo, así que analícelo en profundidad."
 
-#: C/gtkmm-tutorial-in.xml:4323(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4313
 msgid ""
 "This simple application draws a curve with Cairo and displays the control "
 "points for each end of the curve."
@@ -7702,7 +10222,17 @@ msgstr ""
 "Esta aplicación simple dibuja una curva con Cairo y muestra los puntos de "
 "control para cada punta de la curva."
 
-#: C/gtkmm-tutorial-in.xml:4335(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4324
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/curve\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/curve\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4325
 msgid ""
 "The only difference between this example and the straight line example is in "
 "the <methodname>on_draw()</methodname> function, but there are a few new "
@@ -7712,7 +10242,8 @@ msgstr ""
 "función <methodname>on_draw()</methodname>, pero hay unos conceptos y "
 "funciones nuevas presentadas aquí, así que se examinarán brevemente."
 
-#: C/gtkmm-tutorial-in.xml:4341(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4331
 msgid ""
 "We make a call to <methodname>Cairo::Context::scale()</methodname>, passing "
 "in the width and height of the drawing area. This scales the user-space "
@@ -7727,7 +10258,8 @@ msgstr ""
 "para escalar el sistema de coordenadas en este caso, pero a veces, puede "
 "hacer las operaciones de dibujo más fáciles."
 
-#: C/gtkmm-tutorial-in.xml:4350(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4340
 #, fuzzy
 #| msgid ""
 #| "The call to <methodname>Cairo::Context::curve_to()</methodname> should be "
@@ -7769,11 +10301,13 @@ msgstr ""
 "argumento que especifica el valor de alfa del color (los valores válidos "
 "están entre 0 y 1)."
 
-#: C/gtkmm-tutorial-in.xml:4368(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4358
 msgid "Drawing Arcs and Circles"
 msgstr "Dibujar arcos y círculos"
 
-#: C/gtkmm-tutorial-in.xml:4369(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4359
 msgid ""
 "With Cairo, the same function is used to draw arcs, circles, or ellipses: "
 "<methodname>Cairo::Context::arc()</methodname>. This function takes five "
@@ -7802,7 +10336,27 @@ msgstr ""
 "incrementan en la dirección de las agujas del reloj (recuerde que el eje "
 "positivo de Y apunta hacia abajo)."
 
-#: C/gtkmm-tutorial-in.xml:4390(programlisting)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4374
+#, fuzzy
+#| msgid ""
+#| "To draw an ellipse, you can scale the current transformation matrix by "
+#| "different amounts in the X and Y directions. For example, to draw an "
+#| "ellipse with center at <varname>x</varname>, <varname>y</varname> and "
+#| "size <varname>width</varname>, <varname>height</varname>: <placeholder-1/>"
+msgid ""
+"To draw an ellipse, you can scale the current transformation matrix by "
+"different amounts in the X and Y directions. For example, to draw an ellipse "
+"with center at <varname>x</varname>, <varname>y</varname> and size "
+"<varname>width</varname>, <varname>height</varname>:"
+msgstr ""
+"Para dibujar una elipse, puede escalar la matriz de transformación actual en "
+"cantidades diferentes en las direcciones de X e Y. Por ejemplo, para dibujar "
+"una elipse con un centro en <varname>x</varname>, <varname>y</varname>, y de "
+"tamaño <varname>width</varname>, <varname>height</varname>: <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:4380
 #, no-wrap
 msgid ""
 "context-&gt;save();\n"
@@ -7817,19 +10371,8 @@ msgstr ""
 "context-&gt;arc(0.0, 0.0, 1.0, 0.0, 2 * M_PI);\n"
 "context-&gt;restore();"
 
-#: C/gtkmm-tutorial-in.xml:4384(para)
-msgid ""
-"To draw an ellipse, you can scale the current transformation matrix by "
-"different amounts in the X and Y directions. For example, to draw an ellipse "
-"with center at <varname>x</varname>, <varname>y</varname> and size "
-"<varname>width</varname>, <varname>height</varname>: <placeholder-1/>"
-msgstr ""
-"Para dibujar una elipse, puede escalar la matriz de transformación actual en "
-"cantidades diferentes en las direcciones de X e Y. Por ejemplo, para dibujar "
-"una elipse con un centro en <varname>x</varname>, <varname>y</varname>, y de "
-"tamaño <varname>width</varname>, <varname>height</varname>: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:4398(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4387
 msgid ""
 "Here's an example of a simple program that draws an arc, a circle and an "
 "ellipse into a drawing area."
@@ -7837,11 +10380,22 @@ msgstr ""
 "Aquí hay un programa simple de ejemplo que dibuja un arco, un círculo, y una "
 "elipse en un área de dibujo."
 
-#: C/gtkmm-tutorial-in.xml:4403(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:4392
 msgid "Drawing Area - Arcs"
 msgstr "Área de dibujo: arcos"
 
-#: C/gtkmm-tutorial-in.xml:4412(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4399
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/arcs\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/arcs\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4401
 msgid ""
 "There are a couple of things to note about this example code. Again, the "
 "only real difference between this example and the previous ones is the "
@@ -7856,7 +10410,8 @@ msgstr ""
 "es casi idéntica a la de los ejemplos previos, por lo que se omitirá ese "
 "fragmento."
 
-#: C/gtkmm-tutorial-in.xml:4420(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4409
 msgid ""
 "Note that in this case, we've expressed nearly everything in terms of the "
 "height and width of the window, including the width of the lines. Because of "
@@ -7873,7 +10428,8 @@ msgstr ""
 "<methodname>restore()</methodname> para volver a un estado conocido después "
 "de cada dibujo."
 
-#: C/gtkmm-tutorial-in.xml:4429(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4418
 msgid ""
 "The section for drawing an arc introduces one new function, "
 "<methodname>close_path()</methodname>. This function will in effect draw a "
@@ -7894,11 +10450,13 @@ msgstr ""
 "las líneas terminarán en el mismo lugar, pero Cairo no las juntará de manera "
 "especial."
 
-#: C/gtkmm-tutorial-in.xml:4442(title)
+#. (itstool) path: note/title
+#: C/index-in.docbook:4431
 msgid "Drawing counter-clockwise"
 msgstr "Dibujar en sentido anti-horario"
 
-#: C/gtkmm-tutorial-in.xml:4443(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:4432
 msgid ""
 "The function <methodname>Cairo::Context::arc_negative()</methodname> is "
 "exactly the same as <methodname>Cairo::Context::arc()</methodname> but the "
@@ -7908,15 +10466,18 @@ msgstr ""
 "exactamente la misma que <methodname>Cairo::Context::arc()</methodname>, "
 "pero los ángulos van en la dirección opuesta."
 
-#: C/gtkmm-tutorial-in.xml:4455(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4444
 msgid "Drawing Text"
 msgstr "Dibujar texto"
 
-#: C/gtkmm-tutorial-in.xml:4457(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:4446
 msgid "Drawing Text with Pango"
 msgstr "Dibujar texto con Pango"
 
-#: C/gtkmm-tutorial-in.xml:4458(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4447
 msgid ""
 "Text is drawn via Pango Layouts. The easiest way to create a "
 "<classname>Pango::Layout</classname> is to use <methodname>Gtk::Widget::"
@@ -7932,7 +10493,8 @@ msgstr ""
 "tipografía, etc. Finalmente, la disposición puede mostrarse usando el método "
 "<methodname>Pango::Layout::show_in_cairo_context()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4470(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4459
 msgid ""
 "Here is an example of a program that draws some text, some of it upside-"
 "down. The Printing chapter contains another <link linkend=\"sec-printing-"
@@ -7942,15 +10504,27 @@ msgstr ""
 "El capítulo de impresión contiene otro <link linkend=\"sec-printing-example"
 "\">ejemplo</link> de dibujo de texto."
 
-#: C/gtkmm-tutorial-in.xml:4476(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:4465
 msgid "Drawing Area - Text"
 msgstr "Área de dibujo: texto"
 
-#: C/gtkmm-tutorial-in.xml:4493(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4471
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/pango_text\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/pango_text\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4482
 msgid "Drawing Images"
 msgstr "Dibujar imágenes"
 
-#: C/gtkmm-tutorial-in.xml:4494(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4483
 msgid ""
 "There is a method for drawing from a <classname>Gdk::Pixbuf</classname> to a "
 "<classname>Cairo::Context</classname>. A <classname>Gdk::Pixbuf</classname> "
@@ -7962,18 +10536,27 @@ msgstr ""
 "classname> es un envoltorio útil alrededor de un grupo de píxeles, que puede "
 "leerse desde archivos y manipularse de varias maneras."
 
-#: C/gtkmm-tutorial-in.xml:4501(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4490
+#, fuzzy
+#| msgid ""
+#| "Probably the most common way of creating <classname>Gdk::Pixbuf</"
+#| "classname>s is to use <methodname>Gdk::Pixbuf::create_from_file()</"
+#| "methodname>, which can read an image file, such as a png file into a "
+#| "pixbuf ready for rendering."
 msgid ""
 "Probably the most common way of creating <classname>Gdk::Pixbuf</classname>s "
-"is to use <methodname>Gdk::Pixbuf::create_from_file()</methodname>, which "
-"can read an image file, such as a png file into a pixbuf ready for rendering."
+"is to use <methodname>Gdk::Pixbuf::create_from_file()</methodname> or "
+"<methodname>Gdk::Pixbuf::create_from_resource()</methodname>, which can read "
+"an image file, such as a png file into a pixbuf ready for rendering."
 msgstr ""
 "Probablemente la manera más común de crear un <classname>Gdk::Pixbuf</"
 "classname> es usar <methodname>Gdk::Pixbuf::create_from_file()</methodname>, "
 "que puede leer un archivo de imagen, como un archivo png, hacia un «pixbuf» "
 "listo para procesar."
 
-#: C/gtkmm-tutorial-in.xml:4508(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4498
 msgid ""
 "The <classname>Gdk::Pixbuf</classname> can be rendered by setting it as the "
 "source pattern of the Cairo context with <methodname>Gdk::Cairo::"
@@ -7995,52 +10578,87 @@ msgstr ""
 "de <classname>Cairo::Context</classname>. Toma un <classname>Cairo::Context</"
 "classname> como primer parámetro."
 
-#: C/gtkmm-tutorial-in.xml:4519(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4509
 msgid ""
 "Here is a small bit of code to tie it all together: (Note that usually you "
 "wouldn't load the image every time in the draw signal handler! It's just "
 "shown here to keep it all together.)"
 msgstr ""
 "Aquí hay un poco de código que junta todo: (tenga en cuenta que normalmente "
-"no cargaría la imagen cada vez en el gestor de señal de dibujo. Se "
-"muestra aquí sólo para mantener a todo junto)."
+"no cargaría la imagen cada vez en el gestor de señal de dibujo. Se muestra "
+"aquí sólo para mantener a todo junto)."
 
-#: C/gtkmm-tutorial-in.xml:4524(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:4514
 #, no-wrap
-msgid ""
-"bool MyArea::on_draw(const Cairo::RefPtr&lt;Cairo::Context&gt;&amp; cr)\n"
+#| msgid ""
+#| "bool MyArea::on_draw(const Cairo::RefPtr&lt;Cairo::Context&gt;&amp; cr)\n"
+#| "{\n"
+#| "  Glib::RefPtr&lt;Gdk::Pixbuf&gt; image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n"
+#| "  // Draw the image at 110, 90, except for the outermost 10 pixels.\n"
+#| "  Gdk::Cairo::set_source_pixbuf(cr, image, 100, 80);\n"
+#| "  cr-&gt;rectangle(110, 90, image-&gt;get_width()-20, image-&gt;get_height()-20);\n"
+#| "  cr-&gt;fill();\n"
+#| "  return true;\n"
+#| "}"
+msgid ""
+"void MyArea::on_draw(const Cairo::RefPtr&lt;Cairo::Context&gt;&amp; cr, int width, int height)\n"
 "{\n"
-"  Glib::RefPtr&lt;Gdk::Pixbuf&gt; image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n"
+"  auto image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n"
 "  // Draw the image at 110, 90, except for the outermost 10 pixels.\n"
 "  Gdk::Cairo::set_source_pixbuf(cr, image, 100, 80);\n"
 "  cr-&gt;rectangle(110, 90, image-&gt;get_width()-20, image-&gt;get_height()-20);\n"
 "  cr-&gt;fill();\n"
-"  return true;\n"
 "}"
 msgstr ""
-"bool MyArea::on_draw(const Cairo::RefPtr&lt;Cairo::Context&gt;&amp; cr)\n"
+"void MyArea::on_draw(const Cairo::RefPtr&lt;Cairo::Context&gt;&amp; cr, int width, int height)\n"
 "{\n"
-"  Glib::RefPtr&lt;Gdk::Pixbuf&gt; image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n"
+"  auto image = Gdk::Pixbuf::create_from_file(\"myimage.png\");\n"
 "  // Draw the image at 110, 90, except for the outermost 10 pixels.\n"
 "  Gdk::Cairo::set_source_pixbuf(cr, image, 100, 80);\n"
 "  cr-&gt;rectangle(110, 90, image-&gt;get_width()-20, image-&gt;get_height()-20);\n"
 "  cr-&gt;fill();\n"
-"  return true;\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:4535(para)
-msgid "Here is an example of a simple program that draws an image."
-msgstr "Aquí hay un ejemplo de un programa simple que dibuja una imagen."
+#. (itstool) path: para/screen
+#: C/index-in.docbook:4531
+#, no-wrap
+msgid "$ glib-compile-resources --target=resources.c --generate-source image.gresource.xml"
+msgstr "$ glib-compile-resources --target=resources.c --generate-source image.gresource.xml"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4524
+msgid ""
+"Here is an example of a simple program that draws an image. The program "
+"loads the image from a resource file. See the <link linkend=\"sec-gio-"
+"resource\">Gio::Resource and glib-compile-resources</link> section. Use "
+"<application>glib-compile-resources</application> to compile the resources "
+"into a C source file that can be compiled and linked with the C++ code. E.g. "
+"<_:screen-1/>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:4539(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:4534
 msgid "Drawing Area - Image"
 msgstr "Área de dibujo: imagen"
 
-#: C/gtkmm-tutorial-in.xml:4559(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4540
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/image\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/image\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4554
 msgid "Example Application: Creating a Clock with Cairo"
 msgstr "Aplicación de ejemplo: crear un reloj con Cairo"
 
-#: C/gtkmm-tutorial-in.xml:4560(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4555
 msgid ""
 "Now that we've covered the basics of drawing with Cairo, let's try to put it "
 "all together and create a simple application that actually does something. "
@@ -8054,29 +10672,50 @@ msgstr ""
 "reloj tiene una manecilla de segundos, una de minutos, y una de horas; y se "
 "actualiza cada segundo."
 
-#: C/gtkmm-tutorial-in.xml:4572(para)
-msgid ""
-"As before, almost all of the interesting stuff is done in the draw signal "
-"handler <methodname>on_draw()</methodname>. Before we dig into the draw "
-"signal handler, notice that the constructor for the <classname>Clock</"
-"classname> widget connects a handler function <methodname>on_timeout()</"
-"methodname> to a timer with a timeout period of 1000 milliseconds (1 "
-"second). This means that <methodname>on_timeout()</methodname> will get "
-"called once per second. The sole responsibility of this function is to "
-"invalidate the window so that <application>gtkmm</application> will be "
-"forced to redraw it."
-msgstr ""
-"Al igual que antes, casi todo lo interesante se hace en el gestor de "
-"señal de dibujo <methodname>on_draw()</methodname>. Antes de profundizar en "
-"el gestor de señal de dibujo, tenga en cuenta que el constructor del "
-"widget <classname>Clock</classname> conecta una función gestora "
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4566
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/clock\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drawingarea/clock\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4567
+#, fuzzy
+#| msgid ""
+#| "As before, almost all of the interesting stuff is done in the draw signal "
+#| "handler <methodname>on_draw()</methodname>. Before we dig into the draw "
+#| "signal handler, notice that the constructor for the <classname>Clock</"
+#| "classname> widget connects a handler function <methodname>on_timeout()</"
+#| "methodname> to a timer with a timeout period of 1000 milliseconds (1 "
+#| "second). This means that <methodname>on_timeout()</methodname> will get "
+#| "called once per second. The sole responsibility of this function is to "
+#| "invalidate the window so that <application>gtkmm</application> will be "
+#| "forced to redraw it."
+msgid ""
+"As before, almost all of the interesting stuff is done in the draw function "
+"<methodname>on_draw()</methodname>. Before we dig into the draw function, "
+"notice that the constructor for the <classname>Clock</classname> widget "
+"connects a handler function <methodname>on_timeout()</methodname> to a timer "
+"with a timeout period of 1000 milliseconds (1 second). This means that "
+"<methodname>on_timeout()</methodname> will get called once per second. The "
+"sole responsibility of this function is to invalidate the window so that "
+"<application>gtkmm</application> will be forced to redraw it."
+msgstr ""
+"Al igual que antes, casi todo lo interesante se hace en el gestor de señal "
+"de dibujo <methodname>on_draw()</methodname>. Antes de profundizar en el "
+"gestor de señal de dibujo, tenga en cuenta que el constructor del widget "
+"<classname>Clock</classname> conecta una función gestora "
 "<methodname>on_timeout()</methodname> a un temporizador con un período de "
 "espera de 1000 milisegundos (1 segundo). Esto significa que "
 "<methodname>on_timeout()</methodname> se llamará una vez por segundo. La "
 "única responsabilidad de esta función es invalidar la ventana para que "
 "<application>gtkmm</application> se vea forzado a redibujarla."
 
-#: C/gtkmm-tutorial-in.xml:4583(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4578
 msgid ""
 "Now let's take a look at the code that performs the actual drawing. The "
 "first section of <methodname>on_draw()</methodname> should be pretty "
@@ -8095,7 +10734,8 @@ msgstr ""
 "se escala de tal manera que la coordinada (0, 0) esté justo en el centro de "
 "la ventana."
 
-#: C/gtkmm-tutorial-in.xml:4593(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4588
 #, fuzzy
 #| msgid ""
 #| "The function <methodname>Cairo::Context::paint()</methodname> is used "
@@ -8128,7 +10768,8 @@ msgstr ""
 "preservar el camino actual, y después este mismo camino se recorta para "
 "asegurarse de que las próximas líneas no vayan por fuera del reloj."
 
-#: C/gtkmm-tutorial-in.xml:4605(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4600
 msgid ""
 "After drawing the outline, we go around the clock and draw ticks for every "
 "hour, with a larger tick at 12, 3, 6, and 9. Now we're finally ready to "
@@ -8142,7 +10783,8 @@ msgstr ""
 "la hora, lo que simplemente implica obtener los valores actuales de la hora, "
 "minutos, y segundos, y dibujar las manecillas en los ángulos correctos."
 
-#: C/gtkmm-tutorial-in.xml:4617(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4612
 msgid ""
 "<classname>Gtk::Widget</classname> has several methods and signals which are "
 "prefixed with \"drag_\". These are used for Drag and Drop."
@@ -8150,20 +10792,31 @@ msgstr ""
 "<classname>Gtk::Widget</classname> tiene varios métodos y señales cuyo "
 "prefijo es «drag_». Se usan para arrastrar y soltar."
 
-#: C/gtkmm-tutorial-in.xml:4622(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4617
 msgid "Sources and Destinations"
 msgstr "Orígenes y destinos"
 
-#: C/gtkmm-tutorial-in.xml:4623(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4618
+#, fuzzy
+#| msgid ""
+#| "Things are dragged from <literal>sources</literal> to be dropped on "
+#| "<literal>destinations</literal>. Each source and destination has "
+#| "infomation about the data formats that it can send or receive, provided "
+#| "by <classname>Gtk::TargetEntry</classname> items. A drop destination will "
+#| "only accept a dragged item if they both share a compatible "
+#| "<classname>Gtk::TargetEntry</classname> item. Appropriate signals will "
+#| "then be emitted, telling the signal handlers which <classname>Gtk::"
+#| "TargetEntry</classname> was used."
 msgid ""
 "Things are dragged from <literal>sources</literal> to be dropped on "
-"<literal>destinations</literal>. Each source and destination has infomation "
+"<literal>destinations</literal>. Each source and destination has information "
 "about the data formats that it can send or receive, provided by "
-"<classname>Gtk::TargetEntry</classname> items. A drop destination will only "
-"accept a dragged item if they both share a compatible <classname>Gtk::"
-"TargetEntry</classname> item. Appropriate signals will then be emitted, "
-"telling the signal handlers which <classname>Gtk::TargetEntry</classname> "
-"was used."
+"<classname>Gdk::ContentFormats</classname>. A drop destination will only "
+"accept a dragged item if they both share a compatible format. Appropriate "
+"signals will then be emitted, telling the signal handlers which format was "
+"used."
 msgstr ""
 "Las cosas se arrastran desde las <literal>fuentes</literal> para soltarse en "
 "los <literal>destinos</literal>. Cada origen y destino tiene información "
@@ -8174,35 +10827,15 @@ msgstr ""
 "se emitirán entonces, comunicándole a los gestores de señales qué "
 "<classname>Gtk::TargetEntry</classname> se usó."
 
-#: C/gtkmm-tutorial-in.xml:4636(para)
-msgid "target: A name, such as \"STRING\""
-msgstr "target: un nombre, como por ejemplo «STRING»"
-
-#: C/gtkmm-tutorial-in.xml:4637(para)
-msgid ""
-"info: An identifier which will be sent to your signals to tell you which "
-"TargetEntry was used."
-msgstr ""
-"info: un identificador, que se enviará a sus señales para comunicarle qué "
-"«TargetEntry» se usó."
-
-#: C/gtkmm-tutorial-in.xml:4638(para)
-msgid ""
-"flags: Used only for drag and drop, this specifies whether the data may be "
-"dragged to other widgets and applications, or only to the same ones."
-msgstr ""
-"flags: se usan sólo para arrastrar y soltar, y especifican si los datos "
-"pueden arrastrarse a otros widgets y aplicaciones, o sólo a los mismos."
-
-#: C/gtkmm-tutorial-in.xml:4633(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4626
 msgid ""
-"<classname>Gtk::TargetEntry</classname> objects contain this information: "
-"<placeholder-1/>"
+"<classname>Gdk::ContentFormats</classname> objects contain information about "
+"available <type>GType</type>s and mime types (media types)."
 msgstr ""
-"Los objetos <classname>Gtk::TargetEntry</classname> contienen esta "
-"información: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:4646(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4635
 msgid ""
 "<classname>Widget</classname>s can be identified as sources or destinations "
 "using these <classname>Gtk::Widget</classname> methods:"
@@ -8210,22 +10843,28 @@ msgstr ""
 "Los <classname>Widgets</classname> pueden identificarse como orígenes o "
 "destinos usando estos métodos de <classname>Gtk::Widget</classname>:"
 
-#: C/gtkmm-tutorial-in.xml:4650(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:4639
+#, fuzzy, no-wrap
+#| msgid ""
+#| "void drag_source_set(const std::vector&lt;Gtk::TargetEntry&gt;&amp; targets,\n"
+#| "      Gdk::ModifierType start_button_mask, Gdk::DragAction actions);"
 msgid ""
-"void drag_source_set(const std::vector&lt;Gtk::TargetEntry&gt;&amp; targets,\n"
+"void drag_source_set(const Glib::RefPtr&lt;Gdk::ContentFormats&gt;&amp; targets,\n"
 "      Gdk::ModifierType start_button_mask, Gdk::DragAction actions);"
 msgstr ""
 "void drag_source_set(const std::vector&lt;Gtk::TargetEntry&gt;&amp; targets,\n"
 "      Gdk::ModifierType start_button_mask, Gdk::DragAction actions);"
 
-#: C/gtkmm-tutorial-in.xml:4655(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4644
 msgid ""
-"<literal>targets</literal> is a vector of <classname>Gtk::TargetEntry</"
-"classname> elements."
+"<literal>targets</literal> is a <classname>Gdk::ContentFormats</classname> "
+"object."
 msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:4661(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4649
 msgid ""
 "<literal>start_button_mask</literal> is an ORed combination of values, which "
 "specify which modifier key or mouse button must be pressed to start the drag."
@@ -8234,9 +10873,18 @@ msgstr ""
 "complementarios, que especifica qué tecla modificadora o botón del ratón "
 "debe presionarse para empezar a arrastrar."
 
-#: C/gtkmm-tutorial-in.xml:4668(para)
-msgid ""
-"<literal>actions</literal> is an ORed combination of values, which specified "
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4656
+#, fuzzy
+#| msgid ""
+#| "<literal>actions</literal> is an ORed combination of values, which "
+#| "specified which Drag and Drop operations will be possible from this "
+#| "source - for instance, copy, move, or link. The user can choose between "
+#| "the actions by using modifier keys, such as <keycap>Shift</keycap> to "
+#| "change from <literal>copy</literal> to <literal>move</literal>, and this "
+#| "will be shown by a different cursor."
+msgid ""
+"<literal>actions</literal> is an ORed combination of values, which specify "
 "which Drag and Drop operations will be possible from this source - for "
 "instance, copy, move, or link. The user can choose between the actions by "
 "using modifier keys, such as <keycap>Shift</keycap> to change from "
@@ -8250,16 +10898,21 @@ msgstr ""
 "para cambiar de <literal>copiar</literal> a <literal>mover</literal>, y esto "
 "se mostrará con un cursor diferente."
 
-#: C/gtkmm-tutorial-in.xml:4679(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:4667
+#, fuzzy, no-wrap
+#| msgid ""
+#| "void drag_dest_set(const std::vector&lt;Gtk::TargetEntry&gt;&amp; targets,\n"
+#| "    Gtk::DestDefaults flags, Gdk::DragAction actions);"
 msgid ""
-"void drag_dest_set(const std::vector&lt;Gtk::TargetEntry&gt;&amp; targets,\n"
+"void drag_dest_set(const Glib::RefPtr&lt;Gdk::ContentFormats&gt;&amp; targets,\n"
 "    Gtk::DestDefaults flags, Gdk::DragAction actions);"
 msgstr ""
 "void drag_dest_set(const std::vector&lt;Gtk::TargetEntry&gt;&amp; targets,\n"
 "    Gtk::DestDefaults flags, Gdk::DragAction actions);"
 
-#: C/gtkmm-tutorial-in.xml:4684(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4672
 msgid ""
 "<literal>flags</literal> is an ORed combination of values which indicates "
 "how the widget will respond visually to Drag and Drop items."
@@ -8268,7 +10921,8 @@ msgstr ""
 "indica cómo responderá el widget visualmente a los objetos que se arrastran "
 "y sueltan."
 
-#: C/gtkmm-tutorial-in.xml:4690(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4678
 msgid ""
 "<literal>actions</literal> indicates the Drag and Drop actions which this "
 "destination can receive - see the description above."
@@ -8276,7 +10930,41 @@ msgstr ""
 "<literal>actions</literal> indica las acciones de arrastrar y soltar que "
 "este destino puede recibir: consulte la descripción arriba."
 
-#: C/gtkmm-tutorial-in.xml:4700(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4687
+#, fuzzy
+#| msgid "<methodname>on_map()</methodname>: (optional)"
+msgid "<methodname>drag_source_add_text_targets()</methodname>"
+msgstr "<methodname>on_map()</methodname>: (opcional)"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4688
+#, fuzzy
+#| msgid "<methodname>on_map()</methodname>: (optional)"
+msgid "<methodname>drag_source_add_image_targets()</methodname>"
+msgstr "<methodname>on_map()</methodname>: (opcional)"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4689
+msgid "<methodname>drag_dest_add_text_targets()</methodname>"
+msgstr "<methodname>drag_dest_add_text_targets()</methodname>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4690
+#, fuzzy
+#| msgid "<methodname>on_map()</methodname>: (optional)"
+msgid "<methodname>drag_dest_add_image_targets()</methodname>"
+msgstr "<methodname>on_map()</methodname>: (opcional)"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4684
+msgid ""
+"There are several methods to add source formats and destination formats. "
+"Examples: <_:itemizedlist-1/>"
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4697
 msgid ""
 "When a drop destination has accepted a dragged item, certain signals will be "
 "emitted, depending on what action has been selected. For instance, the user "
@@ -8294,64 +10982,98 @@ msgstr ""
 "especificado en sus llamadas a <methodname>drag_dest_set()</methodname> y "
 "<methodname>drag_source_set()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4711(title) C/gtkmm-tutorial-in.xml:4848(title)
+#. (itstool) path: sect2/title
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4708 C/index-in.docbook:4829
 msgid "Copy"
 msgstr "Copiar"
 
-#: C/gtkmm-tutorial-in.xml:4715(para)
-msgid "<literal>drag_begin</literal>: Provides DragContext."
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4712
+#, fuzzy
+#| msgid "<literal>drag_begin</literal>: Provides DragContext."
+msgid ""
+"<literal>drag_begin</literal>: Provides a <classname>Gdk::Drag</classname>."
 msgstr "<literal>drag_begin</literal>: proporciona DragContext."
 
-#: C/gtkmm-tutorial-in.xml:4716(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4713
+#, fuzzy
+#| msgid ""
+#| "<literal>drag_data_get</literal>: Provides <literal>info</literal> about "
+#| "the dragged data format, and a <literal>Gtk::SelectionData</literal> "
+#| "structure, in which you should put the requested data."
 msgid ""
-"<literal>drag_data_get</literal>: Provides <literal>info</literal> about the "
-"dragged data format, and a <literal>Gtk::SelectionData</literal> structure, "
-"in which you should put the requested data."
+"<literal>drag_data_get</literal>: Provides a <classname>Gdk::Drag</"
+"classname>, and a <classname>Gtk::SelectionData</classname> object, in which "
+"you should put the requested data."
 msgstr ""
 "<literal>drag_data_get</literal>: proporciona <literal>info</literal> acerca "
 "del formato de datos arrastrado, y una estructura <literal>Gtk::"
 "SelectionData</literal>, en la que debe poner los datos pedidos."
 
-#: C/gtkmm-tutorial-in.xml:4717(para)
-msgid "<literal>drag_end</literal>: Provides DragContext."
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4715
+#, fuzzy
+#| msgid "<literal>drag_end</literal>: Provides DragContext."
+msgid ""
+"<literal>drag_end</literal>: Provides a <classname>Gdk::Drag</classname>."
 msgstr "<literal>drag_end</literal>: proporciona DragContext."
 
-#: C/gtkmm-tutorial-in.xml:4712(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4709
+#, fuzzy
+#| msgid ""
+#| "The source widget will emit these signals, in this order: <placeholder-1/>"
 msgid ""
-"The source widget will emit these signals, in this order: <placeholder-1/>"
+"The source widget will emit these signals, in this order: <_:itemizedlist-1/>"
 msgstr ""
 "El widget origen emitirá estas señales, en este orden: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:4723(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4721
 #, fuzzy
 #| msgid ""
 #| "<literal>drag_motion</literal>: Provides DragContext and coordinates. You "
 #| "can call the drag_status() method of the DragContext to indicate which "
 #| "target will be accepted."
 msgid ""
-"<literal>drag_motion</literal>: Provides DragContext and coordinates. You "
-"can call the <methodname>drag_status()</methodname> method of the "
-"DragContext to indicate which action will be accepted."
+"<literal>drag_motion</literal>: Provides a <classname>Gdk::Drop</classname> "
+"and coordinates. You can call the <methodname>status()</methodname> method "
+"of the <classname>Gdk::Drop</classname> to indicate which action will be "
+"accepted."
 msgstr ""
 "<literal>drag_motion</literal>: proporciona DragContext y coordenadas. Puede "
 "llamar al método drag_status() del DragContext para indicar qué objetivo se "
 "aceptará."
 
-#: C/gtkmm-tutorial-in.xml:4726(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4724
 msgid ""
-"<literal>drag_drop</literal>: Provides DragContext and coordinates. You can "
-"call <methodname>drag_get_data()</methodname>, which triggers the "
-"<literal>drag_data_get</literal> signal in the source widget, and then the "
-"<literal>drag_data_received</literal> signal in the destination widget."
+"<literal>drag_drop</literal>: Provides a <classname>Gdk::Drop</classname> "
+"and coordinates. You can call <methodname>drag_get_data()</methodname>, "
+"which triggers the <literal>drag_data_get</literal> signal in the source "
+"widget, and then the <literal>drag_data_received</literal> signal in the "
+"destination widget."
 msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:4731(para)
-msgid ""
-"<literal>drag_data_received</literal>: Provides <literal>info</literal> "
-"about the dragged data format, and a <literal>Gtk::SelectionData</literal> "
-"structure which contains the dropped data. You should call the "
-"<methodname>drag_finish()</methodname> method of the <literal>DragContext</"
-"literal> to indicate whether the operation was successful."
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4729
+#, fuzzy
+#| msgid ""
+#| "<literal>drag_data_received</literal>: Provides <literal>info</literal> "
+#| "about the dragged data format, and a <literal>Gtk::SelectionData</"
+#| "literal> structure which contains the dropped data. You should call the "
+#| "<methodname>drag_finish()</methodname> method of the "
+#| "<literal>DragContext</literal> to indicate whether the operation was "
+#| "successful."
+msgid ""
+"<literal>drag_data_received</literal>: Provides a <classname>Gdk::Drop</"
+"classname>, and a <methodname>Gtk::SelectionData</methodname> object which "
+"contains the dropped data. You should call the <methodname>finish()</"
+"methodname> or <methodname>failed()</methodname> method of the "
+"<classname>Gdk::Drop</classname> to indicate whether the operation was "
+"successful."
 msgstr ""
 "<literal>drag_data_received</literal>: proporciona <literal>info</literal> "
 "acerca del formato de datos arrastrado, y una estructura <literal>Gtk::"
@@ -8359,21 +11081,24 @@ msgstr ""
 "método <methodname>drag_finish()</methodname> del <literal>DragContext</"
 "literal> para indicar si la operación tuvo éxito."
 
-#: C/gtkmm-tutorial-in.xml:4720(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4718
 #, fuzzy
 #| msgid ""
 #| "The source widget will emit these signals, in this order: <placeholder-1/>"
 msgid ""
-"The destination widget will emit these signals, in this order: "
-"<placeholder-1/>"
+"The destination widget will emit these signals, in this order: <_:"
+"itemizedlist-1/>"
 msgstr ""
 "El widget origen emitirá estas señales, en este orden: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:4746(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:4743
 msgid "Move"
 msgstr "Mover"
 
-#: C/gtkmm-tutorial-in.xml:4749(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4746
 msgid ""
 "<literal>drag_data_delete</literal>: Gives the source the opportunity to "
 "delete the original data if that's appropriate."
@@ -8381,38 +11106,21 @@ msgstr ""
 "<literal>drag_delete</literal>: le da al origen la oportunidad de eliminar "
 "los datos originales si es lo apropiado."
 
-#: C/gtkmm-tutorial-in.xml:4747(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4744
+#, fuzzy
+#| msgid ""
+#| "During a <literal>move</literal>, the source widget will also emit this "
+#| "signal: <placeholder-1/>"
 msgid ""
 "During a <literal>move</literal>, the source widget will also emit this "
-"signal: <placeholder-1/>"
+"signal: <_:itemizedlist-1/>"
 msgstr ""
 "Mientras se realice un <literal>movimiento</literal>, el widget origen "
 "también emitirá esta señal: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:4763(title)
-msgid "DragContext"
-msgstr "DragContext"
-
-#: C/gtkmm-tutorial-in.xml:4764(para)
-msgid ""
-"The drag and drop signals provide a DragContext, which contains some "
-"information about the drag and drop operation and can be used to influence "
-"the process. For instance, you can discover the source widget, or change the "
-"drag and drop icon, by using the <methodname>set_icon()</methodname> "
-"methods. More importantly, you should call the <methodname>drag_finish()</"
-"methodname> method from your <literal>drag_data_received</literal> signal "
-"handler to indicate whether the drop was successful."
-msgstr ""
-"Las señales de arrastrar y soltar proporcionan un DragContext, que contiene "
-"información acerca de la esta operación y puede usarse para influir en el "
-"proceso. Por ejemplo, puede descubrir el widget de origen, o cambiar el "
-"icono de arrastrar y soltar, usando el método <methodname>set_icon()</"
-"methodname>. Aún más importante, debe llamar al método "
-"<methodname>drag_finish()</methodname> desde su gestor de señal "
-"<literal>drag_data_received</literal> para indicar si la operación tuvo "
-"éxito."
-
-#: C/gtkmm-tutorial-in.xml:4777(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4761
 msgid ""
 "Here is a very simple example, demonstrating a drag and drop <literal>Copy</"
 "literal> operation:"
@@ -8420,15 +11128,25 @@ msgstr ""
 "Aquí hay un ejemplo muy simple, demostrando arrastrar y soltar en una "
 "operación de <literal>copia</literal>:"
 
-#: C/gtkmm-tutorial-in.xml:4788(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4770
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/drag_and_drop\">Source Code</ulink>"
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4772
 msgid "There is a more complex example in examples/others/dnd."
 msgstr "Hay un ejemplo más complejo en examples/others/dnd."
 
-#: C/gtkmm-tutorial-in.xml:4797(title)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:4781
 msgid "The Clipboard"
 msgstr "El portapapeles"
 
-#: C/gtkmm-tutorial-in.xml:4798(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4782
 msgid ""
 "Simple text copy-paste functionality is provided for free by widgets such as "
 "<classname>Gtk::Entry</classname> and <classname>Gtk::TextView</classname>, "
@@ -8442,26 +11160,39 @@ msgstr ""
 "datos. Por ejemplo, un programa de dibujo necesitaría código especial para "
 "permitir copiar y pegar dentro de una vista, o entre documentos."
 
-#: C/gtkmm-tutorial-in.xml:4804(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4788
+#, fuzzy
+#| msgid ""
+#| "Pack the widget into a container using the appropriate call, e.g. "
+#| "<methodname>Gtk::Container::add()</methodname> or "
+#| "<methodname>pack_start()</methodname>."
 msgid ""
-"You can usually pretend that <classname>Gtk::Clipboard</classname> is a "
-"singleton. You can get the default clipboard instance with <methodname>Gtk::"
-"Clipboard::get()</methodname>. This is probably the only clipboard you will "
-"ever need."
+"You can get a clipboard instance with <methodname>Gtk::Widget::"
+"get_clipboard()</methodname> or <methodname>Gdk::Display::get_clipboard()</"
+"methodname>."
 msgstr ""
-"<classname>Gtk::Clipboard</classname> es un «singleton». Puede obtener la "
-"instancia predeterminada del portapapeles con <methodname>Gtk::Clipboard::"
-"get()</methodname>. Esta es, probablemente, el único portapapeles que "
-"necesitará."
+"Empaquete al widget en un contenedor usando la llamada apropiada, por "
+"ejemplo, <methodname>Gtk::Container::add()</methodname> o "
+"<methodname>pack_start()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:4810(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4793
+#, fuzzy
+#| msgid ""
+#| "Your application doesn't need to wait for clipboard operations, "
+#| "particularly between the time when the user chooses Copy and then later "
+#| "chooses Paste. Most <classname>Gtk::Clipboard</classname> methods take "
+#| "<classname>sigc::slot</classname>s which specify callback methods. When "
+#| "<classname>Gtk::Clipboard</classname> is ready, it will call these "
+#| "methods, either providing the requested data, or asking for data."
 msgid ""
 "Your application doesn't need to wait for clipboard operations, particularly "
 "between the time when the user chooses Copy and then later chooses Paste. "
-"Most <classname>Gtk::Clipboard</classname> methods take <classname>sigc::"
-"slot</classname>s which specify callback methods. When <classname>Gtk::"
-"Clipboard</classname> is ready, it will call these methods, either providing "
-"the requested data, or asking for data."
+"Many <classname>Gdk::Clipboard</classname> methods take <classname>sigc::"
+"slot</classname>s which specify callback methods. When <classname>Gdk::"
+"Clipboard</classname> is ready, it will call these methods, providing the "
+"requested data."
 msgstr ""
 "Para que su aplicación no necesite esperar a operaciones de portapapeles, "
 "particularmente en el tiempo en el que el usuario elige «copiar» y luego "
@@ -8470,29 +11201,55 @@ msgstr ""
 "de llamada. Cuando <classname>Gtk::Clipboard</classname> esté listo, llamará "
 "a estos métodos, proporcionándoles los datos o bien pidiéndolos."
 
-#: C/gtkmm-tutorial-in.xml:4822(title)
-msgid "Targets"
-msgstr "Objetivos"
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4801
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGdk_1_1Clipboard.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGdk_1_1Clipboard.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4804
+msgid "Formats"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:4823(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4805
+#, fuzzy
+#| msgid ""
+#| "Different applications contain different types of data, and they might "
+#| "make that data available in a variety of formats. <application>gtkmm</"
+#| "application> calls these data types <literal>target</literal>s."
 msgid ""
 "Different applications contain different types of data, and they might make "
 "that data available in a variety of formats. <application>gtkmm</"
-"application> calls these data types <literal>target</literal>s."
+"application> calls these data types <literal>format</literal>s."
 msgstr ""
 "Diferentes aplicaciones contienen diferentes tipos de datos, y podrían hacer "
 "esos datos disponibles en una variedad de formatos. <application>gtkmm</"
 "application> llama a estos tipos de datos <literal>objetivos</literal>."
 
-#: C/gtkmm-tutorial-in.xml:4827(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4809
+#, fuzzy
+#| msgid ""
+#| "For instance, <application>gedit</application> can supply and receive the "
+#| "<literal>\"UTF8_STRING\"</literal> target, so you can paste data into "
+#| "<application>gedit</application> from any application that supplies that "
+#| "target. Or two different image editing applications might supply and "
+#| "receive a variety of image formats as targets. As long as one application "
+#| "can receive one of the targets that the other supplies then you will be "
+#| "able to copy data from one to the other."
 msgid ""
 "For instance, <application>gedit</application> can supply and receive the "
-"<literal>\"UTF8_STRING\"</literal> target, so you can paste data into "
+"<literal>text/plain</literal> mime type, so you can paste data into "
 "<application>gedit</application> from any application that supplies that "
-"target. Or two different image editing applications might supply and receive "
-"a variety of image formats as targets. As long as one application can "
-"receive one of the targets that the other supplies then you will be able to "
-"copy data from one to the other."
+"format. Or two different image editing applications might supply and receive "
+"a variety of image formats. As long as one application can receive one of "
+"the formats that the other supplies then you will be able to copy data from "
+"one to the other."
 msgstr ""
 "Por ejemplo, <application>gedit</application> puede proporcionar y recibir "
 "el objetivo <literal>\"UTF8_STRING\"</literal>, para que pueda pegar datos "
@@ -8503,14 +11260,21 @@ msgstr ""
 "los objetivos que la otra proporciona, entonces podrá copiar los datos de "
 "una a la otra."
 
-#: C/gtkmm-tutorial-in.xml:4834(para)
-msgid ""
-"A target can be in a variety of binary formats. This chapter, and the "
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4817
+#, fuzzy
+#| msgid ""
+#| "A target can be in a variety of binary formats. This chapter, and the "
+#| "examples, assume that the data is 8-bit text. This would allow us to use "
+#| "an XML format for the clipboard data. However this would probably not be "
+#| "appropriate for binary data such as images. <classname>Gtk::Clipboard</"
+#| "classname> provides overloads that allow you to specify the format in "
+#| "more detail if necessary."
+msgid ""
+"Clipboard data can be in a variety of binary formats. This chapter, and the "
 "examples, assume that the data is 8-bit text. This would allow us to use an "
 "XML format for the clipboard data. However this would probably not be "
-"appropriate for binary data such as images. <classname>Gtk::Clipboard</"
-"classname> provides overloads that allow you to specify the format in more "
-"detail if necessary."
+"appropriate for binary data such as images."
 msgstr ""
 "Un objetivo puede estar en una variedad de formatos binarios. Este capítulo, "
 "y los ejemplos, asumen que los datos están en texto de 8 bits. Esto permite "
@@ -8519,107 +11283,51 @@ msgstr ""
 "<classname>Gtk::Clipboard</classname> proporciona sobrecargas que le "
 "permiten especificar el formato en mayor detalle si es necesario."
 
-#: C/gtkmm-tutorial-in.xml:4843(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4824
+#, fuzzy
+#| msgid ""
+#| "The <link linkend=\"chapter-draganddrop\">Drag and Drop</link> API uses "
+#| "the same mechanism. You should probably use the same data targets and "
+#| "formats for both Clipboard and Drag and Drop operations."
 msgid ""
 "The <link linkend=\"chapter-draganddrop\">Drag and Drop</link> API uses the "
-"same mechanism. You should probably use the same data targets and formats "
-"for both Clipboard and Drag and Drop operations."
+"same mechanism. You should probably use the same data formats for both "
+"Clipboard and Drag and Drop operations."
 msgstr ""
 "La API <link linkend=\"chapter-draganddrop\">Arrastrar y soltar</link> usa "
 "el mismo mecanismo. Probablemente deba usar los mismos objetivos de datos y "
 "formatos para las operaciones de arrastrar y soltar así como para las de "
 "portapapeles."
 
-#: C/gtkmm-tutorial-in.xml:4849(para)
-msgid ""
-"When the user asks to copy some data, you should tell the "
-"<classname>Clipboard</classname> what targets are available, and provide the "
-"callback methods that it can use to get the data. At this point you should "
-"store a copy of the data, to be provided when the clipboard calls your "
-"callback method in response to a paste."
-msgstr ""
-"Cuando el usuario pide copiar datos, debe decirle al <classname>Clipboard</"
-"classname> qué objetivos están disponibles y proporcionar los métodos de "
-"retorno de llamada que puede usar para obtener los datos. En este punto, "
-"debe almacenar una copia de los datos, para proporcionarla cuando el "
-"portapapeles llame a su método de retorno de llamada en respuesta a la "
-"acción de pegar."
-
-#: C/gtkmm-tutorial-in.xml:4858(programlisting)
-#, no-wrap
-msgid ""
-"Glib::RefPtr&lt;Gtk::Clipboard&gt; refClipboard = Gtk::Clipboard::get();\n"
-"\n"
-"//Targets:\n"
-"std::vector&lt;Gtk::TargetEntry&gt; targets;\n"
-"targets.push_back( Gtk::TargetEntry(\"example_custom_target\") );\n"
-"targets.push_back( Gtk::TargetEntry(\"UTF8_STRING\") );\n"
-"\n"
-"refClipboard-&gt;set( targets,\n"
-"    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_get),\n"
-"    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_clear) );"
-msgstr ""
-"Glib::RefPtr&lt;Gtk::Clipboard&gt; refClipboard = Gtk::Clipboard::get();\n"
-"\n"
-"//Targets:\n"
-"std::vector&lt;Gtk::TargetEntry&gt; targets;\n"
-"targets.push_back( Gtk::TargetEntry(\"example_custom_target\") );\n"
-"targets.push_back( Gtk::TargetEntry(\"UTF8_STRING\") );\n"
-"\n"
-"refClipboard-&gt;set( targets,\n"
-"    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_get),\n"
-"    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_clear) );"
-
-#: C/gtkmm-tutorial-in.xml:4869(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4830
 msgid ""
-"Your callback will then provide the stored data when the user chooses to "
-"paste the data. For instance:"
+"When the user asks to copy some data, you should copy the data to the "
+"<classname>Clipboard</classname>. For instance,"
 msgstr ""
-"Su retorno de llamada proporcionará entonces los datos almacenados cuando el "
-"usuario elija pegarlos. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:4871(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:4834
 #, no-wrap
 msgid ""
-"void ExampleWindow::on_clipboard_get(\n"
-"    Gtk::SelectionData&amp; selection_data, guint /* info */)\n"
+"void ExampleWindow::on_button_copy()\n"
 "{\n"
-"  const std::string target = selection_data.get_target();\n"
-"\n"
-"  if(target == \"example_custom_target\")\n"
-"    selection_data.set(\"example_custom_target\", m_ClipboardStore);\n"
+"  get_clipboard()-&gt;set_text(\"example_custom_target\");\n"
 "}"
 msgstr ""
-"void ExampleWindow::on_clipboard_get(\n"
-"    Gtk::SelectionData&amp; selection_data, guint /* info */)\n"
+"void ExampleWindow::on_button_copy()\n"
 "{\n"
-"  const std::string target = selection_data.get_target();\n"
-"\n"
-"  if(target == \"example_custom_target\")\n"
-"    selection_data.set(\"example_custom_target\", m_ClipboardStore);\n"
+"  get_clipboard()-&gt;set_text(\"example_custom_target\");\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:4879(para)
-msgid ""
-"The <literal>ideal</literal> example below can supply more than one "
-"clipboard target."
-msgstr ""
-"El ejemplo <literal>ideal</literal> a continuación puede proporcionar más de "
-"un objetivo para el portapapeles."
-
-#: C/gtkmm-tutorial-in.xml:4883(para)
-msgid ""
-"The clear callback allows you to free the memory used by your stored data "
-"when the clipboard replaces its data with something else."
-msgstr ""
-"El retorno de llamada «clear» le permite liberar la memoria que sus datos "
-"almacenados usan cuando el portapapeles reemplaza sus datos con otra cosa."
-
-#: C/gtkmm-tutorial-in.xml:4889(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4842
 msgid "Paste"
 msgstr "Pegar"
 
-#: C/gtkmm-tutorial-in.xml:4890(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4843
 msgid ""
 "When the user asks to paste data from the <classname>Clipboard</classname>, "
 "you should request a specific format and provide a callback method which "
@@ -8629,105 +11337,96 @@ msgstr ""
 "classname>, debe pedir un formato específico y proporcionar un método de "
 "retorno de llamada que se llamará con los datos en sí. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:4895(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:4848
 #, no-wrap
+#| msgid ""
+#| "refClipboard-&gt;request_targets( sigc::mem_fun(*this,\n"
+#| "    &amp;ExampleWindow::on_clipboard_received_targets) );"
 msgid ""
-"refClipboard-&gt;request_contents(\"example_custom_target\",\n"
-"    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_received) );"
+"void ExampleWindow::on_button_paste()\n"
+"{\n"
+"  get_clipboard()-&gt;read_text_async(sigc::mem_fun(*this,\n"
+"              &amp;ExampleWindow::on_clipboard_received));\n"
+"}"
 msgstr ""
-"refClipboard-&gt;request_contents(\"example_custom_target\",\n"
-"    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_received) );"
+"void ExampleWindow::on_button_paste()\n"
+"{\n"
+"  get_clipboard()-&gt;read_text_async(sigc::mem_fun(*this,\n"
+"              &amp;ExampleWindow::on_clipboard_received));\n"
+"}"
 
-#: C/gtkmm-tutorial-in.xml:4898(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4854
 msgid "Here is an example callback method:"
 msgstr "Aquí hay un ejemplo de un método de retorno de llamada:"
 
-#: C/gtkmm-tutorial-in.xml:4900(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:4856
 #, no-wrap
-msgid ""
-"void ExampleWindow::on_clipboard_received(\n"
-"    const Gtk::SelectionData&amp; selection_data)\n"
+#| msgid ""
+#| "void ExampleWindow::on_clipboard_received(\n"
+#| "    const Gtk::SelectionData&amp; selection_data)\n"
+#| "{\n"
+#| "  Glib::ustring clipboard_data = selection_data.get_data_as_string();\n"
+#| "  //Do something with the pasted data.\n"
+#| "}"
+msgid ""
+"void ExampleWindow::on_clipboard_received(Glib::RefPtr&lt;Gio::AsyncResult&gt;&amp; result)\n"
 "{\n"
-"  Glib::ustring clipboard_data = selection_data.get_data_as_string();\n"
+"  auto text = get_clipboard()-&gt;read_text_finish(result);\n"
 "  //Do something with the pasted data.\n"
 "}"
 msgstr ""
-"void ExampleWindow::on_clipboard_received(\n"
-"    const Gtk::SelectionData&amp; selection_data)\n"
+"void ExampleWindow::on_clipboard_received(Glib::RefPtr&lt;Gio::AsyncResult&gt;&amp; result)\n"
 "{\n"
-"  Glib::ustring clipboard_data = selection_data.get_data_as_string();\n"
+"  auto text = get_clipboard()-&gt;read_text_finish(result);\n"
 "  //Do something with the pasted data.\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:4908(title)
-msgid "Discovering the available targets"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:4863
+#, fuzzy
+#| msgid "Discovering the available targets"
+msgid "Discovering the available formats"
 msgstr "Descubrir los objetivos disponibles"
 
-#: C/gtkmm-tutorial-in.xml:4909(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4864
+#, fuzzy
+#| msgid ""
+#| "To find out what targets are currently available on the "
+#| "<classname>Clipboard</classname> for pasting, call the "
+#| "<methodname>request_targets()</methodname> method, specifying a method to "
+#| "be called with the information. For instance:"
 msgid ""
-"To find out what targets are currently available on the "
+"To find out what formats are currently available on the "
 "<classname>Clipboard</classname> for pasting, call the "
-"<methodname>request_targets()</methodname> method, specifying a method to be "
-"called with the information. For instance:"
+"<methodname>get_formats()</methodname> method. Then call a <classname>Gdk::"
+"ContentFormats</classname> method to find out if a format that your "
+"application supports is available."
 msgstr ""
 "Para descubrir qué objetivos están actualmente disponibles en el "
 "<classname>Clipboard</classname> para pegar, llame al método "
 "<methodname>request_targets()</methodname>, especificando un método al que "
 "llamar con la información. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:4915(programlisting)
-#, no-wrap
-msgid ""
-"refClipboard-&gt;request_targets( sigc::mem_fun(*this,\n"
-"    &amp;ExampleWindow::on_clipboard_received_targets) );"
-msgstr ""
-"refClipboard-&gt;request_targets( sigc::mem_fun(*this,\n"
-"    &amp;ExampleWindow::on_clipboard_received_targets) );"
-
-#: C/gtkmm-tutorial-in.xml:4918(para)
-msgid ""
-"In your callback, compare the vector of available targets with those that "
-"your application supports for pasting. You could enable or disable a Paste "
-"menu item, depending on whether pasting is currently possible. For instance:"
-msgstr ""
-"En su retorno de llamada, compare la lista de objetivos disponibles con "
-"aquellos que su aplicación soporta pegar. Puede activar o no el elemento en "
-"el menú «pegar», dependiendo de si pegar es posible o no actualmente. Por "
-"ejemplo:"
-
-#: C/gtkmm-tutorial-in.xml:4921(programlisting)
-#, no-wrap
-msgid ""
-"void ExampleWindow::on_clipboard_received_targets(\n"
-"  const std::vector&lt;Glib::ustring&gt;&amp; targets)\n"
-"{\n"
-"  const bool bPasteIsPossible =\n"
-"    std::find(targets.begin(), targets.end(),\n"
-"      example_target_custom) != targets.end();\n"
-"\n"
-"  // Enable/Disable the Paste button appropriately:\n"
-"  m_Button_Paste.set_sensitive(bPasteIsPossible);\n"
-"}"
-msgstr ""
-"void ExampleWindow::on_clipboard_received_targets(\n"
-"  const std::vector&lt;Glib::ustring&gt;&amp; targets)\n"
-"{\n"
-"  const bool bPasteIsPossible =\n"
-"    std::find(targets.begin(), targets.end(),\n"
-"      example_target_custom) != targets.end();\n"
-"\n"
-"  // Enable/Disable the Paste button appropriately:\n"
-"  m_Button_Paste.set_sensitive(bPasteIsPossible);\n"
-"}"
-
-#: C/gtkmm-tutorial-in.xml:4937(title) C/gtkmm-tutorial-in.xml:5330(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:4876 C/index-in.docbook:5263
 msgid "Simple"
 msgstr "Simple"
 
-#: C/gtkmm-tutorial-in.xml:4938(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4877
+#, fuzzy
+#| msgid ""
+#| "This example allows copy and pasting of application-specific data, using "
+#| "the standard text target. Although this is simple, it's not ideal because "
+#| "it does not identify the <classname>Clipboard</classname> data as being "
+#| "of a particular type."
 msgid ""
 "This example allows copy and pasting of application-specific data, using the "
-"standard text target. Although this is simple, it's not ideal because it "
+"standard text format. Although this is simple, it's not ideal because it "
 "does not identify the <classname>Clipboard</classname> data as being of a "
 "particular type."
 msgstr ""
@@ -8736,53 +11435,80 @@ msgstr ""
 "lo ideal porque no identifica los datos del <classname>Clipboard</classname> "
 "como un tipo particular."
 
-#: C/gtkmm-tutorial-in.xml:4946(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:4885
 msgid "Clipboard - Simple"
 msgstr "Portapapeles: simple"
 
-#: C/gtkmm-tutorial-in.xml:4956(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4891
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/clipboard/simple/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/clipboard/simple/\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:4895
 msgid "Ideal"
 msgstr "Ideal"
 
-#: C/gtkmm-tutorial-in.xml:4959(simpara)
-msgid ""
-"Defines a custom clipboard target, though the format of that target is still "
-"text."
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:4898
+#, fuzzy
+#| msgid ""
+#| "Defines a custom clipboard target, though the format of that target is "
+#| "still text."
+msgid "Defines a custom clipboard target, though the format is still text."
 msgstr ""
 "Define un objetivo personalizado de portapapeles, a pesar de que el formato "
 "del objetivo es sólo texto."
 
-#: C/gtkmm-tutorial-in.xml:4960(simpara)
-msgid ""
-"It supports pasting of 2 targets - both the custom one and a text one that "
-"creates an arbitrary text representation of the custom data."
-msgstr ""
-"Soporta pegar dos objetivos: tanto el personalizado como el de texto que "
-"crea una representación de texto arbitraria de los datos personalizados."
-
-#: C/gtkmm-tutorial-in.xml:4961(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:4899
+#, fuzzy
+#| msgid ""
+#| "It uses <methodname>request_targets()</methodname> and the "
+#| "<literal>owner_change</literal> signal and disables the Paste button if "
+#| "it can't use anything on the clipboard."
 msgid ""
-"It uses <methodname>request_targets()</methodname> and the "
-"<literal>owner_change</literal> signal and disables the Paste button if it "
-"can't use anything on the clipboard."
+"It uses the <methodname>Gdk::ContentFormats::signal_changed()</methodname> "
+"signal and disables the Paste button if it can't use anything on the "
+"clipboard."
 msgstr ""
 "Usa <methodname>request_targets()</methodname> y la señal "
 "<literal>owner_change</literal>, y desactiva el botón «pegar» si no puede "
 "usar nada en el portapapeles."
 
-#: C/gtkmm-tutorial-in.xml:4957(para)
-msgid "This is like the simple example, but it <placeholder-1/>"
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4896
+#, fuzzy
+#| msgid "This is like the simple example, but it <placeholder-1/>"
+msgid "This is like the simple example, but it <_:orderedlist-1/>"
 msgstr "Es como el ejemplo simple, pero <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:4966(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:4905
 msgid "Clipboard - Ideal"
 msgstr "Portapapeles: ideal"
 
-#: C/gtkmm-tutorial-in.xml:4982(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4911
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/clipboard/ideal/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/clipboard/ideal/\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:4921
 msgid "Printing"
 msgstr "Impresión"
 
-#: C/gtkmm-tutorial-in.xml:4984(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:4923
 #, fuzzy
 #| msgid ""
 #| "At the application development level, <application>gtkmm</application>'s "
@@ -8804,11 +11530,13 @@ msgstr ""
 "API común, se usan «backends» específicos de cada plataforma y controladores "
 "específicos de cada impresora."
 
-#: C/gtkmm-tutorial-in.xml:4990(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:4929
 msgid "PrintOperation"
 msgstr "PrintOperation"
 
-#: C/gtkmm-tutorial-in.xml:4992(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:4931
 msgid ""
 "The primary object is <classname>Gtk::PrintOperation</classname>, allocated "
 "for each print operation. To handle page drawing connect to its signals, or "
@@ -8822,7 +11550,8 @@ msgstr ""
 "virtuales predeterminados. <classname>PrintOperation</classname> maneja "
 "automáticamente todas las opciones que afectan al bucle de impresión."
 
-#: C/gtkmm-tutorial-in.xml:5009(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4948
 msgid ""
 "<literal>begin_print</literal>: You must handle this signal, because this is "
 "where you create and set up a <classname>Pango::Layout</classname> using the "
@@ -8834,7 +11563,8 @@ msgstr ""
 "<classname>Gtk::PrintContext</classname> proporcionado y divide la salida de "
 "impresión en páginas."
 
-#: C/gtkmm-tutorial-in.xml:5019(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4958
 msgid ""
 "<literal>paginate</literal>: Pagination is potentially slow so if you need "
 "to monitor it you can call the <methodname>PrintOperation::"
@@ -8845,7 +11575,8 @@ msgstr ""
 "<methodname>PrintOperation::set_show_progress()</methodname> y manejar esta "
 "señal."
 
-#: C/gtkmm-tutorial-in.xml:5033(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4972
 msgid ""
 "<literal>request_page_setup</literal>: Provides a <classname>PrintContext</"
 "classname>, page number and <classname>Gtk::PageSetup</classname>. Handle "
@@ -8856,7 +11587,8 @@ msgstr ""
 "PageSetup</classname>. Maneje esta señal si necesita modificar la "
 "configuración de cada página."
 
-#: C/gtkmm-tutorial-in.xml:5042(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4981
 msgid ""
 "<literal>draw_page</literal>: You must handle this signal, which provides a "
 "<classname>PrintContext</classname> and a page number. The "
@@ -8872,15 +11604,21 @@ msgstr ""
 "dibujarse. Para procesar texto, itere sobre el <classname>Pango::Layout</"
 "classname> que creó en el gestor <literal>begin_print</literal>."
 
-#: C/gtkmm-tutorial-in.xml:5028(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4967
+#, fuzzy
+#| msgid ""
+#| "For each page that needs to be rendered, the following signals are "
+#| "emitted: <placeholder-1/>"
 msgid ""
 "For each page that needs to be rendered, the following signals are emitted: "
-"<placeholder-1/>"
+"<_:itemizedlist-1/>"
 msgstr ""
 "Para cada página que necesita procesarse, se emiten las siguientes señales: "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:5057(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:4996
 msgid ""
 "<literal>end_print</literal>: A handler for it is a safe place to free any "
 "resources related to a <classname>PrintOperation</classname>. If you have "
@@ -8892,7 +11630,8 @@ msgstr ""
 "Si tiene una clase personalizada que herede de <classname>PrintOperation</"
 "classname>, es naturalmente más simple hacerlo en el destructor."
 
-#: C/gtkmm-tutorial-in.xml:5067(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5006
 msgid ""
 "<literal>done</literal>: This signal is emitted when printing is finished, "
 "meaning when the print data is spooled. Note that the provided <literal>Gtk::"
@@ -8905,7 +11644,8 @@ msgstr ""
 "un error. En cualquier caso, probablemente quiera notificar al usuario el "
 "estado final."
 
-#: C/gtkmm-tutorial-in.xml:5077(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5016
 msgid ""
 "<literal>status_changed</literal>: Emitted whenever a print job's status "
 "changes, until it is finished. Call the <methodname>PrintOperation::"
@@ -8920,19 +11660,35 @@ msgstr ""
 "Para ver el estado, use <methodname>get_status()</methodname> o "
 "<methodname>get_status_string()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:5003(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:4942
+#, fuzzy
+#| msgid ""
+#| "The <methodname>PrintOperation::run()</methodname> method starts the "
+#| "print loop, during which various signals are emitted: <placeholder-1/>"
 msgid ""
 "The <methodname>PrintOperation::run()</methodname> method starts the print "
-"loop, during which various signals are emitted: <placeholder-1/>"
+"loop, during which various signals are emitted: <_:itemizedlist-1/>"
 msgstr ""
 "El método <methodname>PrintOperation::run()</methodname> comienza el ciclo "
 "de impresión, durante el que se emiten varias señales: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:5099(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5029
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1PrintOperation.html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1PrintOperation.html\">Referencia</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5038
 msgid "Page setup"
 msgstr "Configuración de página"
 
-#: C/gtkmm-tutorial-in.xml:5101(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5040
 msgid ""
 "The <classname>PrintOperation</classname> class has a method called "
 "<methodname>set_default_page_setup()</methodname> which selects the default "
@@ -8953,7 +11709,8 @@ msgstr ""
 "<classname>Gtk::PaperSize</classname>, <literal>Gtk::PageOrientation</"
 "literal> y los márgenes específicos de la impresora."
 
-#: C/gtkmm-tutorial-in.xml:5111(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5050
 msgid ""
 "You should save the chosen <classname>Gtk::PageSetup</classname> so you can "
 "use it again if the page setup dialog is shown again."
@@ -8961,25 +11718,38 @@ msgstr ""
 "Debe guardar la <classname>Gtk::PageSetup</classname> elegida para poder "
 "usarla luego si se vuelve a mostrar el diálogo de configuración de la página."
 
-#: C/gtkmm-tutorial-in.xml:5115(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5054
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "//Within a class that inherits from Gtk::Window and keeps m_refPageSetup and m_refSettings as 
members...\n"
+#| "Glib::RefPtr&lt;Gtk::PageSetup&gt; new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, 
m_refSettings);\n"
+#| "m_refPageSetup = new_page_setup;\n"
 msgid ""
 "\n"
-"//Within a class that inherits from Gtk::Window and keeps m_refPageSetup and m_refSettings as members...\n"
-"Glib::RefPtr&lt;Gtk::PageSetup&gt; new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, 
m_refSettings);\n"
+"// Within a class that inherits from Gtk::Window and keeps m_refPageSetup\n"
+"// and m_refSettings as members...\n"
+"auto new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);\n"
 "m_refPageSetup = new_page_setup;\n"
 msgstr ""
 "\n"
-"//Within a class that inherits from Gtk::Window and keeps m_refPageSetup and m_refSettings as members...\n"
-"Glib::RefPtr&lt;Gtk::PageSetup&gt; new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, 
m_refSettings);\n"
+"// Within a class that inherits from Gtk::Window and keeps m_refPageSetup\n"
+"// and m_refSettings as members...\n"
+"auto new_page_setup = Gtk::run_page_setup_dialog(*this, m_refPageSetup, m_refSettings);\n"
 "m_refPageSetup = new_page_setup;\n"
 
-#: C/gtkmm-tutorial-in.xml:5114(para) C/gtkmm-tutorial-in.xml:5179(para)
-#: C/gtkmm-tutorial-in.xml:9985(para)
-msgid "For instance, <placeholder-1/>"
-msgstr "Por ejemplo, <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:5126(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5061
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1PageSetup.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1PageSetup.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5065
 msgid ""
 "The Cairo coordinate system, in the <literal>draw_page</literal> handler, is "
 "automatically rotated to the current page orientation. It is normally within "
@@ -8996,11 +11766,13 @@ msgstr ""
 "Para seleccionar otras unidades, use el método <methodname>PrintOperation::"
 "set_unit()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:5138(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5077
 msgid "Rendering text"
 msgstr "Renderizar texto"
 
-#: C/gtkmm-tutorial-in.xml:5140(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5079
 msgid ""
 "Text rendering is done using Pango. The <classname>Pango::Layout</classname> "
 "object for printing should be created by calling the "
@@ -9027,7 +11799,8 @@ msgstr ""
 "las <classname>Pango::LayoutLine</classname> que aparecen dentro del número "
 "de página pedido."
 
-#: C/gtkmm-tutorial-in.xml:5155(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5094
 msgid ""
 "See <link linkend=\"sec-printing-example-simple\">an example</link> of "
 "exactly how this can be done."
@@ -9035,11 +11808,13 @@ msgstr ""
 "Consulte <link linkend=\"sec-printing-example-simple\">un ejemplo</link> de "
 "cómo realizar esto exactamente. "
 
-#: C/gtkmm-tutorial-in.xml:5163(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5102
 msgid "Asynchronous operations"
 msgstr "Operaciones asíncronas"
 
-#: C/gtkmm-tutorial-in.xml:5165(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5104
 msgid ""
 "By default, <methodname>PrintOperation::run()</methodname> returns when a "
 "print operation is completed. If you need to run a non-blocking print "
@@ -9054,75 +11829,133 @@ msgstr ""
 "las plataformas soportan <methodname>set_allow_async()</methodname>, la "
 "señal <literal>done</literal> se emitirá de todos modos."
 
-#: C/gtkmm-tutorial-in.xml:5172(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5111
+#, fuzzy
+#| msgid ""
+#| "<methodname>run()</methodname> may return "
+#| "<literal>PRINT_OPERATION_RESULT_IN_PROGRESS</literal>. To track status "
+#| "and handle the result or error you need to implement signal handlers for "
+#| "the <literal>done</literal> and <literal>status_changed</literal> signals:"
 msgid ""
-"<methodname>run()</methodname> may return "
-"<literal>PRINT_OPERATION_RESULT_IN_PROGRESS</literal>. To track status and "
-"handle the result or error you need to implement signal handlers for the "
-"<literal>done</literal> and <literal>status_changed</literal> signals:"
+"<methodname>run()</methodname> may return <literal>PrintOperation::Result::"
+"IN_PROGRESS</literal>. To track status and handle the result or error you "
+"need to implement signal handlers for the <literal>done</literal> and "
+"<literal>status_changed</literal> signals:"
 msgstr ""
 "<methodname>run()</methodname> puede devolver "
 "<literal>PRINT_OPERATION_RESULT_IN_PROGRESS</literal>. Para rastrear el "
-"estado y manejar el resultado de un error, necesita implementar gestores "
-"de las señales <literal>done</literal> y <literal>status_changed</literal>."
+"estado y manejar el resultado de un error, necesita implementar gestores de "
+"las señales <literal>done</literal> y <literal>status_changed</literal>."
 
-#: C/gtkmm-tutorial-in.xml:5180(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5119
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "// in class ExampleWindow's method...\n"
+#| "Glib::RefPtr&lt;PrintOperation&gt; op = PrintOperation::create();\n"
+#| "// ...set up op...\n"
+#| "op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(*this, 
&amp;ExampleWindow::on_printoperation_done), op));\n"
+#| "// run the op\n"
 msgid ""
 "\n"
 "// in class ExampleWindow's method...\n"
-"Glib::RefPtr&lt;PrintOperation&gt; op = PrintOperation::create();\n"
+"auto op = PrintOperation::create();\n"
 "// ...set up op...\n"
-"op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(*this, &amp;ExampleWindow::on_printoperation_done), 
op));\n"
+"op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(\n"
+"  *this, &amp;ExampleWindow::on_printoperation_done), op));\n"
 "// run the op\n"
 msgstr ""
 "\n"
 "// in class ExampleWindow's method...\n"
-"Glib::RefPtr&lt;PrintOperation&gt; op = PrintOperation::create();\n"
+"auto op = PrintOperation::create();\n"
 "// ...set up op...\n"
-"op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(*this, &amp;ExampleWindow::on_printoperation_done), 
op));\n"
+"op-&gt;signal_done().connect(sigc::bind(sigc::mem_fun(\n"
+"  *this, &amp;ExampleWindow::on_printoperation_done), op));\n"
 "// run the op\n"
 
-#: C/gtkmm-tutorial-in.xml:5190(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5128
+#, fuzzy
+#| msgid ""
+#| "Second, check for an error and connect to the <literal>status_changed</"
+#| "literal> signal. For instance: <placeholder-1/>"
 msgid ""
-"\n"
-"void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result, const 
Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
+"Second, check for an error and connect to the <literal>status_changed</"
+"literal> signal. For instance:"
+msgstr ""
+"Segundo, comprobar si hay errores y conectar la señal "
+"<literal>status_changed</literal>. Por ejemplo: <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5130
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result, const 
Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
+#| "{\n"
+#| "  if (result == Gtk::PRINT_OPERATION_RESULT_ERROR)\n"
+#| "    //notify user\n"
+#| "  else if (result == Gtk::PRINT_OPERATION_RESULT_APPLY)\n"
+#| "    //Update PrintSettings with the ones used in this PrintOperation\n"
+#| "\n"
+#| "  if (! op-&gt;is_finished())\n"
+#| "    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(*this, 
&amp;ExampleWindow::on_printoperation_status_changed), op));\n"
+#| "}\n"
+msgid ""
+"\n"
+"void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result,\n"
+"  const Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
 "{\n"
-"  if (result == Gtk::PRINT_OPERATION_RESULT_ERROR)\n"
+"  if (result == Gtk::PrintOperation::Result::ERROR)\n"
 "    //notify user\n"
-"  else if (result == Gtk::PRINT_OPERATION_RESULT_APPLY)\n"
+"  else if (result == Gtk::PrintOperation::Result::APPLY)\n"
 "    //Update PrintSettings with the ones used in this PrintOperation\n"
 "\n"
 "  if (! op-&gt;is_finished())\n"
-"    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(*this, 
&amp;ExampleWindow::on_printoperation_status_changed), op));\n"
+"    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(\n"
+"      *this, &amp;ExampleWindow::on_printoperation_status_changed), op));\n"
 "}\n"
 msgstr ""
 "\n"
-"void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result, const 
Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
+"void ExampleWindow::on_printoperation_done(Gtk::PrintOperationResult result,\n"
+"  const Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
 "{\n"
-"  if (result == Gtk::PRINT_OPERATION_RESULT_ERROR)\n"
+"  if (result == Gtk::PrintOperation::Result::ERROR)\n"
 "    //notify user\n"
-"  else if (result == Gtk::PRINT_OPERATION_RESULT_APPLY)\n"
+"  else if (result == Gtk::PrintOperation::Result::APPLY)\n"
 "    //Update PrintSettings with the ones used in this PrintOperation\n"
 "\n"
 "  if (! op-&gt;is_finished())\n"
-"    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(*this, 
&amp;ExampleWindow::on_printoperation_status_changed), op));\n"
+"    op-&gt;signal_status_changed().connect(sigc::bind(sigc::mem_fun(\n"
+"      *this, &amp;ExampleWindow::on_printoperation_status_changed), op));\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:5189(para)
-msgid ""
-"Second, check for an error and connect to the <literal>status_changed</"
-"literal> signal. For instance: <placeholder-1/>"
-msgstr ""
-"Segundo, comprobar si hay errores y conectar la señal "
-"<literal>status_changed</literal>. Por ejemplo: <placeholder-1/>"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5145
+#, fuzzy
+#| msgid "Finally, check the status. For instance, <placeholder-1/>"
+msgid "Finally, check the status. For instance,"
+msgstr "Por último, comprobar el estado. Por ejemplo, <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:5205(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5146
 #, no-wrap
-msgid ""
-"\n"
-"void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr&lt;PrintFormOperation&gt;&amp; 
op)\n"
+#| msgid ""
+#| "\n"
+#| "void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr&lt;PrintFormOperation&gt;&amp; 
op)\n"
+#| "{\n"
+#| "  if (op-&gt;is_finished())\n"
+#| "    //the print job is finished\n"
+#| "  else\n"
+#| "    //get the status with get_status() or get_status_string()\n"
+#| "\n"
+#| "  //update UI\n"
+#| "}\n"
+msgid ""
+"\n"
+"void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
 "{\n"
 "  if (op-&gt;is_finished())\n"
 "    //the print job is finished\n"
@@ -9133,7 +11966,7 @@ msgid ""
 "}\n"
 msgstr ""
 "\n"
-"void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr&lt;PrintFormOperation&gt;&amp; 
op)\n"
+"void ExampleWindow::on_printoperation_status_changed(const Glib::RefPtr&lt;PrintOperation&gt;&amp; op)\n"
 "{\n"
 "  if (op-&gt;is_finished())\n"
 "    //the print job is finished\n"
@@ -9143,45 +11976,57 @@ msgstr ""
 "  //update UI\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:5204(para)
-msgid "Finally, check the status. For instance, <placeholder-1/>"
-msgstr "Por último, comprobar el estado. Por ejemplo, <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:5221(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5161
 msgid "Export to PDF"
 msgstr "Exportar a PDF"
 
-#: C/gtkmm-tutorial-in.xml:5225(programlisting)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5162
+#, fuzzy
+#| msgid ""
+#| "The 'Print to file' option is available in the print dialog, without the "
+#| "need for extra implementation. However, it is sometimes useful to "
+#| "generate a pdf file directly from code. For instance, <placeholder-1/>"
+msgid ""
+"The 'Print to file' option is available in the print dialog, without the "
+"need for extra implementation. However, it is sometimes useful to generate a "
+"pdf file directly from code. For instance,"
+msgstr ""
+"La opción «imprimir a un archivo» está disponible en el diálogo de "
+"impresión, sin la necesidad de implementación adicional. Sin embargo, a "
+"veces es útil generar un archivo pdf directamente desde el código. Por "
+"ejemplo, <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5165
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gtk::PrintOperation&gt; op = Gtk::PrintOperation::create();\n"
+#| "// ...set up op...\n"
+#| "op-&gt;set_export_filename(\"test.pdf\");\n"
+#| "Gtk::PrintOperationResult res = op-&gt;run(Gtk::PRINT_OPERATION_ACTION_EXPORT);\n"
 msgid ""
 "\n"
-"Glib::RefPtr&lt;Gtk::PrintOperation&gt; op = Gtk::PrintOperation::create();\n"
+"auto op = Gtk::PrintOperation::create();\n"
 "// ...set up op...\n"
 "op-&gt;set_export_filename(\"test.pdf\");\n"
-"Gtk::PrintOperationResult res = op-&gt;run(Gtk::PRINT_OPERATION_ACTION_EXPORT);\n"
+"auto res = op-&gt;run(Gtk::PrintOperation::Action::EXPORT);\n"
 msgstr ""
 "\n"
-"Glib::RefPtr&lt;Gtk::PrintOperation&gt; op = Gtk::PrintOperation::create();\n"
+"auto op = Gtk::PrintOperation::create();\n"
 "// ...set up op...\n"
 "op-&gt;set_export_filename(\"test.pdf\");\n"
-"Gtk::PrintOperationResult res = op-&gt;run(Gtk::PRINT_OPERATION_ACTION_EXPORT);\n"
-
-#: C/gtkmm-tutorial-in.xml:5222(para)
-msgid ""
-"The 'Print to file' option is available in the print dialog, without the "
-"need for extra implementation. However, it is sometimes useful to generate a "
-"pdf file directly from code. For instance, <placeholder-1/>"
-msgstr ""
-"La opción «imprimir a un archivo» está disponible en el diálogo de "
-"impresión, sin la necesidad de implementación adicional. Sin embargo, a "
-"veces es útil generar un archivo pdf directamente desde el código. Por "
-"ejemplo, <placeholder-1/>"
+"auto res = op-&gt;run(Gtk::PrintOperation::Action::EXPORT);\n"
 
-#: C/gtkmm-tutorial-in.xml:5237(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5175
 msgid "Extending the print dialog"
 msgstr "Extender el diálogo de impresión"
 
-#: C/gtkmm-tutorial-in.xml:5244(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5182
 msgid ""
 "Set the title of the tab via <methodname>PrintOperation::"
 "set_custom_tab_label()</methodname>, create a new widget and return it from "
@@ -9190,11 +12035,11 @@ msgid ""
 msgstr ""
 "Establezca el título de la pestaña mediante <methodname>PrintOperation::"
 "set_custom_tab_label()</methodname>, cree un widget nuevo y devuélvalo desde "
-"el gestor de señales <literal>create_custom_widget</literal>. "
-"Probablemente quiera que este sea un widget contenedor, empaquetado con "
-"algunos otros."
+"el gestor de señales <literal>create_custom_widget</literal>. Probablemente "
+"quiera que este sea un widget contenedor, empaquetado con algunos otros."
 
-#: C/gtkmm-tutorial-in.xml:5254(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5192
 msgid ""
 "Get the data from the widgets in the <literal>custom_widget_apply</literal> "
 "signal handler."
@@ -9202,36 +12047,87 @@ msgstr ""
 "Obtenga los datos de los widgets en el gestor de señales "
 "<literal>custom_widget_apply</literal>."
 
-#: C/gtkmm-tutorial-in.xml:5239(para)
-msgid "You may add a custom tab to the print dialog: <placeholder-1/>"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5177
+#, fuzzy
+#| msgid "You may add a custom tab to the print dialog: <placeholder-1/>"
+msgid "You may add a custom tab to the print dialog: <_:itemizedlist-1/>"
 msgstr ""
 "Puede añadir una pestaña personalizada al diálogo de impresión: "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:5269(programlisting)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5200
+#, fuzzy
+#| msgid ""
+#| "Although the <literal>custom_widget_apply</literal> signal provides the "
+#| "widget you previously created, to simplify things you can keep the "
+#| "widgets you expect to contain some user input as class members. For "
+#| "example, let's say you have a <classname>Gtk::Entry</classname> called "
+#| "<literal>m_Entry</literal> as a member of your "
+#| "<classname>CustomPrintOperation</classname> class: <placeholder-1/>"
+msgid ""
+"Although the <literal>custom_widget_apply</literal> signal provides the "
+"widget you previously created, to simplify things you can keep the widgets "
+"you expect to contain some user input as class members. For example, let's "
+"say you have a <classname>Gtk::Entry</classname> called <literal>m_Entry</"
+"literal> as a member of your <classname>CustomPrintOperation</classname> "
+"class:"
+msgstr ""
+"A pesar de que la señal <literal>custom_widget_apply</literal> proporciona "
+"al widget que creó previamente, para simplificar las cosas puede mantener a "
+"los widgets que espera que contengan entrada del usuario como miembros de "
+"clase. Por ejemplo, si tiene un <classname>Gtk::Entry</classname> llamado "
+"<literal>m_Entry</literal> como miembro de su clase "
+"<classname>CustomPrintOperation</classname>: <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5207
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Gtk::Widget* CustomPrintOperation::on_create_custom_widget()\n"
+#| "{\n"
+#| "  set_custom_tab_label(\"My custom tab\");\n"
+#| "\n"
+#| "  Gtk::Box* hbox = new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 8);\n"
+#| "  hbox-&gt;set_border_width(6);\n"
+#| "\n"
+#| "  Gtk::Label* label = Gtk::manage(new Gtk::Label(\"Enter some text: \"));\n"
+#| "  hbox-&gt;pack_start(*label, false, false);\n"
+#| "  label-&gt;show();\n"
+#| "\n"
+#| "  hbox-&gt;pack_start(m_Entry, false, false);\n"
+#| "  m_Entry.show();\n"
+#| "\n"
+#| "  return hbox;\n"
+#| "}\n"
+#| "\n"
+#| "void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */)\n"
+#| "{\n"
+#| "  Glib::ustring user_input = m_Entry.get_text();\n"
+#| "  //...\n"
+#| "}\n"
 msgid ""
 "\n"
 "Gtk::Widget* CustomPrintOperation::on_create_custom_widget()\n"
 "{\n"
 "  set_custom_tab_label(\"My custom tab\");\n"
 "\n"
-"  Gtk::Box* hbox = new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 8);\n"
-"  hbox-&gt;set_border_width(6);\n"
+"  auto hbox = new Gtk::Box(Gtk::Orientation::HORIZONTAL, 8);\n"
+"  hbox-&gt;set_margin(6);\n"
 "\n"
-"  Gtk::Label* label = Gtk::manage(new Gtk::Label(\"Enter some text: \"));\n"
-"  hbox-&gt;pack_start(*label, false, false);\n"
-"  label-&gt;show();\n"
+"  auto label = Gtk::make_managed&lt;Gtk::Label&gt;(\"Enter some text: \");\n"
+"  hbox-&gt;append(*label);\n"
 "\n"
-"  hbox-&gt;pack_start(m_Entry, false, false);\n"
-"  m_Entry.show();\n"
+"  hbox-&gt;append(m_Entry);\n"
 "\n"
 "  return hbox;\n"
 "}\n"
 "\n"
 "void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */)\n"
 "{\n"
-"  Glib::ustring user_input = m_Entry.get_text();\n"
+"  auto user_input = m_Entry.get_text();\n"
 "  //...\n"
 "}\n"
 msgstr ""
@@ -9240,87 +12136,85 @@ msgstr ""
 "{\n"
 "  set_custom_tab_label(\"My custom tab\");\n"
 "\n"
-"  Gtk::Box* hbox = new Gtk::Box(Gtk::ORIENTATION_HORIZONTAL, 8);\n"
-"  hbox-&gt;set_border_width(6);\n"
+"  auto hbox = new Gtk::Box(Gtk::Orientation::HORIZONTAL, 8);\n"
+"  hbox-&gt;set_margin(6);\n"
 "\n"
-"  Gtk::Label* label = Gtk::manage(new Gtk::Label(\"Enter some text: \"));\n"
-"  hbox-&gt;pack_start(*label, false, false);\n"
-"  label-&gt;show();\n"
+"  auto label = Gtk::make_managed&lt;Gtk::Label&gt;(\"Enter some text: \");\n"
+"  hbox-&gt;append(*label);\n"
 "\n"
-"  hbox-&gt;pack_start(m_Entry, false, false);\n"
-"  m_Entry.show();\n"
+"  hbox-&gt;append(m_Entry);\n"
 "\n"
 "  return hbox;\n"
 "}\n"
 "\n"
 "void CustomPrintOperation::on_custom_widget_apply(Gtk::Widget* /* widget */)\n"
 "{\n"
-"  Glib::ustring user_input = m_Entry.get_text();\n"
+"  auto user_input = m_Entry.get_text();\n"
 "  //...\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:5262(para)
-msgid ""
-"Although the <literal>custom_widget_apply</literal> signal provides the "
-"widget you previously created, to simplify things you can keep the widgets "
-"you expect to contain some user input as class members. For example, let's "
-"say you have a <classname>Gtk::Entry</classname> called <literal>m_Entry</"
-"literal> as a member of your <classname>CustomPrintOperation</classname> "
-"class: <placeholder-1/>"
-msgstr ""
-"A pesar de que la señal <literal>custom_widget_apply</literal> proporciona "
-"al widget que creó previamente, para simplificar las cosas puede mantener a "
-"los widgets que espera que contengan entrada del usuario como miembros de "
-"clase. Por ejemplo, si tiene un <classname>Gtk::Entry</classname> llamado "
-"<literal>m_Entry</literal> como miembro de su clase "
-"<classname>CustomPrintOperation</classname>: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:5296(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5230
 msgid "The example in examples/book/printing/advanced demonstrates this."
 msgstr "El ejemplo en examples/book/printing/advanced demuestra esto."
 
-#: C/gtkmm-tutorial-in.xml:5303(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5237
 msgid "Preview"
 msgstr "Vista previa"
 
-#: C/gtkmm-tutorial-in.xml:5309(programlisting)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5239
+#, fuzzy
+#| msgid ""
+#| "The native GTK+ print dialog has a preview button, but you may also start "
+#| "a preview directly from an application: <placeholder-1/>"
+msgid ""
+"The native GTK print dialog has a preview button, but you may also start a "
+"preview directly from an application:"
+msgstr ""
+"El diálogo de impresión nativo de GTK+ tiene un botón de previsualización, "
+"pero también puede comenzar una previsualización directamente desde una "
+"aplicación: <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5243
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "// in a class that inherits from Gtk::Window...\n"
+#| "Glib::RefPtr&lt;PrintOperation&gt; op = PrintOperation::create();\n"
+#| "// ...set up op...\n"
+#| "op-&gt;run(Gtk::PRINT_OPERATION_ACTION_PREVIEW, *this);\n"
 msgid ""
 "\n"
 "// in a class that inherits from Gtk::Window...\n"
-"Glib::RefPtr&lt;PrintOperation&gt; op = PrintOperation::create();\n"
+"auto op = PrintOperation::create();\n"
 "// ...set up op...\n"
-"op-&gt;run(Gtk::PRINT_OPERATION_ACTION_PREVIEW, *this);\n"
+"op-&gt;run(Gtk::PrintOperation::Action::PREVIEW, *this);\n"
 msgstr ""
 "\n"
 "// in a class that inherits from Gtk::Window...\n"
-"Glib::RefPtr&lt;PrintOperation&gt; op = PrintOperation::create();\n"
+"auto op = PrintOperation::create();\n"
 "// ...set up op...\n"
-"op-&gt;run(Gtk::PRINT_OPERATION_ACTION_PREVIEW, *this);\n"
-
-#: C/gtkmm-tutorial-in.xml:5305(para)
-msgid ""
-"The native GTK+ print dialog has a preview button, but you may also start a "
-"preview directly from an application: <placeholder-1/>"
-msgstr ""
-"El diálogo de impresión nativo de GTK+ tiene un botón de previsualización, "
-"pero también puede comenzar una previsualización directamente desde una "
-"aplicación: <placeholder-1/>"
+"op-&gt;run(Gtk::PrintOperation::Action::PREVIEW, *this);\n"
 
-#: C/gtkmm-tutorial-in.xml:5317(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5250
 msgid ""
 "On Unix, the default preview handler uses an external viewer program. On "
 "Windows, the native preview dialog will be shown. If necessary you may "
 "override this behaviour and provide a custom preview dialog. See the example "
 "located in /examples/book/printing/advanced."
 msgstr ""
-"En Unix, el gestor de previsualización predeterminado usa un programa "
-"visor externo. En Windows, se mostrará el diálogo nativo de "
-"previsualización. Si es necesario, puede modificar este comportamiento y "
-"proporcionar un diálogo de previsualización personalizado. Consulte el "
-"ejemplo en /examples/book/printing/advanced."
+"En Unix, el gestor de previsualización predeterminado usa un programa visor "
+"externo. En Windows, se mostrará el diálogo nativo de previsualización. Si "
+"es necesario, puede modificar este comportamiento y proporcionar un diálogo "
+"de previsualización personalizado. Consulte el ejemplo en /examples/book/"
+"printing/advanced."
 
-#: C/gtkmm-tutorial-in.xml:5332(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5265
 msgid ""
 "The following example demonstrates how to print some input from a user "
 "interface. It shows how to implement <literal>on_begin_print</literal> and "
@@ -9332,32 +12226,35 @@ msgstr ""
 "<literal>on_draw_page</literal>, como también cómo rastrear el estado de la "
 "impresión y actualizar sus opciones."
 
-#: C/gtkmm-tutorial-in.xml:5340(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:5273
 msgid "Printing - Simple"
 msgstr "Impresión simple"
 
-#: C/gtkmm-tutorial-in.xml:5355(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5279
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/printing/simple/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/printing/simple/\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:5288
 msgid "Recently Used Documents"
 msgstr "Documentos usados recientemente"
 
-#: C/gtkmm-tutorial-in.xml:5357(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:5290
 msgid ""
 "<application>gtkmm</application> provides an easy way to manage recently "
-"used documents. The classes involved in implementing this functionality are "
-"<classname>RecentManager</classname>, <classname>RecentChooserDialog</"
-"classname>, <classname>RecentChooserMenu</classname>, "
-"<classname>RecentChooserWidget</classname>, <classname>RecentAction</"
-"classname>, and <classname>RecentFilter</classname>."
-msgstr ""
-"<application>gtkmm</application> proporciona una manera fácil de gestionar "
-"documentos usados recientemente. Las clases involucradas en la "
-"implementación de esta funcionalidad son <classname>RecentManager</"
-"classname>, <classname>RecentChooserDialog</classname>, "
-"<classname>RecentChooserMenu</classname>, <classname>RecentChooserWidget</"
-"classname>, <classname>RecentAction</classname>, y <classname>RecentFilter</"
-"classname>."
+"used documents. This functionality is implemented in the <classname>Gtk::"
+"RecentManager</classname> class."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:5367(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:5294
 msgid ""
 "Each item in the list of recently used files is identified by its URI, and "
 "can have associated metadata. The metadata can be used to specify how the "
@@ -9371,11 +12268,13 @@ msgstr ""
 "MIME, qué aplicación lo registró, si es privado de esta aplicación y muchas "
 "otras cosas."
 
-#: C/gtkmm-tutorial-in.xml:5375(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5302
 msgid "RecentManager"
 msgstr "RecentManager"
 
-#: C/gtkmm-tutorial-in.xml:5376(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5303
 msgid ""
 "<classname>RecentManager</classname> acts as a database of recently used "
 "files. You use this class to register new files, remove files from the list, "
@@ -9387,7 +12286,8 @@ msgstr ""
 "nuevos, eliminarlos o buscarlos. Hay una lista de archivos usados "
 "recientemente por cada usuario."
 
-#: C/gtkmm-tutorial-in.xml:5382(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5309
 msgid ""
 "You can create a new <classname>RecentManager</classname>, but you'll most "
 "likely just want to use the default one. You can get a reference to the "
@@ -9399,21 +12299,13 @@ msgstr ""
 "del <classname>RecentManager</classname> predeterminado con "
 "<methodname>get_default()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:5388(para)
-msgid ""
-"<classname>RecentManager</classname> is the model of a model-view pattern, "
-"where the view is a class that implements the <classname>RecentChooser</"
-"classname> interface."
-msgstr ""
-"<classname>RecentManager</classname> es el modelo de un patrón modelo-vista "
-"cuya vista es la clase que implementa la interfaz <classname>RecentChooser</"
-"classname>."
-
-#: C/gtkmm-tutorial-in.xml:5394(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:5316
 msgid "Adding Items to the List of Recent Files"
 msgstr "Agregar elementos a la lista de archivos recientes"
 
-#: C/gtkmm-tutorial-in.xml:5395(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5317
 msgid ""
 "To add a new file to the list of recent documents, in the simplest case, you "
 "only need to provide the URI. For example:"
@@ -9421,16 +12313,21 @@ msgstr ""
 "Para añadir un archivo nuevo a la lista de documentos recientes, en el caso "
 "más simple, sólo necesita proporcionar su URI. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:5399(programlisting)
-#, no-wrap
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:5321
+#, fuzzy, no-wrap
+#| msgid ""
+#| "Glib::RefPtr&lt;Gtk::RecentManager&gt; recent_manager = Gtk::RecentManager::get_default();\n"
+#| "recent_manager-&gt;add_item(uri);"
 msgid ""
-"Glib::RefPtr&lt;Gtk::RecentManager&gt; recent_manager = Gtk::RecentManager::get_default();\n"
+"auto recent_manager = Gtk::RecentManager::get_default();\n"
 "recent_manager-&gt;add_item(uri);"
 msgstr ""
 "Glib::RefPtr&lt;Gtk::RecentManager&gt; recent_manager = Gtk::RecentManager::get_default();\n"
 "recent_manager-&gt;add_item(uri);"
 
-#: C/gtkmm-tutorial-in.xml:5401(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5323
 msgid ""
 "If you want to register a file with metadata, you can pass a "
 "<classname>RecentManager::Data</classname> parameter to "
@@ -9442,7 +12339,8 @@ msgstr ""
 "methodname>. Los metadatos que pueden establecerse en un elemento archivo "
 "particular son los siguientes:"
 
-#: C/gtkmm-tutorial-in.xml:5409(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5331
 msgid ""
 "<varname>app_exec</varname>: The command line to be used to launch this "
 "resource. This string may contain the \"f\" and \"u\" escape characters "
@@ -9452,7 +12350,8 @@ msgstr ""
 "este recurso. La cadena puede contener los caracteres de escape «f» y «u» "
 "que se expandirán en la ruta del archivo de recursos y el URI respectivamente"
 
-#: C/gtkmm-tutorial-in.xml:5415(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5337
 msgid ""
 "<varname>app_name</varname>: The name of the application that registered the "
 "resource"
@@ -9460,7 +12359,8 @@ msgstr ""
 "<varname>app_name</varname>: el nombre de la aplicación que registró el "
 "recurso"
 
-#: C/gtkmm-tutorial-in.xml:5419(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5341
 msgid ""
 "<varname>description</varname>: A short description of the resource as a "
 "UTF-8 encoded string"
@@ -9468,7 +12368,8 @@ msgstr ""
 "<varname>description</varname>: una descripción corta del recurso en una "
 "cadena codificada en UTF-8"
 
-#: C/gtkmm-tutorial-in.xml:5423(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5345
 msgid ""
 "<varname>display_name</varname>: The name of the resource to be used for "
 "display as a UTF-8 encoded string"
@@ -9476,7 +12377,8 @@ msgstr ""
 "<varname>display_name</varname>: el nombre del recurso que se mostrará como "
 "una cadena codificada en UTF-8"
 
-#: C/gtkmm-tutorial-in.xml:5427(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5349
 msgid ""
 "<varname>groups</varname>: A list of groups associated with this item. "
 "Groups are essentially arbitrary strings associated with a particular "
@@ -9488,7 +12390,8 @@ msgstr ""
 "particular. Puede pensar en ellos como «categorías» (como «correo-e», "
 "«gráficos», etc), o etiquetas del recurso"
 
-#: C/gtkmm-tutorial-in.xml:5433(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5355
 msgid ""
 "<varname>is_private</varname>: Whether this resource should be visible only "
 "to applications that have registered it or not"
@@ -9496,11 +12399,13 @@ msgstr ""
 "<varname>is_private</varname>: determina si el recurso debe ser visible sólo "
 "a las aplicaciones que lo han registrado o no"
 
-#: C/gtkmm-tutorial-in.xml:5437(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5359
 msgid "<varname>mime_type</varname>: The MIME type of the resource"
 msgstr "<varname>mime_type</varname>: el tipo MIME del recurso"
 
-#: C/gtkmm-tutorial-in.xml:5440(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5362
 msgid ""
 "In addition to adding items to the list, you can also look up items from the "
 "list and modify or remove items."
@@ -9508,11 +12413,13 @@ msgstr ""
 "Además de añadir elementos a la lista, puede buscarlos y modificarlos o "
 "eliminarlos."
 
-#: C/gtkmm-tutorial-in.xml:5446(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:5368
 msgid "Looking up Items in the List of Recent Files"
 msgstr "Buscar elementos en la lista de archivos recientes"
 
-#: C/gtkmm-tutorial-in.xml:5447(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5369
 msgid ""
 "To look up recently used files, <classname>RecentManager</classname> "
 "provides several functions. To look up a specific item by its URI, you can "
@@ -9529,7 +12436,8 @@ msgstr ""
 "<methodname>lookup_item()</methodname> arroja una excepción "
 "<classname>RecentManagerError</classname>. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:5456(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:5378
 #, no-wrap
 msgid ""
 "Glib::RefPtr&lt;Gtk::RecentInfo&gt; info;\n"
@@ -9560,7 +12468,8 @@ msgstr ""
 "  // item was found\n"
 "}"
 
-#: C/gtkmm-tutorial-in.xml:5469(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5391
 msgid ""
 "A <classname>RecentInfo</classname> object is essentially an object "
 "containing all of the metadata about a single recently-used file. You can "
@@ -9572,7 +12481,8 @@ msgstr ""
 "Puede utilizar este objeto para buscar cualquiera de las propiedades "
 "enumeradas <link linkend=\"list-file-metadata\">anteriormente</link>."
 
-#: C/gtkmm-tutorial-in.xml:5475(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5397
 msgid ""
 "If you don't want to look for a specific URI, but instead want to get a list "
 "of all recently used items, <classname>RecentManager</classname> provides "
@@ -9588,12 +12498,15 @@ msgstr ""
 "archivos usados recientemente. El siguiente código demuestra cómo puede "
 "obtener una lista de todos los archivos usados recientemente:"
 
-#: C/gtkmm-tutorial-in.xml:5483(programlisting)
-#, no-wrap
-msgid "std::vector&lt; Glib::RefPtr&lt;Gtk::RecentInfo&gt; &gt; info_list = recent_manager-&gt;get_items();"
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:5405
+#, fuzzy, no-wrap
+#| msgid "std::vector&lt; Glib::RefPtr&lt;Gtk::RecentInfo&gt; &gt; info_list = 
recent_manager-&gt;get_items();"
+msgid "auto info_list = recent_manager-&gt;get_items();"
 msgstr "std::vector&lt; Glib::RefPtr&lt;Gtk::RecentInfo&gt; &gt; info_list = recent_manager-&gt;get_items();"
 
-#: C/gtkmm-tutorial-in.xml:5484(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5406
 msgid ""
 "The maximum age of items in the recently used files list can be set with "
 "<methodname>Gtk::Settings::property_gtk_recent_files_max_age()</methodname>. "
@@ -9604,11 +12517,13 @@ msgstr ""
 "property_gtk_recent_files_max_age()</methodname>. El valor predeterminado es "
 "30 días."
 
-#: C/gtkmm-tutorial-in.xml:5491(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:5413
 msgid "Modifying the List of Recent Files"
 msgstr "Modificar la lista de archivos recientes"
 
-#: C/gtkmm-tutorial-in.xml:5492(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5414
 msgid ""
 "There may be times when you need to modify the list of recent files. For "
 "instance, if a file is moved or renamed, you may need to update the file's "
@@ -9623,7 +12538,8 @@ msgstr ""
 "actualizar la localización de un elemento usando <methodname>move_item()</"
 "methodname>."
 
-#: C/gtkmm-tutorial-in.xml:5499(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5421
 msgid ""
 "In addition to changing a file's URI, you can also remove items from the "
 "list, either one at a time or by clearing them all at once. The former is "
@@ -9635,7 +12551,8 @@ msgstr ""
 "<methodname>remove_item()</methodname>, y lo último con "
 "<methodname>purge_items()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:5506(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:5428
 msgid ""
 "The functions <methodname>move_item()</methodname>, "
 "<methodname>remove_item()</methodname> and <methodname>purge_items()</"
@@ -9647,18 +12564,23 @@ msgstr ""
 "methodname> no tienen efecto en los archivos en sí a los que se refieren los "
 "URI, sólo modifican la lista de archivos recientes."
 
-#: C/gtkmm-tutorial-in.xml:5518(title)
-msgid "RecentChooser"
-msgstr "RecentChooser"
-
-#: C/gtkmm-tutorial-in.xml:5519(para)
-msgid ""
-"<classname>RecentChooser</classname> is an interface that can be implemented "
-"by widgets displaying the list of recently used files. <application>gtkmm</"
-"application> provides four built-in implementations for choosing recent "
-"files: <classname>RecentChooserWidget</classname>, "
-"<classname>RecentChooserDialog</classname>, <classname>RecentChooserMenu</"
-"classname>, and <classname>RecentAction</classname>."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5441
+#, fuzzy
+#| msgid ""
+#| "<classname>RecentChooser</classname> is an interface that can be "
+#| "implemented by widgets displaying the list of recently used files. "
+#| "<application>gtkmm</application> provides four built-in implementations "
+#| "for choosing recent files: <classname>RecentChooserWidget</classname>, "
+#| "<classname>RecentChooserDialog</classname>, <classname>RecentChooserMenu</"
+#| "classname>, and <classname>RecentAction</classname>."
+msgid ""
+"<classname>FileChooser</classname> is an interface that can be implemented "
+"by widgets displaying a list of files. <application>gtkmm</application> "
+"provides three built-in implementations for choosing recent files or other "
+"files: <classname>FileChooserWidget</classname>, "
+"<classname>FileChooserDialog</classname>, and <classname>FileChooserNative</"
+"classname>."
 msgstr ""
 "<classname>RecentChooser</classname> es una interfaz que pueden implementar "
 "los widgets que muestran la lista de archivos usados recientemente. "
@@ -9668,12 +12590,20 @@ msgstr ""
 "<classname>RecentChooserMenu</classname>, y <classname>RecentAction</"
 "classname>."
 
-#: C/gtkmm-tutorial-in.xml:5528(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5450
+#, fuzzy
+#| msgid ""
+#| "<classname>RecentChooserWidget</classname> is a simple widget for "
+#| "displaying a list of recently used files. <classname>RecentChooserWidget</"
+#| "classname> is the basic building block for "
+#| "<classname>RecentChooserDialog</classname>, but you can embed it into "
+#| "your user interface if you want to."
 msgid ""
-"<classname>RecentChooserWidget</classname> is a simple widget for displaying "
-"a list of recently used files. <classname>RecentChooserWidget</classname> is "
-"the basic building block for <classname>RecentChooserDialog</classname>, but "
-"you can embed it into your user interface if you want to."
+"<classname>FileChooserWidget</classname> is a simple widget for displaying a "
+"list of recently used files or other files. <classname>FileChooserWidget</"
+"classname> is the basic building block for <classname>FileChooserDialog</"
+"classname>, but you can embed it into your user interface if you want to."
 msgstr ""
 "<classname>RecentChooserWidget</classname> es un widget simple para mostrar "
 "una lista de archivos usados recientemente. <classname>RecentChooserWidget</"
@@ -9681,25 +12611,30 @@ msgstr ""
 "<classname>RecentChooserDialog</classname>, pero puede empotrarlo en su "
 "interfaz de usuario si quiere."
 
-#: C/gtkmm-tutorial-in.xml:5535(para)
-msgid ""
-"<classname>RecentChooserMenu</classname> and <classname>RecentAction</"
-"classname> allow you to list recently used files as a menu."
-msgstr ""
-"<classname>RecentChooserMenu</classname> y <classname>RecentAction</"
-"classname> le permiten listar archivos usados recientemente en un menú."
-
-#: C/gtkmm-tutorial-in.xml:5541(title)
-msgid "Simple RecentChooserDialog example"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:5458
+#, fuzzy
+#| msgid "Simple RecentChooserDialog example"
+msgid "Simple FileChooserDialog example"
 msgstr "Ejemplo de RecentChooserDialog"
 
-#: C/gtkmm-tutorial-in.xml:5542(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5459
+#, fuzzy
+#| msgid ""
+#| "Shown below is a simple example of how to use the "
+#| "<classname>RecentChooserDialog</classname> and the "
+#| "<classname>RecentAction</classname> classes in a program. This simple "
+#| "program has a menubar with a <guimenuitem>Recent Files Dialog</"
+#| "guimenuitem> menu item. When you select this menu item, a dialog pops up "
+#| "showing the list of recently used files."
 msgid ""
 "Shown below is a simple example of how to use the "
-"<classname>RecentChooserDialog</classname> and the <classname>RecentAction</"
-"classname> classes in a program. This simple program has a menubar with a "
-"<guimenuitem>Recent Files Dialog</guimenuitem> menu item. When you select "
-"this menu item, a dialog pops up showing the list of recently used files."
+"<classname>FileChooserDialog</classname> class in a program. This simple "
+"program has a menubar with a <guimenuitem>File Chooser Dialog</guimenuitem> "
+"menu item. When you select this menu item, a dialog pops up showing a list "
+"of files. If you select <guimenuitem>Recent</guimenuitem> in the sidebar, "
+"the list of recently used files is shown."
 msgstr ""
 "Se muestra a continuación un ejemplo simple de cómo usar las clases "
 "<classname>RecentChooserDialog</classname> y <classname>RecentAction</"
@@ -9708,7 +12643,8 @@ msgstr ""
 "seleccione este elemento, aparecerá un diálogo mostrando la lista de "
 "archivos recientemente usados."
 
-#: C/gtkmm-tutorial-in.xml:5552(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:5469
 msgid ""
 "If this is the first time you're using a program that uses the Recent Files "
 "framework, the dialog may be empty at first. Otherwise it should show the "
@@ -9719,42 +12655,77 @@ msgstr ""
 "mostrar la lista de documentos recientemente usados registrados por otras "
 "aplicaciones."
 
-#: C/gtkmm-tutorial-in.xml:5559(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5476
+#, fuzzy
+#| msgid ""
+#| "After selecting the <guimenuitem>Recent Files Dialog</guimenuitem> menu "
+#| "item, you should see something similar to the following window."
 msgid ""
-"After selecting the <guimenuitem>Recent Files Dialog</guimenuitem> menu "
-"item, you should see something similar to the following window."
+"After selecting the <guimenuitem>File Chooser Dialog</guimenuitem> menu item "
+"and the <guimenuitem>Recent</guimenuitem> sidebar item, you should see "
+"something similar to the following window."
 msgstr ""
 "Después de haber seleccionado el elemento del menú <guimenuitem>Recent Files "
 "Dialog</guimenuitem>, debería ver algo similar a la siguiente ventana."
 
-#: C/gtkmm-tutorial-in.xml:5568(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5484
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/recent_files\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/recent_files\">Código fuente</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5485
+#, fuzzy
+#| msgid ""
+#| "The constructor for <classname>ExampleWindow</classname> creates the menu "
+#| "using <classname>UIManager</classname> (see <xref linkend=\"chapter-menus-"
+#| "and-toolbars\"/> for more information). It then adds the menu and the "
+#| "toolbar to the window."
 msgid ""
 "The constructor for <classname>ExampleWindow</classname> creates the menu "
-"using <classname>UIManager</classname> (see <xref linkend=\"chapter-menus-"
-"and-toolbars\"/> for more information). It then adds the menu and the "
-"toolbar to the window."
+"and the toolbar using <classname>Builder</classname> (see <xref linkend="
+"\"chapter-menus-and-toolbars\"/> for more information). It then adds the "
+"menu and the toolbar to the window."
 msgstr ""
 "El constructor de <classname>ExampleWindow</classname> crea el menú usando "
 "<classname>UIManager</classname> (consulte la <xref linkend=\"chapter-menus-"
 "and-toolbars\"/> para obtener más información). Luego, añade el menú y la "
 "barra de herramientas a la ventana."
 
-#: C/gtkmm-tutorial-in.xml:5576(title)
-msgid "Filtering Recent Files"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:5493
+#, fuzzy
+#| msgid "Filtering Recent Files"
+msgid "Filtering Files"
 msgstr "Filtrar los archivos recientes"
 
-#: C/gtkmm-tutorial-in.xml:5577(para)
-msgid ""
-"For any of the <classname>RecentChooser</classname> classes, if you don't "
-"wish to display all of the items in the list of recent files, you can filter "
-"the list to show only those that you want. You can filter the list with the "
-"help of the <classname>RecentFilter</classname> class. This class allows you "
-"to filter recent files by their name (<methodname>add_pattern()</"
-"methodname>), their mime type (<methodname>add_mime_type()</methodname>), "
-"the application that registered them (<methodname>add_application()</"
-"methodname>), or by a custom filter function (<methodname>add_custom()</"
-"methodname>). It also provides the ability to filter based on how long ago "
-"the file was modified and which groups it belongs to."
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5494
+#, fuzzy
+#| msgid ""
+#| "For any of the <classname>RecentChooser</classname> classes, if you don't "
+#| "wish to display all of the items in the list of recent files, you can "
+#| "filter the list to show only those that you want. You can filter the list "
+#| "with the help of the <classname>RecentFilter</classname> class. This "
+#| "class allows you to filter recent files by their name "
+#| "(<methodname>add_pattern()</methodname>), their mime type "
+#| "(<methodname>add_mime_type()</methodname>), the application that "
+#| "registered them (<methodname>add_application()</methodname>), or by a "
+#| "custom filter function (<methodname>add_custom()</methodname>). It also "
+#| "provides the ability to filter based on how long ago the file was "
+#| "modified and which groups it belongs to."
+msgid ""
+"For any of the <classname>FileChooser</classname> classes, if you don't wish "
+"to display all of the items in the list of files, you can filter the list to "
+"show only those that you want. You can filter the list with the help of the "
+"<classname>FileFilter</classname> class. This class allows you to filter "
+"files by their name (<methodname>add_pattern()</methodname>), or their mime "
+"type (<methodname>add_mime_type()</methodname>)."
 msgstr ""
 "Para cualquiera de las clases <classname>RecentChooser</classname>, si no "
 "quiere mostrar todos los elementos en la lista de archivos recientes, puede "
@@ -9767,285 +12738,29 @@ msgstr ""
 "methodname>). También proporciona la posibilidad de filtrar de acuerdo a "
 "cuánto tiempo pasó desde que el archivo se modificó y a qué grupo pertenece."
 
-#: C/gtkmm-tutorial-in.xml:5590(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5503
+#, fuzzy
+#| msgid ""
+#| "After you've created and set up the filter to match only the items you "
+#| "want, you can apply a filter to a chooser widget with the "
+#| "<methodname>RecentChooser::add_filter()</methodname> function."
 msgid ""
 "After you've created and set up the filter to match only the items you want, "
-"you can apply a filter to a chooser widget with the "
-"<methodname>RecentChooser::add_filter()</methodname> function."
+"you can apply a filter to a chooser widget with the <methodname>FileChooser::"
+"add_filter()</methodname> function."
 msgstr ""
 "Después de que haya creado y configurado el filtro para seleccionar sólo los "
 "elementos que quiera, podrá aplicárselo a un widget selector con la función "
 "<methodname>RecentChooser::add_filter()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:5600(title)
-msgid "Plugs and Sockets"
-msgstr "«Plugs» y «Sockets»"
-
-#: C/gtkmm-tutorial-in.xml:5602(title) C/gtkmm-tutorial-in.xml:5759(title)
-msgid "Overview"
-msgstr "Vista general"
-
-#: C/gtkmm-tutorial-in.xml:5603(para)
-msgid ""
-"From time to time, it may be useful to be able to embed a widget from "
-"another application within your application. <application>gtkmm</"
-"application> allows you to do this with the <classname>Gtk::Socket</"
-"classname> and <classname>Gtk::Plug</classname> classes. It is not "
-"anticipated that very many applications will need this functionality, but in "
-"the rare case that you need to display a widget that is running in a "
-"completely different process, these classes can be very helpful."
-msgstr ""
-"De vez en cuando, puede ser útil incrustar un widget de otra aplicación "
-"dentro de la suya. <application>gtkmm</application> le permite hacer esto "
-"con las clases <classname>Gtk::Socket</classname> y <classname>Gtk::Plug</"
-"classname>. Se anticipa que no muchas aplicaciones necesitan esta "
-"funcionalidad, pero en los raros casos en los que necesite mostrar un widget "
-"que esté ejecutándose en un proceso completamente diferente, estas clases "
-"pueden resultar muy útiles."
-
-#: C/gtkmm-tutorial-in.xml:5612(para)
-msgid ""
-"The communication between a <classname>Socket</classname> and a "
-"<classname>Plug</classname> follows the XEmbed protocol. This protocol has "
-"also been implemented in other toolkits (e.g. Qt), which allows the same "
-"level of integration when embedding a Qt widget in GTK+ or vice versa."
-msgstr ""
-"La comunicación entre un <classname>Socket</classname> y un <classname>Plug</"
-"classname> sigue el protocolo «XEmbed». Este protocolo, que también se ha "
-"implementado en otros kits de herramientas (por ejemplo, «Qt»), permite el "
-"mismo nivel de integración cuando se incrusta un widget Qt en uno GTK+ o "
-"viceversa."
-
-#: C/gtkmm-tutorial-in.xml:5618(para)
-msgid ""
-"The way that <classname>Sockets</classname> and <classname>Plugs</classname> "
-"work together is through their window ids. Both a <classname>Socket</"
-"classname> and a <classname>Plug</classname> have IDs that can be retrieved "
-"with their <methodname>get_id()</methodname> member functions. The use of "
-"these IDs will be explained below in <xref linkend=\"sec-connecting-plugs-"
-"sockets\"/>."
-msgstr ""
-"La manera en la que los <classname>Sockets</classname> y los "
-"<classname>Plugs</classname> trabajan juntos es a través de sus ID de "
-"ventana. Tanto un <classname>Socket</classname> como un <classname>Plug</"
-"classname> tienen ID que pueden obtenerse con sus funciones miembro "
-"<methodname>get_id()</methodname>. El uso de estos ID se explicará a "
-"continuación en la <xref linkend=\"sec-connecting-plugs-sockets\"/>."
-
-#: C/gtkmm-tutorial-in.xml:5627(title)
-msgid "Sockets"
-msgstr "«Sockets»"
-
-#: C/gtkmm-tutorial-in.xml:5628(para)
-msgid ""
-"A <classname>Socket</classname> is a special kind of container widget that "
-"provides the ability to embed widgets from one process into another process "
-"in a way that is transparent to the user."
-msgstr ""
-"Un <classname>Socket</classname> es un tipo especial de widget contenedor "
-"que ofrece la posibilidad de incorporar widgets de un proceso en otro "
-"proceso de manera que sea transparente para el usuario."
-
-#: C/gtkmm-tutorial-in.xml:5635(title)
-msgid "Plugs"
-msgstr "«Plugs»"
-
-#: C/gtkmm-tutorial-in.xml:5636(para)
-msgid ""
-"A <classname>Plug</classname> is a special kind of Window that can be "
-"plugged into a <classname>Socket</classname>. Besides the normal properties "
-"and methods of <classname>Gtk::Window</classname>, a <classname>Plug</"
-"classname> provides a constructor that takes the ID of a <classname>Socket</"
-"classname>, which will automatically embed the <classname>Plug</classname> "
-"into the <classname>Socket</classname> that matches that ID."
-msgstr ""
-"Un <classname>Plug</classname> es un tipo especial de ventana que se puede "
-"conectar a un <classname>Socket</classname>. Además de las propiedades y los "
-"métodos normales de <classname>Gtk::Window</classname>, un <classname>Plug</"
-"classname> proporciona un constructor que toma el ID de un "
-"<classname>Socket</classname>, lo que automáticamente incrusta el "
-"<classname>Plug</classname> en el <classname>Socket</classname> que coincide "
-"con el ID."
-
-#: C/gtkmm-tutorial-in.xml:5645(para)
-msgid ""
-"Since a <classname>Plug</classname> is just a special type of "
-"<classname>Gtk::Window</classname> class, you can add containers or widgets "
-"to it like you would to any other window."
-msgstr ""
-"Dado que un <classname>Plug</classname> es sólo un tipo especial de la clase "
-"<classname>Gtk::Window</classname>, puede añadirle contenedores o widgets "
-"como si fuera cualquier otra ventana."
-
-#: C/gtkmm-tutorial-in.xml:5652(title)
-msgid "Connecting Plugs and Sockets"
-msgstr "Conectar «plugs» y «sockets»"
-
-#: C/gtkmm-tutorial-in.xml:5653(para)
-msgid ""
-"After a <classname>Socket</classname> or <classname>Plug</classname> object "
-"is realized, you can obtain its ID with its <methodname>get_id()</"
-"methodname> function. This ID can then be shared with other processes so "
-"that other processes know how to connect to each other."
-msgstr ""
-"Luego de que se crea un objeto <classname>Socket</classname> o "
-"<classname>Plug</classname>, puede obtener su ID con su función "
-"<methodname>get_id()</methodname>. Este ID puede entonces compartirse con "
-"otros procesos para que estos sepan cómo conectarse entre sí."
-
-#: C/gtkmm-tutorial-in.xml:5664(para)
-msgid ""
-"Create a <classname>Socket</classname> object in one process and pass the ID "
-"of that <classname>Socket</classname> to another process so that it can "
-"create a <classname>Plug</classname> object by specifying the given "
-"<classname>Socket</classname> ID in its constructor. There is no way to "
-"assign a <classname>Plug</classname> to a particular <classname>Socket</"
-"classname> after creation, so you must pass the <classname>Socket</"
-"classname> ID to the <classname>Plug</classname>'s constructor."
-msgstr ""
-"Cree un objeto <classname>Socket</classname> en un proceso y pásele el ID de "
-"ese <classname>Socket</classname> a otro proceso para que pueda crear un "
-"objeto <classname>Plug</classname> mediante la especificación del ID del "
-"<classname>Socket</classname> dado en su constructor. No hay manera de "
-"asignar un <classname>Plug</classname> a un <classname>Socket</classname> "
-"particular después de su creación, por lo que le debe pasar el ID del "
-"<classname>Socket</classname> al constructor del <classname>Plug</classname>."
-
-#: C/gtkmm-tutorial-in.xml:5677(para)
-msgid ""
-"Create a <classname>Plug</classname> independantly from any particular "
-"<classname>Socket</classname> and pass the ID of the <classname>Plug</"
-"classname> to other processes that need to use it. The ID of the "
-"<classname>Plug</classname> can be associated with a particular "
-"<classname>Socket</classname> object using the <methodname>Socket::add_id()</"
-"methodname> function. This is the approach used in the example below."
-msgstr ""
-"Cree un <classname>Plug</classname> independiente de cualquier "
-"<classname>Socket</classname> particular y pásele el ID del <classname>Plug</"
-"classname> a otros procesos que necesiten usarlo. El ID del <classname>Plug</"
-"classname> puede asociarse con un objeto <classname>Socket</classname> "
-"particular usando la función <methodname>Socket::add_id()</methodname>. Este "
-"es el enfoque utilizado en el siguiente ejemplo."
-
-#: C/gtkmm-tutorial-in.xml:5660(para)
-msgid "There are two basic strategies that can be used: <placeholder-1/>"
-msgstr "Existen dos estrategias básicas que pueden usarse: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:5692(title)
-msgid "Plugs and Sockets Example"
-msgstr "Ejemplo de «Plugs» y «Sockets»."
-
-#: C/gtkmm-tutorial-in.xml:5693(para)
-msgid ""
-"The following is a simple example of using sockets and plugs. The method of "
-"communication between processes is deliberately kept very simple: The "
-"<classname>Plug</classname> writes its ID out to a text file named "
-"<filename>plug.id</filename> and the process with the socket reads the ID "
-"from this file. In a real program, you may want to use a more sophisticated "
-"method of inter-process communication."
-msgstr ""
-"El siguiente es un ejemplo simple del uso de «sockets» y «plugs». El método "
-"de comunicación entre los procesos se mantiene simple deliberadamente: el "
-"<classname>Plug</classname> escribe su ID en un archivo de texto llamado "
-"<filename>plug.id</filename> y el proceso con el «socket» lee el ID de este "
-"archivo. En un programa real, probablemente quiera usar un método más "
-"sofisticado de comunicación entre procesos."
-
-#: C/gtkmm-tutorial-in.xml:5702(para)
-msgid ""
-"This example creates two executable programs: <filename>socket</filename> "
-"and <filename>plug</filename>. The idea is that <filename>socket</filename> "
-"has an application window that will embed a widget from the <filename>plug</"
-"filename> program. The way this example is designed, <filename>plug</"
-"filename> must be running first before starting <filename>socket</filename>. "
-"To see the example in action, execute the following commands in order from "
-"within the example directory:"
-msgstr ""
-"Este ejemplo crea dos programas ejecutables: <filename>socket</filename> y "
-"<filename>plug</filename>. La idea es que <filename>socket</filename> tenga "
-"una ventana de aplicación en la que se empotre un widget del programa "
-"<filename>plug</filename>. Dada la manera en la que este ejemplo está "
-"diseñado, <filename>plug</filename> debe estar en ejecución antes de iniciar "
-"<filename>socket</filename>. Para ver el ejemplo en acción, ejecute los "
-"siguientes comandos en orden desde la carpeta de ejemplos:"
-
-#: C/gtkmm-tutorial-in.xml:5711(para)
-msgid ""
-"Start the <filename>plug</filename> program and send it to the background "
-"(or just use a different terminal)."
-msgstr ""
-"Ejecute el programa <filename>plug</filename> y envíelo a segundo plano (o "
-"simplemente use otra terminal)."
-
-#: C/gtkmm-tutorial-in.xml:5715(screen)
-#, no-wrap
-msgid "$ ./plug &amp;"
-msgstr "$ ./plug &amp;"
-
-#: C/gtkmm-tutorial-in.xml:5716(para)
-msgid "After which you should see something like the following:"
-msgstr "Después de esto debería ver algo así:"
-
-#: C/gtkmm-tutorial-in.xml:5719(screen)
-#, no-wrap
-msgid "The window ID is: 69206019"
-msgstr "The window ID is: 69206019"
-
-#: C/gtkmm-tutorial-in.xml:5720(para)
-msgid "Then start the <filename>socket</filename> program:"
-msgstr "Entonces, ejecute el programa <filename>socket</filename>:"
-
-#: C/gtkmm-tutorial-in.xml:5721(screen)
-#, no-wrap
-msgid "$ ./socket"
-msgstr "$ ./socket"
-
-#: C/gtkmm-tutorial-in.xml:5722(para)
-msgid ""
-"After starting <filename>socket</filename>, you should see the following "
-"output in the terminal:"
-msgstr ""
-"Después de haber ejecutado <filename>socket</filename>, debería ver la "
-"siguiente salida en la terminal:"
-
-#: C/gtkmm-tutorial-in.xml:5726(screen)
-#, no-wrap
-msgid ""
-"I've been embedded.\n"
-"A plug was added"
-msgstr ""
-"I've been embedded.\n"
-"A plug was added"
-
-#: C/gtkmm-tutorial-in.xml:5728(para)
-msgid ""
-"The first line of output is from <filename>plug</filename>, after it has "
-"been notified that it has been embedded inside of a <classname>Socket</"
-"classname>. The second line was emitted by <filename>socket</filename> in "
-"response to its <methodname>plug_added</methodname> signal. If everything "
-"was done as described above, the <filename>socket</filename> window should "
-"look roughly like the following:"
-msgstr ""
-"La primera línea de la salida es de <filename>plug</filename>, después de "
-"que se le ha notificado que se empotró en un <classname>Socket</classname>. "
-"La segunda línea la emite <filename>socket</filename> en respuesta a su "
-"señal <methodname>plug_added</methodname>. Si todo se realizó como se "
-"describió anteriormente, la ventana <filename>socket</filename> debería "
-"verse más o menos así:"
-
-#: C/gtkmm-tutorial-in.xml:5740(para)
-msgid ""
-"If for some reason the <classname>Socket</classname> couldn't attach the "
-"<classname>Plug</classname>, the window would look something like this:"
-msgstr ""
-"Si, por alguna razón, el <classname>Socket</classname> no pudiera adjuntar "
-"el <classname>Plug</classname>, la ventana se vería más o menos así:"
-
-#: C/gtkmm-tutorial-in.xml:5751(title)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:5513
 msgid "Keyboard Events"
 msgstr "Eventos de teclado"
 
-#: C/gtkmm-tutorial-in.xml:5752(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:5514
 msgid ""
 "X events differ in some ways from other signals. These differences are "
 "described in the <link linkend=\"sec-xeventsignals\">X Event signals</link> "
@@ -10057,7 +12772,13 @@ msgstr ""
 "eventos de X</link> en el apéndice. Aquí se usarán los eventos del teclado "
 "para mostrar cómo pueden usarse en un programa los eventos de X."
 
-#: C/gtkmm-tutorial-in.xml:5760(para)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5521
+msgid "Overview"
+msgstr "Vista general"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5522
 msgid ""
 "Whenever you press or release a key, an event is emitted. You can connect a "
 "signal handler to handle such events."
@@ -10065,28 +12786,39 @@ msgstr ""
 "Siempre que presiona o suelta una tecla, se emite un evento. Puede conectar "
 "un gestor de señales para manejar tales eventos."
 
-#: C/gtkmm-tutorial-in.xml:5764(para)
-msgid ""
-"To receive the keyboard events, you must first call the <methodname>Gtk::"
-"Widget::add_events()</methodname> function with a bit mask of the events "
-"you're interested in. The event signal handler will receive an argument that "
-"depends on the type of event. For keyboard events it's a <type>GdkEventKey*</"
-"type>. As discribed in the <link linkend=\"sec-xeventsignals\">appendix</"
-"link>, the event signal handler returns a <type>bool</type> value, to "
-"indicate that the signal is fully handled (<literal>true</literal>) or allow "
-"event propagation (<literal>false</literal>)."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5526
+#, fuzzy
+#| msgid ""
+#| "To receive the keyboard events, you must first call the <methodname>Gtk::"
+#| "Widget::add_events()</methodname> function with a bit mask of the events "
+#| "you're interested in. The event signal handler will receive an argument "
+#| "that depends on the type of event. For keyboard events it's a "
+#| "<type>GdkEventKey*</type>. As discribed in the <link linkend=\"sec-"
+#| "xeventsignals\">appendix</link>, the event signal handler returns a "
+#| "<type>bool</type> value, to indicate that the signal is fully handled "
+#| "(<literal>true</literal>) or allow event propagation (<literal>false</"
+#| "literal>)."
+msgid ""
+"The event signal handler will receive an argument that depends on the type "
+"of event. For keyboard events it's a <type>GdkEventKey*</type>. As discribed "
+"in the <link linkend=\"sec-xeventsignals\">appendix</link>, the event signal "
+"handler returns a <type>bool</type> value, to indicate that the signal is "
+"fully handled (<literal>true</literal>) or allow event propagation "
+"(<literal>false</literal>)."
 msgstr ""
 "Para recibir los eventos del teclado, primero debe llamar a la función "
 "<methodname>Gtk::Widget::add_events()</methodname> con una máscara de bits "
-"de los eventos en los que esté interesado. El gestor de señales de "
-"eventos recibirá un argumento que dependerá del tipo de evento. Para eventos "
-"del teclado, es un <type>GdkEventKey*</type>. Como de describe en el <link "
+"de los eventos en los que esté interesado. El gestor de señales de eventos "
+"recibirá un argumento que dependerá del tipo de evento. Para eventos del "
+"teclado, es un <type>GdkEventKey*</type>. Como de describe en el <link "
 "linkend=\"sec-xeventsignals\">apéndice</link>, el gestor de señales de "
 "eventos devuelve un valor <type>bool</type> para indicar que se maneja "
 "completamente la señal (<literal>true</literal>) o permitir la propagación "
 "del evento (<literal>false</literal>)."
 
-#: C/gtkmm-tutorial-in.xml:5775(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5535
 msgid ""
 "To determine which key was pressed or released, you read the value of "
 "<varname>GdkEventKey::keyval</varname> and compare it with a constant in the "
@@ -10100,8 +12832,36 @@ msgstr ""
 "estados de las teclas modificadoras (mayús, control, etc.) están disponibles "
 "como banderas de bits en <varname>GdkEventKey::state</varname>."
 
-#: C/gtkmm-tutorial-in.xml:5784(programlisting)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5542 C/index-in.docbook:8400
+#, fuzzy
+#| msgid "Here's a simple example: <placeholder-1/>"
+msgid "Here's a simple example:"
+msgstr "Un ejemplo sencillo: <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5545
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "bool on_key_press_or_release_event(GdkEventKey* event)\n"
+#| "{\n"
+#| "  if (event-&gt;type == GDK_KEY_PRESS &amp;&amp;\n"
+#| "    event-&gt;keyval == GDK_KEY_1 &amp;&amp;\n"
+#| "    (event-&gt;state &amp; (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_MOD1_MASK)) == GDK_MOD1_MASK)\n"
+#| "  {\n"
+#| "    handle_alt_1_press(); // GDK_MOD1_MASK is normally the Alt key\n"
+#| "    return true;\n"
+#| "  }\n"
+#| "  return false;\n"
+#| "}\n"
+#| "\n"
+#| "Gtk::Entry m_entry; // in a class definition\n"
+#| "\n"
+#| "// in the class constructor\n"
+#| "m_entry.signal_key_press_event().connect( sigc::ptr_fun(&amp;on_key_press_or_release_event) );\n"
+#| "m_entry.signal_key_release_event().connect( sigc::ptr_fun(&amp;on_key_press_or_release_event) );\n"
+#| "m_entry.add_events(Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);\n"
 msgid ""
 "\n"
 "bool on_key_press_or_release_event(GdkEventKey* event)\n"
@@ -10121,7 +12881,6 @@ msgid ""
 "// in the class constructor\n"
 "m_entry.signal_key_press_event().connect( sigc::ptr_fun(&amp;on_key_press_or_release_event) );\n"
 "m_entry.signal_key_release_event().connect( sigc::ptr_fun(&amp;on_key_press_or_release_event) );\n"
-"m_entry.add_events(Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);\n"
 msgstr ""
 "\n"
 "bool on_key_press_or_release_event(GdkEventKey* event)\n"
@@ -10141,13 +12900,9 @@ msgstr ""
 "// in the class constructor\n"
 "m_entry.signal_key_press_event().connect( sigc::ptr_fun(&amp;on_key_press_or_release_event) );\n"
 "m_entry.signal_key_release_event().connect( sigc::ptr_fun(&amp;on_key_press_or_release_event) );\n"
-"m_entry.add_events(Gdk::KEY_PRESS_MASK | Gdk::KEY_RELEASE_MASK);\n"
-
-#: C/gtkmm-tutorial-in.xml:5782(para) C/gtkmm-tutorial-in.xml:8087(para)
-msgid "Here's a simple example: <placeholder-1/>"
-msgstr "Un ejemplo sencillo: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:5808(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5567
 msgid ""
 "In this example there are three keyboard shortcuts: <keycap>Alt</keycap>"
 "+<keycap>1</keycap> selects the first radio button, <keycap>Alt</keycap>"
@@ -10159,20 +12914,32 @@ msgstr ""
 "En este ejemplo hay tres combinaciones de teclas: <keycap>Alt</keycap>"
 "+<keycap>1</keycap> selecciona el primer botón de radio, <keycap>Alt</keycap>"
 "+<keycap>2</keycap> selecciona el segundo, y la tecla <keycap>Escape</"
-"keycap> oculta (cierra) la ventana. El gestor de eventos predeterminado "
-"se sobrecarga, como se describe en la sección <link linkend=\"sec-overriding-"
+"keycap> oculta (cierra) la ventana. El gestor de eventos predeterminado se "
+"sobrecarga, como se describe en la sección <link linkend=\"sec-overriding-"
 "default-signal-handlers\">Sobrecargar los gestores de señales "
 "predeterminados</link> en el apéndice."
 
-#: C/gtkmm-tutorial-in.xml:5819(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:5578
 msgid "Keyboard Events - Simple"
 msgstr "Eventos del teclado: simple"
 
-#: C/gtkmm-tutorial-in.xml:5830(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5584
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/keyboard_events/simple/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/keyboard_events/simple/\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5589
 msgid "Event Propagation"
 msgstr "Propagación de eventos"
 
-#: C/gtkmm-tutorial-in.xml:5831(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5590
 msgid ""
 "Event propagation means that, when an event is emitted on a particular "
 "widget, it can be passed to its parent widget (and that widget can pass it "
@@ -10181,10 +12948,11 @@ msgid ""
 msgstr ""
 "Propagación de eventos significa que, cuando se emite un evento en un widget "
 "particular, puede pasarse a su widget padre (y ese widget puede pasárselo a "
-"su padre, y así sucesivamente) y, si el padre tiene un gestor de eventos, "
-"se llamará."
+"su padre, y así sucesivamente) y, si el padre tiene un gestor de eventos, se "
+"llamará."
 
-#: C/gtkmm-tutorial-in.xml:5837(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5596
 msgid ""
 "Contrary to other events, keyboard events are first sent to the toplevel "
 "window (<classname>Gtk::Window</classname>), where it will be checked for "
@@ -10200,7 +12968,8 @@ msgstr ""
 "teclado). Después de esto (y asumuiendo que no se manejó el evento), se "
 "envía al widget que tiene el foco, y la propagación comienza desde allí."
 
-#: C/gtkmm-tutorial-in.xml:5845(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5604
 msgid ""
 "The event will propagate until it reaches the top-level widget, or until you "
 "stop the propagation by returning <literal>true</literal> from an event "
@@ -10210,7 +12979,8 @@ msgstr ""
 "que detenga la propagación devolviendo <literal>true</literal> desde un "
 "gestor de eventos."
 
-#: C/gtkmm-tutorial-in.xml:5850(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5609
 msgid ""
 "Notice, that after canceling an event, no other function will be called "
 "(even if it is from the same widget)."
@@ -10218,7 +12988,8 @@ msgstr ""
 "Tenga en cuenta que, después de haber cancelado un evento, no se llamará a "
 "ninguna otra función (incluso si es del mismo widget)."
 
-#: C/gtkmm-tutorial-in.xml:5857(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5616
 msgid ""
 "In this example there are three event handlers that are called after "
 "<classname>Gtk::Window</classname>'s default event handler, one in the "
@@ -10226,11 +12997,12 @@ msgid ""
 "classname> and one in the <classname>Gtk::Window</classname>."
 msgstr ""
 "En este ejemplo hay tres gestores de eventos que se llaman después del "
-"gestor de eventos predeterminado de <classname>Gtk::Window</classname>, "
-"uno en la <classname>Gtk::Entry</classname>, uno en el <classname>Gtk::Grid</"
+"gestor de eventos predeterminado de <classname>Gtk::Window</classname>, uno "
+"en la <classname>Gtk::Entry</classname>, uno en el <classname>Gtk::Grid</"
 "classname> y uno en la <classname>Gtk::Window</classname>."
 
-#: C/gtkmm-tutorial-in.xml:5863(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5622
 msgid ""
 "In the <classname>Gtk::Window</classname>, we have also the default handler "
 "overridden (<methodname>on_key_release_event()</methodname>), and another "
@@ -10238,11 +13010,12 @@ msgid ""
 "(<methodname>windowKeyReleaseBefore()</methodname>)."
 msgstr ""
 "En la <classname>Gtk::Window</classname>, también está la sobrecarga del "
-"gestor predeterminado (<methodname>on_key_release_event()</methodname>), "
-"y otro gestor que se llama antes del predeterminado "
+"gestor predeterminado (<methodname>on_key_release_event()</methodname>), y "
+"otro gestor que se llama antes del predeterminado "
 "(<methodname>windowKeyReleaseBefore()</methodname>)."
 
-#: C/gtkmm-tutorial-in.xml:5869(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5628
 msgid ""
 "The purpose of this example is to show the steps the event takes when it is "
 "emitted."
@@ -10250,7 +13023,8 @@ msgstr ""
 "El propósito de este ejemplo es mostrar los pasos que el evento sigue cuando "
 "se emite."
 
-#: C/gtkmm-tutorial-in.xml:5872(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5631
 msgid ""
 "When you write in the entry, a key release event will be emitted, which will "
 "go first to the toplevel window (<classname>Gtk::Window</classname>), since "
@@ -10265,29 +13039,42 @@ msgid ""
 msgstr ""
 "Cuando escriba en el «entry», se emitirá un evento de liberación de tecla, "
 "que primero irá a la ventana superior (<classname>Gtk::Window</classname>), "
-"dado que hay un gestor de eventos establecido para que se llame antes, y "
-"ese es el que se llama primero (<methodname>windowKeyReleaseBefore()</"
-"methodname>). Después se llama al gestor de eventos predeterminado (al "
-"que se ha sobrecargado), y luego se envía el evento al widget que tiene el "
-"foco, el <classname>Entry</classname> en el ejemplo y, dependiendo de si lo "
+"dado que hay un gestor de eventos establecido para que se llame antes, y ese "
+"es el que se llama primero (<methodname>windowKeyReleaseBefore()</"
+"methodname>). Después se llama al gestor de eventos predeterminado (al que "
+"se ha sobrecargado), y luego se envía el evento al widget que tiene el foco, "
+"el <classname>Entry</classname> en el ejemplo y, dependiendo de si lo "
 "dejamos propagar o no, puede alcanzar los gestores de eventos del "
 "<classname>Grid</classname> y la <classname>Window</classname>. Si se "
 "propaga, el texto que esté escribiendo aparecerá en el <classname>Label</"
 "classname> arriba del <classname>Entry</classname>."
 
-#: C/gtkmm-tutorial-in.xml:5887(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:5646
 msgid "Keyboard Events - Event Propagation"
 msgstr "Eventos de teclado: propagación de eventos"
 
-#: C/gtkmm-tutorial-in.xml:5899(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5652
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/keyboard_events/propagation/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/keyboard_events/propagation/\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:5658
 msgid "Timeouts, I/O and Idle Functions"
 msgstr "Tiempos de espera, E/S y funciones en espera"
 
-#: C/gtkmm-tutorial-in.xml:5902(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5661
 msgid "Timeouts"
 msgstr "Tiempos de espera"
 
-#: C/gtkmm-tutorial-in.xml:5904(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5663
 msgid ""
 "You may be wondering how to make <application>gtkmm</application> do useful "
 "work while it's idling along. Happily, you have several options. Using the "
@@ -10299,18 +13086,24 @@ msgstr ""
 "opciones. Usando los siguientes métodos puede crear un método de tiempo de "
 "espera que se llamará cada una cierta cantidad de milisegundos."
 
-#: C/gtkmm-tutorial-in.xml:5911(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5669
+#, fuzzy, no-wrap
+#| msgid ""
+#| "\n"
+#| "sigc::connection Glib::SignalTimeout::connect(const sigc::slot&lt;bool&gt;&amp; slot,\n"
+#| "                                      unsigned int interval, int priority = Glib::PRIORITY_DEFAULT);\n"
 msgid ""
 "\n"
-"sigc::connection Glib::SignalTimeout::connect(const sigc::slot&lt;bool&gt;&amp; slot,\n"
+"sigc::connection Glib::SignalTimeout::connect(const sigc::slot&lt;bool()&gt;&amp; slot,\n"
 "                                      unsigned int interval, int priority = Glib::PRIORITY_DEFAULT);\n"
 msgstr ""
 "\n"
 "sigc::connection Glib::SignalTimeout::connect(const sigc::slot&lt;bool&gt;&amp; slot,\n"
 "                                      unsigned int interval, int priority = Glib::PRIORITY_DEFAULT);\n"
 
-#: C/gtkmm-tutorial-in.xml:5917(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5674
 msgid ""
 "The first argument is a <classname>slot</classname> you wish to have called "
 "when the timeout occurs. The second argument is the number of milliseconds "
@@ -10324,7 +13117,8 @@ msgstr ""
 "<classname>sigc::connection</classname> que podrá usar para desactivar la "
 "conexión utilizando su método <methodname>disconnect()</methodname>:"
 
-#: C/gtkmm-tutorial-in.xml:5927(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5682
 #, no-wrap
 msgid ""
 "\n"
@@ -10333,7 +13127,30 @@ msgstr ""
 "\n"
 "my_connection.disconnect();\n"
 
-#: C/gtkmm-tutorial-in.xml:5939(programlisting)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5686
+#, fuzzy
+#| msgid ""
+#| "Another way of destroying the connection is your signal handler. It has "
+#| "to be of the type <classname>sigc::slot&lt;bool&gt;</classname>. As you "
+#| "see from the definition your signal handler has to return a value of the "
+#| "type <literal>bool</literal>. A definition of a sample method might look "
+#| "like this: <placeholder-1/>"
+msgid ""
+"Another way of destroying the connection is your signal handler. It has to "
+"be of the type <classname>sigc::slot&lt;bool()&gt;</classname>. As you see "
+"from the definition your signal handler has to return a value of the type "
+"<literal>bool</literal>. A definition of a sample method might look like "
+"this:"
+msgstr ""
+"Otra manera de destruir la conexión es su gestor de señales. Tiene que ser "
+"del tipo <classname>sigc::slot&lt;bool&gt;</classname>. Como puede observar "
+"en la definición, su gestor de señales tiene que devolver un valor del tipo "
+"<literal>bool</literal>. Una definición de un método de ejemplo podría verse "
+"así: <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5694
 #, no-wrap
 msgid ""
 "\n"
@@ -10342,40 +13159,38 @@ msgstr ""
 "\n"
 "bool MyCallback() { std::cout &lt;&lt; \"Hello World!\\n\" &lt;&lt; std::endl; return true; }\n"
 
-#: C/gtkmm-tutorial-in.xml:5932(para)
-msgid ""
-"Another way of destroying the connection is your signal handler. It has to "
-"be of the type <classname>sigc::slot&lt;bool&gt;</classname>. As you see "
-"from the definition your signal handler has to return a value of the type "
-"<literal>bool</literal>. A definition of a sample method might look like "
-"this: <placeholder-1/>"
-msgstr ""
-"Otra manera de destruir la conexión es su gestor de señales. Tiene que "
-"ser del tipo <classname>sigc::slot&lt;bool&gt;</classname>. Como puede "
-"observar en la definición, su gestor de señales tiene que devolver un "
-"valor del tipo <literal>bool</literal>. Una definición de un método de "
-"ejemplo podría verse así: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:5945(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5698
 msgid ""
 "You can stop the timeout method by returning <literal>false</literal> from "
 "your signal handler. Therefore, if you want your method to be called "
 "repeatedly, it should return <literal>true</literal>."
 msgstr ""
 "Puede detener el método del período de espera mediante la devolución de "
-"<literal>false</literal> desde su gestor de señales. Por lo tanto, si "
-"quiere que su método se llame repetidamente, debe devolver <literal>true</"
-"literal>."
+"<literal>false</literal> desde su gestor de señales. Por lo tanto, si quiere "
+"que su método se llame repetidamente, debe devolver <literal>true</literal>."
 
-#: C/gtkmm-tutorial-in.xml:5951(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5704
 msgid "Here's an example of this technique:"
 msgstr "Un ejemplo de esta técnica:"
 
-#: C/gtkmm-tutorial-in.xml:5960(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5708
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/timeout/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/timeout/\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5713
 msgid "Monitoring I/O"
 msgstr "Monitorizar E/S"
 
-#: C/gtkmm-tutorial-in.xml:5962(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5715
 msgid ""
 "A nifty feature of Glib (one of the libraries underlying <application>gtkmm</"
 "application>) is the ability to have it check for data on a file descriptor "
@@ -10387,12 +13202,18 @@ msgstr ""
 "un descriptor de archivos. Esto es especialmente útil para aplicaciones de "
 "red. Se usa el siguiente método para lograrlo:"
 
-#: C/gtkmm-tutorial-in.xml:5970(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5722
+#, fuzzy, no-wrap
+#| msgid ""
+#| "\n"
+#| "sigc::connection Glib::SignalIO::connect(const sigc::slot&lt;bool,Glib::IOCondition&gt;&amp; slot,\n"
+#| "                                 int fd, Glib::IOCondition condition,\n"
+#| "                                 int priority = Glib::PRIORITY_DEFAULT);\n"
 msgid ""
 "\n"
-"sigc::connection Glib::SignalIO::connect(const sigc::slot&lt;bool,Glib::IOCondition&gt;&amp; slot,\n"
-"                                 int fd, Glib::IOCondition condition,\n"
+"sigc::connection Glib::SignalIO::connect(const sigc::slot&lt;bool(Glib::IOCondition)&gt;&amp; slot,\n"
+"                                 Glib::PollFD::fd_t fd, Glib::IOCondition condition,\n"
 "                                 int priority = Glib::PRIORITY_DEFAULT);\n"
 msgstr ""
 "\n"
@@ -10400,7 +13221,8 @@ msgstr ""
 "                                 int fd, Glib::IOCondition condition,\n"
 "                                 int priority = Glib::PRIORITY_DEFAULT);\n"
 
-#: C/gtkmm-tutorial-in.xml:5977(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5728
 #, fuzzy
 #| msgid ""
 #| "The first argument is a slot you wish to have called when then the "
@@ -10418,7 +13240,8 @@ msgstr ""
 "que especifica usando el segundo argumento. El tercer argumento puede ser "
 "uno o más (usando <literal>|</literal>) de:"
 
-#: C/gtkmm-tutorial-in.xml:5987(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5738
 msgid ""
 "Glib::IO_IN - Call your method when there is data ready for reading on your "
 "file descriptor."
@@ -10426,7 +13249,8 @@ msgstr ""
 "Glib::IO_IN: llame a su método cuando haya datos listos para leerse en su "
 "descriptor de archivos."
 
-#: C/gtkmm-tutorial-in.xml:5995(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5746
 msgid ""
 "Glib::IO_OUT - Call your method when the file descriptor is ready for "
 "writing."
@@ -10434,7 +13258,8 @@ msgstr ""
 "Glib::IO_OUT: llame a su método cuando el descriptor de archivos esté listo "
 "para la escritura."
 
-#: C/gtkmm-tutorial-in.xml:6003(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5754
 msgid ""
 "Glib::IO_PRI - Call your method when the file descriptor has urgent data to "
 "be read."
@@ -10442,7 +13267,8 @@ msgstr ""
 "Glib::IO_PRI: llame a su método cuando el descriptor de archivos tenga datos "
 "urgentes para leer."
 
-#: C/gtkmm-tutorial-in.xml:6010(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5761
 msgid ""
 "Glib::IO_ERR - Call your method when an error has occurred on the file "
 "descriptor."
@@ -10450,7 +13276,8 @@ msgstr ""
 "Glib::IO_ERR: llame a su método cuando haya ocurrido un error en el "
 "descriptor de archivos."
 
-#: C/gtkmm-tutorial-in.xml:6017(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:5768
 msgid ""
 "Glib::IO_HUP - Call your method when hung up (the connection has been broken "
 "usually for pipes and sockets)."
@@ -10458,7 +13285,8 @@ msgstr ""
 "Glib::IO_HUP: llame a su método cuando se cuelgue (la conexión se ha roto, "
 "normalmente por tuberías y «sockets»)."
 
-#: C/gtkmm-tutorial-in.xml:6024(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5775
 msgid ""
 "The return value is a <classname>sigc::connection</classname> that may be "
 "used to stop monitoring this file descriptor using its "
@@ -10470,7 +13298,8 @@ msgstr ""
 "método <methodname>disconnect()</methodname>. El gestor de señales "
 "<parameter>slot</parameter> debe declararse de la siguiente manera:"
 
-#: C/gtkmm-tutorial-in.xml:6031(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5781
 #, no-wrap
 msgid ""
 "\n"
@@ -10479,7 +13308,8 @@ msgstr ""
 "\n"
 "bool input_callback(Glib::IOCondition condition);\n"
 
-#: C/gtkmm-tutorial-in.xml:6036(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5785
 msgid ""
 "where <parameter>condition</parameter> is as specified above. As usual the "
 "slot is created with <function>sigc::mem_fun()</function> (for a member "
@@ -10491,7 +13321,8 @@ msgstr ""
 "mem_fun()</function> (para un método miembro de un objeto), o "
 "<function>sigc::ptr_fun()</function> (para una función)."
 
-#: C/gtkmm-tutorial-in.xml:6043(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5792
 msgid ""
 "A little example follows. To use the example just execute it from a "
 "terminal; it doesn't create a window. It will create a pipe named "
@@ -10507,11 +13338,22 @@ msgstr ""
 "literal>. El ejemplo imprimirá cada línea que introduzca hasta que ejecute "
 "<literal>echo \"Q\" &gt; testfifo</literal>."
 
-#: C/gtkmm-tutorial-in.xml:6057(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5801
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/input/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/input/\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:5806
 msgid "Idle Functions"
 msgstr "Funciones en espera"
 
-#: C/gtkmm-tutorial-in.xml:6059(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5808
 msgid ""
 "If you want to specify a method that gets called when nothing else is "
 "happening, use the following:"
@@ -10519,18 +13361,24 @@ msgstr ""
 "Si quiere especificar un método que se llame cuando no está sucediendo nada "
 "más, use lo siguiente:"
 
-#: C/gtkmm-tutorial-in.xml:6064(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5812
+#, fuzzy, no-wrap
+#| msgid ""
+#| "\n"
+#| "sigc::connection  Glib::SignalIdle::connect(const sigc::slot&lt;bool&gt;&amp; slot,\n"
+#| "                                    int priority = Glib::PRIORITY_DEFAULT_IDLE);\n"
 msgid ""
 "\n"
-"sigc::connection  Glib::SignalIdle::connect(const sigc::slot&lt;bool&gt;&amp; slot,\n"
+"sigc::connection  Glib::SignalIdle::connect(const sigc::slot&lt;bool()&gt;&amp; slot,\n"
 "                                    int priority = Glib::PRIORITY_DEFAULT_IDLE);\n"
 msgstr ""
 "\n"
 "sigc::connection  Glib::SignalIdle::connect(const sigc::slot&lt;bool&gt;&amp; slot,\n"
 "                                    int priority = Glib::PRIORITY_DEFAULT_IDLE);\n"
 
-#: C/gtkmm-tutorial-in.xml:6070(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5817
 msgid ""
 "This causes <application>gtkmm</application> to call the specified method "
 "whenever nothing else is happening. You can add a priority (lower numbers "
@@ -10547,7 +13395,8 @@ msgstr ""
 "devolviendo <literal>false</literal> en el gestor de señales, que debe "
 "declararse como se indica a continuación:"
 
-#: C/gtkmm-tutorial-in.xml:6080(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:5826
 #, no-wrap
 msgid ""
 "\n"
@@ -10556,7 +13405,8 @@ msgstr ""
 "\n"
 "bool idleFunc();\n"
 
-#: C/gtkmm-tutorial-in.xml:6085(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5830
 msgid ""
 "Since this is very similar to the methods above this explanation should be "
 "sufficient to understand what's going on. However, here's a little example:"
@@ -10565,7 +13415,17 @@ msgstr ""
 "explicación es suficiente para entender lo que sucede. Sin embargo, aquí hay "
 "un pequeño ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:6092(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5835
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/idle/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/idle/\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5837
 msgid ""
 "This example points out the difference of idle and timeout methods a little. "
 "If you need methods that are called periodically, and speed is not very "
@@ -10579,7 +13439,8 @@ msgstr ""
 "Si quiere métodos que se llamen tan a menudo como sea posible (como calcular "
 "un fractal en segundo plano), entonces use métodos de espera."
 
-#: C/gtkmm-tutorial-in.xml:6100(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:5845
 msgid ""
 "Try executing the example and increasing the system load. The upper progress "
 "bar will increase steadily; the lower one will slow down."
@@ -10588,15 +13449,18 @@ msgstr ""
 "de progreso superior incrementará progresivamente, la inferior irá más "
 "lentamente."
 
-#: C/gtkmm-tutorial-in.xml:6110(title)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:5855
 msgid "Memory management"
 msgstr "Gestión de la memoria"
 
-#: C/gtkmm-tutorial-in.xml:6116(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:5861
 msgid "Normal C++ memory management"
 msgstr "Gestión normal de la memoria en C++"
 
-#: C/gtkmm-tutorial-in.xml:6118(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5863
 msgid ""
 "<application>gtkmm</application> allows the programmer to control the "
 "lifetime (that is, the construction and destruction) of any widget in the "
@@ -10619,15 +13483,18 @@ msgstr ""
 "permiten al programador usar un subconjunto de las características de "
 "gestión de memoria de C++."
 
-#: C/gtkmm-tutorial-in.xml:6130(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5875
 msgid "Here are some examples of normal C++ memory management:"
 msgstr "Algunos ejemplos de gestión normal de la memoria en C++:"
 
-#: C/gtkmm-tutorial-in.xml:6133(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:5878
 msgid "Class Scope widgets"
 msgstr "Widgets de alcance de clase"
 
-#: C/gtkmm-tutorial-in.xml:6135(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:5880
 msgid ""
 "If a programmer does not need dynamic memory allocation, automatic widgets "
 "in class scope may be used. One advantage of automatic widgets in class "
@@ -10640,7 +13507,8 @@ msgstr ""
 "en un único lugar. El programador no se arriesga a fugas de memoria por no "
 "<literal>eliminar</literal> un widget."
 
-#: C/gtkmm-tutorial-in.xml:6142(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:5887
 msgid ""
 "The primary disadvantage of using class scope widgets is revealing the class "
 "implementation rather than the class interface in the class header."
@@ -10648,7 +13516,8 @@ msgstr ""
 "La principal desventaja de usar widgets de alcance de clase es revelar la "
 "implementación de la clase en lugar de la interfaz en su cabecera."
 
-#: C/gtkmm-tutorial-in.xml:6148(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:5892
 #, no-wrap
 msgid ""
 "\n"
@@ -10671,11 +13540,31 @@ msgstr ""
 "  // will be destroyed when the Foo object is destroyed\n"
 "};\n"
 
-#: C/gtkmm-tutorial-in.xml:6162(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:5905
 msgid "Function scope widgets"
 msgstr "Widgets de alcance de función"
 
-#: C/gtkmm-tutorial-in.xml:6168(programlisting)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:5907
+#, fuzzy
+#| msgid ""
+#| "If a programmer does not need a class scope widget, a function scope "
+#| "widget may also be used. The advantages to function scope over class "
+#| "scope are the increased data hiding and reduced dependencies. "
+#| "<placeholder-1/>"
+msgid ""
+"If a programmer does not need a class scope widget, a function scope widget "
+"may also be used. The advantages to function scope over class scope are the "
+"increased data hiding and reduced dependencies."
+msgstr ""
+"Si un programador no necesita un widget de alcance de clase, un widget de "
+"alcance de función también puede usarse. Las ventajas del alcance de función "
+"sobre el alcance de clase consisten en una mayor cantidad de datos ocultos y "
+"menos dependencias. <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:5912
 #, no-wrap
 msgid ""
 "\n"
@@ -10694,46 +13583,57 @@ msgstr ""
 "  app-&gt;run();\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:6164(para)
-msgid ""
-"If a programmer does not need a class scope widget, a function scope widget "
-"may also be used. The advantages to function scope over class scope are the "
-"increased data hiding and reduced dependencies. <placeholder-1/>"
-msgstr ""
-"Si un programador no necesita un widget de alcance de clase, un widget de "
-"alcance de función también puede usarse. Las ventajas del alcance de función "
-"sobre el alcance de clase consisten en una mayor cantidad de datos ocultos y "
-"menos dependencias. <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:6180(title)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:5923
 msgid "Dynamic allocation with new and delete"
 msgstr "Asignación dinámica con new y delete"
 
-#: C/gtkmm-tutorial-in.xml:6188(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:5933
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Gtk::Button* pButton = new Gtk::Button(\"Test\");\n"
+#| "\n"
+#| "// do something useful with pButton\n"
+#| "\n"
+#| "delete pButton;\n"
 msgid ""
 "\n"
-"Gtk::Button* pButton = new Gtk::Button(\"Test\");\n"
+"auto pButton = new Gtk::Button(\"Test\");\n"
 "\n"
 "// do something useful with pButton\n"
 "\n"
 "delete pButton;\n"
 msgstr ""
 "\n"
-"Gtk::Button* pButton = new Gtk::Button(\"Test\");\n"
+"auto pButton = new Gtk::Button(\"Test\");\n"
 "\n"
 "// do something useful with pButton\n"
 "\n"
 "delete pButton;\n"
 
-#: C/gtkmm-tutorial-in.xml:6182(para)
-msgid ""
-"Although, in most cases, the programmer will prefer to allow containers to "
-"automatically destroy their children using <function>Gtk::manage()</"
-"function> (see below), the programmer is not required to use <function>Gtk::"
-"manage()</function>. The traditional <literal>new</literal> and "
-"<literal>delete</literal> operators may also be used. <placeholder-1/> Here, "
-"the programmer deletes <varname>pButton</varname> to prevent a memory leak."
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:5925
+#, fuzzy
+#| msgid ""
+#| "Although, in most cases, the programmer will prefer to allow containers "
+#| "to automatically destroy their children using <function>Gtk::manage()</"
+#| "function> (see below), the programmer is not required to use "
+#| "<function>Gtk::manage()</function>. The traditional <literal>new</"
+#| "literal> and <literal>delete</literal> operators may also be used. "
+#| "<placeholder-1/> Here, the programmer deletes <varname>pButton</varname> "
+#| "to prevent a memory leak."
+msgid ""
+"Usually, the programmer will prefer to allow containers to automatically "
+"destroy their children by creating them using <function>Gtk::make_managed()</"
+"function> (see below). This is not strictly required, as the <literal>new</"
+"literal> and <literal>delete</literal> operators may also be used, but "
+"modern C++ style discourages those in favour of safer models of memory "
+"management, so it is better to create widgets using <function>Gtk::"
+"make_managed()</function> and let their parent destroy them, than to "
+"manually perform dynamic allocation. <_:programlisting-1/> Here, the "
+"programmer deletes <varname>pButton</varname> to prevent a memory leak."
 msgstr ""
 "A pesar de que, en la mayoría de los casos, el programador preferirá "
 "permitirle a los contenedores destruir a sus hijos automáticamente usando "
@@ -10743,19 +13643,31 @@ msgstr ""
 "pueden usarse. <placeholder-1/> Aquí, el programador elimina "
 "<varname>pButton</varname> para evitar una fuga de memoria."
 
-#: C/gtkmm-tutorial-in.xml:6202(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:5947
 msgid "Managed Widgets"
 msgstr "Widgets gestionados"
 
-#: C/gtkmm-tutorial-in.xml:6204(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:5949
+#, fuzzy
+#| msgid ""
+#| "Alternatively, you can let a widget's container control when the widget "
+#| "is destroyed. In most cases, you want a widget to last only as long as "
+#| "the container it is in. To delegate the management of a widget's lifetime "
+#| "to its container, first create it with <function>Gtk::manage()</function> "
+#| "and pack it into its container with <methodname>Gtk::Container::add()</"
+#| "methodname>, <methodname>Gtk::Box::pack_start()</methodname>, or a "
+#| "similar method. Now the widget will be destroyed whenever its container "
+#| "is destroyed."
 msgid ""
 "Alternatively, you can let a widget's container control when the widget is "
 "destroyed. In most cases, you want a widget to last only as long as the "
 "container it is in. To delegate the management of a widget's lifetime to its "
-"container, first create it with <function>Gtk::manage()</function> and pack "
-"it into its container with <methodname>Gtk::Container::add()</methodname>, "
-"<methodname>Gtk::Box::pack_start()</methodname>, or a similar method. Now "
-"the widget will be destroyed whenever its container is destroyed."
+"container, create it with <function>Gtk::make_managed()</function> and then "
+"pack it into its container with <methodname>Gtk::Box::append()</methodname> "
+"or a similar method. Now the widget will be destroyed whenever its container "
+"is destroyed."
 msgstr ""
 "Alternativamente, puede permitirle al contenedor de un widget controlar "
 "cuándo se destruye. En la mayoría de los casos, querrá que un widget dure "
@@ -10766,59 +13678,109 @@ msgstr ""
 "pack_start()</methodname>, o un método similar. Ahora el widget se destruirá "
 "cuando se destruya su contenedor."
 
-#: C/gtkmm-tutorial-in.xml:6215(title)
-msgid "Dynamic allocation with manage() and add()"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:5959
+#, fuzzy
+#| msgid "Dynamic allocation with manage() and add()"
+msgid "Dynamic allocation with make_managed() and append()"
 msgstr "Asignación dinamica mediante el uso de manage() y add()"
 
-#: C/gtkmm-tutorial-in.xml:6217(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:5961
+msgid ""
+"<application>gtkmm</application> provides ways including the "
+"<function>make_managed()</function> function and <methodname>Gtk::Box::"
+"append()</methodname> method to simplify creation and destruction of widgets "
+"whose lifetime can be managed by a parent."
+msgstr ""
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:5967
 msgid ""
-"<application>gtkmm</application> provides the <function>manage()</function> "
-"function and <methodname>add()</methodname> methods to create and destroy "
-"widgets. Every widget except a top-level window must be added or packed into "
-"a container in order to be displayed. The <function>manage()</function> "
-"function marks a widget so that when the widget is added to a container, the "
-"container becomes responsible for deleting the widget."
+"Every widget except a top-level window must be added to a parent container "
+"in order to be displayed. The <function>manage()</function> function marks a "
+"widget so that when that widget is added to a parent container, said "
+"container becomes responsible for deleting the widget, meaning the user no "
+"longer needs to do so. The original way to create widgets whose lifetime is "
+"managed by their parent in this way was to call <function>manage()</"
+"function>, passing in the result of a <literal>new</literal> expression that "
+"created a dynamically allocated widget."
 msgstr ""
-"<application>gtkmm</application> proporciona la función <function>manage()</"
-"function> y métodos <methodname>add()</methodname> para crear y destruir "
-"widgets. Cada widget, excepto una ventana de nivel superior, debe añadirse o "
-"empaquetarse en un contenedor para mostrarse. La función <function>manage()</"
-"function> marca un widget para que, cuando se añada a un contenedor, este se "
-"vuelva responsable de su eliminación."
 
-#: C/gtkmm-tutorial-in.xml:6227(programlisting)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:5977
+msgid ""
+"However, usually, when you create such a widget, you will already know that "
+"its parent container should be responsible for destroying it, In addition, "
+"modern C++ style discourages use of the <literal>new</literal> operator, "
+"which was required when passing a newly created widget to "
+"<function>manage()</function>. Therefore, <application>gtkmm</application> "
+"has added <function>make_managed()</function>, which combines creation and "
+"marking with <function>manage()</function> into a single step. This avoids "
+"you having to write <literal>new</literal>, which is discouraged in modern C+"
+"+ style, and more clearly expresses intent to create a managed widget."
+msgstr ""
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:5988
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "MyContainer::MyContainer()\n"
+#| "{\n"
+#| "  Gtk::Button* pButton = Gtk::manage(new Gtk::Button(\"Test\"));\n"
+#| "  add(*pButton); //add *pButton to MyContainer\n"
+#| "}\n"
 msgid ""
 "\n"
 "MyContainer::MyContainer()\n"
 "{\n"
-"  Gtk::Button* pButton = Gtk::manage(new Gtk::Button(\"Test\"));\n"
-"  add(*pButton); //add *pButton to MyContainer\n"
+"  auto pButton = Gtk::make_managed&lt;Gtk::Button&gt;(\"Test\");\n"
+"  append(*pButton); //add *pButton to MyContainer\n"
 "}\n"
 msgstr ""
 "\n"
 "MyContainer::MyContainer()\n"
 "{\n"
-"  Gtk::Button* pButton = Gtk::manage(new Gtk::Button(\"Test\"));\n"
-"  add(*pButton); //add *pButton to MyContainer\n"
+"  auto pButton = Gtk::make_managed&lt;Gtk::Button&gt;(\"Test\");\n"
+"  append(*pButton); //add *pButton to MyContainer\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:6226(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:5995
+#, fuzzy
+#| msgid ""
+#| "<placeholder-1/> Now, when objects of type <classname>MyContainer</"
+#| "classname> are destroyed, the button will also be deleted. It is no "
+#| "longer necessary to delete <varname>pButton</varname> to free the "
+#| "button's memory; its deletion has been delegated to the "
+#| "<classname>MyContainer</classname> object."
 msgid ""
-"<placeholder-1/> Now, when objects of type <classname>MyContainer</"
-"classname> are destroyed, the button will also be deleted. It is no longer "
-"necessary to delete <varname>pButton</varname> to free the button's memory; "
-"its deletion has been delegated to the <classname>MyContainer</classname> "
-"object."
+"Now, when objects of type <classname>MyContainer</classname> are destroyed, "
+"the button will also be deleted. It is no longer necessary to delete "
+"<varname>pButton</varname> to free the button's memory; its deletion has "
+"been delegated to the <classname>MyContainer</classname> object."
 msgstr ""
 "<placeholder-1/> Ahora, cuando los objetos del tipo <classname>MyContainer</"
 "classname> se destruyan, el botón también se eliminará. Ya no es necesario "
 "eliminar <varname>pButton</varname> para liberar su memoria; su eliminación "
 "se ha delegado al objeto <classname>MyContainer</classname>."
 
-#: C/gtkmm-tutorial-in.xml:6240(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:6002
 msgid ""
-"Of course, a top-level container will not be added to another container. The "
+"Note that if you never added the widget to any parent container, or you did "
+"but later <methodname>Gtk::Container::remove()</methodname>d it from said "
+"parent, <application>gtkmm</application> restores the widget’s lifetime "
+"management to whatever state it had before <function>manage()</function> was "
+"called, which typically means that the responsibility for <literal>delete</"
+"literal>ing the widget returns to the user."
+msgstr ""
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:6010
+msgid ""
+"Of course, a top-level container will not be added to another container. The "
 "programmer is responsible for destroying the top-level container using one "
 "of the traditional C++ techniques. For instance, your top-level Window might "
 "just be an instance in your <function>main()</function> function."
@@ -10829,11 +13791,13 @@ msgstr ""
 "ejemplo, una ventana de nivel superior podría ser sólo una instancia en su "
 "función <function>main()</function>."
 
-#: C/gtkmm-tutorial-in.xml:6252(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6022
 msgid "Shared resources"
 msgstr "Recursos compartidos"
 
-#: C/gtkmm-tutorial-in.xml:6254(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6024
 msgid ""
 "Some objects, such as <classname>Gdk::Pixbuf</classname>s and "
 "<classname>Pango::Font</classname>s, are obtained from a shared store. "
@@ -10852,54 +13816,78 @@ msgstr ""
 "tiene su propio puntero inteligente, <classname>Cairo::RefPtr&lt;&gt;</"
 "classname>."
 
-#: C/gtkmm-tutorial-in.xml:6267(programlisting)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6034
+#, fuzzy
+#| msgid ""
+#| "Objects such as <classname>Gdk::Pixbuf</classname> can only be "
+#| "instantiated with a <methodname>create()</methodname> function. For "
+#| "instance, <placeholder-1/>"
+msgid ""
+"Objects such as <classname>Gdk::Pixbuf</classname> can only be instantiated "
+"with a <methodname>create()</methodname> function. For instance,"
+msgstr ""
+"Objetos tales como <classname>Gdk::Pixbuf</classname> sólo pueden "
+"instanciarse con una función <methodname>create()</methodname>. Por ejemplo, "
+"<placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6038
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gdk::Pixbuf&gt; pixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
 msgid ""
 "\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; pixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"auto pixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
 msgstr ""
 "\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; pixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"auto pixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
 
-#: C/gtkmm-tutorial-in.xml:6264(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6042
+#, fuzzy
+#| msgid ""
+#| "You have no way of getting a bare <classname>Gdk::Pixbuf</classname>. In "
+#| "the example, <varname>pixbuf</varname> is a smart pointer, so you can do "
+#| "this, much like a normal pointer: <placeholder-1/>"
 msgid ""
-"Objects such as <classname>Gdk::Pixbuf</classname> can only be instantiated "
-"with a <methodname>create()</methodname> function. For instance, "
-"<placeholder-1/>"
+"You have no way of getting a bare <classname>Gdk::Pixbuf</classname>. In the "
+"example, <varname>pixbuf</varname> is a smart pointer, so you can do this, "
+"much like a normal pointer:"
 msgstr ""
-"Objetos tales como <classname>Gdk::Pixbuf</classname> sólo pueden "
-"instanciarse con una función <methodname>create()</methodname>. Por ejemplo, "
+"No hay manera de obtener un <classname>Gdk::Pixbuf</classname> simple. En "
+"este ejemplo, <varname>pixbuf</varname> es un puntero inteligente, por lo "
+"que puede hacer esto, de manera muy similar a un puntero normal: "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6276(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6047
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "int width = 0;\n"
+#| "if(pixbuf)\n"
+#| "{\n"
+#| "  width = pixbuf-&gt;get_width();\n"
+#| "}\n"
 msgid ""
 "\n"
-"int width = 0;\n"
+"auto width = 0;\n"
 "if(pixbuf)\n"
 "{\n"
 "  width = pixbuf-&gt;get_width();\n"
 "}\n"
 msgstr ""
 "\n"
-"int width = 0;\n"
+"auto width = 0;\n"
 "if(pixbuf)\n"
 "{\n"
 "  width = pixbuf-&gt;get_width();\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:6272(para)
-msgid ""
-"You have no way of getting a bare <classname>Gdk::Pixbuf</classname>. In the "
-"example, <varname>pixbuf</varname> is a smart pointer, so you can do this, "
-"much like a normal pointer: <placeholder-1/>"
-msgstr ""
-"No hay manera de obtener un <classname>Gdk::Pixbuf</classname> simple. En "
-"este ejemplo, <varname>pixbuf</varname> es un puntero inteligente, por lo "
-"que puede hacer esto, de manera muy similar a un puntero normal: "
-"<placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:6285(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6055
 msgid ""
 "When <varname>pixbuf</varname> goes out of scope an <methodname>unref()</"
 "methodname> will happen in the background and you don't need to worry about "
@@ -10911,22 +13899,31 @@ msgstr ""
 "él. No hay <literal>new</literal>, por lo que no hay <literal>delete</"
 "literal>."
 
-#: C/gtkmm-tutorial-in.xml:6293(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6063
 #, no-wrap
 msgid ""
 "\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; pixbuf2 = pixbuf;\n"
+"auto pixbuf2 = pixbuf;\n"
 msgstr ""
 "\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; pixbuf2 = pixbuf;\n"
+"auto pixbuf2 = pixbuf;\n"
 
-#: C/gtkmm-tutorial-in.xml:6291(para)
-msgid ""
-"If you copy a <classname>RefPtr</classname>, for instance <placeholder-1/> , "
-"or if you pass it as a method argument or a return type, then "
-"<classname>RefPtr</classname> will do any necessary referencing to ensure "
-"that the instance will not be destroyed until the last <classname>RefPtr</"
-"classname> has gone out of scope."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6061
+#, fuzzy
+#| msgid ""
+#| "If you copy a <classname>RefPtr</classname>, for instance <placeholder-1/"
+#| "> , or if you pass it as a method argument or a return type, then "
+#| "<classname>RefPtr</classname> will do any necessary referencing to ensure "
+#| "that the instance will not be destroyed until the last <classname>RefPtr</"
+#| "classname> has gone out of scope."
+msgid ""
+"If you copy a <classname>RefPtr</classname>, for instance <_:"
+"programlisting-1/> , or if you pass it as a method argument or a return "
+"type, then <classname>RefPtr</classname> will do any necessary referencing "
+"to ensure that the instance will not be destroyed until the last "
+"<classname>RefPtr</classname> has gone out of scope."
 msgstr ""
 "Si copia un <classname>RefPtr</classname>, por ejemplo <placeholder-1/>, o "
 "si lo pasa como argumento a un método o como tipo de retorno, entonces "
@@ -10934,7 +13931,8 @@ msgstr ""
 "asegurarse de que la instancia no se destruirá hasta que el último "
 "<classname>RefPtr</classname> haya salido del alcance."
 
-#: C/gtkmm-tutorial-in.xml:6301(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6071
 msgid ""
 "See the <link linkend=\"chapter-refptr\">appendix</link> for detailed "
 "information about RefPtr."
@@ -10942,29 +13940,38 @@ msgstr ""
 "Consulte el <link linkend=\"chapter-refptr\">apéndice</link> para obtener "
 "información detallada acerca de «RefPtr»."
 
-#: C/gtkmm-tutorial-in.xml:6306(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6076
 msgid ""
 "Bjarne Stroustrup, \"The C++ Programming Language\" Forth Edition - section "
 "34.3"
 msgstr "Bjarne Stroustrup, «The C++ Programming Language»: sección 34.3"
 
-#: C/gtkmm-tutorial-in.xml:6309(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6079
 msgid "Nicolai M. Josuttis, \"The C++ Standard Library\" - section 4.2"
 msgstr "Nicolai M. Josuttis, «The C++ Standard Library» - sección 4.2"
 
-#: C/gtkmm-tutorial-in.xml:6302(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6072
+#, fuzzy
+#| msgid ""
+#| "If you wish to learn more about smartpointers, you might look in these "
+#| "books: <placeholder-1/>"
 msgid ""
 "If you wish to learn more about smartpointers, you might look in these "
-"books: <placeholder-1/>"
+"books: <_:itemizedlist-1/>"
 msgstr ""
 "Si quiere aprender más acerca de punteros inteligentes, puede echarle un "
 "vistazo a estos libros: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6320(title)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:6090
 msgid "Glade and Gtk::Builder"
 msgstr "Glade y Gtk::Builder"
 
-#: C/gtkmm-tutorial-in.xml:6321(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6091
 msgid ""
 "Although you can use C++ code to instantiate and arrange widgets, this can "
 "soon become tedious and repetitive. And it requires a recompilation to show "
@@ -10983,26 +13990,33 @@ msgstr ""
 "tiempo de ejecución y obtener un puntero a instancias de widgets nombradas "
 "específicamente."
 
-#: C/gtkmm-tutorial-in.xml:6334(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:6104
 msgid "Less C++ code is required."
 msgstr "Se requiere menos código en C++."
 
-#: C/gtkmm-tutorial-in.xml:6335(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:6105
 msgid "UI changes can be seen more quickly, so UIs are able to improve."
 msgstr ""
 "Los cambios en la IU pueden observarse más rápidamente, por lo se pueden "
 "mejorar las IU."
 
-#: C/gtkmm-tutorial-in.xml:6336(simpara)
+#. (itstool) path: listitem/simpara
+#: C/index-in.docbook:6106
 msgid "Designers without programming skills can create and edit UIs."
 msgstr ""
 "Los diseñadores sin conocimientos de programación pueden crear y editar IU."
 
-#: C/gtkmm-tutorial-in.xml:6331(para)
-msgid "This has the following advantages: <placeholder-1/>"
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6101
+#, fuzzy
+#| msgid "This has the following advantages: <placeholder-1/>"
+msgid "This has the following advantages: <_:orderedlist-1/>"
 msgstr "Esto tiene las siguientes ventajas: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6340(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6110
 msgid ""
 "You still need C++ code to deal with User Interface changes triggered by "
 "user actions, but using <application>Gtk::Builder</application> for the "
@@ -11013,28 +14027,41 @@ msgstr ""
 "<application>Gtk::Builder</application> para la distribución de los widgets "
 "le permite enfocarse en la implementación de esa funcionalidad."
 
-#: C/gtkmm-tutorial-in.xml:6347(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6117
 msgid "Loading the .glade file"
 msgstr "Cargar el archivo .glade"
 
-#: C/gtkmm-tutorial-in.xml:6352(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6122
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gtk::Builder&gt; builder = Gtk::Builder::create_from_file(\"basic.glade\");\n"
 msgid ""
 "\n"
-"Glib::RefPtr&lt;Gtk::Builder&gt; builder = Gtk::Builder::create_from_file(\"basic.glade\");\n"
+"auto builder = Gtk::Builder::create_from_file(\"basic.glade\");\n"
 msgstr ""
 "\n"
-"Glib::RefPtr&lt;Gtk::Builder&gt; builder = Gtk::Builder::create_from_file(\"basic.glade\");\n"
+"auto builder = Gtk::Builder::create_from_file(\"basic.glade\");\n"
 
-#: C/gtkmm-tutorial-in.xml:6348(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6118
+#, fuzzy
+#| msgid ""
+#| "<classname>Gtk::Builder</classname> must be used via a <classname>Glib::"
+#| "RefPtr</classname>. Like all such classes, you need to use a "
+#| "<methodname>create()</methodname> method to instantiate it. For instance, "
+#| "<placeholder-1/> This will instantiate the windows defined in the .glade "
+#| "file, though they will not be shown immediately unless you have specified "
+#| "that via the <guilabel>Properties</guilabel> window in "
+#| "<application>Glade</application>."
 msgid ""
 "<classname>Gtk::Builder</classname> must be used via a <classname>Glib::"
 "RefPtr</classname>. Like all such classes, you need to use a "
-"<methodname>create()</methodname> method to instantiate it. For instance, "
-"<placeholder-1/> This will instantiate the windows defined in the .glade "
-"file, though they will not be shown immediately unless you have specified "
-"that via the <guilabel>Properties</guilabel> window in <application>Glade</"
-"application>."
+"<methodname>create()</methodname> method to instantiate it. For instance, <_:"
+"programlisting-1/> This will instantiate the windows defined in the "
+"<filename>.glade</filename> file."
 msgstr ""
 "<classname>Gtk::Builder</classname> debe usarse a través de <classname>Glib::"
 "RefPtr</classname>. Al igual que todos las clases similares, necesitará usar "
@@ -11044,47 +14071,55 @@ msgstr ""
 "especificado así mediante la ventana <guilabel>Propiedades</guilabel> en "
 "<application>Glade</application>. "
 
-#: C/gtkmm-tutorial-in.xml:6361(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"Glib::RefPtr&lt;Gtk::Builder&gt; builder = Gtk::Builder::create_from_file(\"basic.glade\", 
\"treeview_products\");\n"
-msgstr ""
-"\n"
-"Glib::RefPtr&lt;Gtk::Builder&gt; builder = Gtk::Builder::create_from_file(\"basic.glade\", 
\"treeview_products\");\n"
-
-#: C/gtkmm-tutorial-in.xml:6360(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6128
+#, fuzzy
+#| msgid ""
+#| "To instantiate just one window, or just one of the child widgets, you can "
+#| "specify the name of a widget as the second parameter. For instance, "
+#| "<placeholder-1/>"
 msgid ""
 "To instantiate just one window, or just one of the child widgets, you can "
-"specify the name of a widget as the second parameter. For instance, "
-"<placeholder-1/>"
+"specify the name of a widget as the second parameter. For instance,"
 msgstr ""
 "Para instanciar sólo una ventana, o sólo uno de los widgets hijo, puede "
 "especificar el nombre del widget como segundo parámetro. Por ejemplo, "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6369(title)
-msgid "Accessing widgets"
-msgstr "Acceso a widgets"
-
-#: C/gtkmm-tutorial-in.xml:6377(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6130
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gtk::Builder&gt; builder = Gtk::Builder::create_from_file(\"basic.glade\", 
\"treeview_products\");\n"
 msgid ""
 "\n"
-"Gtk::Dialog* pDialog = 0;\n"
-"builder-&gt;get_widget(\"DialogBasic\", pDialog);\n"
+"auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"treeview_products\");\n"
 msgstr ""
 "\n"
-"Gtk::Dialog* pDialog = 0;\n"
-"builder-&gt;get_widget(\"DialogBasic\", pDialog);\n"
+"auto builder = Gtk::Builder::create_from_file(\"basic.glade\", \"treeview_products\");\n"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6137
+msgid "Accessing widgets"
+msgstr "Acceso a widgets"
 
-#: C/gtkmm-tutorial-in.xml:6371(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6139
+#, fuzzy
+#| msgid ""
+#| "To access a widget, for instance to <methodname>show()</methodname> a "
+#| "dialog, use the <methodname>get_widget()</methodname> method, providing "
+#| "the widget's name. This name should be specified in the "
+#| "<application>Glade</application> Properties window. If the widget could "
+#| "not be found, or is of the wrong type, then the pointer will be set to 0. "
+#| "<placeholder-1/>"
 msgid ""
 "To access a widget, for instance to <methodname>show()</methodname> a "
 "dialog, use the <methodname>get_widget()</methodname> method, providing the "
 "widget's name. This name should be specified in the <application>Glade</"
 "application> Properties window. If the widget could not be found, or is of "
-"the wrong type, then the pointer will be set to 0. <placeholder-1/>"
+"the wrong type, then the pointer will be set to nullptr."
 msgstr ""
 "Para acceder a un widget, por ejemplo para mostrar (<methodname>show()</"
 "methodname>) un diálogo, use el método <methodname>get_widget()</methodname> "
@@ -11093,7 +14128,22 @@ msgstr ""
 "el widget, o si es del tipo incorrecto, se asignará 0 al puntero. "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6383(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6146
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "Gtk::Dialog* pDialog = 0;\n"
+#| "builder-&gt;get_widget(\"DialogBasic\", pDialog);\n"
+msgid ""
+"\n"
+"auto pDialog = builder-&gt;get_widget&lt;Gtk::Dialog&gt;(\"DialogBasic\");\n"
+msgstr ""
+"\n"
+"auto pDialog = builder-&gt;get_widget&lt;Gtk::Dialog&gt;(\"DialogBasic\");\n"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6150
 msgid ""
 "<application>Gtk::Builder</application> checks for a null pointer, and "
 "checks that the widget is of the expected type, and will show warnings on "
@@ -11103,7 +14153,8 @@ msgstr ""
 "el widget es del tipo esperado, y le advertirá en la línea de comandos de "
 "estos casos."
 
-#: C/gtkmm-tutorial-in.xml:6389(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6156
 msgid ""
 "Remember that you are not instantiating a widget with "
 "<methodname>get_widget()</methodname>, you are just obtaining a pointer to "
@@ -11120,17 +14171,28 @@ msgstr ""
 "classname> con el mismo nombre de widget. Los widgets se instancian durante "
 "<methodname>Gtk::Builder::create_from_file()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:6398(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6165
+#, fuzzy
+#| msgid ""
+#| "<methodname>get_widget()</methodname> returns child widgets that are "
+#| "<function>manage()</function>ed (see the <link linkend=\"chapter-memory"
+#| "\">Memory Management</link> chapter), so they will be deleted when their "
+#| "parent container is deleted. So, if you get only a child widget from "
+#| "<application>Gtk::Builder</application>, instead of a whole window, then "
+#| "you must either put it in a <classname>Container</classname> or delete "
+#| "it. <classname>Windows</classname> (such as <classname>Dialogs</"
+#| "classname>) cannot be managed because they have no parent container, so "
+#| "you must delete them at some point."
 msgid ""
 "<methodname>get_widget()</methodname> returns child widgets that are "
 "<function>manage()</function>ed (see the <link linkend=\"chapter-memory"
 "\">Memory Management</link> chapter), so they will be deleted when their "
-"parent container is deleted. So, if you get only a child widget from "
-"<application>Gtk::Builder</application>, instead of a whole window, then you "
-"must either put it in a <classname>Container</classname> or delete it. "
-"<classname>Windows</classname> (such as <classname>Dialogs</classname>) "
-"cannot be managed because they have no parent container, so you must delete "
-"them at some point."
+"parent container is deleted. <classname>Windows</classname> (such as "
+"<classname>Dialogs</classname>) cannot be managed because they have no "
+"parent container, so you must delete them at some point. The documentation "
+"of <classname>Gtk::Builder</classname> has more to say about the memory "
+"management of different kinds of objects."
 msgstr ""
 "<methodname>get_widget()</methodname> devuelve widgets hijos que gestiona "
 "<function>manage()</function> (consulte el capítulo <link linkend=\"chapter-"
@@ -11142,7 +14204,17 @@ msgstr ""
 "pueden gestionarse porque no tienen contenedor padre, por lo que debe "
 "eliminarlas en algún momento."
 
-#: C/gtkmm-tutorial-in.xml:6412(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6175
+msgid ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Builder.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/classGtk_1_1Builder.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6179
 msgid ""
 "This simple example shows how to load a <application>Glade</application> "
 "file at runtime and access the widgets with <application>Gtk::Builder</"
@@ -11152,19 +14224,38 @@ msgstr ""
 "application> en tiempo de ejecución y acceder a los widgets con "
 "<application>Gtk::Builder</application>."
 
-#: C/gtkmm-tutorial-in.xml:6425(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6184
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/builder/basic\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/builder/basic\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6191
 msgid "Using derived widgets"
 msgstr "Usar widgets derivados"
 
-#: C/gtkmm-tutorial-in.xml:6426(para)
-msgid ""
-"You can use <application>Glade</application> to layout your own custom "
-"widgets derived from <application>gtkmm</application> widget classes. This "
-"keeps your code organized and encapsulated. Of course you won't see the "
-"exact appearance and properties of your derived widget in "
-"<application>Glade</application>, but you can specify its location and child "
-"widgets and the properties of its <application>gtkmm</application> base "
-"class."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6192
+#, fuzzy
+#| msgid ""
+#| "You can use <application>Glade</application> to layout your own custom "
+#| "widgets derived from <application>gtkmm</application> widget classes. "
+#| "This keeps your code organized and encapsulated. Of course you won't see "
+#| "the exact appearance and properties of your derived widget in "
+#| "<application>Glade</application>, but you can specify its location and "
+#| "child widgets and the properties of its <application>gtkmm</application> "
+#| "base class."
+msgid ""
+"You can use <classname>Gtk::Builder</classname> and <application>Glade</"
+"application> to layout your own custom widgets derived from "
+"<application>gtkmm</application> widget classes. This keeps your code "
+"organized and encapsulated, separating declarative presentation from "
+"business logic, avoiding having most of your source just be setting "
+"properties and packing in containers."
 msgstr ""
 "Puede usar <application>Glade</application> para distribuir sus propios "
 "widgets personalizados derivados de las clases de widgets de "
@@ -11174,26 +14265,34 @@ msgstr ""
 "especificar su ubicación, widgets hijos y las propiedades de su clase base "
 "de <application>gtkmm</application>."
 
-#: C/gtkmm-tutorial-in.xml:6435(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6200
+#, fuzzy
+#| msgid ""
+#| "Use <methodname>Gtk::Builder::get_widget_derived()</methodname> like so: "
+#| "<placeholder-1/>"
 msgid ""
-"\n"
-"DerivedDialog* pDialog = 0;\n"
-"builder-&gt;get_widget_derived(\"DialogBasic\", pDialog);\n"
+"Use <methodname>Gtk::Builder::get_widget_derived()</methodname> like so:"
 msgstr ""
-"\n"
-"DerivedDialog* pDialog = 0;\n"
-"builder-&gt;get_widget_derived(\"DialogBasic\", pDialog);\n"
+"Use <methodname>Gtk::Builder::get_widget_derived()</methodname> así: "
+"<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6434(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6202
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "DerivedDialog* pDialog = 0;\n"
+#| "builder-&gt;get_widget_derived(\"DialogBasic\", pDialog);\n"
 msgid ""
-"Use <methodname>Gtk::Builder::get_widget_derived()</methodname> like so: "
-"<placeholder-1/>"
+"\n"
+"auto pDialog = Gtk::Builder::get_widget_derived&lt;DerivedDialog&gt;(builder, \"DialogDerived\");\n"
 msgstr ""
-"Use <methodname>Gtk::Builder::get_widget_derived()</methodname> así: "
-"<placeholder-1/>"
+"\n"
+"auto pDialog = Gtk::Builder::get_widget_derived&lt;DerivedDialog&gt;(builder, \"DialogDerived\");\n"
 
-#: C/gtkmm-tutorial-in.xml:6441(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6206
 msgid ""
 "Your derived class must have a constructor that takes a pointer to the "
 "underlying C type, and the <classname>Gtk::Builder</classname> instance. All "
@@ -11210,7 +14309,21 @@ msgstr ""
 "<classname>BaseObjectType</classname> como <type>GtkDialog</type>, por "
 "ejemplo)."
 
-#: C/gtkmm-tutorial-in.xml:6451(programlisting)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6213
+#, fuzzy
+#| msgid ""
+#| "You must call the base class's constructor in the initialization list, "
+#| "providing the C pointer. For instance, <placeholder-1/>"
+msgid ""
+"You must call the base class's constructor in the initialization list, "
+"providing the C pointer. For instance,"
+msgstr ""
+"Debe llamar al constructor de la clase base en la lista de inicialización, "
+"proporcionándole el puntero de C. Por ejemplo, <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6217
 #, no-wrap
 msgid ""
 "\n"
@@ -11225,25 +14338,50 @@ msgstr ""
 "{\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:6448(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6224
+#, fuzzy
+#| msgid ""
+#| "You could then encapsulate the manipulation of the child widgets in the "
+#| "constructor of the derived class, maybe using <methodname>get_widget()</"
+#| "methodname> or <methodname>get_widget_derived()</methodname> again. For "
+#| "instance, <placeholder-1/>"
 msgid ""
-"You must call the base class's constructor in the initialization list, "
-"providing the C pointer. For instance, <placeholder-1/>"
+"You could then encapsulate the manipulation of the child widgets in the "
+"constructor of the derived class, maybe using <methodname>get_widget()</"
+"methodname> or <methodname>get_widget_derived()</methodname> again. For "
+"instance,"
 msgstr ""
-"Debe llamar al constructor de la clase base en la lista de inicialización, "
-"proporcionándole el puntero de C. Por ejemplo, <placeholder-1/>"
+"Puede entonces encapsular la manipulación de los widgets hijos en el "
+"constructor de la clase derivada, tal vez usando <methodname>get_widget()</"
+"methodname> o <methodname>get_widget_derived()</methodname> nuevamente. Por "
+"ejemplo, <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6463(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6229
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr&lt;Gtk::Builder&gt;&amp; 
builder)\n"
+#| ": Gtk::Dialog(cobject),\n"
+#| "  m_builder(builder),\n"
+#| "  m_pButton(0)\n"
+#| "{\n"
+#| "  //Get the Glade-instantiated Button, and connect a signal handler:\n"
+#| "  m_builder-&gt;get_widget(\"quit_button\", m_pButton);\n"
+#| "  if(m_pButton)\n"
+#| "  {\n"
+#| "    m_pButton-&gt;signal_clicked().connect( sigc::mem_fun(*this, &amp;DerivedDialog::on_button_quit) 
);\n"
+#| "  }\n"
+#| "}\n"
 msgid ""
 "\n"
 "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr&lt;Gtk::Builder&gt;&amp; 
builder)\n"
 ": Gtk::Dialog(cobject),\n"
 "  m_builder(builder),\n"
-"  m_pButton(0)\n"
-"{\n"
 "  //Get the Glade-instantiated Button, and connect a signal handler:\n"
-"  m_builder-&gt;get_widget(\"quit_button\", m_pButton);\n"
+"  m_pButton(m_builder-&gt;get_widget&lt;Gtk::Button&gt;(\"quit_button\"))\n"
+"{\n"
 "  if(m_pButton)\n"
 "  {\n"
 "    m_pButton-&gt;signal_clicked().connect( sigc::mem_fun(*this, &amp;DerivedDialog::on_button_quit) );\n"
@@ -11254,41 +14392,149 @@ msgstr ""
 "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr&lt;Gtk::Builder&gt;&amp; 
builder)\n"
 ": Gtk::Dialog(cobject),\n"
 "  m_builder(builder),\n"
-"  m_pButton(0)\n"
-"{\n"
 "  //Get the Glade-instantiated Button, and connect a signal handler:\n"
-"  m_builder-&gt;get_widget(\"quit_button\", m_pButton);\n"
+"  m_pButton(m_builder-&gt;get_widget&lt;Gtk::Button&gt;(\"quit_button\"))\n"
+"{\n"
 "  if(m_pButton)\n"
 "  {\n"
 "    m_pButton-&gt;signal_clicked().connect( sigc::mem_fun(*this, &amp;DerivedDialog::on_button_quit) );\n"
 "  }\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:6459(para)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6247
+#, no-wrap
 msgid ""
-"You could then encapsulate the manipulation of the child widgets in the "
-"constructor of the derived class, maybe using <methodname>get_widget()</"
-"methodname> or <methodname>get_widget_derived()</methodname> again. For "
-"instance, <placeholder-1/>"
+"\n"
+"auto pDialog = Gtk::Builder::get_widget_derived&lt;DerivedDialog&gt;(builder, \"DialogDerived\", true);\n"
+msgstr ""
+"\n"
+"auto pDialog = Gtk::Builder::get_widget_derived&lt;DerivedDialog&gt;(builder, \"DialogDerived\", true);\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6251
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr&lt;Gtk::Builder&gt;&amp; 
builder)\n"
+#| ": Gtk::Dialog(cobject)\n"
+#| "{\n"
+#| "}\n"
+msgid ""
+"\n"
+"DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr&lt;Gtk::Builder&gt;&amp; builder, 
bool warning)\n"
+": Gtk::Dialog(cobject),\n"
+"  m_builder(builder),\n"
+"  m_pButton(m_builder-&gt;get_widget&lt;Gtk::Button&gt;(\"quit_button\"))\n"
+"{\n"
+"  // ....\n"
+"}\n"
+msgstr ""
+"\n"
+"DerivedDialog::DerivedDialog(BaseObjectType* cobject, const Glib::RefPtr&lt;Gtk::Builder&gt;&amp; builder, 
bool warning)\n"
+": Gtk::Dialog(cobject),\n"
+"  m_builder(builder),\n"
+"  m_pButton(m_builder-&gt;get_widget&lt;Gtk::Button&gt;(\"quit_button\"))\n"
+"{\n"
+"  // ....\n"
+"}\n"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6243
+msgid ""
+"It's possible to pass additional arguments from "
+"<methodname>get_widget_derived()</methodname> to the constructor of the "
+"derived widget. For instance, this call to <methodname>get_widget_derived()</"
+"methodname> <_:programlisting-1/> can invoke this constructor <_:"
+"programlisting-2/>"
+msgstr ""
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6263
+msgid "Gtk::Builder and Glib::Property"
+msgstr ""
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6264
+msgid ""
+"If your derived widget uses <classname>Glib::Property</classname>, it "
+"becomes slightly more complicated. A derived widget that contains "
+"<classname>Glib::Property</classname> members must be registered with its "
+"own name in the <type>GType</type> system. It must be registered before any "
+"of the <methodname>create_from_*()</methodname> or <methodname>add_from_*()</"
+"methodname> methods are called, meaning that you may have to create an "
+"instance of your derived widget just to have its class registered. Your "
+"derived widget must have a constructor that has the parameters required by "
+"<methodname>get_widget_derived()</methodname> and calls the <classname>Glib::"
+"ObjectBase</classname> constructor to register the <type>GType</type>."
+msgstr ""
+
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:6275
+#, no-wrap
+msgid ""
+"\n"
+"DerivedButton::DerivedButton(BaseObjectType* cobject, const Glib::RefPtr&lt;Gtk::Builder&gt;&amp; 
builder)\n"
+": Glib::ObjectBase(\"MyButton\"), // The GType name will be gtkmm__CustomObject_MyButton.\n"
+"  Gtk::Button(cobject),\n"
+"  prop_ustring(*this, \"button-ustring\"),\n"
+"  prop_int(*this, \"button-int\", 10)\n"
+"{\n"
+"  // ....\n"
+"}\n"
+msgstr ""
+"\n"
+"DerivedButton::DerivedButton(BaseObjectType* cobject, const Glib::RefPtr&lt;Gtk::Builder&gt;&amp; 
builder)\n"
+": Glib::ObjectBase(\"MyButton\"), // The GType name will be gtkmm__CustomObject_MyButton.\n"
+"  Gtk::Button(cobject),\n"
+"  prop_ustring(*this, \"button-ustring\"),\n"
+"  prop_int(*this, \"button-int\", 10)\n"
+"{\n"
+"  // ....\n"
+"}\n"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6285
+msgid ""
+"When using <application>gtkmm</application> with a version of "
+"<application>glibmm</application> from 2.62 onwards, it is possible also to "
+"specify properties of derived widgets, declared in C++ using "
+"<application>gtkmm</application>, within <filename>.glade</filename> files "
+"and load/set these using <classname>Gtk::Builder</classname>. See the "
+"documentation of <classname>Gtk::Builder</classname> for more details on how "
+"to achieve this. Glade won’t recognise such properties as-is, but it should "
+"be able to through use of <ulink url=\"https://developer.gnome.org/gladeui/";
+"stable/properties.html\"> property class definitions</ulink> and a catalog "
+"declaring those new properties."
 msgstr ""
-"Puede entonces encapsular la manipulación de los widgets hijos en el "
-"constructor de la clase derivada, tal vez usando <methodname>get_widget()</"
-"methodname> o <methodname>get_widget_derived()</methodname> nuevamente. Por "
-"ejemplo, <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6481(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6299
+#, fuzzy
+#| msgid ""
+#| "This example shows how to load a <application>Glade</application> file at "
+#| "runtime and access the widgets via a derived class."
 msgid ""
 "This example shows how to load a <application>Glade</application> file at "
-"runtime and access the widgets via a derived class."
+"runtime and access the widgets via derived classes."
 msgstr ""
 "Este ejemplo mustra cómo cargar un archivo <application>Glade</application> "
 "en tiempo de ejecución y acceder a los widgets mediante una clase derivada."
 
-#: C/gtkmm-tutorial-in.xml:6494(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6303
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/builder/derived\">Source Code</ulink>"
+msgstr ""
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:6312
 msgid "Internationalization and Localization"
 msgstr "Internacionalización y localización"
 
-#: C/gtkmm-tutorial-in.xml:6496(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6314
 msgid ""
 "<application>gtkmm</application> applications can easily support multiple "
 "languages, including non-European languages such as Chinese and right-to-"
@@ -11302,7 +14548,8 @@ msgstr ""
 "application> escrita apropiadamente y traducida usará el lenguaje apropiado "
 "en tiempo de ejecución basado en el entorno del usuario."
 
-#: C/gtkmm-tutorial-in.xml:6502(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6320
 msgid ""
 "You might not anticipate the need to support additional languages, but you "
 "can never rule it out. And it's easier to develop the application properly "
@@ -11312,7 +14559,8 @@ msgstr ""
 "nunca puede excluirla. Y es más fácil desarrollar la aplicación "
 "apropiadamente en primer lugar en vez de adecuarla después."
 
-#: C/gtkmm-tutorial-in.xml:6508(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6326
 msgid ""
 "The process of writing source code that allows for translation is called "
 "<literal>internationalization</literal>, often abbreviated to <literal>i18n</"
@@ -11326,7 +14574,8 @@ msgstr ""
 "veces abreviado <literal>l10n</literal>, proporciona el texto traducido a "
 "otros lenguajes, basado en ese código fuente."
 
-#: C/gtkmm-tutorial-in.xml:6516(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6334
 msgid ""
 "The main activity in the internationalization process is finding strings "
 "seen by users and marking them for translation. You do not need to do it all "
@@ -11340,7 +14589,8 @@ msgstr ""
 "correctamente, entonces su aplicación funcionará normalmente sin importar "
 "cuántas cadenas ha cubierto."
 
-#: C/gtkmm-tutorial-in.xml:6524(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6342
 msgid ""
 "String literals should be typed in the source code in English, but "
 "surrounded by a macro. The <application>gettext</application> (or intltool) "
@@ -11352,11 +14602,24 @@ msgstr ""
 "intltool) puede entonces extraer las cadenas marcadas para traducción, y "
 "sustituir el texto traducido en tiempo de ejecución."
 
-#: C/gtkmm-tutorial-in.xml:6532(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6350
 msgid "Preparing your project"
 msgstr "Preparar su proyecto"
 
-#: C/gtkmm-tutorial-in.xml:6535(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:6353
+#, fuzzy
+#| msgid ""
+#| "In the instructions below we will assume that you will not be using "
+#| "<application>gettext</application> directly, but <application>intltool</"
+#| "application>, which was written specifically for <literal>GNOME</"
+#| "literal>. <application>intltool</application> uses <function>gettext()</"
+#| "function>, which extracts strings from source code, but "
+#| "<application>intltool</application> can also combine strings from other "
+#| "files, for example from desktop menu details, and GUI resource files such "
+#| "as <application>Glade</application> files, into standard "
+#| "<application>gettext</application><filename>.pot/.po</filename> files."
 msgid ""
 "In the instructions below we will assume that you will not be using "
 "<application>gettext</application> directly, but <application>intltool</"
@@ -11365,8 +14628,8 @@ msgid ""
 "which extracts strings from source code, but <application>intltool</"
 "application> can also combine strings from other files, for example from "
 "desktop menu details, and GUI resource files such as <application>Glade</"
-"application> files, into standard <application>gettext</"
-"application><filename>.pot/.po</filename> files."
+"application> files, into standard <application>gettext</application> "
+"<filename>.pot/.po</filename> files."
 msgstr ""
 "En las instrucciones a continuación se asumirá que no usará "
 "<application>gettext</application> directamente, sino <application>intltool</"
@@ -11378,14 +14641,25 @@ msgstr ""
 "como archivos <application>Glade</application>, en archivos "
 "<application>gettext</application><filename>.pot/.po</filename> estándar."
 
-#: C/gtkmm-tutorial-in.xml:6546(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:6364
+#, fuzzy
+#| msgid ""
+#| "We also assume that you are using autotools (e.g. <application>automake</"
+#| "application> and <application>autoconf</application>) to build your "
+#| "project, and that you are using <ulink url=\"http://git.gnome.org/browse/";
+#| "gnome-common/tree/autogen.sh\"><literal>./autogen.sh</literal> from "
+#| "<application>gnome-common</application></ulink>, which, among other "
+#| "things, takes care of some <application>intltool</application> "
+#| "initialization."
 msgid ""
 "We also assume that you are using autotools (e.g. <application>automake</"
 "application> and <application>autoconf</application>) to build your project, "
-"and that you are using <ulink url=\"http://git.gnome.org/browse/gnome-common/";
-"tree/autogen.sh\"><literal>./autogen.sh</literal> from <application>gnome-"
-"common</application></ulink>, which, among other things, takes care of some "
-"<application>intltool</application> initialization."
+"and that you are using <ulink url=\"https://gitlab.gnome.org/GNOME/gnome-";
+"common/blob/master/autogen.sh\"> <literal>./autogen.sh</literal> from "
+"<application>gnome-common</application></ulink> or a similar "
+"<literal>autogen.sh</literal> file, which, among other things, takes care of "
+"some <application>intltool</application> initialization."
 msgstr ""
 "También se asume que está usando autotools (por ejemplo, "
 "<application>automake</application> y <application>autoconf</application>) "
@@ -11395,7 +14669,37 @@ msgstr ""
 "cosas, se ocupa de parte de la inicialización de <application>intltool</"
 "application>."
 
-#: C/gtkmm-tutorial-in.xml:6559(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6378
+msgid ""
+"An alternative to <application>gnome-common</application>'s <literal>autogen."
+"sh</literal> may look like this:"
+msgstr ""
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6382
+#, no-wrap
+msgid ""
+"#! /bin/sh -e\n"
+"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
+"test -n \"$srcdir\" || srcdir=.\n"
+"\n"
+"autoreconf --force --install --verbose --warnings=all \"$srcdir\"\n"
+"echo \"Running intltoolize --copy --force --automake\"\n"
+"intltoolize --copy --force --automake\n"
+"test -n \"$NOCONFIGURE\" || \"$srcdir/configure\" \"$@\""
+msgstr ""
+"#! /bin/sh -e\n"
+"test -n \"$srcdir\" || srcdir=`dirname \"$0\"`\n"
+"test -n \"$srcdir\" || srcdir=.\n"
+"\n"
+"autoreconf --force --install --verbose --warnings=all \"$srcdir\"\n"
+"echo \"Running intltoolize --copy --force --automake\"\n"
+"intltoolize --copy --force --automake\n"
+"test -n \"$NOCONFIGURE\" || \"$srcdir/configure\" \"$@\""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6391
 msgid ""
 "Create a sub-directory named <literal>po</literal> in your project's root "
 "directory. This directory will eventually contain all of your translations. "
@@ -11411,7 +14715,8 @@ msgstr ""
 "archivo <literal>ChangeLog</literal> en la carpeta <literal>po</literal> "
 "para que los traductores puedan rastrear los cambios de las traducciones."
 
-#: C/gtkmm-tutorial-in.xml:6569(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6401
 msgid ""
 "<literal>LINGUAS</literal> contains an alphabetically sorted list of codes "
 "identifying the languages for which your program is translated (comment "
@@ -11428,7 +14733,8 @@ msgstr ""
 "programa estuviera traducido al alemán y al japonés, su archivo "
 "<literal>LINGUAS</literal> se vería así:"
 
-#: C/gtkmm-tutorial-in.xml:6578(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6410
 #, no-wrap
 msgid ""
 "# keep this file sorted alphabetically, one language code per line\n"
@@ -11439,7 +14745,8 @@ msgstr ""
 "de\n"
 "ja"
 
-#: C/gtkmm-tutorial-in.xml:6581(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6413
 msgid ""
 "(In addition, you'd have the files <literal>ja.po</literal> and <literal>de."
 "po</literal> in your <literal>po</literal> directory which contain the "
@@ -11449,7 +14756,8 @@ msgstr ""
 "literal> en su carpeta <literal>po</literal> que contendrían las "
 "traducciones al alemán y al japonés, respectivamente)."
 
-#: C/gtkmm-tutorial-in.xml:6588(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6420
 msgid ""
 "<literal>POTFILES.in</literal> is a list of paths to all files which contain "
 "strings marked up for translation, starting from the project root directory. "
@@ -11465,7 +14773,8 @@ msgstr ""
 "archivos conteniendo cadenas que deben traducirse, su archivo "
 "<literal>POTFILES.in</literal> se vería así:"
 
-#: C/gtkmm-tutorial-in.xml:6597(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6429
 #, no-wrap
 msgid ""
 "src/main.cc\n"
@@ -11474,7 +14783,8 @@ msgstr ""
 "src/main.cc\n"
 "src/other.cc"
 
-#: C/gtkmm-tutorial-in.xml:6600(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6432
 msgid ""
 "If you are using <application>gettext</application> directly, you can only "
 "mark strings for translation if they are in source code file. However, if "
@@ -11497,7 +14807,8 @@ msgstr ""
 "archivos <filename>.glade</filename> a la lista en <literal>POTFILES.in</"
 "literal>."
 
-#: C/gtkmm-tutorial-in.xml:6613(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6445
 msgid ""
 "Now that there is a place to put your translations, you need to initialize "
 "<application>intltool</application> and <application>gettext</application>. "
@@ -11509,8 +14820,20 @@ msgstr ""
 "application>. Añádale el siguiente código a su <literal>configure.ac</"
 "literal>, substituyendo «programname» con el nombre de su programa:"
 
-#: C/gtkmm-tutorial-in.xml:6620(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6452
 #, no-wrap
+#| msgid ""
+#| "IT_PROG_INTLTOOL([0.35.0])\n"
+#| "\n"
+#| "GETTEXT_PACKAGE=programname\n"
+#| "AC_SUBST(GETTEXT_PACKAGE)\n"
+#| "AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], [\"$GETTEXT_PACKAGE\"],\n"
+#| "                   [The domain to use with gettext])\n"
+#| "AM_GLIB_GNU_GETTEXT\n"
+#| "\n"
+#| "PROGRAMNAME_LOCALEDIR=[${datadir}/locale]\n"
+#| "AC_SUBST(PROGRAMNAME_LOCALEDIR)"
 msgid ""
 "IT_PROG_INTLTOOL([0.35.0])\n"
 "\n"
@@ -11518,7 +14841,8 @@ msgid ""
 "AC_SUBST(GETTEXT_PACKAGE)\n"
 "AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], [\"$GETTEXT_PACKAGE\"],\n"
 "                   [The domain to use with gettext])\n"
-"AM_GLIB_GNU_GETTEXT\n"
+"AM_GNU_GETTEXT([external])\n"
+"AM_GNU_GETTEXT_VERSION([0.17])\n"
 "\n"
 "PROGRAMNAME_LOCALEDIR=[${datadir}/locale]\n"
 "AC_SUBST(PROGRAMNAME_LOCALEDIR)"
@@ -11529,12 +14853,14 @@ msgstr ""
 "AC_SUBST(GETTEXT_PACKAGE)\n"
 "AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], [\"$GETTEXT_PACKAGE\"],\n"
 "                   [The domain to use with gettext])\n"
-"AM_GLIB_GNU_GETTEXT\n"
+"AM_GNU_GETTEXT([external])\n"
+"AM_GNU_GETTEXT_VERSION([0.17])\n"
 "\n"
 "PROGRAMNAME_LOCALEDIR=[${datadir}/locale]\n"
 "AC_SUBST(PROGRAMNAME_LOCALEDIR)"
 
-#: C/gtkmm-tutorial-in.xml:6631(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6464
 msgid ""
 "This <varname>PROGRAMNAME_LOCALEDIR</varname> variable will be used later in "
 "the <literal>Makefile.am</literal> file, to define a macro that will be used "
@@ -11544,7 +14870,17 @@ msgstr ""
 "archivo <literal>Makefile.am</literal>, para definir una macro que se usará "
 "cuando inicialice <application>gettext</application> en su código fuente."
 
-#: C/gtkmm-tutorial-in.xml:6642(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6471
+msgid ""
+"<literal>AM_GLIB_GNU_GETTEXT</literal> has been an alternative to "
+"<literal>AM_GNU_GETTEXT</literal> and <literal>AM_GNU_GETTEXT_VERSION</"
+"literal>, but <literal>AM_GLIB_GNU_GETTEXT</literal> is now deprecated, and "
+"shall not be used in new code."
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6482
 msgid ""
 "Add <literal>po</literal> to the <literal>SUBDIRS</literal> variable. "
 "Without this, your translations won't get built and installed when you build "
@@ -11553,7 +14889,8 @@ msgstr ""
 "Añada <literal>po</literal> a la variable <literal>SUBDIRS</literal>. Sin "
 "esto, las traducciones no se construirán al construir el programa."
 
-#: C/gtkmm-tutorial-in.xml:6649(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6489
 #, no-wrap
 msgid ""
 "INTLTOOL_FILES = intltool-extract.in \\\n"
@@ -11564,21 +14901,31 @@ msgstr ""
 "                 intltool-merge.in \\\n"
 "                 intltool-update.in"
 
-#: C/gtkmm-tutorial-in.xml:6647(para)
-msgid "Define <literal>INTLTOOL_FILES</literal> as: <placeholder-1/>"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6487
+#, fuzzy
+#| msgid "Define <literal>INTLTOOL_FILES</literal> as: <placeholder-1/>"
+msgid "Define <literal>INTLTOOL_FILES</literal> as: <_:programlisting-1/>"
 msgstr "Defina <literal>INTLTOOL_FILES</literal> como: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6655(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6495
+#, fuzzy
+#| msgid ""
+#| "Add <literal>INTLTOOL_FILES</literal> to the <literal>EXTRA_DIST</"
+#| "literal> list of files. This ensures that when you do a <command>make "
+#| "dist</command>, these commands will be included in the source tarball."
 msgid ""
 "Add <literal>INTLTOOL_FILES</literal> to the <literal>EXTRA_DIST</literal> "
 "list of files. This ensures that when you do a <command>make dist</command>, "
-"these commands will be included in the source tarball."
+"these files will be included in the source tarball."
 msgstr ""
 "Añada <literal>INTLTOOL_FILES</literal> a la lista de archivos "
 "<literal>EXTRA_DIST</literal>. Esto asegura que cuando haga un <command>make "
 "dist</command>, este comando se incluya en el archivo fuente."
 
-#: C/gtkmm-tutorial-in.xml:6665(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6505
 #, no-wrap
 msgid ""
 "DISTCLEANFILES = ... intltool-extract \\\n"
@@ -11591,15 +14938,43 @@ msgstr ""
 "                 intltool-update \\\n"
 "                 po/.intltool-merge-cache"
 
-#: C/gtkmm-tutorial-in.xml:6663(para)
-msgid "Update your <literal>DISTCLEANFILES</literal>: <placeholder-1/>"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6503
+#, fuzzy
+#| msgid "Update your <literal>DISTCLEANFILES</literal>: <placeholder-1/>"
+msgid "Update your <literal>DISTCLEANFILES</literal>: <_:programlisting-1/>"
 msgstr "Actualice su <literal>DISTCLEANFILES</literal>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6638(para)
-msgid "In the top-level Makefile.am: <placeholder-1/>"
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6515
+#, no-wrap
+msgid ""
+"desktopdir = $(datadir)/applications\n"
+"desktop_in_files = programname.desktop.in\n"
+"desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)\n"
+"@INTLTOOL_DESKTOP_RULE@"
+msgstr ""
+"desktopdir = $(datadir)/applications\n"
+"desktop_in_files = programname.desktop.in\n"
+"desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)\n"
+"@INTLTOOL_DESKTOP_RULE@"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6512
+msgid ""
+"Depending on the types of files that contain translatable strings, add code "
+"such as <_:programlisting-1/>"
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6478
+#, fuzzy
+#| msgid "In the top-level Makefile.am: <placeholder-1/>"
+msgid "In the top-level Makefile.am: <_:itemizedlist-1/>"
 msgstr "En el Makefile.am de nivel superior: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6674(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6524
 msgid ""
 "In your <literal>src/Makefile.am</literal>, update your "
 "<literal>AM_CPPFLAGS</literal> to add the following preprocessor macro "
@@ -11608,12 +14983,14 @@ msgstr ""
 "En su <literal>src/Makefile.am</literal>, actualice su <literal>AM_CPPFLAGS</"
 "literal> para añadir la siguiente definición de macro de preprocesador:"
 
-#: C/gtkmm-tutorial-in.xml:6679(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6529
 #, no-wrap
 msgid "AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\\\"${PROGRAMNAME_LOCALEDIR}\\\""
 msgstr "AM_CPPFLAGS = ... -DPROGRAMNAME_LOCALEDIR=\\\"${PROGRAMNAME_LOCALEDIR}\\\""
 
-#: C/gtkmm-tutorial-in.xml:6680(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6530
 msgid ""
 "This macro will be used when you initialize <literal>gettext</literal> in "
 "your source code."
@@ -11621,11 +14998,13 @@ msgstr ""
 "Esta macro se usará cuando inicialice <literal>gettext</literal> en su "
 "código fuente."
 
-#: C/gtkmm-tutorial-in.xml:6687(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6537
 msgid "Marking strings for translation"
 msgstr "Marcar cadenas para traducir"
 
-#: C/gtkmm-tutorial-in.xml:6689(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6539
 msgid ""
 "String literals should be typed in the source code in English, but they "
 "should be surrounded by a call to the <function>gettext()</function> "
@@ -11637,7 +15016,8 @@ msgstr ""
 "Estas cadenas se extraerán para traducción y las traducciones podrán usarse "
 "en tiempo de ejecución en lugar de las cadenas originales en inglés."
 
-#: C/gtkmm-tutorial-in.xml:6697(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6547
 msgid ""
 "The <application>GNU gettext</application> package allows you to mark "
 "strings in source code, extract those strings for translation, and use the "
@@ -11647,22 +15027,33 @@ msgstr ""
 "en el código fuente, extraer esas cadenas para su traducción, y usar las "
 "cadenas traducidas en su aplicación."
 
-#: C/gtkmm-tutorial-in.xml:6709(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6559
 #, no-wrap
 msgid "display_message(\"Getting ready for i18n.\");"
 msgstr "display_message(\"Getting ready for i18n.\");"
 
-#: C/gtkmm-tutorial-in.xml:6711(programlisting)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:6561
 #, no-wrap
 msgid "display_message(_(\"Getting ready for i18n.\"));"
 msgstr "display_message(_(\"Getting ready for i18n.\"));"
 
-#: C/gtkmm-tutorial-in.xml:6703(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6553
+#, fuzzy
+#| msgid ""
+#| "However, <application>Glib</application> defines <function>gettext()</"
+#| "function> support macros which are shorter wrappers in an easy-to-use "
+#| "form. To use these macros, include <literal>&lt;glibmm/i18n.h&gt;</"
+#| "literal>, and then, for example, substitute: <placeholder-1/> with: "
+#| "<placeholder-2/>"
 msgid ""
 "However, <application>Glib</application> defines <function>gettext()</"
 "function> support macros which are shorter wrappers in an easy-to-use form. "
 "To use these macros, include <literal>&lt;glibmm/i18n.h&gt;</literal>, and "
-"then, for example, substitute: <placeholder-1/> with: <placeholder-2/>"
+"then, for example, substitute: <_:programlisting-1/> with: <_:"
+"programlisting-2/>"
 msgstr ""
 "Sin embargo, <application>Glib</application> define macros de soporte de "
 "<function>gettext()</function> que son contenedores más pequeños en una "
@@ -11670,18 +15061,21 @@ msgstr ""
 "i18n.h&gt;</literal>, y luego, por ejemplo, substituya <placeholder-1/> con: "
 "<placeholder-2/>"
 
-#: C/gtkmm-tutorial-in.xml:6722(programlisting)
-#, no-wrap
-msgid "xgettext -a -o my-strings --omit-header *.cc *.h"
-msgstr "xgettext -a -o my-strings --omit-header *.cc *.h"
-
-#: C/gtkmm-tutorial-in.xml:6714(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6564
+#, fuzzy
+#| msgid ""
+#| "For reference, it is possible to generate a file which contains all "
+#| "strings which appear in your code, even if they are not marked for "
+#| "translation, together with file name and line number references. To "
+#| "generate such a file named <literal>my-strings</literal>, execute the "
+#| "following command, within the source code directory: <placeholder-1/>"
 msgid ""
 "For reference, it is possible to generate a file which contains all strings "
 "which appear in your code, even if they are not marked for translation, "
 "together with file name and line number references. To generate such a file "
 "named <literal>my-strings</literal>, execute the following command, within "
-"the source code directory: <placeholder-1/>"
+"the source code directory:"
 msgstr ""
 "A manera de referencia, es posible generar un archivo que contenga todas las "
 "cadenas que aparecen en su código, incluso si no están marcadas para "
@@ -11690,41 +15084,69 @@ msgstr ""
 "ejecute el siguiente comando, dentro de la carpeta del código fuente: "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6729(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6573
 #, no-wrap
-msgid ""
-"bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n"
-"bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n"
-"textdomain(GETTEXT_PACKAGE);"
-msgstr ""
-"bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n"
-"bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n"
-"textdomain(GETTEXT_PACKAGE);"
+msgid "xgettext -a -o my-strings --omit-header *.cc *.h"
+msgstr "xgettext -a -o my-strings --omit-header *.cc *.h"
 
-#: C/gtkmm-tutorial-in.xml:6725(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6575
+#, fuzzy
+#| msgid ""
+#| "Finally, to let your program use the translation for the current locale, "
+#| "add this code to the beginning of your <filename>main.cc</filename> file, "
+#| "to initialize gettext. <placeholder-1/>"
 msgid ""
 "Finally, to let your program use the translation for the current locale, add "
 "this code to the beginning of your <filename>main.cc</filename> file, to "
-"initialize gettext. <placeholder-1/>"
+"initialize gettext."
 msgstr ""
 "Finalmente, para dejar que su programa use la traducción de la localización "
 "actual, añádale este código al principio de su archivo <filename>main.cc</"
 "filename>, para inicializar gettext. <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6735(title)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:6580
+#, no-wrap
+msgid ""
+"bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n"
+"bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n"
+"textdomain(GETTEXT_PACKAGE);"
+msgstr ""
+"bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);\n"
+"bind_textdomain_codeset(GETTEXT_PACKAGE, \"UTF-8\");\n"
+"textdomain(GETTEXT_PACKAGE);"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6585
 msgid "How gettext works"
 msgstr "Cómo funciona gettext"
 
-#: C/gtkmm-tutorial-in.xml:6737(para)
-msgid ""
-"<application>intltool</application> / <application>xgettext</application> "
-"script extracts the strings and puts them in a <filename>mypackage.pot</"
-"filename> file. The translators of your application create their "
-"translations by first copying this <filename>.pot</filename> file to a "
-"<filename>localename.po</filename> file. A locale identifies a language and "
-"an encoding for that language, including date and numerical formats. Later, "
-"when the text in your source code has changed, the <literal>msmerge</"
-"literal> script is used to update the <filename>localename.po</filename> "
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6587
+#, fuzzy
+#| msgid ""
+#| "<application>intltool</application> / <application>xgettext</application> "
+#| "script extracts the strings and puts them in a <filename>mypackage.pot</"
+#| "filename> file. The translators of your application create their "
+#| "translations by first copying this <filename>.pot</filename> file to a "
+#| "<filename>localename.po</filename> file. A locale identifies a language "
+#| "and an encoding for that language, including date and numerical formats. "
+#| "Later, when the text in your source code has changed, the "
+#| "<literal>msmerge</literal> script is used to update the "
+#| "<filename>localename.po</filename> files from the regenerated <filename>."
+#| "pot</filename> file."
+msgid ""
+"The <application>intltool-update</application> or <application>xgettext</"
+"application> script extracts the strings and puts them in a "
+"<filename>mypackage.pot</filename> file. The translators of your application "
+"create their translations by first copying this <filename>.pot</filename> "
+"file to a <filename>localename.po</filename> file. A locale identifies a "
+"language and an encoding for that language, including date and numerical "
+"formats. Later, when the text in your source code has changed, the "
+"<application>msgmerge</application> or <application>intltool-update</"
+"application> script is used to update the <filename>localename.po</filename> "
 "files from the regenerated <filename>.pot</filename> file."
 msgstr ""
 "El script <application>intltool</application> / <application>xgettext</"
@@ -11738,7 +15160,8 @@ msgstr ""
 "<filename>localename.po</filename> del archivo <filename>.pot</filename> "
 "regenerado."
 
-#: C/gtkmm-tutorial-in.xml:6751(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6601
 msgid ""
 "At install time, the <filename>.po</filename> files are converted to a "
 "binary format (with the extension <filename>.mo</filename>) and placed in a "
@@ -11750,7 +15173,8 @@ msgstr ""
 "se ponen en una carpeta de sistema para archivos de localización, por "
 "ejemplo <filename>/usr/share/locale/</filename>."
 
-#: C/gtkmm-tutorial-in.xml:6758(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6608
 msgid ""
 "When the application runs, the <application>gettext</application> library "
 "checks the system-wide directory to see if there is a <filename>.mo</"
@@ -11768,28 +15192,37 @@ msgstr ""
 "<literal>gettext</literal>, buscará la traducción de la cadena particular. "
 "Si no encuentra ninguna, usará la cadena original."
 
-#: C/gtkmm-tutorial-in.xml:6770(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6620
 msgid "Testing and adding translations"
 msgstr "Comprobar y añadir las traducciones"
 
-#: C/gtkmm-tutorial-in.xml:6777(programlisting)
-#, no-wrap
-msgid "intltool-update --pot"
-msgstr "intltool-update --pot"
-
-#: C/gtkmm-tutorial-in.xml:6772(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6622
+#, fuzzy
+#| msgid ""
+#| "To convince yourself that you've done well, you may wish to add a "
+#| "translation for a new locale. In order to do that, go to the "
+#| "<filename>po</filename> subdirectory of your project and execute the "
+#| "following command: <placeholder-1/>"
 msgid ""
 "To convince yourself that you've done well, you may wish to add a "
 "translation for a new locale. In order to do that, go to the <filename>po</"
-"filename> subdirectory of your project and execute the following command: "
-"<placeholder-1/>"
+"filename> subdirectory of your project and execute the following command:"
 msgstr ""
 "Para convencerse de que ha hecho lo correcto, tal vez quiera añadir una "
 "traducción para una localización nueva. Para hacer eso, vaya a la subcarpeta "
 "<filename>po</filename> de su proyecto y ejecute el siguiente comando: "
 "<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6780(para)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:6628
+#, no-wrap
+msgid "intltool-update --pot"
+msgstr "intltool-update --pot"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6630
 msgid ""
 "That will create a file named <filename>programname.pot</filename>. Now copy "
 "that file to <filename>languagecode.po</filename>, such as <filename>de.po</"
@@ -11809,7 +15242,8 @@ msgstr ""
 "codificación del archivo <filename>.po</filename> (especificada en la "
 "cabecera, pero también en el contenido) a <literal>UTF-8</literal>."
 
-#: C/gtkmm-tutorial-in.xml:6793(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:6643
 msgid ""
 "It's possible that certain strings will be marked as <literal>fuzzy</"
 "literal> in the <filename>.po</filename> file. These translations will not "
@@ -11821,51 +15255,73 @@ msgstr ""
 "cadena original. Para hacerlas aparecer, simplemente elimine la etiqueta "
 "<literal>fuzzy</literal>."
 
-#: C/gtkmm-tutorial-in.xml:6803(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6653
 msgid "Resources"
 msgstr "Recursos"
 
-#: C/gtkmm-tutorial-in.xml:6812(ulink)
-msgid "L10N Guidelines for Developers"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6661
+msgid ""
+"<ulink url=\"https://wiki.gnome.org/TranslationProject/DevGuidelines\";> L10N "
+"Guidelines for Developers</ulink>"
 msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:6819(ulink)
-msgid "Intltool README"
-msgstr "README de intltool"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6668
+msgid ""
+"<ulink url=\"http://bazaar.launchpad.net/~intltool/intltool/trunk/view/head:/";
+"README\">Intltool README</ulink>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:6825(ulink)
-msgid "How to use Git for GNOME translators"
-msgstr "Cómo usar Git para traductores de GNOME"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6674
+msgid ""
+"<ulink url=\"https://wiki.gnome.org/TranslationProject/GitHowTo\";>How to use "
+"Git for GNOME translators</ulink>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:6831(ulink)
-msgid "gettext manual"
-msgstr "manual de gettext"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6680
+msgid ""
+"<ulink url=\"http://www.gnu.org/software/gettext/manual/gettext.html";
+"\">gettext manual</ulink>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:6837(literal)
-msgid "gtkmm_hello"
-msgstr "gtkmm_hello"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6686
+msgid ""
+"<ulink url=\"http://ftp.gnome.org/pub/GNOME/sources/gtkmm_hello/";
+"\"><literal>gtkmm_hello</literal> example package</ulink>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:6837(ulink) C/gtkmm-tutorial-in.xml:6843(ulink)
-msgid "<placeholder-1/> example package"
-msgstr "<placeholder-1/> paquete de ejemplo"
-
-#: C/gtkmm-tutorial-in.xml:6843(literal)
-msgid "gnomemm_hello"
-msgstr "gnomemm_hello"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6692
+msgid ""
+"<ulink url=\"http://ftp.gnome.org/pub/GNOME/sources/gnomemm_hello/";
+"\"><literal>gnomemm_hello</literal> example package</ulink>"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:6805(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6655
+#, fuzzy
+#| msgid ""
+#| "More information about what lies behind the internationalization and "
+#| "localization process is presented and demonstrated in: <placeholder-1/>"
 msgid ""
 "More information about what lies behind the internationalization and "
-"localization process is presented and demonstrated in: <placeholder-1/>"
+"localization process is presented and demonstrated in: <_:itemizedlist-1/>"
 msgstr ""
 "Se presenta y demuestra más información sobre lo que subyace al proceso de "
 "internacionalización y localización en: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6853(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6703
 msgid "Expecting UTF8"
 msgstr "Esperar UTF8"
 
-#: C/gtkmm-tutorial-in.xml:6854(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6704
 msgid ""
 "A properly internationalized application will not make assumptions about the "
 "number of bytes in a character. That means that you shouldn't use pointer "
@@ -11879,7 +15335,8 @@ msgstr ""
 "debe usar <classname>std::string</classname> o funciones estándar de C como "
 "<function>strlen()</function> porque asumen lo mismo."
 
-#: C/gtkmm-tutorial-in.xml:6861(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6711
 msgid ""
 "However, you probably already avoid bare char* arrays and pointer arithmetic "
 "by using <classname>std::string</classname>, so you just need to start using "
@@ -11893,32 +15350,38 @@ msgstr ""
 "el capítulo <link linkend=\"sec-basics-ustring\">Conceptos básicos</link> "
 "acerca de <classname>Glib::ustring</classname>."
 
-#: C/gtkmm-tutorial-in.xml:6869(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6720
 msgid "Glib::ustring and std::iostreams"
 msgstr "Glib::ustring y std::iostreams"
 
-#: C/gtkmm-tutorial-in.xml:6886(programlisting)
-#, no-wrap
-msgid ""
-"std::ostringstream output;\n"
-"output.imbue(std::locale(\"\")); // use the user's locale for this stream\n"
-"output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
-"label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
-msgstr ""
-"std::ostringstream output;\n"
-"output.imbue(std::locale(\"\")); // use the user's locale for this stream\n"
-"output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
-"label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
-
-#. <para>TODO: This section is not clear - it needs to spell things out more clearly and obviously.</para>
-#: C/gtkmm-tutorial-in.xml:6871(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6722
+#, fuzzy
+#| msgid ""
+#| "Unfortunately, the integration with the standard iostreams is not "
+#| "completely foolproof. <application>gtkmm</application> converts "
+#| "<classname>Glib::ustring</classname>s to a locale-specific encoding "
+#| "(which usually is not UTF-8) if you output them to an <classname>ostream</"
+#| "classname> with <function>operator&lt;&lt;</function>. Likewise, "
+#| "retrieving <classname>Glib::ustrings</classname> from <classname>istream</"
+#| "classname> with <function>operator&gt;&gt;</function> causes a conversion "
+#| "in the opposite direction. But this scheme breaks down if you go through "
+#| "a <classname>std::string</classname>, e.g. by inputting text from a "
+#| "stream to a <classname>std::string</classname> and then implicitly "
+#| "converting it to a <classname>Glib::ustring</classname>. If the string "
+#| "contained non-ASCII characters and the current locale is not UTF-8 "
+#| "encoded, the result is a corrupted <classname>Glib::ustring</classname>. "
+#| "You can work around this with a manual conversion. For instance, to "
+#| "retrieve the <classname>std::string</classname> from a "
+#| "<classname>ostringstream</classname>: <placeholder-1/>"
 msgid ""
 "Unfortunately, the integration with the standard iostreams is not completely "
 "foolproof. <application>gtkmm</application> converts <classname>Glib::"
 "ustring</classname>s to a locale-specific encoding (which usually is not "
 "UTF-8) if you output them to an <classname>ostream</classname> with "
 "<function>operator&lt;&lt;</function>. Likewise, retrieving <classname>Glib::"
-"ustrings</classname> from <classname>istream</classname> with "
+"ustring</classname>s from <classname>istream</classname> with "
 "<function>operator&gt;&gt;</function> causes a conversion in the opposite "
 "direction. But this scheme breaks down if you go through a <classname>std::"
 "string</classname>, e.g. by inputting text from a stream to a "
@@ -11927,8 +15390,7 @@ msgid ""
 "characters and the current locale is not UTF-8 encoded, the result is a "
 "corrupted <classname>Glib::ustring</classname>. You can work around this "
 "with a manual conversion. For instance, to retrieve the <classname>std::"
-"string</classname> from a <classname>ostringstream</classname>: "
-"<placeholder-1/>"
+"string</classname> from a <classname>ostringstream</classname>:"
 msgstr ""
 "Desafortunadamente, la integración con iostreams estándar no es "
 "completamente infalible. <application>gtkmm</application> convierte "
@@ -11947,11 +15409,31 @@ msgstr ""
 "manual. Por ejemplo, para recuperar la <classname>std::string</classname> de "
 "un <classname>ostringstream</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:6896(title)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:6738
+#, no-wrap
+msgid ""
+"std::locale::global(std::locale(\"\")); // Set the global locale to the user's preferred locale.\n"
+"                                      // Usually unnecessary here, because Glib::init()\n"
+"                                      // or Gtk::Application::create() does it for you.\n"
+"std::ostringstream output;\n"
+"output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
+"label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
+msgstr ""
+"std::locale::global(std::locale(\"\")); // Set the global locale to the user's preferred locale.\n"
+"                                      // Usually unnecessary here, because Glib::init()\n"
+"                                      // or Gtk::Application::create() does it for you.\n"
+"std::ostringstream output;\n"
+"output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
+"label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6749
 msgid "Pitfalls"
 msgstr "Errores comunes"
 
-#: C/gtkmm-tutorial-in.xml:6898(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6751
 msgid ""
 "There are a few common mistakes that you would discover eventually yourself. "
 "But this section might help you to avoid them."
@@ -11959,13 +15441,21 @@ msgstr ""
 "Hay algunos errores comunes que eventualmente descubriría por sí mismo. Pero "
 "esta sección le ayudará a evitarlos."
 
-#: C/gtkmm-tutorial-in.xml:6901(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6754
 msgid "Same strings, different semantics"
 msgstr "Mismas cadenas, semánticas diferentes"
 
-#: C/gtkmm-tutorial-in.xml:6903(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6756
+#, fuzzy
+#| msgid ""
+#| "Sometimes two english strings are identical but have different meanings "
+#| "in different contexts, so they would probably not be identical when "
+#| "translated. Since the English strings are used as look-up keys, this "
+#| "causes problems."
 msgid ""
-"Sometimes two english strings are identical but have different meanings in "
+"Sometimes two English strings are identical but have different meanings in "
 "different contexts, so they would probably not be identical when translated. "
 "Since the English strings are used as look-up keys, this causes problems."
 msgstr ""
@@ -11974,7 +15464,8 @@ msgstr ""
 "idénticas al traducirlas. Dado que las cadenas en inglés se usan como claves "
 "de búsqueda, esto causa problemas."
 
-#: C/gtkmm-tutorial-in.xml:6907(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6760
 msgid ""
 "In these cases, you should add extra characters to the strings. For "
 "instance, use <literal>\"jumps[noun]\"</literal> and <literal>"
@@ -11992,7 +15483,8 @@ msgstr ""
 "la llamada a <function>gettext</function>. Tales comentarios se mostrarán en "
 "los archivos <filename>.po</filename>. Por ejemplo:"
 
-#: C/gtkmm-tutorial-in.xml:6917(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:6769
 #, no-wrap
 msgid ""
 "// note to translators: don't translate the \"[noun]\" part - it is\n"
@@ -12003,11 +15495,27 @@ msgstr ""
 "// just here to distinguish the string from another \"jumps\" string\n"
 "text = strip(gettext(\"jumps[noun]\"), \"[noun]\");"
 
-#: C/gtkmm-tutorial-in.xml:6923(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6773
+msgid ""
+"If you use <application>Glib</application>'s support macros, it's easier. "
+"Use <function>C_()</function> instead of <function>_()</function>. For "
+"instance:"
+msgstr ""
+
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:6777
+#, no-wrap
+msgid "GLib::ustring text(C_(\"noun\", \"jumps\"));"
+msgstr "GLib::ustring text(C_(\"noun\", \"jumps\"));"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6782
 msgid "Composition of strings"
 msgstr "Composición de cadenas"
 
-#: C/gtkmm-tutorial-in.xml:6925(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6784
 msgid ""
 "C programmers use <function>sprintf()</function> to compose and concatenate "
 "strings. C++ favours streams, but unfortunately, this approach makes "
@@ -12021,11 +15529,13 @@ msgstr ""
 "traduce separadamente, sin permitirle a los traductores reordenarlos de "
 "acuerdo a la gramática del lenguaje."
 
-#: C/gtkmm-tutorial-in.xml:6932(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6791
 msgid "For instance, this code would be problematic:"
 msgstr "Por ejemplo, este código podría ser problemático:"
 
-#: C/gtkmm-tutorial-in.xml:6934(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:6793
 #, no-wrap
 msgid ""
 "std::cout &lt;&lt; _(\"Current amount: \") &lt;&lt; amount\n"
@@ -12038,7 +15548,27 @@ msgstr ""
 "\n"
 "label.set_text(_(\"Really delete \") + filename + _(\" now?\"));"
 
-#: C/gtkmm-tutorial-in.xml:6943(programlisting)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6798
+#, fuzzy
+#| msgid ""
+#| "So you should either avoid this situation or use <ulink url=\"http://";
+#| "developer.gnome.org/glibmm/unstable/classGlib_1_1ustring.html"
+#| "\"><function>Glib::ustring::compose()</function></ulink> which supports "
+#| "syntax such as: <placeholder-1/>"
+msgid ""
+"So you should either avoid this situation or use <ulink url=\"http://";
+"developer.gnome.org/glibmm/unstable/classGlib_1_1ustring.html"
+"\"><function>Glib::ustring::compose()</function></ulink> which supports "
+"syntax such as:"
+msgstr ""
+"Por lo que debe evitar esta situación o usar <ulink url=\"http://developer.";
+"gnome.org/glibmm/unstable/classGlib_1_1ustring.html\"><function>Glib::"
+"ustring::compose()</function></ulink> que soporta sintaxis como: "
+"<placeholder-1/>"
+
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:6803
 #, no-wrap
 msgid ""
 "std::cout &lt;&lt; Glib::ustring::compose(\n"
@@ -12051,23 +15581,13 @@ msgstr ""
 "\n"
 "label.set_text(Glib::ustring::compose(_(\"Really delete %1 now?\"), filename));"
 
-#: C/gtkmm-tutorial-in.xml:6939(para)
-msgid ""
-"So you should either avoid this situation or use <ulink url=\"http://";
-"developer.gnome.org/glibmm/unstable/classGlib_1_1ustring.html"
-"\"><function>Glib::ustring::compose()</function></ulink> which supports "
-"syntax such as: <placeholder-1/>"
-msgstr ""
-"Por lo que debe evitar esta situación o usar <ulink url=\"http://developer.";
-"gnome.org/glibmm/unstable/classGlib_1_1ustring.html\"><function>Glib::"
-"ustring::compose()</function></ulink> que soporta sintaxis como: "
-"<placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:6951(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6810
 msgid "Assuming the displayed size of strings"
 msgstr "Asumir el tamaño de las cadenas mostradas"
 
-#: C/gtkmm-tutorial-in.xml:6953(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6812
 msgid ""
 "You never know how much space a string will take on screen when translated. "
 "It might very possibly be twice the size of the original English string. "
@@ -12079,11 +15599,13 @@ msgstr ""
 "Afortunadamente, la mayoría de los widgets de <application>gtkmm</"
 "application> se expandirán en tiempo de ejecución al tamaño requerido."
 
-#: C/gtkmm-tutorial-in.xml:6957(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6816
 msgid "Unusual words"
 msgstr "Palabras poco frecuentes"
 
-#: C/gtkmm-tutorial-in.xml:6959(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6818
 msgid ""
 "You should avoid cryptic abbreviations, slang, or jargon. They are usually "
 "difficult to translate, and are often difficult for even native speakers to "
@@ -12094,11 +15616,13 @@ msgstr ""
 "de entender a los hablantes nativos. Por ejemplo, es preferible "
 "«application» antes que «app»."
 
-#: C/gtkmm-tutorial-in.xml:6965(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6824
 msgid "Using non-ASCII characters in strings"
 msgstr "Usar caracteres no ASCII en cadenas"
 
-#: C/gtkmm-tutorial-in.xml:6967(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6826
 msgid ""
 "Currently, <application>gettext</application> does not support non-ASCII "
 "characters (i.e. any characters with a code above 127) in source code. For "
@@ -12108,11 +15632,19 @@ msgstr ""
 "ASCII (es decir, cualquier carácter con un código superior a 127) en el "
 "código fuente. Por ejemplo, no puede usar el signo de derechos de autor (©)."
 
-#: C/gtkmm-tutorial-in.xml:6973(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6832
+#, fuzzy
+#| msgid ""
+#| "To work around this, you could write a comment in the source code just "
+#| "before the string, telling the translators to use the special character "
+#| "if it is available in their languages. For english, you could then make "
+#| "an American English <filename>en_US.po</filename> translation which used "
+#| "that special character."
 msgid ""
 "To work around this, you could write a comment in the source code just "
 "before the string, telling the translators to use the special character if "
-"it is available in their languages. For english, you could then make an "
+"it is available in their languages. For English, you could then make an "
 "American English <filename>en_US.po</filename> translation which used that "
 "special character."
 msgstr ""
@@ -12122,11 +15654,13 @@ msgstr ""
 "inglés, después puede hacer una traducción a inglés americano "
 "<filename>en_US.po</filename> que use ese carácter especial."
 
-#: C/gtkmm-tutorial-in.xml:6981(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6840
 msgid "Getting help with translations"
 msgstr "Obtener ayuda con las traducciones"
 
-#: C/gtkmm-tutorial-in.xml:6983(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6842
 #, fuzzy
 #| msgid ""
 #| "If your program is free software, there is a whole <literal>GNOME</"
@@ -12144,7 +15678,8 @@ msgstr ""
 "url=\"https://live.gnome.org/TranslationProject/\";>Proyecto de traducción de "
 "<literal>GNOME</literal></ulink>."
 
-#: C/gtkmm-tutorial-in.xml:6988(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6847
 msgid ""
 "The way it works is that you upload your source code to a git repository "
 "where translators can access it, then contact the gnome-i18n mailing list "
@@ -12156,10 +15691,21 @@ msgstr ""
 "añadir su proyecto a la <ulink url=\"http://l10n.gnome.org/module/\";>lista "
 "de módulos para traducir</ulink>."
 
-#: C/gtkmm-tutorial-in.xml:6993(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6852
+#, fuzzy
+#| msgid ""
+#| "Then you make sure you update the file <filename>POTFILES.in</filename> "
+#| "in the <filename>po/</filename> subdirectory (<command>intltool-update -"
+#| "M</command> can help with this) so that the translators always access "
+#| "updated <filename>myprogram.pot</filename> files, and simply freeze the "
+#| "strings at least a couple of days before you make a new release, "
+#| "announcing it on gnome-i18n. Depending on the number of strings your "
+#| "program contains and how popular it is, the translations will then start "
+#| "to tick in as <filename>languagename.po</filename> files."
 msgid ""
 "Then you make sure you update the file <filename>POTFILES.in</filename> in "
-"the <filename>po/</filename> subdirectory (<command>intltool-update -M</"
+"the <filename>po/</filename> subdirectory (<command>intltool-update -m</"
 "command> can help with this) so that the translators always access updated "
 "<filename>myprogram.pot</filename> files, and simply freeze the strings at "
 "least a couple of days before you make a new release, announcing it on gnome-"
@@ -12176,7 +15722,8 @@ msgstr ""
 "que su programa contenga y cómo de popular sea, los traductores empezarán a "
 "generar archivos <filename>languagename.po</filename>."
 
-#: C/gtkmm-tutorial-in.xml:7005(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6864
 msgid ""
 "Note that most language teams only consist of 1-3 persons, so if your "
 "program contains a lot of strings, it might last a while before anyone has "
@@ -12193,11 +15740,14 @@ msgstr ""
 "realmente serio (en el sentido de que esté pulido y se mantenga) podrían "
 "decidir usar su tiempo en algún otro proyecto."
 
-#: C/gtkmm-tutorial-in.xml:7017(title) C/gtkmm-tutorial-in.xml:7135(title)
+#. (itstool) path: chapter/title
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6876 C/index-in.docbook:6947
 msgid "Custom Widgets"
 msgstr "Widgets personalizados"
 
-#: C/gtkmm-tutorial-in.xml:7019(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:6878
 msgid ""
 "<application>gtkmm</application> makes it very easy to derive new widgets by "
 "inheriting from an existing widget class, either by deriving from a "
@@ -12213,11 +15763,13 @@ msgstr ""
 "exista ningún punto de partida adecuado. En este caso, puede implementar un "
 "widget desde cero."
 
-#: C/gtkmm-tutorial-in.xml:7026(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:6885
 msgid "Custom Containers"
 msgstr "Contenedores personalizados"
 
-#: C/gtkmm-tutorial-in.xml:7029(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6889
 msgid ""
 "<methodname>get_request_mode_vfunc()</methodname>: Return what <literal>Gtk::"
 "SizeRequestMode</literal> is preferred by the container."
@@ -12225,41 +15777,21 @@ msgstr ""
 "<methodname>get_request_mode_vfunc()</methodname>: devuelve qué "
 "<literal>Gtk::SizeRequestMode</literal> prefiere el contenedor."
 
-#: C/gtkmm-tutorial-in.xml:7030(para)
-msgid ""
-"<methodname>get_preferred_width_vfunc()</methodname>: Calculate the minimum "
-"and natural width of the container."
-msgstr ""
-"<methodname>get_preferred_width_vfunc()</methodname>: calcula la anchura "
-"mínima y natural del contenedor."
-
-#: C/gtkmm-tutorial-in.xml:7031(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6890
+#, fuzzy
+#| msgid ""
+#| "<methodname>get_preferred_height_vfunc()</methodname>: Calculate the "
+#| "minimum and natural height of the container."
 msgid ""
-"<methodname>get_preferred_height_vfunc()</methodname>: Calculate the minimum "
-"and natural height of the container."
+"<methodname>measure_vfunc()</methodname>: Calculate the minimum and natural "
+"width or height of the container."
 msgstr ""
 "<methodname>get_preferred_height_vfunc()</methodname>: calcula la altura "
 "mínima y natural del contenedor."
 
-#: C/gtkmm-tutorial-in.xml:7032(para)
-msgid ""
-"<methodname>get_preferred_width_for_height_vfunc()</methodname>: Calculate "
-"the minimum and natural width of the container, if it would be given the "
-"specified height."
-msgstr ""
-"<methodname>get_preferred_width_for_height_vfunc()</methodname>: calcula la "
-"anchura mínima y natural del contenedor, si se le da la altura especificada."
-
-#: C/gtkmm-tutorial-in.xml:7033(para)
-msgid ""
-"<methodname>get_preferred_height_for_width_vfunc()</methodname>: Calculate "
-"the minimum and natural height of the container, if it would be given the "
-"specified width."
-msgstr ""
-"<methodname>get_preferred_height_for_width_vfunc()</methodname>: calcula la "
-"altura mínima y natural del contenedor, si se le da la anchura especificada."
-
-#: C/gtkmm-tutorial-in.xml:7034(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6891
 msgid ""
 "<methodname>on_size_allocate()</methodname>: Position the child widgets, "
 "given the height and width that the container has actually been given."
@@ -12267,60 +15799,57 @@ msgstr ""
 "<methodname>on_size_allocate()</methodname>: posiciona a los widgets hijos "
 "de acuerdo a la altura y anchura que se le ha dado al contenedor."
 
-#: C/gtkmm-tutorial-in.xml:7035(para)
-msgid ""
-"<methodname>forall_vfunc()</methodname>: Call the same callback for each of "
-"the children."
-msgstr ""
-"<methodname>forall_vfunc()</methodname>: llama al mismo retorno de llamada "
-"para cada uno de los hijos."
-
-#: C/gtkmm-tutorial-in.xml:7036(para)
-msgid "<methodname>on_add()</methodname>: Add a child widget to the container."
-msgstr "<methodname>on_add()</methodname>: añade un widget hijo al contenedor."
-
-#: C/gtkmm-tutorial-in.xml:7037(para)
-msgid ""
-"<methodname>on_remove()</methodname>: Remove a child widget from the "
-"container."
-msgstr ""
-"<methodname>on_remove()</methodname>: elimina un widget hijo del contenedor."
-
-#: C/gtkmm-tutorial-in.xml:7038(para)
-msgid ""
-"<methodname>child_type_vfunc()</methodname>: Return what type of child can "
-"be added."
-msgstr ""
-"<methodname>child_type_vfunc()</methodname>: devuelve qué tipo de hijo puede "
-"añadirse."
-
-#: C/gtkmm-tutorial-in.xml:7027(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6886
+#, fuzzy
+#| msgid ""
+#| "When deriving from <classname>Gtk::Container</classname>, you should "
+#| "override the following virtual methods: <placeholder-1/>"
 msgid ""
-"When deriving from <classname>Gtk::Container</classname>, you should "
-"override the following virtual methods: <placeholder-1/>"
+"When deriving a custom container widget directly from <classname>Gtk::"
+"Widget</classname>, you should override the following virtual methods: <_:"
+"itemizedlist-1/>"
 msgstr ""
 "Cuando derive de un <classname>Gtk::Container</classname>, debe reemplazar "
 "los siguientes métodos virtuales: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:7042(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6895
+#, fuzzy
+#| msgid ""
+#| "The <methodname>get_request_mode_vfunc()</methodname>, "
+#| "<methodname>get_preferred_width_vfunc()</methodname>, "
+#| "<methodname>get_preferred_height_vfunc()</methodname>, "
+#| "<methodname>get_preferred_width_for_height_vfunc()</methodname>, "
+#| "<methodname>get_preferred_height_for_width_vfunc()</methodname>, and "
+#| "<methodname>on_size_allocate()</methodname> virtual methods control the "
+#| "layout of the child widgets. For instance, if your container has 2 child "
+#| "widgets, with one below the other, your "
+#| "<methodname>get_request_mode_vfunc()</methodname> might request height-"
+#| "for-width layout. Then your <methodname>get_preferred_width_vfunc()</"
+#| "methodname> might report the maximum of the widths of the child widgets, "
+#| "and <methodname>get_preferred_height_for_width_vfunc()</methodname> might "
+#| "report the sum of their heights. If you want padding between the child "
+#| "widgets then you would add that to the width and height too. Your "
+#| "widget's container will use this result to ensure that your widget gets "
+#| "enough space, and not less. By examining each widget's parent, and its "
+#| "parent, this logic will eventually decide the size of the top-level "
+#| "window."
 msgid ""
 "The <methodname>get_request_mode_vfunc()</methodname>, "
-"<methodname>get_preferred_width_vfunc()</methodname>, "
-"<methodname>get_preferred_height_vfunc()</methodname>, "
-"<methodname>get_preferred_width_for_height_vfunc()</methodname>, "
-"<methodname>get_preferred_height_for_width_vfunc()</methodname>, and "
+"<methodname>measure_vfunc()</methodname>, and "
 "<methodname>on_size_allocate()</methodname> virtual methods control the "
 "layout of the child widgets. For instance, if your container has 2 child "
 "widgets, with one below the other, your "
 "<methodname>get_request_mode_vfunc()</methodname> might request height-for-"
-"width layout. Then your <methodname>get_preferred_width_vfunc()</methodname> "
-"might report the maximum of the widths of the child widgets, and "
-"<methodname>get_preferred_height_for_width_vfunc()</methodname> might report "
-"the sum of their heights. If you want padding between the child widgets then "
-"you would add that to the width and height too. Your widget's container will "
-"use this result to ensure that your widget gets enough space, and not less. "
-"By examining each widget's parent, and its parent, this logic will "
-"eventually decide the size of the top-level window."
+"width layout. Then your <methodname>measure_vfunc()</methodname> might "
+"report the maximum of the widths of the child widgets when asked to report "
+"width, and it might report the sum of their heights when asked to report "
+"height. If you want padding between the child widgets then you would add "
+"that to the width and height too. Your widget's container will use this "
+"result to ensure that your widget gets enough space, and not less. By "
+"examining each widget's parent, and its parent, this logic will eventually "
+"decide the size of the top-level window."
 msgstr ""
 "Los métodos virtuales <methodname>get_request_mode_vfunc()</methodname>, "
 "<methodname>get_preferred_width_vfunc()</methodname>, "
@@ -12340,19 +15869,32 @@ msgstr ""
 "suficiente, y no menos. Examinando al padre de cada widget, y a su padre, "
 "esta lógica eventualmente decidirá el tamaño de la ventana de nivel superior."
 
-#: C/gtkmm-tutorial-in.xml:7062(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6912
 msgid ""
 "You are not guaranteed to get the <literal>Gtk::SizeRequestMode</literal> "
-"that you request. Therefore all four of the "
-"<methodname>get_preferred_xxx_vfunc()</methodname> methods must return "
-"sensible values."
+"that you request. Therefore <methodname>measure_vfunc()</methodname> must "
+"return sensible values for all reasonable values of its input parameters. "
+"For a description of <methodname>measure_vfunc()</methodname>'s parameters "
+"see also the description of <methodname>Gtk::Widget::measure()</methodname>, "
+"which may be better documented than <methodname>measure_vfunc()</methodname>."
 msgstr ""
-"No se le garantiza obtener el <literal>Gtk::SizeRequestMode</literal> que "
-"pida. Por lo tanto, los cuatro métodos "
-"<methodname>get_preferred_xxx_vfunc()</methodname> deben devolver valores "
-"razonables."
 
-#: C/gtkmm-tutorial-in.xml:7067(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6919
+#, fuzzy
+#| msgid ""
+#| "<methodname>on_size_allocate()</methodname> receives the actual height "
+#| "and width that the parent container has decided to give to your widget. "
+#| "This might be more than the minimum, or even more than the natural size, "
+#| "for instance if the top-level window has been expanded. You might choose "
+#| "to ignore the extra space and leave a blank area, or you might choose to "
+#| "expand your child widgets to fill the space, or you might choose to "
+#| "expand the padding between your widgets. It's your container, so you "
+#| "decide. Don't forget to call <methodname>set_allocation()</methodname> "
+#| "inside your <methodname>on_size_allocate()</methodname> implementation to "
+#| "actually use the allocated space that has been offered by the parent "
+#| "container."
 msgid ""
 "<methodname>on_size_allocate()</methodname> receives the actual height and "
 "width that the parent container has decided to give to your widget. This "
@@ -12360,10 +15902,7 @@ msgid ""
 "instance if the top-level window has been expanded. You might choose to "
 "ignore the extra space and leave a blank area, or you might choose to expand "
 "your child widgets to fill the space, or you might choose to expand the "
-"padding between your widgets. It's your container, so you decide. Don't "
-"forget to call <methodname>set_allocation()</methodname> inside your "
-"<methodname>on_size_allocate()</methodname> implementation to actually use "
-"the allocated space that has been offered by the parent container."
+"padding between your widgets. It's your container, so you decide."
 msgstr ""
 "<methodname>on_size_allocate()</methodname> recibe la altura y anchura "
 "reales que el contenedor padre ha decidido darle a su widget. Esto podría "
@@ -12376,97 +15915,38 @@ msgstr ""
 "<methodname>on_size_allocate()</methodname> para usar realmente el espacio "
 "asignado que le ha ofrecido el contenedor padre."
 
-#: C/gtkmm-tutorial-in.xml:7079(para)
-msgid ""
-"Unless your container is a top-level window that derives from "
-"<classname>Gtk::Window</classname>, you should probably also call "
-"<methodname>Gtk::Widget::set_has_window(false)</methodname> in your "
-"constructor. This means that your container does not create its own "
-"<classname>Gdk::Window</classname>, but uses its parent's window. (Note the "
-"difference between <classname>Gtk::Window</classname> and <classname>Gdk::"
-"Window</classname>.) If your container does need its own <classname>Gdk::"
-"Window</classname>, and does not derive from <classname>Gtk::Window</"
-"classname>, you must also override the <methodname>on_realize()</methodname> "
-"method as described in the <link linkend=\"sec-custom-widgets\">Custom "
-"Widgets</link> section. And unless your container draws directly onto the "
-"underlying <classname>Gdk::Window</classname>, you should probably call "
-"<methodname>set_redraw_on_allocate(false)</methodname> to improve "
-"performance."
-msgstr ""
-"A menos que su contenedor sea una ventana de nivel superior que derive de "
-"<classname>Gtk::Window</classname>, probablemente también deba llamar a "
-"<methodname>Gtk::Widget::set_has_window(false)</methodname> en su "
-"constructor. Esto significa que su contenedor no crea su propia "
-"<classname>Gdk::Window</classname>, sino que usa la de su padre (note la "
-"diferencia entre <classname>Gtk::Window</classname> y <classname>Gdk::"
-"Window</classname>). Si su contenedor no necesita su propia  <classname>Gdk::"
-"Window</classname>, y no deriva de <classname>Gtk::Window</classname>, "
-"también debe reemplazar el método <methodname>on_realize()</methodname> como "
-"se describe en la sección <link linkend=\"sec-custom-widgets\">Widgets "
-"personalizados</link>. Y, a menos que su contenedor dibuje directamente "
-"sobre la <classname>Gdk::Window</classname> subyacente, probablemente deba "
-"llamar a <methodname>set_redraw_on_allocate(false)</methodname> para mejorar "
-"el rendimiento."
-
-#: C/gtkmm-tutorial-in.xml:7095(para)
-msgid ""
-"By overriding <methodname>forall_vfunc()</methodname> you can allow "
-"applications to operate on all of the container's child widgets. For "
-"instance, <methodname>show_all_children()</methodname> uses this to find all "
-"the child widgets and show them."
-msgstr ""
-"Reemplazar <methodname>forall_vfunc()</methodname> puede permitirle a las "
-"aplicaciones operar en todos los widgets hijos de los contenedores. Por "
-"ejemplo, <methodname>show_all_children()</methodname> usa esto para "
-"encontrar a todos los widgets hijos y mostrarlos."
-
-#: C/gtkmm-tutorial-in.xml:7100(para)
-msgid ""
-"Although your container might have its own method to set the child widgets, "
-"you should still provide an implementation for the virtual "
-"<methodname>on_add()</methodname> and <methodname>on_remove()</methodname> "
-"methods from the base class, so that the add() and remove() methods will do "
-"something appropriate if they are called."
-msgstr ""
-"A pesar de que su contenedor puede tener su propio método para establecer "
-"widgets hijos, aún así debe proporcionar una implementación para los métodos "
-"virtuales <methodname>on_add()</methodname> y <methodname>on_remove()</"
-"methodname> de la clase base, para que los métodos add() y remove() hagan "
-"algo apropiado si se llaman."
-
-#: C/gtkmm-tutorial-in.xml:7106(para)
-msgid ""
-"Your implementation of the <methodname>child_type_vfunc()</methodname> "
-"method should report the type of widget that may be added to your container, "
-"if it is not yet full. This is usually <methodname>Gtk::Widget::get_type()</"
-"methodname> to indicate that the container may contain any class derived "
-"from <classname>Gtk::Widget</classname>. If the container may not contain "
-"any more widgets, then this method should return <literal>G_TYPE_NONE</"
-"literal>."
-msgstr ""
-"Su implementación del método <methodname>child_type_vfunc()</methodname> "
-"debe reportar el tipo de widget que puede añadírsele a su contenedor, si "
-"todavía no está lleno. Esto es generalmente <methodname>Gtk::Widget::"
-"get_type()</methodname> para indicar que el contenedor puede contener "
-"cualquier clase derivada de <classname>Gtk::Widget</classname>. Si el "
-"contenedor no puede contener más widgets, entonces este método debe devolver "
-"<literal>G_TYPE_NONE</literal>."
-
-#: C/gtkmm-tutorial-in.xml:7118(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6930
+#, fuzzy
+#| msgid ""
+#| "This example implements a container with two child widgets, one above the "
+#| "other. Of course, in this case it would be far simpler just to use a "
+#| "vertical <classname>Gtk::Box</classname>."
 msgid ""
 "This example implements a container with two child widgets, one above the "
 "other. Of course, in this case it would be far simpler just to use a "
-"vertical <classname>Gtk::Box</classname>."
+"vertical <classname>Gtk::Box</classname> or <classname>Gtk::Grid</classname>."
 msgstr ""
 "Este ejemplo implementa un contenedor con dos widgets hijos, uno encima del "
 "otro. Por supuesto, en este caso sería mucho más simple usar sólo una "
 "<classname>Gtk::Box</classname> vertical."
 
-#: C/gtkmm-tutorial-in.xml:7123(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:6935
 msgid "Custom Container"
 msgstr "Contenedor personalizado"
 
-#: C/gtkmm-tutorial-in.xml:7136(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6941
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/custom/custom_container/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/custom/custom_container/\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6948
 msgid ""
 "By deriving directly from <classname>Gtk::Widget</classname> you can do all "
 "the drawing for your widget directly, instead of just arranging child "
@@ -12478,7 +15958,8 @@ msgstr ""
 "hijos. Por ejemplo, una <classname>Gtk::Label</classname> dibuja el texto de "
 "la etiqueta, pero no hace esto usando a otros widgets."
 
-#: C/gtkmm-tutorial-in.xml:7147(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6959
 msgid ""
 "<methodname>get_request_mode_vfunc()</methodname>: (optional) Return what "
 "<literal>Gtk::SizeRequestMode</literal> is preferred by the widget."
@@ -12486,41 +15967,21 @@ msgstr ""
 "<methodname>get_request_mode_vfunc()</methodname>: (opcional) devuelve qué "
 "<literal>Gtk::SizeRequestMode</literal> prefiere el widget."
 
-#: C/gtkmm-tutorial-in.xml:7148(para)
-msgid ""
-"<methodname>get_preferred_width_vfunc()</methodname>: Calculate the minimum "
-"and natural width of the widget."
-msgstr ""
-"<methodname>get_preferred_width_vfunc()</methodname>: calcula la anchura "
-"mínima y natural del widget."
-
-#: C/gtkmm-tutorial-in.xml:7149(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6960
+#, fuzzy
+#| msgid ""
+#| "<methodname>get_preferred_height_vfunc()</methodname>: Calculate the "
+#| "minimum and natural height of the widget."
 msgid ""
-"<methodname>get_preferred_height_vfunc()</methodname>: Calculate the minimum "
-"and natural height of the widget."
+"<methodname>measure_vfunc()</methodname>: Calculate the minimum and natural "
+"width or height of the widget."
 msgstr ""
 "<methodname>get_preferred_height_vfunc()</methodname>: calcula la altura "
 "mínima y natural del widget."
 
-#: C/gtkmm-tutorial-in.xml:7150(para)
-msgid ""
-"<methodname>get_preferred_width_for_height_vfunc()</methodname>: Calculate "
-"the minimum and natural width of the widget, if it would be given the "
-"specified height."
-msgstr ""
-"<methodname>get_preferred_width_for_height_vfunc()</methodname>: calcula la "
-"anchura mínima y natural del widget, si se le da la altura especificada."
-
-#: C/gtkmm-tutorial-in.xml:7151(para)
-msgid ""
-"<methodname>get_preferred_height_for_width_vfunc()</methodname>: Calculate "
-"the minimum and natural height of the widget, if it would be given the "
-"specified width."
-msgstr ""
-"<methodname>get_preferred_height_for_width_vfunc()</methodname>: calcula la "
-"altura mínima y natural del widget, si se le da la anchura especificada."
-
-#: C/gtkmm-tutorial-in.xml:7152(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6961
 msgid ""
 "<methodname>on_size_allocate()</methodname>: Position the widget, given the "
 "height and width that it has actually been given."
@@ -12528,53 +15989,83 @@ msgstr ""
 "<methodname>on_size_allocate()</methodname>: posiciona al widget de acuerdo "
 "a la altura y anchura que se le ha dado."
 
-#: C/gtkmm-tutorial-in.xml:7153(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6962
+#, fuzzy
+#| msgid ""
+#| "<methodname>on_realize()</methodname>: Associate a <classname>Gdk::"
+#| "Window</classname> with the widget."
 msgid ""
-"<methodname>on_realize()</methodname>: Associate a <classname>Gdk::Window</"
+"<methodname>on_realize()</methodname>: Associate a <classname>Gdk::Surface</"
 "classname> with the widget."
 msgstr ""
 "<methodname>on_realize()</methodname>: asocia una <methodname>Gdk::Window</"
 "methodname> al widget."
 
-#: C/gtkmm-tutorial-in.xml:7154(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6963
+#, fuzzy
+#| msgid ""
+#| "<methodname>on_unrealize()</methodname>: (optional) Break the association "
+#| "with the <classname>Gdk::Window</classname>."
 msgid ""
 "<methodname>on_unrealize()</methodname>: (optional) Break the association "
-"with the <classname>Gdk::Window</classname>."
+"with the <classname>Gdk::Surface</classname>."
 msgstr ""
 "<methodname>on_unrealize()</methodname>: (opcional) rompe la asociación con "
 "la <methodname>Gdk::Window</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:7155(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6964
 msgid "<methodname>on_map()</methodname>: (optional)"
 msgstr "<methodname>on_map()</methodname>: (opcional)"
 
-#: C/gtkmm-tutorial-in.xml:7156(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6965
 msgid "<methodname>on_unmap()</methodname>: (optional)"
 msgstr "<methodname>on_unmap()</methodname>: (opcional)"
 
-#: C/gtkmm-tutorial-in.xml:7157(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:6966
+#, fuzzy
+#| msgid ""
+#| "<methodname>on_draw()</methodname>: Draw on the supplied "
+#| "<classname>Cairo::Context</classname>."
 msgid ""
-"<methodname>on_draw()</methodname>: Draw on the supplied <classname>Cairo::"
-"Context</classname>."
+"<methodname>snapshot_vfunc()</methodname>: Create a render node, e.g. a "
+"<classname>Cairo::Context</classname> node, and draw on it."
 msgstr ""
 "<methodname>on_draw()</methodname>: dibuja en el <methodname>Cairo::Context</"
 "methodname> proporcionado."
 
-#: C/gtkmm-tutorial-in.xml:7142(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6954
+#, fuzzy
+#| msgid ""
+#| "When deriving from <classname>Gtk::Widget</classname>, you should "
+#| "override the following virtual methods. The methods marked (optional) "
+#| "need not be overridden in all custom widgets. The base class's methods "
+#| "may be appropriate. <placeholder-1/>"
 msgid ""
 "When deriving from <classname>Gtk::Widget</classname>, you should override "
 "the following virtual methods. The methods marked (optional) need not be "
 "overridden in all custom widgets. The base class's methods may be "
-"appropriate. <placeholder-1/>"
+"appropriate. <_:itemizedlist-1/>"
 msgstr ""
 "Cuando derive de <classname>Gtk::Widget</classname>, debe reemplazar los "
 "siguientes métodos virtuales. No necesita reemplazar los métodos marcados "
 "como (opcional) en todos los widgets personalizados. Los métodos de la clase "
 "base pueden ser apropiados. <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:7161(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:6970
+#, fuzzy
+#| msgid ""
+#| "The first 6 methods in the previous table are also overridden in custom "
+#| "containers. They are briefly described in the <link linkend=\"sec-custom-"
+#| "containers\">Custom Containers</link> section."
 msgid ""
-"The first 6 methods in the previous table are also overridden in custom "
+"The first 3 methods in the previous table are also overridden in custom "
 "containers. They are briefly described in the <link linkend=\"sec-custom-"
 "containers\">Custom Containers</link> section."
 msgstr ""
@@ -12582,53 +16073,77 @@ msgstr ""
 "contenedores personalizados. Se describen brevemente en la sección <link "
 "linkend=\"sec-custom-containers\">Contenedores personalizados</link>."
 
-#: C/gtkmm-tutorial-in.xml:7166(para)
-msgid ""
-"Most custom widgets need their own <classname>Gdk::Window</classname> to "
-"draw on. Then you can call <methodname>Gtk::Widget::set_has_window(true)</"
-"methodname> in your constructor. (This is the default value.) If you do not "
-"call <methodname>set_has_window(false)</methodname>, you must override "
-"<methodname>on_realize()</methodname> and call <methodname>Gtk::Widget::"
-"set_realized()</methodname> and <methodname>Gtk::Widget::set_window()</"
-"methodname> from there."
-msgstr ""
-"La mayoría de los widgets personalizados necesitan su propia <classname>Gdk::"
-"Window</classname> sobre la que dibujar. Después podrá llamar a "
-"<methodname>Gtk::Widget::set_has_window(true)</methodname> en su constructor "
-"(este es el valor predeterminado). Si no llama a "
-"<methodname>set_has_window(false)</methodname>, debe reemplazar a "
-"<methodname>on_realize()</methodname> y llamar a <methodname>Gtk::Widget::"
-"set_realized()</methodname> y a <methodname>Gtk::Widget::set_window()</"
-"methodname> desde allí."
-
-#: C/gtkmm-tutorial-in.xml:7177(para)
-msgid "This example implements a widget which draws a Penrose triangle."
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6976
+msgid "Class Init and Instance Init Functions"
+msgstr ""
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6978
+msgid ""
+"Some <application>GTK</application> functions, if called at all, must be "
+"called from the class init function. Some other <application>GTK</"
+"application> functions, if called, must be called from the instance init "
+"function. If your custom widget must call any of those functions, you can "
+"derive a class from <classname>Glib::ExtraClassInit</classname> and derive "
+"your custom class from that class. The following example shows how that's "
+"done."
+msgstr ""
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:6987
+msgid "Custom Style Information"
+msgstr ""
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:6989
+msgid ""
+"Your widget class, whether it's derived directly from <classname>Gtk::"
+"Widget</classname> or from another widget class, can read some style "
+"information from a CSS (Cascading Style Sheets) file. The users of your "
+"widget, or the users of an application program with your widget, can then "
+"modify the style of your widget without modifying the source code. Useful "
+"classes are <classname>Gtk::StyleContext</classname> and <classname>Gtk::"
+"CssProvider</classname>. With the methods of <classname>Gtk::StyleContext</"
+"classname> you can read the values of your widget's style information. CSS "
+"files are described in the documentation of <application>GTK</application>. "
+"The following example shows a simple use of <methodname>Gtk::StyleContext::"
+"get_padding()</methodname>."
+msgstr ""
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:7003
+#, fuzzy
+#| msgid "This example implements a widget which draws a Penrose triangle."
+msgid "This example implements a widget which draws Penrose triangles."
 msgstr "Este ejemplo implementa un widget que dibuja un triángulo de Penrose."
 
-#: C/gtkmm-tutorial-in.xml:7180(title)
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7006
 msgid "Custom Widget"
 msgstr "Widget personalizado"
 
-#: C/gtkmm-tutorial-in.xml:7196(title)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:7012
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/custom/custom_widget/\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/custom/custom_widget/\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:7020
 msgid "Multi-threaded programs"
 msgstr "Programas con múltiples hilos"
 
-#: C/gtkmm-tutorial-in.xml:7199(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:7023
 msgid "The constraints"
 msgstr "Las limitaciones"
 
-#: C/gtkmm-tutorial-in.xml:7201(para)
-msgid ""
-"<application>glibmm</application> provides the normal set of thread "
-"launching functions, mutexes, condition variables and scoped locking classes "
-"required for writing multi-threaded programs using C++."
-msgstr ""
-"<application>glibmm</application> proporciona el conjunto normal de "
-"funciones de lanzamiento de hilos, exclusión mutua, variables condicionales "
-"y clases de bloqueo de alcance requeridas para escribir programas de "
-"múltiples hilos usando C++."
-
-#: C/gtkmm-tutorial-in.xml:7216(para)
+#. (itstool) path: footnote/para
+#: C/index-in.docbook:7034
 msgid ""
 "These interactions arise from the fact that, amongst other things, a class "
 "inheriting from <classname>sigc::trackable</classname> will, via that "
@@ -12663,15 +16178,25 @@ msgstr ""
 "a cualquier objeto <classname>sigc::connection</classname> relacionado a "
 "dicha conexión."
 
-#: C/gtkmm-tutorial-in.xml:7207(para)
-msgid ""
-"However, care is required when writing programs based on <application>gtkmm</"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7025
+#, fuzzy
+#| msgid ""
+#| "However, care is required when writing programs based on "
+#| "<application>gtkmm</application> using multiple threads of execution, "
+#| "arising from the fact that <application>libsigc++</application>, and in "
+#| "particular <classname>sigc::trackable</classname>, are not thread-safe. "
+#| "That's because none of the complex interactions that occur behind the "
+#| "scenes when using <application>libsigc++</application> are protected by a "
+#| "mutex or other means of synchronization. <placeholder-1/>"
+msgid ""
+"Care is required when writing programs based on <application>gtkmm</"
 "application> using multiple threads of execution, arising from the fact that "
 "<application>libsigc++</application>, and in particular <classname>sigc::"
 "trackable</classname>, are not thread-safe. That's because none of the "
 "complex interactions that occur behind the scenes when using "
 "<application>libsigc++</application> are protected by a mutex or other means "
-"of synchronization. <placeholder-1/>"
+"of synchronization. <_:footnote-1/>"
 msgstr ""
 "Sin embargo, hay que tener cuidado cuando se escriben programas basados en "
 "<application>gtkmm</application> usando múltiples hilos de ejecución, dado "
@@ -12681,11 +16206,13 @@ msgstr ""
 "<application>libsigc++</application> están protegidas por una exclusión "
 "mutua u otros métodos de sincronización. <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:7240(title)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:7058
 msgid "The rules"
 msgstr "Las reglas"
 
-#: C/gtkmm-tutorial-in.xml:7242(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:7060
 msgid ""
 "This requires a number of rules to be observed when writing multi-threaded "
 "programs using <application>gtkmm</application>. These are set out below, "
@@ -12700,7 +16227,8 @@ msgstr ""
 "porque los efectos no son intuitivos (consulte particularmente los puntos 4 "
 "y 5 debajo)."
 
-#: C/gtkmm-tutorial-in.xml:7253(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7071
 msgid ""
 "Use <classname>Glib::Dispatcher</classname> to invoke <application>gtkmm</"
 "application> functions from worker threads (this is dealt with in more "
@@ -12710,7 +16238,8 @@ msgstr ""
 "<application>gtkmm</application> desde hilos de trabajo (esto se explica con "
 "má detalle en la próxima sección)."
 
-#: C/gtkmm-tutorial-in.xml:7261(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7079
 msgid ""
 "A <classname>sigc::signal</classname> object should be regarded as owned by "
 "the thread which created it. Only that thread should connect a "
@@ -12736,7 +16265,8 @@ msgstr ""
 "referenciados por «slots» conectados al objeto de señal solo deben "
 "destruirse en ese hilo."
 
-#: C/gtkmm-tutorial-in.xml:7277(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7095
 msgid ""
 "Any <classname>sigc::connection</classname> object should be regarded as "
 "owned by the thread in which the method returning the <classname>sigc::"
@@ -12748,33 +16278,18 @@ msgstr ""
 "objeto <classname>sigc::connection</classname>. Solo ese hilo debe llamar a "
 "métodos de <classname>sigc::connection</classname> sobre el objeto."
 
-#: C/gtkmm-tutorial-in.xml:7287(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7105
 msgid ""
 "A <classname>sigc::slot</classname> object created by a call to "
 "<function>sigc::mem_fun()</function> which references a method of a class "
 "deriving from <classname>sigc::trackable</classname> should never be copied "
 "to another thread, nor destroyed by a different thread than the one which "
-"created it. (One consequence of this is that <methodname>Glib::Threads::"
-"Thread::create()</methodname> should not be called with a slot argument "
-"created by a call to <function>sigc::mem_fun()</function> which represents a "
-"method of such a class. It is however safe to pass <methodname>Glib::"
-"Threads::Thread::create()</methodname> a function object representing such a "
-"method by using, say, <function>boost::bind()</function> or, in C++11, "
-"<function>std::bind()</function> or a C++11 lambda expression.)"
-msgstr ""
-"Un objeto <classname>sigc::slot</classname> creado por una llamada a "
-"<function>sigc::mem_fun()</function> que referencia un método de una clase "
-"que deriva de <classname>sigc::trackable</classname> nunca debe copiarse a "
-"otro hilo, ni otro hilo aparte del que lo creó lo debe destruir. (Una "
-"consecuencia de esto es que <methodname>Glib::Threads::Thread::create()</"
-"methodname> no debe llamarse con un argumento de «slot» creado por una "
-"llamada a <function>sigc::mem_fun()</function> que represente a un método de "
-"una clase semejante. Sin embargo, es seguro pasarle <methodname>Glib::"
-"Threads::Thread::create()</methodname> a un objeto de función representando "
-"un método así usando, por ejemplo, <function>boost::bind()</function> o, en C"
-"++11, <function>std::bin()</function> o una expresión lambda de C++11)."
-
-#: C/gtkmm-tutorial-in.xml:7305(para)
+"created it."
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7115
 msgid ""
 "If a particular class object derives from <classname>sigc::trackable</"
 "classname>, only one thread should create <classname>sigc::slot</classname> "
@@ -12794,7 +16309,8 @@ msgstr ""
 "emphasis> de sus métodos no estáticos que usan esa función, o anulando "
 "aquellos «slots» desconectándolos o destruyendo el objeto «trackable»."
 
-#: C/gtkmm-tutorial-in.xml:7319(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7129
 msgid ""
 "Although <application>glib</application> is itself thread-safe, any "
 "<application>glibmm</application> wrappers which use <application>libsigc++</"
@@ -12815,16 +16331,25 @@ msgstr ""
 "manipular cualquier objeto <classname>sigc::connection</classname> que "
 "devuelvan."
 
-#: C/gtkmm-tutorial-in.xml:7331(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7141
+#, fuzzy
+#| msgid ""
+#| "The connect*_once() variants, <methodname>Glib::SignalIdle::"
+#| "connect_once()</methodname>, <methodname>Glib::SignalTimeout::"
+#| "connect_once()</methodname>, <methodname>Glib::SignalTimeout::"
+#| "connect_seconds_once()</methodname>, are thread-safe for any case where "
+#| "the slot is not created by a call to <function>sigc::mem_fun()</function> "
+#| "which represents a method of a class deriving from <classname>sigc::"
+#| "trackable</classname>. This is similar to <methodname>Glib::Threads::"
+#| "Thread::create()</methodname> as mentioned in point 4."
 msgid ""
 "The connect*_once() variants, <methodname>Glib::SignalIdle::connect_once()</"
 "methodname>, <methodname>Glib::SignalTimeout::connect_once()</methodname>, "
 "<methodname>Glib::SignalTimeout::connect_seconds_once()</methodname>, are "
 "thread-safe for any case where the slot is not created by a call to "
 "<function>sigc::mem_fun()</function> which represents a method of a class "
-"deriving from <classname>sigc::trackable</classname>. This is similar to "
-"<methodname>Glib::Threads::Thread::create()</methodname> as mentioned in "
-"point 4."
+"deriving from <classname>sigc::trackable</classname>."
 msgstr ""
 "Las variantes de «connect*_once()», <methodname>Glib::SignalIdle::"
 "connect_once()</methodname>, <methodname>Glib::SignalTimeout::"
@@ -12836,11 +16361,13 @@ msgstr ""
 "<methodname>Glib::Threads::Thread::create()</methodname> como se menciona en "
 "el punto 4."
 
-#: C/gtkmm-tutorial-in.xml:7350(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:7159
 msgid "Using Glib::Dispatcher"
 msgstr "Usar Glib::Dispatcher"
 
-#: C/gtkmm-tutorial-in.xml:7352(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7161
 msgid ""
 "The slots connected to <classname>sigc::signal</classname> objects execute "
 "in the thread which calls <methodname>emit()</methodname> or "
@@ -12865,7 +16392,8 @@ msgstr ""
 "conectados podrán ejecutar funciones de <application>gtkmm</application> con "
 "seguridad."
 
-#: C/gtkmm-tutorial-in.xml:7366(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7175
 msgid ""
 "Some thread safety rules on the use of <classname>Glib::Dispatcher</"
 "classname> still apply. As mentioned, a <classname>Glib::Dispatcher</"
@@ -12901,11 +16429,23 @@ msgstr ""
 "hilo de trabajo arranque (si se construye después, normalmente se requerirá "
 "sincronización adicional para asegurar la visibilidad)."
 
-#: C/gtkmm-tutorial-in.xml:7386(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7195
+#, fuzzy
+#| msgid ""
+#| "Aside from the fact that connected slots always execute in the receiver "
+#| "thread, <classname>Glib::Dispatcher</classname> objects are similar to "
+#| "<classname>sigc::signal&lt;void&gt;</classname> objects. They therefore "
+#| "cannot pass unbound arguments nor return a value. The best way to pass "
+#| "unbound arguments is with a thread-safe (asynchronous) queue. At the time "
+#| "of writing <application>glibmm</application> does not have one, although "
+#| "most people writing multi-threaded code will have one available to them "
+#| "(they are relatively easy to write although there are subtleties in "
+#| "combining thread safety with strong exception safety)."
 msgid ""
 "Aside from the fact that connected slots always execute in the receiver "
 "thread, <classname>Glib::Dispatcher</classname> objects are similar to "
-"<classname>sigc::signal&lt;void&gt;</classname> objects. They therefore "
+"<classname>sigc::signal&lt;void()&gt;</classname> objects. They therefore "
 "cannot pass unbound arguments nor return a value. The best way to pass "
 "unbound arguments is with a thread-safe (asynchronous) queue. At the time of "
 "writing <application>glibmm</application> does not have one, although most "
@@ -12923,7 +16463,22 @@ msgstr ""
 "disponible (son relativamente fáciles de escribir a pesar de que son "
 "detalles de combinar seguridad de hilos con seguridad fuerte de excepciones)."
 
-#: C/gtkmm-tutorial-in.xml:7399(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7208
+#, fuzzy
+#| msgid ""
+#| "A <classname>Glib::Dispatcher</classname> object can be emitted on by the "
+#| "receiver thread as well as by a worker thread, although this should be "
+#| "done within reasonable bounds. On unix-like systems <classname>Glib::"
+#| "Dispatcher</classname> objects share a single common pipe, which could in "
+#| "theory at least fill up on a very heavily loaded system running a program "
+#| "with a very large number of <classname>Dispatcher</classname> objects in "
+#| "use. Were the pipe to fill up before the receiver thread's main loop has "
+#| "had an opportunity to read from it to empty it, and the receiver thread "
+#| "attempt to emit and so write to it when it is in that condition, the "
+#| "receiver thread would block on the write, so deadlocking. Where the "
+#| "receiver thread is to emit, a normal <classname>sigc::signal&lt;void&gt;</"
+#| "classname> object could of course be used instead."
 msgid ""
 "A <classname>Glib::Dispatcher</classname> object can be emitted on by the "
 "receiver thread as well as by a worker thread, although this should be done "
@@ -12935,8 +16490,8 @@ msgid ""
 "opportunity to read from it to empty it, and the receiver thread attempt to "
 "emit and so write to it when it is in that condition, the receiver thread "
 "would block on the write, so deadlocking. Where the receiver thread is to "
-"emit, a normal <classname>sigc::signal&lt;void&gt;</classname> object could "
-"of course be used instead."
+"emit, a normal <classname>sigc::signal&lt;void()&gt;</classname> object "
+"could of course be used instead."
 msgstr ""
 "Solo el hilo receptor o de trabajo pueden emitir in objeto <classname>Glib::"
 "Dispatcher</classname>, aunque que esto debe hacerse dentro de límites "
@@ -12951,7 +16506,8 @@ msgstr ""
 "un objeto <classname>sigc::signal&lt;void&gt;</classname> normal puede "
 "usarse en su lugar."
 
-#: C/gtkmm-tutorial-in.xml:7419(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7228
 msgid ""
 "This is an example program with two threads, one GUI thread, like in all "
 "<application>gtkmm</application> programs, and one worker thread. The worker "
@@ -12960,13 +16516,21 @@ msgid ""
 "work</literal> button, or when you press the <literal>Quit</literal> button."
 msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7427(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7236
+#, fuzzy
+#| msgid ""
+#| "A <classname>Glib::Dispatcher</classname> is used for sending "
+#| "notifications from the worker thread to the GUI thread. The "
+#| "<classname>ExampleWorker</classname> class contains data which is "
+#| "accessed by both threads. This data is protected by a <classname>Glib::"
+#| "Threads::Mutex</classname>. Only the GUI thread updates the GUI."
 msgid ""
 "A <classname>Glib::Dispatcher</classname> is used for sending notifications "
 "from the worker thread to the GUI thread. The <classname>ExampleWorker</"
 "classname> class contains data which is accessed by both threads. This data "
-"is protected by a <classname>Glib::Threads::Mutex</classname>. Only the GUI "
-"thread updates the GUI."
+"is protected by a <classname>std::mutex</classname>. Only the GUI thread "
+"updates the GUI."
 msgstr ""
 "Se usa un <classname>Glib::Dispatcher</classname> para enviar notificaciones "
 "desde el hilo activo al hilo de la IGU. La clase <classname>ExampleWorker</"
@@ -12974,15 +16538,38 @@ msgstr ""
 "protegidos por una clase <classname>Glib::Threads::Mutex</classname>. Sólo "
 "el hilo de la IGU actualiza la propia IGU."
 
-#: C/gtkmm-tutorial-in.xml:7436(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7244
+msgid ""
+"Compiling and linking a multi-threaded program can require special compiler "
+"and linker options. If you use the <application>g++</application> compiler, "
+"add the <literal>-pthread</literal> option. Other compilers may require "
+"other options. If you build with <application>meson</application>, it "
+"handles the multi-threading complications for you, if you add "
+"<function>dependency('threads')</function>."
+msgstr ""
+
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7253
 msgid "Multi-Threaded Program"
 msgstr "Programa con múltiples hilos"
 
-#: C/gtkmm-tutorial-in.xml:7449(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7259
+msgid ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/multithread\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/multithread\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:7266
 msgid "Recommended Techniques"
 msgstr "Técnicas recomendadas"
 
-#: C/gtkmm-tutorial-in.xml:7451(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7268
 msgid ""
 "This section is simply a gathering of wisdom, general style guidelines and "
 "hints for creating <application>gtkmm</application> applications."
@@ -12991,7 +16578,8 @@ msgstr ""
 "estilo y consejos para crear aplicaciones en <application>gtkmm</"
 "application>."
 
-#: C/gtkmm-tutorial-in.xml:7455(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7272
 msgid ""
 "Use GNU <application>autoconf</application> and <application>automake</"
 "application>! They are your friends :) <application>Automake</application> "
@@ -13009,7 +16597,8 @@ msgstr ""
 "automática de la instalación de software, manipulando un gran número de "
 "peculiaridades de cada sistema para incrementar la portabilidad."
 
-#: C/gtkmm-tutorial-in.xml:7465(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7282
 msgid ""
 "Subclass Widgets to better organize your code. You should probably subclass "
 "your main <classname>Window</classname> at least. Then you can make your "
@@ -13019,7 +16608,8 @@ msgstr ""
 "heredar al menos su <classname>Window</classname> principal. Entonces podrá "
 "hacer widgets hijos y gestores de señales miembros de esa clase."
 
-#: C/gtkmm-tutorial-in.xml:7470(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7287
 msgid ""
 "Create your own signals instead of passing pointers around. Objects can "
 "communicate with each other via signals and signal handlers. This is much "
@@ -13037,20 +16627,34 @@ msgstr ""
 "<classname>sigc::signal</classname> normales, como se describe en la "
 "documentación de <application>libsigc++</application>."
 
-#: C/gtkmm-tutorial-in.xml:7479(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:7296
 msgid "Application Lifetime"
 msgstr "Tiempo de vida de la aplicación"
 
-#: C/gtkmm-tutorial-in.xml:7480(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7297
+#, fuzzy
+#| msgid ""
+#| "Most applications will have only one <classname>Window</classname>, or "
+#| "only one main window. These applications can use the <methodname>Gtk::"
+#| "Application::run(Gtk::Window&amp;)</methodname> overload. It shows the "
+#| "window and returns when the window has been hidden. This might happen "
+#| "when the user closes the window, or when your code decides to "
+#| "<methodname>hide()</methodname> the window. You can prevent the user from "
+#| "closing the window (for instance, if there are unsaved changes) by "
+#| "overriding <methodname>Gtk::Window::on_delete_event()</methodname>."
 msgid ""
 "Most applications will have only one <classname>Window</classname>, or only "
 "one main window. These applications can use the <methodname>Gtk::"
-"Application::run(Gtk::Window&amp;)</methodname> overload. It shows the "
-"window and returns when the window has been hidden. This might happen when "
-"the user closes the window, or when your code decides to <methodname>hide()</"
-"methodname> the window. You can prevent the user from closing the window "
-"(for instance, if there are unsaved changes) by overriding <methodname>Gtk::"
-"Window::on_delete_event()</methodname>."
+"Application::run(Gtk::Window&amp; window)</methodname> or <methodname>Gtk::"
+"Application::run(Gtk::Window&amp; window, int argc, char** argv)</"
+"methodname> overloads. They show the window and return when the window has "
+"been hidden. This might happen when the user closes the window, or when your "
+"code decides to <methodname>hide()</methodname> the window. You can prevent "
+"the user from closing the window (for instance, if there are unsaved "
+"changes) by overriding <methodname>Gtk::Window::on_delete_event()</"
+"methodname>."
 msgstr ""
 "La mayoría de las aplicaciones sólo tendrán una <classname>Window</"
 "classname>, o sólo una ventana principal. Estas aplicaciones pueden usar la "
@@ -13061,15 +16665,18 @@ msgstr ""
 "ejemplo, si hay cambios sin guardar) sobrecargando <methodname>Gtk::Window::"
 "on_delete_event()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:7488(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7306
 msgid "Most of our examples use this technique."
 msgstr "La mayoría de los ejemplos usan esta técnica."
 
-#: C/gtkmm-tutorial-in.xml:7492(title)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:7310
 msgid "Using a <application>gtkmm</application> widget"
 msgstr "Usar un widget de <application>gtkmm</application>"
 
-#: C/gtkmm-tutorial-in.xml:7494(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7312
 msgid ""
 "Our examples all tend to have the same structure. They follow these steps "
 "for using a <classname>Widget</classname>:"
@@ -13077,7 +16684,8 @@ msgstr ""
 "Todos los ejemplos tienden a tener la misma estructura. Siguen estos pasos "
 "para usar un <classname>widget</classname>:"
 
-#: C/gtkmm-tutorial-in.xml:7503(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7321
 msgid ""
 "Declare a variable of the type of <classname>Widget</classname> you wish to "
 "use, generally as member variable of a derived container class. You could "
@@ -13093,7 +16701,8 @@ msgstr ""
 "puntero, probablemente lo mejor sea hacer que el puntero sea una variable "
 "miembro de una clase contenedora para que pueda acceder a él más tarde."
 
-#: C/gtkmm-tutorial-in.xml:7514(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7332
 msgid ""
 "Set the attributes of the widget. If the widget has no default constructor, "
 "then you will need to initialize the widget in the initalizer list of your "
@@ -13103,5132 +16712,9864 @@ msgstr ""
 "predeterminado, tendrá que inicializar el widget en la lista inicializadora "
 "del constructor de su clase contenedora."
 
-#: C/gtkmm-tutorial-in.xml:7520(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7338
 msgid "Connect any signals you wish to use to the appropriate handlers."
 msgstr "Conecte las señales que quiere usar a los gestores apropiados."
 
-#: C/gtkmm-tutorial-in.xml:7526(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7344
+#, fuzzy
+#| msgid ""
+#| "Pack the widget into a container using the appropriate call, e.g. "
+#| "<methodname>Gtk::Container::add()</methodname> or "
+#| "<methodname>pack_start()</methodname>."
 msgid ""
 "Pack the widget into a container using the appropriate call, e.g. "
-"<methodname>Gtk::Container::add()</methodname> or <methodname>pack_start()</"
-"methodname>."
+"<methodname>Gtk::Box::append()</methodname>."
 msgstr ""
 "Empaquete al widget en un contenedor usando la llamada apropiada, por "
 "ejemplo, <methodname>Gtk::Container::add()</methodname> o "
 "<methodname>pack_start()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:7534(para)
-msgid "Call <methodname>show()</methodname> to display the widget."
-msgstr "Llame a <methodname>show()</methodname> para mostrar al widget."
-
-#: C/gtkmm-tutorial-in.xml:7543(para)
-msgid ""
-"<methodname>Gtk::Widget::show()</methodname> lets <application>gtkmm</"
-"application> know that we have finished setting the attributes of the "
-"widget, and that it is ready to be displayed. You can use <methodname>Gtk::"
-"Widget::hide()</methodname> to make it disappear again. The order in which "
-"you show the widgets is not important, but we do suggest that you show the "
-"top-level window last; this way, the whole window will appear with its "
-"contents already drawn. Otherwise, the user will first see a blank window, "
-"into which the widgets will be gradually drawn."
-msgstr ""
-"<methodname>Gtk::Widget::show()</methodname> le permite a "
-"<application>gtkmm</application> saber que se han terminado de establecer "
-"los atributos del widget, y que está listo para mostrarse. Puede usar "
-"<methodname>Gtk::Widget::hide()</methodname> para hacerlo desaparecer de "
-"nuevo. El orden en el que muestra los widgets no es importante, pero se le "
-"sugiere mostrar la ventana de nivel superior al final; de esta manera, toda "
-"la ventana aparecerá con su contenido ya dibujado. De lo contrario, el "
-"usuario verá primero una ventana vacía, en la que los widgets se dibujarán "
-"gradualmente."
-
-#: C/gtkmm-tutorial-in.xml:7557(title)
-msgid "Contributing"
-msgstr "Contribuir"
-
-#: C/gtkmm-tutorial-in.xml:7559(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7354
 msgid ""
-"This document, like so much other great software out there, was created for "
-"free by volunteers. If you are at all knowledgeable about any aspect of "
-"<application>gtkmm</application> that does not already have documentation, "
-"please consider contributing to this document."
+"If you don't want all widgets to be shown, call <methodname>Gtk::Widget::"
+"hide()</methodname> on the widgets that you don't want to show. If a "
+"container widget is hidden, all of its child widgets are also hidden, even "
+"if <methodname>hide()</methodname> is not called on the child widgets."
 msgstr ""
-"Fueron voluntarios los que crearon este documento, al igual que mucho otro "
-"software grandioso, gratuitamente. Si tiene conocimientos de cualquier "
-"aspecto de <application>gtkmm</application> que todavía no esté documentado, "
-"por favor considere contribuir a este documento."
 
-#: C/gtkmm-tutorial-in.xml:7565(para)
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:7365
+#, fuzzy
+#| msgid "Internationalizing GNOME applications"
+msgid "Building applications"
+msgstr "Internacionalizar aplicaciones de GNOME"
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7367
 msgid ""
-"Ideally, we would like you to <ulink url=\"http://www.gtkmm.org/bugs.shtml";
-"\">provide a patch</ulink> to the <filename>docs/tutorial/C/gtkmm-tutorial-"
-"in.xml</filename> file. This file is currently in the <literal>gtkmm-"
-"documentation</literal> module in GNOME git."
+"This chapter is similar to the \"Building applications\" chapter in the "
+"<ulink url=\"https://developer.gnome.org/gtk4/unstable/\";>GTK4 Reference "
+"Manual</ulink>. The same application is built, but <application>gtkmm</"
+"application> is used instead of <application>GTK</application>."
 msgstr ""
-"Lo ideal sería que <ulink url=\"http://www.gtkmm.org/bugs.shtml";
-"\">proporcionara un parche</ulink> al archivo <filename>docs/tutorial/C/"
-"gtkmm-tutorial-in.xml</filename>. Este archivo está actualmente en el módulo "
-"<literal>gtkmm-documentation</literal> en el git de GNOME."
 
-#: C/gtkmm-tutorial-in.xml:7571(para)
-msgid ""
-"If you do decide to contribute, please post your contribution to the "
-"<application>gtkmm</application> mailing list at <ulink url=\"mailto:gtkmm-";
-"list gnome org\">&lt;gtkmm-list gnome org&gt;</ulink>. Also, be aware that "
-"the entirety of this document is free, and any addition you provide must "
-"also be free. That is, people must be able to use any portion of your "
-"examples in their programs, and copies of this document (including your "
-"contribution) may be distributed freely."
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:7376
+msgid "The binary file"
 msgstr ""
-"Si decide contribuir, por favor envíe su contribución a la lista de correo "
-"de <application>gtkmm</application>, en <ulink url=\"mailto:gtkmm-list@gnome.";
-"org\">&lt;gtkmm-list gnome org&gt;</ulink>. Además, tenga en cuenta que la "
-"totalidad de este documento es libre, y cualquier adición que proporcione "
-"también debe serlo. Esto significa que la gente debe poder usar cualquier "
-"porción de sus ejemplos en sus programas, y las copias de este documento "
-"(incluyendo su contribución) se pueden distribuir libremente."
 
-#: C/gtkmm-tutorial-in.xml:7583(title)
-msgid "The RefPtr smartpointer"
-msgstr "El puntero inteligente RefPtr"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7377
+msgid "This gets installed in <filename>/usr/bin</filename>."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7584(para)
-msgid ""
-"<classname>Glib::RefPtr</classname> is a smartpointer. Specifically, it is a "
-"reference-counting smartpointer. You might be familiar with <classname>std::"
-"auto_ptr&lt;&gt;</classname>, <classname>std::unique_ptr&lt;&gt;</classname> "
-"and <classname>std::shared_ptr&lt;&gt;</classname>, which are also "
-"smartpointers. <classname>Glib::RefPtr&lt;&gt;</classname> is similar to "
-"<classname>std::shared_ptr&lt;&gt;</classname>, which is also reference-"
-"counting. <classname>Glib::RefPtr&lt;&gt;</classname> was introduced long "
-"before there was a reference-counting smartpointer in the C++ Standard "
-"Library."
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:7380
+msgid "A desktop file"
 msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7596(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7381
 msgid ""
-"A smartpointer acts much like a normal pointer. Here are a few examples."
+"The desktop file provides important information about the application to the "
+"desktop shell, such as its name, icon, D-Bus name, commandline to launch it, "
+"etc. It is installed in <filename>/usr/share/applications</filename>."
 msgstr ""
-"Un puntero inteligente actúa como un puntero normal. Aquí hay algunos "
-"ejemplos."
-
-#: C/gtkmm-tutorial-in.xml:7599(title)
-msgid "Copying"
-msgstr "Copiado"
 
-#: C/gtkmm-tutorial-in.xml:7600(para)
-msgid ""
-"You can copy <classname>RefPtr</classname>s, just like normal pointers. But "
-"unlike normal pointers, you don't need to worry about deleting the "
-"underlying instance."
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:7386
+msgid "An icon"
 msgstr ""
-"Puede copiar <classname>RefPtr</classname> como punteros normales. Pero, a "
-"diferencia de los punteros normales, no necesita preocuparse por la "
-"eliminación de la instancia subyacente."
 
-#: C/gtkmm-tutorial-in.xml:7606(programlisting)
-#, no-wrap
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7387
 msgid ""
-"\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf2 = refPixbuf;\n"
+"The icon gets installed in <filename>/usr/share/icons/hicolor/48x48/apps</"
+"filename>, where it will be found regardless of the current theme."
 msgstr ""
-"\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf2 = refPixbuf;\n"
 
-#: C/gtkmm-tutorial-in.xml:7611(para)
-msgid ""
-"Of course this means that you can store <classname>RefPtr</classname>s in "
-"standard containers, such as <classname>std::vector</classname> or "
-"<classname>std::list</classname>."
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:7391
+msgid "A settings schema"
 msgstr ""
-"Por supuesto esto significa que puede almacenar <classname>RefPtr</"
-"classname> en contenedores estándar, como <classname>std::vector</classname> "
-"o <classname>std::list</classname>."
 
-#: C/gtkmm-tutorial-in.xml:7616(programlisting)
-#, no-wrap
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7392
 msgid ""
-"\n"
-"std::list&lt; Glib::RefPtr&lt;Gdk::Pixbuf&gt; &gt; listPixbufs;\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
-"listPixbufs.push_back(refPixbuf);\n"
+"If the application uses <classname>Gio::Settings</classname>, it will "
+"install its schema in <filename>/usr/share/glib-2.0/schemas</filename>, so "
+"that tools like dconf-editor can find it."
 msgstr ""
-"\n"
-"std::list&lt; Glib::RefPtr&lt;Gdk::Pixbuf&gt; &gt; listPixbufs;\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
-"listPixbufs.push_back(refPixbuf);\n"
 
-#: C/gtkmm-tutorial-in.xml:7624(title)
-msgid "Dereferencing"
-msgstr "Eliminar referencia"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:7397
+#, fuzzy
+#| msgid "Shared resources"
+msgid "Other resources"
+msgstr "Recursos compartidos"
 
-#: C/gtkmm-tutorial-in.xml:7625(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:7398
 msgid ""
-"You can dereference a smartpointer with the -&gt; operator, to call the "
-"methods of the underlying instance, just like a normal pointer."
+"Other files, such as <classname>Gtk::Builder</classname> ui files, are best "
+"loaded from resources stored in the application binary itself. This "
+"eliminates the need for most of the files that would traditionally be "
+"installed in an application-specific location in <filename>/usr/share</"
+"filename>."
 msgstr ""
-"Puede desreferenciar un puntero inteligente con el operador -&gt; para "
-"llamar a los métodos de la instancia subyacente, al igual que un puntero "
-"normal."
 
-#: C/gtkmm-tutorial-in.xml:7629(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
-"int width = refPixbuf-&gt;get_width();\n"
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7372
+msgid "An application consists of a number of files: <_:variablelist-1/>"
 msgstr ""
-"\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
-"int width = refPixbuf-&gt;get_width();\n"
 
-#: C/gtkmm-tutorial-in.xml:7634(para)
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7406
 msgid ""
-"But unlike most smartpointers, you can't use the * operator to access the "
-"underlying instance."
+"<application>gtkmm</application> includes application support that is built "
+"on top of <classname>Gio::Application</classname>. In this chapter we'll "
+"build a simple application by starting from scratch, adding more and more "
+"pieces over time. Along the way, we'll learn about <classname>Gtk::"
+"Application</classname>, <classname>Gtk::Builder</classname>, resources, "
+"menus, settings, <classname>Gtk::HeaderBar</classname>, <classname>Gtk::"
+"Stack</classname>, <classname>Gtk::SearchBar</classname>, <classname>Gtk::"
+"ListBox</classname>, and more."
 msgstr ""
-"Pero a diferencia de la mayoría de punteros inteligentes, no se puede "
-"utilizar el operador * para acceder a la instancia de base."
 
-#: C/gtkmm-tutorial-in.xml:7638(programlisting)
-#, no-wrap
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7415
 msgid ""
-"\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
-"Gdk::Pixbuf&amp; underlying = *refPixbuf; //Syntax error - will not compile.\n"
+"The full, buildable sources for these examples can be found in the "
+"<filename>examples/book/buildapp</filename> directory of the "
+"<application>gtkmm-documentation</application> source distribution, or "
+"online in the <ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-";
+"documentation/tree/master/examples/book/buildapp\"><application>gtkmm-"
+"documentation</application> git repository</ulink>. You can build each "
+"example separately by using <command>meson</command> and <command>ninja</"
+"command> with the <filename>meson.build</filename> file or by using "
+"<command>make</command> with the <filename>Makefile.example</filename> file. "
+"For more information, see the <filename>README</filename> included in the "
+"<filename>buildapp</filename> directory."
 msgstr ""
-"\n"
-"Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
-"Gdk::Pixbuf&amp; underlying = *refPixbuf; //Syntax error - will not compile.\n"
 
-#: C/gtkmm-tutorial-in.xml:7645(title)
-msgid "Casting"
-msgstr "Conversión de tipos"
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7428 C/index-in.docbook:7472
+msgid "A trivial application"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7646(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7430
 msgid ""
-"You can cast <classname>RefPtr</classname>s to base types, just like normal "
-"pointers."
+"When using <classname>Gtk::Application</classname>, the <function>main()</"
+"function> function can be very simple. We just call <methodname>Gtk::"
+"Application::run()</methodname> on an instance of our application class."
 msgstr ""
-"Puede convertir <classname>RefPtr</classname> a tipos base, al igual que a "
-"los punteros normales."
 
-#: C/gtkmm-tutorial-in.xml:7651(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7436
 msgid ""
-"\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore = Gtk::TreeStore::create(columns);\n"
-"Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = refStore;\n"
+"All the application logic is in the application class, which is a subclass "
+"of <classname>Gtk::Application</classname>. Our example does not yet have "
+"any interesting functionality. All it does is open a window when it is "
+"activated without arguments, and open the files it is given, if it is "
+"started with arguments. (Or rather, our application class tries to open the "
+"files, but our subclassed application window does not yet do what it's told "
+"to do.)"
 msgstr ""
-"\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore = Gtk::TreeStore::create(columns);\n"
-"Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = refStore;\n"
 
-#: C/gtkmm-tutorial-in.xml:7656(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7445
 msgid ""
-"This means that any method which takes a <type>const Glib::RefPtr&lt;"
-"BaseType&gt;</type> argument can also take a <type>const Glib::RefPtr&lt;"
-"DerivedType&gt;</type>. The cast is implicit, just as it would be for a "
-"normal pointer."
+"To handle these two cases, we override <methodname>signal_activate()</"
+"methodname>'s default handler, which gets called when the application is "
+"launched without commandline arguments, and <methodname>signal_open()</"
+"methodname>'s default handler, which gets called when the application is "
+"launched with commandline arguments."
 msgstr ""
-"Esto significa que cualquier método que tome un argumento <type>const Glib::"
-"RefPtr&lt;BaseType&gt;</type> también puede tomar un <type>const Glib::"
-"RefPtr&lt;DerivedType&gt;</type>. La conversión es implícita, al igual que "
-"lo sería con un puntero normal."
 
-#: C/gtkmm-tutorial-in.xml:7660(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7452
 msgid ""
-"You can also cast to a derived type, but the syntax is a little different "
-"than with a normal pointer."
+"<ulink url=\"http://developer.gnome.org/glibmm/unstable/";
+"classGio_1_1Application.html\">Gio::Application Reference</ulink>"
 msgstr ""
-"También puede convertir a un tipo derivado, pero la sintaxis es un poco "
-"diferente que con un puntero normal."
 
-#: C/gtkmm-tutorial-in.xml:7664(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7453
 msgid ""
-"\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore =\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt;::cast_dynamic(refModel);\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore2 =\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt;::cast_static(refModel);\n"
+"<ulink url=\"http://developer.gnome.org/gtkmm/unstable/";
+"classGtk_1_1Application.html\">Gtk::Application Reference</ulink>"
 msgstr ""
-"\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore =\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt;::cast_dynamic(refModel);\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore2 =\n"
-"Glib::RefPtr&lt;Gtk::TreeStore&gt;::cast_static(refModel);\n"
 
-#: C/gtkmm-tutorial-in.xml:7674(title)
-msgid "Checking for null"
-msgstr "Verificar si es nulo"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7455
+msgid ""
+"Another important class that is part of the application support in "
+"<application>gtkmm</application> is <classname>Gtk::ApplicationWindow</"
+"classname>. It is typically subclassed as well. Our subclass does not do "
+"anything yet, so we will just get an empty window."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7675(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7461
 msgid ""
-"Just like normal pointers, you can check whether a <classname>RefPtr</"
-"classname> points to anything."
+"As part of the initial setup of our application, we also create an icon and "
+"a desktop file. Note that @bindir@ in the desktop file needs to be replaced "
+"with the actual path to the binary before this desktop file can be used."
 msgstr ""
-"Al igual que con los punteros normales, puede verificar si un "
-"<classname>RefPtr</classname> apunta a algo."
 
-#: C/gtkmm-tutorial-in.xml:7680(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7467
+msgid "Here is what we've achieved so far:"
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7478
 msgid ""
-"\n"
-"Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = m_TreeView.get_model();\n"
-"if(refModel)\n"
-"{\n"
-"  int cols_count = refModel-&gt;get_n_columns();\n"
-"  ...\n"
-"}\n"
+"This does not look very impressive yet, but our application is already "
+"presenting itself on the session bus, it has single-instance semantics, and "
+"it accepts files as commandline arguments."
 msgstr ""
-"\n"
-"Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = m_TreeView.get_model();\n"
-"if(refModel)\n"
-"{\n"
-"  int cols_count = refModel-&gt;get_n_columns();\n"
-"  ...\n"
-"}\n"
 
-#: C/gtkmm-tutorial-in.xml:7689(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7483
 msgid ""
-"But unlike normal pointers, <classname>RefPtr</classname>s are automatically "
-"initialized to null so you don't need to remember to do that yourself."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step1\">Source Code</ulink>"
 msgstr ""
-"Pero, a diferencia de los punteros normales, los <classname>RefPtr</"
-"classname> se inicializan automáticamente a nulo, por lo que no necesita "
-"recordar hacerlo."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step1\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:7696(title)
-msgid "Constness"
-msgstr "Constancia"
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7488 C/index-in.docbook:7531
+msgid "Populating the window"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7697(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7490
+#, fuzzy
+#| msgid ""
+#| "This example has a <classname>Gtk::TreeView</classname> widget, with a "
+#| "<classname>Gtk::ListStore</classname> model."
 msgid ""
-"The use of the <literal>const</literal> keyword in C++ is not always clear. "
-"You might not realise that <type>const Something*</type> declares a pointer "
-"to a <type>const Something</type>. The pointer can be changed, but not the "
-"<type>Something</type> that it points to."
+"In this step, we use a <classname>Gtk::Builder</classname> instance to "
+"associate a <classname>Gtk::Builder</classname> ui file with our application "
+"window class."
 msgstr ""
-"El uso de la palabra reservada <literal>const</literal> en C++ no siempre es "
-"claro. Puede no darse cuenta de que <type>const Algo*</type> declara un "
-"puntero a un <type>const Algo</type>. El puntero puede cambiarse, pero no el "
-"<type>Algo</type> al que apunta."
+"Este ejemplo tiene un widget <classname>Gtk::TreeView</classname>, con un "
+"modelo <classname>Gtk::ListStore</classname>."
 
-#: C/gtkmm-tutorial-in.xml:7703(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7495
 msgid ""
-"Therefore, the <classname>RefPtr</classname> equivalent of <type>Something*</"
-"type> for a method parameter is <type>const Glib::RefPtr&lt;Something&gt;"
-"&amp;</type>, and the equivalent of <type>const Something*</type> is "
-"<type>const Glib::RefPtr&lt;const Something&gt;&amp;</type>."
+"Our simple ui file gives the window a title, and puts a <classname>Gtk::"
+"Stack</classname> widget as the main content."
 msgstr ""
-"Por lo tanto, el equivalente <classname>RefPtr</classname> de <type>Algo*</"
-"type> para un parámetro de un método es <type>const Glib::RefPtr&lt;"
-"Something&gt;&amp;</type>, y el equivalente de <type>const Algo*</type> es "
-"<type>const Glib::RefPtr&lt;const Something&gt;&amp;</type>."
 
-#: C/gtkmm-tutorial-in.xml:7710(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7500
 msgid ""
-"The <literal>const ... &amp;</literal> around both is just for efficiency, "
-"like using <classname>const std::string&amp;</classname> instead of "
-"<classname>std::string</classname> for a method parameter to avoid "
-"unnecessary copying."
+"To make use of this file in our application, we revisit our <classname>Gtk::"
+"ApplicationWindow</classname> subclass, and call <methodname>Gtk::Builder::"
+"create_from_resource()</methodname> and <methodname>Gtk::Builder::"
+"get_widget_derived()</methodname> from the <methodname>ExampleAppWindow::"
+"create()</methodname> method to get an instance of our subclassed "
+"<classname>Gtk::ApplicationWindow</classname>. See the <link linkend=\"sec-"
+"builder-using-derived-widgets\">Using derived widgets</link> section for "
+"more information about <methodname>get_widget_derived()</methodname>."
 msgstr ""
-"El <literal>const ... &amp;</literal> que los rodea está sólo por "
-"eficiencia, como usar <literal>const std::string&amp;</literal> en lugar de "
-"<classname>std::string</classname> como método de parámetro para evitar una "
-"copia innecesaria."
 
-#: C/gtkmm-tutorial-in.xml:7725(title)
-msgid "Connecting signal handlers"
-msgstr "Conectar gestores de señales"
+#. (itstool) path: para/screen
+#: C/index-in.docbook:7519
+#, no-wrap
+msgid "$ glib-compile-resources --target=resources.c --generate-source exampleapp.gresource.xml"
+msgstr "$ glib-compile-resources --target=resources.c --generate-source exampleapp.gresource.xml"
 
-#: C/gtkmm-tutorial-in.xml:7726(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7511
 msgid ""
-"<application>gtkmm</application> widget classes have signal accessor "
-"methods, such as <methodname>Gtk::Button::signal_clicked()</methodname>, "
-"which allow you to connect your signal handler. Thanks to the flexibility of "
-"<application>libsigc++</application>, the callback library used by "
-"<application>gtkmm</application>, the signal handler can be almost any kind "
-"of function, but you will probably want to use a class method. Among "
-"<application>GTK+</application> C coders, these signal handlers are often "
-"named callbacks."
+"You may have noticed that we use the <methodname>_from_resource()</"
+"methodname> variant of the method that reads the ui file. Now we need to use "
+"<application>GLib</application>'s resource functionality to include the ui "
+"file in the binary. This is commonly done by listing all resources in a ."
+"gresource.xml file. This file has to be converted into a C source file that "
+"will be compiled and linked into the application together with the other "
+"source files. To do so, we use the <application>glib-compile-resources</"
+"application> utility: <_:screen-1/> The <link linkend=\"sec-gio-resource"
+"\">Gio::Resource and glib-compile-resources</link> section contains more "
+"information about resource files. If you build with Meson, use the "
+"<function>compile_resources()</function> function in Meson's <ulink url="
+"\"https://mesonbuild.com/Gnome-module.html\";>GNOME module</ulink>."
 msgstr ""
-"Las clases de widgets de <application>gtkmm</application> tienen métodos de "
-"acceso a señales, como <methodname>Gtk::Button::signal_clicked()</"
-"methodname>, que le permiten conectar su gestor de señales. Gracias a la "
-"flexibilidad de <application>libsigc++</application>, la biblioteca de "
-"retornos de llamada usada por <application>gtkmm</application>, el gestor "
-"de señales puede ser casi cualquier tipo de función, pero probablemente "
-"quiera usar un método de clase. Entre los programadores de C de "
-"<application>GTK+</application>, estos gestores de señales a menudo se "
-"llaman retornos de llamada."
 
-#: C/gtkmm-tutorial-in.xml:7736(para)
-msgid "Here's an example of a signal handler being connected to a signal:"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7526
+msgid "Our application now looks like this:"
 msgstr ""
-"Aquí hay un ejemplo de un gestor de señales que se conecta a una señal:"
 
-#: C/gtkmm-tutorial-in.xml:7741(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7537
 msgid ""
-"\n"
-"#include &lt;gtkmm/button.h&gt;\n"
-"\n"
-"void on_button_clicked()\n"
-"{\n"
-"    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
-"}\n"
-"\n"
-"main()\n"
-"{\n"
-"    Gtk::Button button(\"Hello World\");\n"
-"    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
-"}\n"
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step2\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step2\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7542 C/index-in.docbook:7578
+msgid "Opening files"
 msgstr ""
-"\n"
-"#include &lt;gtkmm/button.h&gt;\n"
-"\n"
-"void on_button_clicked()\n"
-"{\n"
-"    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
-"}\n"
-"\n"
-"main()\n"
-"{\n"
-"    Gtk::Button button(\"Hello World\");\n"
-"    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
-"}\n"
 
-#: C/gtkmm-tutorial-in.xml:7757(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7544
 msgid ""
-"There's rather a lot to think about in this (non-functional) code. First "
-"let's identify the parties involved:"
+"In this step, we make our application show the contents of all the files "
+"that it is given on the commandline."
 msgstr ""
-"Hay mucho para pensar en este código no funcional. Primero, identifique a "
-"los grupos involucrados:"
 
-#: C/gtkmm-tutorial-in.xml:7765(para)
-msgid "The signal handler is <methodname>on_button_clicked()</methodname>."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7549
+msgid ""
+"To this end, we add a data member to our application window and keep a "
+"pointer to the <classname>Gtk::Stack</classname> there. We get the pointer "
+"with a call to <methodname>Gtk::Builder::get_widget()</methodname> in the "
+"application window's constructor."
 msgstr ""
-"El gestor de señales es <methodname>on_button_clicked()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:7771(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7555
 msgid ""
-"We're hooking it up to the <classname>Gtk::Button</classname> object called "
-"<varname>button</varname>."
+"Now we revisit the <methodname>ExampleAppWindow::open_file_view()</"
+"methodname> method that is called for each commandline argument, and "
+"construct a <classname>Gtk::TextView</classname> that we then add as a page "
+"to the stack."
 msgstr ""
-"Se engancha al objeto <classname>Gtk::Button</classname> llamado "
-"<varname>button</varname>."
 
-#: C/gtkmm-tutorial-in.xml:7778(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7561
 msgid ""
-"When the Button emits its <literal>clicked</literal> signal, "
-"<methodname>on_button_clicked()</methodname> will be called."
+"Lastly, we add a <classname>Gtk::StackSwitcher</classname> to the titlebar "
+"area in the ui file, and we tell it to display information about our stack."
 msgstr ""
-"Cuando el botón emita su señal <literal>clicked</literal>, se llamará a "
-"<methodname>on_button_clicked()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:7786(para)
-msgid "Now let's look at the connection again:"
-msgstr "Ahora, mire la conexión nuevamente:"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7566
+msgid ""
+"The stack switcher gets all its information it needs to display tabs from "
+"the stack that it belongs to. Here, we are passing the label to show for "
+"each file as the last argument to the <methodname>Gtk::Stack::add()</"
+"methodname> method."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7791(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7573
+msgid "Our application is beginning to take shape:"
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7584
 msgid ""
-"\n"
-"    ...\n"
-"    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
-"    ...\n"
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step3\">Source Code</ulink>"
+msgstr ""
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step3\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7589 C/index-in.docbook:7624
+msgid "A menu"
 msgstr ""
-"\n"
-"    ...\n"
-"    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
-"    ...\n"
 
-#: C/gtkmm-tutorial-in.xml:7798(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7591
 msgid ""
-"Note that we don't pass a pointer to <methodname>on_button_clicked()</"
-"methodname> directly to the signal's <methodname>connect()</methodname> "
-"method. Instead, we call <function>sigc::ptr_fun()</function>, and pass the "
-"result to <methodname>connect()</methodname>."
+"The menu is shown at the right side of the headerbar. It is meant to collect "
+"infrequently used actions that affect the whole application."
 msgstr ""
-"Tenga en cuenta que no se le pasa un puntero a "
-"<methodname>on_button_clicked()</methodname> directamente al método de la "
-"señal <methodname>connect()</methodname>. En su lugar, se llama a "
-"<function>sigc::ptr_fun()</function>, y se le pasa el resultado a "
-"<methodname>connect()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:7805(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7596
 msgid ""
-"<function>sigc::ptr_fun()</function> generates a <classname>sigc::slot</"
-"classname>. A slot is an object which looks and feels like a function, but "
-"is actually an object. These are also known as function objects, or "
-"functors. <function>sigc::ptr_fun()</function> generates a slot for a "
-"standalone function or static method. <function>sigc::mem_fun()</function> "
-"generates a slot for a member method of a particular instance."
+"Just like the application window, we specify our menu in a ui file, and add "
+"it as a resource to our binary."
 msgstr ""
-"<function>sigc::ptr_fun()</function> genera un <classname>sigc::slot</"
-"classname>. Un «slot» es un objeto que se comporta como una función, pero en "
-"realidad es un objeto. Estos también se llaman objetos función, o funtores. "
-"<function>sigc::ptr_fun()</function> genera un «slot» para una función "
-"independiente o un método estático. <function>sigc::mem_fun()</function> "
-"genera un «slot» para un método miembro de una instancia particular."
 
-#: C/gtkmm-tutorial-in.xml:7814(para)
-msgid "Here's a slightly larger example of slots in action:"
-msgstr "Aquí hay un ejemplo ligeramente más amplio de los «slots» en acción:"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7601
+msgid ""
+"To make the menu appear, we have to load the ui file and associate the "
+"resulting menu model with the menu button that we've added to the headerbar. "
+"Since menus work by activating <classname>Gio::Action</classname>s, we also "
+"have to add a suitable set of actions to our application."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7819(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7608
 msgid ""
-"\n"
-"void on_button_clicked();\n"
-"\n"
-"class some_class\n"
-"{\n"
-"    void on_button_clicked();\n"
-"};\n"
-"\n"
-"some_class some_object;\n"
-"\n"
-"main()\n"
-"{\n"
-"    Gtk::Button button;\n"
-"    button.signal_clicked().connect( sigc::ptr_fun(&amp;on_button_clicked) );\n"
-"    button.signal_clicked().connect( sigc::mem_fun(some_object, &amp;some_class::on_button_clicked) );\n"
-"}\n"
+"Adding the actions is best done in the <methodname>on_startup()</methodname> "
+"default signal handler, which is guaranteed to be called once for each "
+"primary application instance."
 msgstr ""
-"\n"
-"void on_button_clicked();\n"
-"\n"
-"class some_class\n"
-"{\n"
-"    void on_button_clicked();\n"
-"};\n"
-"\n"
-"some_class some_object;\n"
-"\n"
-"main()\n"
-"{\n"
-"    Gtk::Button button;\n"
-"    button.signal_clicked().connect( sigc::ptr_fun(&amp;on_button_clicked) );\n"
-"    button.signal_clicked().connect( sigc::mem_fun(some_object, &amp;some_class::on_button_clicked) );\n"
-"}\n"
 
-#: C/gtkmm-tutorial-in.xml:7838(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7613
 msgid ""
-"The first call to <methodname>connect()</methodname> is just like the one we "
-"saw last time; nothing new here."
+"Our preferences menu item does not do anything yet, but the Quit menu item "
+"is fully functional. It can also be activated by the usual Ctrl-Q shortcut. "
+"The shortcut is added with <methodname>Gtk::Application::"
+"set_accel_for_action()</methodname>."
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7619
+msgid "The menu looks like this:"
 msgstr ""
-"La primera llamada a <methodname>connect()</methodname> es igual a la que "
-"vio la última vez; no hay nada nuevo aquí."
 
-#: C/gtkmm-tutorial-in.xml:7841(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7630
 msgid ""
-"The next is more interesting. <function>sigc::mem_fun()</function> is called "
-"with two arguments. The first argument is <parameter>some_object</"
-"parameter>, which is the object that our new slot will be pointing at. The "
-"second argument is a pointer to one of its methods. This particular version "
-"of <function>sigc::mem_fun()</function> creates a slot which will, when "
-"\"called\", call the pointed-to method of the specified object, in this case "
-"<methodname>some_object.on_button_clicked()</methodname>."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step4\">Source Code</ulink>"
 msgstr ""
-"La siguiente es más interesante. <function>sigc::mem_fun()</function> se "
-"llama con dos argumentos. El primero es <parameter>some_object</parameter>, "
-"que es el objeto al que su nuevo «slot» apuntará. El segundo argumento es un "
-"puntero a uno de sus métodos. Esta versión particular de <function>sigc::"
-"mem_fun()</function> crea un «slot» que, cuando se «llame», llamará al "
-"método al que apunta del objeto especificado, en este caso, "
-"<methodname>some_object.on_button_clicked()</methodname>."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step4\">Código fuente</ulink>"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:7635
+#, fuzzy
+#| msgid "Dereferencing"
+msgid "A preference dialog"
+msgstr "Eliminar referencia"
 
-#: C/gtkmm-tutorial-in.xml:7851(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7637
 msgid ""
-"Another thing to note about this example is that we made the call to "
-"<methodname>connect()</methodname> twice for the same signal object. This is "
-"perfectly fine - when the button is clicked, both signal handlers will be "
-"called."
+"A typical application will have some preferences that should be remembered "
+"from one run to the next. Even for our simple example application, we may "
+"want to change the font that is used for the content."
 msgstr ""
-"Otra cosa notable acerca de este ejemplo es que se ha hecho la llamada a "
-"<methodname>connect()</methodname> dos veces para el mismo objeto de señal. "
-"Esto está perfectamente bien: cuando se pulse el botón, se llamará a ambos "
-"gestores de señales."
 
-#: C/gtkmm-tutorial-in.xml:7858(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7643
 msgid ""
-"We just told you that the button's <literal>clicked</literal> signal is "
-"expecting to call a method with no arguments. All signals have requirements "
-"like this - you can't hook a function with two arguments to a signal "
-"expecting none (unless you use an adapter, such as <function>sigc::bind()</"
-"function>, of course). Therefore, it's important to know what type of signal "
-"handler you'll be expected to connect to a given signal."
+"We are going to use <classname>Gio::Settings</classname> to store our "
+"preferences. <classname>Gio::Settings</classname> requires a schema that "
+"describes our settings, in our case the <filename>org.gtkmm.exampleapp."
+"gschema.xml</filename> file."
 msgstr ""
-"Como se mencionó, la señal <literal>clicked</literal> del botón está "
-"esperando llamar a un método sin argumentos. Todas las señales tienen "
-"requerimientos como este: no puede enganchar una función con dos argumentos "
-"a una señal que no espera ninguno (a menos que use un adaptador, como "
-"<function>sigc::bind()</function>, por supuesto). Por lo tanto, es "
-"importante saber qué tipo de gestor de señales se esperará que conecte a "
-"una señal dada."
 
-#: C/gtkmm-tutorial-in.xml:7870(title)
-msgid "Writing signal handlers"
-msgstr "Escribir gestores de señales"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7649
+msgid ""
+"Before we can make use of this schema in our application, we need to compile "
+"it into the binary form that <classname>Gio::Settings</classname> expects. "
+"GIO provides macros to do this in autotools-based projects. See the "
+"description of <ulink url=\"https://developer.gnome.org/gio/stable/GSettings.";
+"html\">GSettings</ulink>. Meson provides the <function>compile_schemas()</"
+"function> function in the <ulink url=\"https://mesonbuild.com/Gnome-module.";
+"html\">GNOME module</ulink>."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:7872(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7658
 msgid ""
-"To find out what type of signal handler you can connect to a signal, you can "
-"look it up in the reference documentation or the header file. Here's an "
-"example of a signal declaration you might see in the <application>gtkmm</"
-"application> headers:"
+"Next, we need to connect our settings to the widgets that they are supposed "
+"to control. One convenient way to do this is to use <methodname>Gio::"
+"Settings::bind()</methodname> to bind settings keys to object properties, as "
+"we do for the transition setting in <classname>ExampleAppWindow</"
+"classname>'s constructor."
 msgstr ""
-"Para descubrir qué tipo de gestor de señales puede conectar a una señal, "
-"puede buscarlo en la documentación de referencia en el archivo de cabecera. "
-"Aquí hay un ejemplo de una declaración de señal que puede ver en las "
-"cabeceras de <application>gtkmm</application>:"
 
-#: C/gtkmm-tutorial-in.xml:7879(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7664
 #, no-wrap
 msgid ""
 "\n"
-"Glib::SignalProxy1&lt;bool, Gtk::DirectionType&gt; signal_focus()\n"
+"m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n"
+"m_settings-&gt;bind(\"transition\", m_stack-&gt;property_transition_type());\n"
 msgstr ""
 "\n"
-"Glib::SignalProxy1&lt;bool, Gtk::DirectionType&gt; signal_focus()\n"
+"m_settings = Gio::Settings::create(\"org.gtkmm.exampleapp\");\n"
+"m_settings-&gt;bind(\"transition\", m_stack-&gt;property_transition_type());\n"
 
-#: C/gtkmm-tutorial-in.xml:7884(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7669
 msgid ""
-"Other than the signal's name (<literal>focus</literal>), two things are "
-"important to note here: the number following the word "
-"<classname>SignalProxy</classname> at the beginning (1, in this case), and "
-"the types in the list (<type>bool</type> and <type>Gtk::DirectionType</"
-"type>). The number indicates how many arguments the signal handler should "
-"have; the first type, <type>bool</type>, is the type that the signal handler "
-"should return; and the next type, <type>Gtk::DirectionType</type>, is the "
-"type of this signal's first, and only, argument. By looking at the reference "
-"documentation, you can see the names of the arguments too."
+"The code to connect the font setting is a little more involved, since it "
+"corresponds to an object property in a <classname>Gtk::TextTag</classname> "
+"that we must first create. The code is in <methodname>ExampleAppWindow::"
+"open_file_view()</methodname>."
 msgstr ""
-"Aparte del nombre de la señal (<literal>focus</literal>), hay otras dos "
-"cosas importantes que tener en cuenta aquí: el número que sigue a la palabra "
-"<classname>SignalProxy</classname> en el principio (1, en este caso), y los "
-"tipos en la lista (<type>bool</type> y <type>Gtk::DirectionType</type>). El "
-"número indica cuántos argumentos debe tener el gestor de señales; el "
-"primer tipo, <type>bool</type>, es el tipo que el gestor de señales debe "
-"devolver; y el tipo siguiente, <type>Gtk::DirectionType</type>, es el tipo "
-"del primer y único argumento de esta señal. Mirando la documentación de "
-"referencia, también puede ver los nombres de los argumentos."
-
-#: C/gtkmm-tutorial-in.xml:7896(para)
-msgid ""
-"The same principles apply for signals which have more arguments. Here's one "
-"with three (taken from <filename>&lt;gtkmm/textbuffer.h&gt;</filename>):"
-msgstr ""
-"Los mismos principios se aplican a las señales que tienen más argumentos. "
-"Aquí hay una con tres (tomada de <filename>&lt;gtkmm/textbuffer.h&gt;</"
-"filename>):"
 
-#: C/gtkmm-tutorial-in.xml:7902(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7674
 #, no-wrap
 msgid ""
 "\n"
-"Glib::SignalProxy3&lt;void, const TextBuffer::iterator&amp;, const Glib::ustrin&amp;, int&gt; 
signal_insert();\n"
+"auto tag = buffer-&gt;create_tag();\n"
+"m_settings-&gt;bind(\"font\", tag-&gt;property_font());\n"
+"buffer-&gt;apply_tag(tag, buffer-&gt;begin(), buffer-&gt;end());\n"
 msgstr ""
 "\n"
-"Glib::SignalProxy3&lt;void, const TextBuffer::iterator&amp;, const Glib::ustrin&amp;, int&gt; 
signal_insert();\n"
+"auto tag = buffer-&gt;create_tag();\n"
+"m_settings-&gt;bind(\"font\", tag-&gt;property_font());\n"
+"buffer-&gt;apply_tag(tag, buffer-&gt;begin(), buffer-&gt;end());\n"
 
-#: C/gtkmm-tutorial-in.xml:7907(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7680
 msgid ""
-"It follows the same form. The number 3 at the end of the type's name "
-"indicates that our signal handler will need three arguments. The first type "
-"in the type list is <type>void</type>, so that should be our signal "
-"handler's return type. The following three types are the argument types, in "
-"order. Our signal handler's prototype could look like this:"
+"At this point, the application will already react if you change one of the "
+"settings, e.g. using the <command>gsettings</command> commandline tool. Of "
+"course, we expect the application to provide a preference dialog for these. "
+"So lets do that now. Our preference dialog will be a subclass of "
+"<classname>Gtk::Dialog</classname>, and we'll use the same techniques that "
+"we've already seen in <classname>ExampleAppWindow</classname>: a "
+"<classname>Gtk::Builder</classname> ui file and settings bindings."
 msgstr ""
-"Sigue la misma forma. El número 3 al final del nombre del tipo indica que el "
-"gestor de señales necesitará tres argumentos. El primer tipo en la lista "
-"es <type>void</type>, por lo que ese será el tipo que devolverá el gestor "
-"de señales. Los tres tipos siguientes son los de los argumentos, en orden. "
-"El prototipo de gestor de señales se podría ver así:"
 
-#: C/gtkmm-tutorial-in.xml:7916(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7689
 msgid ""
-"\n"
-"void on_insert(const TextBuffer::iterator&amp; pos, const Glib::ustring&amp; text, int bytes)\n"
+"When we've created the <filename>prefs.ui</filename> file and the "
+"<classname>ExampleAppPrefs</classname> class, we revisit the "
+"<methodname>ExampleApplication::on_action_preferences()</methodname> method "
+"in our application class, and make it open a new preference dialog."
 msgstr ""
-"\n"
-"void on_insert(const TextBuffer::iterator&amp; pos, const Glib::ustring&amp; text, int bytes)\n"
-
-#: C/gtkmm-tutorial-in.xml:7923(title)
-msgid "Disconnecting signal handlers"
-msgstr "Desconectar gestores de señales"
-
-#: C/gtkmm-tutorial-in.xml:7925(para)
-msgid ""
-"Let's take another look at a Signal's <literal>connect</literal> method:"
-msgstr "Eche otro vistazo al método <literal>connect</literal> de la señal:"
 
-#: C/gtkmm-tutorial-in.xml:7930(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7694
 #, no-wrap
 msgid ""
 "\n"
-"sigc::signal&lt;void,int&gt;::iterator signal&lt;void,int&gt;::connect( const 
sigc::slot&lt;void,int&gt;&amp; );\n"
+"auto prefs_dialog = ExampleAppPrefs::create(*get_active_window());\n"
+"prefs_dialog-&gt;present();\n"
 msgstr ""
 "\n"
-"sigc::signal&lt;void,int&gt;::iterator signal&lt;void,int&gt;::connect( const 
sigc::slot&lt;void,int&gt;&amp; );\n"
+"auto prefs_dialog = ExampleAppPrefs::create(*get_active_window());\n"
+"prefs_dialog-&gt;present();\n"
 
-#: C/gtkmm-tutorial-in.xml:7935(para)
-#, fuzzy
-#| msgid ""
-#| "Notice that the return value is of type <classname>sigc::signal&lt;void,"
-#| "int&gt;::iterator</classname>. This can be implicitely converted into a "
-#| "<classname>sigc::connection</classname> which in turn can be used to "
-#| "control the connection. By keeping a connection object you can disconnect "
-#| "its associated signal handler using the method <methodname>sigc::"
-#| "connection::disconnect()</methodname>."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7699
 msgid ""
-"Notice that the return value is of type <classname>sigc::signal&lt;void,"
-"int&gt;::iterator</classname>. This can be implicitly converted into a "
-"<classname>sigc::connection</classname> which in turn can be used to control "
-"the connection. By keeping a connection object you can disconnect its "
-"associated signal handler using the method <methodname>sigc::connection::"
-"disconnect()</methodname>."
+"After all this work, our application can now show a preference dialog like "
+"this:"
 msgstr ""
-"Tenga en cuenta que el valor de retorno es del tipo <classname>sigc::"
-"signal&lt;void,int&gt;::iterator</classname>. Este se puede convertir "
-"implícitamente a una <classname>sigc::connection</classname> que a su vez "
-"puede usarse para controlar la conexión. Manteniendo un objeto de conexión "
-"puede desconectar su gestor de señales asociado usando el método "
-"<methodname>sigc::connection::disconnect()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:7946(title)
-msgid "Overriding default signal handlers"
-msgstr "Reemplazar gestores de señales predeterminados"
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7704
+#, fuzzy
+#| msgid "Dereferencing"
+msgid "An preference dialog"
+msgstr "Eliminar referencia"
 
-#: C/gtkmm-tutorial-in.xml:7948(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7710
 msgid ""
-"So far we've told you to perform actions in response to button-presses and "
-"the like by handling signals. That's certainly a good way to do things, but "
-"it's not the only way."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step5\">Source Code</ulink>"
 msgstr ""
-"Hasta ahora se la ha enseñado a realizar acciones en respuesta a pulsaciones "
-"de botones o eventos similares manejando señales. Esa es seguramente una "
-"buena manera de hacer las cosas, pero no es la única."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step5\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:7955(para)
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7715 C/index-in.docbook:7758
+#, fuzzy
+#| msgid "Adding child rows"
+msgid "Adding a search bar"
+msgstr "Añadiendo filas secundarias"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7717
 msgid ""
-"Instead of laboriously connecting signal handlers to signals, you can simply "
-"make a new class which inherits from a widget - say, a Button - and then "
-"override the default signal handler, such as Button::on_clicked(). This can "
-"be a lot simpler than hooking up signal handlers for everything."
+"We continue to flesh out the functionality of our application. For now, we "
+"add search. <application>gtkmm</application> supports this with "
+"<classname>Gtk::SearchEntry</classname> and <classname>Gtk::SearchBar</"
+"classname>. The search bar is a widget that can slide in from the top to "
+"present a search entry."
 msgstr ""
-"En lugar de conectar gestores de señales a señales laboriosamente, puede "
-"simplemente hacer una clase nueva que herede de un widget (por ejemplo, un "
-"botón) y luego reemplazar el gestor de señales predeterminado, como "
-"Button::on_clicked(). Esto puede ser mucho más simple que enganchar "
-"gestores de señales para todo."
 
-#: C/gtkmm-tutorial-in.xml:7962(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7723
 msgid ""
-"Subclassing isn't always the best way to accomplish things. It is only "
-"useful when you want the widget to handle its own signal by itself. If you "
-"want some other class to handle the signal then you'll need to connect a "
-"separate handler. This is even more true if you want several objects to "
-"handle the same signal, or if you want one signal handler to respond to the "
-"same signal from different objects."
+"We add a toggle button to the header bar, which can be used to slide out the "
+"search bar below the header bar. The new widgets are added in the "
+"<filename>window.ui</filename> file."
 msgstr ""
-"La herencia no es siempre la mejor manera de realizar cosas. Sólo es útil "
-"cuando quiere que el widget maneje su propia señal por sí mismo. Si quiere "
-"que alguna otra clase maneje la señal entonces necesitará conectar un "
-"gestor separado. Esto es aún más cierto si quiere que varios objetos "
-"manejen la misma señal, o si quiere que un gestor de señales responda a "
-"la misma señal desde diferentes objetos."
 
-#: C/gtkmm-tutorial-in.xml:7967(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7728
 msgid ""
-"<application>gtkmm</application> classes are designed with overriding in "
-"mind; they contain virtual member methods specifically intended to be "
-"overridden."
+"Implementing the search needs quite a few code changes that we are not going "
+"to completely go over here. The central piece of the search implementation "
+"is a signal handler that listens for text changes in the search entry, shown "
+"here without error handling."
 msgstr ""
-"Las clases de <application>gtkmm</application> se diseñaron con los "
-"reemplazos en mente; contienen métodos miembro virtuales específicamente "
-"pensados para reemplazarse."
-
-#: C/gtkmm-tutorial-in.xml:7972(para)
-msgid "Let's look at an example of overriding:"
-msgstr "Eche un vistazo a un ejemplo de reemplazo:"
 
-#: C/gtkmm-tutorial-in.xml:7977(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7733
 #, no-wrap
 msgid ""
 "\n"
-"#include &lt;gtkmm/button.h&gt;\n"
-"\n"
-"class OverriddenButton : public Gtk::Button\n"
-"{\n"
-"protected:\n"
-"    virtual void on_clicked();\n"
-"}\n"
-"\n"
-"void OverriddenButton::on_clicked()\n"
+"void ExampleAppWindow::on_search_text_changed()\n"
 "{\n"
-"    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
-"\n"
-"    // call the base class's version of the method:\n"
-"    Gtk::Button::on_clicked();\n"
+"  const auto text = m_searchentry-&gt;get_text();\n"
+"  auto tab = dynamic_cast&lt;Gtk::ScrolledWindow*&gt;(m_stack-&gt;get_visible_child());\n"
+"  auto view = dynamic_cast&lt;Gtk::TextView*&gt;(tab-&gt;get_child());\n"
+"\n"
+"  // Very simple-minded search implementation.\n"
+"  auto buffer = view-&gt;get_buffer();\n"
+"  Gtk::TextIter match_start;\n"
+"  Gtk::TextIter match_end;\n"
+"  if (buffer-&gt;begin().forward_search(text, Gtk::TextSearchFlags::CASE_INSENSITIVE,\n"
+"      match_start, match_end))\n"
+"  {\n"
+"    buffer-&gt;select_range(match_start, match_end);\n"
+"    view-&gt;scroll_to(match_start);\n"
+"  }\n"
 "}\n"
 msgstr ""
 "\n"
-"#include &lt;gtkmm/button.h&gt;\n"
-"\n"
-"class OverriddenButton : public Gtk::Button\n"
-"{\n"
-"protected:\n"
-"    virtual void on_clicked();\n"
-"}\n"
-"\n"
-"void OverriddenButton::on_clicked()\n"
+"void ExampleAppWindow::on_search_text_changed()\n"
 "{\n"
-"    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
-"\n"
-"    // call the base class's version of the method:\n"
-"    Gtk::Button::on_clicked();\n"
+"  const auto text = m_searchentry-&gt;get_text();\n"
+"  auto tab = dynamic_cast&lt;Gtk::ScrolledWindow*&gt;(m_stack-&gt;get_visible_child());\n"
+"  auto view = dynamic_cast&lt;Gtk::TextView*&gt;(tab-&gt;get_child());\n"
+"\n"
+"  // Very simple-minded search implementation.\n"
+"  auto buffer = view-&gt;get_buffer();\n"
+"  Gtk::TextIter match_start;\n"
+"  Gtk::TextIter match_end;\n"
+"  if (buffer-&gt;begin().forward_search(text, Gtk::TextSearchFlags::CASE_INSENSITIVE,\n"
+"      match_start, match_end))\n"
+"  {\n"
+"    buffer-&gt;select_range(match_start, match_end);\n"
+"    view-&gt;scroll_to(match_start);\n"
+"  }\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:7996(para)
-msgid ""
-"Here we define a new class called <classname>OverriddenButton</classname>, "
-"which inherits from <classname>Gtk::Button</classname>. The only thing we "
-"change is the <methodname>on_clicked()</methodname> method, which is called "
-"whenever <classname>Gtk::Button</classname> emits the <literal>clicked</"
-"literal> signal. This method prints \"Hello World\" to <literal>stdout</"
-"literal>, and then calls the original, overridden method, to let "
-"<classname>Gtk::Button</classname> do what it would have done had we not "
-"overridden."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7753
+msgid "With the search bar, our application now looks like this:"
 msgstr ""
-"Aquí se define una clase nueva llamada <classname>OverridenButton</"
-"classname>, que hereda de <classname>Gtk::Button</classname>. Lo único que "
-"se cambia es el método <methodname>on_clicked()</methodname>, que se llama "
-"siempre que <classname>Gtk::Button</classname> emite la señal "
-"<literal>clicked</literal>. Este método imprime «Hello World» a "
-"<literal>stdout</literal> y después llama al método original, reemplazado, "
-"para dejarle a <classname>Gtk::Button</classname> hacer lo que hubiera hecho "
-"si no se hubiera reemplazado."
 
-#: C/gtkmm-tutorial-in.xml:8007(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7764
 msgid ""
-"You don't always need to call the parent's method; there are times when you "
-"might not want to. Note that we called the parent method <emphasis>after</"
-"emphasis> writing \"Hello World\", but we could have called it before. In "
-"this simple example, it hardly matters much, but there are times when it "
-"will. With signals, it's not quite so easy to change details like this, and "
-"you can do something here which you can't do at all with connected signal "
-"handlers: you can call the parent method in the <emphasis>middle</emphasis> "
-"of your custom code."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step6\">Source Code</ulink>"
 msgstr ""
-"No necesita llamar siempre al método del padre; hay veces en las que no "
-"querrá hacerlo. Tenga en cuenta que se ha llamado al método padre "
-"<emphasis>después</emphasis> de escribir «Hello World», pero se podría haber "
-"llamado antes. En este ejemplo simple, no importa mucho, pero hay veces en "
-"las que lo hará. Con señales, no es tan fácil cambiar detalles como este, y "
-"puede hacer algo aquí que no puede con gestores de señales conectados: "
-"puede llamar al método padre en la <emphasis>mitad</emphasis> de su código "
-"personalizado."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step6\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:8021(title)
-msgid "Binding extra arguments"
-msgstr "Enlazar argumentos adicionales"
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7769 C/index-in.docbook:7804
+#, fuzzy
+#| msgid "Adding child rows"
+msgid "Adding a side bar"
+msgstr "Añadiendo filas secundarias"
 
-#: C/gtkmm-tutorial-in.xml:8028(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7771
 msgid ""
-"\n"
-"m_button1.signal_clicked().connect( sigc::bind&lt;Glib::ustring&gt;( sigc::mem_fun(*this, 
&amp;HelloWorld::on_button_clicked), \"button 1\") );\n"
+"As another piece of functionality, we are adding a sidebar, which "
+"demonstrates <classname>Gtk::Revealer</classname> and <classname>Gtk::"
+"ListBox</classname>. The new widgets are added in the <filename>window.ui</"
+"filename> file."
 msgstr ""
-"\n"
-"m_button1.signal_clicked().connect( sigc::bind&lt;Glib::ustring&gt;( sigc::mem_fun(*this, 
&amp;HelloWorld::on_button_clicked), \"button 1\") );\n"
 
-#: C/gtkmm-tutorial-in.xml:8035(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7777
 msgid ""
-"\n"
-"virtual void on_button_clicked(Glib::ustring data);\n"
+"The code to populate the sidebar with buttons for the words found in each "
+"file is a little too involved to go into here. But we'll look at the code to "
+"add a checkbutton for the new feature to the menu. A menu item is added to "
+"the ui file <filename>gears_menu.ui</filename>."
 msgstr ""
-"\n"
-"virtual void on_button_clicked(Glib::ustring data);\n"
 
-#: C/gtkmm-tutorial-in.xml:8022(para)
-#, fuzzy
-#| msgid ""
-#| "If you use one signal handler to catch the same signal from several "
-#| "widgets, you might like that signal handler to receive some extra "
-#| "information. For instance, you might want to know which button was "
-#| "clicked. You can do this with <function>sigc::bind()</function>. Here's "
-#| "some code from the <link linkend=\"sec-helloworld2\">helloworld2</link> "
-#| "example, which you will encounter later. <placeholder-1/> This says that "
-#| "we want the signal to send an extra <classname>Glib::ustring</classname> "
-#| "argument to the signal handler, and that the value of that argument "
-#| "should be \"button 1\". Of course we will need to add that extra argument "
-#| "to the declaration of our signal handler: <placeholder-2/> Of course, a "
-#| "normal \"clicked\" signal handler would have no arguments."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7784
 msgid ""
-"If you use one signal handler to catch the same signal from several widgets, "
-"you might like that signal handler to receive some extra information. For "
-"instance, you might want to know which button was clicked. You can do this "
-"with <function>sigc::bind()</function>. Here's some code from the <link "
-"linkend=\"sec-helloworld2\">helloworld2</link> example. <placeholder-1/> "
-"This says that we want the signal to send an extra <classname>Glib::ustring</"
-"classname> argument to the signal handler, and that the value of that "
-"argument should be \"button 1\". Of course we will need to add that extra "
-"argument to the declaration of our signal handler: <placeholder-2/> Of "
-"course, a normal \"clicked\" signal handler would have no arguments."
+"To connect the menu item to the new <literal>show-words</literal> setting, "
+"we use a <classname>Gio::Action</classname> corresponding to the given "
+"<classname>Gio::Settings</classname> key. In <classname>ExampleAppWindow</"
+"classname>'s constructor:"
 msgstr ""
-"Si usa un gestor de señales para atrapar la misma señal desde varios "
-"widgets, tal vez quiera que el gestor de señales reciba información "
-"adicional. Por ejemplo, puede querer saber qué botón se pulsó. Puede hacer "
-"esto con <function>sigc::bind()</function>. Aquí hay un código del ejemplo "
-"<link linkend=\"sec-helloworld2\">helloworld2</link>, que encontrará "
-"después. <placeholder-1/> Suponga que quiere que la señal envíe un argumento "
-"<classname>Glib::ustring</classname> adicional al gestor de señales, y "
-"que el valor de ese argumento sea «button 1». Por supuesto, se necesitará "
-"añadir ese argumento adicional a la declaración del gestor de señales: "
-"<placeholder-2/> Naturalmente, un gestor de señal «clicked» normal no "
-"tendría argumentos."
 
-#: C/gtkmm-tutorial-in.xml:8040(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7789
+#, no-wrap
 msgid ""
-"<function>sigc::bind()</function> is not commonly used, but you might find "
-"it helpful sometimes. If you are familiar with <application>GTK+</"
-"application> programming then you have probably noticed that this is similar "
-"to the extra <literal>gpointer data</literal> arguments which all GTK+ "
-"callbacks have. This is generally overused in <application>GTK+</"
-"application> to pass information that should be stored as member data in a "
-"derived widget, but widget derivation is very difficult in C. We have far "
-"less need of this hack in <application>gtkmm</application>."
+"\n"
+"// Connect the menu to the MenuButton m_gears, and bind the show-words setting\n"
+"// to the win.show-words action and the \"Words\" menu item.\n"
+"// (The connection between action and menu item is specified in gears_menu.ui.)\n"
+"auto menu_builder = Gtk::Builder::create_from_resource(\"/org/gtkmm/exampleapp/gears_menu.ui\");\n"
+"auto menu = menu_builder-&gt;get_object&lt;Gio::MenuModel&gt;(\"menu\");\n"
+"m_gears-&gt;set_menu_model(menu);\n"
+"add_action(m_settings-&gt;create_action(\"show-words\"));\n"
 msgstr ""
-"<function>sigc::bind()</function> no se usa comúnmente, pero a veces la "
-"encontrará útil. Si está familiarizado con programación en <application>GTK"
-"+</application>, entonces probablemente ya haya notado que esto es similar a "
-"los argumentos <literal>gpointer data</literal> adicionales que todos los "
-"retornos de llamada de GTK+ tienen. Generalmente se abusa de esto en "
-"<application>GTK+</application> para pasar información que debe almacenarse "
-"como datos miembros en un widget derivado, pero la derivación de widgets es "
-"muy difícil en C. Hay mucha menos necesidad de este «hack» en "
-"<application>gtkmm</application>."
+"\n"
+"// Connect the menu to the MenuButton m_gears, and bind the show-words setting\n"
+"// to the win.show-words action and the \"Words\" menu item.\n"
+"// (The connection between action and menu item is specified in gears_menu.ui.)\n"
+"auto menu_builder = Gtk::Builder::create_from_resource(\"/org/gtkmm/exampleapp/gears_menu.ui\");\n"
+"auto menu = menu_builder-&gt;get_object&lt;Gio::MenuModel&gt;(\"menu\");\n"
+"m_gears-&gt;set_menu_model(menu);\n"
+"add_action(m_settings-&gt;create_action(\"show-words\"));\n"
 
-#: C/gtkmm-tutorial-in.xml:8052(title)
-msgid "X Event signals"
-msgstr "Señales de eventos de X"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7799
+msgid "What our application looks like now:"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:8053(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7810
 msgid ""
-"The <classname>Widget</classname> class has some special signals which "
-"correspond to the underlying X-Windows events. These are suffixed by "
-"<literal>_event</literal>; for instance, <methodname>Widget::"
-"signal_button_press_event()</methodname>."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step7\">Source Code</ulink>"
 msgstr ""
-"La clase <classname>Widget</classname> tiene algunas señales especiales que "
-"corresponden a los eventos de X-Window subyacentes. Estas tienen el sufijo "
-"<literal>_event</literal>; por ejemplo, <methodname>Widget::"
-"signal_button_press_event()</methodname>."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step7\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:8059(para)
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7816 C/index-in.docbook:7858
 #, fuzzy
-#| msgid ""
-#| "You might occasionally find it useful to handle X events when there's "
-#| "something you can't accomplish with normal signals. <classname>Gtk::"
-#| "Button</classname>, for example, does not send mouse-pointer coordinates "
-#| "with its <literal>clicked</literal> signal, but you could handle "
-#| "<literal>button_pressed_event</literal> if you needed this information. X "
-#| "events are also often used to handle key-presses."
+#| msgid "properties"
+msgid "Properties"
+msgstr "propiedades"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7818
 msgid ""
-"You might occasionally find it useful to handle X events when there's "
-"something you can't accomplish with normal signals. <classname>Gtk::Button</"
-"classname>, for example, does not send mouse-pointer coordinates with its "
-"<literal>clicked</literal> signal, but you could handle "
-"<literal>button_press_event</literal> if you needed this information. X "
-"events are also often used to handle key-presses."
+"Widgets and other objects have many useful properties. Here we show some "
+"ways to use them in new and flexible ways, by wrapping them in actions with "
+"<classname>Gio::PropertyAction</classname> or by binding them with "
+"<classname>Glib::Binding</classname>."
 msgstr ""
-"Tal vez encuentre útil manejar los eventos de X cuando haya algo que no "
-"pueda resolver con señales normales. <classname>Gtk::Button</classname>, por "
-"ejemplo, no envía coordenadas del puntero del ratón con su señal "
-"<literal>clicked</literal>, pero puede manejar "
-"<literal>button_pressed_event</literal> si necesita esta información. Los "
-"eventos de X también se usan a menudo para manejar pulsaciones de teclas."
 
-#: C/gtkmm-tutorial-in.xml:8068(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7824
 msgid ""
-"These signals behave slightly differently. The value returned from the "
-"signal handler indicates whether it has fully \"handled\" the event. If the "
-"value is <literal>false</literal> then <application>gtkmm</application> will "
-"pass the event on to the next signal handler. If the value is <literal>true</"
-"literal> then no other signal handlers will need to be called."
+"To set this up, we add two labels to the header bar in our <filename>window."
+"ui</filename> file, named <literal>lines_label</literal> and <literal>lines</"
+"literal>, and get pointers to them in the application window's constructor, "
+"as we've seen a couple of times by now. We add a new \"Lines\" menu item to "
+"the gears menu, which triggers the <literal>show-lines</literal> action."
 msgstr ""
-"Estas señales se comportan levemente diferentes. El valor que devuelve el "
-"gestor de señales indica si ha «manejado» completamente el evento. Si el "
-"valor es <literal>false</literal>, entonces <application>gtkmm</application> "
-"pasará el evento al próximo gestor de señales. Si el valor es "
-"<literal>true</literal>, entonces no se necesitará llamar a ningún otro "
-"gestor de señales."
 
-#: C/gtkmm-tutorial-in.xml:8073(para)
-#, fuzzy
-#| msgid ""
-#| "Handling an X event doesn't affect the Widget's other signals. If you "
-#| "handle <literal>button_pressed_event</literal> for <classname>Gtk::"
-#| "Button</classname>, you'll still be able to get the <literal>clicked</"
-#| "literal> signal. They are emitted at (nearly) the same time."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7832
 msgid ""
-"Handling an X event doesn't affect the Widget's other signals. If you handle "
-"<literal>button_press_event</literal> for <classname>Gtk::Button</"
-"classname>, you'll still be able to get the <literal>clicked</literal> "
-"signal. They are emitted at (nearly) the same time."
+"To make this menu item do something, we create a property action for the "
+"<literal>visible</literal> property of the <literal>lines</literal> label, "
+"and add it to the actions of the window. The effect of this is that the "
+"visibility of the label gets toggled every time the action is activated. "
+"Since we want both labels to appear and disappear together, we bind the "
+"<literal>visible</literal> property of the <literal>lines_label</literal> "
+"widget to the same property of the <literal>lines</literal> widget. In "
+"<classname>ExampleAppWindow</classname>'s constructor:"
 msgstr ""
-"Manejar un evento de X no afecta a las otras señales del widget. Si maneja "
-"<literal>button_pressed_event</literal> para <classname>Gtk::Button</"
-"classname>, igualmente podrá obtener la señal <literal>clicked</literal>. Se "
-"emiten (casi) al mismo tiempo."
 
-#: C/gtkmm-tutorial-in.xml:8080(para)
-msgid ""
-"Note also that not all widgets receive all X events by default. To receive "
-"additional X events, you can use <methodname>Gtk::Widget::set_events()</"
-"methodname> before showing the widget, or <methodname>Gtk::Widget::"
-"add_events()</methodname> after showing the widget. However, some widgets "
-"must first be placed inside an <classname>EventBox</classname> widget. See "
-"the <link linkend=\"chapter-widgets-without-xwindows\">Widgets Without X-"
-"Windows</link> chapter."
-msgstr ""
-"Tenga también en cuenta que no todos los widgets reciben todos los eventos "
-"de X de manera predeterminada. Para recibir eventos de X adicionales, puede "
-"usar <methodname>Gtk::Widget::set_events()</methodname> antes de mostrar al "
-"widget, o <methodname>Gtk::Widget::add_events()</methodname> después de "
-"haberlo mostrado. Sin embargo, algunos widgets deben ponerse dentro de un "
-"widget <classname>EventBox</classname> primero. Consulte el capítulo <link "
-"linkend=\"chapter-widgets-without-xwindows\">Widgets sin X-Windows</link>."
-
-#: C/gtkmm-tutorial-in.xml:8089(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7842
 #, no-wrap
 msgid ""
+"add_action(Gio::PropertyAction::create(\"show-lines\", m_lines-&gt;property_visible()));\n"
+"m_binding_lines_visible = Glib::Binding::bind_property(m_lines-&gt;property_visible(),\n"
+"  m_lines_label-&gt;property_visible());\n"
 "\n"
-"bool on_button_press(GdkEventButton* event);\n"
-"Gtk::Button button(\"label\");\n"
-"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_button_press) );\n"
 msgstr ""
+"add_action(Gio::PropertyAction::create(\"show-lines\", m_lines-&gt;property_visible()));\n"
+"m_binding_lines_visible = Glib::Binding::bind_property(m_lines-&gt;property_visible(),\n"
+"  m_lines_label-&gt;property_visible());\n"
 "\n"
-"bool on_button_press(GdkEventButton* event);\n"
-"Gtk::Button button(\"label\");\n"
-"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_button_press) );\n"
 
-#: C/gtkmm-tutorial-in.xml:8095(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7848
 msgid ""
-"When the mouse is over the button and a mouse button is pressed, "
-"<methodname>on_button_press()</methodname> will be called."
+"We also need a function that counts the lines of the currently active tab, "
+"and updates the <literal>lines</literal> label. See the full source if you "
+"are interested in the details."
+msgstr ""
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7853
+msgid "This brings our example application to this appearance:"
 msgstr ""
-"Cuando el ratón esté sobre el botón y el botón del ratón se presione, se "
-"llamará a <methodname>on_button_press()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:8100(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7864
 msgid ""
-"<type>GdkEventButton</type> is a structure containing the event's "
-"parameters, such as the coordinates of the mouse pointer at the time the "
-"button was pressed. There are several different types of <type>GdkEvent</"
-"type> structures for the various events."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step8\">Source Code</ulink>"
 msgstr ""
-"<type>GdkEventButton</type> es una estructura que contiene los parámetros "
-"del evento, como las coordenadas del puntero del ratón en el momento en el "
-"que se presionó el botón. Hay varios tipos diferentes de estructuras "
-"<type>GdkEvent</type> para la variedad de eventos."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step8\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:8108(title)
-msgid "Signal Handler sequence"
-msgstr "Secuencia de los gestores de señales"
+#. (itstool) path: sect1/title
+#. (itstool) path: figure/title
+#: C/index-in.docbook:7869 C/index-in.docbook:7895
+msgid "Header bar"
+msgstr "Barra de cabecera"
 
-#: C/gtkmm-tutorial-in.xml:8116(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7871
 msgid ""
-"\n"
-"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_mywindow_button_press), false );\n"
+"Our application already uses a <classname>Gtk::HeaderBar</classname> instead "
+"of a 'normal' window titlebar. The header bar is a direct child of the "
+"window, and its type is <literal>titlebar</literal>. This is set in the "
+"<filename>window.ui</filename> file."
 msgstr ""
-"\n"
-"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_mywindow_button_press), false );\n"
 
-#: C/gtkmm-tutorial-in.xml:8109(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7878
 msgid ""
-"By default, your signal handlers are called after any previously-connected "
-"signal handlers. However, this can be a problem with the X Event signals. "
-"For instance, the existing signal handlers, or the default signal handler, "
-"might return <literal>true</literal> to stop other signal handlers from "
-"being called. To specify that your signal handler should be called before "
-"the other signal handlers, so that it will always be called, you can specify "
-"<literal>false</literal> for the optional <literal>after</literal> "
-"parameter. For instance, <placeholder-1/>"
+"Here we'll just make two small changes to the header bar. The "
+"<literal>decoration-layout</literal> property is set in the <filename>window."
+"ui</filename> file, to show only the close button, and hide the minimize and "
+"maximize buttons. We also include an icon in the resource file, and set up "
+"this icon as the window icon. In <classname>ExampleAppWindow</classname>'s "
+"constructor:"
 msgstr ""
-"De manera predeterminada, sus gestores de señales se llaman después de "
-"cualquier gestor de señales conectado previamente. Sin embargo, esto "
-"puede ser un problema con las señales de eventos de X. Por ejemplo, los "
-"gestores de señales existentes, o el gestor de señales predeterminado, "
-"podrían devolver <literal>true</literal> para que no se llamen a otros "
-"gestores. Para especificar que el suyo debe llamarse antes que los otros, "
-"y que de esta manera siempre se llame, puede asignar <literal>false</"
-"literal> al parámetro opcional <literal>after</literal>. Por ejemplo, "
-"<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8120(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7885
+#, no-wrap
 msgid ""
-"The event is delivered first to the widget the event occurred in. If all "
-"signal handlers in that widget return <literal>false</literal> (indicating "
-"that the event has not been handled), then the signal will be propagated to "
-"the parent widget and emitted there. This continues all the way up to the "
-"top-level widget if no one handles the event."
+"Gtk::IconTheme::get_for_display(get_display())-&gt;add_resource_path(\"/org/gtkmm/exampleapp\");\n"
+"set_icon_name(\"exampleapp\");\n"
+"\n"
 msgstr ""
-"El evento se entrega primero al widget en el que ocurrió. Si todos los "
-"gestores de señales de ese widget devuelven <literal>false</literal> "
-"(indicando que el evento no se ha manejado), entonces la señal se propagará "
-"al widget padre y se emitirá allí. Esto continúa hasta el widget de nivel "
-"superior si ninguno maneja el evento."
+"Gtk::IconTheme::get_for_display(get_display())-&gt;add_resource_path(\"/org/gtkmm/exampleapp\");\n"
+"set_icon_name(\"exampleapp\");\n"
+"\n"
 
-#: C/gtkmm-tutorial-in.xml:8131(title)
-msgid "Exceptions in signal handlers"
-msgstr "Excepciones en gestores de señales"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7890
+msgid "Here is how the application now looks:"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:8132(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7901
 msgid ""
-"When a program is aborted because of an unhandled C++ exception, it's "
-"sometimes possible to use a debugger to find the location where the "
-"exception was thrown. This is more difficult than usual if the exception was "
-"thrown from a signal handler."
+"The <filename>window.ui</filename> file sets a header bar title, but this "
+"title is not shown. That's because the stack switcher is a child of type "
+"<literal>title</literal>. The stack switcher becomes a custom title that "
+"hides the title label."
 msgstr ""
-"Cuando se aborta un programa por una excepción de C++ no manejada, a veces "
-"es posible usar un depurador para encontrar el lugar en el que la excepción "
-"se lanzó. Esto es más difícil de lo normal si un gestor de señales lanzó "
-"la excepción."
 
-#: C/gtkmm-tutorial-in.xml:8137(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7907
 msgid ""
-"This section describes primarily what you can expect on a Linux system, when "
-"you use <ulink url=\"http://www.gnu.org/software/gdb/\";>the gdb debugger</"
-"ulink>."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step9\">Source Code</ulink>"
 msgstr ""
-"Esta sección describe principalmente qué puede esperar en un sistema Linux, "
-"cuando usa el <ulink url=\"http://www.gnu.org/software/gdb/\";>depurador gdb</"
-"ulink>."
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/buildapp/step9\">Código fuente</ulink>"
+
+#. (itstool) path: chapter/title
+#: C/index-in.docbook:7914
+msgid "Contributing"
+msgstr "Contribuir"
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7916
+msgid ""
+"This document, like so much other great software out there, was created for "
+"free by volunteers. If you are at all knowledgeable about any aspect of "
+"<application>gtkmm</application> that does not already have documentation, "
+"please consider contributing to this document."
+msgstr ""
+"Fueron voluntarios los que crearon este documento, al igual que mucho otro "
+"software grandioso, gratuitamente. Si tiene conocimientos de cualquier "
+"aspecto de <application>gtkmm</application> que todavía no esté documentado, "
+"por favor considere contribuir a este documento."
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7922
+#, fuzzy
+#| msgid ""
+#| "Ideally, we would like you to <ulink url=\"http://www.gtkmm.org/bugs.shtml";
+#| "\">provide a patch</ulink> to the <filename>docs/tutorial/C/gtkmm-"
+#| "tutorial-in.xml</filename> file. This file is currently in the "
+#| "<literal>gtkmm-documentation</literal> module in GNOME git."
+msgid ""
+"Ideally, we would like you to <ulink url=\"https://gitlab.gnome.org/GNOME/";
+"gtkmm-documentation/-/merge_requests\"> provide a merge request</ulink> to "
+"the <filename>docs/tutorial/C/index-in.docbook</filename> file. This file is "
+"in the <literal>gtkmm-documentation</literal> module in GNOME git."
+msgstr ""
+"Lo ideal sería que <ulink url=\"http://www.gtkmm.org/bugs.shtml";
+"\">proporcionara un parche</ulink> al archivo <filename>docs/tutorial/C/"
+"gtkmm-tutorial-in.xml</filename>. Este archivo está actualmente en el módulo "
+"<literal>gtkmm-documentation</literal> en el git de GNOME."
+
+#. (itstool) path: chapter/para
+#: C/index-in.docbook:7928
+#, fuzzy
+#| msgid ""
+#| "If you do decide to contribute, please post your contribution to the "
+#| "<application>gtkmm</application> mailing list at <ulink url=\"mailto:";
+#| "gtkmm-list gnome org\">&lt;gtkmm-list gnome org&gt;</ulink>. Also, be "
+#| "aware that the entirety of this document is free, and any addition you "
+#| "provide must also be free. That is, people must be able to use any "
+#| "portion of your examples in their programs, and copies of this document "
+#| "(including your contribution) may be distributed freely."
+msgid ""
+"If you do decide to contribute, please post your contribution to the "
+"<application>gtkmm</application> mailing list at <ulink url=\"mailto:gtkmm-";
+"list gnome org\">&lt;gtkmm-list gnome org&gt;</ulink> or as an issue or "
+"merge request to <ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-";
+"documentation\">GitLab</ulink>. Also, be aware that the entirety of this "
+"document is free, and any addition you provide must also be free. That is, "
+"people must be able to use any portion of your examples in their programs, "
+"and copies of this document (including your contribution) may be distributed "
+"freely."
+msgstr ""
+"Si decide contribuir, por favor envíe su contribución a la lista de correo "
+"de <application>gtkmm</application>, en <ulink url=\"mailto:gtkmm-list@gnome.";
+"org\">&lt;gtkmm-list gnome org&gt;</ulink>. Además, tenga en cuenta que la "
+"totalidad de este documento es libre, y cualquier adición que proporcione "
+"también debe serlo. Esto significa que la gente debe poder usar cualquier "
+"porción de sus ejemplos en sus programas, y las copias de este documento "
+"(incluyendo su contribución) se pueden distribuir libremente."
+
+#. (itstool) path: appendix/title
+#: C/index-in.docbook:7941
+msgid "The RefPtr smartpointer"
+msgstr "El puntero inteligente RefPtr"
+
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:7942
+msgid ""
+"<classname>Glib::RefPtr</classname> is a smartpointer. Specifically, it is a "
+"reference-counting smartpointer. You might be familiar with <classname>std::"
+"unique_ptr&lt;&gt;</classname> and <classname>std::shared_ptr&lt;&gt;</"
+"classname>, which are also smartpointers. In <application>gtkmm</"
+"application>-4.0 <classname>Glib::RefPtr&lt;&gt;</classname> is an alias for "
+"<classname>std::shared_ptr&lt;&gt;</classname>, which is reference-counting. "
+"<classname>Glib::RefPtr&lt;&gt;</classname> was introduced long before there "
+"was a reference-counting smartpointer in the C++ Standard Library."
+msgstr ""
+
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:7953
+msgid ""
+"<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGlib_1_1RefPtr.";
+"html\">Reference</ulink>"
+msgstr ""
+"<ulink url=\"http://developer.gnome.org/glibmm/unstable/classGlib_1_1RefPtr.";
+"html\">Referencia</ulink>"
+
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:7955
+msgid ""
+"A smartpointer acts much like a normal pointer. Here are a few examples."
+msgstr ""
+"Un puntero inteligente actúa como un puntero normal. Aquí hay algunos "
+"ejemplos."
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:7958
+msgid "Copying"
+msgstr "Copiado"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7959
+msgid ""
+"You can copy <classname>RefPtr</classname>s, just like normal pointers. But "
+"unlike normal pointers, you don't need to worry about deleting the "
+"underlying instance."
+msgstr ""
+"Puede copiar <classname>RefPtr</classname> como punteros normales. Pero, a "
+"diferencia de los punteros normales, no necesita preocuparse por la "
+"eliminación de la instancia subyacente."
 
-#: C/gtkmm-tutorial-in.xml:8144(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7964
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+#| "Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf2 = refPixbuf;\n"
 msgid ""
 "\n"
-"// without_signal.cc\n"
-"#include &lt;gtkmm.h&gt;\n"
-"\n"
-"bool throwSomething()\n"
-"{\n"
-"  throw \"Something\";\n"
-"  return true;\n"
-"}\n"
-"\n"
-"int main(int argc, char** argv)\n"
-"{\n"
-"  throwSomething();\n"
-"  Glib::RefPtr&lt;Gtk::Application&gt; app =\n"
-"    Gtk::Application::create(argc, argv, \"org.gtkmm.without_signal\");\n"
-"  return app-&gt;run();\n"
-"}\n"
+"auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"auto refPixbuf2 = refPixbuf;\n"
 msgstr ""
 "\n"
-"// without_signal.cc\n"
-"#include &lt;gtkmm.h&gt;\n"
-"\n"
-"bool throwSomething()\n"
-"{\n"
-"  throw \"Something\";\n"
-"  return true;\n"
-"}\n"
-"\n"
-"int main(int argc, char** argv)\n"
-"{\n"
-"  throwSomething();\n"
-"  Glib::RefPtr&lt;Gtk::Application&gt; app =\n"
-"    Gtk::Application::create(argc, argv, \"org.gtkmm.without_signal\");\n"
-"  return app-&gt;run();\n"
-"}\n"
+"auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"auto refPixbuf2 = refPixbuf;\n"
 
-#: C/gtkmm-tutorial-in.xml:8141(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7968
 msgid ""
-"First, let's look at a simple example where an exception is thrown from a "
-"normal function (no signal handler). <placeholder-1/>"
+"Of course this means that you can store <classname>RefPtr</classname>s in "
+"standard containers, such as <classname>std::vector</classname> or "
+"<classname>std::list</classname>."
 msgstr ""
-"Primero, mire el ejemplo simple en el que se lanza una excepción desde una "
-"función normal (sin gestor de señales). <placeholder-1/>"
+"Por supuesto esto significa que puede almacenar <classname>RefPtr</"
+"classname> en contenedores estándar, como <classname>std::vector</classname> "
+"o <classname>std::list</classname>."
 
-#: C/gtkmm-tutorial-in.xml:8166(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7972
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "std::list&lt; Glib::RefPtr&lt;Gdk::Pixbuf&gt; &gt; listPixbufs;\n"
+#| "Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+#| "listPixbufs.push_back(refPixbuf);\n"
 msgid ""
 "\n"
-"&gt; gdb without_signal\n"
-"(gdb) run\n"
-"terminate called after throwing an instance of 'char const*'\n"
-"\n"
-"Program received signal SIGABRT, Aborted.\n"
-"(gdb) backtrace\n"
-"#7  0x08048864 in throwSomething () at without_signal.cc:6\n"
-"#8  0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n"
+"std::list&lt;Glib::RefPtr&lt;Gdk::Pixbuf&gt;&gt; listPixbufs;\n"
+"auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"listPixbufs.push_back(refPixbuf);\n"
 msgstr ""
 "\n"
-"&gt; gdb without_signal\n"
-"(gdb) run\n"
-"terminate called after throwing an instance of 'char const*'\n"
-"\n"
-"Program received signal SIGABRT, Aborted.\n"
-"(gdb) backtrace\n"
-"#7  0x08048864 in throwSomething () at without_signal.cc:6\n"
-"#8  0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n"
+"std::list&lt;Glib::RefPtr&lt;Gdk::Pixbuf&gt;&gt; listPixbufs;\n"
+"auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"listPixbufs.push_back(refPixbuf);\n"
 
-#: C/gtkmm-tutorial-in.xml:8163(para)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:7979
+msgid "Dereferencing"
+msgstr "Eliminar referencia"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7980
 msgid ""
-"Here is an excerpt from a <application>gdb</application> session. Only the "
-"most interesting parts of the output are shown. <placeholder-1/> You can see "
-"that the exception was thrown from <filename>without_signal.cc</filename>, "
-"line 6 (<code>throw \"Something\";</code>)."
+"You can dereference a smartpointer with the -&gt; operator, to call the "
+"methods of the underlying instance, just like a normal pointer."
 msgstr ""
-"Aquí hay un extracto de una sesión de <application>gdb</application>. Sólo "
-"se muestran las partes más interesantes de la salida. <placeholder-1/> Puede "
-"ver que la excepción se lanzó desde <filename>without_signal.cc</filename>, "
-"en la línea 6 (<code>throw \"Something\";</code>)."
+"Puede desreferenciar un puntero inteligente con el operador -&gt; para "
+"llamar a los métodos de la instancia subyacente, al igual que un puntero "
+"normal."
 
-#: C/gtkmm-tutorial-in.xml:8182(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7983
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+#| "int width = refPixbuf-&gt;get_width();\n"
 msgid ""
 "\n"
-"// with_signal.cc\n"
-"#include &lt;gtkmm.h&gt;\n"
-"\n"
-"bool throwSomething()\n"
-"{\n"
-"  throw \"Something\";\n"
-"  return true;\n"
-"}\n"
-"\n"
-"int main(int argc, char** argv)\n"
-"{\n"
-"  Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n"
-"  Glib::RefPtr&lt;Gtk::Application&gt; app =\n"
-"    Gtk::Application::create(argc, argv, \"org.gtkmm.with_signal\");\n"
-"  app-&gt;hold();\n"
-"  return app-&gt;run();\n"
-"}\n"
+"auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"auto width = refPixbuf-&gt;get_width();\n"
 msgstr ""
 "\n"
-"// with_signal.cc\n"
-"#include &lt;gtkmm.h&gt;\n"
-"\n"
-"bool throwSomething()\n"
-"{\n"
-"  throw \"Something\";\n"
-"  return true;\n"
-"}\n"
-"\n"
-"int main(int argc, char** argv)\n"
-"{\n"
-"  Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n"
-"  Glib::RefPtr&lt;Gtk::Application&gt; app =\n"
-"    Gtk::Application::create(argc, argv, \"org.gtkmm.with_signal\");\n"
-"  app-&gt;hold();\n"
-"  return app-&gt;run();\n"
-"}\n"
+"auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"auto width = refPixbuf-&gt;get_width();\n"
 
-#: C/gtkmm-tutorial-in.xml:8179(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7987
 msgid ""
-"Now let's see what happens when an exception is thrown from a signal "
-"handler. Here's the source code. <placeholder-1/>"
+"You can also use the * operator and the <methodname>get()</methodname> "
+"method to access the underlying instance, but it's usually a bad idea to do "
+"so. Unless you are careful, you can end up with a pointer or a reference "
+"which is not included in the reference count."
 msgstr ""
-"Ahora vea qué pasa cuando una excepción se lanza desde un gestor de "
-"señales. Aquí está el código fuente. <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8204(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:7992
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gdk::Pixbuf&gt; refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+#| "Gdk::Pixbuf&amp; underlying = *refPixbuf; //Syntax error - will not compile.\n"
 msgid ""
 "\n"
-"&gt; gdb with_signal\n"
-"(gdb) run\n"
-"(with_signal:2703): glibmm-ERROR **:\n"
-"unhandled exception (type unknown) in signal handler\n"
-"\n"
-"Program received signal SIGTRAP, Trace/breakpoint trap.\n"
-"(gdb) backtrace\n"
-"#2  0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77\n"
-"#3  Glib::exception_handlers_invoke () at exceptionhandler.cc:150\n"
-"#4  0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212\n"
-"#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n"
-"#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n"
+"auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"auto&amp; underlying = *refPixbuf; // Possible, but not recommended\n"
 msgstr ""
 "\n"
-"&gt; gdb with_signal\n"
-"(gdb) run\n"
-"(with_signal:2703): glibmm-ERROR **:\n"
-"unhandled exception (type unknown) in signal handler\n"
-"\n"
-"Program received signal SIGTRAP, Trace/breakpoint trap.\n"
-"(gdb) backtrace\n"
-"#2  0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77\n"
-"#3  Glib::exception_handlers_invoke () at exceptionhandler.cc:150\n"
-"#4  0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212\n"
-"#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n"
-"#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n"
+"auto refPixbuf = Gdk::Pixbuf::create_from_file(filename);\n"
+"auto&amp; underlying = *refPixbuf; // Possible, but not recommended\n"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:7998
+msgid "Casting"
+msgstr "Conversión de tipos"
 
-#: C/gtkmm-tutorial-in.xml:8202(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:7999
 msgid ""
-"And here's an excerpt from a <application>gdb</application> session. "
-"<placeholder-1/> The exception is caught in <application>glibmm</"
-"application>, and the program ends with a call to <function>g_error()</"
-"function>. Other exceptions may result in different behaviour, but in any "
-"case the exception from a signal handler is caught in <application>glibmm</"
-"application> or <application>gtkmm</application>, and <application>gdb</"
-"application> can't see where it was thrown."
+"You can cast <classname>RefPtr</classname>s to base types, just like normal "
+"pointers."
 msgstr ""
-"Y aquí hay un extracto de una sesión de <application>gdb</application>. "
-"<placeholder-1/> La excepción se atrapa en <application>glibmm</"
-"application>, y el programa termina con una llamada a <function>g_error()</"
-"function>. Otras excepciones pueden resultar en un comportamiento diferente, "
-"pero en cualquier caso la excepción desde el gestor de señales se atrapa "
-"en <application>glibmm</application> o <application>gtkmm</application>, y "
-"<application>gdb</application> no puede ver dónde se lanzó."
+"Puede convertir <classname>RefPtr</classname> a tipos base, al igual que a "
+"los punteros normales."
 
-#: C/gtkmm-tutorial-in.xml:8227(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8003
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore = Gtk::TreeStore::create(columns);\n"
+#| "Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = refStore;\n"
 msgid ""
 "\n"
-"&gt; gdb with_signal\n"
-"(gdb) catch throw\n"
-"Catchpoint 1 (throw)\n"
-"(gdb) run\n"
-"Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw ()\n"
-"(gdb) backtrace\n"
-"#0  0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6\n"
-"#1  0x08048bd4 in throwSomething () at with_signal.cc:6\n"
-"(gdb) continue\n"
-"Continuing.\n"
-"(with_signal:2375): glibmm-ERROR **\n"
-"unhandled exception (type unknown) in signal handler\n"
+"auto refStore = Gtk::TreeStore::create(columns);\n"
+"Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = refStore;\n"
+msgstr ""
 "\n"
-"Program received signal SIGTRAP, Trace/breakpoint trap.\n"
+"auto refStore = Gtk::TreeStore::create(columns);\n"
+"Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = refStore;\n"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8007
+#, fuzzy
+#| msgid ""
+#| "This means that any method which takes a <type>const Glib::RefPtr&lt;"
+#| "BaseType&gt;</type> argument can also take a <type>const Glib::RefPtr&lt;"
+#| "DerivedType&gt;</type>. The cast is implicit, just as it would be for a "
+#| "normal pointer."
+msgid ""
+"This means that any method which takes a <type>const Glib::RefPtr&lt;"
+"BaseType&gt;&amp;</type> argument can also take a <type>const Glib::"
+"RefPtr&lt;DerivedType&gt;&amp;</type>. The cast is implicit, just as it "
+"would be for a normal pointer."
+msgstr ""
+"Esto significa que cualquier método que tome un argumento <type>const Glib::"
+"RefPtr&lt;BaseType&gt;</type> también puede tomar un <type>const Glib::"
+"RefPtr&lt;DerivedType&gt;</type>. La conversión es implícita, al igual que "
+"lo sería con un puntero normal."
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8011
+msgid ""
+"You can also cast to a derived type, but the syntax is a little different "
+"than with a normal pointer."
 msgstr ""
+"También puede convertir a un tipo derivado, pero la sintaxis es un poco "
+"diferente que con un puntero normal."
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8014
+#, no-wrap
+msgid ""
 "\n"
-"&gt; gdb with_signal\n"
-"(gdb) catch throw\n"
-"Catchpoint 1 (throw)\n"
-"(gdb) run\n"
-"Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw ()\n"
-"(gdb) backtrace\n"
-"#0  0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6\n"
-"#1  0x08048bd4 in throwSomething () at with_signal.cc:6\n"
-"(gdb) continue\n"
-"Continuing.\n"
-"(with_signal:2375): glibmm-ERROR **\n"
-"unhandled exception (type unknown) in signal handler\n"
+"auto refStore = std::dynamic_pointer_cast&lt;Gtk::TreeStore&gt;(refModel);\n"
+"auto refStore2 = std::static_pointer_cast&lt;Gtk::TreeStore&gt;(refModel);\n"
+msgstr ""
 "\n"
-"Program received signal SIGTRAP, Trace/breakpoint trap.\n"
+"auto refStore = std::dynamic_pointer_cast&lt;Gtk::TreeStore&gt;(refModel);\n"
+"auto refStore2 = std::static_pointer_cast&lt;Gtk::TreeStore&gt;(refModel);\n"
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8020
+#, fuzzy
+#| msgid "Checking for null"
+msgid "Checking for nullptr"
+msgstr "Verificar si es nulo"
 
-#: C/gtkmm-tutorial-in.xml:8224(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8021
 msgid ""
-"To see where the exception is thrown, you can use the <application>gdb</"
-"application> command <userinput>catch throw</userinput>. <placeholder-1/>"
+"Just like normal pointers, you can check whether a <classname>RefPtr</"
+"classname> points to anything."
 msgstr ""
-"Para ver dónde se lanza la excepción, puede usar el comando <userinput>catch "
-"throw</userinput> de <application>gdb</application>. <placeholder-1/>"
+"Al igual que con los punteros normales, puede verificar si un "
+"<classname>RefPtr</classname> apunta a algo."
 
-#: C/gtkmm-tutorial-in.xml:8248(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8025
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::RefPtr&lt;Gtk::TreeModel&gt; refModel = m_TreeView.get_model();\n"
+#| "if(refModel)\n"
+#| "{\n"
+#| "  int cols_count = refModel-&gt;get_n_columns();\n"
+#| "  ...\n"
+#| "}\n"
 msgid ""
 "\n"
-"(gdb) catch throw\n"
-"(gdb) commands\n"
-"(gdb)   backtrace\n"
-"(gdb)   continue\n"
-"(gdb)   end\n"
-"(gdb) set pagination off\n"
-"(gdb) run\n"
+"auto refModel = m_TreeView.get_model();\n"
+"if (refModel)\n"
+"{\n"
+"  auto cols_count = refModel-&gt;get_n_columns();\n"
+"  ...\n"
+"}\n"
 msgstr ""
 "\n"
-"(gdb) catch throw\n"
-"(gdb) commands\n"
-"(gdb)   backtrace\n"
-"(gdb)   continue\n"
-"(gdb)   end\n"
-"(gdb) set pagination off\n"
-"(gdb) run\n"
+"auto refModel = m_TreeView.get_model();\n"
+"if (refModel)\n"
+"{\n"
+"  auto cols_count = refModel-&gt;get_n_columns();\n"
+"  ...\n"
+"}\n"
 
-#: C/gtkmm-tutorial-in.xml:8244(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8033
+#, fuzzy
+#| msgid ""
+#| "But unlike normal pointers, <classname>RefPtr</classname>s are "
+#| "automatically initialized to null so you don't need to remember to do "
+#| "that yourself."
 msgid ""
-"If there are many caught exceptions before the interesting uncaught one, "
-"this method can be tedious. It can be automated with the following "
-"<application>gdb</application> commands. <placeholder-1/> These commands "
-"will print a backtrace from each <code>throw</code> and continue. The "
-"backtrace from the last (or possibly the last but one) <code>throw</code> "
-"before the program stops, is the interesting one."
+"But unlike normal pointers, <classname>RefPtr</classname>s are automatically "
+"initialized to <literal>nullptr</literal> so you don't need to remember to "
+"do that yourself."
 msgstr ""
-"Si se atrapan muchas excepciones antes de la que interesa, este método puede "
-"ser tedioso. Puede automatizarse con los siguientes comandos de "
-"<application>gdb</application>. <placeholder-1/> Estos comandos imprimirán "
-"una traza inversa de cada <code>throw</code> y continuará. La traza inversa "
-"del último (o posiblemente del penúltimo) <code>throw</code> antes de que el "
-"programa se detenga, es la interesante."
+"Pero, a diferencia de los punteros normales, los <classname>RefPtr</"
+"classname> se inicializan automáticamente a nulo, por lo que no necesita "
+"recordar hacerlo."
 
-#: C/gtkmm-tutorial-in.xml:8267(title)
-msgid "Creating your own signals"
-msgstr "Crear sus propias señales"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8039
+msgid "Constness"
+msgstr "Constancia"
 
-#: C/gtkmm-tutorial-in.xml:8268(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8040
 msgid ""
-"Now that you've seen signals and signal handlers in <application>gtkmm</"
-"application>, you might like to use the same technique to allow interaction "
-"between your own classes. That's actually very simple by using the "
-"<application>libsigc++</application> library directly."
+"The use of the <literal>const</literal> keyword in C++ is not always clear. "
+"You might not realise that <type>const Something*</type> declares a pointer "
+"to a <type>const Something</type>. The pointer can be changed, but not the "
+"<type>Something</type> that it points to."
 msgstr ""
-"Ahora que ha visto señales y gestores de señales en <application>gtkmm</"
-"application>, tal vez quiera usar la misma técnica para permitir interacción "
-"entre sus propias clases. Eso es realmente muy simple usando la biblioteca "
-"<application>libsigc++</application> directamente."
+"El uso de la palabra reservada <literal>const</literal> en C++ no siempre es "
+"claro. Puede no darse cuenta de que <type>const Algo*</type> declara un "
+"puntero a un <type>const Algo</type>. El puntero puede cambiarse, pero no el "
+"<type>Algo</type> al que apunta."
 
-#: C/gtkmm-tutorial-in.xml:8274(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8046
 msgid ""
-"This isn't purely a <application>gtkmm</application> or GUI issue. "
-"<application>gtkmm</application> uses <application>libsigc++</application> "
-"to implement its proxy wrappers for the <application>GTK+</application> "
-"signal system, but for new, non-GTK+ signals, you can create pure C++ "
-"signals, using the <classname>sigc::signal&lt;&gt;</classname> template."
+"Therefore, the <classname>RefPtr</classname> equivalent of <type>Something*</"
+"type> for a method parameter is <type>const Glib::RefPtr&lt;Something&gt;"
+"&amp;</type>, and the equivalent of <type>const Something*</type> is "
+"<type>const Glib::RefPtr&lt;const Something&gt;&amp;</type>."
 msgstr ""
-"Esto no es un asunto único de <application>gtkmm</application> o de IGU. "
-"<application>gtkmm</application> usa <application>libsigc++</application> "
-"para implementar sus envoltorios de proxy para el sistema de señales de "
-"<application>GTK+</application>, pero para las señales nuevas que no son de "
-"GTK+, puede crear señales de C++ puras, usando la plantilla <classname>sigc::"
-"signal&lt;&gt;</classname>."
+"Por lo tanto, el equivalente <classname>RefPtr</classname> de <type>Algo*</"
+"type> para un parámetro de un método es <type>const Glib::RefPtr&lt;"
+"Something&gt;&amp;</type>, y el equivalente de <type>const Algo*</type> es "
+"<type>const Glib::RefPtr&lt;const Something&gt;&amp;</type>."
 
-#: C/gtkmm-tutorial-in.xml:8285(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8053
 msgid ""
-"\n"
-"sigc::signal&lt;void, bool, int&gt; signal_something;\n"
+"The <literal>const ... &amp;</literal> around both is just for efficiency, "
+"like using <classname>const std::string&amp;</classname> instead of "
+"<classname>std::string</classname> for a method parameter to avoid "
+"unnecessary copying."
 msgstr ""
-"\n"
-"sigc::signal&lt;void, bool, int&gt; signal_something;\n"
+"El <literal>const ... &amp;</literal> que los rodea está sólo por "
+"eficiencia, como usar <literal>const std::string&amp;</literal> en lugar de "
+"<classname>std::string</classname> como método de parámetro para evitar una "
+"copia innecesaria."
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8068
+msgid "Connecting signal handlers"
+msgstr "Conectar gestores de señales"
 
-#: C/gtkmm-tutorial-in.xml:8281(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8069
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> widget classes have signal accessor "
+#| "methods, such as <methodname>Gtk::Button::signal_clicked()</methodname>, "
+#| "which allow you to connect your signal handler. Thanks to the flexibility "
+#| "of <application>libsigc++</application>, the callback library used by "
+#| "<application>gtkmm</application>, the signal handler can be almost any "
+#| "kind of function, but you will probably want to use a class method. Among "
+#| "<application>GTK+</application> C coders, these signal handlers are often "
+#| "named callbacks."
 msgid ""
-"For instance, to create a signal that sends 2 parameters, a <type>bool</"
-"type> and an <type>int</type>, just declare a <classname>sigc::signal</"
-"classname>, like so: <placeholder-1/>"
+"<application>gtkmm</application> widget classes have signal accessor "
+"methods, such as <methodname>Gtk::Button::signal_clicked()</methodname>, "
+"which allow you to connect your signal handler. Thanks to the flexibility of "
+"<application>libsigc++</application>, the callback library used by "
+"<application>gtkmm</application>, the signal handler can be almost any kind "
+"of function, but you will probably want to use a class method. Among "
+"<application>GTK</application> C coders, these signal handlers are often "
+"named callbacks."
 msgstr ""
-"Por ejemplo, para crear una señal que envíe 2 parámetros, un <type>bool</"
-"type> y un <type>int</type>, simplemente declare una <classname>sigc::"
-"signal</classname>, así: <placeholder-1/>"
+"Las clases de widgets de <application>gtkmm</application> tienen métodos de "
+"acceso a señales, como <methodname>Gtk::Button::signal_clicked()</"
+"methodname>, que le permiten conectar su gestor de señales. Gracias a la "
+"flexibilidad de <application>libsigc++</application>, la biblioteca de "
+"retornos de llamada usada por <application>gtkmm</application>, el gestor de "
+"señales puede ser casi cualquier tipo de función, pero probablemente quiera "
+"usar un método de clase. Entre los programadores de C de <application>GTK+</"
+"application>, estos gestores de señales a menudo se llaman retornos de "
+"llamada."
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8079
+msgid "Here's an example of a signal handler being connected to a signal:"
+msgstr ""
+"Aquí hay un ejemplo de un gestor de señales que se conecta a una señal:"
 
-#: C/gtkmm-tutorial-in.xml:8293(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8083
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "#include &lt;gtkmm/button.h&gt;\n"
+#| "\n"
+#| "void on_button_clicked()\n"
+#| "{\n"
+#| "    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
+#| "}\n"
+#| "\n"
+#| "main()\n"
+#| "{\n"
+#| "    Gtk::Button button(\"Hello World\");\n"
+#| "    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
+#| "}\n"
 msgid ""
 "\n"
-"class Server\n"
-"{\n"
-"public:\n"
-"  //signal accessor:\n"
-"  typedef sigc::signal&lt;void, bool, int&gt; type_signal_something;\n"
-"  type_signal_something signal_something();\n"
+"#include &lt;gtkmm/button.h&gt;\n"
 "\n"
-"protected:\n"
-"  type_signal_something m_signal_something;\n"
-"};\n"
+"void on_button_clicked()\n"
+"{\n"
+"    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
+"}\n"
 "\n"
-"Server::type_signal_something Server::signal_something()\n"
+"int main()\n"
 "{\n"
-"  return m_signal_something;\n"
+"    Gtk::Button button(\"Hello World\");\n"
+"    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
 "}\n"
 msgstr ""
 "\n"
-"class Server\n"
-"{\n"
-"public:\n"
-"  //signal accessor:\n"
-"  typedef sigc::signal&lt;void, bool, int&gt; type_signal_something;\n"
-"  type_signal_something signal_something();\n"
+"#include &lt;gtkmm/button.h&gt;\n"
 "\n"
-"protected:\n"
-"  type_signal_something m_signal_something;\n"
-"};\n"
+"void on_button_clicked()\n"
+"{\n"
+"    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
+"}\n"
 "\n"
-"Server::type_signal_something Server::signal_something()\n"
+"int main()\n"
 "{\n"
-"  return m_signal_something;\n"
+"    Gtk::Button button(\"Hello World\");\n"
+"    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
 "}\n"
 
-#: C/gtkmm-tutorial-in.xml:8289(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8098
 msgid ""
-"You could just declare that signal as a public member variable, but some "
-"people find that distasteful and prefer to make it available via an accessor "
-"method, like so: <placeholder-1/>"
+"There's rather a lot to think about in this (non-functional) code. First "
+"let's identify the parties involved:"
 msgstr ""
-"También podría simplemente declarar esa señal como una variable miembro "
-"pública, pero algunas personas lo encuentran desastroso y prefieren hacerla "
-"disponible mediante un método de acceso, así: <placeholder-1/>"
+"Hay mucho para pensar en este código no funcional. Primero, identifique a "
+"los grupos involucrados:"
 
-#: C/gtkmm-tutorial-in.xml:8315(programlisting)
-#, no-wrap
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8106
+msgid "The signal handler is <methodname>on_button_clicked()</methodname>."
+msgstr "El gestor de señales es <methodname>on_button_clicked()</methodname>."
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8112
 msgid ""
-"\n"
-"server.signal_something().connect(\n"
-"  sigc::mem_fun(client, &amp;Client::on_server_something) );\n"
+"We're hooking it up to the <classname>Gtk::Button</classname> object called "
+"<varname>button</varname>."
 msgstr ""
-"\n"
-"server.signal_something().connect(\n"
-"  sigc::mem_fun(client, &amp;Client::on_server_something) );\n"
+"Se engancha al objeto <classname>Gtk::Button</classname> llamado "
+"<varname>button</varname>."
 
-#: C/gtkmm-tutorial-in.xml:8312(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8119
 msgid ""
-"You can then connect to the signal using the same syntax used when "
-"connecting to <application>gtkmm</application> signals. For instance, "
-"<placeholder-1/>"
+"When the Button emits its <literal>clicked</literal> signal, "
+"<methodname>on_button_clicked()</methodname> will be called."
 msgstr ""
-"Puede entonces conectar a la señal usando la misma sintaxis que usaba cuando "
-"conectaba a señales de <application>gtkmm</application>. Por ejemplo, "
-"<placeholder-1/>"
+"Cuando el botón emita su señal <literal>clicked</literal>, se llamará a "
+"<methodname>on_button_clicked()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:8323(para)
-msgid "This is a full working example that defines and uses custom signals."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8127
+msgid "Now let's look at the connection again:"
+msgstr "Ahora, mire la conexión nuevamente:"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8131
+#, no-wrap
+msgid ""
+"\n"
+"    ...\n"
+"    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
+"    ...\n"
 msgstr ""
-"Este es un ejemplo funcional completo que define y usa señales "
-"personalizadas."
+"\n"
+"    ...\n"
+"    button.signal_clicked().connect(sigc::ptr_fun(&amp;on_button_clicked));\n"
+"    ...\n"
 
-#: C/gtkmm-tutorial-in.xml:8337(title)
-msgid "Comparison with other signalling systems"
-msgstr "Comparación con otros sistemas de señales"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8137
+msgid ""
+"Note that we don't pass a pointer to <methodname>on_button_clicked()</"
+"methodname> directly to the signal's <methodname>connect()</methodname> "
+"method. Instead, we call <function>sigc::ptr_fun()</function>, and pass the "
+"result to <methodname>connect()</methodname>."
+msgstr ""
+"Tenga en cuenta que no se le pasa un puntero a "
+"<methodname>on_button_clicked()</methodname> directamente al método de la "
+"señal <methodname>connect()</methodname>. En su lugar, se llama a "
+"<function>sigc::ptr_fun()</function>, y se le pasa el resultado a "
+"<methodname>connect()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:8338(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8144
 msgid ""
-"(An aside: <application>GTK+</application> calls this scheme \"signalling\"; "
-"the sharp-eyed reader with GUI toolkit experience will note that this same "
-"design is often seen under the name of \"broadcaster-listener\" (e.g., in "
-"Metrowerks' PowerPlant framework for the Macintosh). It works in much the "
-"same way: one sets up <literal>broadcasters</literal>, and then connects "
-"<literal>listeners</literal> to them; the broadcaster keeps a list of the "
-"objects listening to it, and when someone gives the broadcaster a message, "
-"it calls all of its objects in its list with the message. In "
-"<application>gtkmm</application>, signal objects play the role of "
-"broadcasters, and slots play the role of listeners - sort of. More on this "
-"later.)"
+"<function>sigc::ptr_fun()</function> generates a <classname>sigc::slot</"
+"classname>. A slot is an object which looks and feels like a function, but "
+"is actually an object. These are also known as function objects, or "
+"functors. <function>sigc::ptr_fun()</function> generates a slot for a "
+"standalone function or static method. <function>sigc::mem_fun()</function> "
+"generates a slot for a member method of a particular instance."
 msgstr ""
-"(Nota aparte: <application>GTK+</application> llama a este esquema "
-"«señalización»; el lector perspicaz con experiencia en kits de herramientas "
-"de IGU notará que este mismo diseño se ve a menudo bajo el nombre de «emisor-"
-"receptor» (por ejemplo, en la plataforma de Metrowerks PowerPlant para los "
-"Macintosh). Funciona casi de la misma manera: uno establece "
-"<literal>emisores</literal>, y después les conecta <literal>receptores</"
-"literal>; el emisor tiene una lista de los objetos que lo están recibiendo, "
-"y cuando alguien le envía un mensaje al emisor, llama a todos sus objetos en "
-"su lista con el mensaje. En <application>gtkmm</application>, los objetos de "
-"señales hacen de emisores, y los «slots» de receptores, o algo así. Se "
-"hablará de este tema más adelante)."
+"<function>sigc::ptr_fun()</function> genera un <classname>sigc::slot</"
+"classname>. Un «slot» es un objeto que se comporta como una función, pero en "
+"realidad es un objeto. Estos también se llaman objetos función, o funtores. "
+"<function>sigc::ptr_fun()</function> genera un «slot» para una función "
+"independiente o un método estático. <function>sigc::mem_fun()</function> "
+"genera un «slot» para un método miembro de una instancia particular."
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8153
+msgid "Here's a slightly larger example of slots in action:"
+msgstr "Aquí hay un ejemplo ligeramente más amplio de los «slots» en acción:"
 
-#: C/gtkmm-tutorial-in.xml:8352(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8157
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "void on_button_clicked();\n"
+#| "\n"
+#| "class some_class\n"
+#| "{\n"
+#| "    void on_button_clicked();\n"
+#| "};\n"
+#| "\n"
+#| "some_class some_object;\n"
+#| "\n"
+#| "main()\n"
+#| "{\n"
+#| "    Gtk::Button button;\n"
+#| "    button.signal_clicked().connect( sigc::ptr_fun(&amp;on_button_clicked) );\n"
+#| "    button.signal_clicked().connect( sigc::mem_fun(some_object, &amp;some_class::on_button_clicked) );\n"
+#| "}\n"
 msgid ""
-"<application>gtkmm</application> signal handlers are strongly-typed, whereas "
-"<application>GTK+</application> C code allows you to connect a callback with "
-"the wrong number and type of arguments, leading to a segfault at runtime. "
-"And, unlike <application>Qt</application>, <application>gtkmm</application> "
-"achieves this without modifying the C++ language."
+"\n"
+"void on_button_clicked();\n"
+"\n"
+"class some_class\n"
+"{\n"
+"    void on_button_clicked();\n"
+"};\n"
+"\n"
+"some_class some_object;\n"
+"\n"
+"int main()\n"
+"{\n"
+"    Gtk::Button button;\n"
+"    button.signal_clicked().connect( sigc::ptr_fun(&amp;on_button_clicked) );\n"
+"    button.signal_clicked().connect( sigc::mem_fun(some_object, &amp;some_class::on_button_clicked) );\n"
+"}\n"
 msgstr ""
-"Los gestores de señales de <application>gtkmm</application> son de "
-"«tipado fuerte», mientras que el código C de <application>GTK+</application> "
-"le permite conectar un retorno de llamada con el número y tipo incorrecto de "
-"argumentos, llevando a una violación de acceso en tiempo de ejecución. Y, a "
-"diferencia de <application>Qt</application>, <application>gtkmm</"
-"application> logra esto sin modificar el lenguaje C++."
+"\n"
+"void on_button_clicked();\n"
+"\n"
+"class some_class\n"
+"{\n"
+"    void on_button_clicked();\n"
+"};\n"
+"\n"
+"some_class some_object;\n"
+"\n"
+"int main()\n"
+"{\n"
+"    Gtk::Button button;\n"
+"    button.signal_clicked().connect( sigc::ptr_fun(&amp;on_button_clicked) );\n"
+"    button.signal_clicked().connect( sigc::mem_fun(some_object, &amp;some_class::on_button_clicked) );\n"
+"}\n"
 
-#: C/gtkmm-tutorial-in.xml:8358(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8175
 msgid ""
-"Re. Overriding signal handlers: You can do this in the straight-C world of "
-"GTK+ too; that's what GTK's object system is for. But in GTK+, you have to "
-"go through some complicated procedures to get object-oriented features like "
-"inheritance and overloading. In C++, it's simple, since those features are "
-"supported in the language itself; you can let the compiler do the dirty work."
+"The first call to <methodname>connect()</methodname> is just like the one we "
+"saw last time; nothing new here."
 msgstr ""
-"Acerca de reemplazar gestores de señales: puede hacer esto en el mundo de "
-"C plano de GTK+, también; para eso existe el sistema de objetos de GTK+. "
-"Pero en GTK+, hay que realizar algunos procedimientos complicados para "
-"obtener características orientadas a objetos como herencia y sobrecarga. En C"
-"++, es simple, dado que esas características se soportan en el lenguaje en "
-"sí; puede dejarle el trabajo pesado al compilador."
+"La primera llamada a <methodname>connect()</methodname> es igual a la que "
+"vio la última vez; no hay nada nuevo aquí."
 
-#: C/gtkmm-tutorial-in.xml:8366(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8178
 msgid ""
-"This is one of the places where the beauty of C++ really comes out. One "
-"wouldn't think of subclassing a GTK+ widget simply to override its action "
-"method; it's just too much trouble. In GTK+, you almost always use signals "
-"to get things done, unless you're writing a new widget. But because "
-"overriding methods is so easy in C++, it's entirely practical - and sensible "
-"- to subclass a button for that purpose."
+"The next is more interesting. <function>sigc::mem_fun()</function> is called "
+"with two arguments. The first argument is <parameter>some_object</"
+"parameter>, which is the object that our new slot will be pointing at. The "
+"second argument is a pointer to one of its methods. This particular version "
+"of <function>sigc::mem_fun()</function> creates a slot which will, when "
+"\"called\", call the pointed-to method of the specified object, in this case "
+"<methodname>some_object.on_button_clicked()</methodname>."
 msgstr ""
-"Este es uno de los lugares en los que se muestra realmente la belleza de C+"
-"+. Uno no consideraría heredar un widget de GTK+ simplemente para reemplazar "
-"a su método de acción; es mucho problema. En GTK+, casi siempre se usan "
-"señales para realizar las tareas, a menos que se estuviera escribiendo un "
-"widget nuevo. Pero, dado que reemplazar métodos es tan fácil en C++, es "
-"enteramente práctico (y razonable) heredar de un botón para ese propósito."
+"La siguiente es más interesante. <function>sigc::mem_fun()</function> se "
+"llama con dos argumentos. El primero es <parameter>some_object</parameter>, "
+"que es el objeto al que su nuevo «slot» apuntará. El segundo argumento es un "
+"puntero a uno de sus métodos. Esta versión particular de <function>sigc::"
+"mem_fun()</function> crea un «slot» que, cuando se «llame», llamará al "
+"método al que apunta del objeto especificado, en este caso, "
+"<methodname>some_object.on_button_clicked()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:8377(title)
-msgid "<application>gtkmm</application> and Win32"
-msgstr "<application>gtkmm</application> y Win32"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8188
+msgid ""
+"Another thing to note about this example is that we made the call to "
+"<methodname>connect()</methodname> twice for the same signal object. This is "
+"perfectly fine - when the button is clicked, both signal handlers will be "
+"called."
+msgstr ""
+"Otra cosa notable acerca de este ejemplo es que se ha hecho la llamada a "
+"<methodname>connect()</methodname> dos veces para el mismo objeto de señal. "
+"Esto está perfectamente bien: cuando se pulse el botón, se llamará a ambos "
+"gestores de señales."
 
-#: C/gtkmm-tutorial-in.xml:8378(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8195
 msgid ""
-"One of the major advantages of <application>gtkmm</application> is that it "
-"is crossplatform. <application>gtkmm</application> programs written on other "
-"platforms such as GNU/Linux can generally be transferred to Windows (and "
-"vice versa) with few modifications to the source."
+"We just told you that the button's <literal>clicked</literal> signal is "
+"expecting to call a method with no arguments. All signals have requirements "
+"like this - you can't hook a function with two arguments to a signal "
+"expecting none (unless you use an adapter, such as <function>sigc::bind()</"
+"function>, of course). Therefore, it's important to know what type of signal "
+"handler you'll be expected to connect to a given signal."
 msgstr ""
-"Una de las mayores ventajas de <application>gtkmm</application> es que es "
-"multiplataforma. Los programas de <application>gtkmm</application> escritos "
-"en otras plataformas como GNU/Linux generalmente pueden transferirse a "
-"Windows (y viceversa) con pocas modificaciones al código fuente."
+"Como se mencionó, la señal <literal>clicked</literal> del botón está "
+"esperando llamar a un método sin argumentos. Todas las señales tienen "
+"requerimientos como este: no puede enganchar una función con dos argumentos "
+"a una señal que no espera ninguno (a menos que use un adaptador, como "
+"<function>sigc::bind()</function>, por supuesto). Por lo tanto, es "
+"importante saber qué tipo de gestor de señales se esperará que conecte a una "
+"señal dada."
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8207
+msgid "Writing signal handlers"
+msgstr "Escribir gestores de señales"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8209
+msgid ""
+"To find out what type of signal handler you can connect to a signal, you can "
+"look it up in the reference documentation or the header file. Here's an "
+"example of a signal declaration you might see in the <application>gtkmm</"
+"application> headers:"
+msgstr ""
+"Para descubrir qué tipo de gestor de señales puede conectar a una señal, "
+"puede buscarlo en la documentación de referencia en el archivo de cabecera. "
+"Aquí hay un ejemplo de una declaración de señal que puede ver en las "
+"cabeceras de <application>gtkmm</application>:"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8215
+#, fuzzy, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::SignalProxy1&lt;bool, Gtk::DirectionType&gt; signal_focus()\n"
+msgid ""
+"\n"
+"Glib::SignalProxy&lt;bool(Gtk::DirectionType)&gt; signal_focus()\n"
+msgstr ""
+"\n"
+"Glib::SignalProxy1&lt;bool, Gtk::DirectionType&gt; signal_focus()\n"
 
-#: C/gtkmm-tutorial-in.xml:8383(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8219
 #, fuzzy
 #| msgid ""
-#| "<application>gtkmm</application> currently works with the <ulink url="
-#| "\"http://mingw.org/\";>MingW/GCC3.4 compiler</ulink> and Microsoft Visual C"
-#| "++ 2005 or later (including the freely available express editions) on the "
-#| "Windows platform. There is an <ulink url=\"ftp://ftp.gnome.org/pub/GNOME/";
-#| "binaries/win32/gtkmm\"> installer</ulink> available for gtkmm on "
-#| "Microsoft Windows. Refer to <ulink url=\"http://live.gnome.org/gtkmm/";
-#| "MSWindows/\"> http://live.gnome.org/gtkmm/MSWindows</ulink> for "
-#| "instructions how to use it."
+#| "Other than the signal's name (<literal>focus</literal>), two things are "
+#| "important to note here: the number following the word "
+#| "<classname>SignalProxy</classname> at the beginning (1, in this case), "
+#| "and the types in the list (<type>bool</type> and <type>Gtk::"
+#| "DirectionType</type>). The number indicates how many arguments the signal "
+#| "handler should have; the first type, <type>bool</type>, is the type that "
+#| "the signal handler should return; and the next type, <type>Gtk::"
+#| "DirectionType</type>, is the type of this signal's first, and only, "
+#| "argument. By looking at the reference documentation, you can see the "
+#| "names of the arguments too."
+msgid ""
+"Other than the signal's name (<literal>focus</literal>), the template "
+"arguments are important to note here. The first argument, <type>bool</type>, "
+"is the type that the signal handler should return; and the type within "
+"parentheses, <type>Gtk::DirectionType</type>, is the type of this signal's "
+"first, and only, argument. By looking at the reference documentation, you "
+"can see the names of the arguments too."
+msgstr ""
+"Aparte del nombre de la señal (<literal>focus</literal>), hay otras dos "
+"cosas importantes que tener en cuenta aquí: el número que sigue a la palabra "
+"<classname>SignalProxy</classname> en el principio (1, en este caso), y los "
+"tipos en la lista (<type>bool</type> y <type>Gtk::DirectionType</type>). El "
+"número indica cuántos argumentos debe tener el gestor de señales; el primer "
+"tipo, <type>bool</type>, es el tipo que el gestor de señales debe devolver; "
+"y el tipo siguiente, <type>Gtk::DirectionType</type>, es el tipo del primer "
+"y único argumento de esta señal. Mirando la documentación de referencia, "
+"también puede ver los nombres de los argumentos."
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8228
 msgid ""
-"<application>gtkmm</application> currently works with the <ulink url="
-"\"http://mingw.org/\";>MingW/GCC3.4 compiler</ulink> and Microsoft Visual C++ "
-"2005 or later (including the freely available express editions) on the "
-"Windows platform. There is an <ulink url=\"ftp://ftp.gnome.org/pub/GNOME/";
-"binaries/win32/gtkmm\"> installer</ulink> available for gtkmm on Microsoft "
-"Windows. Refer to <ulink url=\"https://wiki.gnome.org/Projects/gtkmm/";
-"MSWindows/\"> https://wiki.gnome.org/Projects/gtkmm/MSWindows</ulink> for "
-"instructions how to use it."
+"The same principles apply for signals which have more arguments. Here's one "
+"with three (taken from <filename>&lt;gtkmm/textbuffer.h&gt;</filename>):"
 msgstr ""
-"<application>gtkmm</application> actualmente funciona con el <ulink url="
-"\"http://mingw.org/\";>compilador MingW/GCC3.4</ulink> y Microsoft Visual C++ "
-"2005 o posterior (incluyendo las ediciones disponibles gratuitamente o "
-"«express») en la plataforma Windows. Hay un <ulink url=\"ftp://ftp.gnome.org/";
-"pub/GNOME/binaries/win32/gtkmm\">instalador</ulink> disponible para gtkmm en "
-"Microsoft Windows. Consulte <ulink url=\"http://live.gnome.org/gtkmm/";
-"MSWindows/\">http://live.gnome.org/gtkmm/MSWindows</ulink> para ver "
-"instrucciones sobre su uso."
+"Los mismos principios se aplican a las señales que tienen más argumentos. "
+"Aquí hay una con tres (tomada de <filename>&lt;gtkmm/textbuffer.h&gt;</"
+"filename>):"
 
-#: C/gtkmm-tutorial-in.xml:8395(title)
-msgid "Building <application>gtkmm</application> on Win32"
-msgstr "Construir aplicaciones <application>gtkmm</application> en Win32"
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8233
+#, fuzzy, no-wrap
+#| msgid ""
+#| "\n"
+#| "Glib::SignalProxy3&lt;void, const TextBuffer::iterator&amp;, const Glib::ustrin&amp;, int&gt; 
signal_insert();\n"
+msgid ""
+"\n"
+"Glib::SignalProxy&lt;void(TextBuffer::iterator&amp;, const Glib::ustrin&amp;, int)&gt; signal_insert();\n"
+msgstr ""
+"\n"
+"Glib::SignalProxy3&lt;void, const TextBuffer::iterator&amp;, const Glib::ustrin&amp;, int&gt; 
signal_insert();\n"
 
-#: C/gtkmm-tutorial-in.xml:8396(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8237
 #, fuzzy
 #| msgid ""
-#| "Please see <ulink url=\"http://live.gnome.org/gtkmm/MSWindows/";
-#| "BuildingGtkmm\">http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm</"
-#| "ulink> for instructions on how to build gtkmm on Windws."
+#| "It follows the same form. The number 3 at the end of the type's name "
+#| "indicates that our signal handler will need three arguments. The first "
+#| "type in the type list is <type>void</type>, so that should be our signal "
+#| "handler's return type. The following three types are the argument types, "
+#| "in order. Our signal handler's prototype could look like this:"
+msgid ""
+"It follows the same form. The first type is <type>void</type>, so that "
+"should be our signal handler's return type. The following three types are "
+"the argument types, in order. Our signal handler's prototype could look like "
+"this:"
+msgstr ""
+"Sigue la misma forma. El número 3 al final del nombre del tipo indica que el "
+"gestor de señales necesitará tres argumentos. El primer tipo en la lista es "
+"<type>void</type>, por lo que ese será el tipo que devolverá el gestor de "
+"señales. Los tres tipos siguientes son los de los argumentos, en orden. El "
+"prototipo de gestor de señales se podría ver así:"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8244
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "void on_insert(const TextBuffer::iterator&amp; pos, const Glib::ustring&amp; text, int bytes)\n"
 msgid ""
-"Please see <ulink url=\"https://wiki.gnome.org/Projects/gtkmm/MSWindows/";
-"BuildingGtkmm\"> https://wiki.gnome.org/Projects/gtkmm/MSWindows/";
-"BuildingGtkmm</ulink> for instructions on how to build gtkmm on Windows."
+"\n"
+"void on_insert(TextBuffer::iterator&amp; pos, const Glib::ustring&amp; text, int bytes)\n"
 msgstr ""
-"Consulte <ulink url=\"http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm";
-"\">http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm</ulink> para obtener "
-"instrucciones sobre cómo construir gtkmm en Windows."
+"\n"
+"void on_insert(TextBuffer::iterator&amp; pos, const Glib::ustring&amp; text, int bytes)\n"
 
-#: C/gtkmm-tutorial-in.xml:8404(title)
-msgid "Working with gtkmm's Source Code"
-msgstr "Trabajar con el código fuente de gtkmm"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8250
+msgid "Disconnecting signal handlers"
+msgstr "Desconectar gestores de señales"
 
-#: C/gtkmm-tutorial-in.xml:8405(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8252
 msgid ""
-"If you are interested in helping out with the development of "
-"<application>gtkmm</application>, or fixing a bug in <application>gtkmm</"
-"application>, you'll probably need to build the development version of "
-"<application>gtkmm</application>. However, you should not install a "
-"development version over your stable version. Instead, you should install it "
-"alongside your existing <application>gtkmm</application> installation, in a "
-"separate path."
-msgstr ""
-"Si está interesado o interesada en ayudar con el desarrollo de "
-"<application>gtkmm</application>, o arreglar un error en <application>gtkmm</"
-"application>, probablemente necesite construir la versión de desarrollo de "
-"<application>gtkmm</application>. Sin embargo, no debe instalar una versión "
-"de desarrollo sobre su versión estable. En su lugar, debe instalarla junto a "
-"su instalación de <application>gtkmm</application> existente, en una ruta "
-"separada."
+"Let's take another look at a Signal's <literal>connect</literal> method:"
+msgstr "Eche otro vistazo al método <literal>connect</literal> de la señal:"
 
-#: C/gtkmm-tutorial-in.xml:8412(para)
-#, fuzzy
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8256
+#, no-wrap
 #| msgid ""
-#| "The easiest way to do this is using <ulink url=\"http://developer.gnome.";
-#| "org/jhbuild/unstable/\">jhbuild</ulink>. <application>jhbuild</"
-#| "application> is a program that makes building GNOME software much easier "
-#| "by calculating dependencies and building things in the correct order. "
-#| "This section will give a brief explanation of how to set up "
-#| "<application>jhbuild</application> to build and install "
-#| "<application>gtkmm</application> from the source repository (git). For up-"
-#| "to-date information on <application>jhbuild</application>, please refer "
-#| "to the <ulink url=\"http://developer.gnome.org/jhbuild/unstable/";
-#| "\">jhbuild manual</ulink>. If you need assistance using "
-#| "<application>jhbuild</application>, you should ask for help on the <ulink "
-#| "url=\"http://mail.gnome.org/mailman/listinfo/gnome-love\";>gnome-love "
-#| "mailing list</ulink>."
+#| "\n"
+#| "sigc::signal&lt;void,int&gt;::iterator signal&lt;void,int&gt;::connect( const 
sigc::slot&lt;void,int&gt;&amp; );\n"
 msgid ""
-"The easiest way to do this is using <ulink url=\"https://wiki.gnome.org/";
-"Projects/Jhbuild\">jhbuild</ulink>. <application>jhbuild</application> is a "
-"program that makes building GNOME software much easier by calculating "
-"dependencies and building things in the correct order. This section will "
-"give a brief explanation of how to set up <application>jhbuild</application> "
-"to build and install <application>gtkmm</application> from the source "
-"repository (git). For up-to-date information on <application>jhbuild</"
-"application>, please refer to the <ulink url=\"http://developer.gnome.org/";
-"jhbuild/unstable/\">jhbuild manual</ulink>. If you need assistance using "
-"<application>jhbuild</application>, you should ask for help on the <ulink "
-"url=\"http://mail.gnome.org/mailman/listinfo/gnome-love\";>gnome-love mailing "
-"list</ulink>."
+"\n"
+"sigc::connection signal&lt;void(int)&gt;::connect(const sigc::slot&lt;void(int)&gt;&amp;);\n"
 msgstr ""
-"La manera más fácil de hacerlo es usar <ulink url=\"http://developer.gnome.";
-"org/jhbuild/unstable/\">jhbuild</ulink>. <application>jhbuild</application> "
-"es un programa que hace la construcción de software de GNOME mucho más fácil "
-"mediante el cálculo de dependencias y la construcción de los elementos en el "
-"orden correcto. Esta sección le dará una breve explicación sobre cómo "
-"configurar <application>jhbuild</application> para construir e instalar "
-"<application>gtkmm</application> desde el repositorio de código fuente "
-"(git). Para obtener información actualizada sobre <application>jhbuild</"
-"application>, por favor consulte el <ulink url=\"http://developer.gnome.org/";
-"jhbuild/unstable/\">manual de jhbuild</ulink>. Si necesita asistencia usando "
-"<application>jhbuild</application>, pida ayuda en la <ulink url=\"http://";
-"mail.gnome.org/mailman/listinfo/gnome-love\">lista de correo-e gnome-love</"
-"ulink>."
+"\n"
+"sigc::connection signal&lt;void(int)&gt;::connect(const sigc::slot&lt;void(int)&gt;&amp;);\n"
 
-#: C/gtkmm-tutorial-in.xml:8428(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8260
 #, fuzzy
 #| msgid ""
-#| "Note that to build <application>gtkmm</application> from git, you'll "
-#| "often need to build all of its dependencies from git as well. "
-#| "<application>jhbuild</application> makes this easier than it would "
-#| "normally be, but it will take quite a while to build and install them "
-#| "all. You will probably encounter build problems, though these will "
-#| "usually be corrected quickly if you report them."
+#| "Notice that the return value is of type <classname>sigc::signal&lt;void,"
+#| "int&gt;::iterator</classname>. This can be implicitely converted into a "
+#| "<classname>sigc::connection</classname> which in turn can be used to "
+#| "control the connection. By keeping a connection object you can disconnect "
+#| "its associated signal handler using the method <methodname>sigc::"
+#| "connection::disconnect()</methodname>."
 msgid ""
-"Note that to build <application>gtkmm</application> from git, you'll often "
-"need to build many of its dependencies from git as well. "
-"<application>jhbuild</application> makes this easier than it would normally "
-"be, but it will take quite a while to build and install them all. You will "
-"probably encounter build problems, though these will usually be corrected "
-"quickly if you report them."
+"The returned <classname>sigc::connection</classname> can be used to control "
+"the connection. By keeping a connection object you can disconnect its "
+"associated signal handler using the <methodname>sigc::connection::"
+"disconnect()</methodname> method."
 msgstr ""
-"Tenga en cuenta que para construir <application>gtkmm</application> desde "
-"git, a menudo también necesitará construir todas sus dependencias también "
-"desde git. <application>jhbuild</application> hace esto más fácil de lo que "
-"normalmente sería, pero tomará un buen rato hasta que construya e instale "
-"todo. Probablemente encontrará problemas en la construcción, aunque "
-"normalmente se corregirán rápidamente si los reporta."
+"Tenga en cuenta que el valor de retorno es del tipo <classname>sigc::"
+"signal&lt;void,int&gt;::iterator</classname>. Este se puede convertir "
+"implícitamente a una <classname>sigc::connection</classname> que a su vez "
+"puede usarse para controlar la conexión. Manteniendo un objeto de conexión "
+"puede desconectar su gestor de señales asociado usando el método "
+"<methodname>sigc::connection::disconnect()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:8437(title)
-msgid "Setting up jhbuild"
-msgstr "Configurar JHBuild"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8268
+msgid "Overriding default signal handlers"
+msgstr "Reemplazar gestores de señales predeterminados"
 
-#: C/gtkmm-tutorial-in.xml:8438(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8270
 msgid ""
-"To set up <application>jhbuild</application>, follow the basic installation "
-"instructions from the <ulink url=\"http://developer.gnome.org/jhbuild/";
-"unstable/\">jhbuild manual</ulink>. After you have installed "
-"<application>jhbuild</application>, you should copy the sample "
-"<application>jhbuild</application> configuration file into your home "
-"directory by executing the following command from the <application>jhbuild</"
-"application> directory: <screen>$ cp examples/sample.jhbuildrc ~/.jhbuildrc</"
-"screen>"
+"So far we've told you to perform actions in response to button-presses and "
+"the like by handling signals. That's certainly a good way to do things, but "
+"it's not the only way."
 msgstr ""
-"Para configurar <application>jhbuild</application>, siga las instrucciones "
-"básicas de instalación del <ulink url=\"http://developer.gnome.org/jhbuild/";
-"unstable/\">manual de jhbuild</ulink>. Después de que lo haya instalado, "
-"deberá copiar la configuración de ejemplo de <application>jhbuild</"
-"application> a su carpeta personal ejecutando el siguiente comando desde la "
-"carpeta de <application>jhbuild</application>: <screen>$ cp examples/sample."
-"jhbuildrc ~/.jhbuildrc</screen>"
-
-#: C/gtkmm-tutorial-in.xml:8453(programlisting)
-#, no-wrap
-msgid "moduleset = 'gnome-suites-core-deps-3.12'"
-msgstr "moduleset = 'gnome-suites-core-deps-3.12'"
+"Hasta ahora se la ha enseñado a realizar acciones en respuesta a pulsaciones "
+"de botones o eventos similares manejando señales. Esa es seguramente una "
+"buena manera de hacer las cosas, pero no es la única."
 
-#: C/gtkmm-tutorial-in.xml:8448(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8277
 msgid ""
-"The <application>gtkmm</application> module is defined in the "
-"<filename>gnome-suites-core-deps-3.x.modules</filename> moduleset, so edit "
-"your <filename>.jhbuildrc</filename> file and set your moduleset setting to "
-"the latest version e.g. like so: <placeholder-1/>"
+"Instead of laboriously connecting signal handlers to signals, you can simply "
+"make a new class which inherits from a widget - say, a Button - and then "
+"override the default signal handler, such as Button::on_clicked(). This can "
+"be a lot simpler than hooking up signal handlers for everything."
 msgstr ""
-"El módulo de <application>gtkmm</application> se define en el conjunto de "
-"módulos <filename>gnome-suites-core-deps-3.x.modules</filename>, así que "
-"edite su archivo <filename>.jhbuildrc</filename> y establezca la "
-"configuración de su conjunto de módulos a la última versión, por ejemplo, "
-"así: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:8460(programlisting)
-#, no-wrap
-msgid "modules = [ 'gtkmm' ]"
-msgstr "modules = [ 'gtkmm' ]"
+"En lugar de conectar gestores de señales a señales laboriosamente, puede "
+"simplemente hacer una clase nueva que herede de un widget (por ejemplo, un "
+"botón) y luego reemplazar el gestor de señales predeterminado, como Button::"
+"on_clicked(). Esto puede ser mucho más simple que enganchar gestores de "
+"señales para todo."
 
-#: C/gtkmm-tutorial-in.xml:8455(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8284
 msgid ""
-"After setting the correct moduleset, you need to tell <application>jhbuild</"
-"application> which module or modules to build. To build <application>gtkmm</"
-"application> and all of its dependencies, set <varname>modules</varname> "
-"like so: <placeholder-1/>"
+"Subclassing isn't always the best way to accomplish things. It is only "
+"useful when you want the widget to handle its own signal by itself. If you "
+"want some other class to handle the signal then you'll need to connect a "
+"separate handler. This is even more true if you want several objects to "
+"handle the same signal, or if you want one signal handler to respond to the "
+"same signal from different objects."
 msgstr ""
-"Después de haber configurado el conjunto de módulos correcto, necesitará "
-"decirle a <application>jhbuild</application> qué módulo o módulos construir. "
-"Para construir a <application>gtkmm</application> y a todas sus "
-"dependencias, asigne <varname>modules</varname> así: <placeholder-1/>"
+"La herencia no es siempre la mejor manera de realizar cosas. Sólo es útil "
+"cuando quiere que el widget maneje su propia señal por sí mismo. Si quiere "
+"que alguna otra clase maneje la señal entonces necesitará conectar un gestor "
+"separado. Esto es aún más cierto si quiere que varios objetos manejen la "
+"misma señal, o si quiere que un gestor de señales responda a la misma señal "
+"desde diferentes objetos."
 
-#: C/gtkmm-tutorial-in.xml:8462(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8289
 msgid ""
-"You can build several modules by setting the <varname>modules</varname> "
-"variable to a meta-package, e.g. <literal>meta-gnome-core</literal>, or "
-"listing more than one module name. The <varname>modules</varname> variable "
-"specifies which modules will be built when you don't explicitly specify "
-"anything on the command line. You can always build a different moduleset "
-"later by specifying it on the commandline (e.g. <command>jhbuild build "
-"gtkmm</command>)."
+"<application>gtkmm</application> classes are designed with overriding in "
+"mind; they contain virtual member methods specifically intended to be "
+"overridden."
 msgstr ""
-"Puede construir varios módulos estableciendo la variable <varname>modules</"
-"varname> a un metapaquete, como por ejemplo <literal>meta-gnome-core</"
-"literal>, o listando más de un nombre de módulo. La variable "
-"<varname>modules</varname> especifica qué módulos se construirán cuando no "
-"especifique explícitamente nada en la línea de comandos. Puede construir un "
-"conjunto de módulos diferente más tarde especificándolo en la línea de "
-"comandos (por ejemplo, <command>jhbuild build gtkmm</command>)."
+"Las clases de <application>gtkmm</application> se diseñaron con los "
+"reemplazos en mente; contienen métodos miembro virtuales específicamente "
+"pensados para reemplazarse."
 
-#: C/gtkmm-tutorial-in.xml:8472(title)
-msgid "Setting a prefix"
-msgstr "Establecer un prefijo"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8294
+msgid "Let's look at an example of overriding:"
+msgstr "Eche un vistazo a un ejemplo de reemplazo:"
 
-#: C/gtkmm-tutorial-in.xml:8473(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8298
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "#include &lt;gtkmm/button.h&gt;\n"
+#| "\n"
+#| "class OverriddenButton : public Gtk::Button\n"
+#| "{\n"
+#| "protected:\n"
+#| "    virtual void on_clicked();\n"
+#| "}\n"
+#| "\n"
+#| "void OverriddenButton::on_clicked()\n"
+#| "{\n"
+#| "    std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
+#| "\n"
+#| "    // call the base class's version of the method:\n"
+#| "    Gtk::Button::on_clicked();\n"
+#| "}\n"
 msgid ""
-"By default, <application>jhbuild</application>'s configuration is configured "
-"to install all software built with <application>jhbuild</application> under "
-"the <filename>/opt/gnome</filename> prefix. You can choose a different "
-"prefix, but it is recommended that you keep this prefix different from other "
-"software that you've installed (don't set it to <filename>/usr</filename>!) "
-"If you've followed the jhbuild instructions then this prefix belongs to your "
-"user, so you don't need to run jhbuild as <literal>root</literal>."
+"\n"
+"#include &lt;gtkmm/button.h&gt;\n"
+"\n"
+"class OverriddenButton : public Gtk::Button\n"
+"{\n"
+"protected:\n"
+"  void on_clicked() override;\n"
+"}\n"
+"\n"
+"void OverriddenButton::on_clicked()\n"
+"{\n"
+"  std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
+"\n"
+"  // call the base class's version of the method:\n"
+"  Gtk::Button::on_clicked();\n"
+"}\n"
 msgstr ""
-"De manera predeterminada, <application>jhbuild</application> está "
-"configurado para instalar todo el software construido con "
-"<application>jhbuild</application> bajo el prefijo <filename>/opt/gnome</"
-"filename>. Puede elegir un prefijo diferente, pero se recomienda que lo "
-"mantenga diferente de otro software que haya instalado (no lo establezca a "
-"<filename>/usr</filename>). Si ha seguido las instrucciones de jhbuild, "
-"entonces este prefijo le corresponde a su usuario, por lo que no necesitará "
-"ejecutar jhbuild como <literal>root</literal>."
+"\n"
+"#include &lt;gtkmm/button.h&gt;\n"
+"\n"
+"class OverriddenButton : public Gtk::Button\n"
+"{\n"
+"protected:\n"
+"  void on_clicked() override;\n"
+"}\n"
+"\n"
+"void OverriddenButton::on_clicked()\n"
+"{\n"
+"  std::cout &lt;&lt; \"Hello World\" &lt;&lt; std::endl;\n"
+"\n"
+"  // call the base class's version of the method:\n"
+"  Gtk::Button::on_clicked();\n"
+"}\n"
 
-#: C/gtkmm-tutorial-in.xml:8485(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8316
 msgid ""
-"When you downloaded <application>jhbuild</application> from the git "
-"repository, you got a number of <filename>.modules</filename> files, "
-"specifying dependencies between modules. By default <application>jhbuild</"
-"application> does not use the downloaded versions of these files, but reads "
-"the latest versions in the git repository. This is usually what you want. If "
-"you don't want it, use the <varname>use_local_modulesets</varname> variable "
-"in <filename>.jhbuildrc</filename>."
+"Here we define a new class called <classname>OverriddenButton</classname>, "
+"which inherits from <classname>Gtk::Button</classname>. The only thing we "
+"change is the <methodname>on_clicked()</methodname> method, which is called "
+"whenever <classname>Gtk::Button</classname> emits the <literal>clicked</"
+"literal> signal. This method prints \"Hello World\" to <literal>stdout</"
+"literal>, and then calls the original, overridden method, to let "
+"<classname>Gtk::Button</classname> do what it would have done had we not "
+"overridden."
 msgstr ""
-"Cuando descarga <application>jhbuild</application> desde el repositorio git, "
-"obtiene varios archivos <filename>.module</filename>, especificando las "
-"dependencias entre módulos. De manera predeterminada, <application>jhbuild</"
-"application> no usa las versiones descargadas de estos archivos, sino que "
-"lee las últimas en el repositorio git. Esto generalmente es lo que quiere. "
-"Si no es así, use la variable <varname>use_local_modulesets</varname> en "
-"<filename>.jhbuildrc</filename>."
+"Aquí se define una clase nueva llamada <classname>OverridenButton</"
+"classname>, que hereda de <classname>Gtk::Button</classname>. Lo único que "
+"se cambia es el método <methodname>on_clicked()</methodname>, que se llama "
+"siempre que <classname>Gtk::Button</classname> emite la señal "
+"<literal>clicked</literal>. Este método imprime «Hello World» a "
+"<literal>stdout</literal> y después llama al método original, reemplazado, "
+"para dejarle a <classname>Gtk::Button</classname> hacer lo que hubiera hecho "
+"si no se hubiera reemplazado."
 
-#: C/gtkmm-tutorial-in.xml:8496(title)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8327
+#, fuzzy
+#| msgid ""
+#| "You don't always need to call the parent's method; there are times when "
+#| "you might not want to. Note that we called the parent method "
+#| "<emphasis>after</emphasis> writing \"Hello World\", but we could have "
+#| "called it before. In this simple example, it hardly matters much, but "
+#| "there are times when it will. With signals, it's not quite so easy to "
+#| "change details like this, and you can do something here which you can't "
+#| "do at all with connected signal handlers: you can call the parent method "
+#| "in the <emphasis>middle</emphasis> of your custom code."
 msgid ""
-"Installing and Using the git version of <application>gtkmm</application>"
+"You don't always need to call the parent's method; there are times when you "
+"might not want to. Note that we called the parent method <emphasis>after</"
+"emphasis> writing \"Hello World\", but we could have called it before. In "
+"this simple example, it hardly matters much, but there are times when it "
+"will. With connected signal handlers, it's not quite so easy to change "
+"details like this, and you can do something here which you can't do at all "
+"with connected signal handlers: you can call the parent method in the "
+"<emphasis>middle</emphasis> of your custom code."
 msgstr ""
-"Instalar y utilizar la versión de git de <application>gtkmm</application>"
+"No necesita llamar siempre al método del padre; hay veces en las que no "
+"querrá hacerlo. Tenga en cuenta que se ha llamado al método padre "
+"<emphasis>después</emphasis> de escribir «Hello World», pero se podría haber "
+"llamado antes. En este ejemplo simple, no importa mucho, pero hay veces en "
+"las que lo hará. Con señales, no es tan fácil cambiar detalles como este, y "
+"puede hacer algo aquí que no puede con gestores de señales conectados: puede "
+"llamar al método padre en la <emphasis>mitad</emphasis> de su código "
+"personalizado."
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8341
+msgid "Binding extra arguments"
+msgstr "Enlazar argumentos adicionales"
 
-#: C/gtkmm-tutorial-in.xml:8497(para)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:8348
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "m_button1.signal_clicked().connect( sigc::bind&lt;Glib::ustring&gt;( sigc::mem_fun(*this, 
&amp;HelloWorld::on_button_clicked), \"button 1\") );\n"
 msgid ""
-"Once you've configured <application>jhbuild</application> as described "
-"above, building <application>gtkmm</application> should be relatively "
-"straightforward. The first time you run <application>jhbuild</application>, "
-"you should run the following sequence of commands to ensure that "
-"<application>jhbuild</application> has the required tools and verify that it "
-"is set up correctly: <screen>$ jhbuild bootstrap\n"
-"$ jhbuild sanitycheck</screen>"
+"\n"
+"m_button1.signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &amp;HelloWorld::on_button_clicked), 
\"button 1\"));\n"
 msgstr ""
-"Una vez que ha configurado <application>jhbuild</application> como se "
-"describió anteriormente, construir <application>gtkmm</application> debería "
-"ser relativamente directo. La primera vez que ejecute <application>jhbuild</"
-"application>, debe ejecutar la siguiente secuencia de comandos para "
-"asegurase que <application>jhbuild</application> tiene las herramientas "
-"adecuadas y verificar que está configurado correctamente: <screen>$ jhbuild "
-"bootstrap\n"
-"$ jhbuild sanitycheck</screen>"
+"\n"
+"m_button1.signal_clicked().connect(sigc::bind(sigc::mem_fun(*this, &amp;HelloWorld::on_button_clicked), 
\"button 1\"));\n"
 
-#: C/gtkmm-tutorial-in.xml:8508(title)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:8355
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "virtual void on_button_clicked(Glib::ustring data);\n"
 msgid ""
-"Installing <application>gtkmm</application> with <application>jhbuild</"
-"application>"
+"\n"
+"void on_button_clicked(const Glib::ustring&amp; data);\n"
 msgstr ""
-"Instalar <application>gtkmm</application> con <application>jhbuild</"
-"application>"
+"\n"
+"void on_button_clicked(const Glib::ustring&amp; data);\n"
 
-#: C/gtkmm-tutorial-in.xml:8509(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8342
+#, fuzzy
+#| msgid ""
+#| "If you use one signal handler to catch the same signal from several "
+#| "widgets, you might like that signal handler to receive some extra "
+#| "information. For instance, you might want to know which button was "
+#| "clicked. You can do this with <function>sigc::bind()</function>. Here's "
+#| "some code from the <link linkend=\"sec-helloworld2\">helloworld2</link> "
+#| "example, which you will encounter later. <placeholder-1/> This says that "
+#| "we want the signal to send an extra <classname>Glib::ustring</classname> "
+#| "argument to the signal handler, and that the value of that argument "
+#| "should be \"button 1\". Of course we will need to add that extra argument "
+#| "to the declaration of our signal handler: <placeholder-2/> Of course, a "
+#| "normal \"clicked\" signal handler would have no arguments."
 msgid ""
-"If everything worked correctly, you should be able to build "
-"<application>gtkmm</application> and all of its dependencies from git by "
-"executing <command>jhbuild build</command> (or, if you didn't specify "
-"<application>gtkmm</application> in the <varname>modules</varname> variable, "
-"with the command <command>jhbuild build gtkmm</command>)."
+"If you use one signal handler to catch the same signal from several widgets, "
+"you might like that signal handler to receive some extra information. For "
+"instance, you might want to know which button was clicked. You can do this "
+"with <function>sigc::bind()</function>. Here's some code from the <link "
+"linkend=\"sec-helloworld2\">helloworld2</link> example. <_:programlisting-1/"
+"> This says that we want the signal to send an extra <classname>Glib::"
+"ustring</classname> argument to the signal handler, and that the value of "
+"that argument should be \"button 1\". Of course we will need to add that "
+"extra argument to the declaration of our signal handler: <_:programlisting-2/"
+"> Of course, a normal \"clicked\" signal handler would have no arguments."
 msgstr ""
-"Si todo funcionó correctamente, podrá construir <application>gtkmm</"
-"application> y a todas sus dependencias desde git ejecutando "
-"<command>jhbuild build</command> (o, si no especificó <application>gtkmm</"
-"application> en la variable <varname>modules</varname>, con el comando "
-"<command>jhbuild build gtkmm</command>)."
+"Si usa un gestor de señales para atrapar la misma señal desde varios "
+"widgets, tal vez quiera que el gestor de señales reciba información "
+"adicional. Por ejemplo, puede querer saber qué botón se pulsó. Puede hacer "
+"esto con <function>sigc::bind()</function>. Aquí hay un código del ejemplo "
+"<link linkend=\"sec-helloworld2\">helloworld2</link>, que encontrará "
+"después. <placeholder-1/> Suponga que quiere que la señal envíe un argumento "
+"<classname>Glib::ustring</classname> adicional al gestor de señales, y que "
+"el valor de ese argumento sea «button 1». Por supuesto, se necesitará añadir "
+"ese argumento adicional a la declaración del gestor de señales: "
+"<placeholder-2/> Naturalmente, un gestor de señal «clicked» normal no "
+"tendría argumentos."
 
-#: C/gtkmm-tutorial-in.xml:8516(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8360
+#, fuzzy
+#| msgid ""
+#| "<function>sigc::bind()</function> is not commonly used, but you might "
+#| "find it helpful sometimes. If you are familiar with <application>GTK+</"
+#| "application> programming then you have probably noticed that this is "
+#| "similar to the extra <literal>gpointer data</literal> arguments which all "
+#| "GTK+ callbacks have. This is generally overused in <application>GTK+</"
+#| "application> to pass information that should be stored as member data in "
+#| "a derived widget, but widget derivation is very difficult in C. We have "
+#| "far less need of this hack in <application>gtkmm</application>."
 msgid ""
-"This command will build and install a series of modules and will probably "
-"take quite a long time the first time through. After the first time, "
-"however, it should go quite a bit faster since it only needs to rebuild "
-"files that changed since the last build. Alternatively, after you've built "
-"and installed <application>gtkmm</application> the first time, you can "
-"rebuild <application>gtkmm</application> by itself (without rebuilding all "
-"of its dependencies) with the command <command>jhbuild buildone gtkmm</"
-"command>."
+"<function>sigc::bind()</function> is not commonly used, but you might find "
+"it helpful sometimes. If you are familiar with <application>GTK</"
+"application> programming then you have probably noticed that this is similar "
+"to the extra <literal>gpointer data</literal> arguments which all GTK "
+"callbacks have. This is generally overused in <application>GTK</application> "
+"to pass information that should be stored as member data in a derived "
+"widget, but widget derivation is very difficult in C. We have far less need "
+"of this hack in <application>gtkmm</application>."
 msgstr ""
-"Este comando construirá e instalará una serie de módulos y probablemente "
-"tarde mucho tiempo la primera vez. Después de la primera vez, sin embargo, "
-"debería ir mucho más rápido dado que sólo tendrá que reconstruir los "
-"archivos que han cambiado desde la última vez. Alternativamente, después de "
-"haber construido e instalado <application>gtkmm</application> por primera "
-"vez, lo podrá reconstruir por sí mismo (sin reconstruir todas sus "
-"dependencias) con el comando <command>jhbuild buildone gtkmm</command>."
+"<function>sigc::bind()</function> no se usa comúnmente, pero a veces la "
+"encontrará útil. Si está familiarizado con programación en <application>GTK"
+"+</application>, entonces probablemente ya haya notado que esto es similar a "
+"los argumentos <literal>gpointer data</literal> adicionales que todos los "
+"retornos de llamada de GTK+ tienen. Generalmente se abusa de esto en "
+"<application>GTK+</application> para pasar información que debe almacenarse "
+"como datos miembros en un widget derivado, pero la derivación de widgets es "
+"muy difícil en C. Hay mucha menos necesidad de este «hack» en "
+"<application>gtkmm</application>."
 
-#: C/gtkmm-tutorial-in.xml:8527(title)
-msgid "Using the git version of <application>gtkmm</application>"
-msgstr "Usar la versión de git de <application>gtkmm</application>"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8372
+msgid "X Event signals"
+msgstr "Señales de eventos de X"
 
-#: C/gtkmm-tutorial-in.xml:8528(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8373
 msgid ""
-"After you've installed the git version of <application>gtkmm</application>, "
-"you're ready to start using and experimenting with it. In order to use the "
-"new version of <application>gtkmm</application> you've just installed, you "
-"need to set some environment variables so that your <filename>configure</"
-"filename> script knows where to find the new libraries. Fortunately, "
-"<application>jhbuild</application> offers an easy solution to this problem. "
-"Executing the command <command>jhbuild shell</command> will start a new "
-"shell with all of the correct environment variables set. Now if you re-"
-"configure and build your project just as you usually do, it should link "
-"against the newly installed libraries. To return to your previous "
-"environment, simply exit the <application>jhbuild</application> shell."
+"The <classname>Widget</classname> class has some special signals which "
+"correspond to the underlying X-Windows events. These are suffixed by "
+"<literal>_event</literal>; for instance, <methodname>Widget::"
+"signal_button_press_event()</methodname>."
 msgstr ""
-"Después de que haya instalado la versión de git de <application>gtkmm</"
-"application>, ya estará listo para comenzar a usarlo y a experimentar con "
-"él. Para usar la versión nueva de <application>gtkmm</application> que ha "
-"acabado de instalar, necesitará establecer algunas variables de entorno para "
-"que su script <filename>configure</filename> sepa dónde encontrar las "
-"bibliotecas nuevas. Afortunadamente, <application>jhbuild</application> "
-"ofrece una solución fácil a este problema. Ejecutar el comando "
-"<command>jhbuild shell</command> arrancará un intérprete nuevo con todas las "
-"variables de entorno correctas establecidas. Ahora, si reconfigura y "
-"construye su proyecto como hace siempre, debería enlazarse con las "
-"bibliotecas recientemente instaladas. Para volver a su entorno previo, "
-"simplemente salga del intérprete de <application>jhbuild</application>."
+"La clase <classname>Widget</classname> tiene algunas señales especiales que "
+"corresponden a los eventos de X-Window subyacentes. Estas tienen el sufijo "
+"<literal>_event</literal>; por ejemplo, <methodname>Widget::"
+"signal_button_press_event()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:8542(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8379
+#, fuzzy
+#| msgid ""
+#| "You might occasionally find it useful to handle X events when there's "
+#| "something you can't accomplish with normal signals. <classname>Gtk::"
+#| "Button</classname>, for example, does not send mouse-pointer coordinates "
+#| "with its <literal>clicked</literal> signal, but you could handle "
+#| "<literal>button_pressed_event</literal> if you needed this information. X "
+#| "events are also often used to handle key-presses."
 msgid ""
-"Once you've built your software, you'll need to run your program within the "
-"jhbuild environment as well. To do this, you can again use the "
-"<command>jhbuild shell</command> command to start a new shell with the "
-"<application>jhbuild</application> environment set up. Alternatively, you "
-"can execute a one-off command in the <application>jhbuild</application> "
-"environment using the following command: <command>jhbuild run command-name</"
-"command>. In this case, the command will be run with the correct environment "
-"variables set, but will return to your previous environment after the "
-"program exits."
+"You might occasionally find it useful to handle X events when there's "
+"something you can't accomplish with normal signals. <classname>Gtk::Button</"
+"classname>, for example, does not send mouse-pointer coordinates with its "
+"<literal>clicked</literal> signal, but you could handle "
+"<literal>button_press_event</literal> if you needed this information. X "
+"events are also often used to handle key-presses."
 msgstr ""
-"Una vez que haya construido su software, también necesitará ejecutar su "
-"programa dentro del entorno de jhbuild. Para hacerlo, puede usar de nuevo el "
-"comando <command>jhbuild shell</command> para arrancar un intérprete nuevo "
-"con el entorno de <application>jhbuild</application> configurado. "
-"Alternativamente, puede ejecutar un solo comando en el entorno de "
-"<application>jhbuild</application> usando el siguiente comando: "
-"<command>jhbuild run nombre-de-comando</command>. En este caso, el comando "
-"se ejecutará con las variables de entorno correctas establecidas, pero "
-"retornará a su entorno previo después de que el programa salga."
+"Tal vez encuentre útil manejar los eventos de X cuando haya algo que no "
+"pueda resolver con señales normales. <classname>Gtk::Button</classname>, por "
+"ejemplo, no envía coordenadas del puntero del ratón con su señal "
+"<literal>clicked</literal>, pero puede manejar "
+"<literal>button_pressed_event</literal> si necesita esta información. Los "
+"eventos de X también se usan a menudo para manejar pulsaciones de teclas."
 
-#: C/gtkmm-tutorial-in.xml:8559(title)
-msgid "Wrapping C Libraries with gmmproc"
-msgstr "Envolver bibliotecas C con gmmproc"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8388
+msgid ""
+"These signals behave slightly differently. The value returned from the "
+"signal handler indicates whether it has fully \"handled\" the event. If the "
+"value is <literal>false</literal> then <application>gtkmm</application> will "
+"pass the event on to the next signal handler. If the value is <literal>true</"
+"literal> then no other signal handlers will need to be called."
+msgstr ""
+"Estas señales se comportan levemente diferentes. El valor que devuelve el "
+"gestor de señales indica si ha «manejado» completamente el evento. Si el "
+"valor es <literal>false</literal>, entonces <application>gtkmm</application> "
+"pasará el evento al próximo gestor de señales. Si el valor es <literal>true</"
+"literal>, entonces no se necesitará llamar a ningún otro gestor de señales."
 
-#: C/gtkmm-tutorial-in.xml:8560(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8393
+#, fuzzy
+#| msgid ""
+#| "Handling an X event doesn't affect the Widget's other signals. If you "
+#| "handle <literal>button_pressed_event</literal> for <classname>Gtk::"
+#| "Button</classname>, you'll still be able to get the <literal>clicked</"
+#| "literal> signal. They are emitted at (nearly) the same time."
 msgid ""
-"<application>gtkmm</application> uses the <command>gmmproc</command> tool to "
-"generate most of its source code, using .defs files that define the APIs of "
-"<classname>GObject</classname>-based libraries. So it's quite easy to create "
-"additional gtkmm-style wrappers of other glib/GObject-based libraries."
+"Handling an X event doesn't affect the Widget's other signals. If you handle "
+"<literal>button_press_event</literal> for <classname>Gtk::Button</"
+"classname>, you'll still be able to get the <literal>clicked</literal> "
+"signal. They are emitted at (nearly) the same time."
 msgstr ""
-"<application>gtkmm</application> usa la herramienta <command>gmmproc</"
-"command> para generar la mayor parte de su código fuente, usando archivos ."
-"defs que definen las API de las bibliotecas basadas en <classname>GObject</"
-"classname>. Es por esto que es bastante fácil crear envoltorios con el "
-"estilo de gtkmm adicionales de otras bibliotecas basadas en glib/GObject."
+"Manejar un evento de X no afecta a las otras señales del widget. Si maneja "
+"<literal>button_pressed_event</literal> para <classname>Gtk::Button</"
+"classname>, igualmente podrá obtener la señal <literal>clicked</literal>. Se "
+"emiten (casi) al mismo tiempo."
 
-#: C/gtkmm-tutorial-in.xml:8565(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8402
+#, no-wrap
 msgid ""
-"This involves a variety of tools, some of them crufty, but at least they "
-"work, and has been used successfully by several projects."
+"\n"
+"bool on_button_press(GdkEventButton* event);\n"
+"Gtk::Button button(\"label\");\n"
+"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_button_press) );\n"
 msgstr ""
-"Esto involucra una variedad de herramientas, algunas de ellas obsoletas, "
-"pero que al menos funcionan, y que varios proyectos han usado exitosamente."
+"\n"
+"bool on_button_press(GdkEventButton* event);\n"
+"Gtk::Button button(\"label\");\n"
+"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_button_press) );\n"
 
-#: C/gtkmm-tutorial-in.xml:8570(title)
-msgid "The build structure"
-msgstr "La estructura de construcción"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8407
+msgid ""
+"When the mouse is over the button and a mouse button is pressed, "
+"<methodname>on_button_press()</methodname> will be called."
+msgstr ""
+"Cuando el ratón esté sobre el botón y el botón del ratón se presione, se "
+"llamará a <methodname>on_button_press()</methodname>."
 
-#: C/gtkmm-tutorial-in.xml:8571(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8412
 msgid ""
-"Generation of the source code for a gtkmm-style wrapper API requires use of "
-"tools such as <command>gmmproc</command> and <filename>generate_wrap_init."
-"pl</filename>. In theory you could write your own build files to use these "
-"appropriately, but a much better option is to make use of the build "
-"infrastructure provided by the mm-common module. To get started, it helps a "
-"lot to pick an existing binding module as an example to look at."
+"<type>GdkEventButton</type> is a structure containing the event's "
+"parameters, such as the coordinates of the mouse pointer at the time the "
+"button was pressed. There are several different types of <type>GdkEvent</"
+"type> structures for the various events."
 msgstr ""
-"La generación del código fuente para una API envoltorio del estilo de gtkmm "
-"requiere el uso de herramientas como <command>gmmproc</command> y "
-"<filename>generate_wrap_init.pl</filename>. En teoría, podría escribir sus "
-"propios archivos de construcción para usarlas apropiadamente, pero una "
-"opción mucho mejor es hacer uso de la infraestructura de construcción "
-"proporcionada por el módulo mm-common. Para empezar, ayuda mucho escoger un "
-"módulo de enlace existente como un ejemplo para consultar."
+"<type>GdkEventButton</type> es una estructura que contiene los parámetros "
+"del evento, como las coordenadas del puntero del ratón en el momento en el "
+"que se presionó el botón. Hay varios tipos diferentes de estructuras "
+"<type>GdkEvent</type> para la variedad de eventos."
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:8420
+msgid "Signal Handler sequence"
+msgstr "Secuencia de los gestores de señales"
 
-#: C/gtkmm-tutorial-in.xml:8578(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8421
 #, fuzzy
 #| msgid ""
-#| "For instance, let's pretend that we are wrapping a C library called "
-#| "libexample. It provides a <classname>GObject</classname>-based API with "
-#| "types named, for instance, <classname>ExampleThing</classname> and "
-#| "<classname>ExampleStuff</classname>."
+#| "By default, your signal handlers are called after any previously-"
+#| "connected signal handlers. However, this can be a problem with the X "
+#| "Event signals. For instance, the existing signal handlers, or the default "
+#| "signal handler, might return <literal>true</literal> to stop other signal "
+#| "handlers from being called. To specify that your signal handler should be "
+#| "called before the other signal handlers, so that it will always be "
+#| "called, you can specify <literal>false</literal> for the optional "
+#| "<literal>after</literal> parameter. For instance, <placeholder-1/>"
 msgid ""
-"For instance, let's pretend that we are wrapping a C library called "
-"libsomething. It provides a <classname>GObject</classname>-based API with "
-"types named, for instance, <classname>SomeWidget</classname> and "
-"<classname>SomeStuff</classname>."
+"By default, your signal handlers are called after any previously-connected "
+"signal handlers. However, this can be a problem with the X Event signals. "
+"For instance, the existing signal handlers, or the default signal handler, "
+"might return <literal>true</literal> to stop other signal handlers from "
+"being called. To specify that your signal handler should be called before "
+"the other signal handlers, so that it will always be called, you can specify "
+"<literal>false</literal> for the optional <literal>after</literal> "
+"parameter. For instance,"
 msgstr ""
-"Por ejemplo, imagine que se quiere envolver una biblioteca de C llamada "
-"libexample. Proporciona una API basada en <classname>GObject</classname> con "
-"tipos nombrados, por ejemplo, <classname>ExampleThing</classname> y "
-"<classname>ExampleStuff</classname>."
-
-#: C/gtkmm-tutorial-in.xml:8584(title)
-msgid "Copying the skeleton project"
-msgstr "Copiar el esqueleto del proyecto"
-
-#: C/gtkmm-tutorial-in.xml:8589(programlisting)
+"De manera predeterminada, sus gestores de señales se llaman después de "
+"cualquier gestor de señales conectado previamente. Sin embargo, esto puede "
+"ser un problema con las señales de eventos de X. Por ejemplo, los gestores "
+"de señales existentes, o el gestor de señales predeterminado, podrían "
+"devolver <literal>true</literal> para que no se llamen a otros gestores. "
+"Para especificar que el suyo debe llamarse antes que los otros, y que de "
+"esta manera siempre se llame, puede asignar <literal>false</literal> al "
+"parámetro opcional <literal>after</literal>. Por ejemplo, <placeholder-1/>"
+
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:8429
 #, no-wrap
 msgid ""
 "\n"
-"  $ git clone git://git.gnome.org/mm-common\n"
-"  $ cp -a mm-common/skeletonmm libsomethingmm\n"
+"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_mywindow_button_press), false );\n"
 msgstr ""
 "\n"
-"  $ git clone git://git.gnome.org/mm-common\n"
-"  $ cp -a mm-common/skeletonmm libsomethingmm\n"
+"button.signal_button_press_event().connect( sigc::ptr_fun(&amp;on_mywindow_button_press), false );\n"
 
-#: C/gtkmm-tutorial-in.xml:8586(para)
-#, fuzzy
-#| msgid ""
-#| "Typically our wrapper library would be called libsomethingmm. We can "
-#| "start by copying the <ulink url=\"http://git.gnome.org/cgit/mm-common/";
-#| "tree/skeletonmm\">skeleton source tree</ulink> from the mm-common module. "
-#| "<placeholder-1/>"
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8432
 msgid ""
-"Typically our wrapper library would be called libsomethingmm. We can start "
-"by copying the <ulink url=\"http://git.gnome.org/browse/mm-common/tree/";
-"skeletonmm\">skeleton source tree</ulink> from the mm-common module. "
-"<placeholder-1/>"
+"The event is delivered first to the widget the event occurred in. If all "
+"signal handlers in that widget return <literal>false</literal> (indicating "
+"that the event has not been handled), then the signal will be propagated to "
+"the parent widget and emitted there. This continues all the way up to the "
+"top-level widget if no one handles the event."
 msgstr ""
-"Típicamente la biblioteca envoltorio se llamaría libsomethingmm. Se puede "
-"empezar copiando el <ulink url=\"http://git.gnome.org/cgit/mm-common/tree/";
-"skeletonmm\">esqueleto del árbol de código fuente</ulink> desde el módulo mm-"
-"common. <placeholder-1/>"
+"El evento se entrega primero al widget en el que ocurrió. Si todos los "
+"gestores de señales de ese widget devuelven <literal>false</literal> "
+"(indicando que el evento no se ha manejado), entonces la señal se propagará "
+"al widget padre y se emitirá allí. Esto continúa hasta el widget de nivel "
+"superior si ninguno maneja el evento."
 
-#: C/gtkmm-tutorial-in.xml:8599(para)
-msgid "<filename>libsomethingmm</filename>: The top-level directory."
-msgstr "<filename>libsomethingmm</filename>: la carpeta de nivel superior."
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8443
+msgid "Exceptions in signal handlers"
+msgstr "Excepciones en gestores de señales"
 
-#: C/gtkmm-tutorial-in.xml:8601(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8444
 msgid ""
-"<filename>libsomething</filename>: Contains the main include file and the "
-"pkg-config .pc file."
+"When a program is aborted because of an unhandled C++ exception, it's "
+"sometimes possible to use a debugger to find the location where the "
+"exception was thrown. This is more difficult than usual if the exception was "
+"thrown from a signal handler."
 msgstr ""
-"<filename>libsomething</filename>: contiene el archivo de cabecera principal "
-"y el archivo .pc de pkg-config."
-
-#: C/gtkmm-tutorial-in.xml:8603(para)
-msgid "<filename>src</filename>: Contains .hg and .ccg source files."
-msgstr "<filename>src</filename>: contiene los archivos de fuentes .hg y .ccg."
+"Cuando se aborta un programa por una excepción de C++ no manejada, a veces "
+"es posible usar un depurador para encontrar el lugar en el que la excepción "
+"se lanzó. Esto es más difícil de lo normal si un gestor de señales lanzó la "
+"excepción."
 
-#: C/gtkmm-tutorial-in.xml:8604(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8449
 msgid ""
-"<filename>libsomethingmm</filename>: Contains generated and hand-written .h "
-"and .cc files."
+"This section describes primarily what you can expect on a Linux system, when "
+"you use <ulink url=\"http://www.gnu.org/software/gdb/\";>the gdb debugger</"
+"ulink>."
 msgstr ""
-"<filename>libsomethingmm</filename>: contiene los archivos .h y .cc "
-"generados y escritos a mano."
+"Esta sección describe principalmente qué puede esperar en un sistema Linux, "
+"cuando usa el <ulink url=\"http://www.gnu.org/software/gdb/\";>depurador gdb</"
+"ulink>."
 
-#: C/gtkmm-tutorial-in.xml:8606(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8453
+#, fuzzy
+#| msgid ""
+#| "First, let's look at a simple example where an exception is thrown from a "
+#| "normal function (no signal handler). <placeholder-1/>"
 msgid ""
-"<filename>private</filename>: Contains generated <filename>*_p.h</filename> "
-"files."
+"First, let's look at a simple example where an exception is thrown from a "
+"normal function (no signal handler)."
 msgstr ""
-"<filename>private</filename>: contiene los archivos <filename>*_p.h</"
-"filename> generados."
+"Primero, mire el ejemplo simple en el que se lanza una excepción desde una "
+"función normal (sin gestor de señales). <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8594(para)
-msgid ""
-"This provides a directory structure for the source .hg and .ccg files and "
-"the generated .h and .cc files, with <filename>filelist.am</filename> "
-"Automake include files that can specify the various files in use, in terms "
-"of generic Automake variables. The directory structure usually looks like "
-"this, after we have renamed the directories appropriately: <placeholder-1/>"
-msgstr ""
-"Esto proporciona una estructura de carpetas para los archivos de fuentes .hg "
-"y .ccg, y los archivos .h y .cc generados; con archivos de cabecera "
-"<filename>filelist.am</filename> de Automake que pueden especificar la "
-"variedad de archivos en uso, en términos de variables de Automake genéricas. "
-"La estructura de carpetas generalmente se ve así, después de haber "
-"renombrado las carpetas apropiadamente: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:8618(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8457
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "// without_signal.cc\n"
+#| "#include &lt;gtkmm.h&gt;\n"
+#| "\n"
+#| "bool throwSomething()\n"
+#| "{\n"
+#| "  throw \"Something\";\n"
+#| "  return true;\n"
+#| "}\n"
+#| "\n"
+#| "int main(int argc, char** argv)\n"
+#| "{\n"
+#| "  throwSomething();\n"
+#| "  Glib::RefPtr&lt;Gtk::Application&gt; app =\n"
+#| "    Gtk::Application::create(argc, argv, \"org.gtkmm.without_signal\");\n"
+#| "  return app-&gt;run();\n"
+#| "}\n"
 msgid ""
 "\n"
-"$ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \\\n"
-"    d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n"
-"  done\n"
-msgstr ""
+"// without_signal.cc\n"
+"#include &lt;gtkmm.h&gt;\n"
 "\n"
-"$ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \\\n"
-"    d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n"
-"  done\n"
-
-#: C/gtkmm-tutorial-in.xml:8616(para)
-msgid ""
-"As well as renaming the directories, we should rename some of the source "
-"files. For instance: <placeholder-1/> A number of the skeleton files must "
-"still be filled in with project-specific content later."
+"bool throwSomething()\n"
+"{\n"
+"  throw \"Something\";\n"
+"  return true;\n"
+"}\n"
+"\n"
+"int main(int argc, char** argv)\n"
+"{\n"
+"  throwSomething();\n"
+"  auto app = Gtk::Application::create(\"org.gtkmm.without_signal\");\n"
+"  return app-&gt;run();\n"
+"}\n"
 msgstr ""
-"Además de renombrar las carpetas, se deben renombrar algunos de los archivos "
-"de fuentes. Por ejemplo: <placeholder-1/> Algunos de los archivos esqueleto "
-"todavía deberán llenarse después con contenido específico del proyecto."
+"\n"
+"// without_signal.cc\n"
+"#include &lt;gtkmm.h&gt;\n"
+"\n"
+"bool throwSomething()\n"
+"{\n"
+"  throw \"Something\";\n"
+"  return true;\n"
+"}\n"
+"\n"
+"int main(int argc, char** argv)\n"
+"{\n"
+"  throwSomething();\n"
+"  auto app = Gtk::Application::create(\"org.gtkmm.without_signal\");\n"
+"  return app-&gt;run();\n"
+"}\n"
 
-#: C/gtkmm-tutorial-in.xml:8625(para)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:8477
+#, no-wrap
 msgid ""
-"Note that files ending in <filename>.in</filename> will be used to generate "
-"files with the same name but without the <filename>.in</filename> suffix, by "
-"replacing some variables with actual values during the configure stage."
+"\n"
+"&gt; gdb without_signal\n"
+"(gdb) run\n"
+"terminate called after throwing an instance of 'char const*'\n"
+"\n"
+"Program received signal SIGABRT, Aborted.\n"
+"(gdb) backtrace\n"
+"#7  0x08048864 in throwSomething () at without_signal.cc:6\n"
+"#8  0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n"
 msgstr ""
-"Tenga en cuenta que los archivos que terminan en <filename>.in</filename> se "
-"utilizan para generar archivos con el mismo nombre pero sin el sufijo "
-"<filename>.in</filename>, mediante la sustitución de algunas variables con "
-"valores reales durante la fase de configuración."
-
-#: C/gtkmm-tutorial-in.xml:8631(title)
-msgid "Modifying build files"
-msgstr "Modificar archivos de construcción"
+"\n"
+"&gt; gdb without_signal\n"
+"(gdb) run\n"
+"terminate called after throwing an instance of 'char const*'\n"
+"\n"
+"Program received signal SIGABRT, Aborted.\n"
+"(gdb) backtrace\n"
+"#7  0x08048864 in throwSomething () at without_signal.cc:6\n"
+"#8  0x0804887d in main (argc=1, argv=0xbfffecd4) at without_signal.cc:12\n"
 
-#: C/gtkmm-tutorial-in.xml:8633(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8474
+#, fuzzy
+#| msgid ""
+#| "Here is an excerpt from a <application>gdb</application> session. Only "
+#| "the most interesting parts of the output are shown. <placeholder-1/> You "
+#| "can see that the exception was thrown from <filename>without_signal.cc</"
+#| "filename>, line 6 (<code>throw \"Something\";</code>)."
 msgid ""
-"Now we edit the files to adapt them to our needs. You might prefer to use a "
-"multiple-file search-replace utility for this, such as <command>regexxer</"
-"command>. Note that nearly all of the files provided with the skeleton "
-"source tree contain placeholder text. Thus, the substitutions should be "
-"performed globally, and not be limited to the Automake and Autoconf files."
+"Here is an excerpt from a <application>gdb</application> session. Only the "
+"most interesting parts of the output are shown. <_:programlisting-1/> You "
+"can see that the exception was thrown from <filename>without_signal.cc</"
+"filename>, line 6 (<code>throw \"Something\";</code>)."
 msgstr ""
-"Ahora se editan los archivos para adaptarlos a las necesidades. Tal vez "
-"prefiera usar una utilidad para buscar y reemplazar múltiples archivos, como "
-"<command>regexxer</command>. Tenga en cuenta que casi todos los archivos "
-"proporcionados con el esqueleto del árbol de fuentes contienen texto con "
-"marcadores de posición. Es por esto que las sustituciones se deben hacer "
-"globalmente, y no limitarse a los archivos de Automake y Autoconf."
+"Aquí hay un extracto de una sesión de <application>gdb</application>. Sólo "
+"se muestran las partes más interesantes de la salida. <placeholder-1/> Puede "
+"ver que la excepción se lanzó desde <filename>without_signal.cc</filename>, "
+"en la línea 6 (<code>throw \"Something\";</code>)."
 
-#: C/gtkmm-tutorial-in.xml:8637(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8490
+#, fuzzy
+#| msgid ""
+#| "Now let's see what happens when an exception is thrown from a signal "
+#| "handler. Here's the source code. <placeholder-1/>"
 msgid ""
-"All mentions of <varname>skeleton</varname> should be replaced by the "
-"correct name of the C library you are wrapping, such as \"something\" or "
-"\"libsomething\". In the same manner, all instances of <varname>SKELETON</"
-"varname> should be replaced by \"SOMETHING\" or \"LIBSOMETHING\", and all "
-"occurrences of <varname>Skeleton</varname> changed to \"Something\"."
+"Now let's see what happens when an exception is thrown from a signal "
+"handler. Here's the source code."
 msgstr ""
-"Todas las menciones de <varname>skeleton</varname> deben reemplazarse por el "
-"nombre correcto de la biblioteca de C que está envolviendo, como «something» "
-"o «libsomething». De la misma manera, todas las instancias de "
-"<varname>SKELETON</varname> deben reemplazarse por «SOMETHING» o "
-"«LIBSOMETHING», y todas las apariciones de <varname>Skeleton</varname> deben "
-"cambiarse por «Something»."
+"Ahora vea qué pasa cuando una excepción se lanza desde un gestor de señales. "
+"Aquí está el código fuente. <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8641(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8494
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "// with_signal.cc\n"
+#| "#include &lt;gtkmm.h&gt;\n"
+#| "\n"
+#| "bool throwSomething()\n"
+#| "{\n"
+#| "  throw \"Something\";\n"
+#| "  return true;\n"
+#| "}\n"
+#| "\n"
+#| "int main(int argc, char** argv)\n"
+#| "{\n"
+#| "  Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n"
+#| "  Glib::RefPtr&lt;Gtk::Application&gt; app =\n"
+#| "    Gtk::Application::create(argc, argv, \"org.gtkmm.with_signal\");\n"
+#| "  app-&gt;hold();\n"
+#| "  return app-&gt;run();\n"
+#| "}\n"
 msgid ""
-"Likewise, replace all instances of <varname>Joe Hacker</varname> by the name "
-"of the intended copyright holder, which is probably you. Do the same for the "
-"<varname>joe example com</varname> email address."
+"\n"
+"// with_signal.cc\n"
+"#include &lt;gtkmm.h&gt;\n"
+"\n"
+"bool throwSomething()\n"
+"{\n"
+"  throw \"Something\";\n"
+"  return true;\n"
+"}\n"
+"\n"
+"int main(int argc, char** argv)\n"
+"{\n"
+"  Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n"
+"  auto app = Gtk::Application::create(\"org.gtkmm.with_signal\");\n"
+"  app-&gt;hold();\n"
+"  return app-&gt;run();\n"
+"}\n"
 msgstr ""
-"De la misma manera, reemplace todas las instancias de <varname>Joe Hacker</"
-"varname> por el nombre del titular de los derechos de autor, quien "
-"probablemente sea usted. Haga lo mismo para la dirección de correo-e "
-"<varname>joe example com</varname>."
-
-#: C/gtkmm-tutorial-in.xml:8646(title)
-msgid "configure.ac"
-msgstr "configure.ac"
+"\n"
+"// with_signal.cc\n"
+"#include &lt;gtkmm.h&gt;\n"
+"\n"
+"bool throwSomething()\n"
+"{\n"
+"  throw \"Something\";\n"
+"  return true;\n"
+"}\n"
+"\n"
+"int main(int argc, char** argv)\n"
+"{\n"
+"  Glib::signal_timeout().connect(sigc::ptr_fun(throwSomething), 500);\n"
+"  auto app = Gtk::Application::create(\"org.gtkmm.with_signal\");\n"
+"  app-&gt;hold();\n"
+"  return app-&gt;run();\n"
+"}\n"
 
-#: C/gtkmm-tutorial-in.xml:8649(para)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:8514
+#, no-wrap
 msgid ""
-"The <function>AC_CONFIG_SRCDIR()</function> line must mention a file in our "
-"source tree. We can edit this later if we don't yet know the names of any of "
-"the files that we will create."
+"\n"
+"&gt; gdb with_signal\n"
+"(gdb) run\n"
+"(with_signal:2703): glibmm-ERROR **:\n"
+"unhandled exception (type unknown) in signal handler\n"
+"\n"
+"Program received signal SIGTRAP, Trace/breakpoint trap.\n"
+"(gdb) backtrace\n"
+"#2  0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77\n"
+"#3  Glib::exception_handlers_invoke () at exceptionhandler.cc:150\n"
+"#4  0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212\n"
+"#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n"
+"#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n"
 msgstr ""
-"La línea <function>AC_CONFIG_SRCDIR()</function> debe mencionar un archivo "
-"en el árbol de fuentes. Se puede editar esto más tarde si todavía no se "
-"saben los nombres de ninguno de los archivos que se crearán."
+"\n"
+"&gt; gdb with_signal\n"
+"(gdb) run\n"
+"(with_signal:2703): glibmm-ERROR **:\n"
+"unhandled exception (type unknown) in signal handler\n"
+"\n"
+"Program received signal SIGTRAP, Trace/breakpoint trap.\n"
+"(gdb) backtrace\n"
+"#2  0x0063c6ab in glibmm_unexpected_exception () at exceptionhandler.cc:77\n"
+"#3  Glib::exception_handlers_invoke () at exceptionhandler.cc:150\n"
+"#4  0x0063d370 in glibmm_source_callback (data=0x804d620) at main.cc:212\n"
+"#13 0x002e1b31 in Gtk::Application::run (this=0x804f300) at application.cc:178\n"
+"#14 0x08048ccc in main (argc=1, argv=0xbfffecd4) at with_signal.cc:16\n"
 
-#: C/gtkmm-tutorial-in.xml:8652(para)
-msgid ""
-"It is common for binding modules to track the version number of the library "
-"they are wrapping. So, for instance, if the C library is at version 1.23.4, "
-"then the initial version of the binding module would be 1.23.0. However, "
-"avoid starting with an even minor version number as that usually indicates a "
-"stable release."
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8512
+#, fuzzy
+#| msgid ""
+#| "And here's an excerpt from a <application>gdb</application> session. "
+#| "<placeholder-1/> The exception is caught in <application>glibmm</"
+#| "application>, and the program ends with a call to <function>g_error()</"
+#| "function>. Other exceptions may result in different behaviour, but in any "
+#| "case the exception from a signal handler is caught in "
+#| "<application>glibmm</application> or <application>gtkmm</application>, "
+#| "and <application>gdb</application> can't see where it was thrown."
+msgid ""
+"And here's an excerpt from a <application>gdb</application> session. <_:"
+"programlisting-1/> The exception is caught in <application>glibmm</"
+"application>, and the program ends with a call to <function>g_error()</"
+"function>. Other exceptions may result in different behaviour, but in any "
+"case the exception from a signal handler is caught in <application>glibmm</"
+"application> or <application>gtkmm</application>, and <application>gdb</"
+"application> can't see where it was thrown."
 msgstr ""
-"Es común cuando se enlazan módulos rastrear el número de versión de la "
-"biblioteca que se está envolviendo. Entonces, por ejemplo, si la biblioteca "
-"de C está en una versión 1.23.4, el número de versión inicial del módulo de "
-"enlace sería 1.23.0. Sin embargo, evite comenzar con un número de versión "
-"menor par, ya que generalmente indica una versión estable."
+"Y aquí hay un extracto de una sesión de <application>gdb</application>. "
+"<placeholder-1/> La excepción se atrapa en <application>glibmm</"
+"application>, y el programa termina con una llamada a <function>g_error()</"
+"function>. Otras excepciones pueden resultar en un comportamiento diferente, "
+"pero en cualquier caso la excepción desde el gestor de señales se atrapa en "
+"<application>glibmm</application> o <application>gtkmm</application>, y "
+"<application>gdb</application> no puede ver dónde se lanzó."
 
-#: C/gtkmm-tutorial-in.xml:8657(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8534
 #, fuzzy
 #| msgid ""
-#| "The <function>AC_CONFIG_HEADERS()</function> line is used to generate two "
-#| "or more configuration header files. The first header file in the list "
-#| "contains all configuration macros which are set during the configure run. "
-#| "The remaining headers in the list contain only a subset of configuration "
-#| "macros and their corresponding <filename>configh.h.in</filename> file "
-#| "will not be autogenerated. The reason for this separation is that the "
-#| "namespaced configuration headers are installed with your library and "
-#| "define publically visible macros."
+#| "To see where the exception is thrown, you can use the <application>gdb</"
+#| "application> command <userinput>catch throw</userinput>. <placeholder-1/>"
 msgid ""
-"The <function>AC_CONFIG_HEADERS()</function> line is used to generate two or "
-"more configuration header files. The first header file in the list contains "
-"all configuration macros which are set during the configure run. The "
-"remaining headers in the list contain only a subset of configuration macros "
-"and their corresponding <filename>config.h.in</filename> file will not be "
-"autogenerated. The reason for this separation is that the namespaced "
-"configuration headers are installed with your library and define publically "
-"visible macros."
+"To see where the exception is thrown, you can use the <application>gdb</"
+"application> command <userinput>catch throw</userinput>."
 msgstr ""
-"La línea <function>AC_CONFIG_HEADERS()</function> se usa para generar dos o "
-"más archivos de cabecera de configuración. El primer archivo de cabecera en "
-"la lista contiene a todas las macros de configuración que se establecen "
-"durante la ejecución de «configure». Las cabeceras restantes en la lista "
-"contienen sólo una parte de las macros de configuración y el archivo "
-"<filename>configh.h.in</filename> correspondiente a estas no se "
-"autogenerará. La razón de esta separación es que las cabeceras de "
-"configuración con espacios de nombres se instalan con su biblioteca y "
-"definen macros públicamente visibles."
+"Para ver dónde se lanza la excepción, puede usar el comando <userinput>catch "
+"throw</userinput> de <application>gdb</application>. <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8665(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8538
+#, no-wrap
 msgid ""
-"The <function>AC_SUBST([SOMETHINGMM_MODULES], ['...'])</function> line may "
-"need to be modified to check for the correct dependencies."
+"\n"
+"&gt; gdb with_signal\n"
+"(gdb) catch throw\n"
+"Catchpoint 1 (throw)\n"
+"(gdb) run\n"
+"Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw ()\n"
+"(gdb) backtrace\n"
+"#0  0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6\n"
+"#1  0x08048bd4 in throwSomething () at with_signal.cc:6\n"
+"(gdb) continue\n"
+"Continuing.\n"
+"(with_signal:2375): glibmm-ERROR **\n"
+"unhandled exception (type unknown) in signal handler\n"
+"\n"
+"Program received signal SIGTRAP, Trace/breakpoint trap.\n"
 msgstr ""
-"La línea <function>AC_SUBST([SOMETHINGMM_MODULES], ['...'])</function> tal "
-"vez necesite modificarse para verificar las dependencias correctas."
+"\n"
+"&gt; gdb with_signal\n"
+"(gdb) catch throw\n"
+"Catchpoint 1 (throw)\n"
+"(gdb) run\n"
+"Catchpoint 1 (exception thrown), 0x00714ff0 in __cxa_throw ()\n"
+"(gdb) backtrace\n"
+"#0  0x00714ff0 in __cxa_throw () from /usr/lib/i386-linux-gnu/libstdc++.so.6\n"
+"#1  0x08048bd4 in throwSomething () at with_signal.cc:6\n"
+"(gdb) continue\n"
+"Continuing.\n"
+"(with_signal:2375): glibmm-ERROR **\n"
+"unhandled exception (type unknown) in signal handler\n"
+"\n"
+"Program received signal SIGTRAP, Trace/breakpoint trap.\n"
 
-#: C/gtkmm-tutorial-in.xml:8667(para)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:8558
+#, no-wrap
 msgid ""
-"The <function>AC_CONFIG_FILES()</function> block must mention the correct "
-"directory names, as described above."
+"\n"
+"(gdb) catch throw\n"
+"(gdb) commands\n"
+"(gdb)   backtrace\n"
+"(gdb)   continue\n"
+"(gdb)   end\n"
+"(gdb) set pagination off\n"
+"(gdb) run\n"
 msgstr ""
-"El bloque <function>AC_CONFIG_FILES()</function> debe mencionar a los "
-"nombres de carpetas correctos, como se describió anteriormente."
-
-#: C/gtkmm-tutorial-in.xml:8647(para)
-msgid "In <filename>configure.ac</filename>, <placeholder-1/>"
-msgstr "En <filename>configure.ac</filename>, <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:8674(title)
-msgid "Makefile.am files"
-msgstr "Archivos Makefile.am"
+"\n"
+"(gdb) catch throw\n"
+"(gdb) commands\n"
+"(gdb)   backtrace\n"
+"(gdb)   continue\n"
+"(gdb)   end\n"
+"(gdb) set pagination off\n"
+"(gdb) run\n"
 
-#: C/gtkmm-tutorial-in.xml:8677(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8554
+#, fuzzy
+#| msgid ""
+#| "If there are many caught exceptions before the interesting uncaught one, "
+#| "this method can be tedious. It can be automated with the following "
+#| "<application>gdb</application> commands. <placeholder-1/> These commands "
+#| "will print a backtrace from each <code>throw</code> and continue. The "
+#| "backtrace from the last (or possibly the last but one) <code>throw</code> "
+#| "before the program stops, is the interesting one."
 msgid ""
-"In <filename>skeleton/src/Makefile.am</filename> we must mention the correct "
-"values for the generic variables that are used elsewhere in the build system:"
+"If there are many caught exceptions before the interesting uncaught one, "
+"this method can be tedious. It can be automated with the following "
+"<application>gdb</application> commands. <_:programlisting-1/> These "
+"commands will print a backtrace from each <code>throw</code> and continue. "
+"The backtrace from the last (or possibly the last but one) <code>throw</"
+"code> before the program stops, is the interesting one."
 msgstr ""
-"En <filename>skeleton/src/Makefile.am</filename> se deben mencionar los "
-"valores correctos para las variables genéricas que se usan en otros lados en "
-"el sistema de construcción:"
-
-#: C/gtkmm-tutorial-in.xml:8682(varname)
-msgid "binding_name"
-msgstr "binding_name"
-
-#: C/gtkmm-tutorial-in.xml:8683(para)
-msgid "The name of the library, such as libsomethingmm."
-msgstr "El nombre de la biblioteca, por ejemplo libsomethingmm."
+"Si se atrapan muchas excepciones antes de la que interesa, este método puede "
+"ser tedioso. Puede automatizarse con los siguientes comandos de "
+"<application>gdb</application>. <placeholder-1/> Estos comandos imprimirán "
+"una traza inversa de cada <code>throw</code> y continuará. La traza inversa "
+"del último (o posiblemente del penúltimo) <code>throw</code> antes de que el "
+"programa se detenga, es la interesante."
 
-#: C/gtkmm-tutorial-in.xml:8687(varname)
-msgid "wrap_init_flags"
-msgstr "wrap_init_flags"
+#. (itstool) path: appendix/title
+#: C/index-in.docbook:8577
+msgid "Creating your own signals"
+msgstr "Crear sus propias señales"
 
-#: C/gtkmm-tutorial-in.xml:8688(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8578
 msgid ""
-"Additional command-line flags passed to the <filename>generate_wrap_init.pl</"
-"filename> script, such as the C++ namespace and the parent directory prefix "
-"of include files."
+"Now that you've seen signals and signal handlers in <application>gtkmm</"
+"application>, you might like to use the same technique to allow interaction "
+"between your own classes. That's actually very simple by using the "
+"<application>libsigc++</application> library directly."
 msgstr ""
-"Opciones de línea de comandos adicionales pasadas al «script» "
-"<filename>generate_wrap_init.pl</filename>, como el espacio de nombres de C+"
-"+ y el prefijo de la carpeta padre de los archivos de cabecera."
+"Ahora que ha visto señales y gestores de señales en <application>gtkmm</"
+"application>, tal vez quiera usar la misma técnica para permitir interacción "
+"entre sus propias clases. Eso es realmente muy simple usando la biblioteca "
+"<application>libsigc++</application> directamente."
 
-#: C/gtkmm-tutorial-in.xml:8695(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8584
+#, fuzzy
+#| msgid ""
+#| "This isn't purely a <application>gtkmm</application> or GUI issue. "
+#| "<application>gtkmm</application> uses <application>libsigc++</"
+#| "application> to implement its proxy wrappers for the <application>GTK+</"
+#| "application> signal system, but for new, non-GTK+ signals, you can create "
+#| "pure C++ signals, using the <classname>sigc::signal&lt;&gt;</classname> "
+#| "template."
 msgid ""
-"In <filename>skeleton/skeletonmm/Makefile.am</filename> we must mention the "
-"correct values for the generic variables that are used elsewhere in the "
-"build system:"
+"This isn't purely a <application>gtkmm</application> or GUI issue. "
+"<application>gtkmm</application> uses <application>libsigc++</application> "
+"to implement its proxy wrappers for the <application>GTK</application> "
+"signal system, but for new, non-GTK signals, you can create pure C++ "
+"signals, using the <classname>sigc::signal&lt;&gt;</classname> template."
 msgstr ""
-"En <filename>skeleton/skeletonmm/Makefile.am</filename> se deben mencionar "
-"los valores correctos de las variables genéricas que se usan en otros lados "
-"en el sistema de construcción:"
-
-#: C/gtkmm-tutorial-in.xml:8700(varname)
-msgid "lib_LTLIBRARIES"
-msgstr "lib_LTLIBRARIES"
+"Esto no es un asunto único de <application>gtkmm</application> o de IGU. "
+"<application>gtkmm</application> usa <application>libsigc++</application> "
+"para implementar sus envoltorios de proxy para el sistema de señales de "
+"<application>GTK+</application>, pero para las señales nuevas que no son de "
+"GTK+, puede crear señales de C++ puras, usando la plantilla <classname>sigc::"
+"signal&lt;&gt;</classname>."
 
-#: C/gtkmm-tutorial-in.xml:8701(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8591
+#, fuzzy
+#| msgid ""
+#| "For instance, to create a signal that sends 2 parameters, a <type>bool</"
+#| "type> and an <type>int</type>, just declare a <classname>sigc::signal</"
+#| "classname>, like so: <placeholder-1/>"
 msgid ""
-"This variable must mention the correct library name, and this library name "
-"must be used to form the <varname>_SOURCES</varname>, <varname>_LDFLAGS</"
-"varname>, and <varname>_LIBADD</varname> variable names. It is permissible "
-"to use variables substituted by <filename>configure</filename> like "
-"<varname>@SOMETHINGMM_API_VERSION@</varname> as part of the variable names."
+"For instance, to create a signal that sends 2 parameters, a <type>bool</"
+"type> and an <type>int</type>, just declare a <classname>sigc::signal</"
+"classname>, like so:"
 msgstr ""
-"Esta variable debe mencionar el nombre de la biblioteca correcta, y este "
-"nombre de biblioteca debe usarse para formar los nombres de variables "
-"<varname>_SOURCES</varname>, <varname>_LDFLAGS</varname>, y "
-"<varname>_LIBADD</varname>. Está permitido usar variables sustituidas por "
-"<varname>configure</varname>, como <varname>@SOMETHINGMM_API_VERSION@</"
-"varname> como parte de los nombres de las variables."
-
-#: C/gtkmm-tutorial-in.xml:8710(varname)
-msgid "AM_CPPFLAGS"
-msgstr "AM_CPPFLAGS"
-
-#: C/gtkmm-tutorial-in.xml:8711(para)
-msgid "The command line options passed to the C preprocessor."
-msgstr "Las opciones de línea de comandos pasadas al preprocesador de C."
-
-#: C/gtkmm-tutorial-in.xml:8715(varname)
-msgid "AM_CXXFLAGS"
-msgstr "AM_CXXFLAGS"
-
-#: C/gtkmm-tutorial-in.xml:8716(para)
-msgid "The command line options passed to the C++ compiler."
-msgstr "Las opciones de línea de comandos pasadas al compilador de C++"
+"Por ejemplo, para crear una señal que envíe 2 parámetros, un <type>bool</"
+"type> y un <type>int</type>, simplemente declare una <classname>sigc::"
+"signal</classname>, así: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8675(para)
+#. (itstool) path: appendix/programlisting
+#: C/index-in.docbook:8596
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "sigc::signal&lt;void, bool, int&gt; signal_something;\n"
 msgid ""
-"Next we must adapt the various <filename>Makefile.am</filename> files: "
-"<placeholder-1/>"
+"\n"
+"sigc::signal&lt;void(bool, int)&gt; signal_something;\n"
 msgstr ""
-"A continuación se deben adaptar los archivos <filename>Makefile.am</"
-"filename>: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:8726(title)
-msgid "Creating .hg and .ccg files"
-msgstr "Crear archivos .hg y .ccg"
+"\n"
+"sigc::signal&lt;void(bool, int)&gt; signal_something;\n"
 
-#: C/gtkmm-tutorial-in.xml:8727(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8599
+#, fuzzy
+#| msgid ""
+#| "You could just declare that signal as a public member variable, but some "
+#| "people find that distasteful and prefer to make it available via an "
+#| "accessor method, like so: <placeholder-1/>"
 msgid ""
-"We should now create our first <filename>.hg</filename> and <filename>.ccg</"
-"filename> files, to wrap one of the objects in the C library. One pair of "
-"example source files already exists: <filename>skeleton.ccg</filename> and "
-"<filename>skeleton.hg</filename>. Create copies of these files as necessary."
+"You could just declare that signal as a public member variable, but some "
+"people find that distasteful and prefer to make it available via an accessor "
+"method, like so:"
 msgstr ""
-"Ahora se deben crear los primeros archivos <filename>.hg</filename> y "
-"<filename>.ccg</filename>, para envolver uno de los objetos en la biblioteca "
-"de C. Ya existen un par de archivos de fuentes de ejemplo: "
-"<filename>skeleton.ccg</filename> y <filename>skeleton.hg</filename>. Cree "
-"copias de estos archivos si es necesario."
+"También podría simplemente declarar esa señal como una variable miembro "
+"pública, pero algunas personas lo encuentran desastroso y prefieren hacerla "
+"disponible mediante un método de acceso, así: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8731(para)
+#. (itstool) path: appendix/programlisting
+#: C/index-in.docbook:8604
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "class Server\n"
+#| "{\n"
+#| "public:\n"
+#| "  //signal accessor:\n"
+#| "  typedef sigc::signal&lt;void, bool, int&gt; type_signal_something;\n"
+#| "  type_signal_something signal_something();\n"
+#| "\n"
+#| "protected:\n"
+#| "  type_signal_something m_signal_something;\n"
+#| "};\n"
+#| "\n"
+#| "Server::type_signal_something Server::signal_something()\n"
+#| "{\n"
+#| "  return m_signal_something;\n"
+#| "}\n"
 msgid ""
-"We must mention all of our <filename>.hg</filename> and <filename>.ccg</"
-"filename> files in the <filename>skeleton/src/filelist.am</filename> file, "
-"typically in the <varname>files_hg</varname> variable."
+"\n"
+"class Server\n"
+"{\n"
+"public:\n"
+"  //signal accessor:\n"
+"  using type_signal_something = sigc::signal&lt;void(bool, int)&gt;;\n"
+"  type_signal_something signal_something();\n"
+"\n"
+"protected:\n"
+"  type_signal_something m_signal_something;\n"
+"};\n"
+"\n"
+"Server::type_signal_something Server::signal_something()\n"
+"{\n"
+"  return m_signal_something;\n"
+"}\n"
 msgstr ""
-"Se deben mencionar todos los archivos <filename>.hg</filename> y <filename>."
-"ccg</filename> en el archivo <filename>skeleton/src/filelist.am</filename>, "
-"típicamente en la variable <varname>files_hg</varname>."
+"\n"
+"class Server\n"
+"{\n"
+"public:\n"
+"  //signal accessor:\n"
+"  using type_signal_something = sigc::signal&lt;void(bool, int)&gt;;\n"
+"  type_signal_something signal_something();\n"
+"\n"
+"protected:\n"
+"  type_signal_something m_signal_something;\n"
+"};\n"
+"\n"
+"Server::type_signal_something Server::signal_something()\n"
+"{\n"
+"  return m_signal_something;\n"
+"}\n"
 
-#: C/gtkmm-tutorial-in.xml:8735(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8622
+#, fuzzy
+#| msgid ""
+#| "You can then connect to the signal using the same syntax used when "
+#| "connecting to <application>gtkmm</application> signals. For instance, "
+#| "<placeholder-1/>"
 msgid ""
-"Any additional non-generated <filename>.h</filename> and <filename>.cc</"
-"filename> source files may be placed in <filename>skeleton/skeletonmm/</"
-"filename> and listed in <filename>skeleton/skeletonmm/filelist.am</"
-"filename>, typically in the <varname>files_extra_h</varname> and "
-"<varname>files_extra_cc</varname> variables."
+"You can then connect to the signal using the same syntax used when "
+"connecting to <application>gtkmm</application> signals. For instance,"
 msgstr ""
-"Cualquier archivo de fuentes <filename>.h</filename> y <filename>.cc</"
-"filename> adicional no generado se puede poner en <filename>skeleton/"
-"skeletonmm/</filename> y listar en <filename>skeleton/skeletonmm/filelist."
-"am</filename>, típicamente en las variables <varname>files_extra_h</varname> "
-"y <varname>files_extra_cc</varname>."
+"Puede entonces conectar a la señal usando la misma sintaxis que usaba cuando "
+"conectaba a señales de <application>gtkmm</application>. Por ejemplo, "
+"<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8741(para)
+#. (itstool) path: appendix/programlisting
+#: C/index-in.docbook:8626
+#, no-wrap
 msgid ""
-"In the <link linkend=\"sec-wrapping-hg-files\">.hg and .ccg files</link> "
-"section you can learn about the syntax used in these files."
+"\n"
+"server.signal_something().connect(\n"
+"  sigc::mem_fun(client, &amp;Client::on_server_something) );\n"
 msgstr ""
-"En la sección <link linkend=\"sec-wrapping-hg-files\">archivos .hg y .ccg</"
-"link> puede aprender acerca de la sintaxis usada en estos archivos."
-
-#: C/gtkmm-tutorial-in.xml:8748(title)
-msgid "Generating the .defs files."
-msgstr "Generar los archivos .defs."
+"\n"
+"server.signal_something().connect(\n"
+"  sigc::mem_fun(client, &amp;Client::on_server_something) );\n"
 
-#: C/gtkmm-tutorial-in.xml:8752(para)
-msgid "objects (GObjects, widgets, interfaces, boxed-types and plain structs)"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8633
+msgid "This is a full working example that defines and uses custom signals."
 msgstr ""
-"objetos (GObjects, widgets, interfaces, tipos en caja y estructuras planas)"
-
-#: C/gtkmm-tutorial-in.xml:8753(para)
-msgid "functions"
-msgstr "funciones"
-
-#: C/gtkmm-tutorial-in.xml:8754(para)
-msgid "enums"
-msgstr "enums"
-
-#: C/gtkmm-tutorial-in.xml:8755(para)
-msgid "signals"
-msgstr "señales"
-
-#: C/gtkmm-tutorial-in.xml:8756(para)
-msgid "properties"
-msgstr "propiedades"
-
-#: C/gtkmm-tutorial-in.xml:8757(para)
-msgid "vfuncs"
-msgstr "«vfuncs»"
+"Este es un ejemplo funcional completo que define y usa señales "
+"personalizadas."
 
-#: C/gtkmm-tutorial-in.xml:8749(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8637
 msgid ""
-"The <filename>.defs</filename> files are text files, in a lisp format, that "
-"describe the API of a C library, including its <placeholder-1/>"
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/signals/custom/\">Source Code</ulink>"
 msgstr ""
-"Los archivos <filename>.defs</filename> son archivos de texto, en formato "
-"«lisp», que describen la API de la biblioteca de C, incluyendo sus "
-"<placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:8766(filename)
-msgid "gtk.defs"
-msgstr "gtk.defs"
-
-#: C/gtkmm-tutorial-in.xml:8767(para)
-msgid "Includes the other files."
-msgstr "Incluye a los otros archivos."
-
-#: C/gtkmm-tutorial-in.xml:8770(filename)
-msgid "gtk_methods.defs"
-msgstr "gtk_methods.defs"
-
-#: C/gtkmm-tutorial-in.xml:8771(para)
-msgid "Objects and functions."
-msgstr "Objetos y funciones."
-
-#: C/gtkmm-tutorial-in.xml:8774(filename)
-msgid "gtk_enums.defs"
-msgstr "gtk_enums.defs"
-
-#: C/gtkmm-tutorial-in.xml:8775(para)
-msgid "Enumerations."
-msgstr "Enumeraciones."
-
-#: C/gtkmm-tutorial-in.xml:8778(filename)
-msgid "gtk_signals.defs"
-msgstr "gtk_signals.defs"
-
-#: C/gtkmm-tutorial-in.xml:8779(para)
-msgid "Signals and properties."
-msgstr "Señales y propiedades."
-
-#: C/gtkmm-tutorial-in.xml:8782(filename)
-msgid "gtk_vfuncs.defs"
-msgstr "gtk_vfuncs.defs"
+"<ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm-documentation/tree/master/";
+"examples/book/signals/custom/\">Código fuente</ulink>"
 
-#: C/gtkmm-tutorial-in.xml:8783(para)
-msgid "vfuncs (function pointer member fields in structs), written by hand."
-msgstr ""
-"«vfuncs» (campos miembro de punteros de funciones en estructuras), escritas "
-"a mano."
+#. (itstool) path: appendix/title
+#: C/index-in.docbook:8645
+msgid "Comparison with other signalling systems"
+msgstr "Comparación con otros sistemas de señales"
 
-#: C/gtkmm-tutorial-in.xml:8760(para)
-msgid ""
-"At the moment, we have separate tools for generating different parts of "
-"these <filename>.defs</filename>, so we split them up into separate files. "
-"For instance, in the <filename>gtk/src</filename> directory of the "
-"<application>gtkmm</application> sources, you will find these files: "
-"<placeholder-1/>"
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8646
+#, fuzzy
+#| msgid ""
+#| "(An aside: <application>GTK+</application> calls this scheme \"signalling"
+#| "\"; the sharp-eyed reader with GUI toolkit experience will note that this "
+#| "same design is often seen under the name of \"broadcaster-listener\" (e."
+#| "g., in Metrowerks' PowerPlant framework for the Macintosh). It works in "
+#| "much the same way: one sets up <literal>broadcasters</literal>, and then "
+#| "connects <literal>listeners</literal> to them; the broadcaster keeps a "
+#| "list of the objects listening to it, and when someone gives the "
+#| "broadcaster a message, it calls all of its objects in its list with the "
+#| "message. In <application>gtkmm</application>, signal objects play the "
+#| "role of broadcasters, and slots play the role of listeners - sort of. "
+#| "More on this later.)"
+msgid ""
+"(An aside: <application>GTK</application> calls this scheme \"signalling\"; "
+"the sharp-eyed reader with GUI toolkit experience will note that this same "
+"design is often seen under the name of \"broadcaster-listener\" (e.g., in "
+"Metrowerks' PowerPlant framework for the Macintosh). It works in much the "
+"same way: one sets up <literal>broadcasters</literal>, and then connects "
+"<literal>listeners</literal> to them; the broadcaster keeps a list of the "
+"objects listening to it, and when someone gives the broadcaster a message, "
+"it calls all of its objects in its list with the message. In "
+"<application>gtkmm</application>, signal objects play the role of "
+"broadcasters, and slots play the role of listeners - sort of. More on this "
+"later.)"
 msgstr ""
-"Por el momento, existen herramientas separadas para generar partes "
-"diferentes de estos <filename>.defs</filename>, por lo que se parten en "
-"archivos separados. Por ejemplo, en la carpeta <filename>gtk/src</filename> "
-"de las fuentes de <application>gtkmm</application>, encontrará estos "
-"archivos: <placeholder-1/>"
+"(Nota aparte: <application>GTK+</application> llama a este esquema "
+"«señalización»; el lector perspicaz con experiencia en kits de herramientas "
+"de IGU notará que este mismo diseño se ve a menudo bajo el nombre de «emisor-"
+"receptor» (por ejemplo, en la plataforma de Metrowerks PowerPlant para los "
+"Macintosh). Funciona casi de la misma manera: uno establece "
+"<literal>emisores</literal>, y después les conecta <literal>receptores</"
+"literal>; el emisor tiene una lista de los objetos que lo están recibiendo, "
+"y cuando alguien le envía un mensaje al emisor, llama a todos sus objetos en "
+"su lista con el mensaje. En <application>gtkmm</application>, los objetos de "
+"señales hacen de emisores, y los «slots» de receptores, o algo así. Se "
+"hablará de este tema más adelante)."
 
-#: C/gtkmm-tutorial-in.xml:8787(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8660
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> signal handlers are strongly-typed, "
+#| "whereas <application>GTK+</application> C code allows you to connect a "
+#| "callback with the wrong number and type of arguments, leading to a "
+#| "segfault at runtime. And, unlike <application>Qt</application>, "
+#| "<application>gtkmm</application> achieves this without modifying the C++ "
+#| "language."
 msgid ""
-"The <filename>skeletonmm/codegen/generate_defs_and_docs.sh</filename> script "
-"generates all <filename>.defs</filename> files and the <filename>*_docs.xml</"
-"filename> file, described in the <link linkend=\"sec-wrapping-documentation"
-"\">Documentation</link> section."
+"<application>gtkmm</application> signal handlers are strongly-typed, whereas "
+"<application>GTK</application> C code allows you to connect a callback with "
+"the wrong number and type of arguments, leading to a segfault at runtime. "
+"And, unlike <application>Qt</application>, <application>gtkmm</application> "
+"achieves this without modifying the C++ language."
 msgstr ""
+"Los gestores de señales de <application>gtkmm</application> son de «tipado "
+"fuerte», mientras que el código C de <application>GTK+</application> le "
+"permite conectar un retorno de llamada con el número y tipo incorrecto de "
+"argumentos, llevando a una violación de acceso en tiempo de ejecución. Y, a "
+"diferencia de <application>Qt</application>, <application>gtkmm</"
+"application> logra esto sin modificar el lenguaje C++."
 
-#: C/gtkmm-tutorial-in.xml:8793(title)
-msgid "Generating the methods .defs"
-msgstr "Generar los .defs de métodos"
-
-#: C/gtkmm-tutorial-in.xml:8797(programlisting)
-#, no-wrap
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8666
+#, fuzzy
+#| msgid ""
+#| "Re. Overriding signal handlers: You can do this in the straight-C world "
+#| "of GTK+ too; that's what GTK's object system is for. But in GTK+, you "
+#| "have to go through some complicated procedures to get object-oriented "
+#| "features like inheritance and overloading. In C++, it's simple, since "
+#| "those features are supported in the language itself; you can let the "
+#| "compiler do the dirty work."
 msgid ""
-"\n"
-"$ ./h2def.py /usr/include/gtk-3.0/gtk/*.h &gt; gtk_methods.defs\n"
+"Re. Overriding signal handlers: You can do this in the straight-C world of "
+"GTK too; that's what GTK's object system is for. But in GTK, you have to go "
+"through some complicated procedures to get object-oriented features like "
+"inheritance and overloading. In C++, it's simple, since those features are "
+"supported in the language itself; you can let the compiler do the dirty work."
 msgstr ""
-"\n"
-"$ ./h2def.py /usr/include/gtk-3.0/gtk/*.h &gt; gtk_methods.defs\n"
+"Acerca de reemplazar gestores de señales: puede hacer esto en el mundo de C "
+"plano de GTK+, también; para eso existe el sistema de objetos de GTK+. Pero "
+"en GTK+, hay que realizar algunos procedimientos complicados para obtener "
+"características orientadas a objetos como herencia y sobrecarga. En C++, es "
+"simple, dado que esas características se soportan en el lenguaje en sí; "
+"puede dejarle el trabajo pesado al compilador."
 
-#: C/gtkmm-tutorial-in.xml:8794(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8674
+#, fuzzy
+#| msgid ""
+#| "This is one of the places where the beauty of C++ really comes out. One "
+#| "wouldn't think of subclassing a GTK+ widget simply to override its action "
+#| "method; it's just too much trouble. In GTK+, you almost always use "
+#| "signals to get things done, unless you're writing a new widget. But "
+#| "because overriding methods is so easy in C++, it's entirely practical - "
+#| "and sensible - to subclass a button for that purpose."
 msgid ""
-"This <filename>.defs</filename> file describes objects and their functions. "
-"It is generated by the <command>h2def.py</command> script which you can find "
-"in glibmm's <filename>tools/defs_gen</filename> directory. For instance, "
-"<placeholder-1/>"
+"This is one of the places where the beauty of C++ really comes out. One "
+"wouldn't think of subclassing a GTK widget simply to override its action "
+"method; it's just too much trouble. In GTK, you almost always use signals to "
+"get things done, unless you're writing a new widget. But because overriding "
+"methods is so easy in C++, it's entirely practical - and sensible - to "
+"subclass a button for that purpose."
 msgstr ""
-"Este archivo <filename>.defs</filename> describe a los objetos y a sus "
-"funciones. Se genera mediante el script <command>h2def.py</command> que "
-"puede encontrar en la carpeta <filename>tools/defs_gen</filename> de glibmm. "
-"Por ejemplo, <placeholder-1/>"
+"Este es uno de los lugares en los que se muestra realmente la belleza de C+"
+"+. Uno no consideraría heredar un widget de GTK+ simplemente para reemplazar "
+"a su método de acción; es mucho problema. En GTK+, casi siempre se usan "
+"señales para realizar las tareas, a menos que se estuviera escribiendo un "
+"widget nuevo. Pero, dado que reemplazar métodos es tan fácil en C++, es "
+"enteramente práctico (y razonable) heredar de un botón para ese propósito."
 
-#: C/gtkmm-tutorial-in.xml:8804(title)
-msgid "Generating the enums .defs"
-msgstr "Generar los .defs de enumeraciones"
+#. (itstool) path: appendix/title
+#: C/index-in.docbook:8685
+msgid "<application>gtkmm</application> and Win32"
+msgstr "<application>gtkmm</application> y Win32"
 
-#: C/gtkmm-tutorial-in.xml:8808(programlisting)
-#, no-wrap
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8686
 msgid ""
-"\n"
-"$ ./enum.pl /usr/include/gtk-3.0/gtk/*.h &gt; gtk_enums.defs\n"
+"One of the major advantages of <application>gtkmm</application> is that it "
+"is crossplatform. <application>gtkmm</application> programs written on other "
+"platforms such as GNU/Linux can generally be transferred to Windows (and "
+"vice versa) with few modifications to the source."
 msgstr ""
-"\n"
-"$ ./enum.pl /usr/include/gtk-3.0/gtk/*.h &gt; gtk_enums.defs\n"
+"Una de las mayores ventajas de <application>gtkmm</application> es que es "
+"multiplataforma. Los programas de <application>gtkmm</application> escritos "
+"en otras plataformas como GNU/Linux generalmente pueden transferirse a "
+"Windows (y viceversa) con pocas modificaciones al código fuente."
 
-#: C/gtkmm-tutorial-in.xml:8805(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8691
+#, fuzzy
+#| msgid ""
+#| "<application>gtkmm</application> currently works with the <ulink url="
+#| "\"http://mingw.org/\";>MingW/GCC3.4 compiler</ulink> and Microsoft Visual C"
+#| "++ 2005 or later (including the freely available express editions) on the "
+#| "Windows platform. There is an <ulink url=\"ftp://ftp.gnome.org/pub/GNOME/";
+#| "binaries/win32/gtkmm\"> installer</ulink> available for gtkmm on "
+#| "Microsoft Windows. Refer to <ulink url=\"http://live.gnome.org/gtkmm/";
+#| "MSWindows/\"> http://live.gnome.org/gtkmm/MSWindows</ulink> for "
+#| "instructions how to use it."
 msgid ""
-"This <filename>.defs</filename> file describes enum types and their possible "
-"values. It is generated by the <filename>enum.pl</filename> script which you "
-"can find in glibmm's <filename>tools</filename> directory. For instance, "
-"<placeholder-1/>"
+"<application>gtkmm</application> currently works with the <ulink url="
+"\"http://mingw.org/\";>MinGW/GCC compiler</ulink> with a compiler version "
+"that supports C++17, such as gcc 7 or 8. It also works with Microsoft Visual "
+"C++ 2017 15.7.x or later (including the freely available express/community "
+"editions) on the Windows platform. There is an <ulink url=\"ftp://ftp.gnome.";
+"org/pub/GNOME/binaries/win32/gtkmm\">installer</ulink> available for "
+"<application>gtkmm</application> on Microsoft Windows, but as of this "
+"writing (October 2020) it has not been updated for a long time. Please be "
+"aware that although normally it is fine to mix builds done with Visual "
+"Studio 2017 and 2019, please do not do so when building <application>gtkmm</"
+"application> with its -mm dependencies."
 msgstr ""
-"Este archivo <filename>.defs</filename> describe a los tipos de "
-"enumeraciones y a sus valores posibles. Se genera mediante el script "
-"<filename>enum.pl</filename> que puede encontrar en la carpeta "
-"<filename>tools</filename> de glibmm. Por ejemplo, <placeholder-1/>"
+"<application>gtkmm</application> actualmente funciona con el <ulink url="
+"\"http://mingw.org/\";>compilador MingW/GCC3.4</ulink> y Microsoft Visual C++ "
+"2005 o posterior (incluyendo las ediciones disponibles gratuitamente o "
+"«express») en la plataforma Windows. Hay un <ulink url=\"ftp://ftp.gnome.org/";
+"pub/GNOME/binaries/win32/gtkmm\">instalador</ulink> disponible para gtkmm en "
+"Microsoft Windows. Consulte <ulink url=\"http://live.gnome.org/gtkmm/";
+"MSWindows/\">http://live.gnome.org/gtkmm/MSWindows</ulink> para ver "
+"instrucciones sobre su uso."
 
-#: C/gtkmm-tutorial-in.xml:8815(title)
-msgid "Generating the signals and properties .defs"
-msgstr "Generar los .defs de señales y propiedades"
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8704
+msgid ""
+"Refer to the <ulink url=\"https://gitlab.gnome.org/GNOME/gtkmm/tree/master/";
+"README.win32\">README.win32</ulink>, as well as the <ulink url=\"https://";
+"gitlab.gnome.org/GNOME/gtkmm/tree/master/MSVC_NMake/README\">README</ulink> "
+"files in the <application>gtkmm</application>, pangomm and glibmm for "
+"instructions on how to build <application>gtkmm</application> on Windows."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:8820(programlisting)
-#, no-wrap
+#. (itstool) path: appendix/title
+#: C/index-in.docbook:8711
+msgid "Working with gtkmm's Source Code"
+msgstr "Trabajar con el código fuente de gtkmm"
+
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8712
 msgid ""
-"\n"
-"$ cd tools/extra_defs_gen\n"
-"$ ./generate_extra_defs &gt; gtk_signals.defs\n"
+"If you are interested in helping out with the development of "
+"<application>gtkmm</application>, or fixing a bug in <application>gtkmm</"
+"application>, you'll probably need to build the development version of "
+"<application>gtkmm</application>. However, you should not install a "
+"development version over your stable version. Instead, you should install it "
+"alongside your existing <application>gtkmm</application> installation, in a "
+"separate path."
 msgstr ""
-"\n"
-"$ cd tools/extra_defs_gen\n"
-"$ ./generate_extra_defs &gt; gtk_signals.defs\n"
+"Si está interesado o interesada en ayudar con el desarrollo de "
+"<application>gtkmm</application>, o arreglar un error en <application>gtkmm</"
+"application>, probablemente necesite construir la versión de desarrollo de "
+"<application>gtkmm</application>. Sin embargo, no debe instalar una versión "
+"de desarrollo sobre su versión estable. En su lugar, debe instalarla junto a "
+"su instalación de <application>gtkmm</application> existente, en una ruta "
+"separada."
 
-#: C/gtkmm-tutorial-in.xml:8816(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8719
 #, fuzzy
 #| msgid ""
-#| "This <filename>.defs</filename> file describes signals and properties. It "
-#| "is generated by the special <filename>extra_defs</filename> utility that "
-#| "is in every wrapping project, such as <filename>gtkmm/tools/"
-#| "extra_defs_gen/</filename>. For instance <placeholder-1/>"
+#| "The easiest way to do this is using <ulink url=\"http://developer.gnome.";
+#| "org/jhbuild/unstable/\">jhbuild</ulink>. <application>jhbuild</"
+#| "application> is a program that makes building GNOME software much easier "
+#| "by calculating dependencies and building things in the correct order. "
+#| "This section will give a brief explanation of how to set up "
+#| "<application>jhbuild</application> to build and install "
+#| "<application>gtkmm</application> from the source repository (git). For up-"
+#| "to-date information on <application>jhbuild</application>, please refer "
+#| "to the <ulink url=\"http://developer.gnome.org/jhbuild/unstable/";
+#| "\">jhbuild manual</ulink>. If you need assistance using "
+#| "<application>jhbuild</application>, you should ask for help on the <ulink "
+#| "url=\"http://mail.gnome.org/mailman/listinfo/gnome-love\";>gnome-love "
+#| "mailing list</ulink>."
 msgid ""
-"This <filename>.defs</filename> file describes signals and properties. It is "
-"generated by the special <filename>generate_extra_defs</filename> utility "
-"that is in every wrapping project, such as <filename>gtkmm/tools/"
-"extra_defs_gen/</filename>. For instance <placeholder-1/>"
+"The easiest way to do this is using <ulink url=\"https://wiki.gnome.org/";
+"Projects/Jhbuild\">jhbuild</ulink>. <application>jhbuild</application> is a "
+"program that makes building GNOME software much easier by calculating "
+"dependencies and building things in the correct order. This section will "
+"give a brief explanation of how to set up <application>jhbuild</application> "
+"to build and install <application>gtkmm</application> from the source "
+"repository (git). For up-to-date information on <application>jhbuild</"
+"application>, please refer to the <ulink url=\"http://developer.gnome.org/";
+"jhbuild/unstable/\">jhbuild manual</ulink>."
 msgstr ""
-"Este archivo <filename>.defs</filename> describe las señales y propiedades. "
-"Se genera mediante la utilidad especial <filename>extra_defs</filename> que "
-"está en todos los proyectos de envoltorios, como <filename>gtkmm/tools/"
-"extra_defs_gen/</filename>. Por ejemplo, <placeholder-1/>"
+"La manera más fácil de hacerlo es usar <ulink url=\"http://developer.gnome.";
+"org/jhbuild/unstable/\">jhbuild</ulink>. <application>jhbuild</application> "
+"es un programa que hace la construcción de software de GNOME mucho más fácil "
+"mediante el cálculo de dependencias y la construcción de los elementos en el "
+"orden correcto. Esta sección le dará una breve explicación sobre cómo "
+"configurar <application>jhbuild</application> para construir e instalar "
+"<application>gtkmm</application> desde el repositorio de código fuente "
+"(git). Para obtener información actualizada sobre <application>jhbuild</"
+"application>, por favor consulte el <ulink url=\"http://developer.gnome.org/";
+"jhbuild/unstable/\">manual de jhbuild</ulink>. Si necesita asistencia usando "
+"<application>jhbuild</application>, pida ayuda en la <ulink url=\"http://";
+"mail.gnome.org/mailman/listinfo/gnome-love\">lista de correo-e gnome-love</"
+"ulink>."
 
-#: C/gtkmm-tutorial-in.xml:8825(para)
+#. (itstool) path: note/para
+#: C/index-in.docbook:8731
+#, fuzzy
+#| msgid ""
+#| "Note that to build <application>gtkmm</application> from git, you'll "
+#| "often need to build all of its dependencies from git as well. "
+#| "<application>jhbuild</application> makes this easier than it would "
+#| "normally be, but it will take quite a while to build and install them "
+#| "all. You will probably encounter build problems, though these will "
+#| "usually be corrected quickly if you report them."
 msgid ""
-"You must edit the source code of your own <filename>generate_extra_defs</"
-"filename> tool in order to generate the <filename>.defs</filename> for the "
-"GObject C types that you wish to wrap. In the skeleton source tree, the "
-"source file is named <filename>codegen/extradefs/"
-"generate_extra_defs_skeleton.cc</filename>. If not done so already, the file "
-"should be renamed, with the basename of your new binding substituted for the "
-"<varname>skeleton</varname> placeholder. The <filename>codegen/Makefile.am</"
-"filename> file should also mention the new source filename."
+"Note that to build <application>gtkmm</application> from git, you'll often "
+"need to build many of its dependencies from git as well. "
+"<application>jhbuild</application> makes this easier than it would normally "
+"be, but it will take quite a while to build and install them all. You will "
+"probably encounter build problems, though these will usually be corrected "
+"quickly if you report them."
 msgstr ""
-"Debe editar el código fuente de su herramienta "
-"<filename>generate_extra_defs</filename> para generar los <filename>.defs</"
-"filename> para los tipos GObject de C que desea envolver. En el árbol de "
-"fuentes esqueleto, el archivo de fuentes se llama <filename>codegen/"
-"extradefs/generate_extra_defs_skeleton.cc</filename>. Si no lo ha hecho "
-"todavía, debe renombrar el archivo, con el nombre de base de su enlace nuevo "
-"sustituyendo a la marca de posición <varname>skeleton</varname>. El archivo "
-"<filename>codegen/Makefile.am</filename> también debe mencionar el nombre "
-"del archivo de fuentes nuevo."
+"Tenga en cuenta que para construir <application>gtkmm</application> desde "
+"git, a menudo también necesitará construir todas sus dependencias también "
+"desde git. <application>jhbuild</application> hace esto más fácil de lo que "
+"normalmente sería, pero tomará un buen rato hasta que construya e instale "
+"todo. Probablemente encontrará problemas en la construcción, aunque "
+"normalmente se corregirán rápidamente si los reporta."
 
-#: C/gtkmm-tutorial-in.xml:8834(programlisting)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8739
+msgid ""
+"<application>gnome-build-meta</application> is an alternative to "
+"<application>jhbuild</application>. It is described at the <ulink url="
+"\"https://wiki.gnome.org/Newcomers/BuildSystemComponent\";>Building system "
+"components</ulink> wiki page, but here we concentrate on "
+"<application>jhbuild</application>."
+msgstr ""
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8746
+msgid "Setting up jhbuild"
+msgstr "Configurar JHBuild"
+
+#. (itstool) path: para/screen
+#: C/index-in.docbook:8755
 #, no-wrap
+msgid "$ cp examples/sample.jhbuildrc ~/.config/jhbuildrc"
+msgstr "$ cp examples/sample.jhbuildrc ~/.config/jhbuildrc"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8747
+#, fuzzy
+#| msgid ""
+#| "To set up <application>jhbuild</application>, follow the basic "
+#| "installation instructions from the <ulink url=\"http://developer.gnome.";
+#| "org/jhbuild/unstable/\">jhbuild manual</ulink>. After you have installed "
+#| "<application>jhbuild</application>, you should copy the sample "
+#| "<application>jhbuild</application> configuration file into your home "
+#| "directory by executing the following command from the "
+#| "<application>jhbuild</application> directory: <screen>$ cp examples/"
+#| "sample.jhbuildrc ~/.jhbuildrc</screen>"
 msgid ""
-"\n"
-"#include &lt;libsomething.h&gt;\n"
-"\n"
-"int main(int, char**)\n"
-"{\n"
-"  something_init();\n"
-"\n"
-"  std::cout &lt;&lt; get_defs(SOME_TYPE_WIDGET)\n"
-"            &lt;&lt; get_defs(SOME_TYPE_STUFF);\n"
-"  return 0;\n"
-"}\n"
+"To set up <application>jhbuild</application>, follow the basic installation "
+"instructions from the <ulink url=\"http://developer.gnome.org/jhbuild/";
+"unstable/\">jhbuild manual</ulink>. After you have installed "
+"<application>jhbuild</application>, you should copy the sample "
+"<application>jhbuild</application> configuration file into your home "
+"directory by executing the following command from the <application>jhbuild</"
+"application> directory: <_:screen-1/>"
 msgstr ""
-"\n"
-"#include &lt;libalgo.h&gt;\n"
-"\n"
-"int main(int, char**)\n"
-"{\n"
-"  algo_init();\n"
-"\n"
-"  std::cout &lt;&lt; get_defs(SOME_TYPE_WIDGET)\n"
-"            &lt;&lt; get_defs(SOME_TYPE_STUFF);\n"
-"  return 0;\n"
-"}\n"
+"Para configurar <application>jhbuild</application>, siga las instrucciones "
+"básicas de instalación del <ulink url=\"http://developer.gnome.org/jhbuild/";
+"unstable/\">manual de jhbuild</ulink>. Después de que lo haya instalado, "
+"deberá copiar la configuración de ejemplo de <application>jhbuild</"
+"application> a su carpeta personal ejecutando el siguiente comando desde la "
+"carpeta de <application>jhbuild</application>: <screen>$ cp examples/sample."
+"jhbuildrc ~/.jhbuildrc</screen>"
 
-#: C/gtkmm-tutorial-in.xml:8832(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8757
+#, fuzzy
+#| msgid ""
+#| "The <application>gtkmm</application> module is defined in the "
+#| "<filename>gnome-suites-core-deps-3.x.modules</filename> moduleset, so "
+#| "edit your <filename>.jhbuildrc</filename> file and set your moduleset "
+#| "setting to the latest version e.g. like so: <placeholder-1/>"
 msgid ""
-"Then edit the <filename>.cc</filename> file to specify the correct types. "
-"For instance, your <function>main()</function> function might look like "
-"this: <placeholder-1/>"
+"The <application>gtkmm</application> module is defined in the "
+"<filename>gnome-suites-core-deps-latest.modules</filename> moduleset. So "
+"edit your <filename>jhbuildrc</filename> file and set your moduleset setting "
+"like so:"
 msgstr ""
-"Después edite el archivo <filename>.cc</filename> para especificar los tipos "
-"correctos. Por ejemplo, su función <function>main()</function> podría verse "
+"El módulo de <application>gtkmm</application> se define en el conjunto de "
+"módulos <filename>gnome-suites-core-deps-3.x.modules</filename>, así que "
+"edite su archivo <filename>.jhbuildrc</filename> y establezca la "
+"configuración de su conjunto de módulos a la última versión, por ejemplo, "
 "así: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8850(title)
-msgid "Writing the vfuncs .defs"
-msgstr "Escribir los .defs de las «vfuncs»"
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8762
+#, fuzzy, no-wrap
+#| msgid "moduleset = 'gnome-suites-core-deps-3.12'"
+msgid "moduleset = 'gnome-suites-core-deps-latest'"
+msgstr "moduleset = 'gnome-suites-core-deps-3.12'"
 
-#: C/gtkmm-tutorial-in.xml:8851(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8763
 #, fuzzy
 #| msgid ""
-#| "This <filename>.defs</filename> file describes virtual functions "
-#| "(vfuncs). It must be written by hand. There is no skeleton to start from. "
-#| "You can look at <application>gtkmm</application>'s <filename>gtk/src/"
-#| "gtk_vfuncs.defs</filename> file."
+#| "After setting the correct moduleset, you need to tell "
+#| "<application>jhbuild</application> which module or modules to build. To "
+#| "build <application>gtkmm</application> and all of its dependencies, set "
+#| "<varname>modules</varname> like so: <placeholder-1/>"
 msgid ""
-"This <filename>.defs</filename> file describes virtual functions (vfuncs). "
-"It must be written by hand. There is the skeleton file <filename>skeleton/"
-"src/skeleton_vfunc.defs</filename> to start from. You can also look at "
-"<application>gtkmm</application>'s <filename>gtk/src/gtk_vfuncs.defs</"
-"filename> file."
+"After setting the correct moduleset, you need to tell <application>jhbuild</"
+"application> which module or modules to build. To build <application>gtkmm</"
+"application> and all of its dependencies, set <varname>modules</varname> "
+"like so:"
 msgstr ""
-"Este archivo <filename>.defs</filename> describe a las funciones virtuales "
-"(«vfuncs»). Debe escribirse a mano. No hay un esqueleto del que empezar. "
-"Puede echar un vistazo al archivo <filename>gtk/src/gtk_vfuncs.defs</"
-"filename> de <application>gtkmm</application>."
+"Después de haber configurado el conjunto de módulos correcto, necesitará "
+"decirle a <application>jhbuild</application> qué módulo o módulos construir. "
+"Para construir a <application>gtkmm</application> y a todas sus "
+"dependencias, asigne <varname>modules</varname> así: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8862(title)
-msgid "The .hg and .ccg files"
-msgstr "Los archivos .hg y .ccg"
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:8769
+#, no-wrap
+msgid "modules = [ 'gtkmm' ]"
+msgstr "modules = [ 'gtkmm' ]"
 
-#: C/gtkmm-tutorial-in.xml:8863(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8770
 msgid ""
-"The .hg and .ccg source files are very much like .h and .cc C++ source "
-"files, but they contain extra macros, such as <function>_CLASS_GOBJECT()</"
-"function> and <function>_WRAP_METHOD()</function>, from which "
-"<command>gmmproc</command> generates appropriate C++ source code, usually at "
-"the same position in the header. Any additional C++ source code will be "
-"copied verbatim into the corresponding .h or .cc file."
+"You can build several modules by setting the <varname>modules</varname> "
+"variable to a meta-package, e.g. <literal>meta-gnome-core</literal>, or "
+"listing more than one module name. The <varname>modules</varname> variable "
+"specifies which modules will be built when you don't explicitly specify "
+"anything on the command line. You can always build a different moduleset "
+"later by specifying it on the commandline (e.g. <command>jhbuild build "
+"gtkmm</command>)."
 msgstr ""
-"Los archivos de fuentes .hg y .ccg se parecen mucho a los archivos de "
-"fuentes .h y .cc de C++, pero contienen macros adicionales, como "
-"<function>_CLASS_GOBJECT()</function> y <function>_WRAP_METHOD()</function>, "
-"desde las que <command>gmmproc</command> genera código fuente de C++ "
-"apropiado, generalmente en la misma posición en la cabecera. Cualquier "
-"código fuente adicional de C++ se copiará tal cual en el archivo .h o .cc "
-"correspondiente."
+"Puede construir varios módulos estableciendo la variable <varname>modules</"
+"varname> a un metapaquete, como por ejemplo <literal>meta-gnome-core</"
+"literal>, o listando más de un nombre de módulo. La variable "
+"<varname>modules</varname> especifica qué módulos se construirán cuando no "
+"especifique explícitamente nada en la línea de comandos. Puede construir un "
+"conjunto de módulos diferente más tarde especificándolo en la línea de "
+"comandos (por ejemplo, <command>jhbuild build gtkmm</command>)."
 
-#: C/gtkmm-tutorial-in.xml:8876(programlisting)
-#, no-wrap
+#. (itstool) path: important/title
+#: C/index-in.docbook:8780
+msgid "Setting a prefix"
+msgstr "Establecer un prefijo"
+
+#. (itstool) path: important/para
+#: C/index-in.docbook:8781
+#, fuzzy
+#| msgid ""
+#| "By default, <application>jhbuild</application>'s configuration is "
+#| "configured to install all software built with <application>jhbuild</"
+#| "application> under the <filename>/opt/gnome</filename> prefix. You can "
+#| "choose a different prefix, but it is recommended that you keep this "
+#| "prefix different from other software that you've installed (don't set it "
+#| "to <filename>/usr</filename>!) If you've followed the jhbuild "
+#| "instructions then this prefix belongs to your user, so you don't need to "
+#| "run jhbuild as <literal>root</literal>."
 msgid ""
-"\n"
-"#include &lt;gtkmm/bin.h&gt;\n"
-"#include &lt;gtkmm/activatable.h&gt;\n"
-"_DEFS(gtkmm,gtk)\n"
-"_PINCLUDE(gtkmm/private/bin_p.h)\n"
-"\n"
-"namespace Gtk\n"
-"{\n"
-"\n"
-"class Button\n"
-"  : public Bin,\n"
-"    public Activatable\n"
-"{\n"
-"  _CLASS_GTKOBJECT(Button,GtkButton,GTK_BUTTON,Gtk::Bin,GtkBin)\n"
-"  _IMPLEMENTS_INTERFACE(Activatable)\n"
-"public:\n"
-"\n"
-"  _CTOR_DEFAULT\n"
-"  explicit Button(const Glib::ustring&amp; label, bool mnemonic = false);\n"
-"\n"
-"  _WRAP_METHOD(void set_label(const Glib::ustring&amp; label), gtk_button_set_label)\n"
-"\n"
-"  ...\n"
-"\n"
-"  _WRAP_SIGNAL(void clicked(), \"clicked\")\n"
-"\n"
-"  ...\n"
-"\n"
-"  _WRAP_PROPERTY(\"label\", Glib::ustring)\n"
-"};\n"
-"\n"
-"} // namespace Gtk\n"
+"By default, <application>jhbuild</application>'s configuration is configured "
+"to install all software built with <application>jhbuild</application> under "
+"the <filename>~/jhbuild/install</filename> prefix. You can choose a "
+"different prefix, but it is recommended that you keep this prefix different "
+"from other software that you've installed (don't set it to <filename>/usr</"
+"filename>!) If you've followed the jhbuild instructions then this prefix "
+"belongs to your user, so you don't need to run jhbuild as <literal>root</"
+"literal>."
 msgstr ""
-"\n"
-"#include &lt;gtkmm/bin.h&gt;\n"
-"#include &lt;gtkmm/activatable.h&gt;\n"
-"_DEFS(gtkmm,gtk)\n"
-"_PINCLUDE(gtkmm/private/bin_p.h)\n"
-"\n"
-"namespace Gtk\n"
-"{\n"
-"\n"
-"class Button\n"
-"  : public Bin,\n"
-"    public Activatable\n"
-"{\n"
-"  _CLASS_GTKOBJECT(Button,GtkButton,GTK_BUTTON,Gtk::Bin,GtkBin)\n"
-"  _IMPLEMENTS_INTERFACE(Activatable)\n"
-"public:\n"
-"\n"
-"  _CTOR_DEFAULT\n"
-"  explicit Button(const Glib::ustring&amp; label, bool mnemonic = false);\n"
-"\n"
-"  _WRAP_METHOD(void set_label(const Glib::ustring&amp; label), gtk_button_set_label)\n"
-"\n"
-"  ...\n"
-"\n"
-"  _WRAP_SIGNAL(void clicked(), \"clicked\")\n"
-"\n"
-"  ...\n"
-"\n"
-"  _WRAP_PROPERTY(\"label\", Glib::ustring)\n"
-"};\n"
-"\n"
-"} // namespace Gtk\n"
+"De manera predeterminada, <application>jhbuild</application> está "
+"configurado para instalar todo el software construido con "
+"<application>jhbuild</application> bajo el prefijo <filename>/opt/gnome</"
+"filename>. Puede elegir un prefijo diferente, pero se recomienda que lo "
+"mantenga diferente de otro software que haya instalado (no lo establezca a "
+"<filename>/usr</filename>). Si ha seguido las instrucciones de jhbuild, "
+"entonces este prefijo le corresponde a su usuario, por lo que no necesitará "
+"ejecutar jhbuild como <literal>root</literal>."
 
-#: C/gtkmm-tutorial-in.xml:8871(para)
-#, fuzzy
-#| msgid ""
-#| "A .hg file will typically include some headers and then declare a class, "
-#| "using some macros to add API or behaviour to this class. For instance, "
-#| "gtkmm's <filename>button.hg</filename> looks roughly like this: "
-#| "<placeholder-1/>"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8793
 msgid ""
-"A .hg file will typically include some headers and then declare a class, "
-"using some macros to add API or behaviour to this class. For instance, "
-"<application>gtkmm</application>'s <filename>button.hg</filename> looks "
-"roughly like this: <placeholder-1/>"
+"When you downloaded <application>jhbuild</application> from the git "
+"repository, you got a number of <filename>.modules</filename> files, "
+"specifying dependencies between modules. By default <application>jhbuild</"
+"application> does not use the downloaded versions of these files, but reads "
+"the latest versions in the git repository. This is usually what you want. If "
+"you don't want it, use the <varname>use_local_modulesets</varname> variable "
+"in <filename>.jhbuildrc</filename>."
 msgstr ""
-"Un archivo .hg típicamente incluirá algunas cabeceras y luego declarará una "
-"clase, usando algunas macros para añadir una API o comportamiento a esta "
-"clase. Por ejemplo, el <filename>button.hg</filename> de gtkmm se ve más o "
-"menos así: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:8913(function)
-msgid "_DEFS()"
-msgstr "_DEFS()"
+"Cuando descarga <application>jhbuild</application> desde el repositorio git, "
+"obtiene varios archivos <filename>.module</filename>, especificando las "
+"dependencias entre módulos. De manera predeterminada, <application>jhbuild</"
+"application> no usa las versiones descargadas de estos archivos, sino que "
+"lee las últimas en el repositorio git. Esto generalmente es lo que quiere. "
+"Si no es así, use la variable <varname>use_local_modulesets</varname> en "
+"<filename>.jhbuildrc</filename>."
 
-#: C/gtkmm-tutorial-in.xml:8914(para)
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8804
 msgid ""
-"Specifies the destination directory for generated sources, and the name of "
-"the main .defs file that <command>gmmproc</command> should parse."
+"Installing and Using the git version of <application>gtkmm</application>"
 msgstr ""
-"Especifica la carpeta de destino para las fuentes generadas, y el nombre del "
-"archivo .defs principal que <command>gmmproc</command> debe procesar."
+"Instalar y utilizar la versión de git de <application>gtkmm</application>"
 
-#: C/gtkmm-tutorial-in.xml:8917(function)
-msgid "_PINCLUDE()"
-msgstr "_PINCLUDE()"
+#. (itstool) path: para/screen
+#: C/index-in.docbook:8812
+#, no-wrap
+msgid ""
+"$ jhbuild bootstrap\n"
+"$ jhbuild sanitycheck"
+msgstr ""
+"$ jhbuild bootstrap\n"
+"$ jhbuild sanitycheck"
 
-#: C/gtkmm-tutorial-in.xml:8918(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8805
 #, fuzzy
 #| msgid ""
-#| "Tells <command>gmmproc</command> to include a header from the generated "
-#| "private/button_p.h file."
+#| "Once you've configured <application>jhbuild</application> as described "
+#| "above, building <application>gtkmm</application> should be relatively "
+#| "straightforward. The first time you run <application>jhbuild</"
+#| "application>, you should run the following sequence of commands to ensure "
+#| "that <application>jhbuild</application> has the required tools and verify "
+#| "that it is set up correctly: <screen>$ jhbuild bootstrap\n"
+#| "$ jhbuild sanitycheck</screen>"
 msgid ""
-"Tells <command>gmmproc</command> to include a header in the generated "
-"private/button_p.h file."
+"Once you've configured <application>jhbuild</application> as described "
+"above, building <application>gtkmm</application> should be relatively "
+"straightforward. The first time you run <application>jhbuild</application>, "
+"you should run the following sequence of commands to ensure that "
+"<application>jhbuild</application> has the required tools and verify that it "
+"is set up correctly: <_:screen-1/>"
 msgstr ""
-"Le dice a <command>gmmproc</command> que incluya una cabecera desde el "
-"archivo private/button_p.h generado."
-
-#: C/gtkmm-tutorial-in.xml:8921(function)
-msgid "_CLASS_GTKOBJECT()"
-msgstr "_CLASS_GTKOBJECT()"
+"Una vez que ha configurado <application>jhbuild</application> como se "
+"describió anteriormente, construir <application>gtkmm</application> debería "
+"ser relativamente directo. La primera vez que ejecute <application>jhbuild</"
+"application>, debe ejecutar la siguiente secuencia de comandos para "
+"asegurase que <application>jhbuild</application> tiene las herramientas "
+"adecuadas y verificar que está configurado correctamente: <screen>$ jhbuild "
+"bootstrap\n"
+"$ jhbuild sanitycheck</screen>"
 
-#: C/gtkmm-tutorial-in.xml:8922(para)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:8816
 msgid ""
-"Tells <command>gmmproc</command> to add some typedefs, constructors, and "
-"standard methods to this class, as appropriate when wrapping a widget."
+"Installing <application>gtkmm</application> with <application>jhbuild</"
+"application>"
 msgstr ""
-"Le dice a <command>gmmproc</command> que añada algunos «typedefs», "
-"constructores, y métodos estándar a esta clase, como es apropiado cuando se "
-"envuelve un widget."
-
-#: C/gtkmm-tutorial-in.xml:8925(function)
-msgid "_IMPLEMENTS_INTERFACE()"
-msgstr "_IMPLEMENTS_INTERFACE()"
+"Instalar <application>gtkmm</application> con <application>jhbuild</"
+"application>"
 
-#: C/gtkmm-tutorial-in.xml:8926(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8817
 msgid ""
-"Tells <command>gmmproc</command> to add initialization code for the "
-"interface."
+"If everything worked correctly, you should be able to build "
+"<application>gtkmm</application> and all of its dependencies from git by "
+"executing <command>jhbuild build</command> (or, if you didn't specify "
+"<application>gtkmm</application> in the <varname>modules</varname> variable, "
+"with the command <command>jhbuild build gtkmm</command>)."
 msgstr ""
-"Le dice a <command>gmmproc</command> que añada código de inicialización para "
-"la interfaz."
-
-#: C/gtkmm-tutorial-in.xml:8929(function) C/gtkmm-tutorial-in.xml:9175(title)
-msgid "_CTOR_DEFAULT"
-msgstr "_CTOR_DEFAULT"
-
-#: C/gtkmm-tutorial-in.xml:8930(para)
-msgid "Add a default constructor."
-msgstr "Añadir un constructor predeterminado."
+"Si todo funcionó correctamente, podrá construir <application>gtkmm</"
+"application> y a todas sus dependencias desde git ejecutando "
+"<command>jhbuild build</command> (o, si no especificó <application>gtkmm</"
+"application> en la variable <varname>modules</varname>, con el comando "
+"<command>jhbuild build gtkmm</command>)."
 
-#: C/gtkmm-tutorial-in.xml:8933(term)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8824
 msgid ""
-"<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, "
-"and <function>_WRAP_PROPERTY()</function>"
+"This command will build and install a series of modules and will probably "
+"take quite a long time the first time through. After the first time, "
+"however, it should go quite a bit faster since it only needs to rebuild "
+"files that changed since the last build. Alternatively, after you've built "
+"and installed <application>gtkmm</application> the first time, you can "
+"rebuild <application>gtkmm</application> by itself (without rebuilding all "
+"of its dependencies) with the command <command>jhbuild buildone gtkmm</"
+"command>."
 msgstr ""
-"<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, y "
-"<function>_WRAP_PROPERTY()</function>"
-
-#: C/gtkmm-tutorial-in.xml:8936(para)
-msgid "Add methods to wrap parts of the C API."
-msgstr "Añadir métodos para envolver las partes de la API de C."
+"Este comando construirá e instalará una serie de módulos y probablemente "
+"tarde mucho tiempo la primera vez. Después de la primera vez, sin embargo, "
+"debería ir mucho más rápido dado que sólo tendrá que reconstruir los "
+"archivos que han cambiado desde la última vez. Alternativamente, después de "
+"haber construido e instalado <application>gtkmm</application> por primera "
+"vez, lo podrá reconstruir por sí mismo (sin reconstruir todas sus "
+"dependencias) con el comando <command>jhbuild buildone gtkmm</command>."
 
-#: C/gtkmm-tutorial-in.xml:8910(para)
-msgid "The macros in this example do the following: <placeholder-1/>"
-msgstr "Las macros en este ejemplo hacen lo siguiente: <placeholder-1/>"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:8835
+msgid "Using the git version of <application>gtkmm</application>"
+msgstr "Usar la versión de git de <application>gtkmm</application>"
 
-#: C/gtkmm-tutorial-in.xml:8943(programlisting)
-#, no-wrap
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8836
+#, fuzzy
+#| msgid ""
+#| "After you've installed the git version of <application>gtkmm</"
+#| "application>, you're ready to start using and experimenting with it. In "
+#| "order to use the new version of <application>gtkmm</application> you've "
+#| "just installed, you need to set some environment variables so that your "
+#| "<filename>configure</filename> script knows where to find the new "
+#| "libraries. Fortunately, <application>jhbuild</application> offers an easy "
+#| "solution to this problem. Executing the command <command>jhbuild shell</"
+#| "command> will start a new shell with all of the correct environment "
+#| "variables set. Now if you re-configure and build your project just as you "
+#| "usually do, it should link against the newly installed libraries. To "
+#| "return to your previous environment, simply exit the "
+#| "<application>jhbuild</application> shell."
 msgid ""
-"\n"
-"$ cd gtk/src\n"
-"$ /usr/lib/glibmm-2.4/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n"
+"After you've installed the git version of <application>gtkmm</application>, "
+"you're ready to start using and experimenting with it. In order to use the "
+"new version of <application>gtkmm</application> you've just installed, you "
+"need to set some environment variables so that your <filename>configure</"
+"filename> or <filename>meson.build</filename> script knows where to find the "
+"new libraries. Fortunately, <application>jhbuild</application> offers an "
+"easy solution to this problem. Executing the command <command>jhbuild shell</"
+"command> will start a new shell with all of the correct environment "
+"variables set. Now if you re-configure and build your project just as you "
+"usually do, it should link against the newly installed libraries. To return "
+"to your previous environment, simply exit the <application>jhbuild</"
+"application> shell."
 msgstr ""
-"\n"
-"$ cd gtk/src\n"
-"$ /usr/lib/glibmm-2.4/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n"
+"Después de que haya instalado la versión de git de <application>gtkmm</"
+"application>, ya estará listo para comenzar a usarlo y a experimentar con "
+"él. Para usar la versión nueva de <application>gtkmm</application> que ha "
+"acabado de instalar, necesitará establecer algunas variables de entorno para "
+"que su script <filename>configure</filename> sepa dónde encontrar las "
+"bibliotecas nuevas. Afortunadamente, <application>jhbuild</application> "
+"ofrece una solución fácil a este problema. Ejecutar el comando "
+"<command>jhbuild shell</command> arrancará un intérprete nuevo con todas las "
+"variables de entorno correctas establecidas. Ahora, si reconfigura y "
+"construye su proyecto como hace siempre, debería enlazarse con las "
+"bibliotecas recientemente instaladas. Para volver a su entorno previo, "
+"simplemente salga del intérprete de <application>jhbuild</application>."
 
-#: C/gtkmm-tutorial-in.xml:8940(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8850
 msgid ""
-"The .h and .cc files will be generated from the .hg and .ccg files by "
-"processing them with <command>gmmproc</command> like so, though this happens "
-"automatically when using the above build structure: <placeholder-1/>"
+"Once you've built your software, you'll need to run your program within the "
+"jhbuild environment as well. To do this, you can again use the "
+"<command>jhbuild shell</command> command to start a new shell with the "
+"<application>jhbuild</application> environment set up. Alternatively, you "
+"can execute a one-off command in the <application>jhbuild</application> "
+"environment using the following command: <command>jhbuild run command-name</"
+"command>. In this case, the command will be run with the correct environment "
+"variables set, but will return to your previous environment after the "
+"program exits."
 msgstr ""
-"Los archivos .h y .cc se generarán desde los archivos .hg y .ccg "
-"procesándolos con <command>gmmproc</command> así, aunque esto sucede "
-"automáticamente cuando usa la estructura de construcción anteriormente "
-"mencionada: <placeholder-1/>"
+"Una vez que haya construido su software, también necesitará ejecutar su "
+"programa dentro del entorno de jhbuild. Para hacerlo, puede usar de nuevo el "
+"comando <command>jhbuild shell</command> para arrancar un intérprete nuevo "
+"con el entorno de <application>jhbuild</application> configurado. "
+"Alternativamente, puede ejecutar un solo comando en el entorno de "
+"<application>jhbuild</application> usando el siguiente comando: "
+"<command>jhbuild run nombre-de-comando</command>. En este caso, el comando "
+"se ejecutará con las variables de entorno correctas establecidas, pero "
+"retornará a su entorno previo después de que el programa salga."
+
+#. (itstool) path: appendix/title
+#: C/index-in.docbook:8867
+msgid "Wrapping C Libraries with gmmproc"
+msgstr "Envolver bibliotecas C con gmmproc"
 
-#: C/gtkmm-tutorial-in.xml:8948(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8868
 msgid ""
-"Notice that we provided <command>gmmproc</command> with the path to the .m4 "
-"convert files, the path to the .defs file, the name of a .hg file, the "
-"source directory, and the destination directory."
+"<application>gtkmm</application> uses the <command>gmmproc</command> tool to "
+"generate most of its source code, using .defs files that define the APIs of "
+"<classname>GObject</classname>-based libraries. So it's quite easy to create "
+"additional gtkmm-style wrappers of other glib/GObject-based libraries."
 msgstr ""
-"Tenga en cuenta que se le proporcionó a <command>gmmproc</command> la ruta "
-"de los archivos de conversión .m4, la ruta del archivo .defs, el nombre de "
-"un archivo .hg, la carpeta de las fuentes, y la carpeta de destino."
+"<application>gtkmm</application> usa la herramienta <command>gmmproc</"
+"command> para generar la mayor parte de su código fuente, usando archivos ."
+"defs que definen las API de las bibliotecas basadas en <classname>GObject</"
+"classname>. Es por esto que es bastante fácil crear envoltorios con el "
+"estilo de gtkmm adicionales de otras bibliotecas basadas en glib/GObject."
 
-#: C/gtkmm-tutorial-in.xml:8951(para)
+#. (itstool) path: appendix/para
+#: C/index-in.docbook:8873
 msgid ""
-"You should avoid including the C header from your C++ header, to avoid "
-"polluting the global namespace, and to avoid exporting unnecessary public "
-"API. But you will need to include the necessary C headers from your .ccg "
-"file."
+"This involves a variety of tools, some of them crufty, but at least they "
+"work, and has been used successfully by several projects."
 msgstr ""
-"Debe evitar incluir la cabecera de C desde su cabecera de C++, para evitar "
-"contaminar el espacio de nombres global, y para evitar exportar API pública "
-"innecesaria. Pero necesitará incluir las cabeceras de C desde su archivo ."
-"ccg."
-
-#: C/gtkmm-tutorial-in.xml:8956(para)
-msgid "The macros are explained in more detail in the following sections."
-msgstr "Las macros se explican en mayor detalle en las secciones siguientes."
+"Esto involucra una variedad de herramientas, algunas de ellas obsoletas, "
+"pero que al menos funcionan, y que varios proyectos han usado exitosamente."
 
-#: C/gtkmm-tutorial-in.xml:8959(title)
-msgid "m4 Conversions"
-msgstr "Conversiones m4"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:8878
+msgid "The build structure"
+msgstr "La estructura de construcción"
 
-#: C/gtkmm-tutorial-in.xml:8966(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8879
+#, fuzzy
+#| msgid ""
+#| "Generation of the source code for a gtkmm-style wrapper API requires use "
+#| "of tools such as <command>gmmproc</command> and "
+#| "<filename>generate_wrap_init.pl</filename>. In theory you could write "
+#| "your own build files to use these appropriately, but a much better option "
+#| "is to make use of the build infrastructure provided by the mm-common "
+#| "module. To get started, it helps a lot to pick an existing binding module "
+#| "as an example to look at."
 msgid ""
-"\n"
-"_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n"
-msgstr ""
-"\n"
-"_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n"
+"Generation of the source code for a gtkmm-style wrapper API requires use of "
+"tools such as <command>gmmproc</command> and <filename>generate_wrap_init."
+"pl</filename>, which are included in <application>glibmm</application>. In "
+"theory you could write your own build files to use these appropriately, but "
+"a much better option is to make use of the build infrastructure provided by "
+"the <application>mm-common</application> module. To get started, it helps a "
+"lot to pick an existing binding module as an example to look at."
+msgstr ""
+"La generación del código fuente para una API envoltorio del estilo de gtkmm "
+"requiere el uso de herramientas como <command>gmmproc</command> y "
+"<filename>generate_wrap_init.pl</filename>. En teoría, podría escribir sus "
+"propios archivos de construcción para usarlas apropiadamente, pero una "
+"opción mucho mejor es hacer uso de la infraestructura de construcción "
+"proporcionada por el módulo mm-common. Para empezar, ayuda mucho escoger un "
+"módulo de enlace existente como un ejemplo para consultar."
 
-#: C/gtkmm-tutorial-in.xml:8960(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:8887
+#, fuzzy
+#| msgid ""
+#| "For instance, let's pretend that we are wrapping a C library called "
+#| "libexample. It provides a <classname>GObject</classname>-based API with "
+#| "types named, for instance, <classname>ExampleThing</classname> and "
+#| "<classname>ExampleStuff</classname>."
 msgid ""
-"The macros that you use in the .hg and .ccg files often need to know how to "
-"convert a C++ type to a C type, or vice-versa. gmmproc takes this "
-"information from an .m4 file in your <literal>tools/m4/</literal> directory. "
-"This allows it to call a C function in the implementation of your C++ "
-"method, passing the appropriate parameters to that C functon. For instance, "
-"this tells gmmproc how to convert a GtkTreeView pointer to a Gtk::TreeView "
-"pointer: <placeholder-1/>"
+"For instance, let's pretend that we are wrapping a C library called "
+"libsomething. It provides a <classname>GObject</classname>-based API with "
+"types named, for instance, <classname>SomeWidget</classname> and "
+"<classname>SomeStuff</classname>."
 msgstr ""
-"Las macros que usa en los archivos .hg y .ccg a menudo necesitan saber cómo "
-"convertir un tipo de C++ a un tipo de C, o viceversa. gmmproc toma esta "
-"información desde un archivo .m4 en su carpeta <literal>tools/m4/</literal>. "
-"Esto le permite llamar a una función de C en la implementación de su método "
-"de C++, pasándole los parámetros apropiados a esa función de C. Por ejemplo, "
-"esto le dice a gmmproc cómo convertir un puntero de GtkTreeView a un puntero "
-"de Gtk::TreView: <placeholder-1/>"
+"Por ejemplo, imagine que se quiere envolver una biblioteca de C llamada "
+"libexample. Proporciona una API basada en <classname>GObject</classname> con "
+"tipos nombrados, por ejemplo, <classname>ExampleThing</classname> y "
+"<classname>ExampleStuff</classname>."
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:8893
+msgid "Copying the skeleton project"
+msgstr "Copiar el esqueleto del proyecto"
 
-#: C/gtkmm-tutorial-in.xml:8971(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8895
+#, fuzzy
+#| msgid ""
+#| "Typically our wrapper library would be called libsomethingmm. We can "
+#| "start by copying the <ulink url=\"http://git.gnome.org/cgit/mm-common/";
+#| "tree/skeletonmm\">skeleton source tree</ulink> from the mm-common module. "
+#| "<placeholder-1/>"
 msgid ""
-"<literal>$3</literal> will be replaced by the parameter name when this "
-"conversion is used by gmmproc."
+"Typically our wrapper library would be called libsomethingmm. We can start "
+"by copying the <ulink url=\"https://gitlab.gnome.org/GNOME/mm-common/tree/";
+"master/skeletonmm\"> skeleton source tree</ulink> from the <application>mm-"
+"common</application> module. Starting with <application>mm-common</"
+"application> 1.0.0 this skeleton application is built with the <ulink url="
+"\"https://mesonbuild.com/\";>Meson build system</ulink>."
 msgstr ""
-"<literal>$3</literal> se reemplazará por el nombre del parámetro cuando "
-"gmmproc use esta conversión."
+"Típicamente la biblioteca envoltorio se llamaría libsomethingmm. Se puede "
+"empezar copiando el <ulink url=\"http://git.gnome.org/cgit/mm-common/tree/";
+"skeletonmm\">esqueleto del árbol de código fuente</ulink> desde el módulo mm-"
+"common. <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8978(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:8901
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "  $ git clone git://git.gnome.org/mm-common\n"
+#| "  $ cp -a mm-common/skeletonmm libsomethingmm\n"
 msgid ""
 "\n"
-"_CONVERSION(`PrintSettings&amp;',`GtkPrintSettings*',__FR2P)\n"
-"_CONVERSION(`const PrintSettings&amp;',`GtkPrintSettings*',__FCR2P)\n"
-"_CONVERSION(`const Glib::RefPtr&lt;Printer&gt;&amp;',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n"
+"  $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n";
+"  $ cp -a mm-common/skeletonmm libsomethingmm\n"
 msgstr ""
 "\n"
-"_CONVERSION(`PrintSettings&amp;',`GtkPrintSettings*',__FR2P)\n"
-"_CONVERSION(`const PrintSettings&amp;',`GtkPrintSettings*',__FCR2P)\n"
-"_CONVERSION(`const Glib::RefPtr&lt;Printer&gt;&amp;',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n"
+"  $ git clone https://gitlab.gnome.org/GNOME/mm-common.git\n";
+"  $ cp -a mm-common/skeletonmm libsomethingmm\n"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8910
+msgid "<filename>libsomethingmm</filename>: The top-level directory."
+msgstr "<filename>libsomethingmm</filename>: la carpeta de nivel superior."
 
-#: C/gtkmm-tutorial-in.xml:8975(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8912
 msgid ""
-"Some extra macros make this easier and consistent. Look in gtkmm's .m4 files "
-"for examples. For instance: <placeholder-1/>"
+"<filename>libsomething</filename>: Contains the main include file and the "
+"pkg-config .pc file."
 msgstr ""
-"Algunas macros adicionales hacen esto más fácil y consistente. Consulte los "
-"archivos .m4 de gtkmm como ejemplos. Por ejemplo: <placeholder-1/>"
+"<filename>libsomething</filename>: contiene el archivo de cabecera principal "
+"y el archivo .pc de pkg-config."
 
-#: C/gtkmm-tutorial-in.xml:8987(title)
-msgid "m4 Initializations"
-msgstr "Inicializaciones de m4"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8914
+msgid "<filename>src</filename>: Contains .hg and .ccg source files."
+msgstr "<filename>src</filename>: contiene los archivos de fuentes .hg y .ccg."
 
-# «inizialization» debería ser «initialization».
-# Nicolás.
-#: C/gtkmm-tutorial-in.xml:8988(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8915
+#, fuzzy
+#| msgid ""
+#| "<filename>libsomethingmm</filename>: Contains generated and hand-written ."
+#| "h and .cc files."
 msgid ""
-"Often when wrapping methods, it is desirable to store the return of the C "
-"function in what is called an output parameter. In this case, the C++ method "
-"returns <type>void</type> but an output parameter in which to store the "
-"value of the C function is included in the argument list of the C++ method. "
-"gmmproc allows such functionality, but appropriate initialization macros "
-"must be included to tell gmmproc how to initialize the C++ parameter from "
-"the return of the C function."
+"<filename>libsomethingmm</filename>: Contains hand-written .h and .cc files."
 msgstr ""
-"Cuando se envuelven métodos, a menudo es deseable almacenar el valor que "
-"devuelve una función de C en lo que se conoce como parámetro de salida. En "
-"este caso, el método de C++ devuelve <type>void</type> pero se incluye en su "
-"lista de argumentos un parámetro de salida en el que se almacena el valor de "
-"la función de C. gmmproc permite esta funcionalidad, pero deben incluirse "
-"macros de inicialización apropiadas para decirle a gmmproc cómo inicializar "
-"el parámetro de C++ desde el valor de devolución de la función de C."
+"<filename>libsomethingmm</filename>: contiene los archivos .h y .cc "
+"generados y escritos a mano."
 
-#: C/gtkmm-tutorial-in.xml:9003(programlisting)
-#, no-wrap
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8905
+#, fuzzy
+#| msgid ""
+#| "This provides a directory structure for the source .hg and .ccg files and "
+#| "the generated .h and .cc files, with <filename>filelist.am</filename> "
+#| "Automake include files that can specify the various files in use, in "
+#| "terms of generic Automake variables. The directory structure usually "
+#| "looks like this, after we have renamed the directories appropriately: "
+#| "<placeholder-1/>"
 msgid ""
-"\n"
-"_INITIALIZATION(`Gtk::Widget&amp;',`GtkWidget*',`$3 = Glib::wrap($4)')\n"
+"This provides a directory structure for the source .hg and .ccg files and "
+"the hand-written .h and .cc files, with <filename>meson.build</filename> "
+"files that can specify the various files in use, in terms of Meson "
+"variables. The directory structure usually looks like this, after we have "
+"renamed the directories appropriately: <_:itemizedlist-1/>"
 msgstr ""
-"\n"
-"_INITIALIZATION(`Gtk::Widget&amp;',`GtkWidget*',`$3 = Glib::wrap($4)')\n"
+"Esto proporciona una estructura de carpetas para los archivos de fuentes .hg "
+"y .ccg, y los archivos .h y .cc generados; con archivos de cabecera "
+"<filename>filelist.am</filename> de Automake que pueden especificar la "
+"variedad de archivos en uso, en términos de variables de Automake genéricas. "
+"La estructura de carpetas generalmente se ve así, después de haber "
+"renombrado las carpetas apropiadamente: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:8997(para)
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:8926
+#, no-wrap
 msgid ""
-"For example, if there was a C function that returned a <type>GtkWidget*</"
-"type> and for some reason, instead of having the C++ method also return the "
-"widget, it was desirable to have the C++ method place the widget in a "
-"specified output parameter, an initialization macro such as the following "
-"would be necessary: <placeholder-1/>"
+"\n"
+"$ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \\\n"
+"    d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n"
+"  done\n"
 msgstr ""
-"Por ejemplo, si hubiera una función de C que devolviera un <type>GtkWidget*</"
-"type> y por alguna razón, en lugar de hacer que el método de C++ también "
-"devuelva el widget, se quisiera hacer que el método de C++ ponga al widget "
-"en un parámetro de salida especificado, sería necesaria una macro de "
-"inicialización como la siguiente: <placeholder-1/>"
+"\n"
+"$ for f in $(find libsomethingmm -depth -name '*skeleton*'); do \\\n"
+"    d=\"${f%/*}\"; b=\"${f##*/}\"; mv \"$f\" \"$d/${b//skeleton/libsomething}\"; \\\n"
+"  done\n"
 
-#: C/gtkmm-tutorial-in.xml:9008(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8924
+#, fuzzy
+#| msgid ""
+#| "As well as renaming the directories, we should rename some of the source "
+#| "files. For instance: <placeholder-1/> A number of the skeleton files must "
+#| "still be filled in with project-specific content later."
 msgid ""
-"<literal>$3</literal> will be replaced by the output parameter name of the C+"
-"+ method and <literal>$4</literal> will be replaced by the return of the C "
-"function when this initialization is used by gmmproc. For convenience, "
-"<literal>$1</literal> will also be replaced by the C++ type without the "
-"ampersand (&amp;) and <literal>$2</literal> will be replaced by the C type."
+"As well as renaming the directories, we should rename some of the source "
+"files. For instance: <_:programlisting-1/> A number of the skeleton files "
+"must still be filled in with project-specific content later."
 msgstr ""
-"<literal>$3</literal> se reemplazará por el nombre del parámetro de salida "
-"del método de C++ y <literal>$4</literal> se reemplazará por el valor de "
-"retorno de la función de C cuando gmmproc use esta inicialización. Por "
-"conveniencia, <literal>$1</literal> también se reemplazará por el tipo de C+"
-"+ sin el «et» (&amp;) y <literal>$2</literal> se reemplazará por el tipo de "
-"C."
-
-#: C/gtkmm-tutorial-in.xml:9019(title)
-msgid "Class macros"
-msgstr "Macros de clases"
+"Además de renombrar las carpetas, se deben renombrar algunos de los archivos "
+"de fuentes. Por ejemplo: <placeholder-1/> Algunos de los archivos esqueleto "
+"todavía deberán llenarse después con contenido específico del proyecto."
 
-#: C/gtkmm-tutorial-in.xml:9020(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8933
 msgid ""
-"The class macro declares the class itself and its relationship with the "
-"underlying C type. It generates some internal constructors, the member "
-"<varname>gobject_</varname>, typedefs, the <function>gobj()</function> "
-"accessors, type registration, and the <function>Glib::wrap()</function> "
-"method, among other things."
+"Note that files ending in <filename>.in</filename> will be used to generate "
+"files with the same name but without the <filename>.in</filename> suffix, by "
+"replacing some variables with actual values during the configure stage."
 msgstr ""
-"Las macros de clases declaran la clase en sí y su relación con el tipo de C "
-"subyacente. Generan algunos constructores internos, el miembro "
-"<varname>gobject_</varname>, «typedefs», los <function>gobj()</function> de "
-"acceso, registro de tipos, y el método <function>Glib::wrap()</function>, "
-"entre otras cosas."
+"Tenga en cuenta que los archivos que terminan en <filename>.in</filename> se "
+"utilizan para generar archivos con el mismo nombre pero sin el sufijo "
+"<filename>.in</filename>, mediante la sustitución de algunas variables con "
+"valores reales durante la fase de configuración."
 
-#: C/gtkmm-tutorial-in.xml:9025(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8936
 msgid ""
-"Other macros, such as <function>_WRAP_METHOD()</function> and "
-"<function>_WRAP_SIGNAL()</function> may only be used after a call to a "
-"<function>_CLASS_*</function> macro."
+"Generated files are saved in the build tree, which is separated from the "
+"source tree when <command>meson</command> and <command>ninja</command> are "
+"used."
 msgstr ""
-"Otras macros, como <function>_WRAP_METHOD()</function> y "
-"<function>_WRAP_SIGNAL()</function> sólo pueden usarse después de una "
-"llamada a una macro <function>_CLASS_*</function>."
 
-#: C/gtkmm-tutorial-in.xml:9030(title)
-msgid "_CLASS_GOBJECT"
-msgstr "_CLASS_GOBJECT"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:8941
+msgid "Modifying build files"
+msgstr "Modificar archivos de construcción"
 
-#: C/gtkmm-tutorial-in.xml:9031(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8943
+#, fuzzy
+#| msgid ""
+#| "Now we edit the files to adapt them to our needs. You might prefer to use "
+#| "a multiple-file search-replace utility for this, such as "
+#| "<command>regexxer</command>. Note that nearly all of the files provided "
+#| "with the skeleton source tree contain placeholder text. Thus, the "
+#| "substitutions should be performed globally, and not be limited to the "
+#| "Automake and Autoconf files."
 msgid ""
-"This macro declares a wrapper for a type that is derived from "
-"<classname>GObject</classname>, but whose wrapper is not derived from "
-"<classname>Gtk::Object</classname>."
+"Now we edit the files to adapt them to our needs. You might prefer to use a "
+"multiple-file search-replace utility for this, such as <command>regexxer</"
+"command>. Note that nearly all of the files provided with the skeleton "
+"source tree contain placeholder text. Thus, the substitutions should be "
+"performed globally, and not be limited to the Meson files."
 msgstr ""
-"Esta macro declara un envoltorio de un tipo que deriva de "
-"<classname>GObject</classname>, pero cuyo envoltorio no deriva de "
-"<classname>Gtk::Object</classname>."
+"Ahora se editan los archivos para adaptarlos a las necesidades. Tal vez "
+"prefiera usar una utilidad para buscar y reemplazar múltiples archivos, como "
+"<command>regexxer</command>. Tenga en cuenta que casi todos los archivos "
+"proporcionados con el esqueleto del árbol de fuentes contienen texto con "
+"marcadores de posición. Es por esto que las sustituciones se deben hacer "
+"globalmente, y no limitarse a los archivos de Automake y Autoconf."
 
-#: C/gtkmm-tutorial-in.xml:9034(function)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8947
 msgid ""
-"_CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base class, C base "
-"class )"
+"All mentions of <varname>skeleton</varname> should be replaced by the "
+"correct name of the C library you are wrapping, such as \"something\" or "
+"\"libsomething\". In the same manner, all instances of <varname>SKELETON</"
+"varname> should be replaced by \"SOMETHING\" or \"LIBSOMETHING\", and all "
+"occurrences of <varname>Skeleton</varname> changed to \"Something\"."
 msgstr ""
-"_CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base class, C base "
-"class )"
+"Todas las menciones de <varname>skeleton</varname> deben reemplazarse por el "
+"nombre correcto de la biblioteca de C que está envolviendo, como «something» "
+"o «libsomething». De la misma manera, todas las instancias de "
+"<varname>SKELETON</varname> deben reemplazarse por «SOMETHING» o "
+"«LIBSOMETHING», y todas las apariciones de <varname>Skeleton</varname> deben "
+"cambiarse por «Something»."
 
-#: C/gtkmm-tutorial-in.xml:9036(programlisting)
-#, no-wrap
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:8951
 msgid ""
-"\n"
-"_CLASS_GOBJECT(AccelGroup, GtkAccelGroup, GTK_ACCEL_GROUP, Glib::Object, GObject)\n"
+"Likewise, replace all instances of <varname>Joe Hacker</varname> by the name "
+"of the intended copyright holder, which is probably you. Do the same for the "
+"<varname>joe example com</varname> email address."
 msgstr ""
-"\n"
-"_CLASS_GOBJECT(AccelGroup, GtkAccelGroup, GTK_ACCEL_GROUP, Glib::Object, GObject)\n"
-
-#: C/gtkmm-tutorial-in.xml:9035(para)
-msgid "For instance, from <filename>accelgroup.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>accelgroup.hg</filename>: <placeholder-1/>"
+"De la misma manera, reemplace todas las instancias de <varname>Joe Hacker</"
+"varname> por el nombre del titular de los derechos de autor, quien "
+"probablemente sea usted. Haga lo mismo para la dirección de correo-e "
+"<varname>joe example com</varname>."
 
-#: C/gtkmm-tutorial-in.xml:9043(title)
-msgid "_CLASS_GTKOBJECT"
-msgstr "_CLASS_GTKOBJECT"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:8956
+#, fuzzy
+#| msgid "<filename>libsomethingmm</filename>: The top-level directory."
+msgid "meson.build in the top-level directory"
+msgstr "<filename>libsomethingmm</filename>: la carpeta de nivel superior."
 
-#: C/gtkmm-tutorial-in.xml:9044(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8959
 msgid ""
-"This macro declares a wrapper for a type whose wrapper is derived from "
-"<classname>Gtk::Object</classname>, such as a widget or dialog."
+"It is common for binding modules to track the version number of the library "
+"they are wrapping. So, for instance, if the C library is at version 1.23.4, "
+"then the initial version of the binding module would be 1.23.0. However, "
+"avoid starting with an even minor version number as that usually indicates a "
+"stable release."
 msgstr ""
-"Esta macro declara un envoltorio para un tipo cuyo envoltorio deriva de "
-"<classname>Gtk::Object</classname>, como un widget o un diálogo."
+"Es común cuando se enlazan módulos rastrear el número de versión de la "
+"biblioteca que se está envolviendo. Entonces, por ejemplo, si la biblioteca "
+"de C está en una versión 1.23.4, el número de versión inicial del módulo de "
+"enlace sería 1.23.0. Sin embargo, evite comenzar con un número de versión "
+"menor par, ya que generalmente indica una versión estable."
 
-#: C/gtkmm-tutorial-in.xml:9046(function)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8964
 msgid ""
-"_CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base class, C "
-"base class )"
+"In the <function>project()</function> function, change the license and the C+"
+"+ version, if necessary."
 msgstr ""
-"_CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base class, C "
-"base class )"
 
-#: C/gtkmm-tutorial-in.xml:9048(programlisting)
-#, no-wrap
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8966
 msgid ""
-"\n"
-"_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Bin, GtkBin)\n"
+"You probably need to add more required modules than <application>glibmm</"
+"application> and <application>skeleton</application> "
+"(<application>libsomething</application>)."
 msgstr ""
-"\n"
-"_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Bin, GtkBin)\n"
 
-#: C/gtkmm-tutorial-in.xml:9047(para) C/gtkmm-tutorial-in.xml:9386(para)
-#: C/gtkmm-tutorial-in.xml:9447(para) C/gtkmm-tutorial-in.xml:9564(para)
-msgid "For instance, from <filename>button.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>button.hg</filename>: <placeholder-1/>"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:8974
+#, fuzzy
+#| msgid "Other methods"
+msgid "Other meson.build files"
+msgstr "Otros métodos"
 
-#: C/gtkmm-tutorial-in.xml:9052(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8977
 msgid ""
-"You will typically use this macro when the class already derives from Gtk::"
-"Object. For instance, you will use it when wrapping a GTK+ Widget, because "
-"Gtk::Widget derives from Gtk::Object."
+"<filename>skeleton/meson.build</filename>: Perhaps not much to change here "
+"more than the global name substitutions."
 msgstr ""
-"Típicamente usará esta macro cuando la clase ya derive de Gtk::Object. Por "
-"ejemplo, la usará cuando envuelva un widget de GTK+, porque Gtk::Widget "
-"deriva de Gtk::Object."
 
-#: C/gtkmm-tutorial-in.xml:9053(para)
-msgid ""
-"You might also derive non-widget classes from Gtk::Object so they can be "
-"used without <classname>Glib::RefPtr</classname>. For instance, they could "
-"then be instantiated with <function>Gtk::manage()</function> or on the stack "
-"as a member variable. This is convenient, but you should use this only when "
-"you are sure that true reference-counting is not needed. We consider it "
-"useful for widgets."
-msgstr ""
-"También podrá derivar clases que no sean widgets de Gtk::Object para que "
-"puedan usarse sin <classname>Glib::RefPtr</classname>. Por ejemplo, podrían "
-"instanciarse con <function>Gtk::manage()</function> o en la pila como una "
-"variable miembro. Esto es cómodo, pero sólo debe usarlo cuando esté seguro "
-"de que no se necesita conteo de referencias real. Se considera de utilidad "
-"para los widgets."
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8980
+msgid "<filename>skeleton/skeletonmm/meson.build</filename>"
+msgstr "<filename>skeleton/skeletonmm/meson.build</filename>"
 
-#: C/gtkmm-tutorial-in.xml:9057(title)
-msgid "_CLASS_BOXEDTYPE"
-msgstr "_CLASS_BOXEDTYPE"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:8983
+msgid "<varname>defs_basefiles</varname>"
+msgstr "<varname>defs_basefiles</varname>"
 
-#: C/gtkmm-tutorial-in.xml:9058(para)
-msgid ""
-"This macro declares a wrapper for a non-<classname>GObject</classname> "
-"struct, registered with <function>g_boxed_type_register_static()</function>."
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8984
+msgid "If we have more .defs and docs.xml files, we add them here."
 msgstr ""
-"Esta macro declara un envoltorio para una estructura que no es "
-"<classname>GObject</classname>, registrada con "
-"<function>g_boxed_type_register_static()</function>."
 
-#: C/gtkmm-tutorial-in.xml:9061(function)
-msgid ""
-"_CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, free "
-"function )"
-msgstr ""
-"_CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, free "
-"function )"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:8988
+msgid "<varname>hg_ccg_basenames</varname>"
+msgstr "<varname>hg_ccg_basenames</varname>"
 
-#: C/gtkmm-tutorial-in.xml:9063(programlisting)
-#, no-wrap
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8989
+#, fuzzy
+#| msgid ""
+#| "We must mention all of our <filename>.hg</filename> and <filename>.ccg</"
+#| "filename> files in the <filename>skeleton/src/filelist.am</filename> "
+#| "file, typically in the <varname>files_hg</varname> variable."
 msgid ""
-"\n"
-"_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n"
+"We must mention all of our <filename>.hg</filename> and <filename>.ccg</"
+"filename> files here."
 msgstr ""
-"\n"
-"_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n"
+"Se deben mencionar todos los archivos <filename>.hg</filename> y <filename>."
+"ccg</filename> en el archivo <filename>skeleton/src/filelist.am</filename>, "
+"típicamente en la variable <varname>files_hg</varname>."
 
-#: C/gtkmm-tutorial-in.xml:9062(para)
-msgid "For instance, from <classname>Gdk::RGBA</classname>: <placeholder-1/>"
-msgstr "Por ejemplo, para <classname>Gdk::RGBA</classname>: <placeholder-1/>"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:8993
+msgid "<varname>extra_cc_files, extra_h_files</varname>"
+msgstr "<varname>extra_cc_files, extra_h_files</varname>"
 
-#: C/gtkmm-tutorial-in.xml:9070(title)
-msgid "_CLASS_BOXEDTYPE_STATIC"
-msgstr "_CLASS_BOXEDTYPE_STATIC"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:8994
+msgid ""
+"Any additional hand-written <filename>.h</filename> and <filename>.cc</"
+"filename> source files go here."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:9071(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:8975
+#, fuzzy
+#| msgid ""
+#| "Next we must adapt the various <filename>Makefile.am</filename> files: "
+#| "<placeholder-1/>"
 msgid ""
-"This macro declares a wrapper for a simple assignable struct such as "
-"<classname>GdkRectangle</classname>. It is similar to "
-"<function>_CLASS_BOXEDTYPE</function>, but the C struct is not allocated "
-"dynamically."
+"Next we must adapt the other <filename>meson.build</filename> files: <_:"
+"itemizedlist-1/>"
 msgstr ""
-"Esta macro declara un envoltorio para una estructura asignable simple como "
-"<classname>GdkRectangle</classname>. Es similar a "
-"<function>_CLASS_BOXEDTYPE</function>, pero la estructura de C no se asigna "
-"dinámicamente."
+"A continuación se deben adaptar los archivos <filename>Makefile.am</"
+"filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9075(function)
-msgid "_CLASS_BOXEDTYPE_STATIC( C++ class, C class )"
-msgstr "_CLASS_BOXEDTYPE_STATIC( C++ class, C class )"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9004
+msgid "Creating .hg and .ccg files"
+msgstr "Crear archivos .hg y .ccg"
 
-#: C/gtkmm-tutorial-in.xml:9077(programlisting)
-#, no-wrap
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9005
 msgid ""
-"\n"
-"_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n"
+"We should now create our first <filename>.hg</filename> and <filename>.ccg</"
+"filename> files, to wrap one of the objects in the C library. One pair of "
+"example source files already exists: <filename>skeleton.ccg</filename> and "
+"<filename>skeleton.hg</filename>. Create copies of these files as necessary."
 msgstr ""
-"\n"
-"_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n"
+"Ahora se deben crear los primeros archivos <filename>.hg</filename> y "
+"<filename>.ccg</filename>, para envolver uno de los objetos en la biblioteca "
+"de C. Ya existen un par de archivos de fuentes de ejemplo: "
+"<filename>skeleton.ccg</filename> y <filename>skeleton.hg</filename>. Cree "
+"copias de estos archivos si es necesario."
 
-#: C/gtkmm-tutorial-in.xml:9076(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9009
 msgid ""
-"For instance, for <classname>Gdk::Rectangle</classname>: <placeholder-1/>"
+"In the <link linkend=\"sec-wrapping-hg-files\">.hg and .ccg files</link> "
+"section you can learn about the syntax used in these files."
 msgstr ""
-"Por ejemplo, para <classname>Gdk::Rectangle</classname>: <placeholder-1/>"
+"En la sección <link linkend=\"sec-wrapping-hg-files\">archivos .hg y .ccg</"
+"link> puede aprender acerca de la sintaxis usada en estos archivos."
 
-#: C/gtkmm-tutorial-in.xml:9084(title)
-msgid "_CLASS_OPAQUE_COPYABLE"
-msgstr "_CLASS_OPAQUE_COPYABLE"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:9016
+msgid "Generating the .defs files."
+msgstr "Generar los archivos .defs."
 
-#: C/gtkmm-tutorial-in.xml:9085(para)
-msgid ""
-"This macro declares a wrapper for an opaque struct that has copy and free "
-"functions. The new, copy and free functions will be used to instantiate the "
-"default constructor, copy constructor and destructor."
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9020
+msgid "objects (GObjects, widgets, interfaces, boxed-types and plain structs)"
 msgstr ""
-"Esta macro declara un envoltorio para una estructura opaca que tiene "
-"funciones «copy» y «free». Las funciones «new», «copy» y «free» se usarán "
-"para instanciar el constructor predeterminado, copiar el constructor y el "
-"destructor."
+"objetos (GObjects, widgets, interfaces, tipos en caja y estructuras planas)"
 
-#: C/gtkmm-tutorial-in.xml:9088(function)
-msgid ""
-"_CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy function, "
-"free function )"
-msgstr ""
-"_CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy function, "
-"free function )"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9021
+msgid "functions"
+msgstr "funciones"
 
-#: C/gtkmm-tutorial-in.xml:9090(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"_CLASS_OPAQUE_COPYABLE(Checksum, GChecksum, NONE, g_checksum_copy, g_checksum_free)\n"
-msgstr ""
-"\n"
-"_CLASS_OPAQUE_COPYABLE(Checksum, GChecksum, NONE, g_checksum_copy, g_checksum_free)\n"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9022
+msgid "enums"
+msgstr "enums"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9023
+msgid "signals"
+msgstr "señales"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9024
+msgid "properties"
+msgstr "propiedades"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9025
+msgid "vfuncs"
+msgstr "«vfuncs»"
 
-#: C/gtkmm-tutorial-in.xml:9089(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9017
 #, fuzzy
 #| msgid ""
-#| "For instance, for <classname>Gdk::Color</classname>: <placeholder-1/>"
+#| "The <filename>.defs</filename> files are text files, in a lisp format, "
+#| "that describe the API of a C library, including its <placeholder-1/>"
 msgid ""
-"For instance, from <classname>Glib::Checksum</classname>: <placeholder-1/>"
-msgstr "Por ejemplo, para <classname>Gdk::Color</classname>: <placeholder-1/>"
+"The <filename>.defs</filename> files are text files, in a lisp format, that "
+"describe the API of a C library, including its <_:itemizedlist-1/>"
+msgstr ""
+"Los archivos <filename>.defs</filename> son archivos de texto, en formato "
+"«lisp», que describen la API de la biblioteca de C, incluyendo sus "
+"<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9097(title)
-msgid "_CLASS_OPAQUE_REFCOUNTED"
-msgstr "_CLASS_OPAQUE_REFCOUNTED"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9034
+msgid "<filename>gtk.defs</filename>"
+msgstr "<filename>gtk.defs</filename>"
 
-#: C/gtkmm-tutorial-in.xml:9098(para)
-msgid ""
-"This macro declares a wrapper for a reference-counted opaque struct. The C++ "
-"wrapper cannot be directly instantiated and can only be used with "
-"<classname>Glib::RefPtr</classname>."
-msgstr ""
-"Esta macro declara un envoltorio para una estructura opaca con conteo de "
-"referencias. El envoltorio de C++ no puede instanciarse directamente y sólo "
-"lo puede usar <classname>Glib::RefPtr</classname>."
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9035
+msgid "Includes the other files."
+msgstr "Incluye a los otros archivos."
 
-#: C/gtkmm-tutorial-in.xml:9101(function)
-msgid ""
-"_CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref function, "
-"unref function )"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9038
+#, fuzzy
+#| msgid "gtk_methods.defs"
+msgid "<filename>gtk_methods.defs</filename>"
+msgstr "gtk_methods.defs"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9039
+msgid "Objects and functions."
+msgstr "Objetos y funciones."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9042
+msgid "<filename>gtk_enums.defs</filename>"
+msgstr "<filename>gtk_enums.defs</filename>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9043
+msgid "Enumerations."
+msgstr "Enumeraciones."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9046
+#, fuzzy
+#| msgid "gtk_signals.defs"
+msgid "<filename>gtk_signals.defs</filename>"
+msgstr "gtk_signals.defs"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9047
+msgid "Signals and properties."
+msgstr "Señales y propiedades."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9050
+msgid "<filename>gtk_vfuncs.defs</filename>"
+msgstr "<filename>gtk_vfuncs.defs</filename>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9051
+msgid "vfuncs (function pointer member fields in structs), written by hand."
 msgstr ""
-"_CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref function, "
-"unref function )"
+"«vfuncs» (campos miembro de punteros de funciones en estructuras), escritas "
+"a mano."
 
-#: C/gtkmm-tutorial-in.xml:9103(programlisting)
-#, no-wrap
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9028
+#, fuzzy
+#| msgid ""
+#| "At the moment, we have separate tools for generating different parts of "
+#| "these <filename>.defs</filename>, so we split them up into separate "
+#| "files. For instance, in the <filename>gtk/src</filename> directory of the "
+#| "<application>gtkmm</application> sources, you will find these files: "
+#| "<placeholder-1/>"
 msgid ""
-"\n"
-"_CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, 
pango_coverage_unref)\n"
+"At the moment, we have separate tools for generating different parts of "
+"these <filename>.defs</filename>, so we split them up into separate files. "
+"For instance, in the <filename>gtk/src</filename> directory of the "
+"<application>gtkmm</application> sources, you will find these files: <_:"
+"variablelist-1/>"
 msgstr ""
-"\n"
-"_CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, pango_coverage_ref, 
pango_coverage_unref)\n"
+"Por el momento, existen herramientas separadas para generar partes "
+"diferentes de estos <filename>.defs</filename>, por lo que se parten en "
+"archivos separados. Por ejemplo, en la carpeta <filename>gtk/src</filename> "
+"de las fuentes de <application>gtkmm</application>, encontrará estos "
+"archivos: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9102(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9055
 msgid ""
-"For instance, for <classname>Pango::Coverage</classname>: <placeholder-1/>"
+"The <filename>skeletonmm/tools/generate_defs_and_docs.sh</filename> script "
+"generates all <filename>.defs</filename> files and the <filename>*_docs.xml</"
+"filename> file, described in the <link linkend=\"sec-wrapping-documentation"
+"\">Documentation</link> section."
 msgstr ""
-"Por ejemplo, para <classname>Pango::Coverage</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9110(title)
-msgid "_CLASS_GENERIC"
-msgstr "_CLASS_GENERIC"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9061
+msgid "Generating the methods .defs"
+msgstr "Generar los .defs de métodos"
 
-#: C/gtkmm-tutorial-in.xml:9111(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9062
+#, fuzzy
+#| msgid ""
+#| "This <filename>.defs</filename> file describes objects and their "
+#| "functions. It is generated by the <command>h2def.py</command> script "
+#| "which you can find in glibmm's <filename>tools/defs_gen</filename> "
+#| "directory. For instance, <placeholder-1/>"
 msgid ""
-"This macro can be used to wrap structs which don't fit into any specialized "
-"category."
+"This <filename>.defs</filename> file describes objects and their functions. "
+"It is generated by the <command>h2def.py</command> script which you can find "
+"in glibmm's <filename>tools/defs_gen</filename> directory. For instance,"
 msgstr ""
-"Esta macro puede usarse para envolver estructuras que no se ajustan a "
-"ninguna categoría especializada."
-
-#: C/gtkmm-tutorial-in.xml:9113(function)
-msgid "_CLASS_GENERIC( C++ class, C class )"
-msgstr "_CLASS_GENERIC( C++ class, C class )"
+"Este archivo <filename>.defs</filename> describe a los objetos y a sus "
+"funciones. Se genera mediante el script <command>h2def.py</command> que "
+"puede encontrar en la carpeta <filename>tools/defs_gen</filename> de glibmm. "
+"Por ejemplo, <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9115(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:9066
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "$ ./h2def.py /usr/include/gtk-3.0/gtk/*.h &gt; gtk_methods.defs\n"
 msgid ""
 "\n"
-"_CLASS_GENERIC(AttrIter, PangoAttrIterator)\n"
+"$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h &gt; gtk_methods.defs\n"
 msgstr ""
 "\n"
-"_CLASS_GENERIC(AttrIter, PangoAttrIterator)\n"
-
-#: C/gtkmm-tutorial-in.xml:9114(para)
-msgid ""
-"For instance, for <classname>Pango::AttrIter</classname>: <placeholder-1/>"
-msgstr ""
-"Por ejemplo, para <classname>Pango::AttrIter</classname>: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:9122(title)
-msgid "_CLASS_INTERFACE"
-msgstr "_CLASS_INTERFACE"
+"$ ./h2def.py /usr/include/gtk-4.0/gtk/*.h &gt; gtk_methods.defs\n"
 
-#: C/gtkmm-tutorial-in.xml:9123(para)
-msgid ""
-"This macro declares a wrapper for a type that is derived from "
-"<classname>GTypeInterface</classname>."
-msgstr ""
-"Esta macro declara un envoltorio para un tipo que deriva de "
-"<classname>GTypeInterface</classname>."
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9072
+msgid "Generating the enums .defs"
+msgstr "Generar los .defs de enumeraciones"
 
-#: C/gtkmm-tutorial-in.xml:9126(function)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9073
+#, fuzzy
+#| msgid ""
+#| "This <filename>.defs</filename> file describes enum types and their "
+#| "possible values. It is generated by the <filename>enum.pl</filename> "
+#| "script which you can find in glibmm's <filename>tools</filename> "
+#| "directory. For instance, <placeholder-1/>"
 msgid ""
-"_CLASS_INTERFACE( C++ class, C class, C casting macro, C interface struct, "
-"Base C++ class (optional), Base C class (optional) )"
+"This <filename>.defs</filename> file describes enum types and their possible "
+"values. It is generated by the <filename>enum.pl</filename> script which you "
+"can find in glibmm's <filename>tools</filename> directory. For instance,"
 msgstr ""
-"_CLASS_INTERFACE( C++ class, C class, C casting macro, C interface struct, "
-"Base C++ class (optional), Base C class (optional) )"
+"Este archivo <filename>.defs</filename> describe a los tipos de "
+"enumeraciones y a sus valores posibles. Se genera mediante el script "
+"<filename>enum.pl</filename> que puede encontrar en la carpeta "
+"<filename>tools</filename> de glibmm. Por ejemplo, <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9129(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:9077
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "$ ./enum.pl /usr/include/gtk-3.0/gtk/*.h &gt; gtk_enums.defs\n"
 msgid ""
 "\n"
-"_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n"
+"$ ./enum.pl /usr/include/gtk-4.0/gtk/*.h &gt; gtk_enums.defs\n"
 msgstr ""
 "\n"
-"_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n"
+"$ ./enum.pl /usr/include/gtk-4.0/gtk/*.h &gt; gtk_enums.defs\n"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9083
+msgid "Generating the signals and properties .defs"
+msgstr "Generar los .defs de señales y propiedades"
 
-#: C/gtkmm-tutorial-in.xml:9127(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9084
+#, fuzzy
+#| msgid ""
+#| "This <filename>.defs</filename> file describes signals and properties. It "
+#| "is generated by the special <filename>extra_defs</filename> utility that "
+#| "is in every wrapping project, such as <filename>gtkmm/tools/"
+#| "extra_defs_gen/</filename>. For instance <placeholder-1/>"
 msgid ""
-"For instance, from <filename>celleditable.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>celleditable.hg</filename>: <placeholder-1/>"
+"This <filename>.defs</filename> file describes signals and properties. It is "
+"generated by the special <filename>generate_extra_defs</filename> utility "
+"that is in every wrapping project, such as <filename>gtkmm/tools/"
+"extra_defs_gen/</filename>. For instance"
+msgstr ""
+"Este archivo <filename>.defs</filename> describe las señales y propiedades. "
+"Se genera mediante la utilidad especial <filename>extra_defs</filename> que "
+"está en todos los proyectos de envoltorios, como <filename>gtkmm/tools/"
+"extra_defs_gen/</filename>. Por ejemplo, <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9136(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:9089
 #, no-wrap
 msgid ""
 "\n"
-"_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n"
+"$ cd tools/extra_defs_gen\n"
+"$ ./generate_extra_defs &gt; gtk_signals.defs\n"
 msgstr ""
 "\n"
-"_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n"
+"$ cd tools/extra_defs_gen\n"
+"$ ./generate_extra_defs &gt; gtk_signals.defs\n"
 
-#: C/gtkmm-tutorial-in.xml:9133(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9093
 #, fuzzy
 #| msgid ""
-#| "Two extra parameters are optional, for the case that the interface "
-#| "derives from another interface, which should be the case when the "
-#| "GInterface has another GInterface as a prerequisitite. For instance, from "
-#| "<filename>loadableicon.hg</filename>: <placeholder-1/>"
+#| "You must edit the source code of your own <filename>generate_extra_defs</"
+#| "filename> tool in order to generate the <filename>.defs</filename> for "
+#| "the GObject C types that you wish to wrap. In the skeleton source tree, "
+#| "the source file is named <filename>codegen/extradefs/"
+#| "generate_extra_defs_skeleton.cc</filename>. If not done so already, the "
+#| "file should be renamed, with the basename of your new binding substituted "
+#| "for the <varname>skeleton</varname> placeholder. The <filename>codegen/"
+#| "Makefile.am</filename> file should also mention the new source filename."
 msgid ""
-"Two extra parameters are optional, for the case that the interface derives "
-"from another interface, which should be the case when the GInterface has "
-"another GInterface as a prerequisite. For instance, from "
-"<filename>loadableicon.hg</filename>: <placeholder-1/>"
+"You must edit the source code of your own <filename>generate_extra_defs</"
+"filename> tool in order to generate the <filename>.defs</filename> for the "
+"GObject C types that you wish to wrap. In the skeleton source tree, the "
+"source file is named <filename>tools/extra_defs_gen/generate_defs_skeleton."
+"cc</filename>. If not done so already, the file should be renamed, with the "
+"basename of your new binding substituted for the <varname>skeleton</varname> "
+"placeholder. The <filename>tools/extra_defs_gen/meson.build</filename> file "
+"should also mention the new source filename."
 msgstr ""
-"Hay dos parámetros adicionales opcionales, para el caso de que la interfaz "
-"derive de otra interfaz, que debe ser cuando la «GInterface» tenga otra "
-"«GInterface» como requisito previo. Por ejemplo, de <filename>loadableicon."
-"hg</filename>: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:9145(title)
-msgid "Constructor macros"
-msgstr "Macros de constructores"
+"Debe editar el código fuente de su herramienta "
+"<filename>generate_extra_defs</filename> para generar los <filename>.defs</"
+"filename> para los tipos GObject de C que desea envolver. En el árbol de "
+"fuentes esqueleto, el archivo de fuentes se llama <filename>codegen/"
+"extradefs/generate_extra_defs_skeleton.cc</filename>. Si no lo ha hecho "
+"todavía, debe renombrar el archivo, con el nombre de base de su enlace nuevo "
+"sustituyendo a la marca de posición <varname>skeleton</varname>. El archivo "
+"<filename>codegen/Makefile.am</filename> también debe mencionar el nombre "
+"del archivo de fuentes nuevo."
 
-#: C/gtkmm-tutorial-in.xml:9146(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9100
+#, fuzzy
+#| msgid ""
+#| "Then edit the <filename>.cc</filename> file to specify the correct types. "
+#| "For instance, your <function>main()</function> function might look like "
+#| "this: <placeholder-1/>"
 msgid ""
-"The <function>_CTOR_DEFAULT()</function> and <function>_WRAP_CTOR()</"
-"function> macros add constructors, wrapping the specified <function>*_new()</"
-"function> C functions. These macros assume that the C object has properties "
-"with the same names as the function parameters, as is usually the case, so "
-"that it can supply the parameters directly to a <function>g_object_new()</"
-"function> call. These constructors never actually call the "
-"<function>*_new()</function> C functions, because gtkmm must actually "
-"instantiate derived GTypes, and the <function>*_new()</function> C functions "
-"are meant only as convenience functions for C programmers."
+"Then edit the <filename>.cc</filename> file to specify the correct types. "
+"For instance, your <function>main()</function> function might look like this:"
 msgstr ""
-"Las macros <function>_CTOR_DEFAULT()</function> y <function>_WRAP_CTOR()</"
-"function> añaden constructores, envolviendo las funciones de C "
-"<function>*_new()</function> especificadas. Estas macros asumen que el "
-"objeto de C tiene propiedades con los mismos nombres que los parámetros de "
-"función, como es usual, para que pueda proporcionar los parámetros "
-"directamente a una llamada de <function>g_object_new()</function>. Estos "
-"constructores nunca llaman realmente a funciones de C <function>*_new()</"
-"function>, porque gtkmm debe en realidad instanciar «GTypes» derivados, y "
-"las funciones <function>*_new()</function> de C sólo están pensadas como "
-"funciones cómodas para programadores de C."
+"Después edite el archivo <filename>.cc</filename> para especificar los tipos "
+"correctos. Por ejemplo, su función <function>main()</function> podría verse "
+"así: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9161(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:9103
 #, no-wrap
-msgid ""
+#| msgid ""
+#| "\n"
+#| "#include &lt;libsomething.h&gt;\n"
+#| "\n"
+#| "int main(int, char**)\n"
+#| "{\n"
+#| "  something_init();\n"
+#| "\n"
+#| "  std::cout &lt;&lt; get_defs(SOME_TYPE_WIDGET)\n"
+#| "            &lt;&lt; get_defs(SOME_TYPE_STUFF);\n"
+#| "  return 0;\n"
+#| "}\n"
+msgid ""
+"\n"
+"#include &lt;glibmm_generate_extra_defs/generate_extra_defs.h&gt;\n"
+"#include &lt;libsomething.h&gt;\n"
+"#include &lt;iostream&gt;\n"
 "\n"
-"class TextMark : public Glib::Object\n"
+"int main(int, char**)\n"
 "{\n"
-"  _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)\n"
-"\n"
-"protected:\n"
-"  _WRAP_CTOR(TextMark(const Glib::ustring&amp; name, bool left_gravity = true), gtk_text_mark_new)\n"
+"  something_init();\n"
 "\n"
-"public:\n"
-"  _WRAP_CREATE(const Glib::ustring&amp; name, bool left_gravity = true)\n"
+"  std::cout &lt;&lt; get_defs(SOME_TYPE_WIDGET)\n"
+"            &lt;&lt; get_defs(SOME_TYPE_STUFF);\n"
+"  return 0;\n"
+"}\n"
 msgstr ""
 "\n"
-"class TextMark : public Glib::Object\n"
-"{\n"
-"  _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)\n"
+"#include &lt;glibmm_generate_extra_defs/generate_extra_defs.h&gt;\n"
+"#include &lt;libsomething.h&gt;\n"
+"#include &lt;iostream&gt;\n"
 "\n"
-"protected:\n"
-"  _WRAP_CTOR(TextMark(const Glib::ustring&amp; name, bool left_gravity = true), gtk_text_mark_new)\n"
+"int main(int, char**)\n"
+"{\n"
+"  something_init();\n"
 "\n"
-"public:\n"
-"  _WRAP_CREATE(const Glib::ustring&amp; name, bool left_gravity = true)\n"
+"  std::cout &lt;&lt; get_defs(SOME_TYPE_WIDGET)\n"
+"            &lt;&lt; get_defs(SOME_TYPE_STUFF);\n"
+"  return 0;\n"
+"}\n"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9120
+msgid "Writing the vfuncs .defs"
+msgstr "Escribir los .defs de las «vfuncs»"
 
-#: C/gtkmm-tutorial-in.xml:9156(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9121
+#, fuzzy
+#| msgid ""
+#| "This <filename>.defs</filename> file describes virtual functions "
+#| "(vfuncs). It must be written by hand. There is no skeleton to start from. "
+#| "You can look at <application>gtkmm</application>'s <filename>gtk/src/"
+#| "gtk_vfuncs.defs</filename> file."
 msgid ""
-"When using <function>_CLASS_GOBJECT()</function>, the constructors should be "
-"protected (rather than public) and each constructor should have a "
-"corresponding <function>_WRAP_CREATE()</function> in the public section. "
-"This prevents the class from being instantiated without using a "
-"<classname>RefPtr</classname>. For instance: <placeholder-1/>"
+"This <filename>.defs</filename> file describes virtual functions (vfuncs). "
+"It must be written by hand. There is the skeleton file <filename>skeleton/"
+"src/skeleton_vfunc.defs</filename> to start from. You can also look at "
+"<application>gtkmm</application>'s <filename>gtk/src/gtk_vfuncs.defs</"
+"filename> file."
 msgstr ""
-"Cuando use <function>_CLASS_GOBJECT()</function>, los constructores deben "
-"declararse protegidos (en lugar de públicos) y cada constructor debe tener "
-"un <function>_WRAP_CREATE()</function> correspondiente en la sección "
-"pública. Esto evita que la clase se instancie sin usar un <classname>RefPtr</"
-"classname>. Por ejemplo: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:9176(para)
-msgid "This macro creates a default constructor with no arguments."
-msgstr "Esta macro crea un constructor predeterminado sin argumentos."
+"Este archivo <filename>.defs</filename> describe a las funciones virtuales "
+"(«vfuncs»). Debe escribirse a mano. No hay un esqueleto del que empezar. "
+"Puede echar un vistazo al archivo <filename>gtk/src/gtk_vfuncs.defs</"
+"filename> de <application>gtkmm</application>."
 
-#: C/gtkmm-tutorial-in.xml:9181(title)
-msgid "_WRAP_CTOR"
-msgstr "_WRAP_CTOR"
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:9132
+msgid "The .hg and .ccg files"
+msgstr "Los archivos .hg y .ccg"
 
-#: C/gtkmm-tutorial-in.xml:9182(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9133
 msgid ""
-"This macro creates a constructor with arguments, equivalent to a "
-"<function>*_new()</function> C function. It won't actually call the "
-"<function>*_new()</function> function, but will simply create an equivalent "
-"constructor with the same argument types. It takes a C++ constructor "
-"signature, and a C function name."
+"The .hg and .ccg source files are very much like .h and .cc C++ source "
+"files, but they contain extra macros, such as <function>_CLASS_GOBJECT()</"
+"function> and <function>_WRAP_METHOD()</function>, from which "
+"<command>gmmproc</command> generates appropriate C++ source code, usually at "
+"the same position in the header. Any additional C++ source code will be "
+"copied verbatim into the corresponding .h or .cc file."
 msgstr ""
-"Esta macro crea un constructor con argumentos, equivalente a una función de "
-"C <function>*_new()</function>. En realidad no llamará a la función "
-"<function>*_new()</function>, sino que simplemente creará un constructor "
-"equivalente con los mismos tipos de argumentos. Toma una firma de "
-"constructor de C++ y un nombre de función de C."
-
-#: C/gtkmm-tutorial-in.xml:9192(term) C/gtkmm-tutorial-in.xml:9251(term)
-#: C/gtkmm-tutorial-in.xml:9487(term)
-msgid "errthrow"
-msgstr "errthrow"
+"Los archivos de fuentes .hg y .ccg se parecen mucho a los archivos de "
+"fuentes .h y .cc de C++, pero contienen macros adicionales, como "
+"<function>_CLASS_GOBJECT()</function> y <function>_WRAP_METHOD()</function>, "
+"desde las que <command>gmmproc</command> genera código fuente de C++ "
+"apropiado, generalmente en la misma posición en la cabecera. Cualquier "
+"código fuente adicional de C++ se copiará tal cual en el archivo .h o .cc "
+"correspondiente."
 
-#: C/gtkmm-tutorial-in.xml:9194(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9141
+#, fuzzy
+#| msgid ""
+#| "A .hg file will typically include some headers and then declare a class, "
+#| "using some macros to add API or behaviour to this class. For instance, "
+#| "gtkmm's <filename>button.hg</filename> looks roughly like this: "
+#| "<placeholder-1/>"
 msgid ""
-"This tells gmmproc that the C <function>*_new()</function> has a final "
-"GError** parameter which should be ignored."
+"A .hg file will typically include some headers and then declare a class, "
+"using some macros to add API or behaviour to this class. For instance, "
+"<application>gtkmm</application>'s <filename>button.hg</filename> looks "
+"roughly like this:"
 msgstr ""
-"Esto le dice a gmmproc que el <function>*_new()</function> de C tiene un "
-"parámetro GError** final que debe ignorarse."
-
-#: C/gtkmm-tutorial-in.xml:9189(para)
-msgid "It also takes an optional extra argument: <placeholder-1/>"
-msgstr "También toma un argumento opcional adicional: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:9203(title)
-msgid "Hand-coding constructors"
-msgstr "Escribir constructores a mano"
+"Un archivo .hg típicamente incluirá algunas cabeceras y luego declarará una "
+"clase, usando algunas macros para añadir una API o comportamiento a esta "
+"clase. Por ejemplo, el <filename>button.hg</filename> de gtkmm se ve más o "
+"menos así: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9212(programlisting)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:9146
 #, no-wrap
-msgid ""
+#| msgid ""
+#| "\n"
+#| "#include &lt;gtkmm/bin.h&gt;\n"
+#| "#include &lt;gtkmm/activatable.h&gt;\n"
+#| "_DEFS(gtkmm,gtk)\n"
+#| "_PINCLUDE(gtkmm/private/bin_p.h)\n"
+#| "\n"
+#| "namespace Gtk\n"
+#| "{\n"
+#| "\n"
+#| "class Button\n"
+#| "  : public Bin,\n"
+#| "    public Activatable\n"
+#| "{\n"
+#| "  _CLASS_GTKOBJECT(Button,GtkButton,GTK_BUTTON,Gtk::Bin,GtkBin)\n"
+#| "  _IMPLEMENTS_INTERFACE(Activatable)\n"
+#| "public:\n"
+#| "\n"
+#| "  _CTOR_DEFAULT\n"
+#| "  explicit Button(const Glib::ustring&amp; label, bool mnemonic = false);\n"
+#| "\n"
+#| "  _WRAP_METHOD(void set_label(const Glib::ustring&amp; label), gtk_button_set_label)\n"
+#| "\n"
+#| "  ...\n"
+#| "\n"
+#| "  _WRAP_SIGNAL(void clicked(), \"clicked\")\n"
+#| "\n"
+#| "  ...\n"
+#| "\n"
+#| "  _WRAP_PROPERTY(\"label\", Glib::ustring)\n"
+#| "};\n"
+#| "\n"
+#| "} // namespace Gtk\n"
+msgid ""
+"\n"
+"#include &lt;gtkmm/widget.h&gt;\n"
+"#include &lt;gtkmm/actionable.h&gt;\n"
+"_DEFS(gtkmm,gtk)\n"
+"_PINCLUDE(gtkmm/private/widget_p.h)\n"
 "\n"
-"Button::Button(const Glib::ustring&amp; label, bool mnemonic)\n"
-":\n"
-"  _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n"
-"{}\n"
-msgstr ""
+"namespace Gtk\n"
+"{\n"
 "\n"
-"Button::Button(const Glib::ustring&amp; label, bool mnemonic)\n"
-":\n"
-"  _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n"
-"{}\n"
-
-#: C/gtkmm-tutorial-in.xml:9204(para)
-msgid ""
-"When a constructor must be partly hand written because, for instance, the "
-"<function>*_new()</function> C function's parameters do not correspond "
-"directly to object properties, or because the <function>*_new()</function> C "
-"function does more than call <function>g_object_new()</function>, the "
-"<function>_CONSTRUCT()</function> macro may be used in the .ccg file to save "
-"some work. The <function>_CONSTRUCT</function> macro takes a series of "
-"property names and values. For instance, from <filename>button.ccg</"
-"filename>: <placeholder-1/>"
-msgstr ""
-"Cuando un constructor debe escribirse a mano parcialmente porque, por "
-"ejemplo, los parámetros de la función de C <function>*_new()</function> no "
-"corresponden directamente a las propiedades del objeto, o porque la función "
-"de C <function>*_new()</function> hace más que llamar a "
-"<function>g_object_new()</function>, la macro <function>_CONSTRUCT()</"
-"function> se puede usar en el archivo .ccg para ahorrar trabajo. La macro "
-"<function>_CONSTRUCT()</function> toma una serie de nombres y valores de "
-"propiedades. Por ejemplo, de <filename>button.ccg</filename>: <placeholder-1/"
-">"
-
-#: C/gtkmm-tutorial-in.xml:9224(title)
-msgid "Method macros"
-msgstr "Macros de métodos"
-
-#: C/gtkmm-tutorial-in.xml:9227(title)
-msgid "_WRAP_METHOD"
-msgstr "_WRAP_METHOD"
-
-#: C/gtkmm-tutorial-in.xml:9228(para)
-msgid "This macro generates the C++ method to wrap a C function."
-msgstr "Esta macro genera el método de C++ para envolver una función de C."
-
-#: C/gtkmm-tutorial-in.xml:9229(function)
-msgid "_WRAP_METHOD( C++ method signature, C function name)"
-msgstr "_WRAP_METHOD( C++ method signature, C function name)"
-
-#: C/gtkmm-tutorial-in.xml:9231(programlisting)
-#, no-wrap
-msgid ""
+"class Button\n"
+"  : public Widget,\n"
+"    public Actionable\n"
+"{\n"
+"  _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n"
+"  _IMPLEMENTS_INTERFACE(Actionable)\n"
+"public:\n"
 "\n"
-"_WRAP_METHOD(void set_text(const Glib::ustring&amp; text), gtk_entry_set_text)\n"
+"  _CTOR_DEFAULT\n"
+"  explicit Button(const Glib::ustring&amp; label, bool mnemonic = false);\n"
+"\n"
+"  _WRAP_METHOD(void set_label(const Glib::ustring&amp; label), gtk_button_set_label)\n"
+"\n"
+"  ...\n"
+"\n"
+"  _WRAP_SIGNAL(void clicked(), \"clicked\")\n"
+"\n"
+"  ...\n"
+"\n"
+"  _WRAP_PROPERTY(\"label\", Glib::ustring)\n"
+"};\n"
+"\n"
+"} // namespace Gtk\n"
 msgstr ""
 "\n"
-"_WRAP_METHOD(void set_text(const Glib::ustring&amp; text), gtk_entry_set_text)\n"
+"#include &lt;gtkmm/widget.h&gt;\n"
+"#include &lt;gtkmm/actionable.h&gt;\n"
+"_DEFS(gtkmm,gtk)\n"
+"_PINCLUDE(gtkmm/private/widget_p.h)\n"
+"\n"
+"namespace Gtk\n"
+"{\n"
+"\n"
+"class Button\n"
+"  : public Widget,\n"
+"    public Actionable\n"
+"{\n"
+"  _CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n"
+"  _IMPLEMENTS_INTERFACE(Actionable)\n"
+"public:\n"
+"\n"
+"  _CTOR_DEFAULT\n"
+"  explicit Button(const Glib::ustring&amp; label, bool mnemonic = false);\n"
+"\n"
+"  _WRAP_METHOD(void set_label(const Glib::ustring&amp; label), gtk_button_set_label)\n"
+"\n"
+"  ...\n"
+"\n"
+"  _WRAP_SIGNAL(void clicked(), \"clicked\")\n"
+"\n"
+"  ...\n"
+"\n"
+"  _WRAP_PROPERTY(\"label\", Glib::ustring)\n"
+"};\n"
+"\n"
+"} // namespace Gtk\n"
 
-#: C/gtkmm-tutorial-in.xml:9230(para)
-msgid "For instance, from <filename>entry.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>entry.hg</filename>: <placeholder-1/>"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9182
+msgid "<function>_DEFS()</function>"
+msgstr "<function>_DEFS()</function>"
 
-#: C/gtkmm-tutorial-in.xml:9235(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9183
 msgid ""
-"The C function (e.g. <function>gtk_entry_set_text</function>) is described "
-"more fully in the .defs file, and the <filename>convert*.m4</filename> files "
-"contain the necessary conversion from the C++ parameter type to the C "
-"parameter type. This macro also generates doxygen documentation comments "
-"based on the <filename>*_docs.xml</filename> and <filename>*_docs_override."
-"xml</filename> files."
+"Specifies the destination directory for generated sources, and the name of "
+"the main .defs file that <command>gmmproc</command> should parse."
 msgstr ""
-"La función de C (por ejemplo, <function>gtk_entry_set_text</function>) se "
-"describe en mayor detalle en el archivo .defs, y los archivos "
-"<filename>convert*.m4</filename> contienen la conversión necesaria del tipo "
-"de parámetro de C++ al tipo de C. Esta macro también genera comentarios de "
-"documentación de Doxygen basados en los archivos <filename>*_docs.xml</"
-"filename> y <filename>*_docs_override.xml</filename>."
-
-#: C/gtkmm-tutorial-in.xml:9244(term) C/gtkmm-tutorial-in.xml:9423(term)
-#: C/gtkmm-tutorial-in.xml:9470(term)
-msgid "refreturn"
-msgstr "refreturn"
+"Especifica la carpeta de destino para las fuentes generadas, y el nombre del "
+"archivo .defs principal que <command>gmmproc</command> debe procesar."
 
-#: C/gtkmm-tutorial-in.xml:9246(para)
-msgid ""
-"Do an extra <function>reference()</function> on the return value, in case "
-"the C function does not provide a reference."
-msgstr ""
-"Hace una <function>reference()</function> adicional en el valor de retorno, "
-"en el caso de que la función de C no proporcione una referencia."
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9186
+msgid "<function>_PINCLUDE()</function>"
+msgstr "<function>_PINCLUDE()</function>"
 
-#: C/gtkmm-tutorial-in.xml:9253(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9187
+#, fuzzy
+#| msgid ""
+#| "Tells <command>gmmproc</command> to include a header from the generated "
+#| "private/button_p.h file."
 msgid ""
-"Use the last GError** parameter of the C function to throw an exception."
+"Tells <command>gmmproc</command> to include a header in the generated "
+"<filename>private/button_p.h</filename> file."
 msgstr ""
-"Usa el último parámetro GError** de la función de C para lanzar una "
-"excepción."
+"Le dice a <command>gmmproc</command> que incluya una cabecera desde el "
+"archivo private/button_p.h generado."
 
-#: C/gtkmm-tutorial-in.xml:9258(term)
-msgid "deprecated"
-msgstr "deprecated"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9190
+#| msgid "_CLASS_GTKOBJECT()"
+msgid "<function>_CLASS_GTKOBJECT()</function>"
+msgstr "<function>_CLASS_GTKOBJECT()</function>"
 
-#: C/gtkmm-tutorial-in.xml:9260(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9191
 msgid ""
-"Puts the generated code in #ifdef blocks. Text about the deprecation can be "
-"specified as an optional parameter."
+"Tells <command>gmmproc</command> to add some typedefs, constructors, and "
+"standard methods to this class, as appropriate when wrapping a widget."
 msgstr ""
-"Pone el código generado en bloques #ifdef. El texto que explica por qué se "
-"marca como obsoleto puede especificarse como un parámetro opcional."
+"Le dice a <command>gmmproc</command> que añada algunos «typedefs», "
+"constructores, y métodos estándar a esta clase, como es apropiado cuando se "
+"envuelve un widget."
 
-#: C/gtkmm-tutorial-in.xml:9266(term)
-msgid "constversion"
-msgstr "constversion"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9194
+#| msgid "_IMPLEMENTS_INTERFACE()"
+msgid "<function>_IMPLEMENTS_INTERFACE()</function>"
+msgstr "<function>_IMPLEMENTS_INTERFACE()</function>"
 
-#: C/gtkmm-tutorial-in.xml:9268(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9195
 msgid ""
-"Just call the non-const version of the same function, instead of generating "
-"almost duplicate code."
+"Tells <command>gmmproc</command> to add initialization code for the "
+"interface."
 msgstr ""
-"Sólo llama a la versión no constante de la misma función, en lugar de "
-"generar código casi duplicado."
-
-#: C/gtkmm-tutorial-in.xml:9273(term) C/gtkmm-tutorial-in.xml:9431(term)
-#: C/gtkmm-tutorial-in.xml:9509(term) C/gtkmm-tutorial-in.xml:9572(term)
-msgid "ifdef"
-msgstr "ifdef"
+"Le dice a <command>gmmproc</command> que añada código de inicialización para "
+"la interfaz."
 
-#: C/gtkmm-tutorial-in.xml:9275(para) C/gtkmm-tutorial-in.xml:9433(para)
-#: C/gtkmm-tutorial-in.xml:9511(para) C/gtkmm-tutorial-in.xml:9574(para)
-msgid "Puts the generated code in #ifdef blocks."
-msgstr "Pone el código generado en bloques #ifdef."
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9198
+msgid "<function>_CTOR_DEFAULT</function>"
+msgstr "<function>_CTOR_DEFAULT</function>"
 
-#: C/gtkmm-tutorial-in.xml:9279(term) C/gtkmm-tutorial-in.xml:9515(term)
-msgid "slot_name"
-msgstr "slot_name"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9199
+#, fuzzy
+#| msgid "Add a default constructor."
+msgid "Adds a default constructor."
+msgstr "Añadir un constructor predeterminado."
 
-#: C/gtkmm-tutorial-in.xml:9281(para) C/gtkmm-tutorial-in.xml:9517(para)
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9202
 msgid ""
-"Specifies the name of the slot parameter of the method, if it has one. This "
-"enables <command>gmmproc</command> to generate code to copy the slot and "
-"pass the copy on to the C function in its final <literal>gpointer user_data</"
-"literal> parameter. The <literal>slot_callback</literal> option must also be "
-"used to specify the name of the glue callback function to also pass on to "
-"the C function."
+"<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, "
+"and <function>_WRAP_PROPERTY()</function>"
 msgstr ""
-"Especifica el nombre del parámetro «slot» del método, si tiene uno. Esto le "
-"permite a <command>gmmproc</command> generar código para copiar el «slot» y "
-"pasarle la copia a la función de C en su parámetro <literal>gpointer "
-"user_data</literal> final. La opción <literal>slot_callback</literal> "
-"también debe usarse para especificar el nombre de la función de devolución "
-"de llamada adhesiva que pasar a la función de C."
+"<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, y "
+"<function>_WRAP_PROPERTY()</function>"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9205
+msgid "Add methods to wrap parts of the C API."
+msgstr "Añadir métodos para envolver las partes de la API de C."
 
-#: C/gtkmm-tutorial-in.xml:9291(term) C/gtkmm-tutorial-in.xml:9527(term)
-msgid "slot_callback"
-msgstr "slot_callback"
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9179
+#, fuzzy
+#| msgid "The macros in this example do the following: <placeholder-1/>"
+msgid "The macros in this example do the following: <_:variablelist-1/>"
+msgstr "Las macros en este ejemplo hacen lo siguiente: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9293(para) C/gtkmm-tutorial-in.xml:9529(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9209
+#, fuzzy
+#| msgid ""
+#| "The .h and .cc files will be generated from the .hg and .ccg files by "
+#| "processing them with <command>gmmproc</command> like so, though this "
+#| "happens automatically when using the above build structure: "
+#| "<placeholder-1/>"
 msgid ""
-"Used in conjunction with the <literal>slot_name</literal> option to specify "
-"the name of the glue callback function that handles extracting the slot and "
-"then calling it. The address of this callback is also passed on to the C "
-"function that the method wraps."
+"The .h and .cc files will be generated from the .hg and .ccg files by "
+"processing them with <command>gmmproc</command> like so, though this happens "
+"automatically when using the above build structure:"
 msgstr ""
-"Usado junto con la opción <literal>slot_name</literal> para especificar el "
-"nombre de la función de devolución de llamada adhesiva que maneja la "
-"extracción del «slot» y su llamada. La dirección de esta devolución de "
-"llamada también se pasa a la función de C que el método envuelve."
-
-#: C/gtkmm-tutorial-in.xml:9301(term) C/gtkmm-tutorial-in.xml:9537(term)
-msgid "no_slot_copy"
-msgstr "no_slot_copy"
+"Los archivos .h y .cc se generarán desde los archivos .hg y .ccg "
+"procesándolos con <command>gmmproc</command> así, aunque esto sucede "
+"automáticamente cuando usa la estructura de construcción anteriormente "
+"mencionada: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9303(para) C/gtkmm-tutorial-in.xml:9539(para)
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:9213
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "$ cd gtk/src\n"
+#| "$ /usr/lib/glibmm-2.4/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n"
 msgid ""
-"Tells <command>gmmproc</command> not to pass a copy of the slot to the C "
-"function, if the method has one. Instead the slot itself is passed. The slot "
-"parameter name and the glue callback function must have been specified with "
-"the <literal>slot_name</literal> and <literal>slot_callbback</literal> "
-"options respectively."
+"\n"
+"$ cd gtk/src\n"
+"$ /usr/lib/glibmm-2.68/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n"
 msgstr ""
-"Le dice a <command>gmmproc</command> que no le pase una copia del «slot» a "
-"la función de C, si el método tiene una. En su lugar, se pasa el «slot» en "
-"sí. El nombre del parámetro «slot» y la función de devolución de llamada "
-"adhesiva deben haberse especificado con las opciones <literal>slot_name</"
-"literal> y <literal>slot_callbback</literal> respectivamente."
-
-#: C/gtkmm-tutorial-in.xml:9241(para) C/gtkmm-tutorial-in.xml:9394(para)
-#: C/gtkmm-tutorial-in.xml:9467(para)
-msgid "There are some optional extra arguments: <placeholder-1/>"
-msgstr "Hay algunos argumentos opcionales adicionales: <placeholder-1/>"
+"\n"
+"$ cd gtk/src\n"
+"$ /usr/lib/glibmm-2.68/proc/gmmproc -I ../../tools/m4 --defs . button . ./../gtkmm\n"
 
-#: C/gtkmm-tutorial-in.xml:9316(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9217
 msgid ""
-"Objects used via <classname>RefPtr</classname>: Pass the <classname>RefPtr</"
-"classname> as a const reference. For instance, <code>const Glib::RefPtr&lt;"
-"Gtk::FileFilter&gt;&amp; filter</code>."
+"Notice that we provided <command>gmmproc</command> with the path to the .m4 "
+"convert files, the path to the .defs file, the name of a .hg file, the "
+"source directory, and the destination directory."
 msgstr ""
-"Objetos usados a través de <classname>RefPtr</classname>: pase el "
-"<classname>RefPtr</classname> como una referencia constante. Por ejemplo, "
-"<code>const Glib::RefPtr&lt;Gtk::FileFilter&gt;&amp; filter</code>."
+"Tenga en cuenta que se le proporcionó a <command>gmmproc</command> la ruta "
+"de los archivos de conversión .m4, la ruta del archivo .defs, el nombre de "
+"un archivo .hg, la carpeta de las fuentes, y la carpeta de destino."
 
-#: C/gtkmm-tutorial-in.xml:9320(para)
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9220
 msgid ""
-"Const Objects used via <classname>RefPtr</classname>: If the object should "
-"not be changed by the function, then make sure that the object is const, "
-"even if the <classname>RefPtr</classname> is already const. For instance, "
-"<code>const Glib::RefPtr&lt;const Gtk::FileFilter&gt;&amp; filter</code>."
+"You should avoid including the C header from your C++ header, to avoid "
+"polluting the global namespace, and to avoid exporting unnecessary public "
+"API. But you will need to include the necessary C headers from your .ccg "
+"file."
 msgstr ""
-"Objetos constantes usados a través de <classname>RefPtr</classname>: si la "
-"función no debe cambiar el objeto, asegúrese de que el objeto es constante, "
-"incluso si el <classname>RefPtr</classname> ya lo es. Por ejemplo, "
-"<code>const Glib::RefPtr&lt;const Gtk::FileFilter&gt;&amp; filter</code>."
+"Debe evitar incluir la cabecera de C desde su cabecera de C++, para evitar "
+"contaminar el espacio de nombres global, y para evitar exportar API pública "
+"innecesaria. Pero necesitará incluir las cabeceras de C desde su archivo ."
+"ccg."
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:9225
+msgid "The macros are explained in more detail in the following sections."
+msgstr "Las macros se explican en mayor detalle en las secciones siguientes."
 
-#: C/gtkmm-tutorial-in.xml:9325(para)
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9228
+msgid "m4 Conversions"
+msgstr "Conversiones m4"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9229
 #, fuzzy
 #| msgid ""
-#| "Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
-#| "parameters: First, you need to discover what objects are contained in the "
-#| "list's data field for each item, usually by reading the documentation for "
-#| "the C function. The list can then be wrapped by a <classname>std::vector</"
-#| "classname> type. For instance, <code>std::vector&lt; Glib::RefPtr&lt;"
-#| "Action&gt; &gt;</code>. You may need to define a Traits type to specify "
-#| "how the C and C++ types should be converted."
+#| "The macros that you use in the .hg and .ccg files often need to know how "
+#| "to convert a C++ type to a C type, or vice-versa. gmmproc takes this "
+#| "information from an .m4 file in your <literal>tools/m4/</literal> "
+#| "directory. This allows it to call a C function in the implementation of "
+#| "your C++ method, passing the appropriate parameters to that C functon. "
+#| "For instance, this tells gmmproc how to convert a GtkTreeView pointer to "
+#| "a Gtk::TreeView pointer: <placeholder-1/>"
 msgid ""
-"Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
-"parameters: First, you need to discover what objects are contained in the "
-"list's data field for each item, usually by reading the documentation for "
-"the C function. The list can then be wrapped by a <classname>std::vector</"
-"classname> type. For instance, <code>std::vector&lt; Glib::RefPtr&lt;Gdk::"
-"Pixbuf&gt; &gt;</code>. You may need to define a Traits type to specify how "
-"the C and C++ types should be converted."
+"The macros that you use in the .hg and .ccg files often need to know how to "
+"convert a C++ type to a C type, or vice-versa. <command>gmmproc</command> "
+"takes this information from an .m4 file in your <literal>tools/m4/</literal> "
+"or <literal>codegen/m4/</literal> directory. This allows it to call a C "
+"function in the implementation of your C++ method, passing the appropriate "
+"parameters to that C functon. For instance, this tells <command>gmmproc</"
+"command> how to convert a <classname>GtkTreeView</classname> pointer to a "
+"<classname>Gtk::TreeView</classname> pointer:"
 msgstr ""
-"Envolver parámetros <classname>GList*</classname> y <classname>GSList*</"
-"classname>: primero, necesita descubrir qué objetos están contenidos en los "
-"campos de datos de la lista por cada elemento, generalmente mediante la "
-"lectura de la documentación de la función de C. Un tipo <classname>std::"
-"vector</classname> podrá entonces envolver la lista. Por ejemplo, <code>std::"
-"vector&lt; Glib::RefPtr&lt;Action&gt; &gt;</code>. Tal vez necesite definir "
-"un tipo «Traits» para especificar cómo deben convertirse los tipos de C y C+"
-"+."
+"Las macros que usa en los archivos .hg y .ccg a menudo necesitan saber cómo "
+"convertir un tipo de C++ a un tipo de C, o viceversa. gmmproc toma esta "
+"información desde un archivo .m4 en su carpeta <literal>tools/m4/</literal>. "
+"Esto le permite llamar a una función de C en la implementación de su método "
+"de C++, pasándole los parámetros apropiados a esa función de C. Por ejemplo, "
+"esto le dice a gmmproc cómo convertir un puntero de GtkTreeView a un puntero "
+"de Gtk::TreView: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9342(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:9237
 #, no-wrap
-msgid "#m4 
_CONVERSION(`GSList*',`std::vector&lt;Widget*&gt;',`Glib::SListHandler&lt;Widget*&gt;::slist_to_vector($3, 
Glib::OWNERSHIP_SHALLOW)')"
-msgstr "#m4 
_CONVERSION(`GSList*',`std::vector&lt;Widget*&gt;',`Glib::SListHandler&lt;Widget*&gt;::slist_to_vector($3, 
Glib::OWNERSHIP_SHALLOW)')"
-
-#: C/gtkmm-tutorial-in.xml:9334(para)
 msgid ""
-"Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
-"return types: You must discover whether the caller should free the list and "
-"whether it should release the items in the list, again by reading the "
-"documentation of the C function. With this information you can choose the "
-"ownership (none, shallow or deep) for the m4 conversion rule, which you "
-"should probably put directly into the .hg file because the ownership depends "
-"on the function rather than the type. For instance: <placeholder-1/>"
+"\n"
+"_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n"
 msgstr ""
-"Envolver los tipos de retorno de <classname>GList*</classname> y "
-"<classname>GSList*</classname>: debe descubrir si el llamador debe liberar "
-"la lista y si debe liberar sus elementos, también mediante la lectura de la "
-"documentación de la función de C. Con esta información puede elegir la "
-"posesión (ninguna, superficial o profunda) para la regla de conversión m4, "
-"la que probablemente deba poner directamente en el archivo .hg porque la "
-"posesión depende de la función en lugar del tipo. Por ejemplo: "
-"<placeholder-1/>"
+"\n"
+"_CONVERSION(`GtkTreeView*',`TreeView*',`Glib::wrap($3)')\n"
 
-#: C/gtkmm-tutorial-in.xml:9312(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9241
+#, fuzzy
+#| msgid ""
+#| "<literal>$3</literal> will be replaced by the parameter name when this "
+#| "conversion is used by gmmproc."
 msgid ""
-"Selecting which C++ types should be used is also important when wrapping C "
-"API. Though it's usually obvious what C++ types should be used in the C++ "
-"method, here are some hints: <placeholder-1/>"
+"<literal>$3</literal> will be replaced by the parameter name when this "
+"conversion is used by <command>gmmproc</command>."
 msgstr ""
-"Seleccionar qué tipos de C++ deben usarse también es importante cuando se "
-"envuelve una API de C. A pesar de que generalmente es obvio qué tipos de C++ "
-"deben usarse en el método de C++, aquí hay algunos consejos: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:9348(title)
-msgid "_WRAP_METHOD_DOCS_ONLY"
-msgstr "_WRAP_METHOD_DOCS_ONLY"
+"<literal>$3</literal> se reemplazará por el nombre del parámetro cuando "
+"gmmproc use esta conversión."
 
-#: C/gtkmm-tutorial-in.xml:9349(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9245
+#, fuzzy
+#| msgid ""
+#| "Some extra macros make this easier and consistent. Look in gtkmm's .m4 "
+#| "files for examples. For instance: <placeholder-1/>"
 msgid ""
-"This macro is like <function>_WRAP_METHOD()</function>, but it generates "
-"only the documentation for a C++ method that wraps a C function. Use this "
-"when you must hand-code the method, but you want to use the documentation "
-"that would be generated if the method was generated."
+"Some extra macros make this easier and consistent. Look in "
+"<application>gtkmm</application>'s .m4 files for examples. For instance:"
 msgstr ""
-"Esta macro es similar a <function>_WRAP_METHOD()</function>, pero sólo "
-"genera la documentación de un método de C++ que envuelve una función de C. "
-"Úsela cuando debe escribir el método a mano, pero quiere usar la "
-"documentación que se crearía si el método se generara."
-
-#: C/gtkmm-tutorial-in.xml:9353(function)
-msgid "_WRAP_METHOD_DOCS_ONLY(C function name)"
-msgstr "_WRAP_METHOD_DOCS_ONLY(C function name)"
+"Algunas macros adicionales hacen esto más fácil y consistente. Consulte los "
+"archivos .m4 de gtkmm como ejemplos. Por ejemplo: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9355(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:9249
 #, no-wrap
 msgid ""
 "\n"
-"_WRAP_METHOD_DOCS_ONLY(gtk_container_remove)\n"
+"_CONVERSION(`PrintSettings&amp;',`GtkPrintSettings*',__FR2P)\n"
+"_CONVERSION(`const PrintSettings&amp;',`GtkPrintSettings*',__FCR2P)\n"
+"_CONVERSION(`const Glib::RefPtr&lt;Printer&gt;&amp;',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n"
 msgstr ""
 "\n"
-"_WRAP_METHOD_DOCS_ONLY(gtk_container_remove)\n"
-
-#: C/gtkmm-tutorial-in.xml:9354(para)
-msgid "For instance, from <filename>container.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>container.hg</filename>: <placeholder-1/>"
+"_CONVERSION(`PrintSettings&amp;',`GtkPrintSettings*',__FR2P)\n"
+"_CONVERSION(`const PrintSettings&amp;',`GtkPrintSettings*',__FCR2P)\n"
+"_CONVERSION(`const Glib::RefPtr&lt;Printer&gt;&amp;',`GtkPrinter*',__CONVERT_REFPTR_TO_P($3))\n"
 
-#: C/gtkmm-tutorial-in.xml:9362(title)
-msgid "_IGNORE / _IGNORE_SIGNAL"
-msgstr "_IGNORE / _IGNORE_SIGNAL"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9257
+msgid "m4 Initializations"
+msgstr "Inicializaciones de m4"
 
-#: C/gtkmm-tutorial-in.xml:9363(para)
+# «inizialization» debería ser «initialization».
+# Nicolás.
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9258
+#, fuzzy
+#| msgid ""
+#| "Often when wrapping methods, it is desirable to store the return of the C "
+#| "function in what is called an output parameter. In this case, the C++ "
+#| "method returns <type>void</type> but an output parameter in which to "
+#| "store the value of the C function is included in the argument list of the "
+#| "C++ method. gmmproc allows such functionality, but appropriate "
+#| "initialization macros must be included to tell gmmproc how to initialize "
+#| "the C++ parameter from the return of the C function."
 msgid ""
-"<command>gmmproc</command> will warn you on stdout about functions and "
-"signals that you have forgotten to wrap, helping to ensure that you are "
-"wrapping the complete API. But if you don't want to wrap some functions or "
-"signals, or if you chose to hand-code some methods then you can use the "
-"_IGNORE() or _IGNORE_SIGNAL() macro to make <command>gmmproc</command> stop "
-"complaining."
+"Often when wrapping methods, it is desirable to store the return of the C "
+"function in what is called an output parameter. In this case, the C++ method "
+"returns <type>void</type> but an output parameter in which to store the "
+"value of the C function is included in the argument list of the C++ method. "
+"<command>gmmproc</command> allows such functionality, but appropriate "
+"initialization macros must be included to tell <command>gmmproc</command> "
+"how to initialize the C++ parameter from the return of the C function."
 msgstr ""
-"<command>gmmproc</command> le advertirá en stdout de funciones y señales que "
-"haya olvidado envolver, ayudándole a asegurarse que está envolviendo la API "
-"completa. Pero si no quiere envolver algunas funciones o señales, o si elige "
-"escribir a mano algunos métodos entonces puede usar las macros _IGNORE() o "
-"_IGNORE_SIGNAL() para hacer que <command>gmmproc</command> deje de quejarse."
-
-#: C/gtkmm-tutorial-in.xml:9368(function)
-msgid "_IGNORE(C function name 1, C function name2, etc)"
-msgstr "_IGNORE(C function name 1, C function name2, etc)"
+"Cuando se envuelven métodos, a menudo es deseable almacenar el valor que "
+"devuelve una función de C en lo que se conoce como parámetro de salida. En "
+"este caso, el método de C++ devuelve <type>void</type> pero se incluye en su "
+"lista de argumentos un parámetro de salida en el que se almacena el valor de "
+"la función de C. gmmproc permite esta funcionalidad, pero deben incluirse "
+"macros de inicialización apropiadas para decirle a gmmproc cómo inicializar "
+"el parámetro de C++ desde el valor de devolución de la función de C."
 
-#: C/gtkmm-tutorial-in.xml:9369(function)
-msgid "_IGNORE_SIGNAL(C signal name 1, C signal name2, etc)"
-msgstr "_IGNORE_SIGNAL(C signal name 1, C signal name2, etc)"
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9267
+#, fuzzy
+#| msgid ""
+#| "For example, if there was a C function that returned a <type>GtkWidget*</"
+#| "type> and for some reason, instead of having the C++ method also return "
+#| "the widget, it was desirable to have the C++ method place the widget in a "
+#| "specified output parameter, an initialization macro such as the following "
+#| "would be necessary: <placeholder-1/>"
+msgid ""
+"For example, if there was a C function that returned a <type>GtkWidget*</"
+"type> and for some reason, instead of having the C++ method also return the "
+"widget, it was desirable to have the C++ method place the widget in a "
+"specified output parameter, an initialization macro such as the following "
+"would be necessary:"
+msgstr ""
+"Por ejemplo, si hubiera una función de C que devolviera un <type>GtkWidget*</"
+"type> y por alguna razón, en lugar de hacer que el método de C++ también "
+"devuelva el widget, se quisiera hacer que el método de C++ ponga al widget "
+"en un parámetro de salida especificado, sería necesaria una macro de "
+"inicialización como la siguiente: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9371(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:9274
 #, no-wrap
 msgid ""
 "\n"
-"_IGNORE(gtk_button_box_set_spacing, gtk_button_box_get_spacing)\n"
+"_INITIALIZATION(`Gtk::Widget&amp;',`GtkWidget*',`$3 = Glib::wrap($4)')\n"
 msgstr ""
 "\n"
-"_IGNORE(gtk_button_box_set_spacing, gtk_button_box_get_spacing)\n"
-
-#: C/gtkmm-tutorial-in.xml:9370(para)
-msgid "For instance, from <filename>buttonbox.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>buttonbox.hg</filename>: <placeholder-1/>"
-
-#: C/gtkmm-tutorial-in.xml:9378(title)
-msgid "_WRAP_SIGNAL"
-msgstr "_WRAP_SIGNAL"
+"_INITIALIZATION(`Gtk::Widget&amp;',`GtkWidget*',`$3 = Glib::wrap($4)')\n"
 
-#: C/gtkmm-tutorial-in.xml:9379(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9278
+#, fuzzy
+#| msgid ""
+#| "<literal>$3</literal> will be replaced by the output parameter name of "
+#| "the C++ method and <literal>$4</literal> will be replaced by the return "
+#| "of the C function when this initialization is used by gmmproc. For "
+#| "convenience, <literal>$1</literal> will also be replaced by the C++ type "
+#| "without the ampersand (&amp;) and <literal>$2</literal> will be replaced "
+#| "by the C type."
 msgid ""
-"This macro generates the C++ libsigc++-style signal to wrap a C GObject "
-"signal. It actually generates a public accessor method, such as "
-"<function>signal_clicked()</function>, which returns a proxy object. "
-"<command>gmmproc</command> uses the .defs file to discover the C parameter "
-"types and the .m4 convert files to discover appropriate type conversions."
+"<literal>$3</literal> will be replaced by the output parameter name of the C+"
+"+ method and <literal>$4</literal> will be replaced by the return of the C "
+"function when this initialization is used by <command>gmmproc</command>. For "
+"convenience, <literal>$1</literal> will also be replaced by the C++ type "
+"without the ampersand (&amp;) and <literal>$2</literal> will be replaced by "
+"the C type."
 msgstr ""
-"Esta macro genera la señal de C++ con el estilo de libsigc++ para envolver "
-"una señal GObject de C. En realidad genera un método de acceso público, como "
-"<function>signal_clicked()</function>, que devuelve un objeto sustituto. "
-"<function>gmmproc</function> usa el archivo .defs para descubrir los tipos "
-"de parámetro de C y los archivos de conversión .m4 para descubrir "
-"conversiones de tipo adecuadas."
+"<literal>$3</literal> se reemplazará por el nombre del parámetro de salida "
+"del método de C++ y <literal>$4</literal> se reemplazará por el valor de "
+"retorno de la función de C cuando gmmproc use esta inicialización. Por "
+"conveniencia, <literal>$1</literal> también se reemplazará por el tipo de C+"
+"+ sin el «et» (&amp;) y <literal>$2</literal> se reemplazará por el tipo de "
+"C."
 
-#: C/gtkmm-tutorial-in.xml:9385(function)
-msgid "_WRAP_SIGNAL( C++ signal handler signature, C signal name)"
-msgstr "_WRAP_SIGNAL( C++ signal handler signature, C signal name)"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9289
+msgid "Class macros"
+msgstr "Macros de clases"
 
-#: C/gtkmm-tutorial-in.xml:9387(programlisting)
-#, no-wrap
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9290
 msgid ""
-"\n"
-"_WRAP_SIGNAL(void clicked(),\"clicked\")\n"
+"The class macro declares the class itself and its relationship with the "
+"underlying C type. It generates some internal constructors, the member "
+"<varname>gobject_</varname>, typedefs, the <function>gobj()</function> "
+"accessors, type registration, and the <function>Glib::wrap()</function> "
+"method, among other things."
 msgstr ""
-"\n"
-"_WRAP_SIGNAL(void clicked(),\"clicked\")\n"
+"Las macros de clases declaran la clase en sí y su relación con el tipo de C "
+"subyacente. Generan algunos constructores internos, el miembro "
+"<varname>gobject_</varname>, «typedefs», los <function>gobj()</function> de "
+"acceso, registro de tipos, y el método <function>Glib::wrap()</function>, "
+"entre otras cosas."
 
-#: C/gtkmm-tutorial-in.xml:9391(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9295
 msgid ""
-"Signals usually have function pointers in the GTK struct, with a "
-"corresponding enum value and a <function>g_signal_new()</function> in the .c "
-"file."
+"Other macros, such as <function>_WRAP_METHOD()</function> and "
+"<function>_WRAP_SIGNAL()</function> may only be used after a call to a "
+"<function>_CLASS_*</function> macro."
 msgstr ""
-"Las señales generalmente tienen punteros de funciones en la estructura de "
-"GTK, con un valor de enum correspondiente y un <function>g_signal_new()</"
-"function> en el archivo .c."
+"Otras macros, como <function>_WRAP_METHOD()</function> y "
+"<function>_WRAP_SIGNAL()</function> sólo pueden usarse después de una "
+"llamada a una macro <function>_CLASS_*</function>."
 
-#: C/gtkmm-tutorial-in.xml:9397(term)
-msgid "no_default_handler"
-msgstr "no_default_handler"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9300
+msgid "_CLASS_GOBJECT"
+msgstr "_CLASS_GOBJECT"
 
-#: C/gtkmm-tutorial-in.xml:9399(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9301
 msgid ""
-"Do not generate an <function>on_something()</function> virtual method to "
-"allow easy overriding of the default signal handler. Use this when adding a "
-"signal with a default signal handler would break the ABI by increasing the "
-"size of the class's virtual function table."
+"This macro declares a wrapper for a type that is derived from "
+"<classname>GObject</classname>, but whose wrapper is not derived from "
+"<classname>Gtk::Object</classname>."
 msgstr ""
-"No genera un método virtual <function>on_something()</function> para "
-"permitir reemplazar fácilmente el gestor de señales predeterminado. Use "
-"esto si añadir una señal con un gestor de señales predeterminado rompe la "
-"ABI incrementando el tamaño de la tabla de funciones virtuales de la clase."
-
-#: C/gtkmm-tutorial-in.xml:9407(term)
-msgid "custom_default_handler"
-msgstr "custom_default_handler"
+"Esta macro declara un envoltorio de un tipo que deriva de "
+"<classname>GObject</classname>, pero cuyo envoltorio no deriva de "
+"<classname>Gtk::Object</classname>."
 
-#: C/gtkmm-tutorial-in.xml:9409(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9304
+#| msgid ""
+#| "_CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base class, C "
+#| "base class )"
 msgid ""
-"Generate a declaration of the <function>on_something()</function> virtual "
-"method in the <filename>.h</filename> file, but do not generate a definition "
-"in the <filename>.cc</filename> file. Use this when you must generate the "
-"definition by hand."
+"<function>_CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base "
+"class, C base class )</function>"
 msgstr ""
-"Genera una declaración del método virtual <function>on_something</function> "
-"en el archivo <filename>.h</filename>, pero no genera una definición en el "
-"archivo <filename>.cc</filename>. Use esto cuando deba generar la definición "
-"a mano."
+"<function>_CLASS_GOBJECT( C++ class, C class, C casting macro, C++ base "
+"class, C base class )</function>"
 
-#: C/gtkmm-tutorial-in.xml:9416(term)
-msgid "custom_c_callback"
-msgstr "custom_c_callback"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9305
+#, fuzzy
+#| msgid "For instance, from <filename>entry.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>adjustment.hg</filename>:"
+msgstr "Por ejemplo, de <filename>entry.hg</filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9418(para)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9306
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "_CLASS_GOBJECT(AccelGroup, GtkAccelGroup, GTK_ACCEL_GROUP, Glib::Object, GObject)\n"
 msgid ""
-"Do not generate a C callback function for the signal. Use this when you must "
-"generate the callback function by hand."
+"\n"
+"_CLASS_GOBJECT(Adjustment, GtkAdjustment, GTK_ADJUSTMENT, Glib::Object, GObject)\n"
 msgstr ""
-"No genera una devolución de llamada de C para la señal. Use esto cuando debe "
-"generar la función de devolución de llamada a mano."
+"\n"
+"_CLASS_GOBJECT(Adjustment, GtkAdjustment, GTK_ADJUSTMENT, Glib::Object, GObject)\n"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9312
+msgid "_CLASS_GTKOBJECT"
+msgstr "_CLASS_GTKOBJECT"
 
-#: C/gtkmm-tutorial-in.xml:9425(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9313
 msgid ""
-"Do an extra <function>reference()</function> on the return value of the "
-"<function>on_something()</function> virtual method, in case the C function "
-"does not provide a reference."
+"This macro declares a wrapper for a type whose wrapper is derived from "
+"<classname>Gtk::Object</classname>, such as a widget or dialog."
 msgstr ""
-"Hace una <function>reference()</function> adicional en el valor de retorno "
-"del método virtual <function>on_something()</function>, en caso de que la "
-"función de C no proporcione una referencia."
-
-#: C/gtkmm-tutorial-in.xml:9441(title)
-msgid "_WRAP_PROPERTY"
-msgstr "_WRAP_PROPERTY"
+"Esta macro declara un envoltorio para un tipo cuyo envoltorio deriva de "
+"<classname>Gtk::Object</classname>, como un widget o un diálogo."
 
-#: C/gtkmm-tutorial-in.xml:9442(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9315
+#| msgid ""
+#| "_CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base class, C "
+#| "base class )"
 msgid ""
-"This macro generates the C++ method to wrap a C GObject property. You must "
-"specify the property name and the wanted C++ type for the property. "
-"<command>gmmproc</command> uses the .defs file to discover the C type and "
-"the .m4 convert files to discover appropriate type conversions."
+"<function>_CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base "
+"class, C base class )</function>"
 msgstr ""
-"Esta macro genera el método de C++ que envuelve una propiedad GObject de C. "
-"Debe especificar el nombre de la propiedad y el tipo de C++ que quiere para "
-"la propiedad. <command>gmmproc</command> usa el archivo .defs para descubrir "
-"el tipo de C y el archivo de conversión .m4 para descubrir conversiones de "
-"tipo apropiadas."
+"<function>_CLASS_GTKOBJECT( C++ class, C class, C casting macro, C++ base "
+"class, C base class )</function>"
 
-#: C/gtkmm-tutorial-in.xml:9446(function)
-msgid "_WRAP_PROPERTY(C property name, C++ type)"
-msgstr "_WRAP_PROPERTY(C property name, C++ type)"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9316 C/index-in.docbook:9790 C/index-in.docbook:9894
+#, fuzzy
+#| msgid "For instance, from <filename>button.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>button.hg</filename>:"
+msgstr "Por ejemplo, de <filename>button.hg</filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9448(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9317
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Bin, GtkBin)\n"
 msgid ""
 "\n"
-"_WRAP_PROPERTY(\"label\", Glib::ustring)\n"
+"_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n"
 msgstr ""
 "\n"
-"_WRAP_PROPERTY(\"label\", Glib::ustring)\n"
+"_CLASS_GTKOBJECT(Button, GtkButton, GTK_BUTTON, Gtk::Widget, GtkWidget)\n"
 
-#: C/gtkmm-tutorial-in.xml:9455(title)
-msgid "_WRAP_VFUNC"
-msgstr "_WRAP_VFUNC"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9320
+#, fuzzy
+#| msgid ""
+#| "You will typically use this macro when the class already derives from "
+#| "Gtk::Object. For instance, you will use it when wrapping a GTK+ Widget, "
+#| "because Gtk::Widget derives from Gtk::Object."
+msgid ""
+"You will typically use this macro when the class already derives from "
+"<classname>Gtk::Object</classname>. For instance, you will use it when "
+"wrapping a GTK Widget, because <classname>Gtk::Widget</classname> derives "
+"from <classname>Gtk::Object</classname>."
+msgstr ""
+"Típicamente usará esta macro cuando la clase ya derive de Gtk::Object. Por "
+"ejemplo, la usará cuando envuelva un widget de GTK+, porque Gtk::Widget "
+"deriva de Gtk::Object."
 
-#: C/gtkmm-tutorial-in.xml:9456(para)
-msgid "This macro generates the C++ method to wrap a virtual C function."
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9324
+#, fuzzy
+#| msgid ""
+#| "You might also derive non-widget classes from Gtk::Object so they can be "
+#| "used without <classname>Glib::RefPtr</classname>. For instance, they "
+#| "could then be instantiated with <function>Gtk::manage()</function> or on "
+#| "the stack as a member variable. This is convenient, but you should use "
+#| "this only when you are sure that true reference-counting is not needed. "
+#| "We consider it useful for widgets."
+msgid ""
+"You might also derive non-widget classes from <classname>Gtk::Object</"
+"classname> so they can be used without <classname>Glib::RefPtr</classname>. "
+"For instance, they could then be instantiated with <function>Gtk::"
+"make_managed()</function> or on the stack as a member variable. This is "
+"convenient, but you should use this only when you are sure that true "
+"reference-counting is not needed. We consider it useful for widgets."
 msgstr ""
-"Esta macro genera el método de C++ que envuelve una función virtual de C."
+"También podrá derivar clases que no sean widgets de Gtk::Object para que "
+"puedan usarse sin <classname>Glib::RefPtr</classname>. Por ejemplo, podrían "
+"instanciarse con <function>Gtk::manage()</function> o en la pila como una "
+"variable miembro. Esto es cómodo, pero sólo debe usarlo cuando esté seguro "
+"de que no se necesita conteo de referencias real. Se considera de utilidad "
+"para los widgets."
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9334
+msgid "_CLASS_BOXEDTYPE"
+msgstr "_CLASS_BOXEDTYPE"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9335
+msgid ""
+"This macro declares a wrapper for a non-<classname>GObject</classname> "
+"struct, registered with <function>g_boxed_type_register_static()</function>."
+msgstr ""
+"Esta macro declara un envoltorio para una estructura que no es "
+"<classname>GObject</classname>, registrada con "
+"<function>g_boxed_type_register_static()</function>."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9338
+#| msgid ""
+#| "_CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, free "
+#| "function )"
+msgid ""
+"<function>_CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, "
+"free function )</function>"
+msgstr ""
+"<function>_CLASS_BOXEDTYPE( C++ class, C class, new function, copy function, "
+"free function )</function>"
 
-#: C/gtkmm-tutorial-in.xml:9457(function)
-msgid "_WRAP_VFUNC( C++ method signature, C function name)"
-msgstr "_WRAP_VFUNC( C++ method signature, C function name)"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9339
+#, fuzzy
+#| msgid ""
+#| "For instance, from <classname>Gdk::RGBA</classname>: <placeholder-1/>"
+msgid "For instance, from <classname>Gdk::RGBA</classname>:"
+msgstr "Por ejemplo, para <classname>Gdk::RGBA</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9459(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9340
 #, no-wrap
 msgid ""
 "\n"
-"_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n"
+"_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n"
 msgstr ""
 "\n"
-"_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n"
+"_CLASS_BOXEDTYPE(RGBA, GdkRGBA, NONE, gdk_rgba_copy, gdk_rgba_free)\n"
 
-#: C/gtkmm-tutorial-in.xml:9458(para)
-msgid "For instance, from <filename>widget.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>widget.hg</filename>: <placeholder-1/>"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9346
+msgid "_CLASS_BOXEDTYPE_STATIC"
+msgstr "_CLASS_BOXEDTYPE_STATIC"
 
-#: C/gtkmm-tutorial-in.xml:9463(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9347
 msgid ""
-"The C function (e.g. <function>get_request_mode</function>) is described "
-"more fully in the <filename>*_vfuncs.defs</filename> file, and the "
-"<filename>convert*.m4</filename> files contain the necessary conversion from "
-"the C++ parameter type to the C parameter type."
+"This macro declares a wrapper for a simple assignable struct such as "
+"<classname>GdkRectangle</classname>. It is similar to "
+"<function>_CLASS_BOXEDTYPE</function>, but the C struct is not allocated "
+"dynamically."
 msgstr ""
-"La función de C (por ejemplo, <function>get_request_mode</function>) se "
-"describe en mayor detalle en el archivo <filename>*_vfuncs.defs</filename>, "
-"y los archivos <filename>convert*.m4</filename> contienen las conversiones "
-"necesarias del tipo de parámetro de C++ al tipo de parámetro de C."
+"Esta macro declara un envoltorio para una estructura asignable simple como "
+"<classname>GdkRectangle</classname>. Es similar a "
+"<function>_CLASS_BOXEDTYPE</function>, pero la estructura de C no se asigna "
+"dinámicamente."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9351
+#| msgid "_CLASS_BOXEDTYPE_STATIC( C++ class, C class )"
+msgid "<function>_CLASS_BOXEDTYPE_STATIC( C++ class, C class )</function>"
+msgstr "<function>_CLASS_BOXEDTYPE_STATIC( C++ class, C class )</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9352
+#, fuzzy
+#| msgid ""
+#| "For instance, for <classname>Gdk::Rectangle</classname>: <placeholder-1/>"
+msgid "For instance, for <classname>Gdk::Rectangle</classname>:"
+msgstr ""
+"Por ejemplo, para <classname>Gdk::Rectangle</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9472(para)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9353
+#, no-wrap
 msgid ""
-"Do an extra <function>reference()</function> on the return value of the "
-"<function>something_vfunc()</function> function, in case the virtual C "
-"function does not provide a reference."
+"\n"
+"_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n"
 msgstr ""
-"Hace una <function>reference()</function> adicional en el valor de retorno "
-"de la función <function>something_vfunc()</function>, en caso de que la "
-"función virtual de C no proporcione una referencia."
+"\n"
+"_CLASS_BOXEDTYPE_STATIC(Rectangle, GdkRectangle)\n"
 
-#: C/gtkmm-tutorial-in.xml:9478(term)
-msgid "refreturn_ctype"
-msgstr "refreturn_ctype"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9359
+msgid "_CLASS_OPAQUE_COPYABLE"
+msgstr "_CLASS_OPAQUE_COPYABLE"
 
-#: C/gtkmm-tutorial-in.xml:9480(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9360
 msgid ""
-"Do an extra <function>reference()</function> on the return value of an "
-"overridden <function>something_vfunc()</function> function in the C callback "
-"function, in case the calling C function expects it to provide a reference."
+"This macro declares a wrapper for an opaque struct that has copy and free "
+"functions. The new, copy and free functions will be used to instantiate the "
+"default constructor, copy constructor and destructor."
 msgstr ""
-"Hace una <function>reference()</function> adicional en el valor de retorno "
-"de una función <function>something_vfunc()</function> reemplazada en la "
-"función de devolución de llamada de C, en caso de que la función de C que "
-"llama espere que proporcione una referencia."
+"Esta macro declara un envoltorio para una estructura opaca que tiene "
+"funciones «copy» y «free». Las funciones «new», «copy» y «free» se usarán "
+"para instanciar el constructor predeterminado, copiar el constructor y el "
+"destructor."
 
-#: C/gtkmm-tutorial-in.xml:9489(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9363
+#| msgid ""
+#| "_CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy function, "
+#| "free function )"
 msgid ""
-"Use the last GError** parameter of the C virtual function (if there is one) "
-"to throw an exception."
+"<function>_CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy "
+"function, free function )</function>"
 msgstr ""
-"Usa el último parámetro GError** de la función virtual de C (si existe) para "
-"lanzar una excepción."
+"<function>_CLASS_OPAQUE_COPYABLE( C++ class, C class, new function, copy "
+"function, free function )</function>"
 
-#: C/gtkmm-tutorial-in.xml:9494(term)
-msgid "custom_vfunc"
-msgstr "custom_vfunc"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9364
+#, fuzzy
+#| msgid ""
+#| "For instance, for <classname>Gdk::Color</classname>: <placeholder-1/>"
+msgid "For instance, from <classname>Glib::VariantType</classname>:"
+msgstr "Por ejemplo, para <classname>Gdk::Color</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9496(para)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9365
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "_CLASS_OPAQUE_COPYABLE(Checksum, GChecksum, NONE, g_checksum_copy, g_checksum_free)\n"
 msgid ""
-"Do not generate a definition of the vfunc in the <filename>.cc</filename> "
-"file. Use this when you must generate the vfunc by hand."
+"\n"
+"_CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)\n"
 msgstr ""
-"No genera una definición de la «vfunc» en el archivo <filename>.cc</"
-"filename>. Use esto cuando deba generar la «vfunc» a mano."
+"\n"
+"_CLASS_OPAQUE_COPYABLE(VariantType, GVariantType, NONE, g_variant_type_copy, g_variant_type_free)\n"
 
-#: C/gtkmm-tutorial-in.xml:9502(term)
-msgid "custom_vfunc_callback"
-msgstr "custom_vfunc_callback"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9371
+msgid "_CLASS_OPAQUE_REFCOUNTED"
+msgstr "_CLASS_OPAQUE_REFCOUNTED"
 
-#: C/gtkmm-tutorial-in.xml:9504(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9372
 msgid ""
-"Do not generate a C callback function for the vfunc. Use this when you must "
-"generate the callback function by hand."
+"This macro declares a wrapper for a reference-counted opaque struct. The C++ "
+"wrapper cannot be directly instantiated and can only be used with "
+"<classname>Glib::RefPtr</classname>."
 msgstr ""
-"No genera una función de devolución de llamada de C para la «vfunc». Use "
-"esto cuando deba generar la función de devolución de llamada a mano."
+"Esta macro declara un envoltorio para una estructura opaca con conteo de "
+"referencias. El envoltorio de C++ no puede instanciarse directamente y sólo "
+"lo puede usar <classname>Glib::RefPtr</classname>."
 
-#: C/gtkmm-tutorial-in.xml:9548(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9375
+#| msgid ""
+#| "_CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref function, "
+#| "unref function )"
 msgid ""
-"A rule to which there may be exceptions: If the virtual C function returns a "
-"pointer to an object derived from <classname>GObject</classname>, i.e. a "
-"reference-counted object, then the virtual C++ function shall return a "
-"<classname>Glib::RefPtr&lt;&gt;</classname> object. One of the extra "
-"arguments <parameter>refreturn</parameter> or <parameter>refreturn_ctype</"
-"parameter> is required."
+"<function>_CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref "
+"function, unref function )</function>"
 msgstr ""
-"Una regla para la cual puede haber excepciones: si la función virtual de C "
-"devuelve un puntero a un objeto derivado de <classname>GObject</classname>, "
-"es decir un objeto cuyas referencias se cuentan, entonces la función virtual "
-"de C++ deberá devolver un objeto <classname>Glib::RefPtr&lt;&gt;</"
-"classname>. Se requiere uno de los argumentos adicionales "
-"<parameter>refreturn</parameter> o <parameter>refreturn_ctype</parameter>."
-
-#: C/gtkmm-tutorial-in.xml:9559(title)
-msgid "Other macros"
-msgstr "Otras macros"
+"<function>_CLASS_OPAQUE_REFCOUNTED( C++ class, C class, new function, ref "
+"function, unref function )</function>"
 
-#: C/gtkmm-tutorial-in.xml:9561(title)
-msgid "_IMPLEMENTS_INTERFACE"
-msgstr "_IMPLEMENTS_INTERFACE"
-
-#: C/gtkmm-tutorial-in.xml:9562(para)
-msgid "This macro generates initialization code for the interface."
-msgstr "Esta macro genera código de inicialización para la interfaz."
-
-#: C/gtkmm-tutorial-in.xml:9563(function)
-msgid "_IMPLEMENTS_INTERFACE(C++ interface name)"
-msgstr "_IMPLEMENTS_INTERFACE(C++ interface name)"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9376
+#, fuzzy
+#| msgid ""
+#| "For instance, for <classname>Gdk::Rectangle</classname>: <placeholder-1/>"
+msgid "For instance, for <classname>Gtk::CssSection</classname>:"
+msgstr ""
+"Por ejemplo, para <classname>Gdk::Rectangle</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9565(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9377
 #, no-wrap
 msgid ""
 "\n"
-"_IMPLEMENTS_INTERFACE(Activatable)\n"
+"_CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)\n"
 msgstr ""
 "\n"
-"_IMPLEMENTS_INTERFACE(Activatable)\n"
-
-#: C/gtkmm-tutorial-in.xml:9569(para)
-msgid "There is one optional extra argument: <placeholder-1/>"
-msgstr "Hay un argumento opcional adicional: <placeholder-1/>"
+"_CLASS_OPAQUE_REFCOUNTED(CssSection, GtkCssSection, NONE, gtk_css_section_ref, gtk_css_section_unref)\n"
 
-#: C/gtkmm-tutorial-in.xml:9582(title)
-msgid "_WRAP_ENUM"
-msgstr "_WRAP_ENUM"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9383
+msgid "_CLASS_GENERIC"
+msgstr "_CLASS_GENERIC"
 
-#: C/gtkmm-tutorial-in.xml:9583(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9384
 msgid ""
-"This macro generates a C++ enum to wrap a C enum. You must specify the "
-"desired C++ name and the name of the underlying C enum."
+"This macro can be used to wrap structs which don't fit into any specialized "
+"category."
 msgstr ""
-"Esta macro genera una enum de C++ para envolver una enum de C. Debe "
-"especificar el nombre de C++ que quiere y el nombre de la enum de C "
-"subyacente."
+"Esta macro puede usarse para envolver estructuras que no se ajustan a "
+"ninguna categoría especializada."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9386
+#| msgid "_CLASS_GENERIC( C++ class, C class )"
+msgid "<function>_CLASS_GENERIC( C++ class, C class )</function>"
+msgstr "<function>_CLASS_GENERIC( C++ class, C class )</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9387
+#, fuzzy
+#| msgid ""
+#| "For instance, for <classname>Gdk::Rectangle</classname>: <placeholder-1/>"
+msgid "For instance, for <classname>Gdk::TimeCoord</classname>:"
+msgstr ""
+"Por ejemplo, para <classname>Gdk::Rectangle</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9586(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9388
 #, no-wrap
 msgid ""
 "\n"
-"_WRAP_ENUM(WindowType, GtkWindowType)\n"
+"_CLASS_GENERIC(TimeCoord, GdkTimeCoord)\n"
 msgstr ""
 "\n"
-"_WRAP_ENUM(WindowType, GtkWindowType)\n"
+"_CLASS_GENERIC(TimeCoord, GdkTimeCoord)\n"
 
-#: C/gtkmm-tutorial-in.xml:9585(para)
-msgid "For instance, from <filename>enums.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>enums.hg</filename>: <placeholder-1/>"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9394
+msgid "_CLASS_INTERFACE"
+msgstr "_CLASS_INTERFACE"
 
-#: C/gtkmm-tutorial-in.xml:9590(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9395
 msgid ""
-"If the enum is not a <classname>GType</classname>, you must pass a third "
-"parameter NO_GTYPE. This is the case when there is no "
-"<function>*_get_type()</function> function for the C enum, but be careful "
-"that you don't just need to include an extra header for that function. You "
-"should also file a bug against the C API, because all enums should be "
-"registered as GTypes."
+"This macro declares a wrapper for a type that is derived from "
+"<classname>GTypeInterface</classname>."
 msgstr ""
-"Si la enum no es un <classname>GType</classname>, debe pasar un tercer "
-"parámetro «NO_GTYPE». Este es el caso cuando no hay una función "
-"<function>*_get_type()</function> para la enum de C, pero tenga cuidado: no "
-"sólo necesita incluir una cabecera adicional para esa función, también debe "
-"enviar un informe de error de la API de C porque todas las enums deben "
-"registrarse como GTypes."
+"Esta macro declara un envoltorio para un tipo que deriva de "
+"<classname>GTypeInterface</classname>."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9398
+#| msgid ""
+#| "_CLASS_INTERFACE( C++ class, C class, C casting macro, C interface "
+#| "struct, Base C++ class (optional), Base C class (optional) )"
+msgid ""
+"<function>_CLASS_INTERFACE( C++ class, C class, C casting macro, C interface "
+"struct, Base C++ class (optional), Base C class (optional) )</function>"
+msgstr ""
+"<function>_CLASS_INTERFACE( C++ class, C class, C casting macro, C interface "
+"struct, Base C++ class (optional), Base C class (optional) )</function>"
 
-#: C/gtkmm-tutorial-in.xml:9595(programlisting)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9399
+#, fuzzy
+#| msgid ""
+#| "For instance, from <filename>celleditable.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>celleditable.hg</filename>:"
+msgstr "Por ejemplo, de <filename>celleditable.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9401
 #, no-wrap
 msgid ""
 "\n"
-"_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n"
+"_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n"
 msgstr ""
 "\n"
-"_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n"
-
-#: C/gtkmm-tutorial-in.xml:9594(para)
-msgid "For example, from <filename>icontheme.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>icontheme.hg</filename>: <placeholder-1/>"
+"_CLASS_INTERFACE(CellEditable, GtkCellEditable, GTK_CELL_EDITABLE, GtkCellEditableIface)\n"
 
-#: C/gtkmm-tutorial-in.xml:9602(title)
-msgid "_WRAP_ENUM_DOCS_ONLY"
-msgstr "_WRAP_ENUM_DOCS_ONLY"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9404
+#, fuzzy
+#| msgid ""
+#| "Two extra parameters are optional, for the case that the interface "
+#| "derives from another interface, which should be the case when the "
+#| "GInterface has another GInterface as a prerequisitite. For instance, from "
+#| "<filename>loadableicon.hg</filename>: <placeholder-1/>"
+msgid ""
+"Two extra optional parameters were once added, for the case that the "
+"interface derives from another interface, which was believed to be the case "
+"when the GInterface has another GInterface as a prerequisite. This is a "
+"misunderstanding, though. When GInterface A has GInterface B as a "
+"prerequisite, it means that every class that implements A shall also "
+"implement B. For instance, from <filename>loadableicon.hg</filename> in "
+"glibmm-2.4:"
+msgstr ""
+"Hay dos parámetros adicionales opcionales, para el caso de que la interfaz "
+"derive de otra interfaz, que debe ser cuando la «GInterface» tenga otra "
+"«GInterface» como requisito previo. Por ejemplo, de <filename>loadableicon."
+"hg</filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9603(para)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9410
+#, no-wrap
 msgid ""
-"This macro just generates a Doxygen documentationn block for the enum. This "
-"is useful for enums that can't be wrapped with <function>_WRAP_ENUM()</"
-"function> because they are complexly defined (maybe using C macros) but "
-"including the generated enum documentation is still desired. It is used with "
-"the same syntax as <function>_WRAP_ENUM()</function> and also process the "
-"same options (though NO_GTYPE is just ignored because it makes no difference "
-"when just generating the enum's documentation)."
+"\n"
+"_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n"
 msgstr ""
+"\n"
+"_CLASS_INTERFACE(LoadableIcon, GLoadableIcon, G_LOADABLE_ICON, GLoadableIconIface, Icon, GIcon)\n"
 
-#: C/gtkmm-tutorial-in.xml:9615(title)
-msgid "_WRAP_GERROR"
-msgstr "_WRAP_GERROR"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9418
+msgid "Constructor macros"
+msgstr "Macros de constructores"
 
-#: C/gtkmm-tutorial-in.xml:9616(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9419
+#, fuzzy
+#| msgid ""
+#| "The <function>_CTOR_DEFAULT()</function> and <function>_WRAP_CTOR()</"
+#| "function> macros add constructors, wrapping the specified "
+#| "<function>*_new()</function> C functions. These macros assume that the C "
+#| "object has properties with the same names as the function parameters, as "
+#| "is usually the case, so that it can supply the parameters directly to a "
+#| "<function>g_object_new()</function> call. These constructors never "
+#| "actually call the <function>*_new()</function> C functions, because gtkmm "
+#| "must actually instantiate derived GTypes, and the <function>*_new()</"
+#| "function> C functions are meant only as convenience functions for C "
+#| "programmers."
 msgid ""
-"This macro generates a C++ exception class, derived from Glib::Error, with a "
-"Code enum and a code() method. You must specify the desired C++ name, the "
-"name of the corresponding C enum, and the prefix for the C enum values."
+"The <function>_CTOR_DEFAULT()</function> and <function>_WRAP_CTOR()</"
+"function> macros add constructors, wrapping the specified <function>*_new()</"
+"function> C functions. These macros assume that the C object has properties "
+"with the same names as the function parameters, as is usually the case, so "
+"that it can supply the parameters directly to a <function>g_object_new()</"
+"function> call. These constructors never actually call the "
+"<function>*_new()</function> C functions, because <application>gtkmm</"
+"application> must actually instantiate derived GTypes, and the "
+"<function>*_new()</function> C functions are meant only as convenience "
+"functions for C programmers."
 msgstr ""
-"Esta macro genera una clase de excepción de C++, derivada de Glib::Error, "
-"con una enum Code y un método code(). Debe especificar el nombre de C++ que "
-"quiere, el nombre de la enum de C correspondiente, y el prefijo de los "
-"valores de la enum de C."
+"Las macros <function>_CTOR_DEFAULT()</function> y <function>_WRAP_CTOR()</"
+"function> añaden constructores, envolviendo las funciones de C "
+"<function>*_new()</function> especificadas. Estas macros asumen que el "
+"objeto de C tiene propiedades con los mismos nombres que los parámetros de "
+"función, como es usual, para que pueda proporcionar los parámetros "
+"directamente a una llamada de <function>g_object_new()</function>. Estos "
+"constructores nunca llaman realmente a funciones de C <function>*_new()</"
+"function>, porque gtkmm debe en realidad instanciar «GTypes» derivados, y "
+"las funciones <function>*_new()</function> de C sólo están pensadas como "
+"funciones cómodas para programadores de C."
 
-#: C/gtkmm-tutorial-in.xml:9619(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9429
+#, fuzzy
+#| msgid ""
+#| "When using <function>_CLASS_GOBJECT()</function>, the constructors should "
+#| "be protected (rather than public) and each constructor should have a "
+#| "corresponding <function>_WRAP_CREATE()</function> in the public section. "
+#| "This prevents the class from being instantiated without using a "
+#| "<classname>RefPtr</classname>. For instance: <placeholder-1/>"
 msgid ""
-"This exception can then be thrown by methods which are generated from "
-"_WRAP_METHOD() with the errthrow option."
+"When using <function>_CLASS_GOBJECT()</function>, the constructors should be "
+"protected (rather than public) and each constructor should have a "
+"corresponding <function>_WRAP_CREATE()</function> in the public section. "
+"This prevents the class from being instantiated without using a "
+"<classname>RefPtr</classname>. For instance:"
 msgstr ""
-"Los métodos generados desde _WRAP_METHOD() podrán entonces lanzar esta "
-"excepción con la opción «errthrow»."
+"Cuando use <function>_CLASS_GOBJECT()</function>, los constructores deben "
+"declararse protegidos (en lugar de públicos) y cada constructor debe tener "
+"un <function>_WRAP_CREATE()</function> correspondiente en la sección "
+"pública. Esto evita que la clase se instancie sin usar un <classname>RefPtr</"
+"classname>. Por ejemplo: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9621(programlisting)
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:9434
 #, no-wrap
 msgid ""
 "\n"
-"_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n"
+"class TextMark : public Glib::Object\n"
+"{\n"
+"  _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)\n"
+"\n"
+"protected:\n"
+"  _WRAP_CTOR(TextMark(const Glib::ustring&amp; name, bool left_gravity = true), gtk_text_mark_new)\n"
+"\n"
+"public:\n"
+"  _WRAP_CREATE(const Glib::ustring&amp; name, bool left_gravity = true)\n"
 msgstr ""
 "\n"
-"_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n"
+"class TextMark : public Glib::Object\n"
+"{\n"
+"  _CLASS_GOBJECT(TextMark, GtkTextMark, GTK_TEXT_MARK, Glib::Object, GObject)\n"
+"\n"
+"protected:\n"
+"  _WRAP_CTOR(TextMark(const Glib::ustring&amp; name, bool left_gravity = true), gtk_text_mark_new)\n"
+"\n"
+"public:\n"
+"  _WRAP_CREATE(const Glib::ustring&amp; name, bool left_gravity = true)\n"
 
-#: C/gtkmm-tutorial-in.xml:9620(para)
-msgid "For instance, from <filename>pixbuf.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, de <filename>pixbuf.hg</filename>: <placeholder-1/>"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9447
+msgid "_CTOR_DEFAULT"
+msgstr "_CTOR_DEFAULT"
 
-#: C/gtkmm-tutorial-in.xml:9628(title)
-msgid "_MEMBER_GET / _MEMBER_SET"
-msgstr "_MEMBER_GET / _MEMBER_SET"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9448
+msgid "This macro creates a default constructor with no arguments."
+msgstr "Esta macro crea un constructor predeterminado sin argumentos."
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9453
+msgid "_WRAP_CTOR"
+msgstr "_WRAP_CTOR"
 
-#: C/gtkmm-tutorial-in.xml:9629(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9454
 msgid ""
-"Use these macros if you're wrapping a simple struct or boxed type that "
-"provides direct access to its data members, to create getters and setters "
-"for the data members."
+"This macro creates a constructor with arguments, equivalent to a "
+"<function>*_new()</function> C function. It won't actually call the "
+"<function>*_new()</function> function, but will simply create an equivalent "
+"constructor with the same argument types. It takes a C++ constructor "
+"signature, and a C function name."
 msgstr ""
-"Use estas macros si está envolviendo una estructura simple o un tipo en caja "
-"que proporciona acceso directo a sus miembros de datos, para crear métodos "
-"de acceso y modificación para estos."
-
-#: C/gtkmm-tutorial-in.xml:9633(function)
-msgid "_MEMBER_GET(C++ name, C name, C++ type, C type)"
-msgstr "_MEMBER_GET(C++ name, C name, C++ type, C type)"
+"Esta macro crea un constructor con argumentos, equivalente a una función de "
+"C <function>*_new()</function>. En realidad no llamará a la función "
+"<function>*_new()</function>, sino que simplemente creará un constructor "
+"equivalente con los mismos tipos de argumentos. Toma una firma de "
+"constructor de C++ y un nombre de función de C."
 
-#: C/gtkmm-tutorial-in.xml:9634(function)
-msgid "_MEMBER_SET(C++ name, C name, C++ type, C type)"
-msgstr "_MEMBER_SET(C++ name, C name, C++ type, C type)"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9464 C/index-in.docbook:9960
+msgid "errthrow"
+msgstr "errthrow"
 
-#: C/gtkmm-tutorial-in.xml:9637(programlisting)
-#, no-wrap
-msgid "_MEMBER_GET(x, x, int, int)"
-msgstr "_MEMBER_GET(x, x, int, int)"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9466
+#, fuzzy
+#| msgid ""
+#| "This tells gmmproc that the C <function>*_new()</function> has a final "
+#| "GError** parameter which should be ignored."
+msgid ""
+"This tells <command>gmmproc</command> that the C <function>*_new()</"
+"function> has a final <type>GError**</type> parameter which should be "
+"ignored."
+msgstr ""
+"Esto le dice a gmmproc que el <function>*_new()</function> de C tiene un "
+"parámetro GError** final que debe ignorarse."
 
-#: C/gtkmm-tutorial-in.xml:9635(para)
-msgid "For example, in <filename>rectangle.hg</filename>: <placeholder-1/>"
-msgstr "Por ejemplo, en <filename>rectangle.hg</filename>: <placeholder-1/>"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9461
+#, fuzzy
+#| msgid "It also takes an optional extra argument: <placeholder-1/>"
+msgid "It also takes an optional extra argument: <_:variablelist-1/>"
+msgstr "También toma un argumento opcional adicional: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9641(title)
-msgid "_MEMBER_GET_PTR / _MEMBER_SET_PTR"
-msgstr "_MEMBER_GET_PTR / _MEMBER_SET_PTR"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9475
+msgid "Hand-coding constructors"
+msgstr "Escribir constructores a mano"
 
-#: C/gtkmm-tutorial-in.xml:9642(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9476
+#, fuzzy
+#| msgid ""
+#| "When a constructor must be partly hand written because, for instance, the "
+#| "<function>*_new()</function> C function's parameters do not correspond "
+#| "directly to object properties, or because the <function>*_new()</"
+#| "function> C function does more than call <function>g_object_new()</"
+#| "function>, the <function>_CONSTRUCT()</function> macro may be used in "
+#| "the .ccg file to save some work. The <function>_CONSTRUCT</function> "
+#| "macro takes a series of property names and values. For instance, from "
+#| "<filename>button.ccg</filename>: <placeholder-1/>"
 msgid ""
-"Use these macros to automatically provide getters and setters for a data "
-"member that is a pointer type. For the getter function, it will create two "
-"methods, one const and one non-const."
+"When a constructor must be partly hand written because, for instance, the "
+"<function>*_new()</function> C function's parameters do not correspond "
+"directly to object properties, or because the <function>*_new()</function> C "
+"function does more than call <function>g_object_new()</function>, the "
+"<function>_CONSTRUCT()</function> macro may be used in the .ccg file to save "
+"some work. The <function>_CONSTRUCT</function> macro takes a series of "
+"property names and values. For instance, from <filename>button.ccg</"
+"filename>:"
 msgstr ""
-"Use estas macros para proporcionar métodos de acceso y modificación para un "
-"miembro de datos que es de tipo puntero automáticamente. Para la función de "
-"acceso, creará dos métodos, uno constante y otro no constante."
-
-#: C/gtkmm-tutorial-in.xml:9647(function)
-msgid "_MEMBER_GET_PTR(C++ name, C name, C++ type, C type)"
-msgstr "_MEMBER_GET_PTR(C++ name, C name, C++ type, C type)"
-
-#: C/gtkmm-tutorial-in.xml:9648(function)
-msgid "_MEMBER_SET_PTR(C++ name, C name, C++ type, C type)"
-msgstr "_MEMBER_SET_PTR(C++ name, C name, C++ type, C type)"
+"Cuando un constructor debe escribirse a mano parcialmente porque, por "
+"ejemplo, los parámetros de la función de C <function>*_new()</function> no "
+"corresponden directamente a las propiedades del objeto, o porque la función "
+"de C <function>*_new()</function> hace más que llamar a "
+"<function>g_object_new()</function>, la macro <function>_CONSTRUCT()</"
+"function> se puede usar en el archivo .ccg para ahorrar trabajo. La macro "
+"<function>_CONSTRUCT()</function> toma una serie de nombres y valores de "
+"propiedades. Por ejemplo, de <filename>button.ccg</filename>: <placeholder-1/"
+">"
 
-#: C/gtkmm-tutorial-in.xml:9650(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9484
 #, no-wrap
 msgid ""
 "\n"
-"// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n"
-"// It's just a comment. It's difficult to find a real-world example.\n"
+"Button::Button(const Glib::ustring&amp; label, bool mnemonic)\n"
+":\n"
+"  _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n"
+"{}\n"
 msgstr ""
 "\n"
-"// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n"
-"// It's just a comment. It's difficult to find a real-world example.\n"
+"Button::Button(const Glib::ustring&amp; label, bool mnemonic)\n"
+":\n"
+"  _CONSTRUCT(\"label\", label.c_str(), \"use_underline\", gboolean(mnemonic))\n"
+"{}\n"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9495
+msgid "Macros that suppress generation of some code"
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:9649(para)
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:9496
 msgid ""
-"For example, for <classname>Pango::Analysis</classname> in <filename>item."
-"hg</filename>: <placeholder-1/>"
+"Some macros suppress the generation of some code when they are used after a "
+"<function>_CLASS_*</function> macro. Some suppress the definition in the "
+"generated .cc file, others suppress both the declaration in the .h file and "
+"the definition in the .cc file."
 msgstr ""
-"Por ejemplo, para <classname>Pango::Analysis</classname> en <filename>item."
-"hg</filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9657(title)
-msgid "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT"
-msgstr "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9503
+#, fuzzy
+#| msgid "_CTOR_DEFAULT"
+msgid "_CUSTOM_DEFAULT_CTOR"
+msgstr "_CTOR_DEFAULT"
 
-#: C/gtkmm-tutorial-in.xml:9658(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9504
 msgid ""
-"Use these macros to provide getters and setters for a data member that is a "
-"<classname>GObject</classname> type that must be referenced before being "
-"returned."
+"Suppresses declaration and definition of default constructor in "
+"<function>_CLASS_BOXEDTYPE</function>, <function>_CLASS_BOXEDTYPE_STATIC</"
+"function> and <function>_CLASS_OPAQUE_COPYABLE</function>."
 msgstr ""
-"Use estas macros para proporcionar métodos de acceso y modificación para un "
-"miembro de datos que es de tipo <classname>GObject</classname> que debe "
-"referenciarse antes de devolverse."
 
-#: C/gtkmm-tutorial-in.xml:9663(function)
-msgid "_MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type)"
-msgstr "_MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type)"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9511
+msgid "_CUSTOM_CTOR_CAST"
+msgstr "_CUSTOM_CTOR_CAST"
 
-#: C/gtkmm-tutorial-in.xml:9664(function)
-msgid "_MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type)"
-msgstr "_MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type)"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9512
+msgid ""
+"Suppresses declaration and definition of the constructor that takes a "
+"pointer to the wrapped C object in <function>_CLASS_BOXEDTYPE</function> and "
+"<function>_CLASS_BOXEDTYPE_STATIC</function>."
+msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:9666(programlisting)
-#, no-wrap
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9516
 msgid ""
-"\n"
-"_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n"
+"Suppresses definition of the constructor that takes a pointer to the wrapped "
+"C object in <function>_CLASS_INTERFACE</function> and "
+"<function>_CLASS_OPAQUE_COPYABLE</function>."
 msgstr ""
-"\n"
-"_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n"
 
-#: C/gtkmm-tutorial-in.xml:9665(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9520
 msgid ""
-"For example, in Pangomm, <filename>layoutline.hg</filename>: <placeholder-1/>"
+"Suppresses definition of the constructor that takes a pointer to the wrapped "
+"C object and the constructor that takes construct_params in "
+"<function>_CLASS_GOBJECT</function> and <function>_CLASS_GTKOBJECT</"
+"function>."
 msgstr ""
-"Por ejemplo, en Pangomm, <filename>layoutline.hg</filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9674(title)
-msgid "gmmproc Parameter Processing"
-msgstr "Procesado de parámetros de gmmproc"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9527
+msgid "_CUSTOM_DTOR"
+msgstr "_CUSTOM_DTOR"
 
-#: C/gtkmm-tutorial-in.xml:9675(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9528
+#, fuzzy
+#| msgid ""
+#| "<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, "
+#| "and <function>_WRAP_PROPERTY()</function>"
 msgid ""
-"<command>gmmproc</command> allows processing the parameters in a method "
-"signature for the macros that process method signatures (like "
-"<function>_WRAP_METHOD()</function>, <function>_WRAP_CTOR()</function> and "
-"<function>_WRAP_CREATE()</function>) in a variety of ways:"
+"Suppresses definition of destructor in <function>_CLASS_GOBJECT</function> "
+"and <function>_CLASS_GTKOBJECT</function>."
 msgstr ""
+"<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, y "
+"<function>_WRAP_PROPERTY()</function>"
 
-#: C/gtkmm-tutorial-in.xml:9682(title)
-msgid "Parameter Reordering"
-msgstr "Reordenación de parámetros"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9534
+msgid "_CUSTOM_MOVE_OPERATIONS"
+msgstr "_CUSTOM_MOVE_OPERATIONS"
 
-#: C/gtkmm-tutorial-in.xml:9689(programlisting)
-#, no-wrap
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9535
 msgid ""
-"\n"
-"        void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n"
-"        GdkEventMask events);\n"
-"      "
+"Suppresses declaration and definition of move constructor and move "
+"assignment operator in <function>_CLASS_GOBJECT</function> and "
+"<function>_CLASS_GTKOBJECT</function>."
 msgstr ""
-"\n"
-"        void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n"
-"        GdkEventMask events);\n"
-"      "
 
-#: C/gtkmm-tutorial-in.xml:9696(programlisting)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9539
+#| msgid "buttons example"
+msgid "For example:"
+msgstr "Por ejemplo:"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9540
 #, no-wrap
 msgid ""
 "\n"
-"        _WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n"
-"        const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{device}),\n"
-"        gtk_widget_set_device_events)\n"
-"      "
+"class Derived : public Glib::Object\n"
+"{\n"
+"  _CLASS_GOBJECT(Derived, GDerived, G_DERIVED, Glib::Object, GObject)\n"
+"\n"
+"  _CUSTOM_MOVE_OPERATIONS\n"
+"\n"
+"public:\n"
+"  Derived(Derived&amp;&amp; src) noexcept;\n"
+"  Derived&amp; operator=(Derived&amp;&amp; src) noexcept;\n"
+"  // ...\n"
+"};\n"
 msgstr ""
 "\n"
-"        _WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n"
-"        const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{device}),\n"
-"        gtk_widget_set_device_events)\n"
-"      "
+"class Derived : public Glib::Object\n"
+"{\n"
+"  _CLASS_GOBJECT(Derived, GDerived, G_DERIVED, Glib::Object, GObject)\n"
+"\n"
+"  _CUSTOM_MOVE_OPERATIONS\n"
+"\n"
+"public:\n"
+"  Derived(Derived&amp;&amp; src) noexcept;\n"
+"  Derived&amp; operator=(Derived&amp;&amp; src) noexcept;\n"
+"  // ...\n"
+"};\n"
 
-#: C/gtkmm-tutorial-in.xml:9706(programlisting)
-#, no-wrap
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9556
+msgid "_CUSTOM_WRAP_NEW"
+msgstr "_CUSTOM_WRAP_NEW"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9557
 msgid ""
-"\n"
-"        _WRAP_METHOD(void set_device_events(Gdk::EventMask events{.}, const\n"
-"        Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{.}),\n"
-"        gtk_widget_set_device_events)\n"
-"      "
+"Suppresses definition of <function>Glib::wrap_new()</function> function in "
+"<function>_CLASS_GOBJECT</function>."
 msgstr ""
-"\n"
-"        _WRAP_METHOD(void set_device_events(Gdk::EventMask events{.}, const\n"
-"        Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{.}),\n"
-"        gtk_widget_set_device_events)\n"
-"      "
 
-#: C/gtkmm-tutorial-in.xml:9683(para)
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9563
+#| msgid "_WRAP_VFUNC"
+msgid "_CUSTOM_WRAP_FUNCTION"
+msgstr "_CUSTOM_WRAP_FUNCTION"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9564
 #, fuzzy
 #| msgid ""
-#| "Also, as with <function>_WRAP_CTOR()</function>, it is possible to "
-#| "reorder the parameters of the C++ method by using gmmproc's C++ to C "
-#| "parameter mapping functionality. Using this functionality, it is possible "
-#| "to map a C++ parameter to a C parameter by specifying the C parameter "
-#| "name. For example, if the <function>gtk_widget_set_device_events()</"
-#| "function> declaration is the following: <placeholder-1/> Something like "
-#| "the following would change the order of the parameters in the C++ method: "
-#| "<placeholder-2/> The <literal>{param_name}</literal> following each of "
-#| "the names of the parameters tells gmmproc to map those C++ parameters to "
-#| "the C parameters with the given names. Since the C++ parameter names "
-#| "correspond to the C ones, the above could be re-written as: "
-#| "<placeholder-3/>"
+#| "<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, "
+#| "and <function>_WRAP_PROPERTY()</function>"
 msgid ""
-"For all the macros that process method signatures, it is possible to specify "
-"a different order for the C++ parameters than the existing order in the C "
-"function, virtual function or signal. For example, say that the following C "
-"function were being wrapped as a C++ method for the <classname>Gtk::Widget</"
-"classname> class: <placeholder-1/> However, changing the order of the C++ "
-"method's two parameters is necessary. Something like the following would "
-"wrap the function as a C++ method with a different order for the two "
-"parameters: <placeholder-2/> The <literal>{c_param_name}</literal> following "
-"the method parameter names tells <command>gmmproc</command> to map the C++ "
-"parameter to the specified C parameter within the <literal>{}</literal>. "
-"Since the C++ parameter names correspond to the C ones, the above could be "
-"re-written as: <placeholder-3/>"
+"Suppresses definition of <function>Glib::wrap()</function> function in "
+"<function>_CLASS_GOBJECT</function> and <function>_CLASS_GTKOBJECT</"
+"function>."
 msgstr ""
-"Además, al igual que con <function>_WRAP_CTOR()</function>, es posible "
-"reordenar los parámetros del método de C++ usando la función de mapeo de C++ "
-"a C de gmmproc. El uso de esta función hace posible mapear un parámetro de C+"
-"+ a uno de C mediante la especificación del nombre del parámetro de C. Por "
-"ejemplo, si la declaración de <function>gtk_widget_set_device_events()</"
-"function> es la siguiete: <placeholder-1/> Algo así cambiaría el orden de "
-"los parámetros en el método de C++: <placeholder-2/> El <literal>{param_name}"
-"</literal> que sigue a cada uno de los nombres de los parámetros le dice a "
-"gmmproc que mapee esos parámetros de C++ a los de C con los nombres dados. "
-"Ya que que los nombres de los parámetros de C++ corresponden a los de C, lo "
-"anterior podría reescribirse así: <placeholder-3/>"
+"<function>_WRAP_METHOD()</function>, <function>_WRAP_SIGNAL()</function>, y "
+"<function>_WRAP_PROPERTY()</function>"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9570
+#| msgid "_WRAP_VFUNC"
+msgid "_NO_WRAP_FUNCTION"
+msgstr "_NO_WRAP_FUNCTION"
 
-#: C/gtkmm-tutorial-in.xml:9713(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9571
 msgid ""
-"Please note that when reordering parameters for a <function>_WRAP_SIGNAL()</"
-"function> method signature, the C parameter names would always be "
-"<literal>p0</literal>, <literal>p1</literal>, etc. because the "
-"<filename>generate_extra_defs</filename> utility uses those parameter names "
-"no matter what the C API's parameter names may be. It's how the utility is "
-"written presently."
+"Suppresses declaration and definition of <function>Glib::wrap()</function> "
+"function in <function>_CLASS_GOBJECT</function>, <function>_CLASS_BOXEDTYPE</"
+"function>, <function>_CLASS_BOXEDTYPE_STATIC</function>, "
+"<function>_CLASS_OPAQUE_COPYABLE</function>, <function>_CLASS_INTERFACE</"
+"function> and <function>_CLASS_GTKOBJECT</function>."
 msgstr ""
 
-#: C/gtkmm-tutorial-in.xml:9725(title)
-msgid "Optional Parameter Processing"
-msgstr "Procesado de parámetros opcionales"
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:9581
+msgid "Method macros"
+msgstr "Macros de métodos"
 
-#: C/gtkmm-tutorial-in.xml:9734(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"        GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar*\n"
-"        label);\n"
-"      "
-msgstr ""
-"\n"
-"        GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar*\n"
-"        label);\n"
-"      "
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9584
+msgid "_WRAP_METHOD"
+msgstr "_WRAP_METHOD"
 
-#: C/gtkmm-tutorial-in.xml:9744(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"        _WRAP_CTOR(ToolButton(Widget&amp; icon_widget, const Glib::ustring&amp;\n"
-"        label{?}), gtk_tool_button_new)\n"
-"      "
-msgstr ""
-"\n"
-"        _WRAP_CTOR(ToolButton(Widget&amp; icon_widget, const Glib::ustring&amp;\n"
-"        label{?}), gtk_tool_button_new)\n"
-"      "
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9585
+msgid "This macro generates the C++ method to wrap a C function."
+msgstr "Esta macro genera el método de C++ para envolver una función de C."
 
-#: C/gtkmm-tutorial-in.xml:9726(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9586
+#, fuzzy
+#| msgid "_WRAP_METHOD( C++ method signature, C function name)"
 msgid ""
-"For all macros processing method signatures except <function>_WRAP_SIGNAL()</"
-"function> and <function>_WRAP_VFUNC()</function> it is also possible to make "
-"the parameters optional so that extra C++ methods are generated without the "
-"specified optional parameter. For example, say that the following "
-"<function>*_new()</function> function were being wrapped as a constructor in "
-"the <classname>Gtk::ToolButton</classname> class: <placeholder-1/> Also, say "
-"that the C API allowed NULL for the function's <parameter>label</parameter> "
-"parameter so that that parameter is optional. It would be possible to have "
-"<command>gmmproc</command> generate the original constructor (with all the "
-"parameters) along with an additional constructor without that optional "
-"parameter by appending a <literal>{?}</literal> to the parameter name like "
-"so: <placeholder-2/> In this case, two constructors would be generated: One "
-"with the optional parameter and one without it."
-msgstr ""
+"<function>_WRAP_METHOD( C++ method signature, C function name)</function>"
+msgstr "_WRAP_METHOD( C++ method signature, C function name)"
 
-#: C/gtkmm-tutorial-in.xml:9754(title)
-msgid "Output Parameter Processing"
-msgstr "Procesado de parámetros de salida"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9587
+#, fuzzy
+#| msgid "For instance, from <filename>entry.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>entry.hg</filename>:"
+msgstr "Por ejemplo, de <filename>entry.hg</filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9764(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9588
 #, no-wrap
 msgid ""
 "\n"
-"        GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n"
-"      "
+"_WRAP_METHOD(void set_text(const Glib::ustring&amp; text), gtk_entry_set_text)\n"
 msgstr ""
 "\n"
-"        GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n"
-"      "
+"_WRAP_METHOD(void set_text(const Glib::ustring&amp; text), gtk_entry_set_text)\n"
 
-#: C/gtkmm-tutorial-in.xml:9770(programlisting)
-#, no-wrap
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9591
 msgid ""
-"\n"
-"        _WRAP_METHOD(void get_request_mode(SizeRequestMode&amp; mode{OUT})\n"
-"        const, gtk_widget_get_request_mode)\n"
-"      "
+"The C function (e.g. <function>gtk_entry_set_text</function>) is described "
+"more fully in the .defs file, and the <filename>convert*.m4</filename> files "
+"contain the necessary conversion from the C++ parameter type to the C "
+"parameter type. This macro also generates doxygen documentation comments "
+"based on the <filename>*_docs.xml</filename> and <filename>*_docs_override."
+"xml</filename> files."
 msgstr ""
-"\n"
-"        _WRAP_METHOD(void get_request_mode(SizeRequestMode&amp; mode{OUT})\n"
-"        const, gtk_widget_get_request_mode)\n"
-"      "
+"La función de C (por ejemplo, <function>gtk_entry_set_text</function>) se "
+"describe en mayor detalle en el archivo .defs, y los archivos "
+"<filename>convert*.m4</filename> contienen la conversión necesaria del tipo "
+"de parámetro de C++ al tipo de C. Esta macro también genera comentarios de "
+"documentación de Doxygen basados en los archivos <filename>*_docs.xml</"
+"filename> y <filename>*_docs_override.xml</filename>."
 
-#: C/gtkmm-tutorial-in.xml:9779(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"        _INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 =\n"
-"        (SizeRequestMode)($4)')\n"
-"      "
-msgstr ""
-"\n"
-"        _INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 =\n"
-"        (SizeRequestMode)($4)')\n"
-"      "
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9600 C/index-in.docbook:9827 C/index-in.docbook:9935
+msgid "refreturn"
+msgstr "refreturn"
 
-#: C/gtkmm-tutorial-in.xml:9784(programlisting)
-#, no-wrap
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9602
 msgid ""
-"\n"
-"        _INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 =\n"
-"        ($1)($4)')\n"
-"      "
+"Do an extra <function>reference()</function> on the return value, in case "
+"the C function does not provide a reference."
 msgstr ""
-"\n"
-"        _INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 =\n"
-"        ($1)($4)')\n"
-"      "
+"Hace una <function>reference()</function> adicional en el valor de retorno, "
+"en el caso de que la función de C no proporcione una referencia."
 
-#: C/gtkmm-tutorial-in.xml:9755(para)
-#, fuzzy
-#| msgid ""
-#| "With <function>_WRAP_METHOD()</function> it is also possible to include "
-#| "an output parameter in the C++ method declaration in which the return of "
-#| "the C function would be placed and to have the C++ method return "
-#| "<type>void</type>. To do that, simply include the output parameter "
-#| "declaration in the C++ method declaration appending a <literal>{OUT}</"
-#| "literal> to the output parameter name. For example, if "
-#| "<function>gtk_widget_get_request_mode()</function> is declared as the "
-#| "following: <placeholder-1/> And having the C++ method set an output "
-#| "parameter is desired instead of returning a <type>SizeRequestMode</type>, "
-#| "something like the following could be used: <placeholder-2/> the "
-#| "<literal>{OUT}</literal> appended to the name of the <parameter>mode</"
-#| "parameter> output parameter tells gmmproc to place the return of the C "
-#| "function in that output parameter. In this case, however, a necessary "
-#| "initialization macro like the following would also have to be specified: "
-#| "<placeholder-3/> Which could also be written as: <placeholder-4/>"
-msgid ""
-"With <function>_WRAP_METHOD()</function> it is also possible for the return "
-"of the wrapped C function (if it has one) to be placed in an output "
-"parameter of the C++ method instead of having the C++ method also return a "
-"value like the C function does. To do that, simply include the output "
-"parameter in the C++ method parameter list appending a <literal>{OUT}</"
-"literal> to the output parameter name. For example, if "
-"<function>gtk_widget_get_request_mode()</function> is declared as the "
-"following: <placeholder-1/> And having the C++ method set an output "
-"parameter is desired instead of returning a <type>SizeRequestMode</type>, "
-"something like the following could be used: <placeholder-2/> The "
-"<literal>{OUT}</literal> appended to the name of the <parameter>mode</"
-"parameter> output parameter tells <command>gmmproc</command> to place the "
-"return of the C function in that output parameter. In this case, however, a "
-"necessary initialization macro like the following would also have to be "
-"specified: <placeholder-3/> Which could also be written as: <placeholder-4/>"
-msgstr ""
-"Con <function>_WRAP_METHOD()</function> también es posible incluir un "
-"parámetro de salida en la declaración del método de C++ en el que se pone el "
-"valor de retorno de la función de C, y que el método de C++ devuelva "
-"<type>void</type>. Para hacer esto, simplemente incluya la declaración del "
-"parámetro de salida en la declaración del método de C++ adjuntando "
-"<literal>{OUT}</literal> al nombre del parámetro de salida. Por ejemplo, si "
-"<function>gtk_widget_get_request_mode()</function> se declara como sigue: "
-"<placeholder-1/> Y se quiere que el método de C++ establezca un parámetro de "
-"salida en lugar de devolver un <type>SizeRequestMode</type>, algo como lo "
-"siguiente podría usarse: <placeholder-2/> el <literal>{OUT}</literal> "
-"adjunto al nombre del parámetro de salida <parameter>mode</parameter> le "
-"dice a gmmproc que ponga el valor de retorno de la función de C en ese "
-"parámetro de salida. En este caso, sin embargo, una macro de inicialización "
-"necesaria como la que sigue también tendría que especificarse: "
-"<placeholder-3/> Lo que también podría reescribirse así: <placeholder-4/>"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9607 C/index-in.docbook:9729
+msgid "errthrow [\"&lt;exceptions&gt;\"]"
+msgstr "errthrow [\"&lt;exceptions&gt;\"]"
 
-#: C/gtkmm-tutorial-in.xml:9795(programlisting)
-#, no-wrap
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9609
 msgid ""
-"\n"
-"        gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view,\n"
-"        GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect);\n"
-"      "
+"Use the last GError** parameter of the C function to throw an exception. The "
+"optional \"&lt;exceptions&gt;\" is a comma-separated list of exceptions that "
+"can be thrown. It determines which @throws Doxygen commands are added to the "
+"documentation. Default value is <classname>Glib::Error</classname>. If you "
+"want a comma in the description of an exception, precede it by a backslash. "
+"Example: <code>errthrow \"Glib::OptionError Hello\\, world, Glib::"
+"ConvertError\"</code>"
 msgstr ""
-"\n"
-"        gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view,\n"
-"        GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect);\n"
-"      "
 
-#: C/gtkmm-tutorial-in.xml:9802(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"        _WRAP_METHOD(bool get_cell_rect(const TreeModel::Path&amp; path, const\n"
-"        CellRenderer&amp; cell, Gdk::Rectangle&amp; rect{&gt;&gt;}) const,\n"
-"        gtk_icon_view_get_cell_rect)\n"
-"      "
-msgstr ""
-"\n"
-"        _WRAP_METHOD(bool get_cell_rect(const TreeModel::Path&amp; path, const\n"
-"        CellRenderer&amp; cell, Gdk::Rectangle&amp; rect{&gt;&gt;}) const,\n"
-"        gtk_icon_view_get_cell_rect)\n"
-"      "
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9620 C/index-in.docbook:9835 C/index-in.docbook:9901
+#: C/index-in.docbook:10140
+msgid "deprecated [\"&lt;text&gt;\"]"
+msgstr "deprecated [\"&lt;text&gt;\"]"
 
-#: C/gtkmm-tutorial-in.xml:9817(programlisting)
-#, no-wrap
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9622 C/index-in.docbook:9837 C/index-in.docbook:9903
+#: C/index-in.docbook:10142
 msgid ""
-"\n"
-"        _INITIALIZATION(`Gdk::Rectangle&amp;',`GdkRectangle', `$3 =\n"
-"        Glib::wrap(&amp;($4))')\n"
-"      "
+"Puts the generated code in #ifdef blocks. Text about the deprecation can be "
+"specified as an optional parameter."
 msgstr ""
-"\n"
-"        _INITIALIZATION(`Gdk::Rectangle&amp;',`GdkRectangle', `$3 =\n"
-"        Glib::wrap(&amp;($4))')\n"
-"      "
+"Pone el código generado en bloques #ifdef. El texto que explica por qué se "
+"marca como obsoleto puede especificarse como un parámetro opcional."
 
-#: C/gtkmm-tutorial-in.xml:9789(para)
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9628
+msgid "constversion"
+msgstr "constversion"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9630
 msgid ""
-"<function>_WRAP_METHOD()</function> also supports setting C++ output "
-"parameters from C output parameters if the C function being wrapped has any. "
-"Suppose, for example, that we want to wrap the following C function that "
-"returns a value in its C output parameter <parameter>rect</parameter>: "
-"<placeholder-1/> To have <command>gmmproc</command> place the value returned "
-"in the C++ <parameter>rect</parameter> output parameter, something like the "
-"following <function>_WRAP_METHOD()</function> directive could be used: "
-"<placeholder-2/> The <literal>{&gt;&gt;}</literal> following the "
-"<parameter>rect</parameter> parameter name indicates that the C++ output "
-"parameter should be set from the value returned in the C parameter from the "
-"C function. <command>gmmproc</command> will generate a declaration of a "
-"temporary variable in which to store the value of the C output parameter and "
-"a statement that sets the C++ output parameter from the temporary variable. "
-"In this case it may be necessary to have an <function>_INITIALIZATION()</"
-"function> describing how to set a <classname>Gdk::Rectangle&amp;</classname> "
-"from a <classname>GdkRectangle*</classname> such as the following: "
-"<placeholder-3/>"
+"Just call the non-const version of the same function, instead of generating "
+"almost duplicate code."
 msgstr ""
-"<function>_WRAP_METHOD()</function> también soporta establecer parámetros de "
-"salida de C++ desde parámetros de salida de C si la función de C que está "
-"envolviendo los tiene. Suponga, por ejemplo, que quiere envolver la "
-"siguiente función de C que devuelve un valor en su parámetro de salida de C "
-"<parameter>rect</parameter>: <placeholder-1/> Para hacer que "
-"<command>gmmproc</command> ponga el valor devuelto en el parámetro de salida "
-"de C++ <parameter>rect</parameter> una vez que la función de C retorna, se "
-"puede usar algo como la siguiente directiva de <function>WRAP_METHOD()</"
-"function>: <placeholder-2/> El <literal>{&gt;&gt;}</literal> que sigue al "
-"nombre del parámetro <parameter>rect</parameter> indica que el parámetro de "
-"salida de C++ debe establecerse a partir del valor devuelto por el parámetro "
-"de C desde la función de C. <command>gmmproc</command> generará una "
-"declaración de una variable temporal en la que se almacenará el valor del "
-"parámetro de salida de C y una declaración que establece el parámetro de "
-"salida de C++ desde la variable temporal. En este caso puede ser necesario "
-"tener una <function>_INITIALIZATION()</function> que describa cómo "
-"establecer un <classname>Gdk::Rectangle&amp;</classname> desde un "
-"<classname>GdkRectangle*</classname> como la siguiente: <placeholder-3/>"
+"Sólo llama a la versión no constante de la misma función, en lugar de "
+"generar código casi duplicado."
 
-#: C/gtkmm-tutorial-in.xml:9827(title)
-msgid "Basic Types"
-msgstr "Tipos básicos"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9635 C/index-in.docbook:9742 C/index-in.docbook:9842
+#: C/index-in.docbook:9908 C/index-in.docbook:10147
+msgid "newin \"&lt;version&gt;\""
+msgstr "newin \"&lt;version&gt;\""
 
-#: C/gtkmm-tutorial-in.xml:9828(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9637 C/index-in.docbook:9744 C/index-in.docbook:9844
+#: C/index-in.docbook:9910 C/index-in.docbook:10149
 msgid ""
-"Some of the basic types that are used in C APIs have better alternatives in C"
-"++. For example, there's no need for a <type>gboolean</type> type since C++ "
-"has <type>bool</type>. The following list shows some commonly-used types in "
-"C APIs and what you might convert them to in a C++ wrapper library."
+"Adds a @newin Doxygen command to the documentation, or replaces the @newin "
+"command generated from the C documentation."
 msgstr ""
-"Algunos de los tipos básicos que se usan en las API de C tienen alternativas "
-"mejores en C++. Por ejemplo, no hay necesidad de un tipo <type>gboolean</"
-"type> dado que C++ tiene el <type>bool</type>. La siguiente lista muestra "
-"algunos tipos comúnmente usados en API de C y en qué los puede convertir en "
-"una biblioteca envoltorio de C++"
 
-#: C/gtkmm-tutorial-in.xml:9833(title)
-msgid "Basic Type equivalents"
-msgstr "Tipos básicos equivalentes"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9642 C/index-in.docbook:9849 C/index-in.docbook:9982
+#: C/index-in.docbook:10068
+msgid "ifdef &lt;identifier&gt;"
+msgstr "ifdef &lt;identifier&gt;"
 
-#: C/gtkmm-tutorial-in.xml:9835(segtitle)
-msgid "C type"
-msgstr "Tipo de C"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9644 C/index-in.docbook:9851 C/index-in.docbook:9984
+#: C/index-in.docbook:10070
+msgid "Puts the generated code in #ifdef blocks."
+msgstr "Pone el código generado en bloques #ifdef."
 
-#: C/gtkmm-tutorial-in.xml:9836(segtitle)
-msgid "C++ type"
-msgstr "Tipo de C++"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9648 C/index-in.docbook:9988
+msgid "slot_name &lt;parameter_name&gt;"
+msgstr "slot_name &lt;parameter_name&gt;"
 
-#: C/gtkmm-tutorial-in.xml:9837(type)
-msgid "gboolean"
-msgstr "gboolean"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9650 C/index-in.docbook:9990
+msgid ""
+"Specifies the name of the slot parameter of the method, if it has one. This "
+"enables <command>gmmproc</command> to generate code to copy the slot and "
+"pass the copy on to the C function in its final <literal>gpointer user_data</"
+"literal> parameter. The <literal>slot_callback</literal> option must also be "
+"used to specify the name of the glue callback function to also pass on to "
+"the C function."
+msgstr ""
+"Especifica el nombre del parámetro «slot» del método, si tiene uno. Esto le "
+"permite a <command>gmmproc</command> generar código para copiar el «slot» y "
+"pasarle la copia a la función de C en su parámetro <literal>gpointer "
+"user_data</literal> final. La opción <literal>slot_callback</literal> "
+"también debe usarse para especificar el nombre de la función de devolución "
+"de llamada adhesiva que pasar a la función de C."
 
-#: C/gtkmm-tutorial-in.xml:9837(type)
-msgid "bool"
-msgstr "bool"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9660 C/index-in.docbook:10000
+msgid "slot_callback &lt;function_name&gt;"
+msgstr "slot_callback &lt;function_name&gt;"
 
-#: C/gtkmm-tutorial-in.xml:9838(type)
-msgid "gint"
-msgstr "gint"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9662 C/index-in.docbook:10002
+msgid ""
+"Used in conjunction with the <literal>slot_name</literal> option to specify "
+"the name of the glue callback function that handles extracting the slot and "
+"then calling it. The address of this callback is also passed on to the C "
+"function that the method wraps."
+msgstr ""
+"Usado junto con la opción <literal>slot_name</literal> para especificar el "
+"nombre de la función de devolución de llamada adhesiva que maneja la "
+"extracción del «slot» y su llamada. La dirección de esta devolución de "
+"llamada también se pasa a la función de C que el método envuelve."
 
-#: C/gtkmm-tutorial-in.xml:9838(type)
-msgid "int"
-msgstr "int"
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9670 C/index-in.docbook:10010
+msgid "no_slot_copy"
+msgstr "no_slot_copy"
 
-#: C/gtkmm-tutorial-in.xml:9839(type)
-msgid "guint"
-msgstr "guint"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9672 C/index-in.docbook:10012
+#, fuzzy
+#| msgid ""
+#| "Tells <command>gmmproc</command> not to pass a copy of the slot to the C "
+#| "function, if the method has one. Instead the slot itself is passed. The "
+#| "slot parameter name and the glue callback function must have been "
+#| "specified with the <literal>slot_name</literal> and "
+#| "<literal>slot_callbback</literal> options respectively."
+msgid ""
+"Tells <command>gmmproc</command> not to pass a copy of the slot to the C "
+"function, if the method has one. Instead the slot itself is passed. The slot "
+"parameter name and the glue callback function must have been specified with "
+"the <literal>slot_name</literal> and <literal>slot_callback</literal> "
+"options respectively."
+msgstr ""
+"Le dice a <command>gmmproc</command> que no le pase una copia del «slot» a "
+"la función de C, si el método tiene una. En su lugar, se pasa el «slot» en "
+"sí. El nombre del parámetro «slot» y la función de devolución de llamada "
+"adhesiva deben haberse especificado con las opciones <literal>slot_name</"
+"literal> y <literal>slot_callbback</literal> respectivamente."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9597 C/index-in.docbook:9726 C/index-in.docbook:9797
+#: C/index-in.docbook:9898 C/index-in.docbook:9932 C/index-in.docbook:10085
+#, fuzzy
+#| msgid "There are some optional extra arguments: <placeholder-1/>"
+msgid "There are some optional extra arguments: <_:variablelist-1/>"
+msgstr "Hay algunos argumentos opcionales adicionales: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9840(type)
-msgid "gdouble"
-msgstr "gdouble"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9685
+msgid ""
+"Objects used via <classname>RefPtr</classname>: Pass the <classname>RefPtr</"
+"classname> as a const reference. For instance, <code>const Glib::RefPtr&lt;"
+"Gtk::FileFilter&gt;&amp; filter</code>."
+msgstr ""
+"Objetos usados a través de <classname>RefPtr</classname>: pase el "
+"<classname>RefPtr</classname> como una referencia constante. Por ejemplo, "
+"<code>const Glib::RefPtr&lt;Gtk::FileFilter&gt;&amp; filter</code>."
 
-#: C/gtkmm-tutorial-in.xml:9840(type)
-msgid "double"
-msgstr "doble"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9689
+msgid ""
+"Const Objects used via <classname>RefPtr</classname>: If the object should "
+"not be changed by the function, then make sure that the object is const, "
+"even if the <classname>RefPtr</classname> is already const. For instance, "
+"<code>const Glib::RefPtr&lt;const Gtk::FileFilter&gt;&amp; filter</code>."
+msgstr ""
+"Objetos constantes usados a través de <classname>RefPtr</classname>: si la "
+"función no debe cambiar el objeto, asegúrese de que el objeto es constante, "
+"incluso si el <classname>RefPtr</classname> ya lo es. Por ejemplo, "
+"<code>const Glib::RefPtr&lt;const Gtk::FileFilter&gt;&amp; filter</code>."
 
-#: C/gtkmm-tutorial-in.xml:9841(type)
-msgid "gunichar"
-msgstr "gunichar"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9694
+#, fuzzy
+#| msgid ""
+#| "Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
+#| "parameters: First, you need to discover what objects are contained in the "
+#| "list's data field for each item, usually by reading the documentation for "
+#| "the C function. The list can then be wrapped by a <classname>std::vector</"
+#| "classname> type. For instance, <code>std::vector&lt; Glib::RefPtr&lt;"
+#| "Action&gt; &gt;</code>. You may need to define a Traits type to specify "
+#| "how the C and C++ types should be converted."
+msgid ""
+"Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
+"parameters: First, you need to discover what objects are contained in the "
+"list's data field for each item, usually by reading the documentation for "
+"the C function. The list can then be wrapped by a <classname>std::vector</"
+"classname> type. For instance, <code>std::vector&lt;Glib::RefPtr&lt;Gdk::"
+"Pixbuf&gt;&gt;</code>. You may need to define a Traits type to specify how "
+"the C and C++ types should be converted."
+msgstr ""
+"Envolver parámetros <classname>GList*</classname> y <classname>GSList*</"
+"classname>: primero, necesita descubrir qué objetos están contenidos en los "
+"campos de datos de la lista por cada elemento, generalmente mediante la "
+"lectura de la documentación de la función de C. Un tipo <classname>std::"
+"vector</classname> podrá entonces envolver la lista. Por ejemplo, <code>std::"
+"vector&lt; Glib::RefPtr&lt;Action&gt; &gt;</code>. Tal vez necesite definir "
+"un tipo «Traits» para especificar cómo deben convertirse los tipos de C y C+"
+"+."
 
-#: C/gtkmm-tutorial-in.xml:9842(type)
-msgid "gchar*"
-msgstr "gchar*"
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:9710
+#, no-wrap
+msgid "#m4 
_CONVERSION(`GSList*',`std::vector&lt;Widget*&gt;',`Glib::SListHandler&lt;Widget*&gt;::slist_to_vector($3, 
Glib::OWNERSHIP_SHALLOW)')"
+msgstr "#m4 
_CONVERSION(`GSList*',`std::vector&lt;Widget*&gt;',`Glib::SListHandler&lt;Widget*&gt;::slist_to_vector($3, 
Glib::OWNERSHIP_SHALLOW)')"
 
-#: C/gtkmm-tutorial-in.xml:9842(classname)
-msgid "std::string"
-msgstr "std::string"
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9702
+#, fuzzy
+#| msgid ""
+#| "Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
+#| "return types: You must discover whether the caller should free the list "
+#| "and whether it should release the items in the list, again by reading the "
+#| "documentation of the C function. With this information you can choose the "
+#| "ownership (none, shallow or deep) for the m4 conversion rule, which you "
+#| "should probably put directly into the .hg file because the ownership "
+#| "depends on the function rather than the type. For instance: "
+#| "<placeholder-1/>"
+msgid ""
+"Wrapping <classname>GList*</classname> and <classname>GSList*</classname> "
+"return types: You must discover whether the caller should free the list and "
+"whether it should release the items in the list, again by reading the "
+"documentation of the C function. With this information you can choose the "
+"ownership (none, shallow or deep) for the m4 conversion rule, which you "
+"should probably put directly into the .hg file because the ownership depends "
+"on the function rather than the type. For instance: <_:programlisting-1/>"
+msgstr ""
+"Envolver los tipos de retorno de <classname>GList*</classname> y "
+"<classname>GSList*</classname>: debe descubrir si el llamador debe liberar "
+"la lista y si debe liberar sus elementos, también mediante la lectura de la "
+"documentación de la función de C. Con esta información puede elegir la "
+"posesión (ninguna, superficial o profunda) para la regla de conversión m4, "
+"la que probablemente deba poner directamente en el archivo .hg porque la "
+"posesión depende de la función en lugar del tipo. Por ejemplo: "
+"<placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9842(seg)
-msgid "<placeholder-1/> (or <placeholder-2/> for filenames)"
-msgstr "<placeholder-1/> (o <placeholder-2/> para nombres de archivos)"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9681
+#, fuzzy
+#| msgid ""
+#| "Selecting which C++ types should be used is also important when wrapping "
+#| "C API. Though it's usually obvious what C++ types should be used in the C+"
+#| "+ method, here are some hints: <placeholder-1/>"
+msgid ""
+"Selecting which C++ types should be used is also important when wrapping C "
+"API. Though it's usually obvious what C++ types should be used in the C++ "
+"method, here are some hints: <_:itemizedlist-1/>"
+msgstr ""
+"Seleccionar qué tipos de C++ deben usarse también es importante cuando se "
+"envuelve una API de C. A pesar de que generalmente es obvio qué tipos de C++ "
+"deben usarse en el método de C++, aquí hay algunos consejos: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9849(title)
-msgid "Hand-coded source files"
-msgstr "Archivos de código fuente programados a mano"
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9716
+msgid "_WRAP_METHOD_DOCS_ONLY"
+msgstr "_WRAP_METHOD_DOCS_ONLY"
 
-#: C/gtkmm-tutorial-in.xml:9850(para)
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9717
 msgid ""
-"You might want to include additional source files that will not be generated "
-"by <command>gmmproc</command> from <filename>.hg</filename> and <filename>."
-"ccg</filename> files. You can simply place these in your "
-"<filename>libsomething/libsomethingmm</filename> directory and mention them "
-"in the <filename>Makefile.am</filename> in the <varname>files_extra_h</"
-"varname> and <varname>files_extra_cc</varname> variables."
+"This macro is like <function>_WRAP_METHOD()</function>, but it generates "
+"only the documentation for a C++ method that wraps a C function. Use this "
+"when you must hand-code the method, but you want to use the documentation "
+"that would be generated if the method was generated."
 msgstr ""
-"Tal vez quiera incluir archivos de código fuente adicionales que "
-"<command>gmmproc</command> no generará desde archivos <filename>.hg</"
-"filename> y <filename>.ccg</filename>. Puede simplemente ponerlos en su "
-"carpeta <filename>libsomething/libsomethingmm</filename> y mencionarlos en "
-"el <filename>Makefile.am</filename> en las variables <varname>files_extra_h</"
-"varname> y <varname>files_extra_cc</varname>."
+"Esta macro es similar a <function>_WRAP_METHOD()</function>, pero sólo "
+"genera la documentación de un método de C++ que envuelve una función de C. "
+"Úsela cuando debe escribir el método a mano, pero quiere usar la "
+"documentación que se crearía si el método se generara."
 
-#: C/gtkmm-tutorial-in.xml:9860(title)
-msgid "Initialization"
-msgstr "Inicialización"
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9721
+#, fuzzy
+#| msgid "_WRAP_METHOD_DOCS_ONLY(C function name)"
+msgid "<function>_WRAP_METHOD_DOCS_ONLY(C function name)</function>"
+msgstr "_WRAP_METHOD_DOCS_ONLY(C function name)"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9722
+#, fuzzy
+#| msgid ""
+#| "For instance, from <filename>container.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>recentinfo.hg</filename>:"
+msgstr "Por ejemplo, de <filename>container.hg</filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9869(programlisting)
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9723
 #, no-wrap
+#| msgid ""
+#| "\n"
+#| "_WRAP_METHOD_DOCS_ONLY(gtk_container_remove)\n"
 msgid ""
 "\n"
-"void init()\n"
-"{\n"
-"  Gtk::Main::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table.\n"
-"  wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.\n"
-"}\n"
+"_WRAP_METHOD_DOCS_ONLY(gtk_recent_info_get_applications)\n"
 msgstr ""
 "\n"
-"void init()\n"
-"{\n"
-"  Gtk::Main::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table.\n"
-"  wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.\n"
-"}\n"
+"_WRAP_METHOD_DOCS_ONLY(gtk_recent_info_get_applications)\n"
 
-#: C/gtkmm-tutorial-in.xml:9861(para)
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9731
 msgid ""
-"Your library must be initialized before it can be used, to register the new "
-"types that it makes available. Also, the C library that you are wrapping "
-"might have its own initialization function that you should call. You can do "
-"this in an <function>init()</function> function that you can place in hand-"
-"coded <filename>init.h</filename> and <filename>init.cc</filename> files. "
-"This function should initialize your dependencies (such as the C function, "
-"and <application>gtkmm</application>) and call your generated "
-"<function>wrap_init()</function> function. For instance: <placeholder-1/>"
+"Excludes documentation of the last GError** parameter of the C function. The "
+"optional \"&lt;exceptions&gt;\" is a comma-separated list of exceptions that "
+"can be thrown. It determines which @throws Doxygen commands are added to the "
+"documentation. Default value is <classname>Glib::Error</classname>. If you "
+"want a comma in the description of an exception, precede it by a backslash. "
+"Example: <code>errthrow \"Glib::OptionError Hello\\, world, Glib::"
+"ConvertError\"</code>"
 msgstr ""
-"Su biblioteca debe inicializarse antes de que pueda usarla, para registrar "
-"los tipos nuevos que hace disponibles. Además, la biblioteca de C que está "
-"envolviendo podría tener su propia función de inicialización a la que debe "
-"llamar. Puede hacerlo en una función <function>init()</function> que puede "
-"poner en archivos <filename>init.h</filename> e <filename>init.cc</filename> "
-"programados a mano. Esta función debe inicializar sus dependencias (como la "
-"función de C, y <application>gtkmm</application>) y llamar a su función "
-"<function>wrap_init()</function> generada. Por ejemplo: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9877(para)
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9749
+#| msgid "refreturn"
+msgid "voidreturn"
+msgstr "voidreturn"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9751
 msgid ""
-"The implementation of the <function>wrap_init()</function> method in "
-"<filename>wrap_init.cc</filename> is generated by "
-"<filename>generate_wrap_init.pl</filename>, but the declaration in "
-"<filename>wrap_init.h</filename> is hand-coded, so you will need to adjust "
-"<filename>wrap_init.h</filename> so that the <function>wrap_init()</"
-"function> function appears in the correct C++ namespace."
+"Don't include a @return Doxygen command in the documentation. Useful if the "
+"wrapped C function returns a value, but the corresponding C++ method returns "
+"<type>void</type>."
 msgstr ""
-"<filename>generate_wrap_init.pl</filename> genera la implementación del "
-"método <function>wrap_init()</function> en <filename>wrap_init.cc</"
-"filename>, pero la declaración en <filename>wrap_init.h</filename> se "
-"programa a mano, por lo que necesitará ajustar <filename>wrap_init.h</"
-"filename> de manera tal que la función <function>wrap_init()</function> "
-"aparezca en el espacio de nombres de C++ correcto."
 
-#: C/gtkmm-tutorial-in.xml:9886(title)
-msgid "Problems in the C API."
-msgstr "Problemas en la API de C."
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9761
+#| msgid "_IGNORE / _IGNORE_SIGNAL"
+msgid "_IGNORE, _IGNORE_SIGNAL, _IGNORE_PROPERTY"
+msgstr "_IGNORE, _IGNORE_SIGNAL, _IGNORE_PROPERTY"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9762
+#, fuzzy
+#| msgid ""
+#| "<command>gmmproc</command> will warn you on stdout about functions and "
+#| "signals that you have forgotten to wrap, helping to ensure that you are "
+#| "wrapping the complete API. But if you don't want to wrap some functions "
+#| "or signals, or if you chose to hand-code some methods then you can use "
+#| "the _IGNORE() or _IGNORE_SIGNAL() macro to make <command>gmmproc</"
+#| "command> stop complaining."
+msgid ""
+"<command>gmmproc</command> will warn you on stdout about functions, signals, "
+"properties and child properties that you have forgotten to wrap, helping to "
+"ensure that you are wrapping the complete API. But if you don't want to wrap "
+"some functions, signals, properties or child properties, or if you chose to "
+"hand-code some methods then you can use the _IGNORE(), _IGNORE_SIGNAL() or "
+"_IGNORE_PROPERTY() macro to make <command>gmmproc</command> stop complaining."
+msgstr ""
+"<command>gmmproc</command> le advertirá en stdout de funciones y señales que "
+"haya olvidado envolver, ayudándole a asegurarse que está envolviendo la API "
+"completa. Pero si no quiere envolver algunas funciones o señales, o si elige "
+"escribir a mano algunos métodos entonces puede usar las macros _IGNORE() o "
+"_IGNORE_SIGNAL() para hacer que <command>gmmproc</command> deje de quejarse."
 
-#: C/gtkmm-tutorial-in.xml:9887(para)
+#. (itstool) path: para/literallayout
+#: C/index-in.docbook:9770
+#, no-wrap
 msgid ""
-"You are likely to encounter some problems in the library that you are "
-"wrapping, particularly if it is a new project. Here are some common "
-"problems, with solutions."
+"<function>_IGNORE(C function name 1, C function name 2, etc)\n"
+"_IGNORE_SIGNAL(C signal name 1, C signal name 2, etc)\n"
+"_IGNORE_PROPERTY(C property name 1, C property name 2, etc)</function>"
 msgstr ""
-"Es probable que encuentre algunos problemas en la biblioteca que está "
-"envolviendo, particularmente si es un proyecto nuevo. Aquí hay algunos "
-"problemas comunes, con soluciones."
+"<function>_IGNORE(C function name 1, C function name 2, etc)\n"
+"_IGNORE_SIGNAL(C signal name 1, C signal name 2, etc)\n"
+"_IGNORE_PROPERTY(C property name 1, C property name 2, etc)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9774
+#, fuzzy
+#| msgid ""
+#| "For instance, from <filename>buttonbox.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>flowbox.hg</filename>:"
+msgstr "Por ejemplo, de <filename>buttonbox.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9775
+#, no-wrap
+msgid ""
+"\n"
+"_IGNORE(gtk_flow_box_set_filter_func, gtk_flow_box_set_sort_func)\n"
+"_IGNORE_SIGNAL(activate-cursor-child, toggle-cursor-child, move-cursor)\n"
+msgstr ""
+"\n"
+"_IGNORE(gtk_flow_box_set_filter_func, gtk_flow_box_set_sort_func)\n"
+"_IGNORE_SIGNAL(activate-cursor-child, toggle-cursor-child, move-cursor)\n"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9782
+msgid "_WRAP_SIGNAL"
+msgstr "_WRAP_SIGNAL"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9783
+msgid ""
+"This macro generates the C++ libsigc++-style signal to wrap a C GObject "
+"signal. It actually generates a public accessor method, such as "
+"<function>signal_clicked()</function>, which returns a proxy object. "
+"<command>gmmproc</command> uses the .defs file to discover the C parameter "
+"types and the .m4 convert files to discover appropriate type conversions."
+msgstr ""
+"Esta macro genera la señal de C++ con el estilo de libsigc++ para envolver "
+"una señal GObject de C. En realidad genera un método de acceso público, como "
+"<function>signal_clicked()</function>, que devuelve un objeto sustituto. "
+"<function>gmmproc</function> usa el archivo .defs para descubrir los tipos "
+"de parámetro de C y los archivos de conversión .m4 para descubrir "
+"conversiones de tipo adecuadas."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9789
+#| msgid "_WRAP_SIGNAL( C++ signal handler signature, C signal name)"
+msgid ""
+"<function>_WRAP_SIGNAL( C++ signal handler signature, C signal name)</"
+"function>"
+msgstr ""
+"<function>_WRAP_SIGNAL( C++ signal handler signature, C signal name)</"
+"function>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9791
+#, no-wrap
+msgid ""
+"\n"
+"_WRAP_SIGNAL(void clicked(),\"clicked\")\n"
+msgstr ""
+"\n"
+"_WRAP_SIGNAL(void clicked(),\"clicked\")\n"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9794
+msgid ""
+"Signals usually have function pointers in the GTK struct, with a "
+"corresponding enum value and a <function>g_signal_new()</function> in the .c "
+"file."
+msgstr ""
+"Las señales generalmente tienen punteros de funciones en la estructura de "
+"GTK, con un valor de enum correspondiente y un <function>g_signal_new()</"
+"function> en el archivo .c."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9800
+msgid "no_default_handler"
+msgstr "no_default_handler"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9802
+#, fuzzy
+#| msgid ""
+#| "Do not generate an <function>on_something()</function> virtual method to "
+#| "allow easy overriding of the default signal handler. Use this when adding "
+#| "a signal with a default signal handler would break the ABI by increasing "
+#| "the size of the class's virtual function table."
+msgid ""
+"Do not generate an <function>on_something()</function> virtual method to "
+"allow easy overriding of the default signal handler. Use this when adding a "
+"signal with a default signal handler would break the ABI by increasing the "
+"size of the class's virtual function table, and when adding a signal without "
+"a public C default handler."
+msgstr ""
+"No genera un método virtual <function>on_something()</function> para "
+"permitir reemplazar fácilmente el gestor de señales predeterminado. Use esto "
+"si añadir una señal con un gestor de señales predeterminado rompe la ABI "
+"incrementando el tamaño de la tabla de funciones virtuales de la clase."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9811
+msgid "custom_default_handler"
+msgstr "custom_default_handler"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9813
+msgid ""
+"Generate a declaration of the <function>on_something()</function> virtual "
+"method in the <filename>.h</filename> file, but do not generate a definition "
+"in the <filename>.cc</filename> file. Use this when you must generate the "
+"definition by hand."
+msgstr ""
+"Genera una declaración del método virtual <function>on_something</function> "
+"en el archivo <filename>.h</filename>, pero no genera una definición en el "
+"archivo <filename>.cc</filename>. Use esto cuando deba generar la definición "
+"a mano."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9820
+msgid "custom_c_callback"
+msgstr "custom_c_callback"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9822
+msgid ""
+"Do not generate a C callback function for the signal. Use this when you must "
+"generate the callback function by hand."
+msgstr ""
+"No genera una devolución de llamada de C para la señal. Use esto cuando debe "
+"generar la función de devolución de llamada a mano."
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9829
+msgid ""
+"Do an extra <function>reference()</function> on the return value of the "
+"<function>on_something()</function> virtual method, in case the C function "
+"does not provide a reference."
+msgstr ""
+"Hace una <function>reference()</function> adicional en el valor de retorno "
+"del método virtual <function>on_something()</function>, en caso de que la "
+"función de C no proporcione una referencia."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9855 C/index-in.docbook:10036
+msgid "exception_handler &lt;method_name&gt;"
+msgstr "exception_handler &lt;method_name&gt;"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9857 C/index-in.docbook:10038
+msgid ""
+"Allows to use custom exception handler instead of default one. Exception "
+"might be rethrown by user-defined handler, and it will be caught by default "
+"handler."
+msgstr ""
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9863
+msgid "detail_name &lt;parameter_name&gt;"
+msgstr "detail_name &lt;parameter_name&gt;"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9865
+msgid ""
+"Adds a <type>const Glib::ustring&amp;</type> parameter to the "
+"<methodname>signal_something()</methodname> method. Use it, if the signal "
+"accepts a detailed signal name, i.e. if the underlying C code registers the "
+"signal with the <literal>G_SIGNAL_DETAILED</literal> flag."
+msgstr ""
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9872
+msgid "two_signal_methods"
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9874
+msgid ""
+"Used in conjunction with the <literal>detail_name</literal> option to "
+"generate two <methodname>signal_something()</methodname> methods, one "
+"without a parameter and one with a parameter without a default value. With "
+"only the <literal>detail_name</literal> option one method is generated, with "
+"a parameter with default value. Use the <literal>two_signal_methods</"
+"literal> option, if it's necessary in order to preserve ABI."
+msgstr ""
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9888
+msgid "_WRAP_PROPERTY"
+msgstr "_WRAP_PROPERTY"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9889
+msgid ""
+"This macro generates the C++ method to wrap a C GObject property. You must "
+"specify the property name and the wanted C++ type for the property. "
+"<command>gmmproc</command> uses the .defs file to discover the C type and "
+"the .m4 convert files to discover appropriate type conversions."
+msgstr ""
+"Esta macro genera el método de C++ que envuelve una propiedad GObject de C. "
+"Debe especificar el nombre de la propiedad y el tipo de C++ que quiere para "
+"la propiedad. <command>gmmproc</command> usa el archivo .defs para descubrir "
+"el tipo de C y el archivo de conversión .m4 para descubrir conversiones de "
+"tipo apropiadas."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9893
+#| msgid "_WRAP_PROPERTY(C property name, C++ type)"
+msgid "<function>_WRAP_PROPERTY(C property name, C++ type)</function>"
+msgstr "<function>_WRAP_PROPERTY(C property name, C++ type)</function>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9895
+#, no-wrap
+msgid ""
+"\n"
+"_WRAP_PROPERTY(\"label\", Glib::ustring)\n"
+msgstr ""
+"\n"
+"_WRAP_PROPERTY(\"label\", Glib::ustring)\n"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:9919
+msgid "_WRAP_VFUNC"
+msgstr "_WRAP_VFUNC"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9920
+msgid "This macro generates the C++ method to wrap a virtual C function."
+msgstr ""
+"Esta macro genera el método de C++ que envuelve una función virtual de C."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9921
+#| msgid "_WRAP_VFUNC( C++ method signature, C function name)"
+msgid ""
+"<function>_WRAP_VFUNC( C++ method signature, C function name)</function>"
+msgstr ""
+"<function>_WRAP_VFUNC( C++ method signature, C function name)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9922
+#, fuzzy
+#| msgid "For instance, from <filename>widget.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>widget.hg</filename>:"
+msgstr "Por ejemplo, de <filename>widget.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:9923
+#, no-wrap
+msgid ""
+"\n"
+"_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n"
+msgstr ""
+"\n"
+"_WRAP_VFUNC(SizeRequestMode get_request_mode() const, get_request_mode)\n"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:9926
+#, fuzzy
+#| msgid ""
+#| "The C function (e.g. <function>get_request_mode</function>) is described "
+#| "more fully in the <filename>*_vfuncs.defs</filename> file, and the "
+#| "<filename>convert*.m4</filename> files contain the necessary conversion "
+#| "from the C++ parameter type to the C parameter type."
+msgid ""
+"The C function (e.g. <function>get_request_mode</function>) is described "
+"more fully in the <filename>*_vfuncs.defs</filename> file, and the "
+"<filename>convert*.m4</filename> files contain the necessary conversion from "
+"the C++ parameter type to the C parameter type. Conversions can also be "
+"written in the .hg file. Virtual functions often require special conversions "
+"that are best kept local to the .hg file where they are used."
+msgstr ""
+"La función de C (por ejemplo, <function>get_request_mode</function>) se "
+"describe en mayor detalle en el archivo <filename>*_vfuncs.defs</filename>, "
+"y los archivos <filename>convert*.m4</filename> contienen las conversiones "
+"necesarias del tipo de parámetro de C++ al tipo de parámetro de C."
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9937
+msgid ""
+"Do an extra <function>reference()</function> on the return value of the "
+"<function>something_vfunc()</function> function, in case the virtual C "
+"function does not provide a reference."
+msgstr ""
+"Hace una <function>reference()</function> adicional en el valor de retorno "
+"de la función <function>something_vfunc()</function>, en caso de que la "
+"función virtual de C no proporcione una referencia."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9943
+msgid "refreturn_ctype"
+msgstr "refreturn_ctype"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9945
+msgid ""
+"Do an extra <function>reference()</function> on the return value of an "
+"overridden <function>something_vfunc()</function> function in the C callback "
+"function, in case the calling C function expects it to provide a reference."
+msgstr ""
+"Hace una <function>reference()</function> adicional en el valor de retorno "
+"de una función <function>something_vfunc()</function> reemplazada en la "
+"función de devolución de llamada de C, en caso de que la función de C que "
+"llama espere que proporcione una referencia."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9952
+#| msgid "refreturn"
+msgid "keep_return"
+msgstr "keep_return"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9954
+#, fuzzy
+#| msgid ""
+#| "Do an extra <function>reference()</function> on the return value of an "
+#| "overridden <function>something_vfunc()</function> function in the C "
+#| "callback function, in case the calling C function expects it to provide a "
+#| "reference."
+msgid ""
+"Keep a copy of the return value in the C callback function, in case the "
+"calling C function does not expect to get its own reference."
+msgstr ""
+"Hace una <function>reference()</function> adicional en el valor de retorno "
+"de una función <function>something_vfunc()</function> reemplazada en la "
+"función de devolución de llamada de C, en caso de que la función de C que "
+"llama espere que proporcione una referencia."
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9962
+msgid ""
+"Use the last GError** parameter of the C virtual function (if there is one) "
+"to throw an exception."
+msgstr ""
+"Usa el último parámetro GError** de la función virtual de C (si existe) para "
+"lanzar una excepción."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9967
+msgid "custom_vfunc"
+msgstr "custom_vfunc"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9969
+msgid ""
+"Do not generate a definition of the vfunc in the <filename>.cc</filename> "
+"file. Use this when you must generate the vfunc by hand."
+msgstr ""
+"No genera una definición de la «vfunc» en el archivo <filename>.cc</"
+"filename>. Use esto cuando deba generar la «vfunc» a mano."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:9975
+msgid "custom_vfunc_callback"
+msgstr "custom_vfunc_callback"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:9977
+msgid ""
+"Do not generate a C callback function for the vfunc. Use this when you must "
+"generate the callback function by hand."
+msgstr ""
+"No genera una función de devolución de llamada de C para la «vfunc». Use "
+"esto cuando deba generar la función de devolución de llamada a mano."
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:10020
+msgid "return_value &lt;value&gt;"
+msgstr "return_value &lt;value&gt;"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10022
+msgid "Defines a non-default return value."
+msgstr ""
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:10026
+msgid "err_return_value &lt;value&gt;"
+msgstr "err_return_value &lt;value&gt;"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10028
+msgid ""
+"Defines a non-default return value, used only if the C++ "
+"<function>something_vfunc()</function> function throws an exception which is "
+"propagated to the C callback function. If return_value is specified, but "
+"err_return_value is not, then return_value is used also when an exception is "
+"propagated."
+msgstr ""
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10045
+msgid ""
+"A rule to which there may be exceptions: If the virtual C function returns a "
+"pointer to an object derived from <classname>GObject</classname>, i.e. a "
+"reference-counted object, then the virtual C++ function shall return a "
+"<classname>Glib::RefPtr&lt;&gt;</classname> object. One of the extra "
+"arguments <parameter>refreturn</parameter> or <parameter>refreturn_ctype</"
+"parameter> is required."
+msgstr ""
+"Una regla para la cual puede haber excepciones: si la función virtual de C "
+"devuelve un puntero a un objeto derivado de <classname>GObject</classname>, "
+"es decir un objeto cuyas referencias se cuentan, entonces la función virtual "
+"de C++ deberá devolver un objeto <classname>Glib::RefPtr&lt;&gt;</"
+"classname>. Se requiere uno de los argumentos adicionales "
+"<parameter>refreturn</parameter> o <parameter>refreturn_ctype</parameter>."
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:10056
+msgid "Other macros"
+msgstr "Otras macros"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10058
+msgid "_IMPLEMENTS_INTERFACE"
+msgstr "_IMPLEMENTS_INTERFACE"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10059
+msgid "This macro generates initialization code for the interface."
+msgstr "Esta macro genera código de inicialización para la interfaz."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10060
+#| msgid "_IMPLEMENTS_INTERFACE(C++ interface name)"
+msgid "<function>_IMPLEMENTS_INTERFACE(C++ interface name)</function>"
+msgstr "<function>_IMPLEMENTS_INTERFACE(C++ interface name)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10061
+#, fuzzy
+#| msgid "For instance, from <filename>widget.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>grid.hg</filename>:"
+msgstr "Por ejemplo, de <filename>widget.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:10062
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "_IMPLEMENTS_INTERFACE(Activatable)\n"
+msgid ""
+"\n"
+"_IMPLEMENTS_INTERFACE(Orientable)\n"
+msgstr ""
+"\n"
+"_IMPLEMENTS_INTERFACE(Orientable)\n"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10065
+#, fuzzy
+#| msgid "There is one optional extra argument: <placeholder-1/>"
+msgid "There is one optional extra argument: <_:variablelist-1/>"
+msgstr "Hay un argumento opcional adicional: <placeholder-1/>"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10078
+msgid "_WRAP_ENUM"
+msgstr "_WRAP_ENUM"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10079
+msgid ""
+"This macro generates a C++ enum to wrap a C enum. You must specify the "
+"desired C++ name and the name of the underlying C enum."
+msgstr ""
+"Esta macro genera una enum de C++ para envolver una enum de C. Debe "
+"especificar el nombre de C++ que quiere y el nombre de la enum de C "
+"subyacente."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10081
+#, fuzzy
+#| msgid "For instance, from <filename>enums.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>enums.hg</filename>:"
+msgstr "Por ejemplo, de <filename>enums.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:10082
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "_WRAP_ENUM(WindowType, GtkWindowType)\n"
+msgid ""
+"\n"
+"_WRAP_ENUM(Orientation, GtkOrientation)\n"
+msgstr ""
+"\n"
+"_WRAP_ENUM(Orientation, GtkOrientation)\n"
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:10088
+msgid "NO_GTYPE"
+msgstr "NO_GTYPE"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10090
+#, fuzzy
+#| msgid ""
+#| "If the enum is not a <classname>GType</classname>, you must pass a third "
+#| "parameter NO_GTYPE. This is the case when there is no "
+#| "<function>*_get_type()</function> function for the C enum, but be careful "
+#| "that you don't just need to include an extra header for that function. "
+#| "You should also file a bug against the C API, because all enums should be "
+#| "registered as GTypes."
+msgid ""
+"Use this option, if the enum is not a <classname>GType</classname>. This is "
+"the case when there is no <function>*_get_type()</function> function for the "
+"C enum, but be careful that you don't just need to include an extra header "
+"for that function. You should also file a bug against the C API, because all "
+"enums should be registered as GTypes."
+msgstr ""
+"Si la enum no es un <classname>GType</classname>, debe pasar un tercer "
+"parámetro «NO_GTYPE». Este es el caso cuando no hay una función "
+"<function>*_get_type()</function> para la enum de C, pero tenga cuidado: no "
+"sólo necesita incluir una cabecera adicional para esa función, también debe "
+"enviar un informe de error de la API de C porque todas las enums deben "
+"registrarse como GTypes."
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10095
+msgid ""
+"If you specify <literal>NO_GTYPE</literal>, don't use that enum as the type "
+"in _WRAP_PROPERTY. It would cause a runtime error, when the generated "
+"<methodname>property_*()</methodname> method is called."
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10098
+#, fuzzy
+#| msgid ""
+#| "For example, from <filename>icontheme.hg</filename>: <placeholder-1/>"
+msgid "For example, from <filename>icontheme.hg</filename>:"
+msgstr "Por ejemplo, de <filename>icontheme.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: listitem/programlisting
+#: C/index-in.docbook:10099
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n"
+msgid ""
+"\n"
+"_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n"
+"      "
+msgstr ""
+"\n"
+"_WRAP_ENUM(IconLookupFlags, GtkIconLookupFlags, NO_GTYPE)\n"
+"      "
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:10105
+msgid "gtype_func &lt;function_name&gt;"
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10107
+msgid ""
+"Specifies the name of the <function>*_get_type()</function> function for the "
+"C enum. Use this parameter if <command>gmmproc</command> can't deduce the "
+"correct function name from the name of the C enum type."
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10110
+#, fuzzy
+#| msgid ""
+#| "For example, from <filename>icontheme.hg</filename>: <placeholder-1/>"
+msgid "For example, from <filename>dbusproxy.hg</filename> in glibmm:"
+msgstr "Por ejemplo, de <filename>icontheme.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: listitem/programlisting
+#: C/index-in.docbook:10111
+#, no-wrap
+msgid ""
+"\n"
+"_WRAP_ENUM(ProxyFlags, GDBusProxyFlags, gtype_func g_dbus_proxy_flags_get_type)\n"
+"      "
+msgstr ""
+"\n"
+"_WRAP_ENUM(ProxyFlags, GDBusProxyFlags, gtype_func g_dbus_proxy_flags_get_type)\n"
+"      "
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:10117
+msgid "CONV_TO_INT"
+msgstr "CONV_TO_INT"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10119
+msgid ""
+"\"Convertible to int.\" Generates a plain enum (not an enum class) within a "
+"class. Such an enum is scoped like an enum class, but unlike an enum class, "
+"it can be implicitly converted to <type>int</type>."
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10122
+#, fuzzy
+#| msgid ""
+#| "For example, from <filename>icontheme.hg</filename>: <placeholder-1/>"
+msgid "For example, from <filename>dialog.hg</filename>:"
+msgstr "Por ejemplo, de <filename>icontheme.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: listitem/programlisting
+#: C/index-in.docbook:10123
+#, no-wrap
+msgid ""
+"\n"
+"_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)\n"
+"      "
+msgstr ""
+"\n"
+"_WRAP_ENUM(ResponseType, GtkResponseType, CONV_TO_INT)\n"
+"      "
+
+#. (itstool) path: varlistentry/term
+#: C/index-in.docbook:10129
+msgid "s#&lt;from&gt;#&lt;to&gt;#"
+msgstr "s#&lt;from&gt;#&lt;to&gt;#"
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10131
+msgid ""
+"Substitutes (part of) the name of one or more enum constants. You can add "
+"any number of substitutions."
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10133
+#, fuzzy
+#| msgid ""
+#| "For example, from <filename>icontheme.hg</filename>: <placeholder-1/>"
+msgid "For example, from <filename>iochannel.hg</filename> in glibmm:"
+msgstr "Por ejemplo, de <filename>icontheme.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: listitem/programlisting
+#: C/index-in.docbook:10134
+#, no-wrap
+msgid ""
+"\n"
+"_WRAP_ENUM(SeekType, GSeekType, NO_GTYPE, s#^SEEK_#SEEK_TYPE_#)\n"
+"      "
+msgstr ""
+"\n"
+"_WRAP_ENUM(SeekType, GSeekType, NO_GTYPE, s#^SEEK_#SEEK_TYPE_#)\n"
+"      "
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10158
+msgid "_WRAP_ENUM_DOCS_ONLY"
+msgstr "_WRAP_ENUM_DOCS_ONLY"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10159
+msgid ""
+"This macro just generates a Doxygen documentationn block for the enum. This "
+"is useful for enums that can't be wrapped with <function>_WRAP_ENUM()</"
+"function> because they are complexly defined (maybe using C macros) but "
+"including the generated enum documentation is still desired. It is used with "
+"the same syntax as <function>_WRAP_ENUM()</function> and also processes the "
+"same options (though NO_GTYPE, gtype_func &lt;function_name&gt; and "
+"CONV_TO_INT are ignored because they make no difference when just generating "
+"the enum's documentation)."
+msgstr ""
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10171
+msgid "_WRAP_GERROR"
+msgstr "_WRAP_GERROR"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10172
+#, fuzzy
+#| msgid ""
+#| "This macro generates a C++ exception class, derived from Glib::Error, "
+#| "with a Code enum and a code() method. You must specify the desired C++ "
+#| "name, the name of the corresponding C enum, and the prefix for the C enum "
+#| "values."
+msgid ""
+"This macro generates a C++ exception class, derived from <classname>Glib::"
+"Error</classname>, with a <type>Code</type> enum and a <methodname>code()</"
+"methodname> method. You must specify the desired C++ name, the name of the "
+"corresponding C enum, and the prefix for the C enum values."
+msgstr ""
+"Esta macro genera una clase de excepción de C++, derivada de Glib::Error, "
+"con una enum Code y un método code(). Debe especificar el nombre de C++ que "
+"quiere, el nombre de la enum de C correspondiente, y el prefijo de los "
+"valores de la enum de C."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10175
+msgid ""
+"This exception can then be thrown by methods which are generated from "
+"_WRAP_METHOD() with the errthrow option."
+msgstr ""
+"Los métodos generados desde _WRAP_METHOD() podrán entonces lanzar esta "
+"excepción con la opción «errthrow»."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10177
+#, fuzzy
+#| msgid "For instance, from <filename>pixbuf.hg</filename>: <placeholder-1/>"
+msgid "For instance, from <filename>pixbuf.hg</filename>:"
+msgstr "Por ejemplo, de <filename>pixbuf.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:10178
+#, no-wrap
+msgid ""
+"\n"
+"_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n"
+msgstr ""
+"\n"
+"_WRAP_GERROR(PixbufError, GdkPixbufError, GDK_PIXBUF_ERROR)\n"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10181
+msgid ""
+"_WRAP_GERROR() accepts the same optional arguments as _WRAP_ENUM() (though "
+"CONV_TO_INT is ignored because all exception class enums are plain enums "
+"within a class)."
+msgstr ""
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10187
+msgid "_MEMBER_GET / _MEMBER_SET"
+msgstr "_MEMBER_GET / _MEMBER_SET"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10188
+msgid ""
+"Use these macros if you're wrapping a simple struct or boxed type that "
+"provides direct access to its data members, to create getters and setters "
+"for the data members."
+msgstr ""
+"Use estas macros si está envolviendo una estructura simple o un tipo en caja "
+"que proporciona acceso directo a sus miembros de datos, para crear métodos "
+"de acceso y modificación para estos."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10192
+#| msgid "_MEMBER_GET(C++ name, C name, C++ type, C type)"
+msgid "<function>_MEMBER_GET(C++ name, C name, C++ type, C type)</function>"
+msgstr "<function>_MEMBER_GET(C++ name, C name, C++ type, C type)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10193
+#| msgid "_MEMBER_SET(C++ name, C name, C++ type, C type)"
+msgid "<function>_MEMBER_SET(C++ name, C name, C++ type, C type)</function>"
+msgstr "<function>_MEMBER_SET(C++ name, C name, C++ type, C type)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10194
+#, fuzzy
+#| msgid "For example, in <filename>rectangle.hg</filename>: <placeholder-1/>"
+msgid "For example, in <filename>rectangle.hg</filename>:"
+msgstr "Por ejemplo, en <filename>rectangle.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:10197
+#, no-wrap
+msgid "_MEMBER_GET(x, x, int, int)"
+msgstr "_MEMBER_GET(x, x, int, int)"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10200
+msgid "_MEMBER_GET_PTR / _MEMBER_SET_PTR"
+msgstr "_MEMBER_GET_PTR / _MEMBER_SET_PTR"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10201
+msgid ""
+"Use these macros to automatically provide getters and setters for a data "
+"member that is a pointer type. For the getter function, it will create two "
+"methods, one const and one non-const."
+msgstr ""
+"Use estas macros para proporcionar métodos de acceso y modificación para un "
+"miembro de datos que es de tipo puntero automáticamente. Para la función de "
+"acceso, creará dos métodos, uno constante y otro no constante."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10206
+#| msgid "_MEMBER_GET_PTR(C++ name, C name, C++ type, C type)"
+msgid ""
+"<function>_MEMBER_GET_PTR(C++ name, C name, C++ type, C type)</function>"
+msgstr ""
+"<function>_MEMBER_GET_PTR(C++ name, C name, C++ type, C type)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10207
+#| msgid "_MEMBER_SET_PTR(C++ name, C name, C++ type, C type)"
+msgid ""
+"<function>_MEMBER_SET_PTR(C++ name, C name, C++ type, C type)</function>"
+msgstr ""
+"<function>_MEMBER_SET_PTR(C++ name, C name, C++ type, C type)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10208
+#, fuzzy
+#| msgid ""
+#| "For example, for <classname>Pango::Analysis</classname> in <filename>item."
+#| "hg</filename>: <placeholder-1/>"
+msgid ""
+"For example, for <classname>Pango::Analysis</classname> in <filename>item."
+"hg</filename>:"
+msgstr ""
+"Por ejemplo, para <classname>Pango::Analysis</classname> en <filename>item."
+"hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:10210
+#, no-wrap
+msgid ""
+"\n"
+"// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n"
+"// It's just a comment. It's difficult to find a real-world example.\n"
+msgstr ""
+"\n"
+"// _MEMBER_GET_PTR(engine_lang, lang_engine, EngineLang*, PangoEngineLang*)\n"
+"// It's just a comment. It's difficult to find a real-world example.\n"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10216
+msgid "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT"
+msgstr "_MEMBER_GET_GOBJECT / _MEMBER_SET_GOBJECT"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10217
+msgid ""
+"Use these macros to provide getters and setters for a data member that is a "
+"<classname>GObject</classname> type that must be referenced before being "
+"returned."
+msgstr ""
+"Use estas macros para proporcionar métodos de acceso y modificación para un "
+"miembro de datos que es de tipo <classname>GObject</classname> que debe "
+"referenciarse antes de devolverse."
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10222
+#| msgid "_MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type)"
+msgid ""
+"<function>_MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type)</function>"
+msgstr ""
+"<function>_MEMBER_GET_GOBJECT(C++ name, C name, C++ type, C type)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10223
+#| msgid "_MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type)"
+msgid ""
+"<function>_MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type)</function>"
+msgstr ""
+"<function>_MEMBER_SET_GOBJECT(C++ name, C name, C++ type, C type)</function>"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10224
+#, fuzzy
+#| msgid ""
+#| "For example, in Pangomm, <filename>layoutline.hg</filename>: "
+#| "<placeholder-1/>"
+msgid "For example, in Pangomm, <filename>layoutline.hg</filename>:"
+msgstr ""
+"Por ejemplo, en Pangomm, <filename>layoutline.hg</filename>: <placeholder-1/>"
+
+#. (itstool) path: sect3/programlisting
+#: C/index-in.docbook:10225
+#, no-wrap
+msgid ""
+"\n"
+"_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n"
+msgstr ""
+"\n"
+"_MEMBER_GET_GOBJECT(layout, layout, Pango::Layout, PangoLayout*)\n"
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:10233
+msgid "gmmproc Parameter Processing"
+msgstr "Procesado de parámetros de gmmproc"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10234
+msgid ""
+"<command>gmmproc</command> allows processing the parameters in a method "
+"signature for the macros that process method signatures (like "
+"<function>_WRAP_METHOD()</function>, <function>_WRAP_CTOR()</function> and "
+"<function>_WRAP_CREATE()</function>) in a variety of ways:"
+msgstr ""
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10241
+msgid "Parameter Reordering"
+msgstr "Reordenación de parámetros"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10248
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n"
+#| "        GdkEventMask events);\n"
+#| "      "
+msgid ""
+"\n"
+"void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n"
+"  GdkEventMask events);\n"
+msgstr ""
+"\n"
+"void gtk_widget_set_device_events(GtkWidget* widget, GdkDevice* device,\n"
+"  GdkEventMask events);\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10255
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        _WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n"
+#| "        const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{device}),\n"
+#| "        gtk_widget_set_device_events)\n"
+#| "      "
+msgid ""
+"\n"
+"_WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n"
+"  const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{device}),\n"
+"  gtk_widget_set_device_events)\n"
+msgstr ""
+"\n"
+"_WRAP_METHOD(void set_device_events(Gdk::EventMask events{events},\n"
+"  const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{device}),\n"
+"  gtk_widget_set_device_events)\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10265
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        _WRAP_METHOD(void set_device_events(Gdk::EventMask events{.}, const\n"
+#| "        Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{.}),\n"
+#| "        gtk_widget_set_device_events)\n"
+#| "      "
+msgid ""
+"\n"
+"_WRAP_METHOD(void set_device_events(Gdk::EventMask events{.},\n"
+"  const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{.}),\n"
+"  gtk_widget_set_device_events)\n"
+msgstr ""
+"\n"
+"_WRAP_METHOD(void set_device_events(Gdk::EventMask events{.},\n"
+"  const Glib::RefPtr&lt;const Gdk::Device&gt;&amp; device{.}),\n"
+"  gtk_widget_set_device_events)\n"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10242
+#, fuzzy
+#| msgid ""
+#| "Also, as with <function>_WRAP_CTOR()</function>, it is possible to "
+#| "reorder the parameters of the C++ method by using gmmproc's C++ to C "
+#| "parameter mapping functionality. Using this functionality, it is possible "
+#| "to map a C++ parameter to a C parameter by specifying the C parameter "
+#| "name. For example, if the <function>gtk_widget_set_device_events()</"
+#| "function> declaration is the following: <placeholder-1/> Something like "
+#| "the following would change the order of the parameters in the C++ method: "
+#| "<placeholder-2/> The <literal>{param_name}</literal> following each of "
+#| "the names of the parameters tells gmmproc to map those C++ parameters to "
+#| "the C parameters with the given names. Since the C++ parameter names "
+#| "correspond to the C ones, the above could be re-written as: "
+#| "<placeholder-3/>"
+msgid ""
+"For all the macros that process method signatures, it is possible to specify "
+"a different order for the C++ parameters than the existing order in the C "
+"function, virtual function or signal. For example, say that the following C "
+"function were being wrapped as a C++ method for the <classname>Gtk::Widget</"
+"classname> class: <_:programlisting-1/> However, changing the order of the C+"
+"+ method's two parameters is necessary. Something like the following would "
+"wrap the function as a C++ method with a different order for the two "
+"parameters: <_:programlisting-2/> The <literal>{c_param_name}</literal> "
+"following the method parameter names tells <command>gmmproc</command> to map "
+"the C++ parameter to the specified C parameter within the <literal>{}</"
+"literal>. Since the C++ parameter names correspond to the C ones, the above "
+"could be re-written as: <_:programlisting-3/>"
+msgstr ""
+"Además, al igual que con <function>_WRAP_CTOR()</function>, es posible "
+"reordenar los parámetros del método de C++ usando la función de mapeo de C++ "
+"a C de gmmproc. El uso de esta función hace posible mapear un parámetro de C+"
+"+ a uno de C mediante la especificación del nombre del parámetro de C. Por "
+"ejemplo, si la declaración de <function>gtk_widget_set_device_events()</"
+"function> es la siguiete: <placeholder-1/> Algo así cambiaría el orden de "
+"los parámetros en el método de C++: <placeholder-2/> El <literal>{param_name}"
+"</literal> que sigue a cada uno de los nombres de los parámetros le dice a "
+"gmmproc que mapee esos parámetros de C++ a los de C con los nombres dados. "
+"Ya que que los nombres de los parámetros de C++ corresponden a los de C, lo "
+"anterior podría reescribirse así: <placeholder-3/>"
+
+#. (itstool) path: warning/para
+#: C/index-in.docbook:10272
+msgid ""
+"Please note that when reordering parameters for a <function>_WRAP_SIGNAL()</"
+"function> method signature, the C parameter names would always be "
+"<literal>p0</literal>, <literal>p1</literal>, etc. because the "
+"<filename>generate_extra_defs</filename> utility uses those parameter names "
+"no matter what the C API's parameter names may be. It's how the utility is "
+"written presently."
+msgstr ""
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10284
+msgid "Optional Parameter Processing"
+msgstr "Procesado de parámetros opcionales"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10293
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar*\n"
+#| "        label);\n"
+#| "      "
+msgid ""
+"\n"
+"GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar* label);\n"
+msgstr ""
+"\n"
+"GtkToolItem* gtk_tool_button_new(GtkWidget* icon_widget, const gchar* label);\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10302
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        _WRAP_CTOR(ToolButton(Widget&amp; icon_widget, const Glib::ustring&amp;\n"
+#| "        label{?}), gtk_tool_button_new)\n"
+#| "      "
+msgid ""
+"\n"
+"_WRAP_CTOR(ToolButton(Widget&amp; icon_widget, const Glib::ustring&amp; label{?}),\n"
+"  gtk_tool_button_new)\n"
+msgstr ""
+"\n"
+"_WRAP_CTOR(ToolButton(Widget&amp; icon_widget, const Glib::ustring&amp; label{?}),\n"
+"  gtk_tool_button_new)\n"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10285
+msgid ""
+"For all macros processing method signatures except <function>_WRAP_SIGNAL()</"
+"function> and <function>_WRAP_VFUNC()</function> it is also possible to make "
+"the parameters optional so that extra C++ methods are generated without the "
+"specified optional parameter. For example, say that the following "
+"<function>*_new()</function> function were being wrapped as a constructor in "
+"the <classname>Gtk::ToolButton</classname> class: <_:programlisting-1/> "
+"Also, say that the C API allowed NULL for the function's <parameter>label</"
+"parameter> parameter so that that parameter is optional. It would be "
+"possible to have <command>gmmproc</command> generate the original "
+"constructor (with all the parameters) along with an additional constructor "
+"without that optional parameter by appending a <literal>{?}</literal> to the "
+"parameter name like so: <_:programlisting-2/> In this case, two constructors "
+"would be generated: One with the optional parameter and one without it."
+msgstr ""
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10312
+msgid "Output Parameter Processing"
+msgstr "Procesado de parámetros de salida"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10322
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n"
+#| "      "
+msgid ""
+"\n"
+"GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n"
+msgstr ""
+"\n"
+"GtkSizeRequestMode gtk_widget_get_request_mode(GtkWidget* widget);\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10328
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        _WRAP_METHOD(void get_request_mode(SizeRequestMode&amp; mode{OUT})\n"
+#| "        const, gtk_widget_get_request_mode)\n"
+#| "      "
+msgid ""
+"\n"
+"_WRAP_METHOD(void get_request_mode(SizeRequestMode&amp; mode{OUT}) const,\n"
+"  gtk_widget_get_request_mode)\n"
+msgstr ""
+"\n"
+"_WRAP_METHOD(void get_request_mode(SizeRequestMode&amp; mode{OUT}) const,\n"
+"  gtk_widget_get_request_mode)\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10337
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        _INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 =\n"
+#| "        (SizeRequestMode)($4)')\n"
+#| "      "
+msgid ""
+"\n"
+"_INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 = (SizeRequestMode)($4)')\n"
+msgstr ""
+"\n"
+"_INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 = (SizeRequestMode)($4)')\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10341
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        _INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 =\n"
+#| "        ($1)($4)')\n"
+#| "      "
+msgid ""
+"\n"
+"_INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 = ($1)($4)')\n"
+msgstr ""
+"\n"
+"_INITIALIZATION(`SizeRequestMode&amp;',`GtkSizeRequestMode',`$3 = ($1)($4)')\n"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10313
+#, fuzzy
+#| msgid ""
+#| "With <function>_WRAP_METHOD()</function> it is also possible to include "
+#| "an output parameter in the C++ method declaration in which the return of "
+#| "the C function would be placed and to have the C++ method return "
+#| "<type>void</type>. To do that, simply include the output parameter "
+#| "declaration in the C++ method declaration appending a <literal>{OUT}</"
+#| "literal> to the output parameter name. For example, if "
+#| "<function>gtk_widget_get_request_mode()</function> is declared as the "
+#| "following: <placeholder-1/> And having the C++ method set an output "
+#| "parameter is desired instead of returning a <type>SizeRequestMode</type>, "
+#| "something like the following could be used: <placeholder-2/> the "
+#| "<literal>{OUT}</literal> appended to the name of the <parameter>mode</"
+#| "parameter> output parameter tells gmmproc to place the return of the C "
+#| "function in that output parameter. In this case, however, a necessary "
+#| "initialization macro like the following would also have to be specified: "
+#| "<placeholder-3/> Which could also be written as: <placeholder-4/>"
+msgid ""
+"With <function>_WRAP_METHOD()</function> it is also possible for the return "
+"of the wrapped C function (if it has one) to be placed in an output "
+"parameter of the C++ method instead of having the C++ method also return a "
+"value like the C function does. To do that, simply include the output "
+"parameter in the C++ method parameter list appending a <literal>{OUT}</"
+"literal> to the output parameter name. For example, if "
+"<function>gtk_widget_get_request_mode()</function> is declared as the "
+"following: <_:programlisting-1/> And having the C++ method set an output "
+"parameter is desired instead of returning a <type>SizeRequestMode</type>, "
+"something like the following could be used: <_:programlisting-2/> The "
+"<literal>{OUT}</literal> appended to the name of the <parameter>mode</"
+"parameter> output parameter tells <command>gmmproc</command> to place the "
+"return of the C function in that output parameter. In this case, however, a "
+"necessary initialization macro like the following would also have to be "
+"specified: <_:programlisting-3/> Which could also be written as: <_:"
+"programlisting-4/>"
+msgstr ""
+"Con <function>_WRAP_METHOD()</function> también es posible incluir un "
+"parámetro de salida en la declaración del método de C++ en el que se pone el "
+"valor de retorno de la función de C, y que el método de C++ devuelva "
+"<type>void</type>. Para hacer esto, simplemente incluya la declaración del "
+"parámetro de salida en la declaración del método de C++ adjuntando "
+"<literal>{OUT}</literal> al nombre del parámetro de salida. Por ejemplo, si "
+"<function>gtk_widget_get_request_mode()</function> se declara como sigue: "
+"<placeholder-1/> Y se quiere que el método de C++ establezca un parámetro de "
+"salida en lugar de devolver un <type>SizeRequestMode</type>, algo como lo "
+"siguiente podría usarse: <placeholder-2/> el <literal>{OUT}</literal> "
+"adjunto al nombre del parámetro de salida <parameter>mode</parameter> le "
+"dice a gmmproc que ponga el valor de retorno de la función de C en ese "
+"parámetro de salida. En este caso, sin embargo, una macro de inicialización "
+"necesaria como la que sigue también tendría que especificarse: "
+"<placeholder-3/> Lo que también podría reescribirse así: <placeholder-4/>"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10351
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view,\n"
+#| "        GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect);\n"
+#| "      "
+msgid ""
+"\n"
+"gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view,\n"
+"  GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect);\n"
+msgstr ""
+"\n"
+"gboolean gtk_icon_view_get_cell_rect(GtkIconView* icon_view,\n"
+"  GtkTreePath* path, GtkCellRenderer* cell, GdkRectangle* rect);\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10358
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        _WRAP_METHOD(bool get_cell_rect(const TreeModel::Path&amp; path, const\n"
+#| "        CellRenderer&amp; cell, Gdk::Rectangle&amp; rect{&gt;&gt;}) const,\n"
+#| "        gtk_icon_view_get_cell_rect)\n"
+#| "      "
+msgid ""
+"\n"
+"_WRAP_METHOD(bool get_cell_rect(const TreeModel::Path&amp; path,\n"
+"  const CellRenderer&amp; cell, Gdk::Rectangle&amp; rect{&gt;&gt;}) const,\n"
+"  gtk_icon_view_get_cell_rect)\n"
+msgstr ""
+"\n"
+"_WRAP_METHOD(bool get_cell_rect(const TreeModel::Path&amp; path,\n"
+"  const CellRenderer&amp; cell, Gdk::Rectangle&amp; rect{&gt;&gt;}) const,\n"
+"  gtk_icon_view_get_cell_rect)\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10373
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "        _INITIALIZATION(`Gdk::Rectangle&amp;',`GdkRectangle', `$3 =\n"
+#| "        Glib::wrap(&amp;($4))')\n"
+#| "      "
+msgid ""
+"\n"
+"_INITIALIZATION(`Gdk::Rectangle&amp;',`GdkRectangle',`$3 = Glib::wrap(&amp;($4))')\n"
+msgstr ""
+"\n"
+"_INITIALIZATION(`Gdk::Rectangle&amp;',`GdkRectangle',`$3 = Glib::wrap(&amp;($4))')\n"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10345
+#, fuzzy
+#| msgid ""
+#| "<function>_WRAP_METHOD()</function> also supports setting C++ output "
+#| "parameters from C output parameters if the C function being wrapped has "
+#| "any. Suppose, for example, that we want to wrap the following C function "
+#| "that returns a value in its C output parameter <parameter>rect</"
+#| "parameter>: <placeholder-1/> To have <command>gmmproc</command> place the "
+#| "value returned in the C++ <parameter>rect</parameter> output parameter, "
+#| "something like the following <function>_WRAP_METHOD()</function> "
+#| "directive could be used: <placeholder-2/> The <literal>{&gt;&gt;}</"
+#| "literal> following the <parameter>rect</parameter> parameter name "
+#| "indicates that the C++ output parameter should be set from the value "
+#| "returned in the C parameter from the C function. <command>gmmproc</"
+#| "command> will generate a declaration of a temporary variable in which to "
+#| "store the value of the C output parameter and a statement that sets the C+"
+#| "+ output parameter from the temporary variable. In this case it may be "
+#| "necessary to have an <function>_INITIALIZATION()</function> describing "
+#| "how to set a <classname>Gdk::Rectangle&amp;</classname> from a "
+#| "<classname>GdkRectangle*</classname> such as the following: "
+#| "<placeholder-3/>"
+msgid ""
+"<function>_WRAP_METHOD()</function> also supports setting C++ output "
+"parameters from C output parameters if the C function being wrapped has any. "
+"Suppose, for example, that we want to wrap the following C function that "
+"returns a value in its C output parameter <parameter>rect</parameter>: <_:"
+"programlisting-1/> To have <command>gmmproc</command> place the value "
+"returned in the C++ <parameter>rect</parameter> output parameter, something "
+"like the following <function>_WRAP_METHOD()</function> macro could be used: "
+"<_:programlisting-2/> The <literal>{&gt;&gt;}</literal> following the "
+"<parameter>rect</parameter> parameter name indicates that the C++ output "
+"parameter should be set from the value returned in the C parameter from the "
+"C function. <command>gmmproc</command> will generate a declaration of a "
+"temporary variable in which to store the value of the C output parameter and "
+"a statement that sets the C++ output parameter from the temporary variable. "
+"In this case it may be necessary to have an <function>_INITIALIZATION()</"
+"function> describing how to set a <classname>Gdk::Rectangle&amp;</classname> "
+"from a <classname>GdkRectangle*</classname> such as the following: <_:"
+"programlisting-3/>"
+msgstr ""
+"<function>_WRAP_METHOD()</function> también soporta establecer parámetros de "
+"salida de C++ desde parámetros de salida de C si la función de C que está "
+"envolviendo los tiene. Suponga, por ejemplo, que quiere envolver la "
+"siguiente función de C que devuelve un valor en su parámetro de salida de C "
+"<parameter>rect</parameter>: <placeholder-1/> Para hacer que "
+"<command>gmmproc</command> ponga el valor devuelto en el parámetro de salida "
+"de C++ <parameter>rect</parameter> una vez que la función de C retorna, se "
+"puede usar algo como la siguiente directiva de <function>WRAP_METHOD()</"
+"function>: <placeholder-2/> El <literal>{&gt;&gt;}</literal> que sigue al "
+"nombre del parámetro <parameter>rect</parameter> indica que el parámetro de "
+"salida de C++ debe establecerse a partir del valor devuelto por el parámetro "
+"de C desde la función de C. <command>gmmproc</command> generará una "
+"declaración de una variable temporal en la que se almacenará el valor del "
+"parámetro de salida de C y una declaración que establece el parámetro de "
+"salida de C++ desde la variable temporal. En este caso puede ser necesario "
+"tener una <function>_INITIALIZATION()</function> que describa cómo "
+"establecer un <classname>Gdk::Rectangle&amp;</classname> desde un "
+"<classname>GdkRectangle*</classname> como la siguiente: <placeholder-3/>"
+
+#. (itstool) path: sect3/title
+#: C/index-in.docbook:10380
+#, fuzzy
+#| msgid "Optional Parameter Processing"
+msgid "String Parameter Processing"
+msgstr "Procesado de parámetros opcionales"
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10381
+msgid ""
+"A string-valued input parameter in a C++ method is usually a <type>const "
+"Glib::ustring&amp;</type> or a <type>const std::string&amp;</type>. In C "
+"code it's a <type>const gchar*</type>. When an empty string is converted to "
+"<type>const gchar*</type>, it can be converted either to <literal>nullptr</"
+"literal> or to a pointer to an empty string (with <methodname>c_str()</"
+"methodname>). Some parameters in some C functions accept a <literal>nullptr</"
+"literal>, and interpret it in a special way. Other parameters must not be "
+"<literal>nullptr</literal>."
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10394
+msgid ""
+"for mandatory parameters (with or without default values): empty string to "
+"empty string,"
+msgstr ""
+
+#. (itstool) path: listitem/para
+#: C/index-in.docbook:10396
+msgid ""
+"for optional parameters (with appended <literal>{?}</literal>): empty string "
+"to <literal>nullptr</literal>."
+msgstr ""
+
+#. (itstool) path: sect3/para
+#: C/index-in.docbook:10390
+msgid ""
+"The default conversion in <function>_WRAP_METHOD()</function> and similar "
+"macros is <_:itemizedlist-1/> If the default conversion is not the best "
+"conversion, append <literal>{NULL}</literal> to a mandatory parameter or "
+"<literal>{?!NULL}</literal> to an optional parameter (<literal>!NULL</"
+"literal> = not <literal>NULL</literal>). If you append both a C parameter "
+"name and <literal>NULL</literal>, separate them with a space: "
+"<literal>{c_param_name NULL}</literal>."
+msgstr ""
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:10410
+msgid "Basic Types"
+msgstr "Tipos básicos"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10411
+msgid ""
+"Some of the basic types that are used in C APIs have better alternatives in C"
+"++. For example, there's no need for a <type>gboolean</type> type since C++ "
+"has <type>bool</type>. The following list shows some commonly-used types in "
+"C APIs and what you might convert them to in a C++ wrapper library."
+msgstr ""
+"Algunos de los tipos básicos que se usan en las API de C tienen alternativas "
+"mejores en C++. Por ejemplo, no hay necesidad de un tipo <type>gboolean</"
+"type> dado que C++ tiene el <type>bool</type>. La siguiente lista muestra "
+"algunos tipos comúnmente usados en API de C y en qué los puede convertir en "
+"una biblioteca envoltorio de C++"
+
+#. (itstool) path: segmentedlist/title
+#: C/index-in.docbook:10416
+msgid "Basic Type equivalents"
+msgstr "Tipos básicos equivalentes"
+
+#. (itstool) path: segmentedlist/segtitle
+#: C/index-in.docbook:10418
+msgid "C type"
+msgstr "Tipo de C"
+
+#. (itstool) path: segmentedlist/segtitle
+#: C/index-in.docbook:10419
+msgid "C++ type"
+msgstr "Tipo de C++"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10420
+msgid "<type>gboolean</type>"
+msgstr "<type>gboolean</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10420
+msgid "<type>bool</type>"
+msgstr "<type>bool</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10421
+msgid "<type>gint</type>"
+msgstr "<type>gint</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10421
+msgid "<type>int</type>"
+msgstr "<type>int</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10422
+msgid "<type>guint</type>"
+msgstr "<type>guint</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10423
+msgid "<type>gdouble</type>"
+msgstr "<type>gdouble</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10423
+msgid "<type>double</type>"
+msgstr "<type>double</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10424
+msgid "<type>gunichar</type>"
+msgstr "<type>gunichar</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10425
+msgid "<type>gchar*</type>"
+msgstr "<type>gchar*</type>"
+
+#. (itstool) path: seglistitem/seg
+#: C/index-in.docbook:10425
+#, fuzzy
+#| msgid ""
+#| "This example has a <classname>Gtk::TreeView</classname> widget, with a "
+#| "<classname>Gtk::ListStore</classname> model."
+msgid ""
+"<classname>Glib::ustring</classname> (or <classname>std::string</classname> "
+"for filenames)"
+msgstr ""
+"Este ejemplo tiene un widget <classname>Gtk::TreeView</classname>, con un "
+"modelo <classname>Gtk::ListStore</classname>."
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:10432
+msgid "Hand-coded source files"
+msgstr "Archivos de código fuente programados a mano"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:10433
+#, fuzzy
+#| msgid ""
+#| "You might want to include additional source files that will not be "
+#| "generated by <command>gmmproc</command> from <filename>.hg</filename> and "
+#| "<filename>.ccg</filename> files. You can simply place these in your "
+#| "<filename>libsomething/libsomethingmm</filename> directory and mention "
+#| "them in the <filename>Makefile.am</filename> in the "
+#| "<varname>files_extra_h</varname> and <varname>files_extra_cc</varname> "
+#| "variables."
+msgid ""
+"You might want to include additional source files that will not be generated "
+"by <command>gmmproc</command> from <filename>.hg</filename> and <filename>."
+"ccg</filename> files. You can simply place these in your "
+"<filename>libsomething/libsomethingmm</filename> directory and mention them "
+"in the <filename>meson.build</filename> in the <varname>extra_h_files</"
+"varname> and <varname>extra_cc_files</varname> variables."
+msgstr ""
+"Tal vez quiera incluir archivos de código fuente adicionales que "
+"<command>gmmproc</command> no generará desde archivos <filename>.hg</"
+"filename> y <filename>.ccg</filename>. Puede simplemente ponerlos en su "
+"carpeta <filename>libsomething/libsomethingmm</filename> y mencionarlos en "
+"el <filename>Makefile.am</filename> en las variables <varname>files_extra_h</"
+"varname> y <varname>files_extra_cc</varname>."
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:10443
+msgid "Initialization"
+msgstr "Inicialización"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:10444
+#, fuzzy
+#| msgid ""
+#| "Your library must be initialized before it can be used, to register the "
+#| "new types that it makes available. Also, the C library that you are "
+#| "wrapping might have its own initialization function that you should call. "
+#| "You can do this in an <function>init()</function> function that you can "
+#| "place in hand-coded <filename>init.h</filename> and <filename>init.cc</"
+#| "filename> files. This function should initialize your dependencies (such "
+#| "as the C function, and <application>gtkmm</application>) and call your "
+#| "generated <function>wrap_init()</function> function. For instance: "
+#| "<placeholder-1/>"
+msgid ""
+"Your library must be initialized before it can be used, to register the new "
+"types that it makes available. Also, the C library that you are wrapping "
+"might have its own initialization function that you should call. You can do "
+"this in an <function>init()</function> function that you can place in hand-"
+"coded <filename>init.h</filename> and <filename>init.cc</filename> files. "
+"This function should initialize your dependencies (such as the C function, "
+"and <application>gtkmm</application>) and call your generated "
+"<function>wrap_init()</function> function. For instance:"
+msgstr ""
+"Su biblioteca debe inicializarse antes de que pueda usarla, para registrar "
+"los tipos nuevos que hace disponibles. Además, la biblioteca de C que está "
+"envolviendo podría tener su propia función de inicialización a la que debe "
+"llamar. Puede hacerlo en una función <function>init()</function> que puede "
+"poner en archivos <filename>init.h</filename> e <filename>init.cc</filename> "
+"programados a mano. Esta función debe inicializar sus dependencias (como la "
+"función de C, y <application>gtkmm</application>) y llamar a su función "
+"<function>wrap_init()</function> generada. Por ejemplo: <placeholder-1/>"
+
+#. (itstool) path: sect1/programlisting
+#: C/index-in.docbook:10452
+#, no-wrap
+#| msgid ""
+#| "\n"
+#| "void init()\n"
+#| "{\n"
+#| "  Gtk::Main::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table.\n"
+#| "  wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.\n"
+#| "}\n"
+msgid ""
+"\n"
+"void init()\n"
+"{\n"
+"  Gtk::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table.\n"
+"  wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.\n"
+"}\n"
+msgstr ""
+"\n"
+"void init()\n"
+"{\n"
+"  Gtk::init_gtkmm_internals(); //Sets up the g type system and the Glib::wrap() table.\n"
+"  wrap_init(); //Tells the Glib::wrap() table about the libsomethingmm classes.\n"
+"}\n"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:10459
+msgid ""
+"The implementation of the <function>wrap_init()</function> method in "
+"<filename>wrap_init.cc</filename> is generated by "
+"<filename>generate_wrap_init.pl</filename>, but the declaration in "
+"<filename>wrap_init.h</filename> is hand-coded, so you will need to adjust "
+"<filename>wrap_init.h</filename> so that the <function>wrap_init()</"
+"function> function appears in the correct C++ namespace."
+msgstr ""
+"<filename>generate_wrap_init.pl</filename> genera la implementación del "
+"método <function>wrap_init()</function> en <filename>wrap_init.cc</"
+"filename>, pero la declaración en <filename>wrap_init.h</filename> se "
+"programa a mano, por lo que necesitará ajustar <filename>wrap_init.h</"
+"filename> de manera tal que la función <function>wrap_init()</function> "
+"aparezca en el espacio de nombres de C++ correcto."
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:10468
+msgid "Problems in the C API."
+msgstr "Problemas en la API de C."
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:10469
+msgid ""
+"You are likely to encounter some problems in the library that you are "
+"wrapping, particularly if it is a new project. Here are some common "
+"problems, with solutions."
+msgstr ""
+"Es probable que encuentre algunos problemas en la biblioteca que está "
+"envolviendo, particularmente si es un proyecto nuevo. Aquí hay algunos "
+"problemas comunes, con soluciones."
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:10471
+msgid "Unable to predeclare structs"
+msgstr "No se pueden predeclarar estructuras"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10472
+#, fuzzy
+#| msgid ""
+#| "By convention, structs are declared in glib/GTK+-style headers like so: "
+#| "<placeholder-1/>"
+msgid "By convention, structs are declared in glib/GTK-style headers like so:"
+msgstr ""
+"Por convenio, las estructuras se declaran en los encabezados de Glib/GTK+ "
+"igual que en: <placeholder-1/>"
+
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:10473
+#, no-wrap
+msgid ""
+"\n"
+"typedef struct _ExampleWidget ExampleWidget;\n"
+"\n"
+"struct _ExampleWidget\n"
+"{\n"
+"  ...\n"
+"};\n"
+msgstr ""
+"\n"
+"typedef struct _ExampleWidget ExampleWidget;\n"
+"\n"
+"struct _ExampleWidget\n"
+"{\n"
+"  ...\n"
+"};\n"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10481
+msgid ""
+"The extra typedef allows the struct to be used in a header without including "
+"its full definition, simply by predeclaring it, by repeating that typedef. "
+"This means that you don't have to include the C library's header in your C++ "
+"header, thus keeping it out of your public API. <command>gmmproc</command> "
+"assumes that this technique was used, so you will see compiler errors if "
+"that is not the case."
+msgstr ""
+"El «typedef» adicional le permite usar la estructura en una cabecera sin "
+"incluir su definición completa, simplemente predeclarándola repitiendo ese "
+"«typedef». Esto significa que no tiene que incluir la cabecera de la "
+"biblioteca de C en su cabecera de C++, por lo tanto la dejará fuera de su "
+"API pública. <command>gmmproc</command> asume que se usó esta técnica, por "
+"lo que verá errores de compilación si ese no es el caso."
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10488
+#, no-wrap
+msgid ""
+"\n"
+"example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct'\n"
+"../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n"
+"make[4]: *** [example-widget.lo] Error 1\n"
+msgstr ""
+"\n"
+"example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct'\n"
+"../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n"
+"make[4]: *** [example-widget.lo] Error 1\n"
+
+#. (itstool) path: para/programlisting
+#: C/index-in.docbook:10494
+#, no-wrap
+msgid ""
+"\n"
+"example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n"
+"../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct 
_ExampleWidget ExampleWidget'\n"
+msgstr ""
+"\n"
+"example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n"
+"../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct 
_ExampleWidget ExampleWidget'\n"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10486
+#, fuzzy
+#| msgid ""
+#| "This compiler error might look like this: <placeholder-1/> or this: "
+#| "<placeholder-2/>"
+msgid ""
+"This compiler error might look like this: <_:programlisting-1/> or this: <_:"
+"programlisting-2/>"
+msgstr ""
+"Este error del compilador podría tener este aspecto: <placeholder-1/> o "
+"este: <placeholder-2/>"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10499
+msgid ""
+"This is easy to correct in the C library, so do send a patch to the relevant "
+"maintainer."
+msgstr ""
+"Esto es fácil de corregir en la biblioteca de C, así que envíe un parche al "
+"mantenedor pertinentes."
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:10503
+msgid "Lack of properties"
+msgstr "Falta de propiedades"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10504
+#, fuzzy
+#| msgid ""
+#| "By convention, glib/GTK+-style objects have <function>*_new()</function> "
+#| "functions, such as <function>example_widget_new()</function> that do "
+#| "nothing more than call <function>g_object_new()</function> and return the "
+#| "result. The input parameters are supplied to <function>g_object_new()</"
+#| "function> along with the names of the properties for which they are "
+#| "values. For instance, <placeholder-1/>"
+msgid ""
+"By convention, glib/GTK-style objects have <function>*_new()</function> "
+"functions, such as <function>example_widget_new()</function> that do nothing "
+"more than call <function>g_object_new()</function> and return the result. "
+"The input parameters are supplied to <function>g_object_new()</function> "
+"along with the names of the properties for which they are values. For "
+"instance,"
+msgstr ""
+"Por convenio, los objetos de glib/GTK+ tienen funciones <function>*_new()</"
+"function>, como <function>example_widget_new()</function> que no hacen más "
+"que llamar a <function>g_object_new()</function> y devolver el resultado. "
+"Los parámetros de entrada se proporcionan a <function>g_object_new()</"
+"function> junto con los nombres de las propiedades a las que se asignan. Por "
+"ejemplo, <placeholder-1/>"
+
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:10510
+#, no-wrap
+msgid ""
+"\n"
+"GtkWidget* example_widget_new(int something, const char* thing)\n"
+"{\n"
+"        return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n"
+"}\n"
+msgstr ""
+"\n"
+"GtkWidget* example_widget_new(int something, const char* thing)\n"
+"{\n"
+"        return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n"
+"}\n"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10516
+msgid ""
+"This allows language bindings to implement their own equivalents (such as C+"
+"+ constructors), without using the <function>*_new()</function> function. "
+"This is often necessary so that they can actually instantiate a derived "
+"GType, to add their own hooks for signal handlers and vfuncs."
+msgstr ""
+"Esto le permite a los enlaces entre lenguajes implementar sus propios "
+"equivalentes (como los constructores de C++), sin usar la función "
+"<function>*_new()</function>. Esto a menudo es necesario para poder "
+"instanciar realmente un GType derivado, para añadir sus propios ganchos para "
+"gestores de señales y «vfuncs»."
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10520
+msgid ""
+"At the least, the <function>_new()</function> function should not use any "
+"private API (functions that are only in a .c file). Even when there are no "
+"functions, we can sometimes reimplement 2 or 3 lines of code in a "
+"<function>_new()</function> function as long as those lines of code use API "
+"that is available to us."
+msgstr ""
+"Como mínimo, la función <function>_new()</function> no debe usar ninguna API "
+"privada (funciones que sólo están en un archivo .c). Incluso cuando no hay "
+"funciones, a veces se pueden reimplementar 2 ó 3 líneas de código en una "
+"función <function>_new()</function> siempre que esas líneas de código usen "
+"una API que esté disponible."
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10525
+#, fuzzy
+#| msgid ""
+#| "Another workaround is to add a <function>*_construct()</function> "
+#| "function that the C++ constructor can call after instantiating its own "
+#| "type. For instance, <placeholder-1/>"
+msgid ""
+"Another workaround is to add a <function>*_construct()</function> function "
+"that the C++ constructor can call after instantiating its own type. For "
+"instance,"
+msgstr ""
+"Otra solución es añadir una función <function>*_construct()</function> que "
+"el constructor de C++ pueda llamar después de haber instanciado su propio "
+"tipo. Por ejemplo, <placeholder-1/>"
+
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:10528
+#, no-wrap
+msgid ""
+"\n"
+"GtkWidget* example_widget_new(int something, const char* thing)\n"
+"{\n"
+"        ExampleWidget* widget;\n"
+"        widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL);\n"
+"        example_widget_construct(widget, \"something\", something, \"thing\", thing);\n"
+"}\n"
+"\n"
+"void example_widget_construct(ExampleWidget* widget, int something, const char* thing)\n"
+"{\n"
+"        //Do stuff that uses private API:\n"
+"        widget-&gt;priv-&gt;thing = thing;\n"
+"        do_something(something);\n"
+"}\n"
+msgstr ""
+"\n"
+"GtkWidget* example_widget_new(int something, const char* thing)\n"
+"{\n"
+"        ExampleWidget* widget;\n"
+"        widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL);\n"
+"        example_widget_construct(widget, \"something\", something, \"thing\", thing);\n"
+"}\n"
+"\n"
+"void example_widget_construct(ExampleWidget* widget, int something, const char* thing)\n"
+"{\n"
+"        //Do stuff that uses private API:\n"
+"        widget-&gt;priv-&gt;thing = thing;\n"
+"        do_something(something);\n"
+"}\n"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10543
+msgid ""
+"Adding properties, and ensuring that they interact properly with each other, "
+"is relatively difficult to correct in the C library, but it is possible, so "
+"do file a bug and try to send a patch to the relevant maintainer."
+msgstr ""
+"Incorporar propiedades, y asegurar que interactúan con otras propiedades "
+"correctamente, es relativamente difícil de corregir en la biblioteca de C, "
+"pero es posible, por lo que rellene un informe de error e intente enviar un "
+"parche al mantenedor correspondiente."
+
+#. (itstool) path: sect1/title
+#: C/index-in.docbook:10551
+msgid "Documentation"
+msgstr "Documentación"
+
+#. (itstool) path: sect1/para
+#: C/index-in.docbook:10552
+msgid ""
+"In general, gtkmm-style projects use Doxygen, which reads specially "
+"formatted C++ comments and generates HTML documentation. You may write these "
+"doxygen comments directly in the header files."
+msgstr ""
+"En general, los proyectos de gtkmm usan Doxygen, que lee comentarios de C++ "
+"con un formato específico y genera documentación HTML. Puede escribir estos "
+"comentarios de Doxygen directamente en los archivos de cabecera."
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:10555
+msgid "Reusing C documentation"
+msgstr "Reutilizar la documentación de C"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10556
+msgid ""
+"You might wish to reuse documentation that exists for the C library that you "
+"are wrapping. GTK-style C libraries typically use gtk-doc and therefore have "
+"source code comments formatted for gtk-doc and some extra documentation in ."
+"sgml and .xml files. The docextract_to_xml.py script, from glibmm's "
+"<filename>tools/defs_gen</filename> directory, can read these files and "
+"generate an .xml file that <command>gmmproc</command> can use to generate "
+"doxygen comments. <command>gmmproc</command> will even try to transform the "
+"documentation to make it more appropriate for a C++ API."
+msgstr ""
+"Tal vez quiera reutilizar documentación que exista para la biblioteca de C "
+"que está envolviendo. Las bibliotecas GTK de C típicamente usan gtk-doc y "
+"por lo tanto tienen comentarios en el código fuente en formato de gtk-doc y "
+"alguna documentación adicional en archivos .sgml y .xml. El script "
+"«docextract_to_xml.py», de la carpeta <filename>tools/defs_gen</filename> de "
+"glibmm, puede leer estos archivos y crear un archivo .xml que "
+"<command>gmmproc</command> puede usar para generar comentarios de doxygen. "
+"<command>gmmproc</command> incluso intentará transformar la documentación "
+"para hacerla más apropiada para una API de C++."
+
+#. (itstool) path: sect2/programlisting
+#: C/index-in.docbook:10566
+#, no-wrap
+#| msgid "./docextract_to_xml.py -s ~/checkout/gnome/gtk+/gtk/ &gt; gtk_docs.xml\n"
+msgid "./docextract_to_xml.py -s ~/checkout/gnome/gtk/gtk/ &gt; gtk_docs.xml\n"
+msgstr "./docextract_to_xml.py -s ~/checkout/gnome/gtk/gtk/ &gt; gtk_docs.xml\n"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10568
+#, fuzzy
+#| msgid ""
+#| "Because this automatic transformation is not always appropriate, you "
+#| "might want to provide hand-written text for a particular method. You can "
+#| "do this by copying the XML node for the function from your "
+#| "<filename>something_docs.xml</filename> file to the "
+#| "<filename>something_docs_override.xml</filename> file and changing the "
+#| "contents."
+msgid ""
+"Because this automatic transformation is not always appropriate, you might "
+"want to provide hand-written text for a particular method. You can do this "
+"by copying the XML node for the function from your <filename>something_docs."
+"xml</filename> file to the <filename>something_docs_override.xml</filename> "
+"file and changing the contents. Alternatively you can write your own "
+"documentation in the <filename>.hg</filename> file."
+msgstr ""
+"Dado que esta transformación automática no es siempre apropiada, tal vez "
+"quiera proporcionar texto escrito a mano para un método particular. Puede "
+"hacer esto copiando el nodo XML para la función de su archivo "
+"<filename>something_docs.xml</filename> al archivo "
+"<filename>something_docs_override.xml</filename> y cambiando el contenido."
+
+#. (itstool) path: sect2/title
+#: C/index-in.docbook:10578
+msgid "Documentation build structure"
+msgstr "Estructura de construcción de la documentación"
+
+#. (itstool) path: sect2/para
+#: C/index-in.docbook:10579
+#, fuzzy
+#| msgid ""
+#| "If you copied the skeleton source tree in mm-common and substituted the "
+#| "placeholder text, then you will already have suitable <filename>Makefile."
+#| "am</filename> and <filename>Doxyfile.in</filename> files. With the mm-"
+#| "common build setup, the list of Doxygen input files is not defined in the "
+#| "Doxygen configuration file, but passed along from <command>make</command> "
+#| "to the standard input of <command>doxygen</command>. The input file list "
+#| "is defined by the <varname>doc_input</varname> variable in the "
+#| "<filename>Makefile.am</filename> file."
+msgid ""
+"If you copied the skeleton source tree in <application>mm-common</"
+"application> and substituted the placeholder text, then you will already "
+"have suitable <filename>meson.build</filename> and <filename>Doxyfile.in</"
+"filename> files in the <filename>doc/reference/</filename> directory. You "
+"probably need to modify the <varname>tag_file_modules</varname> variable in "
+"<filename>meson.build</filename>, though. With the <application>mm-common</"
+"application> build setup, the list of Doxygen input files is not defined in "
+"the Doxygen configuration file, but passed along from <command>meson/ninja</"
+"command> to the standard input of <command>doxygen</command>."
+msgstr ""
+"Si copió el esqueleto del árbol de fuentes en mm-common y sustituyó los "
+"marcadores de posición, entonces ya tendrá archivos <filename>Makefile.am</"
+"filename> y <filename>Doxyfile.in</filename> apropiados. Con la "
+"configuración de construcción de mm-common, la lista de los archivos de "
+"entrada de Doxygen no se define en el archivo de configuración de Doxygen, "
+"sino que se pasa desde <command>make</command> a la entrada estándar de "
+"<command>doxygen</command>. La variable <varname>doc_input</varname> define "
+"la lista de archivos de entrada en el archivo <filename>Makefile.am</"
+"filename>."
+
+#~ msgid "Murray"
+#~ msgstr "Murray"
+
+#~ msgid "Cumming"
+#~ msgstr "Cumming"
+
+#~ msgid "Bernhard"
+#~ msgstr "Bernhard"
+
+#~ msgid "Rieder"
+#~ msgstr "Rieder"
+
+#~ msgid "Chapter on \"Timeouts\"."
+#~ msgstr "Capítulo acerca de «Tiempos de espera»."
+
+#~ msgid "Jonathon"
+#~ msgstr "Jonathon"
+
+#~ msgid "Jongsma"
+#~ msgstr "Jongsma"
+
+#~ msgid "Chapter on \"Drawing with Cairo\"."
+#~ msgstr "Capítulo acerca de «Dibujar con Cairo»."
+
+#~ msgid "Chapter on \"Working with gtkmm's Source Code\"."
+#~ msgstr "Capítulo acerca de «Trabajar con el código fuente de gtkmm»."
+
+#~ msgid "Chapter on \"Recent Files\"."
+#~ msgstr "Capítulo acerca de «Archivos recientes»."
+
+#~ msgid "Ole"
+#~ msgstr "Ole"
+
+#~ msgid "Laursen"
+#~ msgstr "Laursen"
+
+#~ msgid "Parts of chapter on \"Internationalization\"."
+#~ msgstr "Partes del capítulo acerca de «Internacionalización»."
+
+#~ msgid "Marko"
+#~ msgstr "Marko"
+
+#~ msgid "Anastasov"
+#~ msgstr "Anastasov"
+
+#~ msgid "Chapter on \"Printing\"."
+#~ msgstr "Capítulo acerca de «Imprimir»."
+
+#~ msgid "Daniel"
+#~ msgstr "Daniel"
+
+#~ msgid "Elstner"
+#~ msgstr "Elstner"
+
+#~ msgid "Chris"
+#~ msgstr "Chris"
+
+#~ msgid "Vine"
+#~ msgstr "Vine"
+
+#~ msgid "Chapter on \"Multi-threaded programs\"."
+#~ msgstr "Capítulo acerca de «Programas con múltiples hilos»."
+
+#~ msgid "David"
+#~ msgstr "David"
+
+#~ msgid "King"
+#~ msgstr "King"
+
+#~ msgid "Section on Gtk::Grid."
+#~ msgstr "Sección acerca de Gtk::Grid."
+
+#~ msgid "Pedro"
+#~ msgstr "Pedro"
+
+#~ msgid "Ferreira"
+#~ msgstr "Ferreira"
+
+#~ msgid "Chapter on Keyboard Events."
+#~ msgstr "Capítulo acerca de «Eventos del teclado»."
+
+#~ msgid "Kjell"
+#~ msgstr "Kjell"
+
+#~ msgid "Ahlstedt"
+#~ msgstr "Ahlstedt"
+
+#~ msgid "Parts of the update from gtkmm 2 to gtkmm 3."
+#~ msgstr "Partes de la actualización de gtkmm 2 a gtkmm 3."
+
+#~ msgid "Murray Cumming"
+#~ msgstr "Murray Cumming"
+
+#~ msgid "libsigc++ 2.0"
+#~ msgstr "libsigc++ 2.0"
+
+#~ msgid "GTK+ 3.0"
+#~ msgstr "GTK+ 3.0"
+
+#~ msgid "glibmm"
+#~ msgstr "glibmm"
+
+#~ msgid "cairomm"
+#~ msgstr "cairomm"
+
+#~ msgid "pangomm"
+#~ msgstr "pangomm"
+
+#~ msgid "atkmm"
+#~ msgstr "atkmm"
+
+#~ msgid "pkg-config"
+#~ msgstr "pkg-config"
+
+#~ msgid "glib"
+#~ msgstr "glib"
+
+#~ msgid "ATK"
+#~ msgstr "ATK"
+
+#~ msgid "Pango"
+#~ msgstr "Pango"
+
+#~ msgid "cairo"
+#~ msgstr "cairo"
+
+#~ msgid "gdk-pixbuf"
+#~ msgstr "gdk-pixbuf"
+
+#~ msgid ""
+#~ "\n"
+#~ "# ./configure\n"
+#~ "# make\n"
+#~ "# make install\n"
+#~ msgstr ""
+#~ "\n"
+#~ "# ./configure\n"
+#~ "# make\n"
+#~ "# make install\n"
+
+#~ msgid "Source Code"
+#~ msgstr "Código fuente"
+
+#~ msgid ""
+#~ "Openismus has more <ulink url=\"http://www.openismus.com/documents/linux/";
+#~ "automake/automake.shtml\">basic help with automake and autoconf</ulink>."
+#~ msgstr ""
+#~ "Openismus tiene más <ulink url=\"http://www.openismus.com/documents/linux/";
+#~ "automake/automake.shtml\">ayuda básica con automake y autoconf</ulink>"
+
+#~ msgid "Reference"
+#~ msgstr "Referencia"
+
+#~ msgid "Intermediate types"
+#~ msgstr "Tipos intermedios"
+
+#~ msgid ""
+#~ "Some API related to gtkmm uses intermediate data containers, such as "
+#~ "<classname>Glib::StringArrayHandle</classname>, instead of a specific "
+#~ "Standard C++ container such as <classname>std::vector</classname> or "
+#~ "<classname>std::list</classname>, though <application>gtkmm</application> "
+#~ "itself now uses just <classname>std::vector</classname> since "
+#~ "<application>gtkmm</application> 3.0."
+#~ msgstr ""
+#~ "Algunas API relacionadas con gtkmm utilizan contenedores de datos "
+#~ "intermedios, como <classname>Glib::StringArrayHandle</classname>, en vez "
+#~ "de un contenedor específico estándar de C++ como <classname>std::vector</"
+#~ "classname> o <classname>std::list</classname>, a pesar de que "
+#~ "<application>gtkmm</application> en sí mismo ahora sólo usa "
+#~ "<classname>std::vector</classname> desde <application>gtkmm</application> "
+#~ "3.0."
+
+#~ msgid ""
+#~ "<classname>Glib::ListHandle&lt;Gtk::Widget*&gt;</classname>: Use "
+#~ "<classname>std::vector&lt;Gtk::Widget*&gt;</classname>, <classname>std::"
+#~ "list&lt;Gtk::Widget*&gt;</classname>, etc."
+#~ msgstr ""
+#~ "<classname>Glib::ListHandle&lt;Gtk::Widget*&gt;</classname>: usa "
+#~ "<classname>std::vector&lt;Gtk::Widget*&gt;</classname>, <classname>std::"
+#~ "list&lt;Gtk::Widget*&gt;</classname>, etc."
+
+#~ msgid ""
+#~ "<classname>Glib::SListHandle&lt;Gtk::Widget*&gt;</classname>: Use "
+#~ "<classname>std::vector&lt;Gtk::Widget*&gt;</classname>, <classname>std::"
+#~ "list&lt;Gtk::Widget*&gt;</classname>, etc."
+#~ msgstr ""
+#~ "<classname>Glib::SListHandle&lt;Gtk::Widget*&gt;</classname>: usa "
+#~ "<classname>std::vector&lt;Gtk::Widget*&gt;</classname>, <classname>std::"
+#~ "list&lt;Gtk::Widget*&gt;</classname>, etc."
+
+#~ msgid ""
+#~ "You should not declare these types yourself. You should instead use "
+#~ "whatever Standard C++ container you prefer. glibmm will do the conversion "
+#~ "for you. Here are some of these intermediate types: <placeholder-1/>"
+#~ msgstr ""
+#~ "No declare estos tipos usted mismo. Utilice, en cambio, el contenedor "
+#~ "estándar C++ que prefiera. glibmm hará la conversión. Aquí hay algunos de "
+#~ "estos tipos intermedios: <placeholder-1/>"
+
+#~ msgid ""
+#~ "To obtain a <application>gtkmm</application> instance from a C GObject "
+#~ "instance, use the Glib::wrap() function. For instance"
+#~ msgstr ""
+#~ "Para obtener una instancia <application>gtkmm</application> desde una "
+#~ "instancia C GObject, use la función Glib::wrap(). Por ejemplo"
+
+#~ msgid ""
+#~ "Next, we use the Window's <methodname>add()</methodname> method to put "
+#~ "<literal>m_button</literal> in the Window. (<methodname>add()</"
+#~ "methodname> comes from <classname>Gtk::Container</classname>, which is "
+#~ "described in the chapter on container widgets.) The <methodname>add()</"
+#~ "methodname> method places the Widget in the Window, but it doesn't "
+#~ "display the widget. <application>gtkmm</application> widgets are always "
+#~ "invisible when you create them - to display them, you must call their "
+#~ "<methodname>show()</methodname> method, which is what we do in the next "
+#~ "line."
+#~ msgstr ""
+#~ "A continuación usamos el método <methodname>add()</methodname> de la "
+#~ "ventana para situar el <literal>m_button</literal> en ella. "
+#~ "(<methodname>add()</methodname> deriva de <classname>Gtk::Container</"
+#~ "classname>, que se describe en el capítulo sobre widgets contenedores). "
+#~ "El método <methodname>add()</methodname> ubica al widget en la ventana, "
+#~ "pero no lo muestra. Los widgets de <application>gtkmm</application> "
+#~ "siempre son invisibles cuando se crean: para mostrarlos, debe llamar a su "
+#~ "método <methodname>show()</methodname>, que es lo que se hace en la "
+#~ "siguiente línea."
+
+#~ msgid "Checkboxes"
+#~ msgstr "Casillas de verificación"
+
+#~ msgid "Constructors"
+#~ msgstr "Constructores"
+
+#~ msgid "pressed"
+#~ msgstr "pressed"
+
+#~ msgid "Emitted when the button is pressed."
+#~ msgstr "Emitida cuando se pulsa el botón."
+
+#~ msgid "released"
+#~ msgstr "released"
+
+#~ msgid "Emitted when the button is released."
+#~ msgstr "Emitida cuando se suelta el botón."
+
+#~ msgid "clicked"
+#~ msgstr "clicked"
+
+#~ msgid "Emitted when the button is pressed and released."
+#~ msgstr "Emitida cuando el botón se pulsa y se suelta."
+
+#~ msgid "enter"
+#~ msgstr "enter"
+
+#~ msgid "Emitted when the mouse pointer moves over the button's window."
+#~ msgstr ""
+#~ "Emitida cuando se mueve el puntero del ratón sobre el botón de la ventana."
+
+#~ msgid "leave"
+#~ msgstr "leave"
+
+#~ msgid "Emitted when the mouse pointer leaves the button's window."
+#~ msgstr "Emitida cuando el puntero del ratón sale del botón de la ventana."
+
+#~ msgid ""
+#~ "<classname>Gtk::ToggleButton</classname> is most useful as a base class "
+#~ "for the <classname>Gtk::CheckButton</classname> and <classname>Gtk::"
+#~ "RadioButton</classname> classes."
+#~ msgstr ""
+#~ "<classname>Gtk::ToggleButton</classname> es más útil como clase base para "
+#~ "las clases <classname>Gtk::CheckButton</classname> y <classname>Gtk::"
+#~ "RadioButton</classname>."
+
+#~ msgid ""
+#~ "There are two ways to set up a group of radio buttons. The first way is "
+#~ "to create the buttons, and set up their groups afterwards. Only the first "
+#~ "two constructors are used. In the following example, we make a new window "
+#~ "class called <classname>RadioButtons</classname>, and then put three "
+#~ "radio buttons in it:"
+#~ msgstr ""
+#~ "Hay dos maneras de establecer un grupo de botones de radio. La primera "
+#~ "manera es crear los botones, y establecer sus grupos luego. Sólo los dos "
+#~ "primeros constructores se usan. En el siguiente ejemplo, se crea una "
+#~ "clase de ventana nueva llamada <classname>RadioButtons</classname> y "
+#~ "luego se ubican tres botones de radio en ella:"
+
+#~ msgid ""
+#~ "class RadioButtons : public Gtk::Window\n"
+#~ "{\n"
+#~ "public:\n"
+#~ "    RadioButtons();\n"
+#~ "\n"
+#~ "protected:\n"
+#~ "    Gtk::RadioButton m_rb1, m_rb2, m_rb3;\n"
+#~ "};\n"
+#~ "\n"
+#~ "RadioButtons::RadioButtons()\n"
+#~ "  : m_rb1(\"button1\"),\n"
+#~ "    m_rb2(\"button2\"),\n"
+#~ "    m_rb3(\"button3\")\n"
+#~ "{\n"
+#~ "    Gtk::RadioButton::Group group = m_rb1.get_group();\n"
+#~ "    m_rb2.set_group(group);\n"
+#~ "    m_rb3.set_group(group);\n"
+#~ "}"
+#~ msgstr ""
+#~ "class RadioButtons : public Gtk::Window\n"
+#~ "{\n"
+#~ "public:\n"
+#~ "    RadioButtons();\n"
+#~ "\n"
+#~ "protected:\n"
+#~ "    Gtk::RadioButton m_rb1, m_rb2, m_rb3;\n"
+#~ "};\n"
+#~ "\n"
+#~ "RadioButtons::RadioButtons()\n"
+#~ "  : m_rb1(\"button1\"),\n"
+#~ "    m_rb2(\"button2\"),\n"
+#~ "    m_rb3(\"button3\")\n"
+#~ "{\n"
+#~ "    Gtk::RadioButton::Group group = m_rb1.get_group();\n"
+#~ "    m_rb2.set_group(group);\n"
+#~ "    m_rb3.set_group(group);\n"
+#~ "}"
+
+#~ msgid "m_rb2.set_group(m_rb1.get_group()); //doesn't work"
+#~ msgstr "m_rb2.set_group(m_rb1.get_group()); //doesn't work"
+
+#~ msgid ""
+#~ "Note that you can't just do <placeholder-1/> because the group is "
+#~ "modified by <methodname>set_group()</methodname> and therefore non-const."
+#~ msgstr ""
+#~ "Tenga en cuenta que no puede simplemente hacer <placeholder-1/> porque se "
+#~ "modifica al grupo mediante <methodname>set_group()</methodname>, y por lo "
+#~ "tanto, no es constante."
+
+#~ msgid ""
+#~ "The second way to set up radio buttons is to make a group first, and then "
+#~ "add radio buttons to it. Here's an example:"
+#~ msgstr ""
+#~ "La segunda manera de establecer botones de radio es hacer primero un "
+#~ "grupo y luego añadirle los botones a él. Aquí hay un ejemplo:"
+
+#~ msgid ""
+#~ "class RadioButtons : public Gtk::Window\n"
+#~ "{\n"
+#~ "public:\n"
+#~ "    RadioButtons();\n"
+#~ "};\n"
+#~ "\n"
+#~ "RadioButtons::RadioButtons()\n"
+#~ "{\n"
+#~ "    Gtk::RadioButton::Group group;\n"
+#~ "    Gtk::RadioButton *m_rb1 = Gtk::manage(\n"
+#~ "      new Gtk::RadioButton(group,\"button1\"));\n"
+#~ "    Gtk::RadioButton *m_rb2 = manage(\n"
+#~ "      new Gtk::RadioButton(group,\"button2\"));\n"
+#~ "      Gtk::RadioButton *m_rb3 = manage(\n"
+#~ "        new Gtk::RadioButton(group,\"button3\"));\n"
+#~ "}"
+#~ msgstr ""
+#~ "class RadioButtons : public Gtk::Window\n"
+#~ "{\n"
+#~ "public:\n"
+#~ "    RadioButtons();\n"
+#~ "};\n"
+#~ "\n"
+#~ "RadioButtons::RadioButtons()\n"
+#~ "{\n"
+#~ "    Gtk::RadioButton::Group group;\n"
+#~ "    Gtk::RadioButton *m_rb1 = Gtk::manage(\n"
+#~ "      new Gtk::RadioButton(group,\"button1\"));\n"
+#~ "    Gtk::RadioButton *m_rb2 = manage(\n"
+#~ "      new Gtk::RadioButton(group,\"button2\"));\n"
+#~ "      Gtk::RadioButton *m_rb3 = manage(\n"
+#~ "        new Gtk::RadioButton(group,\"button3\"));\n"
+#~ "}"
+
+#~ msgid ""
+#~ "We made a new group by simply declaring a variable, <literal>group</"
+#~ "literal>, of type <classname>Gtk::RadioButton::Group</classname>. Then we "
+#~ "made three radio buttons, using a constructor to make each of them part "
+#~ "of <literal>group</literal>."
+#~ msgstr ""
+#~ "Se creó un grupo nuevo simplemente declarando una variable, "
+#~ "<literal>group</literal>, del tipo <classname>Gtk::RadioButton::Group</"
+#~ "classname>. Luego, se hicieron tres botones de radio, usando un "
+#~ "constructor para hacer que cada uno sea parte de <literal>group</literal>."
+
+#~ msgid "Widget Reference"
+#~ msgstr "Referencia de widgets"
+
+#~ msgid "Tooltip Reference"
+#~ msgstr "Referencia de consejos"
+
+#~ msgid "Alignment"
+#~ msgstr "Alignment"
+
+#~ msgid ""
+#~ "The <classname>Alignment</classname> widget allows you to place a widget "
+#~ "at a position and size relative to the size of the <classname>Alignment</"
+#~ "classname> widget itself. For instance, it might be used to center a "
+#~ "widget."
+#~ msgstr ""
+#~ "El widget <classname>Alignment</classname> le permite poner un widget en "
+#~ "una posición y tamaño relativos al tamaño del widget "
+#~ "<classname>Alignment</classname> en sí. Por ejemplo, puede usarse para "
+#~ "centrar un widget."
+
+#~ msgid ""
+#~ "You need to specify the <classname>Alignment</classname>'s "
+#~ "characteristics to the constructor, or to the <methodname>set()</"
+#~ "methodname> method. In particular, you won't notice much effect unless "
+#~ "you specify a number other than 1.0 for the <literal>xscale</literal> and "
+#~ "<literal>yscale</literal> parameters, because 1.0 simply means that the "
+#~ "child widget will expand to fill all available space."
+#~ msgstr ""
+#~ "Debe especificar las características del <classname>Alignment</classname> "
+#~ "al constructor, o al método <methodname>set()</methodname>. En "
+#~ "particular, no notará ningún efecto a menos que especifique un número "
+#~ "distinto a 1.0 para los parámetros <literal>xscale</literal> e "
+#~ "<literal>yscale</literal>, porque 1.0 simplemente significa que el widget "
+#~ "se expandirá hasta cubrir todo el espacio disponible."
+
+#~ msgid ""
+#~ "This example right-aligns a button in a window by using an "
+#~ "<classname>Alignment</classname> widget."
+#~ msgstr ""
+#~ "Este ejemplo alinea a la derecha un botón en una ventana mediante el uso "
+#~ "de un widget <classname>Alignment</classname>."
+
+#~ msgid ""
+#~ "See the <link linkend=\"sec-progressbar\">ProgressBar</link> section for "
+#~ "another example that uses an <classname>Alignment</classname>."
+#~ msgstr ""
+#~ "Consulte la sección <link linkend=\"sec-progressbar\">ProgressBar</link> "
+#~ "para ver otro ejemplo que usa un <classname>Alignment</classname>."
+
+#~ msgid "Multiple-item widgets"
+#~ msgstr "Widgets de elementos múltiples"
+
+#~ msgid ""
+#~ "This is the declaration of the <methodname>pack_start()</methodname> "
+#~ "method:"
+#~ msgstr ""
+#~ "Esta es la declaración del método <methodname>pack_start()</methodname>."
+
+#~ msgid ""
+#~ "void pack_start(Gtk::Widget&amp; child,\n"
+#~ "                Gtk::PackOptions options = Gtk::PACK_EXPAND_WIDGET,\n"
+#~ "                guint padding = 0);"
+#~ msgstr ""
+#~ "void pack_start(Gtk::Widget&amp; child,\n"
+#~ "                Gtk::PackOptions options = Gtk::PACK_EXPAND_WIDGET,\n"
+#~ "                guint padding = 0);"
+
+#~ msgid ""
+#~ "The first argument is the widget you're packing. In our example these are "
+#~ "all <classname>Button</classname>s."
+#~ msgstr ""
+#~ "El primer argumento es el widget que está empaquetando. En el ejemplo "
+#~ "estos son todos los <classname>Button</classname>."
+
+#~ msgid ""
+#~ "<literal>Gtk::PACK_SHRINK</literal>: Space is contracted to the child "
+#~ "widget size. The widget will take up just-enough space and never expand."
+#~ msgstr ""
+#~ "<literal>Gtk::PACK_SHRINK</literal>: el espacio se contrae al tamaño del "
+#~ "widget hijo. El widget usará el espacio justo y necesario, y nunca se "
+#~ "expandirá."
+
+#~ msgid ""
+#~ "<literal>Gtk::PACK_EXPAND_PADDING</literal>: Extra space is filled with "
+#~ "padding. The widgets will be spaced out evenly, but their sizes won't "
+#~ "change - there will be empty space between the widgets instead."
+#~ msgstr ""
+#~ "<literal>Gtk::PACK_EXPAND_PADDING</literal>: se rellena espacio "
+#~ "adicional. Los widgets se espacian de manera similar, pero sus tamaños no "
+#~ "cambiarán: en su lugar, habrá espacio vacío."
+
+#~ msgid ""
+#~ "<literal>Gtk::PACK_EXPAND_WIDGET</literal>: Extra space is taken up by "
+#~ "increasing the child widget size, without changing the amount of space "
+#~ "between widgets."
+#~ msgstr ""
+#~ "<literal>Gtk::PACK_EXPAND_WIDGET</literal>: se usa espacio adicional "
+#~ "incrementando el tamaño del widget hijo, sin cambiar la cantidad de "
+#~ "espacio entre los widgets."
+
+#~ msgid ""
+#~ "The <parameter>options</parameter> argument can take one of these three "
+#~ "options: <placeholder-1/>"
+#~ msgstr ""
+#~ "El argumento <parameter>options</parameter> puede tomar una de estas tres "
+#~ "opciones: <placeholder-1/>"
+
+#~ msgid ""
+#~ "The <parameter>padding</parameter> argument specifies the width of an "
+#~ "extra border area to leave around the packed widget."
+#~ msgstr ""
+#~ "El argumento <parameter>padding</parameter> especifica el ancho de un "
+#~ "área adicional en el borde para dejar alrededor del widget empaquetado."
+
+#~ msgid "ButtonBoxes"
+#~ msgstr "Cajas de Botones"
+
+#~ msgid ""
+#~ "Button boxes are a convenient way to quickly arrange a group of buttons. "
+#~ "Their orientation can be either horizontal or vertical."
+#~ msgstr ""
+#~ "Las cajas de botones son una manera conveniente de ordenar rápidamente un "
+#~ "grupo de botones. Su orientación puede ser tanto horizontal como vertical."
+
+#~ msgid ""
+#~ "<classname>ButtonBox</classname>es help to make applications appear "
+#~ "consistent because they use standard settings, such as inter-button "
+#~ "spacing and packing."
+#~ msgstr ""
+#~ "Las <classname>ButtonBox</classname> ayudan a hacer que las aplicaciones "
+#~ "aparezcan consistentes porque usan opciones estándar, como espaciado "
+#~ "entre botones y empaquetado."
+
+#~ msgid ""
+#~ "Buttons are added to a <classname>ButtonBox</classname> with the "
+#~ "<methodname>add()</methodname> method."
+#~ msgstr ""
+#~ "Los botones se añaden a una <classname>ButtonBox</classname> con el "
+#~ "método <methodname>add()</methodname>."
+
+#~ msgid ""
+#~ "Button boxes support several layout styles. The style can be retrieved "
+#~ "and changed using <methodname>get_layout()</methodname> and "
+#~ "<methodname>set_layout()</methodname>."
+#~ msgstr ""
+#~ "Las cajas de botones soportan varios estilos de disposición. Puede "
+#~ "obtener y modificar el estilo usando <methodname>get_layout()</"
+#~ "methodname> y <methodname>set_layout()</methodname>. "
+
+#~ msgid "ButtonBox"
+#~ msgstr "ButtonBox"
+
+#~ msgid "Table"
+#~ msgstr "Tabla"
+
+#~ msgid ""
+#~ "<classname>Gtk::Table</classname> allows us to place widgets in a grid, "
+#~ "similar to <classname>Gtk::Grid</classname>."
+#~ msgstr ""
+#~ "<classname>Gtk::Table</classname> permite poner widgets en una "
+#~ "cuadrícula, de manera similar a <classname>Gtk::Grid</classname>."
+
+#~ msgid ""
+#~ "<classname>Gtk::Table</classname> is deprecated from <application>gtkmm</"
+#~ "application> version 3.4 and should not be used in newly-written code. "
+#~ "Use <classname>Gtk::Grid</classname> instead."
+#~ msgstr ""
+#~ "<classname>Gtk::Table</classname> se marcó como obsoleto en "
+#~ "<application>gtkmm</application> 3.4 y no se debe usar en el código "
+#~ "nuevo. Use <classname>Gtk::Grid</classname> en su lugar."
+
+#~ msgid ""
+#~ "To set the title of a page, use the <methodname>set_page_title()</"
+#~ "methodname> method. The header and side images of a page can be set with "
+#~ "the <methodname>set_page_header_image()</methodname> and "
+#~ "<methodname>set_page_side_image()</methodname> methods."
+#~ msgstr ""
+#~ "Para establecer el título de una página, use el método "
+#~ "<methodname>set_page_title()</methodname>. Las imágenes de cabecera y de "
+#~ "lado de una página se pueden establecer con los métodos "
+#~ "<methodname>set_page_header_image()</methodname> y "
+#~ "<methodname>set_page_side_image()</methodname>."
+
+#~ msgid ""
+#~ "Note that the instance (such as m_Columns here) should usually not be "
+#~ "static, because it often needs to be instantiated after glibmm has been "
+#~ "instantiated."
+#~ msgstr ""
+#~ "Tenga en cuenta que la instancia (como m_Columns aquí) normalmente no "
+#~ "debe ser estática, porque a menudo se necesita instanciarla después de "
+#~ "haber instanciado a glibmm."
+
+#~ msgid "TreeSortable Reference"
+#~ msgstr "Referencia de TreeSortable"
+
+#~ msgid "TreeModelSort Reference"
+#~ msgstr "Referencia de TreeModelSort"
+
+#~ msgid ""
+#~ "ModelColumns()\n"
+#~ "{ add(m_col_id); add(m_col_name); }\n"
+#~ "\n"
+#~ "  Gtk::TreeModelColumn&lt;int&gt; m_col_id;\n"
+#~ "  Gtk::TreeModelColumn&lt;Glib::ustring&gt; m_col_name;\n"
+#~ "};\n"
+#~ "\n"
+#~ "ModelColumns m_columns;"
+#~ msgstr ""
+#~ "ModelColumns()\n"
+#~ "{ add(m_col_id); add(m_col_name); }\n"
+#~ "\n"
+#~ "  Gtk::TreeModelColumn&lt;int&gt; m_col_id;\n"
+#~ "  Gtk::TreeModelColumn&lt;Glib::ustring&gt; m_col_name;\n"
+#~ "};\n"
+#~ "\n"
+#~ "ModelColumns m_columns;"
+
+#~ msgid ""
+#~ "First create the <classname>Action</classname>s and add them to an "
+#~ "<classname>ActionGroup</classname>, with <methodname>ActionGroup::add()</"
+#~ "methodname>."
+#~ msgstr ""
+#~ "Primero cree las <classname>Action</classname>s y añádaselas a un "
+#~ "<classname>ActionGroup</classname>, con <methodname>ActionGroup::add()</"
+#~ "methodname>."
+
+#~ msgid ""
+#~ "The arguments to <methodname>Action::create()</methodname> specify the "
+#~ "action's name and how it will appear in menus and toolbars."
+#~ msgstr ""
+#~ "Los argumentos de <methodname>Action::create()</methodname> especifican "
+#~ "el nombre de la acción y cómo aparecerá en los menús y las barras de "
+#~ "herramientas."
+
+#~ msgid ""
+#~ "Note that you must specify actions for sub menus as well as menu items."
+#~ msgstr ""
+#~ "Tenga en cuenta que debe especificar acciones para submenús así como para "
+#~ "elementos del menú."
+
+#~ msgid "UIManager"
+#~ msgstr "UIManager"
+
+#~ msgid ""
+#~ "Glib::RefPtr&lt;Gtk::UIManager&gt; m_refUIManager =\n"
+#~ "    Gtk::UIManager::create();\n"
+#~ "m_refUIManager-&gt;insert_action_group(m_refActionGroup);\n"
+#~ "add_accel_group(m_refUIManager-&gt;get_accel_group());"
+#~ msgstr ""
+#~ "Glib::RefPtr&lt;Gtk::UIManager&gt; m_refUIManager =\n"
+#~ "    Gtk::UIManager::create();\n"
+#~ "m_refUIManager-&gt;insert_action_group(m_refActionGroup);\n"
+#~ "add_accel_group(m_refUIManager-&gt;get_accel_group());"
+
+#~ msgid ""
+#~ "Glib::ustring ui_info =\n"
+#~ "    \"&lt;ui&gt;\"\n"
+#~ "    \"  &lt;menubar name='MenuBar'&gt;\"\n"
+#~ "    \"    &lt;menu action='MenuFile'&gt;\"\n"
+#~ "    \"      &lt;menuitem action='New'/&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Open'/&gt;\"\n"
+#~ "    \"      &lt;separator/&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Quit'/&gt;\"\n"
+#~ "    \"    &lt;/menu&gt;\"\n"
+#~ "    \"    &lt;menu action='MenuEdit'&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Cut'/&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Copy'/&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Paste'/&gt;\"\n"
+#~ "    \"    &lt;/menu&gt;\"\n"
+#~ "    \"  &lt;/menubar&gt;\"\n"
+#~ "    \"  &lt;toolbar  name='ToolBar'&gt;\"\n"
+#~ "    \"    &lt;toolitem action='Open'/&gt;\"\n"
+#~ "    \"    &lt;toolitem action='Quit'/&gt;\"\n"
+#~ "    \"  &lt;/toolbar&gt;\"\n"
+#~ "    \"&lt;/ui&gt;\";\n"
+#~ "\n"
+#~ "m_refUIManager-&gt;add_ui_from_string(ui_info);"
+#~ msgstr ""
+#~ "Glib::ustring ui_info =\n"
+#~ "    \"&lt;ui&gt;\"\n"
+#~ "    \"  &lt;menubar name='MenuBar'&gt;\"\n"
+#~ "    \"    &lt;menu action='MenuFile'&gt;\"\n"
+#~ "    \"      &lt;menuitem action='New'/&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Open'/&gt;\"\n"
+#~ "    \"      &lt;separator/&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Quit'/&gt;\"\n"
+#~ "    \"    &lt;/menu&gt;\"\n"
+#~ "    \"    &lt;menu action='MenuEdit'&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Cut'/&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Copy'/&gt;\"\n"
+#~ "    \"      &lt;menuitem action='Paste'/&gt;\"\n"
+#~ "    \"    &lt;/menu&gt;\"\n"
+#~ "    \"  &lt;/menubar&gt;\"\n"
+#~ "    \"  &lt;toolbar  name='ToolBar'&gt;\"\n"
+#~ "    \"    &lt;toolitem action='Open'/&gt;\"\n"
+#~ "    \"    &lt;toolitem action='Quit'/&gt;\"\n"
+#~ "    \"  &lt;/toolbar&gt;\"\n"
+#~ "    \"&lt;/ui&gt;\";\n"
+#~ "\n"
+#~ "m_refUIManager-&gt;add_ui_from_string(ui_info);"
+
+#~ msgid ""
+#~ "Remember that these names are just the identifiers that we used when "
+#~ "creating the actions. They are not the text that the user will see in the "
+#~ "menus and toolbars. We provided those human-readable names when we "
+#~ "created the actions."
+#~ msgstr ""
+#~ "Recuerde que estos nombres son sólo identificadores que se usaron cuando "
+#~ "se crearon las acciones. No son el texto que el usuario verá en los menús "
+#~ "y barras de herramientas. Se han proporcionado esos nombres legibles por "
+#~ "el humano cuando se crearon las acciones."
+
+#~ msgid ""
+#~ "Gtk::Widget* pMenubar = m_refUIManager-&gt;get_widget(\"/MenuBar\");\n"
+#~ "pBox-&gt;add(*pMenuBar, Gtk::PACK_SHRINK);"
+#~ msgstr ""
+#~ "Gtk::Widget* pMenubar = m_refUIManager-&gt;get_widget(\"/MenuBar\");\n"
+#~ "pBox-&gt;add(*pMenuBar, Gtk::PACK_SHRINK);"
+
+#~ msgid ""
+#~ "The UI layout for a popup menu should use the <literal>popup</literal> "
+#~ "node. For instance:"
+#~ msgstr ""
+#~ "La distribución de la IU para un menú emergente debe usar el nodo "
+#~ "<literal>popup</literal>. Por ejemplo:"
+
+#~ msgid ""
+#~ "Glib::ustring ui_info =\n"
+#~ "    \"&lt;ui&gt;\"\n"
+#~ "    \"  &lt;popup name='PopupMenu'&gt;\"\n"
+#~ "    \"    &lt;menuitem action='ContextEdit'/&gt;\"\n"
+#~ "    \"    &lt;menuitem action='ContextProcess'/&gt;\"\n"
+#~ "    \"    &lt;menuitem action='ContextRemove'/&gt;\"\n"
+#~ "    \"  &lt;/popup&gt;\"\n"
+#~ "    \"&lt;/ui&gt;\";\n"
+#~ "\n"
+#~ "m_refUIManager-&gt;add_ui_from_string(ui_info);"
+#~ msgstr ""
+#~ "Glib::ustring ui_info =\n"
+#~ "    \"&lt;ui&gt;\"\n"
+#~ "    \"  &lt;popup name='PopupMenu'&gt;\"\n"
+#~ "    \"    &lt;menuitem action='ContextEdit'/&gt;\"\n"
+#~ "    \"    &lt;menuitem action='ContextProcess'/&gt;\"\n"
+#~ "    \"    &lt;menuitem action='ContextRemove'/&gt;\"\n"
+#~ "    \"  &lt;/popup&gt;\"\n"
+#~ "    \"&lt;/ui&gt;\";\n"
+#~ "\n"
+#~ "m_refUIManager-&gt;add_ui_from_string(ui_info);"
+
+#~ msgid "ToolPalette"
+#~ msgstr "ToolPalette"
+
+#~ msgid ""
+#~ "A <classname>ToolPalette</classname> is similar to a <classname>Toolbar</"
+#~ "classname> but can contain a grid of items, categorized into groups. The "
+#~ "user may hide or expand each group. As in a toolbar, the items may be "
+#~ "displayed as only icons, as only text, or as icons with text."
+#~ msgstr ""
+#~ "Una <classname>ToolPalette</classname> es similar a una "
+#~ "<classname>Toolbar</classname>, pero puede contener una rejilla de "
+#~ "elementos categorizados en grupos. El usuario puede ocultar o expandir "
+#~ "cada grupo. Al igual que en una barra de herramientas, los elementos "
+#~ "pueden aparecer sólo como iconos, como sólo texto, o en forma de iconos "
+#~ "con el texto."
+
+#~ msgid ""
+#~ "The <classname>ToolPalette</classname>'s items might be dragged or simply "
+#~ "activated. For instance, the user might drag objects to a canvas to "
+#~ "create new items there. Or the user might click an item to activate a "
+#~ "certain brush size in a drawing application."
+#~ msgstr ""
+#~ "Los elementos del <classname>ToolPalette</classname> pueden arrastrarse o "
+#~ "simplemente activarse. Por ejemplo, el usuario tal vez arrastre objetos a "
+#~ "un lienzo para crear elementos nuevos allí. O bien, el usuario podría "
+#~ "pulsar sobre un elemento para activar un determinado tamaño de pincel en "
+#~ "una aplicación de dibujo."
+
+#, fuzzy
+#~| msgid ""
+#~| "<classname>ToolItemGroup</classname>s should be added to the tool "
+#~| "pallete via the base class's <function>Gtk::Container::add()</function> "
+#~| "method, for instance like so:"
+#~ msgid ""
+#~ "<classname>ToolItemGroup</classname>s should be added to the tool palette "
+#~ "via the base class's <function>Gtk::Container::add()</function> method, "
+#~ "for instance like so:"
+#~ msgstr ""
+#~ "Los <classname>ToolItemGroup</classname> deben añadirse a la paleta de "
+#~ "herramientas a través del método <function>Gtk::Container::add()</"
+#~ "function> de la clase base, por ejemplo, así:"
+
+#~ msgid ""
+#~ "\n"
+#~ "Gtk::ToolItemGroup* group_brushes =\n"
+#~ "  Gtk::manage(new Gtk::ToolItemGroup(\"Brushes\"));\n"
+#~ "m_ToolPalette.add(*group_brushes);\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Gtk::ToolItemGroup* group_brushes =\n"
+#~ "  Gtk::manage(new Gtk::ToolItemGroup(\"Brushes\"));\n"
+#~ "m_ToolPalette.add(*group_brushes);\n"
+
+#~ msgid ""
+#~ "<classname>Gtk::ToolItem</classname>s can then be added to the group. For "
+#~ "instance, like so:"
+#~ msgstr ""
+#~ "Entonces podrá añadir varios <classname>Gtk::ToolItem</classname> al "
+#~ "grupo. Por ejemplo, así:"
+
+#~ msgid ""
+#~ "\n"
+#~ "Gtk::ToolButton* button = Gtk::manage(new Gtk::ToolButton(icon, \"Big"
+#~ "\"));\n"
+#~ "button-&gt;set_tooltip_text(\"Big Brush);\n"
+#~ "group_brushes-&gt;insert(*button);\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Gtk::ToolButton* button = Gtk::manage(new Gtk::ToolButton(icon, \"Big"
+#~ "\"));\n"
+#~ "button-&gt;set_tooltip_text(\"Big Brush);\n"
+#~ "group_brushes-&gt;insert(*button);\n"
+
+#~ msgid ""
+#~ "You might then handle the <classname>ToolButton</classname>'s "
+#~ "<literal>clicked</literal> signal. Alternatively, you could allow the "
+#~ "item to be dragged to another widget, by calling <methodname>Gtk::"
+#~ "ToolPalette::add_drag_dest()</methodname> and then using <methodname>Gtk::"
+#~ "ToolPalette::get_drag_item()</methodname> in the other widget's "
+#~ "<literal>drag_data_received</literal> signal handler."
+#~ msgstr ""
+#~ "Entonces podrá manejar la señal <literal>clicked</literal> del "
+#~ "<classname>ToolButton</classname>. Alternativamente puede permitir que se "
+#~ "arrastre el elemento a otro widget, llamando a <methodname>Gtk::"
+#~ "ToolPalette::add_drag_dest()</methodname> y después usando "
+#~ "<methodname>Gtk::ToolPalette::get_drag_item()</methodname> en el gestor "
+#~ "de la señal <literal>drag_data_received</literal> del otro widget."
+
+#~ msgid "ToolPalette Reference"
+#~ msgstr "Referencia de ToolPalette"
+
+#~ msgid "ToolItemGroup Reference"
+#~ msgstr "Referencia de ToolItemGroup"
+
+#~ msgid "ToolItem Reference"
+#~ msgstr "Referencia de ToolItem"
+
+#, fuzzy
+#~| msgid ""
+#~| "Call <methodname>add_drag_dest()</methodname> to allow items or groups "
+#~| "to be dragged from the tool palette to a particular destination widget. "
+#~| "You can then use <methodname>get_drag_item()</methodname> to discover "
+#~| "which ToolItem or ToolItemGroup is being dragged. You can use "
+#~| "<literal>dynamic_cast</literal> to discover whether is it an item or a "
+#~| "group. For instance, you might use this in your "
+#~| "<literal>drag_data_received</literal> signal handler, to add a dropped "
+#~| "item, or to show a suitable icon while dragging."
+#~ msgid ""
+#~ "Call <methodname>add_drag_dest()</methodname> to allow items or groups to "
+#~ "be dragged from the tool palette to a particular destination widget. You "
+#~ "can then use <methodname>get_drag_item()</methodname> to discover which "
+#~ "ToolItem or ToolItemGroup is being dragged. You can use "
+#~ "<literal>dynamic_cast</literal> to discover whether it is an item or a "
+#~ "group. For instance, you might use this in your "
+#~ "<literal>drag_data_received</literal> signal handler, to add a dropped "
+#~ "item, or to show a suitable icon while dragging."
+#~ msgstr ""
+#~ "Llame a <methodname>add_drag_dest()</methodname> para permitir arrastrar "
+#~ "elementos o grupos de la paleta de herramientas un widget particular de "
+#~ "destino. Entonces podrá usar <methodname>get_drag_item()</methodname> "
+#~ "para descubrir qué «ToolItem» o «ToolItemGroup» se está arrastrando. "
+#~ "Después podrá usar <literal>dynamic_cast</literal> para descubrir si es "
+#~ "un elemento o un grupo. Por ejemplo, podría usar esto en su gestor de la "
+#~ "señal <literal>drag_data_received</literal>, para añadir un elemento "
+#~ "soltado, o para mostrar un icono adecuado mientras se arrastra."
+
+#~ msgid ""
+#~ "See the <link linkend=\"chapter-draganddrop\">Drag and Drop</link> "
+#~ "chapter for general advice about Drag and Drop with gtkmm."
+#~ msgstr ""
+#~ "Consulte el capítulo <link linkend=\"chapter-draganddrop\">Arrastrar y "
+#~ "soltar</link> para obtener información general acerca de arrastrar y "
+#~ "soltar con gtkmm."
+
+#~ msgid "ToolPalette Example"
+#~ msgstr "Ejemplo de ToolPalette"
+
+#~ msgid ""
+#~ "This example adds a <classname>ToolPalette</classname> and a "
+#~ "<classname>DrawingArea</classname> to a window and allows the user to "
+#~ "drag icons from the tool palette to the drawing area. The tool palette "
+#~ "contains several groups of items. The combo boxes allow the user to "
+#~ "change the style and orientation of the tool palette."
+#~ msgstr ""
+#~ "Este ejemplo añade una <classname>ToolPalette</classname> y una "
+#~ "<classname>DrawingArea</classname> a una ventana y le permite al usuario "
+#~ "arrastrar iconos de la paleta de herramientas al área de dibujo. La "
+#~ "paleta de herramientas contiene varios grupos de elementos. Las cajas "
+#~ "combinadas le permiten al usuario cambiar el estilo y la orientación de "
+#~ "la paleta de herramientas."
+
+#~ msgid "Widgets Without X-Windows"
+#~ msgstr "Widgets sin X-Windows"
+
+#~ msgid ""
+#~ "Some Widgets do not have an associated X-Window, so they therefore do not "
+#~ "receive X events. This means that the signals described in the <link "
+#~ "linkend=\"sec-xeventsignals\">X event signals</link> section will not be "
+#~ "emitted. If you want to capture events for these widgets you can use a "
+#~ "special container called <classname>Gtk::EventBox</classname>, which is "
+#~ "described in the <link linkend=\"sec-eventbox\">EventBox</link> section."
+#~ msgstr ""
+#~ "Algunos widgets no tienen una X-Window asociada, por lo que no reciben "
+#~ "eventos de X. Esto significa que las señales descritas en la sección "
+#~ "<link linkend=\"sec-xeventsignals\">Señales de eventos de X</link> no se "
+#~ "emitirán. Si quiere capturar eventos para estos widgets, puede usar un "
+#~ "contenedor especial llamado <classname>Gtk::EventBox</classname>, que se "
+#~ "describe en la sección <link linkend=\"sec-eventbox\">EventBox</link>."
+
+#~ msgid "Here is a list of some of these Widgets:"
+#~ msgstr "Aquí hay una lista de estos widgets"
+
+#~ msgid ""
+#~ "Gtk::Alignment\n"
+#~ "Gtk::Arrow\n"
+#~ "Gtk::AspectFrame\n"
+#~ "Gtk::Bin\n"
+#~ "Gtk::Box\n"
+#~ "Gtk::Button\n"
+#~ "Gtk::CheckButton\n"
+#~ "Gtk::Fixed\n"
+#~ "Gtk::Frame\n"
+#~ "Gtk::Grid\n"
+#~ "Gtk::Image\n"
+#~ "Gtk::Label\n"
+#~ "Gtk::MenuItem\n"
+#~ "Gtk::Notebook\n"
+#~ "Gtk::Paned\n"
+#~ "Gtk::RadioButton\n"
+#~ "Gtk::Range\n"
+#~ "Gtk::ScrolledWindow\n"
+#~ "Gtk::Separator\n"
+#~ "Gtk::Table (deprecated from <application>gtkmm</application> version "
+#~ "3.4)\n"
+#~ "Gtk::Toolbar"
+#~ msgstr ""
+#~ "Gtk::Alignment\n"
+#~ "Gtk::Arrow\n"
+#~ "Gtk::AspectFrame\n"
+#~ "Gtk::Bin\n"
+#~ "Gtk::Box\n"
+#~ "Gtk::Button\n"
+#~ "Gtk::CheckButton\n"
+#~ "Gtk::Fixed\n"
+#~ "Gtk::Frame\n"
+#~ "Gtk::Grid\n"
+#~ "Gtk::Image\n"
+#~ "Gtk::Label\n"
+#~ "Gtk::MenuItem\n"
+#~ "Gtk::Notebook\n"
+#~ "Gtk::Paned\n"
+#~ "Gtk::RadioButton\n"
+#~ "Gtk::Range\n"
+#~ "Gtk::ScrolledWindow\n"
+#~ "Gtk::Separator\n"
+#~ "Gtk::Table (marcado como obsoleto en la versión de <application>gtkmm</"
+#~ "application> 3.4)\n"
+#~ "Gtk::Toolbar"
+
+#~ msgid ""
+#~ "These widgets are mainly used for decoration or layout, so you won't "
+#~ "often need to capture events on them. They are intended to have no X-"
+#~ "Window in order to improve performance."
+#~ msgstr ""
+#~ "Estos widgets se usan principalmente para decorar o distribuir, por lo "
+#~ "que a menudo no necesitará capturar sus eventos. Están destinados a no "
+#~ "tener X-Window para mejorar su desempeño."
+
+#~ msgid "EventBox"
+#~ msgstr "EventBox"
+
+#~ msgid ""
+#~ "Some <application>gtkmm</application> widgets don't have associated X "
+#~ "windows; they draw on their parents' windows. Because of this, they "
+#~ "cannot receive events. Also, if they are incorrectly sized, they don't "
+#~ "clip, so you can get messy overwriting etc. To receive events on one of "
+#~ "these widgets, you can place it inside an <classname>EventBox</classname> "
+#~ "widget and then call <methodname>Gtk::Widget::set_events()</methodname> "
+#~ "on the EventBox before showing it."
+#~ msgstr ""
+#~ "Algunos widgets de <application>gtkmm</application> no tienen X-Windows "
+#~ "asociadas; dibujan en las ventanas de sus padres. Es por esto que no "
+#~ "pueden recibir eventos. Además, si tienen el tamaño incorrecto, no se "
+#~ "recortan, por lo que puede aparecer sobrescritura errónea, etc. Para "
+#~ "recibir eventos en uno de estos widgets, puede ponerlo dentro de un "
+#~ "widget <classname>EventBox</classname> y después llamar a "
+#~ "<methodname>Gtk::Widget::set_events()</methodname> en la «EventBox» antes "
+#~ "de mostrarlo."
+
+#~ msgid ""
+#~ "Although the name <classname>EventBox</classname> emphasises the event-"
+#~ "handling method, the widget can also be used for clipping (and more; see "
+#~ "the example below)."
+#~ msgstr ""
+#~ "A pesar de que el nombre <classname>EventBox</classname> hace énfasis en "
+#~ "el método de manipulación de eventos, el widget también puede usarse para "
+#~ "recortar (y para más cosas; consulte el ejemplo más abajo)."
+
+#~ msgid "The constructor for <classname>Gtk::EventBox</classname> is:"
+#~ msgstr "El constructor de <classname>Gtk::EventBox</classname> es:"
+
+#~ msgid "Gtk::EventBox();"
+#~ msgstr "Gtk::EventBox();"
+
+#~ msgid ""
+#~ "A child widget can be added to the <classname>EventBox</classname> using:"
+#~ msgstr ""
+#~ "Se puede agregar un widget hijo a <classname>EventBox</classname> "
+#~ "utilizando:"
+
+#~ msgid "event_box.add(child_widget);"
+#~ msgstr "event_box.add(child_widget);"
+
+#~ msgid ""
+#~ "The following example demonstrates both uses of an <classname>EventBox</"
+#~ "classname> - a label is created that is clipped to a small box, and set "
+#~ "up so that a mouse-click on the label causes the program to exit. "
+#~ "Resizing the window reveals varying amounts of the label."
+#~ msgstr ""
+#~ "El siguiente ejemplo demuestra ambos usos de una <classname>EventBox</"
+#~ "classname>: se crea una etiqueta que se adjunta a un pequeño cuadro, "
+#~ "configurada de manera que una pulsación del ratón en ella hace que el "
+#~ "programa termine. Redimensionar la ventana revelará partes variables de "
+#~ "la etiqueta."
+
+#~ msgid "Here is an example of a simple program that draws an image."
+#~ msgstr "Aquí hay un ejemplo de un programa simple que dibuja una imagen."
+
+#~ msgid "target: A name, such as \"STRING\""
+#~ msgstr "target: un nombre, como por ejemplo «STRING»"
+
+#~ msgid ""
+#~ "info: An identifier which will be sent to your signals to tell you which "
+#~ "TargetEntry was used."
+#~ msgstr ""
+#~ "info: un identificador, que se enviará a sus señales para comunicarle qué "
+#~ "«TargetEntry» se usó."
+
+#~ msgid ""
+#~ "flags: Used only for drag and drop, this specifies whether the data may "
+#~ "be dragged to other widgets and applications, or only to the same ones."
+#~ msgstr ""
+#~ "flags: se usan sólo para arrastrar y soltar, y especifican si los datos "
+#~ "pueden arrastrarse a otros widgets y aplicaciones, o sólo a los mismos."
+
+#~ msgid ""
+#~ "<classname>Gtk::TargetEntry</classname> objects contain this information: "
+#~ "<placeholder-1/>"
+#~ msgstr ""
+#~ "Los objetos <classname>Gtk::TargetEntry</classname> contienen esta "
+#~ "información: <placeholder-1/>"
+
+#~ msgid "DragContext"
+#~ msgstr "DragContext"
+
+#~ msgid ""
+#~ "The drag and drop signals provide a DragContext, which contains some "
+#~ "information about the drag and drop operation and can be used to "
+#~ "influence the process. For instance, you can discover the source widget, "
+#~ "or change the drag and drop icon, by using the <methodname>set_icon()</"
+#~ "methodname> methods. More importantly, you should call the "
+#~ "<methodname>drag_finish()</methodname> method from your "
+#~ "<literal>drag_data_received</literal> signal handler to indicate whether "
+#~ "the drop was successful."
+#~ msgstr ""
+#~ "Las señales de arrastrar y soltar proporcionan un DragContext, que "
+#~ "contiene información acerca de la esta operación y puede usarse para "
+#~ "influir en el proceso. Por ejemplo, puede descubrir el widget de origen, "
+#~ "o cambiar el icono de arrastrar y soltar, usando el método "
+#~ "<methodname>set_icon()</methodname>. Aún más importante, debe llamar al "
+#~ "método <methodname>drag_finish()</methodname> desde su gestor de señal "
+#~ "<literal>drag_data_received</literal> para indicar si la operación tuvo "
+#~ "éxito."
+
+#~ msgid ""
+#~ "You can usually pretend that <classname>Gtk::Clipboard</classname> is a "
+#~ "singleton. You can get the default clipboard instance with "
+#~ "<methodname>Gtk::Clipboard::get()</methodname>. This is probably the only "
+#~ "clipboard you will ever need."
+#~ msgstr ""
+#~ "<classname>Gtk::Clipboard</classname> es un «singleton». Puede obtener la "
+#~ "instancia predeterminada del portapapeles con <methodname>Gtk::Clipboard::"
+#~ "get()</methodname>. Esta es, probablemente, el único portapapeles que "
+#~ "necesitará."
+
+#~ msgid "Targets"
+#~ msgstr "Objetivos"
+
+#~ msgid ""
+#~ "When the user asks to copy some data, you should tell the "
+#~ "<classname>Clipboard</classname> what targets are available, and provide "
+#~ "the callback methods that it can use to get the data. At this point you "
+#~ "should store a copy of the data, to be provided when the clipboard calls "
+#~ "your callback method in response to a paste."
+#~ msgstr ""
+#~ "Cuando el usuario pide copiar datos, debe decirle al "
+#~ "<classname>Clipboard</classname> qué objetivos están disponibles y "
+#~ "proporcionar los métodos de retorno de llamada que puede usar para "
+#~ "obtener los datos. En este punto, debe almacenar una copia de los datos, "
+#~ "para proporcionarla cuando el portapapeles llame a su método de retorno "
+#~ "de llamada en respuesta a la acción de pegar."
+
+#~ msgid ""
+#~ "Glib::RefPtr&lt;Gtk::Clipboard&gt; refClipboard = Gtk::Clipboard::get();\n"
+#~ "\n"
+#~ "//Targets:\n"
+#~ "std::vector&lt;Gtk::TargetEntry&gt; targets;\n"
+#~ "targets.push_back( Gtk::TargetEntry(\"example_custom_target\") );\n"
+#~ "targets.push_back( Gtk::TargetEntry(\"UTF8_STRING\") );\n"
+#~ "\n"
+#~ "refClipboard-&gt;set( targets,\n"
+#~ "    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_get),\n"
+#~ "    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_clear) );"
+#~ msgstr ""
+#~ "Glib::RefPtr&lt;Gtk::Clipboard&gt; refClipboard = Gtk::Clipboard::get();\n"
+#~ "\n"
+#~ "//Targets:\n"
+#~ "std::vector&lt;Gtk::TargetEntry&gt; targets;\n"
+#~ "targets.push_back( Gtk::TargetEntry(\"example_custom_target\") );\n"
+#~ "targets.push_back( Gtk::TargetEntry(\"UTF8_STRING\") );\n"
+#~ "\n"
+#~ "refClipboard-&gt;set( targets,\n"
+#~ "    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_get),\n"
+#~ "    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_clear) );"
+
+#~ msgid ""
+#~ "Your callback will then provide the stored data when the user chooses to "
+#~ "paste the data. For instance:"
+#~ msgstr ""
+#~ "Su retorno de llamada proporcionará entonces los datos almacenados cuando "
+#~ "el usuario elija pegarlos. Por ejemplo:"
+
+#~ msgid ""
+#~ "void ExampleWindow::on_clipboard_get(\n"
+#~ "    Gtk::SelectionData&amp; selection_data, guint /* info */)\n"
+#~ "{\n"
+#~ "  const std::string target = selection_data.get_target();\n"
+#~ "\n"
+#~ "  if(target == \"example_custom_target\")\n"
+#~ "    selection_data.set(\"example_custom_target\", m_ClipboardStore);\n"
+#~ "}"
+#~ msgstr ""
+#~ "void ExampleWindow::on_clipboard_get(\n"
+#~ "    Gtk::SelectionData&amp; selection_data, guint /* info */)\n"
+#~ "{\n"
+#~ "  const std::string target = selection_data.get_target();\n"
+#~ "\n"
+#~ "  if(target == \"example_custom_target\")\n"
+#~ "    selection_data.set(\"example_custom_target\", m_ClipboardStore);\n"
+#~ "}"
+
+#~ msgid ""
+#~ "The <literal>ideal</literal> example below can supply more than one "
+#~ "clipboard target."
+#~ msgstr ""
+#~ "El ejemplo <literal>ideal</literal> a continuación puede proporcionar más "
+#~ "de un objetivo para el portapapeles."
+
+#~ msgid ""
+#~ "The clear callback allows you to free the memory used by your stored data "
+#~ "when the clipboard replaces its data with something else."
+#~ msgstr ""
+#~ "El retorno de llamada «clear» le permite liberar la memoria que sus datos "
+#~ "almacenados usan cuando el portapapeles reemplaza sus datos con otra cosa."
+
+#~ msgid ""
+#~ "refClipboard-&gt;request_contents(\"example_custom_target\",\n"
+#~ "    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_received) );"
+#~ msgstr ""
+#~ "refClipboard-&gt;request_contents(\"example_custom_target\",\n"
+#~ "    sigc::mem_fun(*this, &amp;ExampleWindow::on_clipboard_received) );"
+
+#~ msgid ""
+#~ "In your callback, compare the vector of available targets with those that "
+#~ "your application supports for pasting. You could enable or disable a "
+#~ "Paste menu item, depending on whether pasting is currently possible. For "
+#~ "instance:"
+#~ msgstr ""
+#~ "En su retorno de llamada, compare la lista de objetivos disponibles con "
+#~ "aquellos que su aplicación soporta pegar. Puede activar o no el elemento "
+#~ "en el menú «pegar», dependiendo de si pegar es posible o no actualmente. "
+#~ "Por ejemplo:"
+
+#~ msgid ""
+#~ "void ExampleWindow::on_clipboard_received_targets(\n"
+#~ "  const std::vector&lt;Glib::ustring&gt;&amp; targets)\n"
+#~ "{\n"
+#~ "  const bool bPasteIsPossible =\n"
+#~ "    std::find(targets.begin(), targets.end(),\n"
+#~ "      example_target_custom) != targets.end();\n"
+#~ "\n"
+#~ "  // Enable/Disable the Paste button appropriately:\n"
+#~ "  m_Button_Paste.set_sensitive(bPasteIsPossible);\n"
+#~ "}"
+#~ msgstr ""
+#~ "void ExampleWindow::on_clipboard_received_targets(\n"
+#~ "  const std::vector&lt;Glib::ustring&gt;&amp; targets)\n"
+#~ "{\n"
+#~ "  const bool bPasteIsPossible =\n"
+#~ "    std::find(targets.begin(), targets.end(),\n"
+#~ "      example_target_custom) != targets.end();\n"
+#~ "\n"
+#~ "  // Enable/Disable the Paste button appropriately:\n"
+#~ "  m_Button_Paste.set_sensitive(bPasteIsPossible);\n"
+#~ "}"
+
+#~ msgid ""
+#~ "It supports pasting of 2 targets - both the custom one and a text one "
+#~ "that creates an arbitrary text representation of the custom data."
+#~ msgstr ""
+#~ "Soporta pegar dos objetivos: tanto el personalizado como el de texto que "
+#~ "crea una representación de texto arbitraria de los datos personalizados."
+
+#~ msgid "For instance, <placeholder-1/>"
+#~ msgstr "Por ejemplo, <placeholder-1/>"
+
+#~ msgid ""
+#~ "<application>gtkmm</application> provides an easy way to manage recently "
+#~ "used documents. The classes involved in implementing this functionality "
+#~ "are <classname>RecentManager</classname>, <classname>RecentChooserDialog</"
+#~ "classname>, <classname>RecentChooserMenu</classname>, "
+#~ "<classname>RecentChooserWidget</classname>, <classname>RecentAction</"
+#~ "classname>, and <classname>RecentFilter</classname>."
+#~ msgstr ""
+#~ "<application>gtkmm</application> proporciona una manera fácil de "
+#~ "gestionar documentos usados recientemente. Las clases involucradas en la "
+#~ "implementación de esta funcionalidad son <classname>RecentManager</"
+#~ "classname>, <classname>RecentChooserDialog</classname>, "
+#~ "<classname>RecentChooserMenu</classname>, <classname>RecentChooserWidget</"
+#~ "classname>, <classname>RecentAction</classname>, y "
+#~ "<classname>RecentFilter</classname>."
+
+#~ msgid ""
+#~ "<classname>RecentManager</classname> is the model of a model-view "
+#~ "pattern, where the view is a class that implements the "
+#~ "<classname>RecentChooser</classname> interface."
+#~ msgstr ""
+#~ "<classname>RecentManager</classname> es el modelo de un patrón modelo-"
+#~ "vista cuya vista es la clase que implementa la interfaz "
+#~ "<classname>RecentChooser</classname>."
+
+#~ msgid "RecentChooser"
+#~ msgstr "RecentChooser"
+
+#~ msgid ""
+#~ "<classname>RecentChooserMenu</classname> and <classname>RecentAction</"
+#~ "classname> allow you to list recently used files as a menu."
+#~ msgstr ""
+#~ "<classname>RecentChooserMenu</classname> y <classname>RecentAction</"
+#~ "classname> le permiten listar archivos usados recientemente en un menú."
+
+#~ msgid "Plugs and Sockets"
+#~ msgstr "«Plugs» y «Sockets»"
+
+#~ msgid ""
+#~ "From time to time, it may be useful to be able to embed a widget from "
+#~ "another application within your application. <application>gtkmm</"
+#~ "application> allows you to do this with the <classname>Gtk::Socket</"
+#~ "classname> and <classname>Gtk::Plug</classname> classes. It is not "
+#~ "anticipated that very many applications will need this functionality, but "
+#~ "in the rare case that you need to display a widget that is running in a "
+#~ "completely different process, these classes can be very helpful."
+#~ msgstr ""
+#~ "De vez en cuando, puede ser útil incrustar un widget de otra aplicación "
+#~ "dentro de la suya. <application>gtkmm</application> le permite hacer esto "
+#~ "con las clases <classname>Gtk::Socket</classname> y <classname>Gtk::Plug</"
+#~ "classname>. Se anticipa que no muchas aplicaciones necesitan esta "
+#~ "funcionalidad, pero en los raros casos en los que necesite mostrar un "
+#~ "widget que esté ejecutándose en un proceso completamente diferente, estas "
+#~ "clases pueden resultar muy útiles."
+
+#~ msgid ""
+#~ "The communication between a <classname>Socket</classname> and a "
+#~ "<classname>Plug</classname> follows the XEmbed protocol. This protocol "
+#~ "has also been implemented in other toolkits (e.g. Qt), which allows the "
+#~ "same level of integration when embedding a Qt widget in GTK+ or vice "
+#~ "versa."
+#~ msgstr ""
+#~ "La comunicación entre un <classname>Socket</classname> y un "
+#~ "<classname>Plug</classname> sigue el protocolo «XEmbed». Este protocolo, "
+#~ "que también se ha implementado en otros kits de herramientas (por "
+#~ "ejemplo, «Qt»), permite el mismo nivel de integración cuando se incrusta "
+#~ "un widget Qt en uno GTK+ o viceversa."
+
+#~ msgid ""
+#~ "The way that <classname>Sockets</classname> and <classname>Plugs</"
+#~ "classname> work together is through their window ids. Both a "
+#~ "<classname>Socket</classname> and a <classname>Plug</classname> have IDs "
+#~ "that can be retrieved with their <methodname>get_id()</methodname> member "
+#~ "functions. The use of these IDs will be explained below in <xref linkend="
+#~ "\"sec-connecting-plugs-sockets\"/>."
+#~ msgstr ""
+#~ "La manera en la que los <classname>Sockets</classname> y los "
+#~ "<classname>Plugs</classname> trabajan juntos es a través de sus ID de "
+#~ "ventana. Tanto un <classname>Socket</classname> como un <classname>Plug</"
+#~ "classname> tienen ID que pueden obtenerse con sus funciones miembro "
+#~ "<methodname>get_id()</methodname>. El uso de estos ID se explicará a "
+#~ "continuación en la <xref linkend=\"sec-connecting-plugs-sockets\"/>."
+
+#~ msgid "Sockets"
+#~ msgstr "«Sockets»"
+
+#~ msgid ""
+#~ "A <classname>Socket</classname> is a special kind of container widget "
+#~ "that provides the ability to embed widgets from one process into another "
+#~ "process in a way that is transparent to the user."
+#~ msgstr ""
+#~ "Un <classname>Socket</classname> es un tipo especial de widget contenedor "
+#~ "que ofrece la posibilidad de incorporar widgets de un proceso en otro "
+#~ "proceso de manera que sea transparente para el usuario."
+
+#~ msgid "Plugs"
+#~ msgstr "«Plugs»"
+
+#~ msgid ""
+#~ "A <classname>Plug</classname> is a special kind of Window that can be "
+#~ "plugged into a <classname>Socket</classname>. Besides the normal "
+#~ "properties and methods of <classname>Gtk::Window</classname>, a "
+#~ "<classname>Plug</classname> provides a constructor that takes the ID of a "
+#~ "<classname>Socket</classname>, which will automatically embed the "
+#~ "<classname>Plug</classname> into the <classname>Socket</classname> that "
+#~ "matches that ID."
+#~ msgstr ""
+#~ "Un <classname>Plug</classname> es un tipo especial de ventana que se "
+#~ "puede conectar a un <classname>Socket</classname>. Además de las "
+#~ "propiedades y los métodos normales de <classname>Gtk::Window</classname>, "
+#~ "un <classname>Plug</classname> proporciona un constructor que toma el ID "
+#~ "de un <classname>Socket</classname>, lo que automáticamente incrusta el "
+#~ "<classname>Plug</classname> en el <classname>Socket</classname> que "
+#~ "coincide con el ID."
+
+#~ msgid ""
+#~ "Since a <classname>Plug</classname> is just a special type of "
+#~ "<classname>Gtk::Window</classname> class, you can add containers or "
+#~ "widgets to it like you would to any other window."
+#~ msgstr ""
+#~ "Dado que un <classname>Plug</classname> es sólo un tipo especial de la "
+#~ "clase <classname>Gtk::Window</classname>, puede añadirle contenedores o "
+#~ "widgets como si fuera cualquier otra ventana."
+
+#~ msgid "Connecting Plugs and Sockets"
+#~ msgstr "Conectar «plugs» y «sockets»"
+
+#~ msgid ""
+#~ "After a <classname>Socket</classname> or <classname>Plug</classname> "
+#~ "object is realized, you can obtain its ID with its <methodname>get_id()</"
+#~ "methodname> function. This ID can then be shared with other processes so "
+#~ "that other processes know how to connect to each other."
+#~ msgstr ""
+#~ "Luego de que se crea un objeto <classname>Socket</classname> o "
+#~ "<classname>Plug</classname>, puede obtener su ID con su función "
+#~ "<methodname>get_id()</methodname>. Este ID puede entonces compartirse con "
+#~ "otros procesos para que estos sepan cómo conectarse entre sí."
+
+#~ msgid ""
+#~ "Create a <classname>Socket</classname> object in one process and pass the "
+#~ "ID of that <classname>Socket</classname> to another process so that it "
+#~ "can create a <classname>Plug</classname> object by specifying the given "
+#~ "<classname>Socket</classname> ID in its constructor. There is no way to "
+#~ "assign a <classname>Plug</classname> to a particular <classname>Socket</"
+#~ "classname> after creation, so you must pass the <classname>Socket</"
+#~ "classname> ID to the <classname>Plug</classname>'s constructor."
+#~ msgstr ""
+#~ "Cree un objeto <classname>Socket</classname> en un proceso y pásele el ID "
+#~ "de ese <classname>Socket</classname> a otro proceso para que pueda crear "
+#~ "un objeto <classname>Plug</classname> mediante la especificación del ID "
+#~ "del <classname>Socket</classname> dado en su constructor. No hay manera "
+#~ "de asignar un <classname>Plug</classname> a un <classname>Socket</"
+#~ "classname> particular después de su creación, por lo que le debe pasar el "
+#~ "ID del <classname>Socket</classname> al constructor del <classname>Plug</"
+#~ "classname>."
+
+#~ msgid ""
+#~ "Create a <classname>Plug</classname> independantly from any particular "
+#~ "<classname>Socket</classname> and pass the ID of the <classname>Plug</"
+#~ "classname> to other processes that need to use it. The ID of the "
+#~ "<classname>Plug</classname> can be associated with a particular "
+#~ "<classname>Socket</classname> object using the <methodname>Socket::"
+#~ "add_id()</methodname> function. This is the approach used in the example "
+#~ "below."
+#~ msgstr ""
+#~ "Cree un <classname>Plug</classname> independiente de cualquier "
+#~ "<classname>Socket</classname> particular y pásele el ID del "
+#~ "<classname>Plug</classname> a otros procesos que necesiten usarlo. El ID "
+#~ "del <classname>Plug</classname> puede asociarse con un objeto "
+#~ "<classname>Socket</classname> particular usando la función "
+#~ "<methodname>Socket::add_id()</methodname>. Este es el enfoque utilizado "
+#~ "en el siguiente ejemplo."
+
+#~ msgid "There are two basic strategies that can be used: <placeholder-1/>"
+#~ msgstr "Existen dos estrategias básicas que pueden usarse: <placeholder-1/>"
+
+#~ msgid "Plugs and Sockets Example"
+#~ msgstr "Ejemplo de «Plugs» y «Sockets»."
+
+#~ msgid ""
+#~ "The following is a simple example of using sockets and plugs. The method "
+#~ "of communication between processes is deliberately kept very simple: The "
+#~ "<classname>Plug</classname> writes its ID out to a text file named "
+#~ "<filename>plug.id</filename> and the process with the socket reads the ID "
+#~ "from this file. In a real program, you may want to use a more "
+#~ "sophisticated method of inter-process communication."
+#~ msgstr ""
+#~ "El siguiente es un ejemplo simple del uso de «sockets» y «plugs». El "
+#~ "método de comunicación entre los procesos se mantiene simple "
+#~ "deliberadamente: el <classname>Plug</classname> escribe su ID en un "
+#~ "archivo de texto llamado <filename>plug.id</filename> y el proceso con el "
+#~ "«socket» lee el ID de este archivo. En un programa real, probablemente "
+#~ "quiera usar un método más sofisticado de comunicación entre procesos."
+
+#~ msgid ""
+#~ "This example creates two executable programs: <filename>socket</filename> "
+#~ "and <filename>plug</filename>. The idea is that <filename>socket</"
+#~ "filename> has an application window that will embed a widget from the "
+#~ "<filename>plug</filename> program. The way this example is designed, "
+#~ "<filename>plug</filename> must be running first before starting "
+#~ "<filename>socket</filename>. To see the example in action, execute the "
+#~ "following commands in order from within the example directory:"
+#~ msgstr ""
+#~ "Este ejemplo crea dos programas ejecutables: <filename>socket</filename> "
+#~ "y <filename>plug</filename>. La idea es que <filename>socket</filename> "
+#~ "tenga una ventana de aplicación en la que se empotre un widget del "
+#~ "programa <filename>plug</filename>. Dada la manera en la que este ejemplo "
+#~ "está diseñado, <filename>plug</filename> debe estar en ejecución antes de "
+#~ "iniciar <filename>socket</filename>. Para ver el ejemplo en acción, "
+#~ "ejecute los siguientes comandos en orden desde la carpeta de ejemplos:"
+
+#~ msgid ""
+#~ "Start the <filename>plug</filename> program and send it to the background "
+#~ "(or just use a different terminal)."
+#~ msgstr ""
+#~ "Ejecute el programa <filename>plug</filename> y envíelo a segundo plano "
+#~ "(o simplemente use otra terminal)."
+
+#~ msgid "$ ./plug &amp;"
+#~ msgstr "$ ./plug &amp;"
+
+#~ msgid "After which you should see something like the following:"
+#~ msgstr "Después de esto debería ver algo así:"
+
+#~ msgid "The window ID is: 69206019"
+#~ msgstr "The window ID is: 69206019"
+
+#~ msgid "Then start the <filename>socket</filename> program:"
+#~ msgstr "Entonces, ejecute el programa <filename>socket</filename>:"
+
+#~ msgid "$ ./socket"
+#~ msgstr "$ ./socket"
+
+#~ msgid ""
+#~ "After starting <filename>socket</filename>, you should see the following "
+#~ "output in the terminal:"
+#~ msgstr ""
+#~ "Después de haber ejecutado <filename>socket</filename>, debería ver la "
+#~ "siguiente salida en la terminal:"
+
+#~ msgid ""
+#~ "I've been embedded.\n"
+#~ "A plug was added"
+#~ msgstr ""
+#~ "I've been embedded.\n"
+#~ "A plug was added"
+
+#~ msgid ""
+#~ "The first line of output is from <filename>plug</filename>, after it has "
+#~ "been notified that it has been embedded inside of a <classname>Socket</"
+#~ "classname>. The second line was emitted by <filename>socket</filename> in "
+#~ "response to its <methodname>plug_added</methodname> signal. If everything "
+#~ "was done as described above, the <filename>socket</filename> window "
+#~ "should look roughly like the following:"
+#~ msgstr ""
+#~ "La primera línea de la salida es de <filename>plug</filename>, después de "
+#~ "que se le ha notificado que se empotró en un <classname>Socket</"
+#~ "classname>. La segunda línea la emite <filename>socket</filename> en "
+#~ "respuesta a su señal <methodname>plug_added</methodname>. Si todo se "
+#~ "realizó como se describió anteriormente, la ventana <filename>socket</"
+#~ "filename> debería verse más o menos así:"
+
+#~ msgid ""
+#~ "If for some reason the <classname>Socket</classname> couldn't attach the "
+#~ "<classname>Plug</classname>, the window would look something like this:"
+#~ msgstr ""
+#~ "Si, por alguna razón, el <classname>Socket</classname> no pudiera "
+#~ "adjuntar el <classname>Plug</classname>, la ventana se vería más o menos "
+#~ "así:"
+
+#~ msgid ""
+#~ "<application>gtkmm</application> provides the <function>manage()</"
+#~ "function> function and <methodname>add()</methodname> methods to create "
+#~ "and destroy widgets. Every widget except a top-level window must be added "
+#~ "or packed into a container in order to be displayed. The "
+#~ "<function>manage()</function> function marks a widget so that when the "
+#~ "widget is added to a container, the container becomes responsible for "
+#~ "deleting the widget."
+#~ msgstr ""
+#~ "<application>gtkmm</application> proporciona la función "
+#~ "<function>manage()</function> y métodos <methodname>add()</methodname> "
+#~ "para crear y destruir widgets. Cada widget, excepto una ventana de nivel "
+#~ "superior, debe añadirse o empaquetarse en un contenedor para mostrarse. "
+#~ "La función <function>manage()</function> marca un widget para que, cuando "
+#~ "se añada a un contenedor, este se vuelva responsable de su eliminación."
+
+#~ msgid ""
+#~ "\n"
+#~ "Glib::RefPtr&lt;Gdk::Pixbuf&gt; pixbuf2 = pixbuf;\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Glib::RefPtr&lt;Gdk::Pixbuf&gt; pixbuf2 = pixbuf;\n"
+
+#~ msgid "Intltool README"
+#~ msgstr "README de intltool"
+
+#~ msgid "How to use Git for GNOME translators"
+#~ msgstr "Cómo usar Git para traductores de GNOME"
+
+#~ msgid "gettext manual"
+#~ msgstr "manual de gettext"
+
+#~ msgid "gtkmm_hello"
+#~ msgstr "gtkmm_hello"
+
+#~ msgid "<placeholder-1/> example package"
+#~ msgstr "<placeholder-1/> paquete de ejemplo"
+
+#~ msgid "gnomemm_hello"
+#~ msgstr "gnomemm_hello"
+
+#~ msgid ""
+#~ "std::ostringstream output;\n"
+#~ "output.imbue(std::locale(\"\")); // use the user's locale for this "
+#~ "stream\n"
+#~ "output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
+#~ "label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
+#~ msgstr ""
+#~ "std::ostringstream output;\n"
+#~ "output.imbue(std::locale(\"\")); // use the user's locale for this "
+#~ "stream\n"
+#~ "output &lt;&lt; percentage &lt;&lt; \" % done\";\n"
+#~ "label-&gt;set_text(Glib::locale_to_utf8(output.str()));"
+
+#~ msgid ""
+#~ "<methodname>get_preferred_width_vfunc()</methodname>: Calculate the "
+#~ "minimum and natural width of the container."
+#~ msgstr ""
+#~ "<methodname>get_preferred_width_vfunc()</methodname>: calcula la anchura "
+#~ "mínima y natural del contenedor."
+
+#~ msgid ""
+#~ "<methodname>get_preferred_width_for_height_vfunc()</methodname>: "
+#~ "Calculate the minimum and natural width of the container, if it would be "
+#~ "given the specified height."
+#~ msgstr ""
+#~ "<methodname>get_preferred_width_for_height_vfunc()</methodname>: calcula "
+#~ "la anchura mínima y natural del contenedor, si se le da la altura "
+#~ "especificada."
+
+#~ msgid ""
+#~ "<methodname>get_preferred_height_for_width_vfunc()</methodname>: "
+#~ "Calculate the minimum and natural height of the container, if it would be "
+#~ "given the specified width."
+#~ msgstr ""
+#~ "<methodname>get_preferred_height_for_width_vfunc()</methodname>: calcula "
+#~ "la altura mínima y natural del contenedor, si se le da la anchura "
+#~ "especificada."
+
+#~ msgid ""
+#~ "<methodname>forall_vfunc()</methodname>: Call the same callback for each "
+#~ "of the children."
+#~ msgstr ""
+#~ "<methodname>forall_vfunc()</methodname>: llama al mismo retorno de "
+#~ "llamada para cada uno de los hijos."
+
+#~ msgid ""
+#~ "<methodname>on_add()</methodname>: Add a child widget to the container."
+#~ msgstr ""
+#~ "<methodname>on_add()</methodname>: añade un widget hijo al contenedor."
+
+#~ msgid ""
+#~ "<methodname>on_remove()</methodname>: Remove a child widget from the "
+#~ "container."
+#~ msgstr ""
+#~ "<methodname>on_remove()</methodname>: elimina un widget hijo del "
+#~ "contenedor."
+
+#~ msgid ""
+#~ "<methodname>child_type_vfunc()</methodname>: Return what type of child "
+#~ "can be added."
+#~ msgstr ""
+#~ "<methodname>child_type_vfunc()</methodname>: devuelve qué tipo de hijo "
+#~ "puede añadirse."
+
+#~ msgid ""
+#~ "You are not guaranteed to get the <literal>Gtk::SizeRequestMode</literal> "
+#~ "that you request. Therefore all four of the "
+#~ "<methodname>get_preferred_xxx_vfunc()</methodname> methods must return "
+#~ "sensible values."
+#~ msgstr ""
+#~ "No se le garantiza obtener el <literal>Gtk::SizeRequestMode</literal> que "
+#~ "pida. Por lo tanto, los cuatro métodos "
+#~ "<methodname>get_preferred_xxx_vfunc()</methodname> deben devolver valores "
+#~ "razonables."
+
+#~ msgid ""
+#~ "Unless your container is a top-level window that derives from "
+#~ "<classname>Gtk::Window</classname>, you should probably also call "
+#~ "<methodname>Gtk::Widget::set_has_window(false)</methodname> in your "
+#~ "constructor. This means that your container does not create its own "
+#~ "<classname>Gdk::Window</classname>, but uses its parent's window. (Note "
+#~ "the difference between <classname>Gtk::Window</classname> and "
+#~ "<classname>Gdk::Window</classname>.) If your container does need its own "
+#~ "<classname>Gdk::Window</classname>, and does not derive from "
+#~ "<classname>Gtk::Window</classname>, you must also override the "
+#~ "<methodname>on_realize()</methodname> method as described in the <link "
+#~ "linkend=\"sec-custom-widgets\">Custom Widgets</link> section. And unless "
+#~ "your container draws directly onto the underlying <classname>Gdk::Window</"
+#~ "classname>, you should probably call "
+#~ "<methodname>set_redraw_on_allocate(false)</methodname> to improve "
+#~ "performance."
+#~ msgstr ""
+#~ "A menos que su contenedor sea una ventana de nivel superior que derive de "
+#~ "<classname>Gtk::Window</classname>, probablemente también deba llamar a "
+#~ "<methodname>Gtk::Widget::set_has_window(false)</methodname> en su "
+#~ "constructor. Esto significa que su contenedor no crea su propia "
+#~ "<classname>Gdk::Window</classname>, sino que usa la de su padre (note la "
+#~ "diferencia entre <classname>Gtk::Window</classname> y <classname>Gdk::"
+#~ "Window</classname>). Si su contenedor no necesita su propia  "
+#~ "<classname>Gdk::Window</classname>, y no deriva de <classname>Gtk::"
+#~ "Window</classname>, también debe reemplazar el método "
+#~ "<methodname>on_realize()</methodname> como se describe en la sección "
+#~ "<link linkend=\"sec-custom-widgets\">Widgets personalizados</link>. Y, a "
+#~ "menos que su contenedor dibuje directamente sobre la <classname>Gdk::"
+#~ "Window</classname> subyacente, probablemente deba llamar a "
+#~ "<methodname>set_redraw_on_allocate(false)</methodname> para mejorar el "
+#~ "rendimiento."
+
+#~ msgid ""
+#~ "By overriding <methodname>forall_vfunc()</methodname> you can allow "
+#~ "applications to operate on all of the container's child widgets. For "
+#~ "instance, <methodname>show_all_children()</methodname> uses this to find "
+#~ "all the child widgets and show them."
+#~ msgstr ""
+#~ "Reemplazar <methodname>forall_vfunc()</methodname> puede permitirle a las "
+#~ "aplicaciones operar en todos los widgets hijos de los contenedores. Por "
+#~ "ejemplo, <methodname>show_all_children()</methodname> usa esto para "
+#~ "encontrar a todos los widgets hijos y mostrarlos."
+
+#~ msgid ""
+#~ "Although your container might have its own method to set the child "
+#~ "widgets, you should still provide an implementation for the virtual "
+#~ "<methodname>on_add()</methodname> and <methodname>on_remove()</"
+#~ "methodname> methods from the base class, so that the add() and remove() "
+#~ "methods will do something appropriate if they are called."
+#~ msgstr ""
+#~ "A pesar de que su contenedor puede tener su propio método para establecer "
+#~ "widgets hijos, aún así debe proporcionar una implementación para los "
+#~ "métodos virtuales <methodname>on_add()</methodname> y "
+#~ "<methodname>on_remove()</methodname> de la clase base, para que los "
+#~ "métodos add() y remove() hagan algo apropiado si se llaman."
+
+#~ msgid ""
+#~ "Your implementation of the <methodname>child_type_vfunc()</methodname> "
+#~ "method should report the type of widget that may be added to your "
+#~ "container, if it is not yet full. This is usually <methodname>Gtk::"
+#~ "Widget::get_type()</methodname> to indicate that the container may "
+#~ "contain any class derived from <classname>Gtk::Widget</classname>. If the "
+#~ "container may not contain any more widgets, then this method should "
+#~ "return <literal>G_TYPE_NONE</literal>."
+#~ msgstr ""
+#~ "Su implementación del método <methodname>child_type_vfunc()</methodname> "
+#~ "debe reportar el tipo de widget que puede añadírsele a su contenedor, si "
+#~ "todavía no está lleno. Esto es generalmente <methodname>Gtk::Widget::"
+#~ "get_type()</methodname> para indicar que el contenedor puede contener "
+#~ "cualquier clase derivada de <classname>Gtk::Widget</classname>. Si el "
+#~ "contenedor no puede contener más widgets, entonces este método debe "
+#~ "devolver <literal>G_TYPE_NONE</literal>."
+
+#~ msgid ""
+#~ "<methodname>get_preferred_width_vfunc()</methodname>: Calculate the "
+#~ "minimum and natural width of the widget."
+#~ msgstr ""
+#~ "<methodname>get_preferred_width_vfunc()</methodname>: calcula la anchura "
+#~ "mínima y natural del widget."
+
+#~ msgid ""
+#~ "<methodname>get_preferred_width_for_height_vfunc()</methodname>: "
+#~ "Calculate the minimum and natural width of the widget, if it would be "
+#~ "given the specified height."
+#~ msgstr ""
+#~ "<methodname>get_preferred_width_for_height_vfunc()</methodname>: calcula "
+#~ "la anchura mínima y natural del widget, si se le da la altura "
+#~ "especificada."
+
+#~ msgid ""
+#~ "<methodname>get_preferred_height_for_width_vfunc()</methodname>: "
+#~ "Calculate the minimum and natural height of the widget, if it would be "
+#~ "given the specified width."
+#~ msgstr ""
+#~ "<methodname>get_preferred_height_for_width_vfunc()</methodname>: calcula "
+#~ "la altura mínima y natural del widget, si se le da la anchura "
+#~ "especificada."
+
+#~ msgid ""
+#~ "Most custom widgets need their own <classname>Gdk::Window</classname> to "
+#~ "draw on. Then you can call <methodname>Gtk::Widget::set_has_window(true)</"
+#~ "methodname> in your constructor. (This is the default value.) If you do "
+#~ "not call <methodname>set_has_window(false)</methodname>, you must "
+#~ "override <methodname>on_realize()</methodname> and call <methodname>Gtk::"
+#~ "Widget::set_realized()</methodname> and <methodname>Gtk::Widget::"
+#~ "set_window()</methodname> from there."
+#~ msgstr ""
+#~ "La mayoría de los widgets personalizados necesitan su propia "
+#~ "<classname>Gdk::Window</classname> sobre la que dibujar. Después podrá "
+#~ "llamar a <methodname>Gtk::Widget::set_has_window(true)</methodname> en su "
+#~ "constructor (este es el valor predeterminado). Si no llama a "
+#~ "<methodname>set_has_window(false)</methodname>, debe reemplazar a "
+#~ "<methodname>on_realize()</methodname> y llamar a <methodname>Gtk::Widget::"
+#~ "set_realized()</methodname> y a <methodname>Gtk::Widget::set_window()</"
+#~ "methodname> desde allí."
+
+#~ msgid ""
+#~ "<application>glibmm</application> provides the normal set of thread "
+#~ "launching functions, mutexes, condition variables and scoped locking "
+#~ "classes required for writing multi-threaded programs using C++."
+#~ msgstr ""
+#~ "<application>glibmm</application> proporciona el conjunto normal de "
+#~ "funciones de lanzamiento de hilos, exclusión mutua, variables "
+#~ "condicionales y clases de bloqueo de alcance requeridas para escribir "
+#~ "programas de múltiples hilos usando C++."
+
+#~ msgid ""
+#~ "A <classname>sigc::slot</classname> object created by a call to "
+#~ "<function>sigc::mem_fun()</function> which references a method of a class "
+#~ "deriving from <classname>sigc::trackable</classname> should never be "
+#~ "copied to another thread, nor destroyed by a different thread than the "
+#~ "one which created it. (One consequence of this is that <methodname>Glib::"
+#~ "Threads::Thread::create()</methodname> should not be called with a slot "
+#~ "argument created by a call to <function>sigc::mem_fun()</function> which "
+#~ "represents a method of such a class. It is however safe to pass "
+#~ "<methodname>Glib::Threads::Thread::create()</methodname> a function "
+#~ "object representing such a method by using, say, <function>boost::bind()</"
+#~ "function> or, in C++11, <function>std::bind()</function> or a C++11 "
+#~ "lambda expression.)"
+#~ msgstr ""
+#~ "Un objeto <classname>sigc::slot</classname> creado por una llamada a "
+#~ "<function>sigc::mem_fun()</function> que referencia un método de una "
+#~ "clase que deriva de <classname>sigc::trackable</classname> nunca debe "
+#~ "copiarse a otro hilo, ni otro hilo aparte del que lo creó lo debe "
+#~ "destruir. (Una consecuencia de esto es que <methodname>Glib::Threads::"
+#~ "Thread::create()</methodname> no debe llamarse con un argumento de «slot» "
+#~ "creado por una llamada a <function>sigc::mem_fun()</function> que "
+#~ "represente a un método de una clase semejante. Sin embargo, es seguro "
+#~ "pasarle <methodname>Glib::Threads::Thread::create()</methodname> a un "
+#~ "objeto de función representando un método así usando, por ejemplo, "
+#~ "<function>boost::bind()</function> o, en C++11, <function>std::bin()</"
+#~ "function> o una expresión lambda de C++11)."
+
+#~ msgid "Call <methodname>show()</methodname> to display the widget."
+#~ msgstr "Llame a <methodname>show()</methodname> para mostrar al widget."
+
+#~ msgid ""
+#~ "<methodname>Gtk::Widget::show()</methodname> lets <application>gtkmm</"
+#~ "application> know that we have finished setting the attributes of the "
+#~ "widget, and that it is ready to be displayed. You can use "
+#~ "<methodname>Gtk::Widget::hide()</methodname> to make it disappear again. "
+#~ "The order in which you show the widgets is not important, but we do "
+#~ "suggest that you show the top-level window last; this way, the whole "
+#~ "window will appear with its contents already drawn. Otherwise, the user "
+#~ "will first see a blank window, into which the widgets will be gradually "
+#~ "drawn."
+#~ msgstr ""
+#~ "<methodname>Gtk::Widget::show()</methodname> le permite a "
+#~ "<application>gtkmm</application> saber que se han terminado de establecer "
+#~ "los atributos del widget, y que está listo para mostrarse. Puede usar "
+#~ "<methodname>Gtk::Widget::hide()</methodname> para hacerlo desaparecer de "
+#~ "nuevo. El orden en el que muestra los widgets no es importante, pero se "
+#~ "le sugiere mostrar la ventana de nivel superior al final; de esta manera, "
+#~ "toda la ventana aparecerá con su contenido ya dibujado. De lo contrario, "
+#~ "el usuario verá primero una ventana vacía, en la que los widgets se "
+#~ "dibujarán gradualmente."
+
+#~ msgid ""
+#~ "But unlike most smartpointers, you can't use the * operator to access the "
+#~ "underlying instance."
+#~ msgstr ""
+#~ "Pero a diferencia de la mayoría de punteros inteligentes, no se puede "
+#~ "utilizar el operador * para acceder a la instancia de base."
+
+#~ msgid ""
+#~ "\n"
+#~ "Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore =\n"
+#~ "Glib::RefPtr&lt;Gtk::TreeStore&gt;::cast_dynamic(refModel);\n"
+#~ "Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore2 =\n"
+#~ "Glib::RefPtr&lt;Gtk::TreeStore&gt;::cast_static(refModel);\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore =\n"
+#~ "Glib::RefPtr&lt;Gtk::TreeStore&gt;::cast_dynamic(refModel);\n"
+#~ "Glib::RefPtr&lt;Gtk::TreeStore&gt; refStore2 =\n"
+#~ "Glib::RefPtr&lt;Gtk::TreeStore&gt;::cast_static(refModel);\n"
+
+#~ msgid ""
+#~ "Note also that not all widgets receive all X events by default. To "
+#~ "receive additional X events, you can use <methodname>Gtk::Widget::"
+#~ "set_events()</methodname> before showing the widget, or <methodname>Gtk::"
+#~ "Widget::add_events()</methodname> after showing the widget. However, some "
+#~ "widgets must first be placed inside an <classname>EventBox</classname> "
+#~ "widget. See the <link linkend=\"chapter-widgets-without-xwindows"
+#~ "\">Widgets Without X-Windows</link> chapter."
+#~ msgstr ""
+#~ "Tenga también en cuenta que no todos los widgets reciben todos los "
+#~ "eventos de X de manera predeterminada. Para recibir eventos de X "
+#~ "adicionales, puede usar <methodname>Gtk::Widget::set_events()</"
+#~ "methodname> antes de mostrar al widget, o <methodname>Gtk::Widget::"
+#~ "add_events()</methodname> después de haberlo mostrado. Sin embargo, "
+#~ "algunos widgets deben ponerse dentro de un widget <classname>EventBox</"
+#~ "classname> primero. Consulte el capítulo <link linkend=\"chapter-widgets-"
+#~ "without-xwindows\">Widgets sin X-Windows</link>."
+
+#~ msgid "Building <application>gtkmm</application> on Win32"
+#~ msgstr "Construir aplicaciones <application>gtkmm</application> en Win32"
+
+#, fuzzy
+#~| msgid ""
+#~| "Please see <ulink url=\"http://live.gnome.org/gtkmm/MSWindows/";
+#~| "BuildingGtkmm\">http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm</"
+#~| "ulink> for instructions on how to build gtkmm on Windws."
+#~ msgid ""
+#~ "Please see <ulink url=\"https://wiki.gnome.org/Projects/gtkmm/MSWindows/";
+#~ "BuildingGtkmm\"> https://wiki.gnome.org/Projects/gtkmm/MSWindows/";
+#~ "BuildingGtkmm</ulink> for instructions on how to build gtkmm on Windows."
+#~ msgstr ""
+#~ "Consulte <ulink url=\"http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm";
+#~ "\">http://live.gnome.org/gtkmm/MSWindows/BuildingGtkmm</ulink> para "
+#~ "obtener instrucciones sobre cómo construir gtkmm en Windows."
+
+#~ msgid ""
+#~ "<filename>private</filename>: Contains generated <filename>*_p.h</"
+#~ "filename> files."
+#~ msgstr ""
+#~ "<filename>private</filename>: contiene los archivos <filename>*_p.h</"
+#~ "filename> generados."
+
+#~ msgid "configure.ac"
+#~ msgstr "configure.ac"
+
+#~ msgid ""
+#~ "The <function>AC_CONFIG_SRCDIR()</function> line must mention a file in "
+#~ "our source tree. We can edit this later if we don't yet know the names of "
+#~ "any of the files that we will create."
+#~ msgstr ""
+#~ "La línea <function>AC_CONFIG_SRCDIR()</function> debe mencionar un "
+#~ "archivo en el árbol de fuentes. Se puede editar esto más tarde si todavía "
+#~ "no se saben los nombres de ninguno de los archivos que se crearán."
+
+#, fuzzy
+#~| msgid ""
+#~| "The <function>AC_CONFIG_HEADERS()</function> line is used to generate "
+#~| "two or more configuration header files. The first header file in the "
+#~| "list contains all configuration macros which are set during the "
+#~| "configure run. The remaining headers in the list contain only a subset "
+#~| "of configuration macros and their corresponding <filename>configh.h.in</"
+#~| "filename> file will not be autogenerated. The reason for this separation "
+#~| "is that the namespaced configuration headers are installed with your "
+#~| "library and define publically visible macros."
+#~ msgid ""
+#~ "The <function>AC_CONFIG_HEADERS()</function> line is used to generate two "
+#~ "or more configuration header files. The first header file in the list "
+#~ "contains all configuration macros which are set during the configure run. "
+#~ "The remaining headers in the list contain only a subset of configuration "
+#~ "macros and their corresponding <filename>config.h.in</filename> file will "
+#~ "not be autogenerated. The reason for this separation is that the "
+#~ "namespaced configuration headers are installed with your library and "
+#~ "define publically visible macros."
+#~ msgstr ""
+#~ "La línea <function>AC_CONFIG_HEADERS()</function> se usa para generar dos "
+#~ "o más archivos de cabecera de configuración. El primer archivo de "
+#~ "cabecera en la lista contiene a todas las macros de configuración que se "
+#~ "establecen durante la ejecución de «configure». Las cabeceras restantes "
+#~ "en la lista contienen sólo una parte de las macros de configuración y el "
+#~ "archivo <filename>configh.h.in</filename> correspondiente a estas no se "
+#~ "autogenerará. La razón de esta separación es que las cabeceras de "
+#~ "configuración con espacios de nombres se instalan con su biblioteca y "
+#~ "definen macros públicamente visibles."
+
+#~ msgid ""
+#~ "The <function>AC_SUBST([SOMETHINGMM_MODULES], ['...'])</function> line "
+#~ "may need to be modified to check for the correct dependencies."
+#~ msgstr ""
+#~ "La línea <function>AC_SUBST([SOMETHINGMM_MODULES], ['...'])</function> "
+#~ "tal vez necesite modificarse para verificar las dependencias correctas."
+
+#~ msgid ""
+#~ "The <function>AC_CONFIG_FILES()</function> block must mention the correct "
+#~ "directory names, as described above."
+#~ msgstr ""
+#~ "El bloque <function>AC_CONFIG_FILES()</function> debe mencionar a los "
+#~ "nombres de carpetas correctos, como se describió anteriormente."
+
+#~ msgid "In <filename>configure.ac</filename>, <placeholder-1/>"
+#~ msgstr "En <filename>configure.ac</filename>, <placeholder-1/>"
+
+#~ msgid "Makefile.am files"
+#~ msgstr "Archivos Makefile.am"
+
+#~ msgid ""
+#~ "In <filename>skeleton/src/Makefile.am</filename> we must mention the "
+#~ "correct values for the generic variables that are used elsewhere in the "
+#~ "build system:"
+#~ msgstr ""
+#~ "En <filename>skeleton/src/Makefile.am</filename> se deben mencionar los "
+#~ "valores correctos para las variables genéricas que se usan en otros lados "
+#~ "en el sistema de construcción:"
+
+#~ msgid "binding_name"
+#~ msgstr "binding_name"
+
+#~ msgid "The name of the library, such as libsomethingmm."
+#~ msgstr "El nombre de la biblioteca, por ejemplo libsomethingmm."
+
+#~ msgid "wrap_init_flags"
+#~ msgstr "wrap_init_flags"
+
+#~ msgid ""
+#~ "Additional command-line flags passed to the <filename>generate_wrap_init."
+#~ "pl</filename> script, such as the C++ namespace and the parent directory "
+#~ "prefix of include files."
+#~ msgstr ""
+#~ "Opciones de línea de comandos adicionales pasadas al «script» "
+#~ "<filename>generate_wrap_init.pl</filename>, como el espacio de nombres de "
+#~ "C++ y el prefijo de la carpeta padre de los archivos de cabecera."
+
+#~ msgid ""
+#~ "In <filename>skeleton/skeletonmm/Makefile.am</filename> we must mention "
+#~ "the correct values for the generic variables that are used elsewhere in "
+#~ "the build system:"
+#~ msgstr ""
+#~ "En <filename>skeleton/skeletonmm/Makefile.am</filename> se deben "
+#~ "mencionar los valores correctos de las variables genéricas que se usan en "
+#~ "otros lados en el sistema de construcción:"
+
+#~ msgid "lib_LTLIBRARIES"
+#~ msgstr "lib_LTLIBRARIES"
+
+#~ msgid ""
+#~ "This variable must mention the correct library name, and this library "
+#~ "name must be used to form the <varname>_SOURCES</varname>, "
+#~ "<varname>_LDFLAGS</varname>, and <varname>_LIBADD</varname> variable "
+#~ "names. It is permissible to use variables substituted by "
+#~ "<filename>configure</filename> like <varname>@SOMETHINGMM_API_VERSION@</"
+#~ "varname> as part of the variable names."
+#~ msgstr ""
+#~ "Esta variable debe mencionar el nombre de la biblioteca correcta, y este "
+#~ "nombre de biblioteca debe usarse para formar los nombres de variables "
+#~ "<varname>_SOURCES</varname>, <varname>_LDFLAGS</varname>, y "
+#~ "<varname>_LIBADD</varname>. Está permitido usar variables sustituidas por "
+#~ "<varname>configure</varname>, como <varname>@SOMETHINGMM_API_VERSION@</"
+#~ "varname> como parte de los nombres de las variables."
+
+#~ msgid "AM_CPPFLAGS"
+#~ msgstr "AM_CPPFLAGS"
+
+#~ msgid "The command line options passed to the C preprocessor."
+#~ msgstr "Las opciones de línea de comandos pasadas al preprocesador de C."
+
+#~ msgid "AM_CXXFLAGS"
+#~ msgstr "AM_CXXFLAGS"
+
+#~ msgid "The command line options passed to the C++ compiler."
+#~ msgstr "Las opciones de línea de comandos pasadas al compilador de C++"
+
+#~ msgid ""
+#~ "Any additional non-generated <filename>.h</filename> and <filename>.cc</"
+#~ "filename> source files may be placed in <filename>skeleton/skeletonmm/</"
+#~ "filename> and listed in <filename>skeleton/skeletonmm/filelist.am</"
+#~ "filename>, typically in the <varname>files_extra_h</varname> and "
+#~ "<varname>files_extra_cc</varname> variables."
+#~ msgstr ""
+#~ "Cualquier archivo de fuentes <filename>.h</filename> y <filename>.cc</"
+#~ "filename> adicional no generado se puede poner en <filename>skeleton/"
+#~ "skeletonmm/</filename> y listar en <filename>skeleton/skeletonmm/filelist."
+#~ "am</filename>, típicamente en las variables <varname>files_extra_h</"
+#~ "varname> y <varname>files_extra_cc</varname>."
 
-#: C/gtkmm-tutorial-in.xml:9889(title)
-msgid "Unable to predeclare structs"
-msgstr "No se pueden predeclarar estructuras"
+#~ msgid "gtk.defs"
+#~ msgstr "gtk.defs"
 
-#: C/gtkmm-tutorial-in.xml:9891(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"typedef struct _ExampleWidget ExampleWidget;\n"
-"\n"
-"struct _ExampleWidget\n"
-"{\n"
-"  ...\n"
-"};\n"
-msgstr ""
-"\n"
-"typedef struct _ExampleWidget ExampleWidget;\n"
-"\n"
-"struct _ExampleWidget\n"
-"{\n"
-"  ...\n"
-"};\n"
+#~ msgid "gtk_enums.defs"
+#~ msgstr "gtk_enums.defs"
 
-#: C/gtkmm-tutorial-in.xml:9890(para)
-msgid ""
-"By convention, structs are declared in glib/GTK+-style headers like so: "
-"<placeholder-1/>"
-msgstr ""
-"Por convenio, las estructuras se declaran en los encabezados de Glib/GTK+ "
-"igual que en: <placeholder-1/>"
+#~ msgid "gtk_vfuncs.defs"
+#~ msgstr "gtk_vfuncs.defs"
 
-#: C/gtkmm-tutorial-in.xml:9900(para)
-msgid ""
-"The extra typedef allows the struct to be used in a header without including "
-"its full definition, simply by predeclaring it, by repeating that typedef. "
-"This means that you don't have to include the C library's header in your C++ "
-"header, thus keeping it out of your public API. <command>gmmproc</command> "
-"assumes that this technique was used, so you will see compiler errors if "
-"that is not the case."
-msgstr ""
-"El «typedef» adicional le permite usar la estructura en una cabecera sin "
-"incluir su definición completa, simplemente predeclarándola repitiendo ese "
-"«typedef». Esto significa que no tiene que incluir la cabecera de la "
-"biblioteca de C en su cabecera de C++, por lo tanto la dejará fuera de su "
-"API pública. <command>gmmproc</command> asume que se usó esta técnica, por "
-"lo que verá errores de compilación si ese no es el caso."
+#~ msgid "_DEFS()"
+#~ msgstr "_DEFS()"
 
-#: C/gtkmm-tutorial-in.xml:9907(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct'\n"
-"../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n"
-"make[4]: *** [example-widget.lo] Error 1\n"
-msgstr ""
-"\n"
-"example-widget.h:56: error: using typedef-name 'ExampleWidget' after 'struct'\n"
-"../../libexample/libexamplemm/example-widget.h:34: error: 'ExampleWidget' has a previous declaration here\n"
-"make[4]: *** [example-widget.lo] Error 1\n"
+#~ msgid "_PINCLUDE()"
+#~ msgstr "_PINCLUDE()"
 
-#: C/gtkmm-tutorial-in.xml:9913(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n"
-"../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct 
_ExampleWidget ExampleWidget'\n"
-msgstr ""
-"\n"
-"example-widget.h:60: error: '_ExampleWidget ExampleWidget' redeclared as different kind of symbol\n"
-"../../libexample/libexamplemm/example-widget.h:34: error: previous declaration of 'typedef struct 
_ExampleWidget ExampleWidget'\n"
+#~ msgid ""
+#~ "For instance, from <filename>accelgroup.hg</filename>: <placeholder-1/>"
+#~ msgstr ""
+#~ "Por ejemplo, de <filename>accelgroup.hg</filename>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9905(para)
-msgid ""
-"This compiler error might look like this: <placeholder-1/> or this: "
-"<placeholder-2/>"
-msgstr ""
-"Este error del compilador podría tener este aspecto: <placeholder-1/> o "
-"este: <placeholder-2/>"
+#~ msgid ""
+#~ "\n"
+#~ "_CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, "
+#~ "pango_coverage_ref, pango_coverage_unref)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "_CLASS_OPAQUE_REFCOUNTED(Coverage, PangoCoverage, pango_coverage_new, "
+#~ "pango_coverage_ref, pango_coverage_unref)\n"
 
-#: C/gtkmm-tutorial-in.xml:9918(para)
-msgid ""
-"This is easy to correct in the C library, so do send a patch to the relevant "
-"maintainer."
-msgstr ""
-"Esto es fácil de corregir en la biblioteca de C, así que envíe un parche al "
-"mantenedor pertinentes."
+#~ msgid ""
+#~ "For instance, for <classname>Pango::Coverage</classname>: <placeholder-1/>"
+#~ msgstr ""
+#~ "Por ejemplo, para <classname>Pango::Coverage</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9922(title)
-msgid "Lack of properties"
-msgstr "Falta de propiedades"
+#~ msgid ""
+#~ "\n"
+#~ "_CLASS_GENERIC(AttrIter, PangoAttrIterator)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "_CLASS_GENERIC(AttrIter, PangoAttrIterator)\n"
 
-#: C/gtkmm-tutorial-in.xml:9929(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"GtkWidget* example_widget_new(int something, const char* thing)\n"
-"{\n"
-"        return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n"
-"}\n"
-msgstr ""
-"\n"
-"GtkWidget* example_widget_new(int something, const char* thing)\n"
-"{\n"
-"        return g_object_new (EXAMPLE_TYPE_WIDGET, \"something\", something, \"thing\", thing, NULL);\n"
-"}\n"
+#~ msgid ""
+#~ "For instance, for <classname>Pango::AttrIter</classname>: <placeholder-1/>"
+#~ msgstr ""
+#~ "Por ejemplo, para <classname>Pango::AttrIter</classname>: <placeholder-1/>"
 
-#: C/gtkmm-tutorial-in.xml:9923(para)
-msgid ""
-"By convention, glib/GTK+-style objects have <function>*_new()</function> "
-"functions, such as <function>example_widget_new()</function> that do nothing "
-"more than call <function>g_object_new()</function> and return the result. "
-"The input parameters are supplied to <function>g_object_new()</function> "
-"along with the names of the properties for which they are values. For "
-"instance, <placeholder-1/>"
-msgstr ""
-"Por convenio, los objetos de glib/GTK+ tienen funciones <function>*_new()</"
-"function>, como <function>example_widget_new()</function> que no hacen más "
-"que llamar a <function>g_object_new()</function> y devolver el resultado. "
-"Los parámetros de entrada se proporcionan a <function>g_object_new()</"
-"function> junto con los nombres de las propiedades a las que se asignan. Por "
-"ejemplo, <placeholder-1/>"
+#~ msgid ""
+#~ "Use the last GError** parameter of the C function to throw an exception."
+#~ msgstr ""
+#~ "Usa el último parámetro GError** de la función de C para lanzar una "
+#~ "excepción."
 
-#: C/gtkmm-tutorial-in.xml:9936(para)
-msgid ""
-"This allows language bindings to implement their own equivalents (such as C+"
-"+ constructors), without using the <function>*_new()</function> function. "
-"This is often necessary so that they can actually instantiate a derived "
-"GType, to add their own hooks for signal handlers and vfuncs."
-msgstr ""
-"Esto le permite a los enlaces entre lenguajes implementar sus propios "
-"equivalentes (como los constructores de C++), sin usar la función "
-"<function>*_new()</function>. Esto a menudo es necesario para poder "
-"instanciar realmente un GType derivado, para añadir sus propios ganchos para "
-"gestores de señales y «vfuncs»."
+#~ msgid "deprecated"
+#~ msgstr "deprecated"
 
-#: C/gtkmm-tutorial-in.xml:9940(para)
-msgid ""
-"At the least, the <function>_new()</function> function should not use any "
-"private API (functions that are only in a .c file). Even when there are no "
-"functions, we can sometimes reimplement 2 or 3 lines of code in a "
-"<function>_new()</function> function as long as those lines of code use API "
-"that is available to us."
-msgstr ""
-"Como mínimo, la función <function>_new()</function> no debe usar ninguna API "
-"privada (funciones que sólo están en un archivo .c). Incluso cuando no hay "
-"funciones, a veces se pueden reimplementar 2 ó 3 líneas de código en una "
-"función <function>_new()</function> siempre que esas líneas de código usen "
-"una API que esté disponible."
+#~ msgid "ifdef"
+#~ msgstr "ifdef"
 
-#: C/gtkmm-tutorial-in.xml:9948(programlisting)
-#, no-wrap
-msgid ""
-"\n"
-"GtkWidget* example_widget_new(int something, const char* thing)\n"
-"{\n"
-"        ExampleWidget* widget;\n"
-"        widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL);\n"
-"        example_widget_construct(widget, \"something\", something, \"thing\", thing);\n"
-"}\n"
-"\n"
-"void example_widget_construct(ExampleWidget* widget, int something, const char* thing)\n"
-"{\n"
-"        //Do stuff that uses private API:\n"
-"        widget-&gt;priv-&gt;thing = thing;\n"
-"        do_something(something);\n"
-"}\n"
-msgstr ""
-"\n"
-"GtkWidget* example_widget_new(int something, const char* thing)\n"
-"{\n"
-"        ExampleWidget* widget;\n"
-"        widget = g_object_new (EXAMPLE_TYPE_WIDGET, NULL);\n"
-"        example_widget_construct(widget, \"something\", something, \"thing\", thing);\n"
-"}\n"
-"\n"
-"void example_widget_construct(ExampleWidget* widget, int something, const char* thing)\n"
-"{\n"
-"        //Do stuff that uses private API:\n"
-"        widget-&gt;priv-&gt;thing = thing;\n"
-"        do_something(something);\n"
-"}\n"
+#~ msgid "slot_name"
+#~ msgstr "slot_name"
 
-#: C/gtkmm-tutorial-in.xml:9945(para)
-msgid ""
-"Another workaround is to add a <function>*_construct()</function> function "
-"that the C++ constructor can call after instantiating its own type. For "
-"instance, <placeholder-1/>"
-msgstr ""
-"Otra solución es añadir una función <function>*_construct()</function> que "
-"el constructor de C++ pueda llamar después de haber instanciado su propio "
-"tipo. Por ejemplo, <placeholder-1/>"
+#~ msgid "slot_callback"
+#~ msgstr "slot_callback"
 
-#: C/gtkmm-tutorial-in.xml:9964(para)
-msgid ""
-"Adding properties, and ensuring that they interact properly with each other, "
-"is relatively difficult to correct in the C library, but it is possible, so "
-"do file a bug and try to send a patch to the relevant maintainer."
-msgstr ""
-"Incorporar propiedades, y asegurar que interactúan con otras propiedades "
-"correctamente, es relativamente difícil de corregir en la biblioteca de C, "
-"pero es posible, por lo que rellene un informe de error e intente enviar un "
-"parche al mantenedor correspondiente."
+#~ msgid "_IGNORE(C function name 1, C function name2, etc)"
+#~ msgstr "_IGNORE(C function name 1, C function name2, etc)"
 
-#: C/gtkmm-tutorial-in.xml:9972(title)
-msgid "Documentation"
-msgstr "Documentación"
+#~ msgid "_IGNORE_SIGNAL(C signal name 1, C signal name2, etc)"
+#~ msgstr "_IGNORE_SIGNAL(C signal name 1, C signal name2, etc)"
 
-#: C/gtkmm-tutorial-in.xml:9973(para)
-msgid ""
-"In general, gtkmm-style projects use Doxygen, which reads specially "
-"formatted C++ comments and generates HTML documentation. You may write these "
-"doxygen comments directly in the header files."
-msgstr ""
-"En general, los proyectos de gtkmm usan Doxygen, que lee comentarios de C++ "
-"con un formato específico y genera documentación HTML. Puede escribir estos "
-"comentarios de Doxygen directamente en los archivos de cabecera."
+#~ msgid ""
+#~ "\n"
+#~ "_IGNORE(gtk_button_box_set_spacing, gtk_button_box_get_spacing)\n"
+#~ msgstr ""
+#~ "\n"
+#~ "_IGNORE(gtk_button_box_set_spacing, gtk_button_box_get_spacing)\n"
 
-#: C/gtkmm-tutorial-in.xml:9976(title)
-msgid "Reusing C documentation"
-msgstr "Reutilizar la documentación de C"
+#~ msgid "gboolean"
+#~ msgstr "gboolean"
 
-#: C/gtkmm-tutorial-in.xml:9977(para)
-msgid ""
-"You might wish to reuse documentation that exists for the C library that you "
-"are wrapping. GTK-style C libraries typically use gtk-doc and therefore have "
-"source code comments formatted for gtk-doc and some extra documentation in ."
-"sgml and .xml files. The docextract_to_xml.py script, from glibmm's "
-"<filename>tools/defs_gen</filename> directory, can read these files and "
-"generate an .xml file that <command>gmmproc</command> can use to generate "
-"doxygen comments. <command>gmmproc</command> will even try to transform the "
-"documentation to make it more appropriate for a C++ API."
-msgstr ""
-"Tal vez quiera reutilizar documentación que exista para la biblioteca de C "
-"que está envolviendo. Las bibliotecas GTK de C típicamente usan gtk-doc y "
-"por lo tanto tienen comentarios en el código fuente en formato de gtk-doc y "
-"alguna documentación adicional en archivos .sgml y .xml. El script "
-"«docextract_to_xml.py», de la carpeta <filename>tools/defs_gen</filename> de "
-"glibmm, puede leer estos archivos y crear un archivo .xml que "
-"<command>gmmproc</command> puede usar para generar comentarios de doxygen. "
-"<command>gmmproc</command> incluso intentará transformar la documentación "
-"para hacerla más apropiada para una API de C++."
+#~ msgid "bool"
+#~ msgstr "bool"
 
-#: C/gtkmm-tutorial-in.xml:9987(programlisting)
-#, no-wrap
-msgid "./docextract_to_xml.py -s ~/checkout/gnome/gtk+/gtk/ &gt; gtk_docs.xml\n"
-msgstr "./docextract_to_xml.py -s ~/checkout/gnome/gtk+/gtk/ &gt; gtk_docs.xml\n"
+#~ msgid "gint"
+#~ msgstr "gint"
 
-#: C/gtkmm-tutorial-in.xml:9990(para)
-msgid ""
-"Because this automatic transformation is not always appropriate, you might "
-"want to provide hand-written text for a particular method. You can do this "
-"by copying the XML node for the function from your <filename>something_docs."
-"xml</filename> file to the <filename>something_docs_override.xml</filename> "
-"file and changing the contents."
-msgstr ""
-"Dado que esta transformación automática no es siempre apropiada, tal vez "
-"quiera proporcionar texto escrito a mano para un método particular. Puede "
-"hacer esto copiando el nodo XML para la función de su archivo "
-"<filename>something_docs.xml</filename> al archivo "
-"<filename>something_docs_override.xml</filename> y cambiando el contenido."
+#~ msgid "int"
+#~ msgstr "int"
 
-#: C/gtkmm-tutorial-in.xml:9999(title)
-msgid "Documentation build structure"
-msgstr "Estructura de construcción de la documentación"
+#~ msgid "guint"
+#~ msgstr "guint"
 
-#: C/gtkmm-tutorial-in.xml:10000(para)
-msgid ""
-"If you copied the skeleton source tree in mm-common and substituted the "
-"placeholder text, then you will already have suitable <filename>Makefile.am</"
-"filename> and <filename>Doxyfile.in</filename> files. With the mm-common "
-"build setup, the list of Doxygen input files is not defined in the Doxygen "
-"configuration file, but passed along from <command>make</command> to the "
-"standard input of <command>doxygen</command>. The input file list is defined "
-"by the <varname>doc_input</varname> variable in the <filename>Makefile.am</"
-"filename> file."
-msgstr ""
-"Si copió el esqueleto del árbol de fuentes en mm-common y sustituyó los "
-"marcadores de posición, entonces ya tendrá archivos <filename>Makefile.am</"
-"filename> y <filename>Doxyfile.in</filename> apropiados. Con la "
-"configuración de construcción de mm-common, la lista de los archivos de "
-"entrada de Doxygen no se define en el archivo de configuración de Doxygen, "
-"sino que se pasa desde <command>make</command> a la entrada estándar de "
-"<command>doxygen</command>. La variable <varname>doc_input</varname> define "
-"la lista de archivos de entrada en el archivo <filename>Makefile.am</"
-"filename>."
+#~ msgid "gdouble"
+#~ msgstr "gdouble"
 
-#. Put one translator per line, in the form of NAME <EMAIL>, YEAR1, YEAR2
-#: C/gtkmm-tutorial-in.xml:0(None)
-msgid "translator-credits"
-msgstr ""
-"Nicolás Satragno <nsatragno gmail com>, 2012\n"
-"José Zambrano <jozaol gmail com>, 2011\n"
-"Daniel Mustieles <daniel mustieles gmail com>, 2011\n"
-"Jorge González <jorgegonz svn gnome org>, 2010"
+#~ msgid "double"
+#~ msgstr "doble"
+
+#~ msgid "gunichar"
+#~ msgstr "gunichar"
+
+#~ msgid "gchar*"
+#~ msgstr "gchar*"
+
+#~ msgid "std::string"
+#~ msgstr "std::string"
+
+#~ msgid "<placeholder-1/> (or <placeholder-2/> for filenames)"
+#~ msgstr "<placeholder-1/> (o <placeholder-2/> para nombres de archivos)"
 
 #~ msgid "Update Policies"
 #~ msgstr "Políticas de Actualización"
@@ -18313,9 +26654,6 @@ msgstr ""
 #~ "El widget de destino emitirá esta señal, después de que el destino de "
 #~ "origen haya emitido la señal <literal>drag_get</literal>: <placeholder-1/>"
 
-#~ msgid "Internationalizing GNOME applications"
-#~ msgstr "Internacionalizar aplicaciones de GNOME"
-
 #~ msgid "Gtk::Button* pButton = new Gtk::Button(Gtk::Stock::OK);"
 #~ msgstr "Gtk::Button* pButton = new Gtk::Button(Gtk::Stock::OK);"
 
@@ -18648,9 +26986,6 @@ msgstr ""
 #~ msgid "Gtk::EXPAND"
 #~ msgstr "Gtk::EXPAND"
 
-#~ msgid "Other methods"
-#~ msgstr "Otros métodos"
-
 #~ msgid "Gene"
 #~ msgstr "Gene"
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]