<chapter id="gtk-migrating-GtkAboutDialog">

  <title>Migrating from GnomeAbout to GtkAboutDialog</title>

  <para>
    Since version 2.6, GTK+ provides the <link 
    linkend="GtkIconView">GtkAboutDialog</link> widget as a replacement for 
    the <structname>GnomeAbout</structname> dialog in the libgnomeui library.
  </para>

  <para>
    <link linkend="GtkIconView">GtkAboutDialog</link> supports all features 
    found in <structname>GnomeAbout</structname>. The 
    <structname>GtkAboutDialog</structname> API is bigger, since it follows 
    the GTK+ policy to have getters and setters for all widget properties, 
    but it isn't much more complex than <structname>GnomeAbout</structname>.
  </para>

  <para>
    To convert an application that uses <structname>GnomeAbout</structname> to 
    <structname>GtkAboutDialog</structname>, as a first step, replace calls 
    like
    <informalexample><programlisting>
    const gchar *documentors[] = { 
      "Documenter 1", 
      "Documenter 2", 
      NULL 
    };

    const gchar *documentors[] = { 
      "Author 1", 
      "Author 2", 
      NULL 
    };

    GtkWidget *about = gnome_about_new ("GNOME Test Program", VERSION,
					"(C) 1998-2001 The Free Software Foundation",
					"Program to display GNOME functions.",
					authors,
					documenters,
					_("translator-credits"),
					"logo.png");
    </programlisting></informalexample>
    by something like 
    <informalexample><programlisting>
    GdkPixbuf *logo = gdk_pixbuf_new_from_file ("logo.png", NULL);
    GtkWidget *about = g_object_new (GTK_TYPE_ABOUT_DIALOG,
                                     "name", "GNOME Test Program", 
                                     "version", VERSION,
			             "copyright", "(C) 1998-2001 The Free Software Foundation",
				     "comments", "Program to display GNOME functions.",
			             "authors", authors,
			             "documenters", documenters,
			             "translator-credits", _("translator-credits"),
				     "logo", logo,
                                     NULL);
    g_object_unref (pixbuf);
    </programlisting></informalexample>
    If the <link linkend="g-object-new"><function>g_object_new()</function></link> construction scares you, 
    you can also use <link linkend="g-object-new"><function>gtk_about_dialog_new()</function></link> to
    construct the dialog and then use the setters for the individual properties.
  </para>

  <para>
    Once you are done with the initial conversion, you may want to look into 
    using some of the features of <structname>GtkAboutDialog</structname> 
    which are not present in <structname>GnomeAbout</structname>.
    <itemizedlist>
      <listitem><para>
        You can specify license information with the 
        <link linkend="GtkAboutDialog--license">license</link> property
      </para></listitem>
      <listitem><para>
        You can add separate credits for artists with the 
        <link linkend="GtkAboutDialog--artists">artists</link> property
      </para></listitem>
      <listitem><para>
        You can add a pointer to the website of your application, using the 
        <link linkend="GtkAboutDialog--website">website</link> and
        <link linkend="GtkAboutDialog--website-label">website-label</link> 
        properties.
      </para></listitem>
      <listitem><para>
        If your credits contain email addresses or URLs, you can turn them 
        into clickable links using 
        <link linkend="gtk-about-dialog-set-email-hook"><function>gtk_about_dialog_set_email_hook()</function></link> and 
        <link linkend="gtk-about-dialog-set-url-hook"><function>gtk_about_dialog_set_url_hook()</function></link>. 
      </para></listitem>   
    </itemizedlist>
  </para>
</chapter>

<!--
Local variables:
mode: sgml
sgml-parent-document: ("gtk-docs.sgml" "book" "part" "chapter")
End:
-->
