+#include "gtkmarshalers.h"
+#include "gtktoggleaction.h"
+#include "gtkactivatable.h"
+#include "gtkprivate.h"
+#include "gtkintl.h"
+#include "a11y/gtktogglebuttonaccessible.h"
+
+
+/**
+ * SECTION:gtktogglebutton
+ * @Short_description: Create buttons which retain their state
+ * @Title: GtkToggleButton
+ * @See_also: #GtkButton, #GtkCheckButton, #GtkCheckMenuItem
+ *
+ * A #GtkToggleButton is a #GtkButton which will remain 'pressed-in' when
+ * clicked. Clicking again will cause the toggle button to return to its
+ * normal state.
+ *
+ * A toggle button is created by calling either gtk_toggle_button_new() or
+ * gtk_toggle_button_new_with_label(). If using the former, it is advisable to
+ * pack a widget, (such as a #GtkLabel and/or a #GtkImage), into the toggle
+ * button's container. (See #GtkButton for more information).
+ *
+ * The state of a #GtkToggleButton can be set specifically using
+ * gtk_toggle_button_set_active(), and retrieved using
+ * gtk_toggle_button_get_active().
+ *
+ * To simply switch the state of a toggle button, use gtk_toggle_button_toggled().
+ *
+ * <example>
+ * <title>Creating two #GtkToggleButton widgets.</title>
+ * <programlisting>
+ * void make_toggles (void) {
+ * GtkWidget *dialog, *toggle1, *toggle2;
+ *
+ * dialog = gtk_dialog_new (<!-- -->);
+ * toggle1 = gtk_toggle_button_new_with_label ("Hi, i'm a toggle button.");
+ *
+ * // Makes this toggle button invisible
+ * gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (toggle1), TRUE);
+ *
+ * g_signal_connect (toggle1, "toggled",
+ * G_CALLBACK (output_state), NULL);
+ * gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
+ * toggle1, FALSE, FALSE, 2);
+ *
+ * toggle2 = gtk_toggle_button_new_with_label ("Hi, i'm another toggle button.");
+ * gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (toggle2), FALSE);
+ * g_signal_connect (toggle2, "toggled",
+ * G_CALLBACK (output_state), NULL);
+ * gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
+ * toggle2, FALSE, FALSE, 2);
+ *
+ * gtk_widget_show_all (dialog);
+ * }
+ * </programlisting>
+ * </example>
+ */