void cc_common_language_select_current_language (GtkTreeView *treeview) { GtkTreeModel *model; GtkTreeIter iter; gboolean cont; char *lang; lang = cc_common_language_get_current_language (); model = gtk_tree_view_get_model (treeview); cont = gtk_tree_model_get_iter_first (model, &iter); while (cont) { char *locale; gtk_tree_model_get (model, &iter, LOCALE_COL, &locale, -1); if (locale != NULL && g_str_equal (locale, lang)) { GtkTreeSelection *selection; selection = gtk_tree_view_get_selection (treeview); gtk_tree_selection_select_iter (selection, &iter); g_free (locale); break; } g_free (locale); cont = gtk_tree_model_iter_next (model, &iter); } g_free (lang); }
static void language_response (GtkDialog *dialog, gint response_id, UmUserPanelPrivate *d) { GtkWidget *combo; UmUser *user; gchar *lang; GtkTreeModel *model; GtkTreeIter iter; user = get_selected_user (d); combo = get_widget (d, "account-language-combo"); model = um_editable_combo_get_model (UM_EDITABLE_COMBO (combo)); if (response_id == GTK_RESPONSE_OK) { lang = cc_language_chooser_get_language (GTK_WIDGET (dialog)); um_user_set_language (user, lang); } else { lang = g_strdup (um_user_get_language (user)); if (!lang) lang = cc_common_language_get_current_language (); } cc_common_language_get_iter_for_language (model, lang, &iter); um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (combo), &iter); g_free (lang); gtk_widget_hide (GTK_WIDGET (dialog)); gtk_widget_set_sensitive (combo, TRUE); g_object_unref (user); }
static void show_user (UmUser *user, UmUserPanelPrivate *d) { GtkWidget *image; GtkWidget *label; GtkWidget *label2; GtkWidget *label3; GdkPixbuf *pixbuf; gchar *lang; GtkWidget *widget; GtkTreeModel *model; GtkTreeIter iter; gboolean show, enable; pixbuf = um_user_render_icon (user, FALSE, 48); image = get_widget (d, "user-icon-image"); gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); image = get_widget (d, "user-icon-image2"); gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); g_object_unref (pixbuf); um_photo_dialog_set_user (d->photo_dialog, user); widget = get_widget (d, "full-name-entry"); cc_editable_entry_set_text (CC_EDITABLE_ENTRY (widget), um_user_get_real_name (user)); gtk_widget_set_tooltip_text (widget, um_user_get_user_name (user)); widget = get_widget (d, "account-type-combo"); um_editable_combo_set_active (UM_EDITABLE_COMBO (widget), um_user_get_account_type (user)); widget = get_widget (d, "account-password-button"); um_editable_button_set_text (UM_EDITABLE_BUTTON (widget), get_password_mode_text (user)); enable = um_user_is_local_account (user); gtk_widget_set_sensitive (widget, enable); widget = get_widget (d, "account-language-combo"); model = um_editable_combo_get_model (UM_EDITABLE_COMBO (widget)); cc_add_user_languages (model); lang = g_strdup (um_user_get_language (user)); if (!lang) lang = cc_common_language_get_current_language (); cc_common_language_get_iter_for_language (model, lang, &iter); um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (widget), &iter); g_free (lang); /* Fingerprint: show when self, possible, and local account */ widget = get_widget (d, "account-fingerprint-notebook"); label = get_widget (d, "account-fingerprint-label"); label2 = get_widget (d, "account-fingerprint-value-label"); label3 = get_widget (d, "account-fingerprint-button-label"); show = (um_user_get_uid (user) == getuid() && um_user_is_local_account (user) && set_fingerprint_label (label2, label3)); gtk_widget_set_visible (label, show); gtk_widget_set_visible (widget, show); }
static void cc_language_chooser_constructed (GObject *object) { GtkBuilder *builder; CcLanguageChooser *chooser = CC_LANGUAGE_CHOOSER (object); CcLanguageChooserPrivate *priv = chooser->priv; GError *error = NULL; G_OBJECT_CLASS (cc_language_chooser_parent_class)->constructed (object); builder = gtk_builder_new (); if (gtk_builder_add_from_resource (builder, "/org/gnome/control-center/language-chooser.ui", &error) == 0) { g_object_unref (builder); g_warning ("failed to load language chooser: %s", error->message); g_error_free (error); return; } gtk_container_add (GTK_CONTAINER (chooser), WID ("language-chooser")); priv->filter_entry = WID ("language-filter-entry"); priv->language_list = WID ("language-list"); priv->more_item = more_widget_new (); priv->no_results = no_results_widget_new (); gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->language_list), sort_languages, chooser, NULL); gtk_list_box_set_filter_func (GTK_LIST_BOX (priv->language_list), language_visible, chooser, NULL); gtk_list_box_set_header_func (GTK_LIST_BOX (priv->language_list), update_header_func, chooser, NULL); gtk_list_box_set_selection_mode (GTK_LIST_BOX (priv->language_list), GTK_SELECTION_NONE); add_all_languages (chooser); g_signal_connect (priv->filter_entry, "changed", G_CALLBACK (filter_changed), chooser); g_signal_connect (priv->language_list, "row-activated", G_CALLBACK (row_activated), chooser); if (priv->language == NULL) priv->language = cc_common_language_get_current_language (); sync_all_checkmarks (chooser); g_object_unref (builder); }
GHashTable * cc_common_language_get_initial_languages (void) { GHashTable *ht; char *name; char *language; ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free); /* Add some common languages first */ g_hash_table_insert (ht, g_strdup ("en_US.utf8"), g_strdup (_("English"))); if (gdm_language_has_translations ("en_GB")) g_hash_table_insert (ht, g_strdup ("en_GB.utf8"), g_strdup (_("British English"))); if (gdm_language_has_translations ("de") || gdm_language_has_translations ("de_DE")) g_hash_table_insert (ht, g_strdup ("de_DE.utf8"), g_strdup (_("German"))); if (gdm_language_has_translations ("fr") || gdm_language_has_translations ("fr_FR")) g_hash_table_insert (ht, g_strdup ("fr_FR.utf8"), g_strdup (_("French"))); if (gdm_language_has_translations ("es") || gdm_language_has_translations ("es_ES")) g_hash_table_insert (ht, g_strdup ("es_ES.utf8"), g_strdup (_("Spanish"))); if (gdm_language_has_translations ("zh_CN")) g_hash_table_insert (ht, g_strdup ("zh_CN.utf8"), g_strdup (_("Chinese (simplified)"))); if (gdm_language_has_translations ("ru") || gdm_language_has_translations ("ru_RU")) g_hash_table_insert (ht, g_strdup ("ru_RU.utf8"), g_strdup (_("Russian"))); if (gdm_language_has_translations ("ar") || gdm_language_has_translations ("ar_EG")) g_hash_table_insert (ht, g_strdup ("ar_EG.utf8"), g_strdup (_("Arabic"))); /* Add the languages used by other users on the system */ add_other_users_language (ht); /* Add current locale */ name = cc_common_language_get_current_language (); if (g_hash_table_lookup (ht, name) == NULL) { language = gdm_get_language_from_name (name, NULL); g_hash_table_insert (ht, name, language); } else { g_free (name); } return ht; }
void cc_common_language_select_current_language (GtkTreeView *treeview) { GtkTreeModel *model; GtkTreeIter iter; gboolean cont; char *lang; gboolean found; lang = cc_common_language_get_current_language (); g_debug ("Trying to select lang '%s' in treeview", lang); model = gtk_tree_view_get_model (treeview); found = FALSE; cont = gtk_tree_model_get_iter_first (model, &iter); while (cont) { char *locale; gtk_tree_model_get (model, &iter, LOCALE_COL, &locale, -1); if (locale != NULL && g_str_equal (locale, lang)) { GtkTreeSelection *selection; g_debug ("Found '%s' in treeview", locale); found = TRUE; selection = gtk_tree_view_get_selection (treeview); gtk_tree_selection_select_iter (selection, &iter); g_free (locale); break; } g_free (locale); cont = gtk_tree_model_iter_next (model, &iter); } g_free (lang); if (found == FALSE) g_warning ("Could not find current language '%s' in the treeview", lang); }
static void show_user (UmUser *user, UmUserPanelPrivate *d) { GtkWidget *image; GtkWidget *label; GtkWidget *label2; GtkWidget *label3; GdkPixbuf *pixbuf; gchar *lang; GtkWidget *widget; GtkTreeModel *model; GtkTreeIter iter; pixbuf = um_user_render_icon (user, FALSE, 48); image = get_widget (d, "user-icon-image"); gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); image = get_widget (d, "user-icon-image2"); gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); g_object_unref (pixbuf); um_photo_dialog_set_user (d->photo_dialog, user); widget = get_widget (d, "full-name-entry"); cc_editable_entry_set_text (CC_EDITABLE_ENTRY (widget), um_user_get_real_name (user)); gtk_widget_set_tooltip_text (widget, um_user_get_user_name (user)); widget = get_widget (d, "account-type-combo"); um_editable_combo_set_active (UM_EDITABLE_COMBO (widget), um_user_get_account_type (user)); widget = get_widget (d, "account-password-button"); um_editable_button_set_text (UM_EDITABLE_BUTTON (widget), get_password_mode_text (user)); widget = get_widget (d, "autologin-switch"); g_signal_handlers_block_by_func (widget, autologin_changed, d); gtk_switch_set_active (GTK_SWITCH (widget), um_user_get_automatic_login (user)); g_signal_handlers_unblock_by_func (widget, autologin_changed, d); gtk_widget_set_sensitive (widget, !um_user_get_locked (user)); widget = get_widget (d, "account-language-combo"); model = um_editable_combo_get_model (UM_EDITABLE_COMBO (widget)); cc_add_user_languages (model); lang = g_strdup (um_user_get_language (user)); if (!lang) lang = cc_common_language_get_current_language (); cc_common_language_get_iter_for_language (model, lang, &iter); um_editable_combo_set_active_iter (UM_EDITABLE_COMBO (widget), &iter); g_free (lang); widget = get_widget (d, "account-fingerprint-notebook"); label = get_widget (d, "account-fingerprint-label"); label2 = get_widget (d, "account-fingerprint-value-label"); label3 = get_widget (d, "account-fingerprint-button-label"); if (um_user_get_uid (user) != getuid() || !set_fingerprint_label (label2, label3)) { gtk_widget_hide (label); gtk_widget_hide (widget); } else { gtk_widget_show (label); gtk_widget_show (widget); } }
void setup_formats (GtkBuilder *builder) { GtkWidget *treeview; gchar *current_lang; GtkTreeModel *model; GtkCellRenderer *cell; GtkTreeViewColumn *column; GtkWidget *widget; GtkStyleContext *context; GSettings *locale_settings; GtkTreeSelection *selection; locale_settings = g_settings_new ("org.gnome.system.locale"); /* Setup junction between toolbar and treeview */ widget = (GtkWidget *)gtk_builder_get_object (builder, "region-swindow"); context = gtk_widget_get_style_context (widget); gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM); widget = (GtkWidget *)gtk_builder_get_object (builder, "region-toolbar"); context = gtk_widget_get_style_context (widget); gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP); /* Setup formats selector */ treeview = GTK_WIDGET (gtk_builder_get_object (builder, "region_selector")); cell = gtk_cell_renderer_text_new (); g_object_set (cell, "width-chars", 40, "ellipsize", PANGO_ELLIPSIZE_END, NULL); column = gtk_tree_view_column_new_with_attributes (NULL, cell, "text", 1, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column); model = (GtkTreeModel*)gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (model), sort_regions, NULL, NULL); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, GTK_SORT_ASCENDING); gtk_tree_view_set_model (GTK_TREE_VIEW (treeview), model); g_object_set_data_full (G_OBJECT (treeview), "settings", locale_settings, g_object_unref); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (selection, "changed", G_CALLBACK (update_settings_cb), builder); g_signal_connect (selection, "changed", G_CALLBACK (update_examples_cb), builder); /* Connect buttons */ widget = (GtkWidget *)gtk_builder_get_object (builder, "region_add"); g_signal_connect (widget, "clicked", G_CALLBACK (add_region), treeview); current_lang = cc_common_language_get_current_language (); populate_regions (builder, current_lang); g_free (current_lang); g_signal_connect (locale_settings, "changed::region", G_CALLBACK (setting_changed_cb), treeview); }
void setup_system (GtkBuilder *dialog) { gchar *language; GDBusConnection *bus; GtkWidget *button; localed_permission = polkit_permission_new_sync ("org.freedesktop.locale1.set-locale", NULL, NULL, NULL); if (localed_permission == NULL) { GtkWidget *tab_widget, *notebook; int num; tab_widget = WID ("table3"); notebook = WID ("region_notebook"); num = gtk_notebook_page_num (GTK_NOTEBOOK (notebook), tab_widget); gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), num); return; } g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, localed_permission); g_signal_connect (localed_permission, "notify", G_CALLBACK (on_permission_changed), dialog); on_permission_changed (localed_permission, NULL, dialog); button = WID ("copy_settings_button"); g_signal_connect (button, "clicked", G_CALLBACK (copy_settings), dialog); locale_settings = g_settings_new ("org.gnome.system.locale"); g_signal_connect (locale_settings, "changed::region", G_CALLBACK (locale_settings_changed), dialog); g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, locale_settings); xkb_settings = g_settings_new (GKBD_KEYBOARD_SCHEMA); g_signal_connect (xkb_settings, "changed::layouts", G_CALLBACK (xkb_settings_changed), dialog); g_object_weak_ref (G_OBJECT (dialog), (GWeakNotify) g_object_unref, xkb_settings); /* Display user settings */ language = cc_common_language_get_current_language (); system_update_language (dialog, language); g_free (language); locale_settings_changed (locale_settings, "region", dialog); xkb_settings_changed (xkb_settings, "layouts", dialog); bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); g_dbus_proxy_new (bus, G_DBUS_PROXY_FLAGS_NONE, NULL, "org.freedesktop.locale1", "/org/freedesktop/locale1", "org.freedesktop.locale1", NULL, (GAsyncReadyCallback) localed_proxy_ready, dialog); g_object_unref (bus); }