Mercurial > pidgin
changeset 28271:1e5c4b386a2d
Mark theme prefs as translatable, refactor slightly for consistency and plug a small leak.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Thu, 17 Sep 2009 02:56:23 +0000 |
parents | 0e4b43fc68c0 |
children | a21d3f8b4cf8 |
files | pidgin/gtkprefs.c |
diffstat | 1 files changed, 47 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/pidgin/gtkprefs.c Wed Sep 16 16:11:01 2009 +0000 +++ b/pidgin/gtkprefs.c Thu Sep 17 02:56:23 2009 +0000 @@ -459,13 +459,24 @@ return row_ref; } +static gchar * +get_theme_markup(const char *name, gboolean custom, const char *author, + const char *description) +{ + + return g_strdup_printf("<b>%s</b>%s%s%s%s\n<span foreground='dim grey'>%s</span>", + name, custom ? " " : "", custom ? _("(Custom)") : "", + author != NULL ? " - " : "", author != NULL ? author : "", + description != NULL ? description : ""); +} + /* Rebuild the markup for the sound theme selection for "(Custom)" themes */ static void pref_sound_generate_markup(void) { gboolean print_custom, customized; - const gchar *name, *author, *description, *current_theme; - gchar *markup; + const gchar *author, *description, *current_theme; + gchar *name, *markup; PurpleSoundTheme *theme; GtkTreeIter iter; @@ -476,23 +487,24 @@ do { gtk_tree_model_get(GTK_TREE_MODEL(prefs_sound_themes), &iter, 2, &name, -1); - print_custom = customized && g_str_equal(current_theme, name); - - if (!name || *name == '\0') - markup = g_strdup_printf("<b>(Default)</b>%s%s - None\n<span foreground='dim grey'>The default Pidgin sound theme</span>", - print_custom ? " " : "", print_custom ? "(Custom)" : ""); - else { + print_custom = customized && name && g_str_equal(current_theme, name); + + if (!name || *name == '\0') { + g_free(name); + name = g_strdup(_("(Default)")); + author = _("None"); + description = _("The default Pidgin sound theme"); + } else { theme = PURPLE_SOUND_THEME(purple_theme_manager_find_theme(name, "sound")); author = purple_theme_get_author(PURPLE_THEME(theme)); description = purple_theme_get_description(PURPLE_THEME(theme)); - - markup = g_strdup_printf("<b>%s</b>%s%s%s%s\n<span foreground='dim grey'>%s</span>", - name, print_custom ? " " : "", print_custom ? "(Custom)" : "", - author != NULL ? " - " : "", author != NULL ? author : "", description != NULL ? description : ""); } + markup = get_theme_markup(name, print_custom, author, description); + gtk_list_store_set(prefs_sound_themes, &iter, 1, markup, -1); + g_free(name); g_free(markup); } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(prefs_sound_themes), &iter)); @@ -514,7 +526,8 @@ if (image_full != NULL){ pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL); g_free(image_full); - } else pixbuf = NULL; + } else + pixbuf = NULL; gtk_list_store_append(prefs_sound_themes, &iter); gtk_list_store_set(prefs_sound_themes, &iter, 0, pixbuf, 2, purple_theme_get_name(theme), -1); @@ -527,20 +540,21 @@ if (PIDGIN_IS_BLIST_THEME(theme)) store = prefs_blist_themes; - else store = prefs_status_icon_themes; + else + store = prefs_status_icon_themes; image_full = purple_theme_get_image_full(theme); if (image_full != NULL){ pixbuf = gdk_pixbuf_new_from_file_at_scale(image_full, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL); g_free(image_full); - } else pixbuf = NULL; + } else + pixbuf = NULL; name = purple_theme_get_name(theme); author = purple_theme_get_author(theme); description = purple_theme_get_description(theme); - markup = g_strdup_printf("<b>%s</b>%s%s\n<span foreground='dim grey'>%s</span>", name, author != NULL ? " - " : "", - author != NULL ? author : "", description != NULL ? description : ""); + markup = get_theme_markup(name, FALSE, author, description); gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, pixbuf, 1, markup, 2, name, -1); @@ -579,16 +593,16 @@ prefs_themes_refresh(void) { GdkPixbuf *pixbuf = NULL; - gchar *filename; + gchar *tmp; GtkTreeIter iter; prefs_sound_themes_loading = TRUE; /* refresh the list of themes in the manager */ purple_theme_manager_refresh(); - filename = g_build_filename(DATADIR, "icons", "hicolor", "32x32", "apps", "pidgin.png", NULL); - pixbuf = gdk_pixbuf_new_from_file_at_scale(filename, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL); - g_free(filename); + tmp = g_build_filename(DATADIR, "icons", "hicolor", "32x32", "apps", "pidgin.png", NULL); + pixbuf = gdk_pixbuf_new_from_file_at_scale(tmp, PREFS_OPTIMAL_ICON_SIZE, PREFS_OPTIMAL_ICON_SIZE, TRUE, NULL); + g_free(tmp); /* sound themes */ gtk_list_store_clear(prefs_sound_themes); @@ -598,16 +612,18 @@ /* blist themes */ gtk_list_store_clear(prefs_blist_themes); gtk_list_store_append(prefs_blist_themes, &iter); - gtk_list_store_set(prefs_blist_themes, &iter, 0, pixbuf, 1, - "<b>(Default)</b> - None\n<span color='dim grey'>" - "The default Pidgin buddy list theme</span>", 2, "", -1); + tmp = get_theme_markup(_("(Default)"), FALSE, _("None"), + _("The default Pidgin buddy list theme")); + gtk_list_store_set(prefs_blist_themes, &iter, 0, pixbuf, 1, tmp, 2, "", -1); + g_free(tmp); /* status icon themes */ gtk_list_store_clear(prefs_status_icon_themes); gtk_list_store_append(prefs_status_icon_themes, &iter); - gtk_list_store_set(prefs_status_icon_themes, &iter, 0, pixbuf, 1, - "<b>(Default)</b> - None\n<span color='dim grey'>" - "The default Pidgin status icon theme</span>", 2, "", -1); + tmp = get_theme_markup(_("(Default)"), FALSE, _("None"), + _("The default Pidgin status icon theme")); + gtk_list_store_set(prefs_status_icon_themes, &iter, 0, pixbuf, 1, tmp, 2, "", -1); + g_free(tmp); g_object_unref(G_OBJECT(pixbuf)); purple_theme_manager_for_each_theme(prefs_themes_sort); @@ -714,7 +730,8 @@ if ((is_smiley_theme = g_str_equal(type, "smiley"))) destdir = g_build_filename(purple_user_dir(), "smileys", NULL); - else destdir = g_build_filename(purple_user_dir(), "themes", "temp", NULL); + else + destdir = g_build_filename(purple_user_dir(), "themes", "temp", NULL); /* We'll check this just to make sure. This also lets us do something different on * other platforms, if need be */ @@ -741,6 +758,7 @@ } #else if(!winpidgin_gz_untar(path, destdir)) { + purple_notify_error(NULL, NULL, _("Theme failed to unpack."), NULL); g_free(destdir); g_free(type); g_free(original_name); @@ -980,7 +998,7 @@ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/sound/theme", new_theme); /* New theme removes all customization */ - for(i=0; i < PURPLE_NUM_SOUNDS; i++){ + for(i = 0; i < PURPLE_NUM_SOUNDS; i++){ pref = g_strdup_printf(PIDGIN_PREFS_ROOT "/sound/file/%s", pidgin_sound_get_event_option(i)); purple_prefs_set_path(pref, "");