<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Gtk" version="3.0"/>
  <package name="amtk-5"/>
  <c:include name="amtk/amtk.h"/>
  <namespace name="Amtk"
             version="5"
             shared-library="libamtk-5.so.0"
             c:identifier-prefixes="Amtk"
             c:symbol-prefixes="amtk">
    <function-macro name="ACTION_INFO_CENTRAL_STORE"
                    c:identifier="AMTK_ACTION_INFO_CENTRAL_STORE"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-central-store.h"
                       line="18"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ACTION_INFO_CENTRAL_STORE_CLASS"
                    c:identifier="AMTK_ACTION_INFO_CENTRAL_STORE_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-central-store.h"
                       line="19"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ACTION_INFO_CENTRAL_STORE_GET_CLASS"
                    c:identifier="AMTK_ACTION_INFO_CENTRAL_STORE_GET_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-central-store.h"
                       line="22"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ACTION_INFO_STORE"
                    c:identifier="AMTK_ACTION_INFO_STORE"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-store.h" line="18"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ACTION_INFO_STORE_CLASS"
                    c:identifier="AMTK_ACTION_INFO_STORE_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-store.h" line="19"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ACTION_INFO_STORE_GET_CLASS"
                    c:identifier="AMTK_ACTION_INFO_STORE_GET_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-store.h" line="22"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="APPLICATION_WINDOW"
                    c:identifier="AMTK_APPLICATION_WINDOW"
                    introspectable="0">
      <source-position filename="../amtk/amtk-application-window.h" line="17"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="APPLICATION_WINDOW_CLASS"
                    c:identifier="AMTK_APPLICATION_WINDOW_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-application-window.h" line="18"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="APPLICATION_WINDOW_GET_CLASS"
                    c:identifier="AMTK_APPLICATION_WINDOW_GET_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-application-window.h" line="21"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <record name="ActionInfo"
            c:type="AmtkActionInfo"
            glib:type-name="AmtkActionInfo"
            glib:get-type="amtk_action_info_get_type"
            c:symbol-prefix="action_info">
      <source-position filename="../amtk/amtk-action-info.h" line="19"/>
      <constructor name="new"
                   c:identifier="amtk_action_info_new"
                   version="2.0">
        <source-position filename="../amtk/amtk-action-info.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="65">a new #AmtkActionInfo.</doc>
          <type name="ActionInfo" c:type="AmtkActionInfo*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_entry"
                   c:identifier="amtk_action_info_new_from_entry"
                   version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="80">Creates a new #AmtkActionInfo from an #AmtkActionInfoEntry.

If @translation_domain is not %NULL, g_dgettext() is used to translate the
@label and @tooltip before setting them to the #AmtkActionInfo.</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="90">a new #AmtkActionInfo.</doc>
          <type name="ActionInfo" c:type="AmtkActionInfo*"/>
        </return-value>
        <parameters>
          <parameter name="info_entry" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="82">an #AmtkActionInfoEntry.</doc>
            <type name="ActionInfoEntry" c:type="const AmtkActionInfoEntry*"/>
          </parameter>
          <parameter name="translation_domain"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="83">a gettext domain, or %NULL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy" c:identifier="amtk_action_info_copy" version="2.0">
        <source-position filename="../amtk/amtk-action-info.h" line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="171">a copy of @info. The copy will have a reference
count of one.</doc>
          <type name="ActionInfo" c:type="AmtkActionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="169">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="const AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_accels"
              c:identifier="amtk_action_info_get_accels"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="333">Returns the accelerators. This function never returns %NULL, it always
returns a %NULL-terminated array, to be suitable for
gtk_application_set_accels_for_action().</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="101"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="341">a %NULL-terminated array
of accelerators in the format understood by gtk_accelerator_parse().</doc>
          <array c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="335">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="const AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_action_name"
              c:identifier="amtk_action_info_get_action_name"
              version="2.0">
        <source-position filename="../amtk/amtk-action-info.h" line="73"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="198">the action name, or %NULL. Example: `"win.save"`. Can be
a detailed action name, see g_action_parse_detailed_name().</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="196">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="const AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_icon_name"
              c:identifier="amtk_action_info_get_icon_name"
              version="2.0">
        <source-position filename="../amtk/amtk-action-info.h" line="80"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="235">the icon name, or %NULL.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="233">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="const AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_label"
              c:identifier="amtk_action_info_get_label"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="263">Gets the label. The label has normally a mnemonic. To remove the mnemonic,
there is the amtk_utils_remove_mnemonic() function.</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="87"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="270">the label (i.e. a short description), or %NULL.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="265">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="const AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tooltip"
              c:identifier="amtk_action_info_get_tooltip"
              version="2.0">
        <source-position filename="../amtk/amtk-action-info.h" line="94"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="305">the tooltip (i.e. a long description), or %NULL.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="303">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="const AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_been_used"
              c:identifier="amtk_action_info_has_been_used"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="396">Returns whether @info has been used (for example by an #AmtkFactory
function). See also amtk_action_info_store_check_all_used().</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="403">whether @info has been used.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="398">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="const AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="mark_as_used"
              c:identifier="amtk_action_info_mark_as_used"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="379">Mark @info as used. An #AmtkFactory function that uses an #AmtkActionInfo
should call this function. See amtk_action_info_store_check_all_used().</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="108"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="381">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="amtk_action_info_ref" version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="126">Increments the reference count of @info by one.</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="64"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info.c"
               line="132">the passed in @info.</doc>
          <type name="ActionInfo" c:type="AmtkActionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="128">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_accels"
              c:identifier="amtk_action_info_set_accels"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="355">A function similar to gtk_application_set_accels_for_action().

@accels must not be %NULL, it must be a %NULL-terminated array, to be
consistent with gtk_application_set_accels_for_action().</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="104"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="357">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </instance-parameter>
          <parameter name="accels" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="358">a %NULL-terminated array of accelerators
in the format understood by gtk_accelerator_parse().</doc>
            <array c:type="const gchar* const*">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_action_name"
              c:identifier="amtk_action_info_set_action_name"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="210">Sets the action name, for example `"win.save"`. Can be a detailed action
name, see g_action_parse_detailed_name().</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="76"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="212">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="213">the action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_icon_name"
              c:identifier="amtk_action_info_set_icon_name"
              version="2.0">
        <source-position filename="../amtk/amtk-action-info.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="248">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </instance-parameter>
          <parameter name="icon_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="249">the icon name, or %NULL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_label"
              c:identifier="amtk_action_info_set_label"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="281">Sets the label with a mnemonic. To know how to encode the mnemonic, see the
documentation of gtk_label_new_with_mnemonic().</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="283">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </instance-parameter>
          <parameter name="label"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="284">the label (i.e. a short description), or %NULL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tooltip"
              c:identifier="amtk_action_info_set_tooltip"
              version="2.0">
        <source-position filename="../amtk/amtk-action-info.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="318">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </instance-parameter>
          <parameter name="tooltip"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="319">the tooltip (i.e. a long description), or %NULL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="amtk_action_info_unref" version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.c"
             line="145">Decrements the reference count of @info by one. If the reference count drops
to 0, @info is freed.</doc>
        <source-position filename="../amtk/amtk-action-info.h" line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info.c"
                 line="147">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="ActionInfoCentralStore"
           c:symbol-prefix="action_info_central_store"
           c:type="AmtkActionInfoCentralStore"
           parent="GObject.Object"
           glib:type-name="AmtkActionInfoCentralStore"
           glib:get-type="amtk_action_info_central_store_get_type"
           glib:type-struct="ActionInfoCentralStoreClass">
      <source-position filename="../amtk/amtk-action-info-central-store.h"
                       line="40"/>
      <function name="get_singleton"
                c:identifier="amtk_action_info_central_store_get_singleton"
                version="3.0">
        <source-position filename="../amtk/amtk-action-info-central-store.h"
                         line="47"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info-central-store.c"
               line="86">the #AmtkActionInfoCentralStore singleton instance.</doc>
          <type name="ActionInfoCentralStore"
                c:type="AmtkActionInfoCentralStore*"/>
        </return-value>
      </function>
      <method name="lookup"
              c:identifier="amtk_action_info_central_store_lookup"
              version="2.0">
        <source-position filename="../amtk/amtk-action-info-central-store.h"
                         line="50"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info-central-store.c"
               line="144">the found #AmtkActionInfo, or %NULL.</doc>
          <type name="ActionInfo" c:type="AmtkActionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="central_store" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-central-store.c"
                 line="141">the #AmtkActionInfoCentralStore.</doc>
            <type name="ActionInfoCentralStore"
                  c:type="AmtkActionInfoCentralStore*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-central-store.c"
                 line="142">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ActionInfoCentralStorePrivate"
              c:type="AmtkActionInfoCentralStorePrivate*"/>
      </field>
    </class>
    <record name="ActionInfoCentralStoreClass"
            c:type="AmtkActionInfoCentralStoreClass"
            glib:is-gtype-struct-for="ActionInfoCentralStore">
      <source-position filename="../amtk/amtk-action-info-central-store.h"
                       line="40"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="padding">
        <array zero-terminated="0" fixed-size="12">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ActionInfoCentralStorePrivate"
            c:type="AmtkActionInfoCentralStorePrivate"
            disguised="1">
      <source-position filename="../amtk/amtk-action-info-central-store.h"
                       line="26"/>
    </record>
    <record name="ActionInfoEntry" c:type="AmtkActionInfoEntry" version="2.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-action-info.h"
           line="22">This struct defines a set of information for a single action. It is for use
with amtk_action_info_store_add_entries().

Like #GActionEntry, it is permissible to use an incomplete initialiser in
order to leave some of the later values as %NULL. Additional optional fields
may be added in the future.</doc>
      <source-position filename="../amtk/amtk-action-info.h" line="51"/>
      <field name="action_name" writable="1">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.h"
             line="24">the action name. Can be a detailed action name, see
  g_action_parse_detailed_name().</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="icon_name" writable="1">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.h"
             line="26">the icon name, or %NULL.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="label" writable="1">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.h"
             line="27">the label (i.e. a short description) with a mnemonic, or %NULL.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="accel" writable="1">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.h"
             line="28">the accelerator, in the format understood by gtk_accelerator_parse().
  Or %NULL.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="tooltip" writable="1">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info.h"
             line="30">the tooltip (i.e. a long description), or %NULL.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="3">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="ActionInfoStore"
           c:symbol-prefix="action_info_store"
           c:type="AmtkActionInfoStore"
           parent="GObject.Object"
           glib:type-name="AmtkActionInfoStore"
           glib:get-type="amtk_action_info_store_get_type"
           glib:type-struct="ActionInfoStoreClass">
      <source-position filename="../amtk/amtk-action-info-store.h" line="40"/>
      <constructor name="new"
                   c:identifier="amtk_action_info_store_new"
                   version="3.0">
        <source-position filename="../amtk/amtk-action-info-store.h"
                         line="46"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info-store.c"
               line="78">a new #AmtkActionInfoStore.</doc>
          <type name="ActionInfoStore" c:type="AmtkActionInfoStore*"/>
        </return-value>
      </constructor>
      <method name="add"
              c:identifier="amtk_action_info_store_add"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info-store.c"
             line="87">Inserts @info into @store and into the #AmtkActionInfoCentralStore. Both the
@store and central store must &lt;emphasis&gt;not&lt;/emphasis&gt; already contain an
#AmtkActionInfo with the same action name. The stores take their own
reference on @info.</doc>
        <source-position filename="../amtk/amtk-action-info-store.h"
                         line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="store" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="89">an #AmtkActionInfoStore.</doc>
            <type name="ActionInfoStore" c:type="AmtkActionInfoStore*"/>
          </instance-parameter>
          <parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="90">an #AmtkActionInfo.</doc>
            <type name="ActionInfo" c:type="AmtkActionInfo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_entries"
              c:identifier="amtk_action_info_store_add_entries"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info-store.c"
             line="129">Calls amtk_action_info_store_add() for each entry.

If @translation_domain is not %NULL, g_dgettext() is used to translate the
@label and @tooltip of each entry before setting them to the #AmtkActionInfo.

An API similar to g_action_map_add_action_entries().</doc>
        <source-position filename="../amtk/amtk-action-info-store.h"
                         line="53"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="store" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="131">an #AmtkActionInfoStore.</doc>
            <type name="ActionInfoStore" c:type="AmtkActionInfoStore*"/>
          </instance-parameter>
          <parameter name="entries" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="132">a
pointer to the first item in an array of #AmtkActionInfoEntry structs.</doc>
            <array length="1"
                   zero-terminated="0"
                   c:type="const AmtkActionInfoEntry*">
              <type name="ActionInfoEntry"/>
            </array>
          </parameter>
          <parameter name="n_entries" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="134">the length of @entries, or -1 if @entries is %NULL-terminated.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="translation_domain"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="135">a gettext domain, or %NULL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="check_all_used"
              c:identifier="amtk_action_info_store_check_all_used"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info-store.c"
             line="257">Checks for each #AmtkActionInfo of @store that it has been used (see
amtk_action_info_has_been_used()). If an #AmtkActionInfo has not been used, a
warning is printed and might indicate dead code.

You probably want to call this function on the application store after
creating the menu and toolbar. But it can also be useful for a store provided
by a library, to easily see which actions are not used by the application.</doc>
        <source-position filename="../amtk/amtk-action-info-store.h"
                         line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="store" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="259">an #AmtkActionInfoStore.</doc>
            <type name="ActionInfoStore" c:type="AmtkActionInfoStore*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup"
              c:identifier="amtk_action_info_store_lookup"
              version="2.0">
        <source-position filename="../amtk/amtk-action-info-store.h"
                         line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-info-store.c"
               line="173">the found #AmtkActionInfo, or %NULL.</doc>
          <type name="ActionInfo" c:type="AmtkActionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="store" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="170">an #AmtkActionInfoStore.</doc>
            <type name="ActionInfoStore" c:type="AmtkActionInfoStore*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="171">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_all_accels_to_app"
              c:identifier="amtk_action_info_store_set_all_accels_to_app"
              version="5.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-action-info-store.c"
             line="200">Calls gtk_application_set_accels_for_action() for all #AmtkActionInfo's part
of @store with the accelerators returned by amtk_action_info_get_accels().
This function does *not* call amtk_action_info_mark_as_used(), because if it
did it would not be possible to detect dead code in @store with
amtk_action_info_store_check_all_used().

This function is not recommended if @store is provided by a library, because
a future version of the library may add accelerators that are not wanted in
the application. So for a library store, you should let #AmtkFactory call
gtk_application_set_accels_for_action().

This function can be convenient for an application store, in combination with
%AMTK_FACTORY_IGNORE_ACCELS_FOR_APP (and/or having a %NULL #GtkApplication in
#AmtkFactory). It has the advantage that
gtk_application_set_accels_for_action() is called only once per action, not
each time that a #GtkApplicationWindow is created.

This function can also be useful if – for some actions – the objects are not
created directly with #AmtkFactory on application startup, but are created
later, on demand. For example to create a #GtkShortcutsWindow with
#AmtkFactory, containing information about actions that are not added to any
menu or toolbar.</doc>
        <source-position filename="../amtk/amtk-action-info-store.h"
                         line="63"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="store" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="202">an #AmtkActionInfoStore.</doc>
            <type name="ActionInfoStore" c:type="AmtkActionInfoStore*"/>
          </instance-parameter>
          <parameter name="application" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-action-info-store.c"
                 line="203">a #GtkApplication.</doc>
            <type name="Gtk.Application" c:type="GtkApplication*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ActionInfoStorePrivate"
              c:type="AmtkActionInfoStorePrivate*"/>
      </field>
    </class>
    <record name="ActionInfoStoreClass"
            c:type="AmtkActionInfoStoreClass"
            glib:is-gtype-struct-for="ActionInfoStore">
      <source-position filename="../amtk/amtk-action-info-store.h" line="40"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="padding">
        <array zero-terminated="0" fixed-size="12">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ActionInfoStorePrivate"
            c:type="AmtkActionInfoStorePrivate"
            disguised="1">
      <source-position filename="../amtk/amtk-action-info-store.h" line="26"/>
    </record>
    <class name="ApplicationWindow"
           c:symbol-prefix="application_window"
           c:type="AmtkApplicationWindow"
           parent="GObject.Object"
           glib:type-name="AmtkApplicationWindow"
           glib:get-type="amtk_application_window_get_type"
           glib:type-struct="ApplicationWindowClass">
      <source-position filename="../amtk/amtk-application-window.h" line="39"/>
      <function name="get_from_gtk_application_window"
                c:identifier="amtk_application_window_get_from_gtk_application_window"
                version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-application-window.c"
             line="176">Returns the #AmtkApplicationWindow of @gtk_window. The returned object is
guaranteed to be the same for the lifetime of @gtk_window.</doc>
        <source-position filename="../amtk/amtk-application-window.h"
                         line="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-application-window.c"
               line="183">the #AmtkApplicationWindow of @gtk_window.</doc>
          <type name="ApplicationWindow" c:type="AmtkApplicationWindow*"/>
        </return-value>
        <parameters>
          <parameter name="gtk_window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="178">a #GtkApplicationWindow.</doc>
            <type name="Gtk.ApplicationWindow" c:type="GtkApplicationWindow*"/>
          </parameter>
        </parameters>
      </function>
      <method name="connect_menu_to_statusbar"
              c:identifier="amtk_application_window_connect_menu_to_statusbar"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-application-window.c"
             line="447">Connects to the #AmtkMenuShell::menu-item-selected and
#AmtkMenuShell::menu-item-deselected signals of @menu_shell to push/pop the
long description of #GtkMenuItem's to the #AmtkApplicationWindow:statusbar.

The long description is retrieved with amtk_menu_item_get_long_description().
So amtk_menu_item_set_long_description() must have been called, which is the
case if the #GtkMenuItem has been created with #AmtkFactory.</doc>
        <source-position filename="../amtk/amtk-application-window.h"
                         line="58"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="449">an #AmtkApplicationWindow.</doc>
            <type name="ApplicationWindow" c:type="AmtkApplicationWindow*"/>
          </instance-parameter>
          <parameter name="menu_shell" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="450">a #GtkMenuShell.</doc>
            <type name="Gtk.MenuShell" c:type="GtkMenuShell*"/>
          </parameter>
        </parameters>
      </method>
      <method name="connect_recent_chooser_menu_to_statusbar"
              c:identifier="amtk_application_window_connect_recent_chooser_menu_to_statusbar"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-application-window.c"
             line="492">An alternative to gtk_recent_chooser_set_show_tips(). Shows the full path in
the #AmtkApplicationWindow:statusbar when a #GtkMenuItem of @menu is
selected.

The full path is retrieved with
amtk_utils_recent_chooser_menu_get_item_uri().</doc>
        <source-position filename="../amtk/amtk-application-window.h"
                         line="62"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="494">an #AmtkApplicationWindow.</doc>
            <type name="ApplicationWindow" c:type="AmtkApplicationWindow*"/>
          </instance-parameter>
          <parameter name="menu" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="495">a #GtkRecentChooserMenu.</doc>
            <type name="Gtk.RecentChooserMenu" c:type="GtkRecentChooserMenu*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_open_recent_menu"
              c:identifier="amtk_application_window_create_open_recent_menu"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-application-window.c"
             line="543">Creates a simple and generic #GtkRecentChooserMenu.

The #GtkRecentChooser is configured to show files only recently used with the
current application, as returned by g_get_application_name(). If recent files
are added to the default #GtkRecentManager with
gtk_recent_manager_add_item(), the files will normally show up in the
#GtkRecentChooserMenu.

The #GtkRecentChooserMenu is connected to the statusbar with
amtk_application_window_connect_recent_chooser_menu_to_statusbar().

When the #GtkRecentChooser::item-activated signal is emitted,
g_application_open() is called (with an empty hint), so the #GApplication
must have the %G_APPLICATION_HANDLES_OPEN flag set.</doc>
        <source-position filename="../amtk/amtk-application-window.h"
                         line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-application-window.c"
               line="562">a new #GtkRecentChooserMenu.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="545">an #AmtkApplicationWindow.</doc>
            <type name="ApplicationWindow" c:type="AmtkApplicationWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create_open_recent_menu_item"
              c:identifier="amtk_application_window_create_open_recent_menu_item"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-application-window.c"
             line="595">Creates a #GtkMenuItem with a simple and generic #GtkRecentChooserMenu as
submenu. The #GtkRecentChooserMenu is created with
amtk_application_window_create_open_recent_menu().</doc>
        <source-position filename="../amtk/amtk-application-window.h"
                         line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-application-window.c"
               line="603">a new #GtkMenuItem.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="597">an #AmtkApplicationWindow.</doc>
            <type name="ApplicationWindow" c:type="AmtkApplicationWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_application_window"
              c:identifier="amtk_application_window_get_application_window"
              glib:get-property="application-window"
              version="2.0">
        <source-position filename="../amtk/amtk-application-window.h"
                         line="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-application-window.c"
               line="215">the #GtkApplicationWindow of @amtk_window.</doc>
          <type name="Gtk.ApplicationWindow" c:type="GtkApplicationWindow*"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="213">an #AmtkApplicationWindow.</doc>
            <type name="ApplicationWindow" c:type="AmtkApplicationWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_statusbar"
              c:identifier="amtk_application_window_get_statusbar"
              glib:get-property="statusbar"
              version="2.0">
        <source-position filename="../amtk/amtk-application-window.h"
                         line="51"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-application-window.c"
               line="230">the #AmtkApplicationWindow:statusbar.</doc>
          <type name="Gtk.Statusbar" c:type="GtkStatusbar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="228">an #AmtkApplicationWindow.</doc>
            <type name="ApplicationWindow" c:type="AmtkApplicationWindow*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_statusbar"
              c:identifier="amtk_application_window_set_statusbar"
              glib:set-property="statusbar"
              version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-application-window.c"
             line="241">Sets the #AmtkApplicationWindow:statusbar property.</doc>
        <source-position filename="../amtk/amtk-application-window.h"
                         line="54"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_window" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="243">an #AmtkApplicationWindow.</doc>
            <type name="ApplicationWindow" c:type="AmtkApplicationWindow*"/>
          </instance-parameter>
          <parameter name="statusbar"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-application-window.c"
                 line="244">a #GtkStatusbar, or %NULL.</doc>
            <type name="Gtk.Statusbar" c:type="GtkStatusbar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="application-window"
                version="2.0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_application_window">
        <doc xml:space="preserve"
             filename="../amtk/amtk-application-window.c"
             line="136">The #GtkApplicationWindow.</doc>
        <type name="Gtk.ApplicationWindow"/>
      </property>
      <property name="statusbar"
                version="2.0"
                writable="1"
                transfer-ownership="none"
                setter="set_statusbar"
                getter="get_statusbar">
        <doc xml:space="preserve"
             filename="../amtk/amtk-application-window.c"
             line="152">The #GtkStatusbar. %NULL by default.</doc>
        <type name="Gtk.Statusbar"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ApplicationWindowPrivate"
              c:type="AmtkApplicationWindowPrivate*"/>
      </field>
    </class>
    <record name="ApplicationWindowClass"
            c:type="AmtkApplicationWindowClass"
            glib:is-gtype-struct-for="ApplicationWindow">
      <source-position filename="../amtk/amtk-application-window.h" line="39"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="padding">
        <array zero-terminated="0" fixed-size="12">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="ApplicationWindowPrivate"
            c:type="AmtkApplicationWindowPrivate"
            disguised="1">
      <source-position filename="../amtk/amtk-application-window.h" line="25"/>
    </record>
    <function-macro name="FACTORY"
                    c:identifier="AMTK_FACTORY"
                    introspectable="0">
      <source-position filename="../amtk/amtk-factory.h" line="18"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FACTORY_CLASS"
                    c:identifier="AMTK_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-factory.h" line="19"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FACTORY_GET_CLASS"
                    c:identifier="AMTK_FACTORY_GET_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-factory.h" line="22"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Factory"
           c:symbol-prefix="factory"
           c:type="AmtkFactory"
           parent="GObject.Object"
           glib:type-name="AmtkFactory"
           glib:get-type="amtk_factory_get_type"
           glib:type-struct="FactoryClass">
      <source-position filename="../amtk/amtk-factory.h" line="40"/>
      <constructor name="new" c:identifier="amtk_factory_new" version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="302">Creates a new #AmtkFactory object. Associating a #GtkApplication is optional,
if it is %NULL gtk_application_set_accels_for_action() won't be called.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="79"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="309">a new #AmtkFactory.</doc>
          <type name="Factory" c:type="AmtkFactory*"/>
        </return-value>
        <parameters>
          <parameter name="application"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="304">a #GtkApplication, or %NULL.</doc>
            <type name="Gtk.Application" c:type="GtkApplication*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_default_application"
                   c:identifier="amtk_factory_new_with_default_application"
                   version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="322">Calls amtk_factory_new() with g_application_get_default() (it must be a
#GtkApplication).</doc>
        <source-position filename="../amtk/amtk-factory.h" line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="328">a new #AmtkFactory with the default #GtkApplication.</doc>
          <type name="Factory" c:type="AmtkFactory*"/>
        </return-value>
      </constructor>
      <method name="create_check_menu_item"
              c:identifier="amtk_factory_create_check_menu_item"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="606">Creates a new #GtkCheckMenuItem for @action_name with the
#AmtkFactory:default-flags.

See the documentation of amtk_factory_create_check_menu_item_full() for more
information.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="617">a new #GtkCheckMenuItem for @action_name.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="608">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="609">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_check_menu_item_full"
              c:identifier="amtk_factory_create_check_menu_item_full"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="632">This function ignores the #AmtkFactory:default-flags property and takes the
@flags argument instead.

Note that since it is a #GtkCheckMenuItem the icon is not set, even if it
would be possible with amtk_menu_item_set_icon_name().

If the action controls a boolean property, think about using
#GPropertyAction.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="647">a new #GtkCheckMenuItem for @action_name.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="634">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="635">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="636">#AmtkFactoryFlags.</doc>
            <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_gmenu_item"
              c:identifier="amtk_factory_create_gmenu_item"
              version="5.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="751">Calls amtk_factory_create_gmenu_item_full() with the
#AmtkFactory:default-flags.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="124"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="759">a new #GMenuItem for @action_name.</doc>
          <type name="Gio.MenuItem" c:type="GMenuItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="753">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="754">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_gmenu_item_full"
              c:identifier="amtk_factory_create_gmenu_item_full"
              version="5.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="774">This function ignores the #AmtkFactory:default-flags property and takes the
@flags argument instead.

Creates a new #GMenuItem for @action_name. It ignores the tooltip, i.e. the
return value of amtk_action_info_get_tooltip().</doc>
        <source-position filename="../amtk/amtk-factory.h" line="128"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="786">a new #GMenuItem for @action_name.</doc>
          <type name="Gio.MenuItem" c:type="GMenuItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="776">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="777">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="778">#AmtkFactoryFlags.</doc>
            <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_menu_item"
              c:identifier="amtk_factory_create_menu_item"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="541">Creates a new #GtkMenuItem for @action_name with the
#AmtkFactory:default-flags.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="549">a new #GtkMenuItem for @action_name.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="543">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="544">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_menu_item_full"
              c:identifier="amtk_factory_create_menu_item_full"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="564">This function ignores the #AmtkFactory:default-flags property and takes the
@flags argument instead.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="573">a new #GtkMenuItem for @action_name.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="566">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="567">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="568">#AmtkFactoryFlags.</doc>
            <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_menu_tool_button"
              c:identifier="amtk_factory_create_menu_tool_button"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="892">Creates a new #GtkMenuToolButton for @action_name with the
#AmtkFactory:default-flags.

See the documentation of amtk_factory_create_menu_tool_button_full() for more
information.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="142"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="903">a new #GtkMenuToolButton for @action_name.</doc>
          <type name="Gtk.MenuToolButton" c:type="GtkMenuToolButton*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="894">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="895">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_menu_tool_button_full"
              c:identifier="amtk_factory_create_menu_tool_button_full"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="918">This function ignores the #AmtkFactory:default-flags property and takes the
@flags argument instead.

After calling this function, you need to use the #GtkMenuToolButton API to
set the menu and also possibly set a tooltip to the arrow.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="146"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="930">a new #GtkMenuToolButton for @action_name.</doc>
          <type name="Gtk.MenuToolButton" c:type="GtkMenuToolButton*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="920">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="921">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="922">#AmtkFactoryFlags.</doc>
            <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_shortcut"
              c:identifier="amtk_factory_create_shortcut"
              version="5.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="955">Calls amtk_factory_create_shortcut_full() with the
#AmtkFactory:default-flags.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="151"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="963">a new #GtkShortcutsShortcut for @action_name.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="957">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="958">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_shortcut_full"
              c:identifier="amtk_factory_create_shortcut_full"
              version="5.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="978">This function ignores the #AmtkFactory:default-flags property and takes the
@flags argument instead.

This function creates a new #GtkShortcutsShortcut for @action_name.

For the #GtkShortcutsShortcut:title, the tooltip has the priorioty, with the
label as fallback if the tooltip is %NULL (the mnemonic is removed from the
label with amtk_utils_remove_mnemonic()). This can be controlled with the
%AMTK_FACTORY_IGNORE_TOOLTIP and %AMTK_FACTORY_IGNORE_LABEL flags.

The #GtkShortcutsShortcut:accelerator property is set with only the *first*
accel returned by amtk_action_info_get_accels(). This step can be ignored
with %AMTK_FACTORY_IGNORE_ACCELS or %AMTK_FACTORY_IGNORE_ACCELS_FOR_DOC.

The #GtkShortcutsShortcut:action-name property is set to @action_name if the
%AMTK_FACTORY_IGNORE_GACTION flag isn't set. Note that with
#GtkShortcutsShortcut:action-name all accelerators are displayed (if set to
the #GtkApplication).

So depending on whether you want to show only the first accelerator or all
accelerators, you need to set @flags appropriately.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="155"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="1006">a new #GtkShortcutsShortcut for @action_name.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="980">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="981">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="982">#AmtkFactoryFlags.</doc>
            <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_simple_menu"
              c:identifier="amtk_factory_create_simple_menu"
              version="5.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="672">Calls amtk_factory_create_simple_menu_full() with the
#AmtkFactory:default-flags.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="682">a new simple #GtkMenu for @entries.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="674">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="entries" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="675">a
  pointer to the first item in an array of #AmtkActionInfoEntry structs.</doc>
            <array length="1"
                   zero-terminated="0"
                   c:type="const AmtkActionInfoEntry*">
              <type name="ActionInfoEntry"/>
            </array>
          </parameter>
          <parameter name="n_entries" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="677">the length of @entries, or -1 if @entries is %NULL-terminated.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_simple_menu_full"
              c:identifier="amtk_factory_create_simple_menu_full"
              version="5.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="700">This function ignores the #AmtkFactory:default-flags property and takes the
@flags argument instead.

This function:
- Creates a #GtkMenu;
- For each #AmtkActionInfoEntry action name from @entries, creates a
  #GtkMenuItem with amtk_factory_create_menu_item_full() with the same @flags
  as passed in to this function, and appends it to the #GtkMenu, in the same
  order as provided by the @entries array.

So this function is useful only if the #GtkMenu contains only simple
#GtkMenuItem's, not #GtkCheckMenuItem's nor #GtkRadioMenuItem's.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="721">a new simple #GtkMenu for @entries.</doc>
          <type name="Gtk.Widget" c:type="GtkWidget*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="702">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="entries" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="703">a
  pointer to the first item in an array of #AmtkActionInfoEntry structs.</doc>
            <array length="1"
                   zero-terminated="0"
                   c:type="const AmtkActionInfoEntry*">
              <type name="ActionInfoEntry"/>
            </array>
          </parameter>
          <parameter name="n_entries" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="705">the length of @entries, or -1 if @entries is %NULL-terminated.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="706">#AmtkFactoryFlags.</doc>
            <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_tool_button"
              c:identifier="amtk_factory_create_tool_button"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="835">Creates a new #GtkToolButton for @action_name with the
#AmtkFactory:default-flags.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="133"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="843">a new #GtkToolButton for @action_name.</doc>
          <type name="Gtk.ToolItem" c:type="GtkToolItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="837">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="838">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_tool_button_full"
              c:identifier="amtk_factory_create_tool_button_full"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="858">This function ignores the #AmtkFactory:default-flags property and takes the
@flags argument instead.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="137"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="867">a new #GtkToolButton for @action_name.</doc>
          <type name="Gtk.ToolItem" c:type="GtkToolItem*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="860">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="action_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="861">an action name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="862">#AmtkFactoryFlags.</doc>
            <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_application"
              c:identifier="amtk_factory_get_application"
              glib:get-property="application"
              version="3.0">
        <source-position filename="../amtk/amtk-factory.h" line="85"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="341">the #AmtkFactory:application.</doc>
          <type name="Gtk.Application" c:type="GtkApplication*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="339">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_default_flags"
              c:identifier="amtk_factory_get_default_flags"
              glib:get-property="default-flags"
              version="3.0">
        <source-position filename="../amtk/amtk-factory.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-factory.c"
               line="356">the #AmtkFactory:default-flags.</doc>
          <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="354">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_default_flags"
              c:identifier="amtk_factory_set_default_flags"
              glib:set-property="default-flags"
              version="3.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="367">Sets the #AmtkFactory:default-flags property.</doc>
        <source-position filename="../amtk/amtk-factory.h" line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="369">an #AmtkFactory.</doc>
            <type name="Factory" c:type="AmtkFactory*"/>
          </instance-parameter>
          <parameter name="default_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-factory.c"
                 line="370">the new value.</doc>
            <type name="FactoryFlags" c:type="AmtkFactoryFlags"/>
          </parameter>
        </parameters>
      </method>
      <property name="application"
                version="3.0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_application">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="260">The associated #GtkApplication (it is optional, it can be %NULL).
#AmtkFactory has a weak reference to the #GtkApplication.</doc>
        <type name="Gtk.Application"/>
      </property>
      <property name="default-flags"
                version="3.0"
                writable="1"
                transfer-ownership="none"
                setter="set_default_flags"
                getter="get_default_flags">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.c"
             line="277">The default #AmtkFactoryFlags.</doc>
        <type name="FactoryFlags"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="FactoryPrivate" c:type="AmtkFactoryPrivate*"/>
      </field>
    </class>
    <record name="FactoryClass"
            c:type="AmtkFactoryClass"
            glib:is-gtype-struct-for="Factory">
      <source-position filename="../amtk/amtk-factory.h" line="40"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="padding">
        <array zero-terminated="0" fixed-size="12">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <bitfield name="FactoryFlags"
              version="3.0"
              glib:type-name="AmtkFactoryFlags"
              glib:get-type="amtk_factory_flags_get_type"
              c:type="AmtkFactoryFlags">
      <doc xml:space="preserve"
           filename="../amtk/amtk-factory.h"
           line="42">#AmtkFactoryFlags permits to control how a factory function creates the
object, to ignore some steps.</doc>
      <member name="flags_none"
              value="0"
              c:identifier="AMTK_FACTORY_FLAGS_NONE"
              glib:nick="flags-none"
              glib:name="AMTK_FACTORY_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.h"
             line="44">No flags.</doc>
      </member>
      <member name="ignore_gaction"
              value="1"
              c:identifier="AMTK_FACTORY_IGNORE_GACTION"
              glib:nick="ignore-gaction"
              glib:name="AMTK_FACTORY_IGNORE_GACTION">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.h"
             line="45">Do not associate the created object with the
  #GAction. For example if the object to create is a #GtkActionable, do not
  call gtk_actionable_set_detailed_action_name().</doc>
      </member>
      <member name="ignore_icon"
              value="2"
              c:identifier="AMTK_FACTORY_IGNORE_ICON"
              glib:nick="ignore-icon"
              glib:name="AMTK_FACTORY_IGNORE_ICON">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.h"
             line="48">Do not set an icon.</doc>
      </member>
      <member name="ignore_label"
              value="4"
              c:identifier="AMTK_FACTORY_IGNORE_LABEL"
              glib:nick="ignore-label"
              glib:name="AMTK_FACTORY_IGNORE_LABEL">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.h"
             line="49">Do not set a label/short description.</doc>
      </member>
      <member name="ignore_tooltip"
              value="8"
              c:identifier="AMTK_FACTORY_IGNORE_TOOLTIP"
              glib:nick="ignore-tooltip"
              glib:name="AMTK_FACTORY_IGNORE_TOOLTIP">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.h"
             line="50">Do not set a tooltip/long description.</doc>
      </member>
      <member name="ignore_accels"
              value="16"
              c:identifier="AMTK_FACTORY_IGNORE_ACCELS"
              glib:nick="ignore-accels"
              glib:name="AMTK_FACTORY_IGNORE_ACCELS">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.h"
             line="51">Ignore completely the accelerators.</doc>
      </member>
      <member name="ignore_accels_for_doc"
              value="32"
              c:identifier="AMTK_FACTORY_IGNORE_ACCELS_FOR_DOC"
              glib:nick="ignore-accels-for-doc"
              glib:name="AMTK_FACTORY_IGNORE_ACCELS_FOR_DOC">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.h"
             line="52">Ignore the accelerators for
  documentation purposes only. For example do not add/configure a
  #GtkAccelLabel.</doc>
      </member>
      <member name="ignore_accels_for_app"
              value="64"
              c:identifier="AMTK_FACTORY_IGNORE_ACCELS_FOR_APP"
              glib:nick="ignore-accels-for-app"
              glib:name="AMTK_FACTORY_IGNORE_ACCELS_FOR_APP">
        <doc xml:space="preserve"
             filename="../amtk/amtk-factory.h"
             line="55">Do not call
  gtk_application_set_accels_for_action().</doc>
      </member>
    </bitfield>
    <record name="FactoryPrivate" c:type="AmtkFactoryPrivate" disguised="1">
      <source-position filename="../amtk/amtk-factory.h" line="26"/>
    </record>
    <function-macro name="IS_ACTION_INFO_CENTRAL_STORE"
                    c:identifier="AMTK_IS_ACTION_INFO_CENTRAL_STORE"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-central-store.h"
                       line="20"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ACTION_INFO_CENTRAL_STORE_CLASS"
                    c:identifier="AMTK_IS_ACTION_INFO_CENTRAL_STORE_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-central-store.h"
                       line="21"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ACTION_INFO_STORE"
                    c:identifier="AMTK_IS_ACTION_INFO_STORE"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-store.h" line="20"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ACTION_INFO_STORE_CLASS"
                    c:identifier="AMTK_IS_ACTION_INFO_STORE_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-action-info-store.h" line="21"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_APPLICATION_WINDOW"
                    c:identifier="AMTK_IS_APPLICATION_WINDOW"
                    introspectable="0">
      <source-position filename="../amtk/amtk-application-window.h" line="19"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_APPLICATION_WINDOW_CLASS"
                    c:identifier="AMTK_IS_APPLICATION_WINDOW_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-application-window.h" line="20"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FACTORY"
                    c:identifier="AMTK_IS_FACTORY"
                    introspectable="0">
      <source-position filename="../amtk/amtk-factory.h" line="20"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FACTORY_CLASS"
                    c:identifier="AMTK_IS_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-factory.h" line="21"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MENU_SHELL"
                    c:identifier="AMTK_IS_MENU_SHELL"
                    introspectable="0">
      <source-position filename="../amtk/amtk-menu-shell.h" line="19"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MENU_SHELL_CLASS"
                    c:identifier="AMTK_IS_MENU_SHELL_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-menu-shell.h" line="20"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MENU_SHELL"
                    c:identifier="AMTK_MENU_SHELL"
                    introspectable="0">
      <source-position filename="../amtk/amtk-menu-shell.h" line="17"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MENU_SHELL_CLASS"
                    c:identifier="AMTK_MENU_SHELL_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-menu-shell.h" line="18"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MENU_SHELL_GET_CLASS"
                    c:identifier="AMTK_MENU_SHELL_GET_CLASS"
                    introspectable="0">
      <source-position filename="../amtk/amtk-menu-shell.h" line="21"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="MenuShell"
           c:symbol-prefix="menu_shell"
           c:type="AmtkMenuShell"
           parent="GObject.Object"
           glib:type-name="AmtkMenuShell"
           glib:get-type="amtk_menu_shell_get_type"
           glib:type-struct="MenuShellClass">
      <source-position filename="../amtk/amtk-menu-shell.h" line="47"/>
      <function name="get_from_gtk_menu_shell"
                c:identifier="amtk_menu_shell_get_from_gtk_menu_shell"
                version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-menu-shell.c"
             line="348">Returns the #AmtkMenuShell of @gtk_menu_shell. The returned object is
guaranteed to be the same for the lifetime of @gtk_menu_shell.</doc>
        <source-position filename="../amtk/amtk-menu-shell.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-menu-shell.c"
               line="355">the #AmtkMenuShell of @gtk_menu_shell.</doc>
          <type name="MenuShell" c:type="AmtkMenuShell*"/>
        </return-value>
        <parameters>
          <parameter name="gtk_menu_shell" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-menu-shell.c"
                 line="350">a #GtkMenuShell.</doc>
            <type name="Gtk.MenuShell" c:type="GtkMenuShell*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="menu_item_deselected">
        <source-position filename="../amtk/amtk-menu-shell.h" line="43"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_menu_shell" transfer-ownership="none">
            <type name="MenuShell" c:type="AmtkMenuShell*"/>
          </instance-parameter>
          <parameter name="menu_item" transfer-ownership="none">
            <type name="Gtk.MenuItem" c:type="GtkMenuItem*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="menu_item_selected">
        <source-position filename="../amtk/amtk-menu-shell.h" line="40"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_menu_shell" transfer-ownership="none">
            <type name="MenuShell" c:type="AmtkMenuShell*"/>
          </instance-parameter>
          <parameter name="menu_item" transfer-ownership="none">
            <type name="Gtk.MenuItem" c:type="GtkMenuItem*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_menu_shell"
              c:identifier="amtk_menu_shell_get_menu_shell"
              glib:get-property="menu-shell"
              version="2.0">
        <source-position filename="../amtk/amtk-menu-shell.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-menu-shell.c"
               line="387">the #GtkMenuShell of @amtk_menu_shell.</doc>
          <type name="Gtk.MenuShell" c:type="GtkMenuShell*"/>
        </return-value>
        <parameters>
          <instance-parameter name="amtk_menu_shell" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-menu-shell.c"
                 line="385">an #AmtkMenuShell.</doc>
            <type name="MenuShell" c:type="AmtkMenuShell*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="menu-shell"
                version="2.0"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_menu_shell">
        <doc xml:space="preserve"
             filename="../amtk/amtk-menu-shell.c"
             line="283">The #GtkMenuShell.</doc>
        <type name="Gtk.MenuShell"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="MenuShellPrivate" c:type="AmtkMenuShellPrivate*"/>
      </field>
      <glib:signal name="menu-item-deselected" when="first" version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-menu-shell.c"
             line="321">The ::menu-item-deselected signal is emitted when the
#GtkMenuItem::deselect signal is emitted on a #GtkMenuItem belonging
(directly or indirectly through submenus) to @amtk_menu_shell.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="menu_item" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-menu-shell.c"
                 line="324">the #GtkMenuItem that has been deselected.</doc>
            <type name="Gtk.MenuItem"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="menu-item-selected" when="first" version="2.0">
        <doc xml:space="preserve"
             filename="../amtk/amtk-menu-shell.c"
             line="301">The ::menu-item-selected signal is emitted when the
#GtkMenuItem::select signal is emitted on a #GtkMenuItem belonging
(directly or indirectly through submenus) to @amtk_menu_shell.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="menu_item" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../amtk/amtk-menu-shell.c"
                 line="304">the #GtkMenuItem that has been selected.</doc>
            <type name="Gtk.MenuItem"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="MenuShellClass"
            c:type="AmtkMenuShellClass"
            glib:is-gtype-struct-for="MenuShell">
      <source-position filename="../amtk/amtk-menu-shell.h" line="47"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="menu_item_selected">
        <callback name="menu_item_selected">
          <source-position filename="../amtk/amtk-menu-shell.h" line="40"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="amtk_menu_shell" transfer-ownership="none">
              <type name="MenuShell" c:type="AmtkMenuShell*"/>
            </parameter>
            <parameter name="menu_item" transfer-ownership="none">
              <type name="Gtk.MenuItem" c:type="GtkMenuItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="menu_item_deselected">
        <callback name="menu_item_deselected">
          <source-position filename="../amtk/amtk-menu-shell.h" line="43"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="amtk_menu_shell" transfer-ownership="none">
              <type name="MenuShell" c:type="AmtkMenuShell*"/>
            </parameter>
            <parameter name="menu_item" transfer-ownership="none">
              <type name="Gtk.MenuItem" c:type="GtkMenuItem*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="padding">
        <array zero-terminated="0" fixed-size="12">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="MenuShellPrivate"
            c:type="AmtkMenuShellPrivate"
            disguised="1">
      <source-position filename="../amtk/amtk-menu-shell.h" line="25"/>
    </record>
    <function name="action_map_add_action_entries_check_dups"
              c:identifier="amtk_action_map_add_action_entries_check_dups"
              version="2.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-action-map.c"
           line="37">A wrapper function for g_action_map_add_action_entries() that checks
duplicates.

This function first checks - for each entry - that the @action_map doesn't
already contain a #GAction with the same name. A warning is printed if an old
action will be dropped. In any case, it then calls
g_action_map_add_action_entries() with the same arguments as passed to this
function.

This function also checks if there are duplicates in the @entries array
itself.</doc>
      <source-position filename="../amtk/amtk-action-map.h" line="17"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="action_map" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-map.c"
               line="39">a #GActionMap.</doc>
          <type name="Gio.ActionMap" c:type="GActionMap*"/>
        </parameter>
        <parameter name="entries" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-map.c"
               line="40">a pointer to
          the first item in an array of #GActionEntry structs.</doc>
          <array length="2" zero-terminated="0" c:type="const GActionEntry*">
            <type name="Gio.ActionEntry"/>
          </array>
        </parameter>
        <parameter name="n_entries" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-map.c"
               line="42">the length of @entries, or -1 if @entries is %NULL-terminated.</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-action-map.c"
               line="43">the user data for signal connections.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="amtk-action-info">
      <doc xml:space="preserve"
           filename="../amtk/amtk-action-info.c"
           line="9">An #AmtkActionInfo instance contains a set of information about a #GAction.
Those pieces of information are useful to create UI elements that trigger the
#GAction, for example a menu item or a toolbar item.

The recommended way to create a set of #AmtkActionInfo's is to use the
amtk_action_info_store_add_entries() function.</doc>
    </docsection>
    <docsection name="amtk-action-info-central-store">
      <doc xml:space="preserve"
           filename="../amtk/amtk-action-info-central-store.c"
           line="8">#AmtkActionInfoCentralStore is a singleton class containing the aggregation
of all #AmtkActionInfoStore's. Each time an #AmtkActionInfo is added to an
#AmtkActionInfoStore, it is also added to the #AmtkActionInfoCentralStore.</doc>
    </docsection>
    <docsection name="amtk-action-info-store">
      <doc xml:space="preserve"
           filename="../amtk/amtk-action-info-store.c"
           line="9">#AmtkActionInfoStore contains a set of #AmtkActionInfo's. It is add-only, an
#AmtkActionInfo cannot be removed.

#AmtkActionInfoStore is designed so that libraries can provide their own
store, to share action information (with translations) and possibly the
#GAction implementations as well.

A library #AmtkActionInfoStore must namespace the action names to not have
conflicts when an #AmtkActionInfo is added to the
#AmtkActionInfoCentralStore. Examples of namespaced action names:
`"win.amtk-save"` or `"app.amtk-quit"`.

An #AmtkActionInfoStore is meant to be something static, created on
application startup. See the [paragraph about static objects in
AmtkFactory][amtk-factory-static-objects]. So once an #AmtkActionInfo has
been added to an #AmtkActionInfoStore, it is discouraged to modify it
afterwards; an exception is to call amtk_action_info_set_accels() with
several accelerators after using amtk_action_info_store_add_entries()
(because an #AmtkActionInfoEntry can contain only one accelerator).</doc>
    </docsection>
    <docsection name="amtk-action-map">
      <doc xml:space="preserve"
           filename="../amtk/amtk-action-map.c"
           line="7">#GActionMap wrapper functions.</doc>
    </docsection>
    <docsection name="amtk-application-window">
      <doc xml:space="preserve"
           filename="../amtk/amtk-application-window.c"
           line="14">#AmtkApplicationWindow extends the #GtkApplicationWindow class with a
#AmtkApplicationWindow:statusbar property and functions to show longer
descriptions of #GtkMenuItem's to the #GtkStatusbar.

Note that #AmtkApplicationWindow extends the #GtkApplicationWindow class but
without subclassing it, because several libraries might want to extend
#GtkApplicationWindow and an application needs to be able to use all those
extensions at the same time.</doc>
    </docsection>
    <docsection name="amtk-factory">
      <doc xml:space="preserve"
           filename="../amtk/amtk-factory.c"
           line="12">#AmtkFactory contains functions to create various objects such as a menu
item, a toolbar item or a #GtkShortcutsShortcut, from the information
provided by an #AmtkActionInfo. A factory function accesses an
#AmtkActionInfo from the #AmtkActionInfoCentralStore.

A #GtkApplication can be associated so that factory functions can call
gtk_application_set_accels_for_action() with the accelerators returned by
amtk_action_info_get_accels(). Note that
gtk_application_set_accels_for_action() is called by factory functions and
not by amtk_action_info_store_add(), so that libraries can provide their own
store and the accelerators are set to the #GtkApplication only if an
#AmtkActionInfo is actually used. For an application store,
amtk_action_info_store_set_all_accels_to_app() is an alternative.

#AmtkFactoryFlags permits to control how a factory function creates the
object, to ignore some steps. Factory functions are declined in two variants:
a simple form which takes the value of the #AmtkFactory:default-flags
property, and the same function with the `_full` suffix which takes an
#AmtkFactoryFlags argument and ignores the #AmtkFactory:default-flags. See
for example amtk_factory_create_menu_item() and
amtk_factory_create_menu_item_full().

# Static objects # {#amtk-factory-static-objects}

An important detail is that once a factory function has created an object,
the object is not updated if the corresponding #AmtkActionInfo is modified
afterwards. #AmtkActionInfo doesn't have a notify signal, and it is anyway
discouraged to modify an #AmtkActionInfo after being added to an
#AmtkActionInfoStore. An #AmtkActionInfoStore is meant to be something
static, created on application startup. Updating automatically menu and
toolbar items is out of scope for the Amtk library. If for example action
accelerators can be modified at run-time, the menu needs to be re-generated.

# Menus

Some general notes about the functions that create #GtkMenuItem's:
- If not ignored by an #AmtkFactoryFlags, the first accelerator returned by
  amtk_action_info_get_accels() is set to the #GtkAccelLabel of the
  #GtkMenuItem.
- If not ignored by an #AmtkFactoryFlags, the tooltip is set with
  amtk_menu_item_set_long_description(), which permits to display it in a
  #GtkStatusbar with amtk_application_window_connect_menu_to_statusbar().

## Code example to create a menu

How to create a #GtkMenuBar with #AmtkFactory. Each submenu is created by a
separate function, to make the code clearer.

|[
static GtkWidget *
create_file_submenu (void)
{
  GtkMenuShell *file_submenu;
  AmtkFactory *factory;

  file_submenu = GTK_MENU_SHELL (gtk_menu_new ());

  factory = amtk_factory_new_with_default_application ();
  gtk_menu_shell_append (file_submenu, amtk_factory_create_menu_item (factory, "win.open"));
  gtk_menu_shell_append (file_submenu, amtk_factory_create_menu_item (factory, "win.save"));
  gtk_menu_shell_append (file_submenu, gtk_separator_menu_item_new ());
  gtk_menu_shell_append (file_submenu, amtk_factory_create_menu_item (factory, "app.quit"));
  g_object_unref (factory);

  return GTK_WIDGET (file_submenu);
}

static GtkWidget *
create_help_submenu (void)
{
  GtkMenuShell *help_submenu;
  AmtkFactory *factory;

  help_submenu = GTK_MENU_SHELL (gtk_menu_new ());

  factory = amtk_factory_new_with_default_application ();
  gtk_menu_shell_append (help_submenu, amtk_factory_create_menu_item (factory, "app.about"));
  g_object_unref (factory);

  return GTK_WIDGET (help_submenu);
}

static GtkWidget *
create_menu_bar (void)
{
  GtkWidget *file_menu_item;
  GtkWidget *help_menu_item;
  GtkWidget *menu_bar;

  file_menu_item = gtk_menu_item_new_with_mnemonic ("_File");
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (file_menu_item),
                             create_file_submenu ());

  help_menu_item = gtk_menu_item_new_with_mnemonic ("_Help");
  gtk_menu_item_set_submenu (GTK_MENU_ITEM (help_menu_item),
                             create_help_submenu ());

  menu_bar = gtk_menu_bar_new ();
  gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), file_menu_item);
  gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), help_menu_item);

  // Additionally, it is a good place to call
  // amtk_action_info_store_check_all_used() here.

  return menu_bar;
}
]|

# Toolbars

Some general notes about the functions that create #GtkToolItem's:
- The accelerators returned by amtk_action_info_get_accels() are not used for
  documentation purposes in a toolbar, so the
  %AMTK_FACTORY_IGNORE_ACCELS_FOR_DOC flag has no impact. The accelerators
  are documented only in menu items.

## Code example to create a toolbar

How to create a basic #GtkToolbar with #AmtkFactory.

|[
static GtkWidget *
create_toolbar (void)
{
  GtkToolbar *toolbar;
  AmtkFactory *factory;

  toolbar = GTK_TOOLBAR (gtk_toolbar_new ());

  // Small performance improvement:
  // Do not associate a GtkApplication, because the menu has already been
  // generated, the menu contains all actions, so
  // gtk_application_set_accels_for_action() has already been called for all
  // actions. Another way is to set the AMTK_FACTORY_IGNORE_ACCELS_FOR_APP
  // flag.
  factory = amtk_factory_new (NULL);
  gtk_toolbar_insert (toolbar, amtk_factory_create_tool_button (factory, "win.new-file"), -1);
  gtk_toolbar_insert (toolbar, amtk_factory_create_tool_button (factory, "win.open"), -1);
  gtk_toolbar_insert (toolbar, amtk_factory_create_tool_button (factory, "win.save"), -1);
  gtk_toolbar_insert (toolbar, gtk_separator_tool_item_new (), -1);
  gtk_toolbar_insert (toolbar, amtk_factory_create_tool_button (factory, "win.cut"), -1);
  gtk_toolbar_insert (toolbar, amtk_factory_create_tool_button (factory, "win.copy"), -1);
  gtk_toolbar_insert (toolbar, amtk_factory_create_tool_button (factory, "win.paste"), -1);
  g_object_unref (factory);

  return GTK_WIDGET (toolbar);
}
]|

# Modern UI with a GtkHeaderBar

To have an example code, see `tests/interactive-tests/test-headerbar.c` in
the git repository of Amtk.</doc>
    </docsection>
    <docsection name="amtk-gmenu">
      <doc xml:space="preserve"
           filename="../amtk/amtk-gmenu.c"
           line="7">#GMenu convenience functions.</doc>
    </docsection>
    <docsection name="amtk-menu-item">
      <doc xml:space="preserve"
           filename="../amtk/amtk-menu-item.c"
           line="7">#GtkMenuItem functions.</doc>
    </docsection>
    <docsection name="amtk-menu-shell">
      <doc xml:space="preserve"
           filename="../amtk/amtk-menu-shell.c"
           line="7">#AmtkMenuShell extends the #GtkMenuShell abstract class with the
#AmtkMenuShell::menu-item-selected and #AmtkMenuShell::menu-item-deselected
convenience signals.

One possible use-case is to push/pop longer descriptions of menu items to a
#GtkStatusbar, exactly like
amtk_application_window_connect_menu_to_statusbar() does.</doc>
    </docsection>
    <docsection name="amtk-shortcuts">
      <doc xml:space="preserve"
           filename="../amtk/amtk-shortcuts.c"
           line="7">Convenience functions to create a #GtkShortcutsWindow. At the time of writing
the GtkShortcuts* classes don't provide any function.

You need to also use gtk_container_add(), and g_object_set() to set other
properties.</doc>
    </docsection>
    <docsection name="amtk-utils">
      <doc xml:space="preserve"
           filename="../amtk/amtk-utils.c"
           line="10">Utility functions.</doc>
    </docsection>
    <function name="finalize" c:identifier="amtk_finalize" version="3.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-init.c"
           line="56">Free the resources allocated by Amtk. For example it unrefs the singleton
objects.

It is not mandatory to call this function, it's just to be friendlier to
memory debugging tools. This function is meant to be called at the end of
main(). It can be called several times.</doc>
      <source-position filename="../amtk/amtk-init.h" line="20"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="gmenu_append_item"
              c:identifier="amtk_gmenu_append_item"
              version="5.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-gmenu.c"
           line="15">Like g_menu_append_item() but with (transfer full) for the @item parameter.</doc>
      <source-position filename="../amtk/amtk-gmenu.h" line="17"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="menu" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-gmenu.c"
               line="17">a #GMenu.</doc>
          <type name="Gio.Menu" c:type="GMenu*"/>
        </parameter>
        <parameter name="item" transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-gmenu.c"
               line="18">a #GMenuItem to append.</doc>
          <type name="Gio.MenuItem" c:type="GMenuItem*"/>
        </parameter>
      </parameters>
    </function>
    <function name="gmenu_append_section"
              c:identifier="amtk_gmenu_append_section"
              version="5.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-gmenu.c"
           line="35">Like g_menu_append_section() but with (transfer full) and a different type
for the @section parameter, and calls g_menu_freeze() on @section.</doc>
      <source-position filename="../amtk/amtk-gmenu.h" line="21"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="menu" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-gmenu.c"
               line="37">a #GMenu.</doc>
          <type name="Gio.Menu" c:type="GMenu*"/>
        </parameter>
        <parameter name="label"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-gmenu.c"
               line="38">the section label, or %NULL.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="section" transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../amtk/amtk-gmenu.c"
               line="39">a #GMenu with the items of the section.</doc>
          <type name="Gio.Menu" c:type="GMenu*"/>
        </parameter>
      </parameters>
    </function>
    <function name="init" c:identifier="amtk_init" version="3.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-init.c"
           line="27">Initializes the Amtk library (e.g. for the internationalization).

This function can be called several times, but is meant to be called at the
beginning of main(), before any other Amtk function call.</doc>
      <source-position filename="../amtk/amtk-init.h" line="17"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="menu_item_get_long_description"
              c:identifier="amtk_menu_item_get_long_description"
              version="2.0">
      <source-position filename="../amtk/amtk-menu-item.h" line="17"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="../amtk/amtk-menu-item.c"
             line="21">the long description of @menu_item, previously set with
  amtk_menu_item_set_long_description().</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="menu_item" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-menu-item.c"
               line="19">a #GtkMenuItem.</doc>
          <type name="Gtk.MenuItem" c:type="GtkMenuItem*"/>
        </parameter>
      </parameters>
    </function>
    <function name="menu_item_set_icon_name"
              c:identifier="amtk_menu_item_set_icon_name"
              version="2.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-menu-item.c"
           line="55">Sets an icon to a #GtkMenuItem.

If the child widget of @item is already a #GtkBox, all #GtkImage widgets
inside that box are first destroyed. A #GtkImage for @icon_name is then
inserted to the box.

If the child widget of @item is not a #GtkBox (it's usually the
#GtkAccelLabel), it is replaced by a new #GtkBox and the initial child widget
is inserted to the #GtkBox, alongside the icon.

As a consequence, if you want to call functions on the #GtkAccelLabel, it's
easier to do it before calling this function.</doc>
      <source-position filename="../amtk/amtk-menu-item.h" line="24"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="item" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-menu-item.c"
               line="57">a #GtkMenuItem.</doc>
          <type name="Gtk.MenuItem" c:type="GtkMenuItem*"/>
        </parameter>
        <parameter name="icon_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-menu-item.c"
               line="58">an icon name.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="menu_item_set_long_description"
              c:identifier="amtk_menu_item_set_long_description"
              version="2.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-menu-item.c"
           line="33">Sets the long description of @menu_item. A possible use-case is to display it
in a #GtkStatusbar, or as a tooltip.</doc>
      <source-position filename="../amtk/amtk-menu-item.h" line="20"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="menu_item" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-menu-item.c"
               line="35">a #GtkMenuItem.</doc>
          <type name="Gtk.MenuItem" c:type="GtkMenuItem*"/>
        </parameter>
        <parameter name="long_description"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="../amtk/amtk-menu-item.c"
               line="36">the long description, or %NULL to unset it.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="shortcuts_group_new"
              c:identifier="amtk_shortcuts_group_new"
              version="5.0">
      <source-position filename="../amtk/amtk-shortcuts.h" line="23"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../amtk/amtk-shortcuts.c"
             line="73">a new #GtkShortcutsGroup.</doc>
        <type name="Gtk.Container" c:type="GtkContainer*"/>
      </return-value>
      <parameters>
        <parameter name="title" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-shortcuts.c"
               line="71">the #GtkShortcutsGroup:title.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="shortcuts_section_new"
              c:identifier="amtk_shortcuts_section_new"
              version="5.0">
      <source-position filename="../amtk/amtk-shortcuts.h" line="20"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../amtk/amtk-shortcuts.c"
             line="52">a new #GtkShortcutsSection.</doc>
        <type name="Gtk.Container" c:type="GtkContainer*"/>
      </return-value>
      <parameters>
        <parameter name="title" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-shortcuts.c"
               line="50">the #GtkShortcutsSection:title.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="shortcuts_window_new"
              c:identifier="amtk_shortcuts_window_new"
              version="5.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-shortcuts.c"
           line="19">Creates a new #GtkShortcutsWindow. The #GtkWindow:modal property is set to
%TRUE.

It is on purpose that the return type is #GtkShortcutsWindow, not #GtkWidget
or something else, so in C when you declare the variable as
#GtkShortcutsWindow it's easier to find it later (searching "GtkShortcuts"
will return something in your codebase).</doc>
      <source-position filename="../amtk/amtk-shortcuts.h" line="17"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../amtk/amtk-shortcuts.c"
             line="31">a new #GtkShortcutsWindow.</doc>
        <type name="Gtk.ShortcutsWindow" c:type="GtkShortcutsWindow*"/>
      </return-value>
      <parameters>
        <parameter name="parent" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-shortcuts.c"
               line="21">the #GtkWindow:transient-for.</doc>
          <type name="Gtk.Window" c:type="GtkWindow*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_bind_g_action_to_gtk_action"
              c:identifier="amtk_utils_bind_g_action_to_gtk_action"
              version="4.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-utils.c"
           line="214">Utility function to be able to port an application gradually to #GAction,
when #GtkUIManager and #GtkAction are still used. Porting to #GAction should
be the first step.

For @detailed_g_action_name_without_prefix, see the
g_action_parse_detailed_name() function.  The `"app."` or `"win."` prefix (or
any other #GActionMap prefix) must not be included in
@detailed_g_action_name_without_prefix. For example a valid
@detailed_g_action_name_without_prefix is `"open"` or
`"insert-command::foobar"`.

The same #GAction can be bound to several #GtkAction's (with different
parameter values for the #GAction), but the reverse is not true, one
#GtkAction cannot be bound to several #GAction's.

This function:
- Calls g_action_activate() when the #GtkAction #GtkAction::activate signal
  is emitted.
- Binds the #GAction #GAction:enabled property to the #GtkAction
  #GtkAction:sensitive property. The binding is done with the
  %G_BINDING_BIDIRECTIONAL and %G_BINDING_SYNC_CREATE flags, the source is
  the #GAction and the target is the #GtkAction.

When using this function, you should set the callback to %NULL in the
corresponding #GtkActionEntry.</doc>
      <source-position filename="../amtk/amtk-utils.h" line="34"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="g_action_map" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="216">a #GActionMap.</doc>
          <type name="Gio.ActionMap" c:type="GActionMap*"/>
        </parameter>
        <parameter name="detailed_g_action_name_without_prefix"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="217">a detailed #GAction name without the
  #GActionMap prefix; the #GAction must be present in @g_action_map.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="gtk_action_group" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="219">a #GtkActionGroup.</doc>
          <type name="Gtk.ActionGroup" c:type="GtkActionGroup*"/>
        </parameter>
        <parameter name="gtk_action_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="220">a #GtkAction name present in @gtk_action_group.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_create_gtk_action"
              c:identifier="amtk_utils_create_gtk_action"
              version="4.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-utils.c"
           line="351">Utility function to be able to port an application gradually to #GAction and
#AmtkActionInfo, when #GtkUIManager is still used. This function goes one
step further compared to amtk_utils_bind_g_action_to_gtk_action(). With
amtk_utils_bind_g_action_to_gtk_action(), only the #GAction must exist. With
amtk_utils_create_gtk_action(), both the #GAction and #AmtkActionInfo must
exist (so typically you need to convert the #GtkActionEntry's into
#AmtkActionInfoEntry's).

This function creates a #GtkAction from a #GAction plus its corresponding
#AmtkActionInfo.

The #GtkAction is created with the information provided by the
#AmtkActionInfo (retrieved with amtk_action_info_central_store_lookup() with
@detailed_g_action_name_with_prefix as argument). Only the first accelerator
is taken into account.

Once the #GtkAction is created, it is added to the @gtk_action_group, and
amtk_utils_bind_g_action_to_gtk_action() is called.</doc>
      <source-position filename="../amtk/amtk-utils.h" line="40"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="g_action_map" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="353">a #GActionMap.</doc>
          <type name="Gio.ActionMap" c:type="GActionMap*"/>
        </parameter>
        <parameter name="detailed_g_action_name_with_prefix"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="354">a detailed #GAction name with the
  #GActionMap prefix; the #GAction must be present in @g_action_map.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="gtk_action_group" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="356">a #GtkActionGroup.</doc>
          <type name="Gtk.ActionGroup" c:type="GtkActionGroup*"/>
        </parameter>
        <parameter name="gtk_action_name" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="357">the name of the #GtkAction to create and add to
  @gtk_action_group.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_recent_chooser_menu_get_item_uri"
              c:identifier="amtk_utils_recent_chooser_menu_get_item_uri"
              version="2.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-utils.c"
           line="141">Gets the URI of @item. @item must be a child of @menu. @menu must be a
#GtkRecentChooserMenu.

This function has been written because the value returned by
gtk_recent_chooser_get_current_uri() is not updated when #GtkMenuItem's of a
#GtkRecentChooserMenu are selected/deselected.</doc>
      <source-position filename="../amtk/amtk-utils.h" line="29"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../amtk/amtk-utils.c"
             line="153">the URI of @item. Free with g_free() when no longer needed.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="menu" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="143">a #GtkRecentChooserMenu.</doc>
          <type name="Gtk.RecentChooserMenu" c:type="GtkRecentChooserMenu*"/>
        </parameter>
        <parameter name="item" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="144">a #GtkMenuItem.</doc>
          <type name="Gtk.MenuItem" c:type="GtkMenuItem*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_remove_mnemonic"
              c:identifier="amtk_utils_remove_mnemonic"
              version="5.0">
      <doc xml:space="preserve"
           filename="../amtk/amtk-utils.c"
           line="71">Removes the mnemonics from @str. Single underscores are removed, and two
consecutive underscores are replaced by one underscore (see the documentation
of gtk_label_new_with_mnemonic()).</doc>
      <source-position filename="../amtk/amtk-utils.h" line="24"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../amtk/amtk-utils.c"
             line="79">the new string with the mnemonics removed. Free
with g_free() when no longer needed.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../amtk/amtk-utils.c"
               line="73">a string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
