static void preferences_widget_sync_string (const gchar *key, GtkWidget *widget) { gchar *value; if (empathy_conf_get_string (empathy_conf_get (), key, &value) && value) { if (GTK_IS_ENTRY (widget)) { gtk_entry_set_text (GTK_ENTRY (widget), value); } else if (GTK_IS_RADIO_BUTTON (widget)) { if (strcmp (key, EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM) == 0) { GType type; GEnumClass *enum_class; GEnumValue *enum_value; GSList *list; GtkWidget *toggle_widget; /* Get index from new string */ type = empathy_contact_list_store_sort_get_type (); enum_class = G_ENUM_CLASS (g_type_class_peek (type)); enum_value = g_enum_get_value_by_nick (enum_class, value); if (enum_value) { list = gtk_radio_button_get_group (GTK_RADIO_BUTTON (widget)); toggle_widget = g_slist_nth_data (list, enum_value->value); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle_widget), TRUE); } } else { g_warning ("Unhandled key:'%s' just had string change", key); } } g_free (value); } }
static void preferences_languages_load (EmpathyPreferences *preferences) { GtkTreeView *view; GtkTreeModel *model; gchar *value; gchar **vlanguages; if (!empathy_conf_get_string (empathy_conf_get (), EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES, &value) || !value) { return; } vlanguages = g_strsplit (value, ",", -1); g_free (value); view = GTK_TREE_VIEW (preferences->treeview_spell_checker); model = gtk_tree_view_get_model (view); gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc) preferences_languages_load_foreach, vlanguages); g_strfreev (vlanguages); }
static void main_window_notify_sort_contact_cb (EmpathyConf *conf, const gchar *key, EmpathyMainWindow *window) { gchar *str = NULL; if (empathy_conf_get_string (conf, key, &str) && str) { GType type; GEnumClass *enum_class; GEnumValue *enum_value; type = empathy_contact_list_store_sort_get_type (); enum_class = G_ENUM_CLASS (g_type_class_peek (type)); enum_value = g_enum_get_value_by_nick (enum_class, str); if (enum_value) { /* By changing the value of the GtkRadioAction, it emits a signal that calls main_window_view_sort_contacts_cb which updates the contacts list */ gtk_radio_action_set_current_value (window->sort_by_name, enum_value->value); } else { g_warning ("Wrong value for sort_criterium configuration : %s", str); } g_free (str); } }
static void spell_setup_languages (void) { gchar *str; if (!empathy_conf_notify_inited) { empathy_conf_notify_add (empathy_conf_get (), EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES, spell_notify_languages_cb, NULL); empathy_conf_notify_inited = TRUE; } if (languages) { return; } if (empathy_conf_get_string (empathy_conf_get (), EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES, &str) && str) { gchar **strv; gint i; strv = g_strsplit (str, ",", -1); i = 0; while (strv && strv[i]) { SpellLanguage *lang; DEBUG ("Setting up language:'%s'", strv[i]); lang = g_slice_new0 (SpellLanguage); lang->config = enchant_broker_init (); lang->speller = enchant_broker_request_dict (lang->config, strv[i]); languages = g_list_append (languages, lang); i++; } if (strv) { g_strfreev (strv); } g_free (str); } }
static void preferences_widget_sync_string_combo (const gchar *key, GtkWidget *widget) { gchar *value; GtkTreeModel *model; GtkTreeIter iter; gboolean found; if (!empathy_conf_get_string (empathy_conf_get (), key, &value)) { return; } model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget)); found = FALSE; if (value && gtk_tree_model_get_iter_first (model, &iter)) { gchar *name; do { gtk_tree_model_get (model, &iter, COL_COMBO_NAME, &name, -1); if (strcmp (name, value) == 0) { found = TRUE; gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter); break; } else { found = FALSE; } g_free (name); } while (gtk_tree_model_iter_next (model, &iter)); } /* Fallback to the first one. */ if (!found) { if (gtk_tree_model_get_iter_first (model, &iter)) { gtk_combo_box_set_active_iter (GTK_COMBO_BOX (widget), &iter); } } g_free (value); }
static void chat_text_view_system_font_update (EmpathyChatTextView *view) { PangoFontDescription *font_description = NULL; gchar *font_name; if (empathy_conf_get_string (empathy_conf_get (), "/desktop/gnome/interface/document_font_name", &font_name) && font_name) { font_description = pango_font_description_from_string (font_name); g_free (font_name); } else { font_description = NULL; } gtk_widget_modify_font (GTK_WIDGET (view), font_description); if (font_description) { pango_font_description_free (font_description); } }
static void avatar_chooser_clicked_cb (GtkWidget *button, EmpathyAvatarChooser *chooser) { GtkFileChooser *chooser_dialog; GtkWidget *image; gchar *saved_dir = NULL; const gchar *default_dir = DEFAULT_DIR; const gchar *pics_dir; GtkFileFilter *filter; EmpathyAvatarChooserPriv *priv = GET_PRIV (chooser); if (priv->chooser_dialog) { gtk_window_present (GTK_WINDOW (priv->chooser_dialog)); return; } priv->chooser_dialog = GTK_FILE_CHOOSER ( gtk_file_chooser_dialog_new (_("Select Your Avatar Image"), empathy_get_toplevel_window (GTK_WIDGET (chooser)), GTK_FILE_CHOOSER_ACTION_OPEN, _("No Image"), GTK_RESPONSE_NO, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_OK, NULL)); chooser_dialog = priv->chooser_dialog; gtk_window_set_destroy_with_parent (GTK_WINDOW (chooser_dialog), TRUE); /* Get special dirs */ empathy_conf_get_string (empathy_conf_get (), EMPATHY_PREFS_UI_AVATAR_DIRECTORY, &saved_dir); if (saved_dir && !g_file_test (saved_dir, G_FILE_TEST_IS_DIR)) { g_free (saved_dir); saved_dir = NULL; } if (!g_file_test (default_dir, G_FILE_TEST_IS_DIR)) { default_dir = NULL; } pics_dir = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); if (pics_dir && !g_file_test (pics_dir, G_FILE_TEST_IS_DIR)) { pics_dir = NULL; } /* Set current dir to the last one or to DEFAULT_DIR or to home */ if (saved_dir) { gtk_file_chooser_set_current_folder (chooser_dialog, saved_dir); } else if (pics_dir) { gtk_file_chooser_set_current_folder (chooser_dialog, pics_dir); } else if (default_dir) { gtk_file_chooser_set_current_folder (chooser_dialog, default_dir); } else { gtk_file_chooser_set_current_folder (chooser_dialog, g_get_home_dir ()); } /* Add shortcuts to special dirs */ if (saved_dir) { gtk_file_chooser_add_shortcut_folder (chooser_dialog, saved_dir, NULL); } else if (pics_dir) { gtk_file_chooser_add_shortcut_folder (chooser_dialog, pics_dir, NULL); } if (default_dir) { gtk_file_chooser_add_shortcut_folder (chooser_dialog, default_dir, NULL); } /* Setup preview image */ image = gtk_image_new (); gtk_file_chooser_set_preview_widget (chooser_dialog, image); gtk_widget_set_size_request (image, AVATAR_SIZE_SAVE, AVATAR_SIZE_SAVE); gtk_widget_show (image); gtk_file_chooser_set_use_preview_label (chooser_dialog, FALSE); g_signal_connect (chooser_dialog, "update-preview", G_CALLBACK (avatar_chooser_update_preview_cb), chooser); /* Setup filers */ filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("Images")); gtk_file_filter_add_pixbuf_formats (filter); gtk_file_chooser_add_filter (chooser_dialog, filter); filter = gtk_file_filter_new (); gtk_file_filter_set_name (filter, _("All Files")); gtk_file_filter_add_pattern (filter, "*"); gtk_file_chooser_add_filter (chooser_dialog, filter); /* Setup response */ gtk_dialog_set_default_response (GTK_DIALOG (chooser_dialog), GTK_RESPONSE_OK); g_signal_connect (chooser_dialog, "response", G_CALLBACK (avatar_chooser_response_cb), chooser); gtk_widget_show (GTK_WIDGET (chooser_dialog)); g_free (saved_dir); }