[gnome-initial-setup/shell/4765: 246/362] Allow custom "Next" button per page
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup/shell/4765: 246/362] Allow custom "Next" button per page
- Date: Thu, 19 Mar 2015 01:41:45 +0000 (UTC)
commit 81340850aee55584074e42d6a791f340a5e99abd
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date: Wed Sep 24 13:59:26 2014 +0200
Allow custom "Next" button per page
Allow pages to set a custom text for the forward button, instead of
default "Next"
[endlessm/eos-shell#3594]
gnome-initial-setup/gis-assistant.c | 16 +++++++++++++++-
gnome-initial-setup/gis-page.c | 28 ++++++++++++++++++++++++++++
gnome-initial-setup/gis-page.h | 2 ++
3 files changed, 45 insertions(+), 1 deletions(-)
---
diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c
index 5807d46..8ad7960 100644
--- a/gnome-initial-setup/gis-assistant.c
+++ b/gnome-initial-setup/gis-assistant.c
@@ -279,6 +279,19 @@ update_titlebar (GisAssistant *assistant)
}
static void
+update_forward_button (GisAssistant *assistant)
+{
+ const char *forward_text = NULL;
+ GisAssistantPrivate *priv = gis_assistant_get_instance_private (assistant);
+
+ if (priv->current_page != NULL) {
+ forward_text = gis_page_get_forward_text (priv->current_page);
+ }
+
+ gtk_button_set_label (GTK_BUTTON (priv->forward), forward_text ? forward_text : _("_Next"));
+}
+
+static void
page_notify (GisPage *page,
GParamSpec *pspec,
GisAssistant *assistant)
@@ -387,6 +400,7 @@ update_current_page (GisAssistant *assistant,
g_object_notify_by_pspec (G_OBJECT (assistant), obj_props[PROP_TITLE]);
update_titlebar (assistant);
+ update_forward_button (assistant);
update_applying_state (assistant);
update_navigation_buttons (assistant);
update_progress_indicator (assistant);
@@ -412,7 +426,7 @@ gis_assistant_locale_changed (GisAssistant *assistant)
GisAssistantPrivate *priv = gis_assistant_get_instance_private (assistant);
GList *l;
- gtk_button_set_label (GTK_BUTTON (priv->forward), _("_Next"));
+ update_forward_button (assistant);
gtk_button_set_label (GTK_BUTTON (priv->back), _("_Previous"));
gtk_button_set_label (GTK_BUTTON (priv->cancel), _("_Cancel"));
diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c
index a578470..7f2d8a1 100644
--- a/gnome-initial-setup/gis-page.c
+++ b/gnome-initial-setup/gis-page.c
@@ -30,6 +30,7 @@
struct _GisPagePrivate
{
char *title;
+ char *forward_text;
gboolean applying;
GCancellable *apply_cancel;
@@ -48,6 +49,7 @@ enum
PROP_0,
PROP_DRIVER,
PROP_TITLE,
+ PROP_FORWARD_TEXT,
PROP_COMPLETE,
PROP_APPLYING,
PROP_LAST,
@@ -71,6 +73,9 @@ gis_page_get_property (GObject *object,
case PROP_TITLE:
g_value_set_string (value, priv->title);
break;
+ case PROP_FORWARD_TEXT:
+ g_value_set_string (value, priv->forward_text);
+ break;
case PROP_COMPLETE:
g_value_set_boolean (value, priv->complete);
break;
@@ -99,6 +104,9 @@ gis_page_set_property (GObject *object,
case PROP_TITLE:
gis_page_set_title (page, (char *) g_value_get_string (value));
break;
+ case PROP_FORWARD_TEXT:
+ gis_page_set_forward_text (page, (char *) g_value_get_string (value));
+ break;
case PROP_COMPLETE:
priv->complete = g_value_get_boolean (value);
break;
@@ -115,6 +123,7 @@ gis_page_finalize (GObject *object)
GisPagePrivate *priv = gis_page_get_instance_private (page);
g_free (priv->title);
+ g_free (priv->forward_text);
g_assert (!priv->applying);
g_assert (priv->apply_cb == NULL);
g_assert (priv->apply_cancel == NULL);
@@ -210,6 +219,9 @@ gis_page_class_init (GisPageClass *klass)
obj_props[PROP_TITLE] =
g_param_spec_string ("title", "", "", "",
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE);
+ obj_props[PROP_FORWARD_TEXT] =
+ g_param_spec_string ("forward-text", "", "", NULL,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE);
obj_props[PROP_COMPLETE] =
g_param_spec_boolean ("complete", "", "", FALSE,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE);
@@ -244,6 +256,22 @@ gis_page_set_title (GisPage *page, char *title)
g_object_notify_by_pspec (G_OBJECT (page), obj_props[PROP_TITLE]);
}
+const char *
+gis_page_get_forward_text (GisPage *page)
+{
+ GisPagePrivate *priv = gis_page_get_instance_private (page);
+ return priv->forward_text;
+}
+
+void
+gis_page_set_forward_text (GisPage *page, const char *text)
+{
+ GisPagePrivate *priv = gis_page_get_instance_private (page);
+ g_clear_pointer (&priv->forward_text, g_free);
+ priv->forward_text = g_strdup (text);
+ g_object_notify_by_pspec (G_OBJECT (page), obj_props[PROP_FORWARD_TEXT]);
+}
+
gboolean
gis_page_get_complete (GisPage *page)
{
diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h
index 7c25c98..4f8a07f 100644
--- a/gnome-initial-setup/gis-page.h
+++ b/gnome-initial-setup/gis-page.h
@@ -71,6 +71,8 @@ GType gis_page_get_type (void);
char * gis_page_get_title (GisPage *page);
void gis_page_set_title (GisPage *page, char *title);
+const char * gis_page_get_forward_text (GisPage *page);
+void gis_page_set_forward_text (GisPage *page, const char *text);
gboolean gis_page_get_complete (GisPage *page);
void gis_page_set_complete (GisPage *page, gboolean complete);
GtkWidget * gis_page_get_action_widget (GisPage *page);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]