[gnome-initial-setup/shell/4765: 246/362] Allow custom "Next" button per page



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]