⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 migrating-gtkassistant.sgml

📁 This GTK+ version 2.12.3. GTK+ is a multi-platform toolkit for creating graphical user interfaces.
💻 SGML
字号:
<chapter id="gtk-migrating-GtkAssistant">  <chapterinfo>    <author>      <firstname>Carlos</firstname>      <surname>Garnacho</surname>      <affiliation>	<address>	  <email>carlosg@gnome.org</email>	</address>      </affiliation>    </author>  </chapterinfo>  <title>Migrating from GnomeDruid to GtkAssistant</title>  <para>    Since version 2.10, GTK+ provides the GtkAssistant widget as a replacement    for the <structname>GnomeDruid</structname> widget in the libgnomeui     library.  </para>  <para>    Conceptually, both <structname>GtkAssistant</structname> and    <structname>GnomeDruid</structname> do the same task, but there are     several areas where the API has been completely redesigned, so this     chapter covers the main changes between both widgets.  </para>  <section id="inserting-pages">    <title>Inserting pages</title>    <para>      <structname>GnomeDruid</structname> was implemented as a container for	 <structname>GnomeDruidPage</structname> abstract objects, which are         implemented by the <structname>GnomeDruidPageEdge</structname> and          <structname>GnomeDruidPageStandard</structname> widgets. Instead,          <structname>GtkAssistant</structname> allows any widget to be a page,          and implements per-page settings (such as page type or title) as          child properties. So instead of:    </para>    <programlisting>/* Page 1 */page = gnome_druid_page_edge_new (GNOME_EDGE_START);gnome_druid_page_edge_set_test (GNOME_DRUID_PAGE_EDGE (page),                                "Welcome to the assistant, it will make your life easier");gtk_widget_show (page);gnome_druid_append_page (GNOME_DRUID (druid), GNOME_DRUID_PAGE (page));/* Page 2 */page = gnome_druid_page_standard_new ();gtk_container_add (GTK_CONTAINER (GNOME_DRUID_PAGE_STANDARD (page)->vbox,                   create_page1 ());gtk_widget_show_all (page);gnome_druid_append_page (GNOME_DRUID (druid), GNOME_DRUID_PAGE (page));/* Page 3 */page = gnome_druid_page_edge_new (GNOME_EDGE_FINISH);gnome_druid_page_edge_set_test (GNOME_DRUID_PAGE_EDGE (page),                                "Now you are done, your life is easier");gtk_widget_show (page);gnome_druid_append_page (GNOME_DRUID (druid), GNOME_DRUID_PAGE (page));    </programlisting>    <para>      You have to write:    </para>    <programlisting>gtk_assistant_append_page (GTK_ASSISTANT (assistant),                           gtk_label_new ("Welcome to the assistant, it will make your life easier"));gtk_assistant_append_page (GTK_ASSISTANT (assistant),                           create_page1 ());gtk_assistant_append_page (GTK_ASSISTANT (assistant),                           gtk_label_new ("Now you are done, your life is easier");    </programlisting>  </section>  <section id="decorating-the-assistant-pages">    <title>Decorating the assistant pages</title>    <para>      To decorate your assistant pages, <structname>GtkAssistant</structname> provides similar functions	 to <structname>GnomeDruid</structname>, so you have to transform code like this:    </para>    <programlisting>gnome_druid_page_edge_set_title (GNOME_DRUID_PAGE_EDGE (page), "Welcome");gnome_druid_page_edge_set_logo (GNOME_DRUID_PAGE_EDGE (page), logo_pixbuf);gnome_druid_page_edge_set_watermark (GNOME_DRUID_PAGE_EDGE (page), watermark_pixbuf);    </programlisting>    <para>    Into this:    </para>    <programlisting>gtk_assistant_set_page_title (GTK_ASSISTANT (assistant), page_widget, "Welcome");gtk_assistant_set_page_header_image (GTK_ASSISTANT (assistant), page_widget, logo_pixbuf);gtk_assistant_set_page_side_image (GTK_ASSISTANT (assistant), page_widget, watermark_pixbuf);    </programlisting>    <para>      Where page_widget is the widget used as a page.    </para>  </section>  <section id="setting-the-page-flow">    <title>Setting the page flow</title>    <para>      Here is the area where <structname>GtkAssistant</structname> and <structname>GnomeDruid</structname>	 differ the most. While <structname>GnomeDruid</structname> used the "next" and "back" signals from the 	 <structname>GnomeDruidPage</structname>, <structname>GtkAssistant</structname> uses the following	 techniques:    </para>    <itemizedlist>      <listitem>	   <para>gtk_assistant_set_forward_page_func (): Allows to define a GtkAssistantPageFunc to let the	   assistant know which will be the following page given the current page.</para>      </listitem>      <listitem>	   <para>gtk_assistant_set_page_complete (): Lets the assistant know whether the specified page is complete	   or not, updating buttons state accordingly.</para>      </listitem>      <listitem>	   <para>gtk_assistant_set_page_type (): Lets the assistant know the page role and update the buttons	   state accordingly. Pages can have the following roles:</para>	   <simplelist>	     <member>Intro</member>		<member>Content</member>		<member>Progress</member>		<member>Confirmation</member>		<member>Summary</member>	   </simplelist>      </listitem>    </itemizedlist>    <para>      A sample GtkAssistantPageFunc could look like this:    </para>    <programlisting>static gintforward_page_function (gint     current_page,                       gpointer data){  switch (current_page)    {    case 0:      return 1;    case 1:      if (check_page1_data ())	   return 2;	 else	   return 3;    case 2:      return 3;    default:      return -1;    }}    </programlisting>  </section></chapter><!--Local variables:mode: sgmlsgml-parent-document: ("gtk-docs.sgml" "book" "part" "chapter")End:-->

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -