|
|
599f22 |
From de07cbc69b8f64b1a7708f454f029814d3c48b10 Mon Sep 17 00:00:00 2001
|
|
|
599f22 |
From: Michael Catanzaro <mcatanzaro@igalia.com>
|
|
|
599f22 |
Date: Thu, 15 Feb 2018 21:08:38 -0600
|
|
|
599f22 |
Subject: [PATCH] Reduce initial setup redundancy
|
|
|
599f22 |
|
|
|
599f22 |
This contains patches from these bugs:
|
|
|
599f22 |
|
|
|
599f22 |
https://bugzilla.gnome.org/show_bug.cgi?id=793501
|
|
|
599f22 |
https://bugzilla.gnome.org/show_bug.cgi?id=794166
|
|
|
599f22 |
|
|
|
599f22 |
modified a bit to not conflict with each other.
|
|
|
599f22 |
|
|
|
599f22 |
This is a combination of work by Peng Wu and Michael Catanzaro.
|
|
|
599f22 |
---
|
|
|
599f22 |
gnome-initial-setup/gis-assistant.c | 3 +-
|
|
|
599f22 |
gnome-initial-setup/gis-page.c | 8 +
|
|
|
599f22 |
gnome-initial-setup/gis-page.h | 2 +
|
|
|
599f22 |
gnome-initial-setup/gnome-initial-setup.c | 77 +++++++--
|
|
|
599f22 |
.../pages/account/gis-account-page.h | 2 -
|
|
|
599f22 |
.../pages/account/gis-account-pages.c | 9 +-
|
|
|
599f22 |
.../pages/account/gis-account-pages.h | 2 +-
|
|
|
599f22 |
gnome-initial-setup/pages/eulas/gis-eula-pages.c | 16 +-
|
|
|
599f22 |
gnome-initial-setup/pages/eulas/gis-eula-pages.h | 2 +-
|
|
|
599f22 |
gnome-initial-setup/pages/goa/gis-goa-page.c | 9 +-
|
|
|
599f22 |
gnome-initial-setup/pages/goa/gis-goa-page.h | 2 +-
|
|
|
599f22 |
.../pages/keyboard/gis-keyboard-page.c | 185 ++++++++++++++++-----
|
|
|
599f22 |
.../pages/keyboard/gis-keyboard-page.h | 2 +-
|
|
|
599f22 |
.../pages/language/gis-language-page.c | 24 ++-
|
|
|
599f22 |
.../pages/language/gis-language-page.h | 3 +-
|
|
|
599f22 |
.../pages/language/gis-language-page.ui | 4 +-
|
|
|
599f22 |
.../pages/network/gis-network-page.c | 9 +-
|
|
|
599f22 |
.../pages/network/gis-network-page.h | 2 +-
|
|
|
599f22 |
.../pages/password/gis-password-page.c | 9 +-
|
|
|
599f22 |
.../pages/password/gis-password-page.h | 2 +-
|
|
|
599f22 |
.../pages/privacy/gis-privacy-page.c | 9 +-
|
|
|
599f22 |
.../pages/privacy/gis-privacy-page.h | 2 +-
|
|
|
599f22 |
gnome-initial-setup/pages/region/gis-region-page.c | 9 +-
|
|
|
599f22 |
gnome-initial-setup/pages/region/gis-region-page.h | 2 +-
|
|
|
599f22 |
.../pages/software/gis-software-page.c | 14 +-
|
|
|
599f22 |
.../pages/software/gis-software-page.h | 2 +-
|
|
|
599f22 |
.../pages/summary/gis-summary-page.c | 9 +-
|
|
|
599f22 |
.../pages/summary/gis-summary-page.h | 2 +-
|
|
|
599f22 |
.../pages/timezone/gis-timezone-page.c | 9 +-
|
|
|
599f22 |
.../pages/timezone/gis-timezone-page.h | 2 +-
|
|
|
599f22 |
30 files changed, 296 insertions(+), 136 deletions(-)
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/gis-assistant.c b/gnome-initial-setup/gis-assistant.c
|
|
|
599f22 |
index 37ed563..0a3bd05 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/gis-assistant.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/gis-assistant.c
|
|
|
599f22 |
@@ -302,7 +302,8 @@ gis_assistant_add_page (GisAssistant *assistant,
|
|
|
599f22 |
|
|
|
599f22 |
gtk_container_add (GTK_CONTAINER (priv->stack), GTK_WIDGET (page));
|
|
|
599f22 |
|
|
|
599f22 |
- if (priv->current_page->assistant_priv->link == link->prev)
|
|
|
599f22 |
+ if (priv->current_page &&
|
|
|
599f22 |
+ priv->current_page->assistant_priv->link == link->prev)
|
|
|
599f22 |
update_navigation_buttons (assistant);
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/gis-page.c b/gnome-initial-setup/gis-page.c
|
|
|
599f22 |
index e28f573..8564935 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/gis-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/gis-page.c
|
|
|
599f22 |
@@ -382,3 +382,11 @@ gis_page_shown (GisPage *page)
|
|
|
599f22 |
if (GIS_PAGE_GET_CLASS (page)->shown)
|
|
|
599f22 |
GIS_PAGE_GET_CLASS (page)->shown (page);
|
|
|
599f22 |
}
|
|
|
599f22 |
+
|
|
|
599f22 |
+gboolean
|
|
|
599f22 |
+gis_page_skip (GisPage *page)
|
|
|
599f22 |
+{
|
|
|
599f22 |
+ if (GIS_PAGE_GET_CLASS (page)->skip)
|
|
|
599f22 |
+ return GIS_PAGE_GET_CLASS (page)->skip (page);
|
|
|
599f22 |
+ return TRUE;
|
|
|
599f22 |
+}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/gis-page.h b/gnome-initial-setup/gis-page.h
|
|
|
599f22 |
index 02e3085..1f11578 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/gis-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/gis-page.h
|
|
|
599f22 |
@@ -60,6 +60,7 @@ struct _GisPageClass
|
|
|
599f22 |
GCancellable *cancellable);
|
|
|
599f22 |
void (*save_data) (GisPage *page);
|
|
|
599f22 |
void (*shown) (GisPage *page);
|
|
|
599f22 |
+ gboolean (*skip) (GisPage *page);
|
|
|
599f22 |
};
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_page_get_type (void);
|
|
|
599f22 |
@@ -80,6 +81,7 @@ void gis_page_apply_complete (GisPage *page, gboolean valid);
|
|
|
599f22 |
gboolean gis_page_get_applying (GisPage *page);
|
|
|
599f22 |
void gis_page_save_data (GisPage *page);
|
|
|
599f22 |
void gis_page_shown (GisPage *page);
|
|
|
599f22 |
+gboolean gis_page_skip (GisPage *page);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/gnome-initial-setup.c b/gnome-initial-setup/gnome-initial-setup.c
|
|
|
599f22 |
index 5a988a3..4558810 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/gnome-initial-setup.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/gnome-initial-setup.c
|
|
|
599f22 |
@@ -50,11 +50,15 @@
|
|
|
599f22 |
#include "pages/summary/gis-summary-page.h"
|
|
|
599f22 |
|
|
|
599f22 |
#define VENDOR_PAGES_GROUP "pages"
|
|
|
599f22 |
-#define VENDOR_PAGES_SKIP_KEY "skip"
|
|
|
599f22 |
+#define VENDOR_SKIP_KEY "skip"
|
|
|
599f22 |
+#define VENDOR_NEW_USER_ONLY_KEY "new_user_only"
|
|
|
599f22 |
+#define VENDOR_EXISTING_USER_ONLY_KEY "existing_user_only"
|
|
|
599f22 |
|
|
|
599f22 |
static gboolean force_existing_user_mode;
|
|
|
599f22 |
|
|
|
599f22 |
-typedef void (*PreparePage) (GisDriver *driver);
|
|
|
599f22 |
+static GPtrArray *skipped_pages;
|
|
|
599f22 |
+
|
|
|
599f22 |
+typedef GisPage *(*PreparePage) (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
typedef struct {
|
|
|
599f22 |
const gchar *page_id;
|
|
|
599f22 |
@@ -101,21 +105,40 @@ should_skip_page (GisDriver *driver,
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
static gchar **
|
|
|
599f22 |
-pages_to_skip_from_file (void)
|
|
|
599f22 |
+strv_append (gchar **a,
|
|
|
599f22 |
+ gchar **b)
|
|
|
599f22 |
+{
|
|
|
599f22 |
+ guint n = g_strv_length (a);
|
|
|
599f22 |
+ guint m = g_strv_length (b);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ a = g_renew (gchar *, a, n + m + 1);
|
|
|
599f22 |
+ for (guint i = 0; i < m; i++)
|
|
|
599f22 |
+ a[n + i] = g_strdup (b[i]);
|
|
|
599f22 |
+ a[n + m] = NULL;
|
|
|
599f22 |
+
|
|
|
599f22 |
+ return a;
|
|
|
599f22 |
+}
|
|
|
599f22 |
+
|
|
|
599f22 |
+static gchar **
|
|
|
599f22 |
+pages_to_skip_from_file (gboolean is_new_user)
|
|
|
599f22 |
{
|
|
|
599f22 |
GKeyFile *skip_pages_file;
|
|
|
599f22 |
gchar **skip_pages = NULL;
|
|
|
599f22 |
+ gchar **additional_skip_pages = NULL;
|
|
|
599f22 |
GError *error = NULL;
|
|
|
599f22 |
|
|
|
599f22 |
/* VENDOR_CONF_FILE points to a keyfile containing vendor customization
|
|
|
599f22 |
* options. This code will look for options under the "pages" group, and
|
|
|
599f22 |
* supports the following keys:
|
|
|
599f22 |
- * - skip (optional): list of pages to be skipped.
|
|
|
599f22 |
+ * - skip (optional): list of pages to be skipped always
|
|
|
599f22 |
+ * - new_user_only (optional): list of pages to be skipped in existing user mode
|
|
|
599f22 |
+ * - existing_user_only (optional): list of pages to be skipped in new user mode
|
|
|
599f22 |
*
|
|
|
599f22 |
- * This is how this file would look on a vendor image:
|
|
|
599f22 |
+ * This is how this file might look on a vendor image:
|
|
|
599f22 |
*
|
|
|
599f22 |
* [pages]
|
|
|
599f22 |
- * skip=language
|
|
|
599f22 |
+ * skip=timezone
|
|
|
599f22 |
+ * existing_user_only=language;keyboard
|
|
|
599f22 |
*/
|
|
|
599f22 |
skip_pages_file = g_key_file_new ();
|
|
|
599f22 |
if (!g_key_file_load_from_file (skip_pages_file, VENDOR_CONF_FILE,
|
|
|
599f22 |
@@ -127,8 +150,20 @@ pages_to_skip_from_file (void)
|
|
|
599f22 |
goto out;
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
- skip_pages = g_key_file_get_string_list (skip_pages_file, VENDOR_PAGES_GROUP,
|
|
|
599f22 |
- VENDOR_PAGES_SKIP_KEY, NULL, NULL);
|
|
|
599f22 |
+ skip_pages = g_key_file_get_string_list (skip_pages_file,
|
|
|
599f22 |
+ VENDOR_PAGES_GROUP,
|
|
|
599f22 |
+ VENDOR_SKIP_KEY, NULL, NULL);
|
|
|
599f22 |
+ additional_skip_pages = g_key_file_get_string_list (skip_pages_file,
|
|
|
599f22 |
+ VENDOR_PAGES_GROUP,
|
|
|
599f22 |
+ is_new_user ? VENDOR_EXISTING_USER_ONLY_KEY : VENDOR_NEW_USER_ONLY_KEY,
|
|
|
599f22 |
+ NULL, NULL);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ if (!skip_pages && additional_skip_pages) {
|
|
|
599f22 |
+ skip_pages = additional_skip_pages;
|
|
|
599f22 |
+ } else if (skip_pages && additional_skip_pages) {
|
|
|
599f22 |
+ skip_pages = strv_append (skip_pages, additional_skip_pages);
|
|
|
599f22 |
+ g_strfreev (additional_skip_pages);
|
|
|
599f22 |
+ }
|
|
|
599f22 |
|
|
|
599f22 |
out:
|
|
|
599f22 |
g_key_file_free (skip_pages_file);
|
|
|
599f22 |
@@ -159,16 +194,14 @@ static void
|
|
|
599f22 |
rebuild_pages_cb (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
PageData *page_data;
|
|
|
599f22 |
+ GisPage *page;
|
|
|
599f22 |
GisAssistant *assistant;
|
|
|
599f22 |
GisPage *current_page;
|
|
|
599f22 |
gchar **skip_pages;
|
|
|
599f22 |
- gboolean is_new_user;
|
|
|
599f22 |
+ gboolean is_new_user, skipped;
|
|
|
599f22 |
|
|
|
599f22 |
assistant = gis_driver_get_assistant (driver);
|
|
|
599f22 |
current_page = gis_assistant_get_current_page (assistant);
|
|
|
599f22 |
-
|
|
|
599f22 |
- skip_pages = pages_to_skip_from_file ();
|
|
|
599f22 |
-
|
|
|
599f22 |
page_data = page_table;
|
|
|
599f22 |
|
|
|
599f22 |
if (current_page != NULL) {
|
|
|
599f22 |
@@ -182,14 +215,23 @@ rebuild_pages_cb (GisDriver *driver)
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
is_new_user = (gis_driver_get_mode (driver) == GIS_DRIVER_MODE_NEW_USER);
|
|
|
599f22 |
+ skip_pages = pages_to_skip_from_file (is_new_user);
|
|
|
599f22 |
+
|
|
|
599f22 |
for (; page_data->page_id != NULL; ++page_data) {
|
|
|
599f22 |
- if (page_data->new_user_only && !is_new_user)
|
|
|
599f22 |
- continue;
|
|
|
599f22 |
+ skipped = FALSE;
|
|
|
599f22 |
+
|
|
|
599f22 |
+ if ((page_data->new_user_only && !is_new_user) ||
|
|
|
599f22 |
+ (should_skip_page (driver, page_data->page_id, skip_pages)))
|
|
|
599f22 |
+ skipped = TRUE;
|
|
|
599f22 |
|
|
|
599f22 |
- if (should_skip_page (driver, page_data->page_id, skip_pages))
|
|
|
599f22 |
+ page = page_data->prepare_page_func (driver);
|
|
|
599f22 |
+ if (!page)
|
|
|
599f22 |
continue;
|
|
|
599f22 |
|
|
|
599f22 |
- page_data->prepare_page_func (driver);
|
|
|
599f22 |
+ if (skipped && gis_page_skip (page))
|
|
|
599f22 |
+ g_ptr_array_add (skipped_pages, page);
|
|
|
599f22 |
+ else
|
|
|
599f22 |
+ gis_driver_add_page (driver, page);
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
g_strfreev (skip_pages);
|
|
|
599f22 |
@@ -267,6 +309,7 @@ main (int argc, char *argv[])
|
|
|
599f22 |
}
|
|
|
599f22 |
#endif
|
|
|
599f22 |
|
|
|
599f22 |
+ skipped_pages = g_ptr_array_new_with_free_func ((GDestroyNotify)gtk_widget_destroy);
|
|
|
599f22 |
mode = get_mode ();
|
|
|
599f22 |
|
|
|
599f22 |
/* We only do this in existing-user mode, because if gdm launches us
|
|
|
599f22 |
@@ -290,6 +333,8 @@ main (int argc, char *argv[])
|
|
|
599f22 |
g_signal_connect (driver, "rebuild-pages", G_CALLBACK (rebuild_pages_cb), NULL);
|
|
|
599f22 |
status = g_application_run (G_APPLICATION (driver), argc, argv);
|
|
|
599f22 |
|
|
|
599f22 |
+ g_ptr_array_free (skipped_pages, TRUE);
|
|
|
599f22 |
+
|
|
|
599f22 |
g_object_unref (driver);
|
|
|
599f22 |
g_option_context_free (context);
|
|
|
599f22 |
return status;
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/account/gis-account-page.h b/gnome-initial-setup/pages/account/gis-account-page.h
|
|
|
599f22 |
index cc34304..7629e1a 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/account/gis-account-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/account/gis-account-page.h
|
|
|
599f22 |
@@ -50,8 +50,6 @@ struct _GisAccountPageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_account_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_account_page (GisDriver *driver);
|
|
|
599f22 |
-
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
#endif /* __GIS_ACCOUNT_PAGE_H__ */
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/account/gis-account-pages.c b/gnome-initial-setup/pages/account/gis-account-pages.c
|
|
|
599f22 |
index 5f4411b..d9cc8d9 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/account/gis-account-pages.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/account/gis-account-pages.c
|
|
|
599f22 |
@@ -23,11 +23,10 @@
|
|
|
599f22 |
#include "gis-account-pages.h"
|
|
|
599f22 |
#include "gis-account-page.h"
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_account_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_ACCOUNT_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_ACCOUNT_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/account/gis-account-pages.h b/gnome-initial-setup/pages/account/gis-account-pages.h
|
|
|
599f22 |
index 20d615a..394421b 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/account/gis-account-pages.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/account/gis-account-pages.h
|
|
|
599f22 |
@@ -28,7 +28,7 @@
|
|
|
599f22 |
|
|
|
599f22 |
G_BEGIN_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_account_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_account_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/eulas/gis-eula-pages.c b/gnome-initial-setup/pages/eulas/gis-eula-pages.c
|
|
|
599f22 |
index 8c989c2..3de6653 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/eulas/gis-eula-pages.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/eulas/gis-eula-pages.c
|
|
|
599f22 |
@@ -25,7 +25,7 @@
|
|
|
599f22 |
#include "gis-eula-pages.h"
|
|
|
599f22 |
#include "gis-eula-page.h"
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_eula_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
gchar *eulas_dir_path;
|
|
|
599f22 |
@@ -33,6 +33,7 @@ gis_prepare_eula_page (GisDriver *driver)
|
|
|
599f22 |
GError *error = NULL;
|
|
|
599f22 |
GFileEnumerator *enumerator = NULL;
|
|
|
599f22 |
GFileInfo *info;
|
|
|
599f22 |
+ GisPage *page = NULL;
|
|
|
599f22 |
|
|
|
599f22 |
eulas_dir_path = g_build_filename (PKGDATADIR, "eulas", NULL);
|
|
|
599f22 |
eulas_dir = g_file_new_for_path (eulas_dir_path);
|
|
|
599f22 |
@@ -52,11 +53,12 @@ gis_prepare_eula_page (GisDriver *driver)
|
|
|
599f22 |
|
|
|
599f22 |
while ((info = g_file_enumerator_next_file (enumerator, NULL, &error)) != NULL) {
|
|
|
599f22 |
GFile *eula = g_file_enumerator_get_child (enumerator, info);
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_EULA_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- "eula", eula,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+
|
|
|
599f22 |
+ page = g_object_new (GIS_TYPE_EULA_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ "eula", eula,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
+
|
|
|
599f22 |
g_object_unref (eula);
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
@@ -71,4 +73,6 @@ gis_prepare_eula_page (GisDriver *driver)
|
|
|
599f22 |
|
|
|
599f22 |
g_object_unref (eulas_dir);
|
|
|
599f22 |
g_clear_object (&enumerator);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ return page;
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/eulas/gis-eula-pages.h b/gnome-initial-setup/pages/eulas/gis-eula-pages.h
|
|
|
599f22 |
index 9424a6d..54906bc 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/eulas/gis-eula-pages.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/eulas/gis-eula-pages.h
|
|
|
599f22 |
@@ -28,7 +28,7 @@
|
|
|
599f22 |
|
|
|
599f22 |
G_BEGIN_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_eula_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_eula_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/goa/gis-goa-page.c b/gnome-initial-setup/pages/goa/gis-goa-page.c
|
|
|
599f22 |
index fcdcabe..3ed4e98 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/goa/gis-goa-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/goa/gis-goa-page.c
|
|
|
599f22 |
@@ -363,11 +363,10 @@ gis_goa_page_init (GisGoaPage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_goa_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_GOA_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_GOA_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/goa/gis-goa-page.h b/gnome-initial-setup/pages/goa/gis-goa-page.h
|
|
|
599f22 |
index e65aa28..31918bf 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/goa/gis-goa-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/goa/gis-goa-page.h
|
|
|
599f22 |
@@ -48,7 +48,7 @@ struct _GisGoaPageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_goa_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_goa_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_goa_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
|
|
|
599f22 |
index 91d9a25..445da30 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.c
|
|
|
599f22 |
@@ -30,6 +30,9 @@
|
|
|
599f22 |
#include <gtk/gtk.h>
|
|
|
599f22 |
#include <polkit/polkit.h>
|
|
|
599f22 |
|
|
|
599f22 |
+#define GNOME_DESKTOP_USE_UNSTABLE_API
|
|
|
599f22 |
+#include <libgnome-desktop/gnome-languages.h>
|
|
|
599f22 |
+
|
|
|
599f22 |
#include "gis-keyboard-page.h"
|
|
|
599f22 |
#include "keyboard-resources.h"
|
|
|
599f22 |
#include "cc-input-chooser.h"
|
|
|
599f22 |
@@ -208,53 +211,145 @@ gis_keyboard_page_apply (GisPage *page,
|
|
|
599f22 |
return FALSE;
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
+static GSList *
|
|
|
599f22 |
+get_localed_input (GDBusProxy *proxy)
|
|
|
599f22 |
+{
|
|
|
599f22 |
+ GVariant *v;
|
|
|
599f22 |
+ const gchar *s;
|
|
|
599f22 |
+ gchar *id;
|
|
|
599f22 |
+ guint i, n;
|
|
|
599f22 |
+ gchar **layouts = NULL;
|
|
|
599f22 |
+ gchar **variants = NULL;
|
|
|
599f22 |
+ GSList *sources = NULL;
|
|
|
599f22 |
+
|
|
|
599f22 |
+ if (!proxy)
|
|
|
599f22 |
+ return NULL;
|
|
|
599f22 |
+
|
|
|
599f22 |
+ v = g_dbus_proxy_get_cached_property (proxy, "X11Layout");
|
|
|
599f22 |
+ if (v) {
|
|
|
599f22 |
+ s = g_variant_get_string (v, NULL);
|
|
|
599f22 |
+ layouts = g_strsplit (s, ",", -1);
|
|
|
599f22 |
+ g_variant_unref (v);
|
|
|
599f22 |
+ }
|
|
|
599f22 |
+
|
|
|
599f22 |
+ v = g_dbus_proxy_get_cached_property (proxy, "X11Variant");
|
|
|
599f22 |
+ if (v) {
|
|
|
599f22 |
+ s = g_variant_get_string (v, NULL);
|
|
|
599f22 |
+ if (s && *s)
|
|
|
599f22 |
+ variants = g_strsplit (s, ",", -1);
|
|
|
599f22 |
+ g_variant_unref (v);
|
|
|
599f22 |
+ }
|
|
|
599f22 |
+
|
|
|
599f22 |
+ if (variants && variants[0])
|
|
|
599f22 |
+ n = MIN (g_strv_length (layouts), g_strv_length (variants));
|
|
|
599f22 |
+ else if (layouts && layouts[0])
|
|
|
599f22 |
+ n = g_strv_length (layouts);
|
|
|
599f22 |
+ else
|
|
|
599f22 |
+ n = 0;
|
|
|
599f22 |
+
|
|
|
599f22 |
+ for (i = 0; i < n && layouts[i][0]; i++) {
|
|
|
599f22 |
+ if (variants && variants[i] && variants[i][0])
|
|
|
599f22 |
+ id = g_strdup_printf ("%s+%s", layouts[i], variants[i]);
|
|
|
599f22 |
+ else
|
|
|
599f22 |
+ id = g_strdup (layouts[i]);
|
|
|
599f22 |
+ sources = g_slist_prepend (sources, id);
|
|
|
599f22 |
+ }
|
|
|
599f22 |
+
|
|
|
599f22 |
+ g_strfreev (variants);
|
|
|
599f22 |
+ g_strfreev (layouts);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ return sources;
|
|
|
599f22 |
+}
|
|
|
599f22 |
+
|
|
|
599f22 |
static void
|
|
|
599f22 |
-load_localed_input (GisKeyboardPage *self)
|
|
|
599f22 |
+add_default_keyboard_layout (GDBusProxy *proxy,
|
|
|
599f22 |
+ GVariantBuilder *builder)
|
|
|
599f22 |
{
|
|
|
599f22 |
- GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
|
|
|
599f22 |
- GVariant *v;
|
|
|
599f22 |
- const gchar *s;
|
|
|
599f22 |
- gchar *id;
|
|
|
599f22 |
- guint i, n;
|
|
|
599f22 |
- gchar **layouts = NULL;
|
|
|
599f22 |
- gchar **variants = NULL;
|
|
|
599f22 |
- GSList *sources = NULL;
|
|
|
599f22 |
+ GSList *sources = get_localed_input (proxy);
|
|
|
599f22 |
+ sources = g_slist_reverse (sources);
|
|
|
599f22 |
|
|
|
599f22 |
- if (!priv->localed)
|
|
|
599f22 |
- return;
|
|
|
599f22 |
+ for (; sources; sources = sources->next)
|
|
|
599f22 |
+ g_variant_builder_add (builder, "(ss)", "xkb",
|
|
|
599f22 |
+ (const gchar *) sources->data);
|
|
|
599f22 |
|
|
|
599f22 |
- v = g_dbus_proxy_get_cached_property (priv->localed, "X11Layout");
|
|
|
599f22 |
- if (v) {
|
|
|
599f22 |
- s = g_variant_get_string (v, NULL);
|
|
|
599f22 |
- layouts = g_strsplit (s, ",", -1);
|
|
|
599f22 |
- g_variant_unref (v);
|
|
|
599f22 |
- }
|
|
|
599f22 |
+ g_slist_free_full (sources, g_free);
|
|
|
599f22 |
+}
|
|
|
599f22 |
|
|
|
599f22 |
- v = g_dbus_proxy_get_cached_property (priv->localed, "X11Variant");
|
|
|
599f22 |
- if (v) {
|
|
|
599f22 |
- s = g_variant_get_string (v, NULL);
|
|
|
599f22 |
- if (s && *s)
|
|
|
599f22 |
- variants = g_strsplit (s, ",", -1);
|
|
|
599f22 |
- g_variant_unref (v);
|
|
|
599f22 |
- }
|
|
|
599f22 |
+static void
|
|
|
599f22 |
+add_default_input_sources (GisKeyboardPage *self,
|
|
|
599f22 |
+ GDBusProxy *proxy)
|
|
|
599f22 |
+{
|
|
|
599f22 |
+ const gchar *type;
|
|
|
599f22 |
+ const gchar *id;
|
|
|
599f22 |
+ const gchar * const *locales;
|
|
|
599f22 |
+ const gchar *language;
|
|
|
599f22 |
+ GVariantBuilder builder;
|
|
|
599f22 |
+ GSettings *input_settings;
|
|
|
599f22 |
+
|
|
|
599f22 |
+ input_settings = g_settings_new (GNOME_DESKTOP_INPUT_SOURCES_DIR);
|
|
|
599f22 |
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
|
|
|
599f22 |
+
|
|
|
599f22 |
+ add_default_keyboard_layout (proxy, &builder);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ /* add other input sources */
|
|
|
599f22 |
+ locales = g_get_language_names ();
|
|
|
599f22 |
+ language = locales[0];
|
|
|
599f22 |
+ if (gnome_get_input_source_from_locale (language, &type, &id)) {
|
|
|
599f22 |
+ if (!g_str_equal (type, "xkb"))
|
|
|
599f22 |
+ g_variant_builder_add (&builder, "(ss)", type, id);
|
|
|
599f22 |
+ }
|
|
|
599f22 |
+
|
|
|
599f22 |
+ g_settings_delay (input_settings);
|
|
|
599f22 |
+ g_settings_set_value (input_settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
|
|
|
599f22 |
+ g_settings_set_uint (input_settings, KEY_CURRENT_INPUT_SOURCE, 0);
|
|
|
599f22 |
+ g_settings_apply (input_settings);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ g_object_unref (input_settings);
|
|
|
599f22 |
+}
|
|
|
599f22 |
|
|
|
599f22 |
- if (variants && variants[0])
|
|
|
599f22 |
- n = MIN (g_strv_length (layouts), g_strv_length (variants));
|
|
|
599f22 |
- else if (layouts && layouts[0])
|
|
|
599f22 |
- n = g_strv_length (layouts);
|
|
|
599f22 |
- else
|
|
|
599f22 |
- n = 0;
|
|
|
599f22 |
-
|
|
|
599f22 |
- for (i = 0; i < n && layouts[i][0]; i++) {
|
|
|
599f22 |
- if (variants && variants[i] && variants[i][0])
|
|
|
599f22 |
- id = g_strdup_printf ("%s+%s", layouts[i], variants[i]);
|
|
|
599f22 |
- else
|
|
|
599f22 |
- id = g_strdup (layouts[i]);
|
|
|
599f22 |
- sources = g_slist_prepend (sources, id);
|
|
|
599f22 |
- }
|
|
|
599f22 |
+static void
|
|
|
599f22 |
+skip_proxy_ready (GObject *source,
|
|
|
599f22 |
+ GAsyncResult *res,
|
|
|
599f22 |
+ gpointer data)
|
|
|
599f22 |
+{
|
|
|
599f22 |
+ GisKeyboardPage *self = data;
|
|
|
599f22 |
+ GDBusProxy *proxy;
|
|
|
599f22 |
+ GError *error = NULL;
|
|
|
599f22 |
+
|
|
|
599f22 |
+ proxy = g_dbus_proxy_new_finish (res, &error);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ if (!proxy) {
|
|
|
599f22 |
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
|
|
|
599f22 |
+ g_warning ("Failed to contact localed: %s", error->message);
|
|
|
599f22 |
+ g_error_free (error);
|
|
|
599f22 |
+ return;
|
|
|
599f22 |
+ }
|
|
|
599f22 |
+
|
|
|
599f22 |
+ add_default_input_sources (self, proxy);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ g_object_unref (proxy);
|
|
|
599f22 |
+}
|
|
|
599f22 |
|
|
|
599f22 |
- g_strfreev (variants);
|
|
|
599f22 |
- g_strfreev (layouts);
|
|
|
599f22 |
+static gboolean
|
|
|
599f22 |
+gis_keyboard_page_skip (GisPage *self)
|
|
|
599f22 |
+{
|
|
|
599f22 |
+ g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM,
|
|
|
599f22 |
+ G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES,
|
|
|
599f22 |
+ NULL,
|
|
|
599f22 |
+ "org.freedesktop.locale1",
|
|
|
599f22 |
+ "/org/freedesktop/locale1",
|
|
|
599f22 |
+ "org.freedesktop.locale1",
|
|
|
599f22 |
+ NULL,
|
|
|
599f22 |
+ (GAsyncReadyCallback) skip_proxy_ready,
|
|
|
599f22 |
+ self);
|
|
|
599f22 |
+ return TRUE;
|
|
|
599f22 |
+}
|
|
|
599f22 |
+
|
|
|
599f22 |
+static void
|
|
|
599f22 |
+load_localed_input (GisKeyboardPage *self)
|
|
|
599f22 |
+{
|
|
|
599f22 |
+ GisKeyboardPagePrivate *priv = gis_keyboard_page_get_instance_private (self);
|
|
|
599f22 |
+ GSList * sources = get_localed_input (priv->localed);
|
|
|
599f22 |
|
|
|
599f22 |
/* These will be added silently after the user selection when
|
|
|
599f22 |
* writing out the settings. */
|
|
|
599f22 |
@@ -375,6 +470,7 @@ gis_keyboard_page_class_init (GisKeyboardPageClass * klass)
|
|
|
599f22 |
|
|
|
599f22 |
page_class->page_id = PAGE_ID;
|
|
|
599f22 |
page_class->apply = gis_keyboard_page_apply;
|
|
|
599f22 |
+ page_class->skip = gis_keyboard_page_skip;
|
|
|
599f22 |
page_class->locale_changed = gis_keyboard_page_locale_changed;
|
|
|
599f22 |
object_class->constructed = gis_keyboard_page_constructed;
|
|
|
599f22 |
object_class->finalize = gis_keyboard_page_finalize;
|
|
|
599f22 |
@@ -389,11 +485,10 @@ gis_keyboard_page_init (GisKeyboardPage *self)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (self));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_keyboard_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_KEYBOARD_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_KEYBOARD_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h
|
|
|
599f22 |
index 832473f..d5710a0 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/keyboard/gis-keyboard-page.h
|
|
|
599f22 |
@@ -63,7 +63,7 @@ struct _GisKeyboardPageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_keyboard_page_get_type (void) G_GNUC_CONST;
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_keyboard_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_keyboard_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/language/gis-language-page.c b/gnome-initial-setup/pages/language/gis-language-page.c
|
|
|
599f22 |
index 6e246f9..c5f895c 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/language/gis-language-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/language/gis-language-page.c
|
|
|
599f22 |
@@ -267,6 +267,8 @@ gis_language_page_constructed (GObject *object)
|
|
|
599f22 |
|
|
|
599f22 |
update_distro_logo (page);
|
|
|
599f22 |
|
|
|
599f22 |
+ gtk_widget_show (priv->language_chooser);
|
|
|
599f22 |
+
|
|
|
599f22 |
g_signal_connect (priv->language_chooser, "notify::language",
|
|
|
599f22 |
G_CALLBACK (language_changed), page);
|
|
|
599f22 |
g_signal_connect (priv->language_chooser, "confirm",
|
|
|
599f22 |
@@ -288,7 +290,7 @@ gis_language_page_constructed (GObject *object)
|
|
|
599f22 |
(GAsyncReadyCallback) localed_proxy_ready,
|
|
|
599f22 |
object);
|
|
|
599f22 |
g_object_unref (bus);
|
|
|
599f22 |
- }
|
|
|
599f22 |
+ }
|
|
|
599f22 |
|
|
|
599f22 |
gis_page_set_complete (GIS_PAGE (page), TRUE);
|
|
|
599f22 |
gtk_widget_show (GTK_WIDGET (page));
|
|
|
599f22 |
@@ -300,6 +302,16 @@ gis_language_page_locale_changed (GisPage *page)
|
|
|
599f22 |
gis_page_set_title (GIS_PAGE (page), _("Welcome"));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
+static gboolean
|
|
|
599f22 |
+gis_language_page_skip (GisPage *page)
|
|
|
599f22 |
+{
|
|
|
599f22 |
+ GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (GIS_LANGUAGE_PAGE (page));
|
|
|
599f22 |
+
|
|
|
599f22 |
+ gtk_widget_hide (priv->language_chooser);
|
|
|
599f22 |
+
|
|
|
599f22 |
+ return FALSE;
|
|
|
599f22 |
+}
|
|
|
599f22 |
+
|
|
|
599f22 |
static void
|
|
|
599f22 |
gis_language_page_dispose (GObject *object)
|
|
|
599f22 |
{
|
|
|
599f22 |
@@ -327,6 +339,7 @@ gis_language_page_class_init (GisLanguagePageClass *klass)
|
|
|
599f22 |
|
|
|
599f22 |
page_class->page_id = PAGE_ID;
|
|
|
599f22 |
page_class->locale_changed = gis_language_page_locale_changed;
|
|
|
599f22 |
+ page_class->skip = gis_language_page_skip;
|
|
|
599f22 |
object_class->constructed = gis_language_page_constructed;
|
|
|
599f22 |
object_class->dispose = gis_language_page_dispose;
|
|
|
599f22 |
}
|
|
|
599f22 |
@@ -341,11 +354,10 @@ gis_language_page_init (GisLanguagePage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_language_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_LANGUAGE_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_LANGUAGE_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/language/gis-language-page.h b/gnome-initial-setup/pages/language/gis-language-page.h
|
|
|
599f22 |
index 37b33ab..a5b78ff 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/language/gis-language-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/language/gis-language-page.h
|
|
|
599f22 |
@@ -50,7 +50,8 @@ struct _GisLanguagePageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_language_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_language_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_language_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_language_page_without_language_selection (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/language/gis-language-page.ui b/gnome-initial-setup/pages/language/gis-language-page.ui
|
|
|
599f22 |
index 1b98a6d..d5e962a 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/language/gis-language-page.ui
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/language/gis-language-page.ui
|
|
|
599f22 |
@@ -7,7 +7,7 @@
|
|
|
599f22 |
<property name="visible">True</property>
|
|
|
599f22 |
<property name="orientation">vertical</property>
|
|
|
599f22 |
<property name="halign">center</property>
|
|
|
599f22 |
- <property name="valign">fill</property>
|
|
|
599f22 |
+ <property name="valign">center</property>
|
|
|
599f22 |
<child>
|
|
|
599f22 |
<object class="GtkImage" id="logo">
|
|
|
599f22 |
<property name="visible" bind-source="GisLanguagePage" bind-property="small-screen" bind-flags="invert-boolean|sync-create"/>
|
|
|
599f22 |
@@ -30,7 +30,7 @@
|
|
|
599f22 |
<object class="CcLanguageChooser" id="language_chooser">
|
|
|
599f22 |
<property name="margin_bottom">18</property>
|
|
|
599f22 |
<property name="width_request">400</property>
|
|
|
599f22 |
- <property name="visible">True</property>
|
|
|
599f22 |
+ <property name="visible">False</property>
|
|
|
599f22 |
<property name="valign">start</property>
|
|
|
599f22 |
</object>
|
|
|
599f22 |
</child>
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/network/gis-network-page.c b/gnome-initial-setup/pages/network/gis-network-page.c
|
|
|
599f22 |
index 0beae26..29fc523 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/network/gis-network-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/network/gis-network-page.c
|
|
|
599f22 |
@@ -691,11 +691,10 @@ gis_network_page_init (GisNetworkPage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_network_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_NETWORK_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_NETWORK_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/network/gis-network-page.h b/gnome-initial-setup/pages/network/gis-network-page.h
|
|
|
599f22 |
index cdb1798..172b7d1 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/network/gis-network-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/network/gis-network-page.h
|
|
|
599f22 |
@@ -48,7 +48,7 @@ struct _GisNetworkPageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_network_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_network_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_network_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/password/gis-password-page.c b/gnome-initial-setup/pages/password/gis-password-page.c
|
|
|
599f22 |
index cefa30e..cf3db9e 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/password/gis-password-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/password/gis-password-page.c
|
|
|
599f22 |
@@ -304,12 +304,11 @@ gis_password_page_init (GisPasswordPage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_password_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_PASSWORD_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_PASSWORD_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/password/gis-password-page.h b/gnome-initial-setup/pages/password/gis-password-page.h
|
|
|
599f22 |
index 59d22c7..954782f 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/password/gis-password-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/password/gis-password-page.h
|
|
|
599f22 |
@@ -50,7 +50,7 @@ struct _GisPasswordPageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_password_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_password_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_password_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.c b/gnome-initial-setup/pages/privacy/gis-privacy-page.c
|
|
|
599f22 |
index f2af372..7d83d62 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/privacy/gis-privacy-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.c
|
|
|
599f22 |
@@ -321,11 +321,10 @@ gis_privacy_page_init (GisPrivacyPage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_privacy_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_PRIVACY_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_PRIVACY_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/privacy/gis-privacy-page.h b/gnome-initial-setup/pages/privacy/gis-privacy-page.h
|
|
|
599f22 |
index d814612..9596b36 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/privacy/gis-privacy-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/privacy/gis-privacy-page.h
|
|
|
599f22 |
@@ -50,7 +50,7 @@ struct _GisPrivacyPageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_privacy_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_privacy_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_privacy_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/region/gis-region-page.c b/gnome-initial-setup/pages/region/gis-region-page.c
|
|
|
599f22 |
index 6e90d57..5a31b9c 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/region/gis-region-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/region/gis-region-page.c
|
|
|
599f22 |
@@ -276,11 +276,10 @@ gis_region_page_init (GisRegionPage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_region_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_REGION_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_REGION_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/region/gis-region-page.h b/gnome-initial-setup/pages/region/gis-region-page.h
|
|
|
599f22 |
index eca0204..b99c2fe 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/region/gis-region-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/region/gis-region-page.h
|
|
|
599f22 |
@@ -50,7 +50,7 @@ struct _GisRegionPageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_region_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_region_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_region_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/software/gis-software-page.c b/gnome-initial-setup/pages/software/gis-software-page.c
|
|
|
599f22 |
index 7c15a2c..f3e827a 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/software/gis-software-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/software/gis-software-page.c
|
|
|
599f22 |
@@ -244,22 +244,24 @@ gis_software_page_init (GisSoftwarePage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_software_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
-#ifdef ENABLE_SOFTWARE_SOURCES
|
|
|
599f22 |
GSettingsSchemaSource *source;
|
|
|
599f22 |
GSettingsSchema *schema;
|
|
|
599f22 |
+ GisPage *page = NULL;
|
|
|
599f22 |
|
|
|
599f22 |
+#ifdef ENABLE_SOFTWARE_SOURCES
|
|
|
599f22 |
source = g_settings_schema_source_get_default ();
|
|
|
599f22 |
schema = g_settings_schema_source_lookup (source, "org.gnome.software", TRUE);
|
|
|
599f22 |
if (schema != NULL && g_settings_schema_has_key (schema, "show-nonfree-software"))
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_SOFTWARE_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ page = g_object_new (GIS_TYPE_SOFTWARE_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
|
|
|
599f22 |
if (schema != NULL)
|
|
|
599f22 |
g_settings_schema_unref (schema);
|
|
|
599f22 |
#endif
|
|
|
599f22 |
+
|
|
|
599f22 |
+ return page;
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/software/gis-software-page.h b/gnome-initial-setup/pages/software/gis-software-page.h
|
|
|
599f22 |
index 6bceda1..8d15245 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/software/gis-software-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/software/gis-software-page.h
|
|
|
599f22 |
@@ -50,7 +50,7 @@ struct _GisSoftwarePageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_software_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_software_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_software_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/summary/gis-summary-page.c b/gnome-initial-setup/pages/summary/gis-summary-page.c
|
|
|
599f22 |
index 4261b92..f510f2f 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/summary/gis-summary-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/summary/gis-summary-page.c
|
|
|
599f22 |
@@ -361,11 +361,10 @@ gis_summary_page_init (GisSummaryPage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_summary_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_SUMMARY_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_SUMMARY_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/summary/gis-summary-page.h b/gnome-initial-setup/pages/summary/gis-summary-page.h
|
|
|
599f22 |
index 0fe2274..20190f1 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/summary/gis-summary-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/summary/gis-summary-page.h
|
|
|
599f22 |
@@ -48,7 +48,7 @@ struct _GisSummaryPageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_summary_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_summary_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_summary_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/timezone/gis-timezone-page.c b/gnome-initial-setup/pages/timezone/gis-timezone-page.c
|
|
|
599f22 |
index a090db2..0775d98 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/timezone/gis-timezone-page.c
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/timezone/gis-timezone-page.c
|
|
|
599f22 |
@@ -462,11 +462,10 @@ gis_timezone_page_init (GisTimezonePage *page)
|
|
|
599f22 |
gtk_widget_init_template (GTK_WIDGET (page));
|
|
|
599f22 |
}
|
|
|
599f22 |
|
|
|
599f22 |
-void
|
|
|
599f22 |
+GisPage *
|
|
|
599f22 |
gis_prepare_timezone_page (GisDriver *driver)
|
|
|
599f22 |
{
|
|
|
599f22 |
- gis_driver_add_page (driver,
|
|
|
599f22 |
- g_object_new (GIS_TYPE_TIMEZONE_PAGE,
|
|
|
599f22 |
- "driver", driver,
|
|
|
599f22 |
- NULL));
|
|
|
599f22 |
+ return g_object_new (GIS_TYPE_TIMEZONE_PAGE,
|
|
|
599f22 |
+ "driver", driver,
|
|
|
599f22 |
+ NULL);
|
|
|
599f22 |
}
|
|
|
599f22 |
diff --git a/gnome-initial-setup/pages/timezone/gis-timezone-page.h b/gnome-initial-setup/pages/timezone/gis-timezone-page.h
|
|
|
599f22 |
index 5e75256..e9ba8ed 100644
|
|
|
599f22 |
--- a/gnome-initial-setup/pages/timezone/gis-timezone-page.h
|
|
|
599f22 |
+++ b/gnome-initial-setup/pages/timezone/gis-timezone-page.h
|
|
|
599f22 |
@@ -50,7 +50,7 @@ struct _GisTimezonePageClass
|
|
|
599f22 |
|
|
|
599f22 |
GType gis_timezone_page_get_type (void);
|
|
|
599f22 |
|
|
|
599f22 |
-void gis_prepare_timezone_page (GisDriver *driver);
|
|
|
599f22 |
+GisPage *gis_prepare_timezone_page (GisDriver *driver);
|
|
|
599f22 |
|
|
|
599f22 |
G_END_DECLS
|
|
|
599f22 |
|
|
|
599f22 |
--
|
|
|
599f22 |
2.14.3
|
|
|
599f22 |
|