Blame docs/reference/gtk/migrating-GtkLinkButton.sgml

Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
Packit Service fb6fa5
]>
Packit Service fb6fa5
<chapter id="gtk-migrating-GtkLinkButton">
Packit Service fb6fa5
Packit Service fb6fa5
  <title>Migrating from GnomeHRef to GtkLinkButton</title>
Packit Service fb6fa5
Packit Service fb6fa5
  <para>
Packit Service fb6fa5
    Since version 2.10, GTK+ provides the #GtkLinkButton widget as a
Packit Service fb6fa5
    replacement for the <structname>GnomeHRef</structname> widget
Packit Service fb6fa5
    in the libgnomeui library.
Packit Service fb6fa5
  </para>
Packit Service fb6fa5
Packit Service fb6fa5
  <para>
Packit Service fb6fa5
    Porting an application from <structname>GnomeHRef</structname> to
Packit Service fb6fa5
    #GtkLinkButton is very simple. #GtkLinkButton does not have a
Packit Service fb6fa5
    default action for #GtkButton::clicked signal. So instead of simply 
Packit Service fb6fa5
    creating the widget
Packit Service fb6fa5
    <informalexample><programlisting>
Packit Service fb6fa5
      GtkWidget *button;
Packit Service fb6fa5
Packit Service fb6fa5
      button = gnome_href_new (url, "");
Packit Service fb6fa5
    </programlisting></informalexample>
Packit Service fb6fa5
    you will have to handle the activation of the #GtkLinkButton, using
Packit Service fb6fa5
    the ::clicked signal for instance
Packit Service fb6fa5
    <informalexample><programlisting>
Packit Service fb6fa5
      static void
Packit Service fb6fa5
      link_button_clicked_cb (GtkWidget *widget,
Packit Service fb6fa5
                              gpointer   data)
Packit Service fb6fa5
      {
Packit Service fb6fa5
        const gchar *link;
Packit Service fb6fa5
Packit Service fb6fa5
	link = gtk_link_button_get_uri (GTK_LINK_BUTTON (widget));
Packit Service fb6fa5
	open_browser_at_url (link);
Packit Service fb6fa5
      }
Packit Service fb6fa5
Packit Service fb6fa5
      /* ... */
Packit Service fb6fa5
      
Packit Service fb6fa5
        GtkWidget *button;
Packit Service fb6fa5
Packit Service fb6fa5
	button = gtk_link_button_new (url);
Packit Service fb6fa5
	g_signal_connect (button, "clicked",
Packit Service fb6fa5
	                  G_CALLBACK (link_button_clicked_cb), NULL);
Packit Service fb6fa5
     </programlisting></informalexample>
Packit Service fb6fa5
    If you have more than one #GtkLinkButton instead of connecting
Packit Service fb6fa5
    a signal to each one, you can use a "hook function" which will be
Packit Service fb6fa5
    called whenever a user activates a link button
Packit Service fb6fa5
    <informalexample><programlisting>
Packit Service fb6fa5
      static void
Packit Service fb6fa5
      link_button_hook (GtkLinkButton *button,
Packit Service fb6fa5
                        const gchar   *link,
Packit Service fb6fa5
			gpointer       user_data)
Packit Service fb6fa5
      
Packit Service fb6fa5
      {
Packit Service fb6fa5
        open_browser_at_url (link);
Packit Service fb6fa5
      }
Packit Service fb6fa5
      
Packit Service fb6fa5
      /* ... */
Packit Service fb6fa5
      
Packit Service fb6fa5
        GtkWidget *button1 = gtk_link_button_new (uri1);
Packit Service fb6fa5
	GtkWidget *button2 = gtk_link_button_new (uri2);
Packit Service fb6fa5
Packit Service fb6fa5
        gtk_link_button_set_uri_hook (link_button_hook, NULL, NULL);
Packit Service fb6fa5
    </programlisting></informalexample>
Packit Service fb6fa5
Packit Service fb6fa5
  </para>
Packit Service fb6fa5
Packit Service fb6fa5
  <para>
Packit Service fb6fa5
    Starting with GTK+ 2.16, it is no longer necessary to set up a uri hook
Packit Service fb6fa5
    manually, since GTK+ now defaults to calling gtk_show_uri() if no uri
Packit Service fb6fa5
    hook has been set.
Packit Service fb6fa5
  </para>
Packit Service fb6fa5
</chapter>
Packit Service fb6fa5
Packit Service fb6fa5
Packit Service fb6fa5
Local variables:
Packit Service fb6fa5
mode: sgml
Packit Service fb6fa5
sgml-parent-document: ("gtk-docs.sgml" "book" "part" "chapter")
Packit Service fb6fa5
End:
Packit Service fb6fa5
-->