[gnome-initial-setup] assistant: Replace "prepare" signal with a GisPage vfunc



commit 1820b67e8d77aa3046935b3925eb2775f04e516c
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Sat Jun 15 01:13:59 2013 -0400

    assistant: Replace "prepare" signal with a GisPage vfunc

 gnome-initial-setup/gis-assistant.c                |   48 +++++---------------
 gnome-initial-setup/gis-assistant.h                |    1 -
 gnome-initial-setup/gis-page.c                     |    7 +++
 gnome-initial-setup/gis-page.h                     |    2 +
 .../pages/summary/gis-summary-page.c               |   21 +++------
 5 files changed, 27 insertions(+), 52 deletions(-)
---
diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c
index 0e98a28..7ebbe3a 100644
--- a/gnome-initial-setup/gis-assistant.c
+++ b/gnome-initial-setup/gis-assistant.c
@@ -45,7 +45,6 @@ enum {
 static GParamSpec *obj_props[PROP_LAST];
 
 enum {
-  PREPARE,
   NEXT_PAGE,
   LAST_SIGNAL,
 };
@@ -271,15 +270,6 @@ update_applying_state (GisAssistant *assistant)
 }
 
 static void
-gis_assistant_real_prepare (GisAssistant *assistant,
-                            GisPage      *page)
-{
-  update_action_widget (assistant);
-  update_navigation_buttons (assistant);
-  update_progress_indicator (assistant);
-}
-
-static void
 page_notify (GisPage      *page,
              GParamSpec   *pspec,
              GisAssistant *assistant)
@@ -377,12 +367,17 @@ _gis_assistant_current_page_changed (GisAssistant *assistant,
 {
   GisAssistantPrivate *priv = assistant->priv;
 
-  if (priv->current_page != page) {
-    priv->current_page = page;
-    update_applying_state (assistant);
-    g_object_notify_by_pspec (G_OBJECT (assistant), obj_props[PROP_TITLE]);
-    g_signal_emit (assistant, signals[PREPARE], 0, page);
-  }
+  if (priv->current_page == page)
+    return;
+
+  priv->current_page = page;
+  g_object_notify_by_pspec (G_OBJECT (assistant), obj_props[PROP_TITLE]);
+
+  update_applying_state (assistant);
+  update_action_widget (assistant);
+  update_navigation_buttons (assistant);
+  update_progress_indicator (assistant);
+  gis_page_shown (page);
 }
 
 void
@@ -506,7 +501,6 @@ gis_assistant_class_init (GisAssistantClass *klass)
 
   gobject_class->get_property = gis_assistant_get_property;
 
-  klass->prepare = gis_assistant_real_prepare;
   klass->next_page = gis_assistant_real_next_page;
 
   obj_props[PROP_TITLE] =
@@ -532,24 +526,4 @@ gis_assistant_class_init (GisAssistantClass *klass)
                   G_STRUCT_OFFSET (GisAssistantClass, next_page),
                   NULL, NULL, NULL,
                   G_TYPE_NONE, 1, GIS_TYPE_PAGE);
-
-  /**
-   * GisAssistant::prepare:
-   * @assistant: the #GisAssistant
-   * @page: the current page
-   *
-   * The ::prepare signal is emitted when a new page is set as the
-   * assistant's current page, before making the new page visible.
-   *
-   * A handler for this signal can do any preparations which are
-   * necessary before showing @page.
-   */
-  signals[PREPARE] =
-    g_signal_new ("prepare",
-                  G_TYPE_FROM_CLASS (gobject_class),
-                  G_SIGNAL_RUN_LAST,
-                  G_STRUCT_OFFSET (GisAssistantClass, prepare),
-                  NULL, NULL, NULL,
-                  G_TYPE_NONE, 1, GIS_TYPE_PAGE);
-
 }
diff --git a/gnome-initial-setup/gis-assistant.h b/gnome-initial-setup/gis-assistant.h
index 5544076..3c93765 100644
--- a/gnome-initial-setup/gis-assistant.h
+++ b/gnome-initial-setup/gis-assistant.h
@@ -55,7 +55,6 @@ struct _GisAssistantClass
 {
   GtkBoxClass parent_class;
 
-  void (* prepare) (GisAssistant *assistant, GisPage *page);
   void (* next_page) (GisAssistant *assistant, GisPage *page);
 
   void (* switch_to) (GisAssistant *assistant, GisAssistantDirection direction, GisPage *page);
diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c
index fd0529e..2596f0a 100644
--- a/gnome-initial-setup/gis-page.c
+++ b/gnome-initial-setup/gis-page.c
@@ -342,3 +342,10 @@ gis_page_save_data (GisPage *page)
   if (GIS_PAGE_GET_CLASS (page)->save_data)
     return GIS_PAGE_GET_CLASS (page)->save_data (page);
 }
+
+void
+gis_page_shown (GisPage *page)
+{
+  if (GIS_PAGE_GET_CLASS (page)->shown)
+    return GIS_PAGE_GET_CLASS (page)->shown (page);
+}
diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h
index b373d8e..25775e7 100644
--- a/gnome-initial-setup/gis-page.h
+++ b/gnome-initial-setup/gis-page.h
@@ -66,6 +66,7 @@ struct _GisPageClass
   void         (*apply) (GisPage *page,
                          GCancellable *cancellable);
   void         (*save_data) (GisPage *page);
+  void         (*shown) (GisPage *page);
 };
 
 GType gis_page_get_type (void);
@@ -81,6 +82,7 @@ void         gis_page_apply_cancel (GisPage *page);
 void         gis_page_apply_complete (GisPage *page, gboolean valid);
 gboolean     gis_page_get_applying (GisPage *page);
 void         gis_page_save_data (GisPage *page);
+void         gis_page_shown (GisPage *page);
 
 G_END_DECLS
 
diff --git a/gnome-initial-setup/pages/summary/gis-summary-page.c 
b/gnome-initial-setup/pages/summary/gis-summary-page.c
index d69a795..789e64c 100644
--- a/gnome-initial-setup/pages/summary/gis-summary-page.c
+++ b/gnome-initial-setup/pages/summary/gis-summary-page.c
@@ -262,20 +262,15 @@ done_cb (GtkButton *button, GisSummaryPage *page)
 }
 
 static void
-prepare_cb (GisAssistant   *assistant,
-            GisPage        *which_page,
-            GisSummaryPage *this_page)
+gis_summary_page_shown (GisPage *page)
 {
-  if (GIS_PAGE (which_page) == GIS_PAGE (this_page))
-    {
-      GisSummaryPagePrivate *priv = this_page->priv;
+  GisSummaryPagePrivate *priv = GIS_SUMMARY_PAGE (page)->priv;
 
-      gis_driver_save_data (GIS_PAGE (this_page)->driver);
+  gis_driver_save_data (GIS_PAGE (page)->driver);
 
-      gis_driver_get_user_permissions (GIS_PAGE (this_page)->driver,
-                                       &priv->user_account,
-                                       &priv->user_password);
-    }
+  gis_driver_get_user_permissions (GIS_PAGE (page)->driver,
+                                   &priv->user_account,
+                                   &priv->user_password);
 }
 
 static GtkBuilder *
@@ -305,14 +300,11 @@ static void
 gis_summary_page_constructed (GObject *object)
 {
   GisSummaryPage *page = GIS_SUMMARY_PAGE (object);
-  GisAssistant *assistant = gis_driver_get_assistant (GIS_PAGE (page)->driver);
 
   G_OBJECT_CLASS (gis_summary_page_parent_class)->constructed (object);
 
   gtk_container_add (GTK_CONTAINER (page), WID ("summary-page"));
 
-  g_signal_connect_object (assistant, "prepare", G_CALLBACK (prepare_cb), page, 0);
-
   g_signal_connect (WID("summary-start-button"), "clicked", G_CALLBACK (done_cb), page);
 
   gis_page_set_complete (GIS_PAGE (page), TRUE);
@@ -335,6 +327,7 @@ gis_summary_page_class_init (GisSummaryPageClass *klass)
   page_class->page_id = PAGE_ID;
   page_class->get_builder = gis_summary_page_get_builder;
   page_class->locale_changed = gis_summary_page_locale_changed;
+  page_class->shown = gis_summary_page_shown;
   object_class->constructed = gis_summary_page_constructed;
 
   g_type_class_add_private (object_class, sizeof(GisSummaryPagePrivate));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]