+/**
+ * gtk_about_dialog_set_license_type:
+ * @about: a #GtkAboutDialog
+ * @license_type: the type of license
+ *
+ * Sets the license of the application showing the @about dialog from a
+ * list of known licenses.
+ *
+ * This function overrides the license set using
+ * gtk_about_dialog_set_license().
+ *
+ * Since: 3.0
+ */
+void
+gtk_about_dialog_set_license_type (GtkAboutDialog *about,
+ GtkLicense license_type)
+{
+ GtkAboutDialogPrivate *priv;
+
+ g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
+ g_return_if_fail (license_type >= GTK_LICENSE_UNKNOWN &&
+ license_type <= GTK_LICENSE_ARTISTIC);
+
+ priv = about->priv;
+
+ if (priv->license_type != license_type)
+ {
+ g_object_freeze_notify (G_OBJECT (about));
+
+ priv->license_type = license_type;
+
+ /* custom licenses use the contents of the :license property */
+ if (priv->license_type != GTK_LICENSE_CUSTOM)
+ {
+ const gchar *url;
+ gchar *license_string;
+ GString *str;
+
+ url = gtk_license_urls[priv->license_type];
+ if (url == NULL)
+ url = priv->website_url;
+
+ str = g_string_sized_new (256);
+ g_string_append_printf (str, _(gtk_license_preamble), url, url);
+
+ g_free (priv->license);
+ priv->license = g_string_free (str, FALSE);
+ priv->wrap_license = TRUE;
+
+ license_string = g_strdup_printf ("<span size=\"small\">%s</span>",
+ priv->license);
+ gtk_label_set_markup (GTK_LABEL (priv->license_label), license_string);
+ g_free (license_string);
+ gtk_widget_show (priv->license_label);
+
+ update_license_button_visibility (about);
+
+ g_object_notify (G_OBJECT (about), "wrap-license");
+ g_object_notify (G_OBJECT (about), "license");
+ }
+ else
+ {
+ gtk_widget_show (priv->license_label);
+ }
+
+ g_object_notify (G_OBJECT (about), "license-type");
+
+ g_object_thaw_notify (G_OBJECT (about));
+ }
+}
+
+/**
+ * gtk_about_dialog_get_license_type:
+ * @about: a #GtkAboutDialog
+ *
+ * Retrieves the license set using gtk_about_dialog_set_license_type()
+ *
+ * Return value: a #GtkLicense value
+ *
+ * Since: 3.0
+ */
+GtkLicense
+gtk_about_dialog_get_license_type (GtkAboutDialog *about)
+{
+ g_return_val_if_fail (GTK_IS_ABOUT_DIALOG (about), GTK_LICENSE_UNKNOWN);
+
+ return about->priv->license_type;
+}
+
+/**
+ * gtk_about_dialog_add_credit_section:
+ * @about: A #GtkAboutDialog
+ * @section_name: The name of the section
+ * @people: (array zero-terminated=1): The people who belong to that section
+ *
+ * Creates a new section in the Credits page.
+ *
+ * Since: 3.4
+ */
+void
+gtk_about_dialog_add_credit_section (GtkAboutDialog *about,
+ const gchar *section_name,
+ const gchar **people)
+{
+ GtkAboutDialogPrivate *priv;
+ CreditSection *new_entry;
+
+ g_return_if_fail (GTK_IS_ABOUT_DIALOG (about));
+ g_return_if_fail (section_name != NULL);
+ g_return_if_fail (people != NULL);
+
+ priv = about->priv;
+
+ new_entry = g_slice_new (CreditSection);
+ new_entry->heading = g_strdup ((gchar *)section_name);
+ new_entry->people = g_strdupv ((gchar **)people);
+
+ priv->credit_sections = g_slist_append (priv->credit_sections, new_entry);
+ update_credits_button_visibility (about);
+}