[gnome-initial-setup] assistant: Replace "prepare" signal with a GisPage vfunc
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup] assistant: Replace "prepare" signal with a GisPage vfunc
- Date: Sun, 16 Jun 2013 03:28:59 +0000 (UTC)
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]