[gnome-initial-setup/shell/4765: 4/362] driver: set initial language from personality
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-initial-setup/shell/4765: 4/362] driver: set initial language from personality
- Date: Thu, 19 Mar 2015 01:21:23 +0000 (UTC)
commit f832d403a65b2165ce4b3187b757d64215409d15
Author: Cosimo Cecchi <cosimo endlessm com>
Date: Thu Apr 17 15:41:02 2014 -0700
driver: set initial language from personality
gnome-initial-setup/gis-driver.c | 37 ++++++++++++++++++++
gnome-initial-setup/gis-driver.h | 2 +
.../pages/language/gis-language-page.c | 10 +++++-
3 files changed, 48 insertions(+), 1 deletions(-)
---
diff --git a/gnome-initial-setup/gis-driver.c b/gnome-initial-setup/gis-driver.c
index 0dea62b..8836312 100644
--- a/gnome-initial-setup/gis-driver.c
+++ b/gnome-initial-setup/gis-driver.c
@@ -32,6 +32,10 @@
#define GIS_TYPE_DRIVER_MODE (gis_driver_mode_get_type ())
+#define PERSONALITY_FILE_PATH "/etc/EndlessOS/personality.conf"
+#define INITIAL_CONFIG_GROUP "Setup"
+#define LANGUAGE_KEY "DefaultLanguage"
+
/* Statically include this for now. Maybe later
* we'll generate this from glib-mkenums. */
GType
@@ -73,6 +77,7 @@ struct _GisDriverPrivate {
const gchar *user_password;
gchar *lang_id;
+ gchar *lang_override;
GisDriverMode mode;
};
@@ -87,6 +92,7 @@ gis_driver_finalize (GObject *object)
GisDriverPrivate *priv = gis_driver_get_instance_private (driver);
g_free (priv->lang_id);
+ g_free (priv->lang_override);
G_OBJECT_CLASS (gis_driver_parent_class)->finalize (object);
}
@@ -188,6 +194,13 @@ gis_driver_get_mode (GisDriver *driver)
return priv->mode;
}
+const gchar *
+gis_driver_get_language_override (GisDriver *driver)
+{
+ GisDriverPrivate *priv = gis_driver_get_instance_private (driver);
+ return priv->lang_override;
+}
+
static void
gis_driver_get_property (GObject *object,
guint prop_id,
@@ -249,6 +262,28 @@ window_realize_cb (GtkWidget *widget, gpointer user_data)
}
static void
+gis_driver_read_personality_file (GisDriver *driver)
+{
+ GisDriverPrivate *priv = gis_driver_get_instance_private (driver);
+ GKeyFile *keyfile = g_key_file_new ();
+ gchar *language = NULL;
+
+ if (g_key_file_load_from_file (keyfile, PERSONALITY_FILE_PATH,
+ G_KEY_FILE_NONE, NULL)) {
+ language = g_key_file_get_string (keyfile, INITIAL_CONFIG_GROUP,
+ LANGUAGE_KEY, NULL);
+ }
+
+ g_free (priv->lang_override);
+ priv->lang_override = language;
+ if (language) {
+ setlocale (LC_MESSAGES, language);
+ }
+
+ g_key_file_free (keyfile);
+}
+
+static void
gis_driver_startup (GApplication *app)
{
GisDriver *driver = GIS_DRIVER (app);
@@ -256,6 +291,8 @@ gis_driver_startup (GApplication *app)
G_APPLICATION_CLASS (gis_driver_parent_class)->startup (app);
+ gis_driver_read_personality_file (driver);
+
priv->main_window = g_object_new (GTK_TYPE_APPLICATION_WINDOW,
"application", app,
"type", GTK_WINDOW_TOPLEVEL,
diff --git a/gnome-initial-setup/gis-driver.h b/gnome-initial-setup/gis-driver.h
index ff079df..f382a09 100644
--- a/gnome-initial-setup/gis-driver.h
+++ b/gnome-initial-setup/gis-driver.h
@@ -76,6 +76,8 @@ void gis_driver_set_user_language (GisDriver *driver,
const gchar *gis_driver_get_user_language (GisDriver *driver);
+const gchar *gis_driver_get_language_override (GisDriver *driver);
+
GisDriverMode gis_driver_get_mode (GisDriver *driver);
void gis_driver_add_page (GisDriver *driver,
diff --git a/gnome-initial-setup/pages/language/gis-language-page.c
b/gnome-initial-setup/pages/language/gis-language-page.c
index d7f6bb7..b71723f 100644
--- a/gnome-initial-setup/pages/language/gis-language-page.c
+++ b/gnome-initial-setup/pages/language/gis-language-page.c
@@ -192,6 +192,8 @@ gis_language_page_constructed (GObject *object)
{
GisLanguagePage *page = GIS_LANGUAGE_PAGE (object);
GisLanguagePagePrivate *priv = gis_language_page_get_instance_private (page);
+ GisDriver *driver = GIS_PAGE (page)->driver;
+ const gchar *lang_override;
GDBusConnection *bus;
g_type_ensure (CC_TYPE_LANGUAGE_CHOOSER);
@@ -201,12 +203,18 @@ gis_language_page_constructed (GObject *object)
gtk_container_add (GTK_CONTAINER (page), WID ("language-page"));
priv->language_chooser = WID ("language-chooser");
+
+ lang_override = gis_driver_get_language_override (driver);
+ if (lang_override) {
+ cc_language_chooser_set_language (CC_LANGUAGE_CHOOSER (priv->language_chooser), lang_override);
+ }
+
g_signal_connect (priv->language_chooser, "notify::language",
G_CALLBACK (language_changed), page);
/* If we're in new user mode then we're manipulating system settings */
- if (gis_driver_get_mode (GIS_PAGE (page)->driver) == GIS_DRIVER_MODE_NEW_USER)
+ if (gis_driver_get_mode (driver) == GIS_DRIVER_MODE_NEW_USER)
{
priv->permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]