/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 2003 Hiroyuki Yamamoto & the Sylpheed-Claws team
+ * Copyright (C) 2003-2004 Hiroyuki Yamamoto & the Sylpheed-Claws team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "intl.h"
#include "utils.h"
+#include "codeconv.h"
#include "prefs_common.h"
#include "prefs_gtk.h"
item = gtk_menu_item_new_with_label(tname->name);
gtk_widget_show(item);
- gtk_signal_connect(GTK_OBJECT(item), "activate",
- GTK_SIGNAL_FUNC(prefs_themes_menu_item_activated_cb),
- tname->item->data);
+ g_signal_connect(G_OBJECT(item), "activate",
+ G_CALLBACK(prefs_themes_menu_item_activated_cb),
+ tname->item->data);
gtk_menu_append(GTK_MENU(menu), item);
if (tdata->displayed != NULL && tdata->displayed == tpath)
void prefs_themes_done(void)
{
ThemesData *tdata = prefs_themes_data;
- GList *n;
debug_print("Finished prefereces for themes.\n");
static void prefs_themes_btn_install_clicked_cb(GtkWidget *widget, gpointer data)
{
- struct stat s;
gchar *filename, *source;
gchar *themeinfo, *themename;
gchar *alert_title = NULL;
AlertValue val = 0;
ThemesData *tdata = prefs_themes_data;
- filename = filesel_select_file(_("Select theme folder"), NULL);
+ filename = filesel_select_file_open(_("Select theme folder"), NULL);
if (filename == NULL)
return;
}
if (getuid() == 0) {
val = alertpanel(alert_title,
- _("Do you want to install theme for system's all users?"),
+ _("Do you want to install theme for all users?"),
_("Yes"), _("No"), _("Cancel"));
switch (val) {
case G_ALERTDEFAULT:
prefs_themes_foreach_file(source, prefs_themes_file_install, cinfo);
if (cinfo->status == NULL) {
GList *insted;
-
- alertpanel_notice(_("Theme installed succesfully"));
+
/* update interface to show newly installed theme */
prefs_themes_get_themes_and_names(tdata);
insted = g_list_find_custom(tdata->themes,
(gpointer)(cinfo->dest),
(GCompareFunc)strcmp2);
- tdata->displayed = (gchar *)(insted->data);
- prefs_themes_set_themes_menu(GTK_OPTION_MENU(tdata->page->op_menu), tdata);
- prefs_themes_display_global_stats(tdata);
- prefs_themes_get_theme_info(tdata);
+ if (NULL != insted) {
+ alertpanel_notice(_("Theme installed succesfully"));
+ tdata->displayed = (gchar *)(insted->data);
+ prefs_themes_set_themes_menu(GTK_OPTION_MENU(tdata->page->op_menu), tdata);
+ prefs_themes_display_global_stats(tdata);
+ prefs_themes_get_theme_info(tdata);
+ }
+ else
+ alertpanel_error(_("Failed installing theme"));
}
else
alertpanel_error(_("File %s failed\nwhile installing theme."), cinfo->status);
gtk_widget_set_sensitive(theme->btn_remove, can_rem);
}
+/* placeholders may already be utf8 (i18n) */
+#define SET_LABEL_TEXT_UTF8(label, text) \
+{ \
+ gchar *tmpstr; \
+ \
+ if (!g_utf8_validate(text, -1, NULL)) \
+ tmpstr = conv_codeset_strdup(text, \
+ conv_get_current_charset_str(), CS_UTF_8); \
+ else \
+ tmpstr = g_strdup(text); \
+ \
+ gtk_label_set_text(GTK_LABEL(label), tmpstr); \
+ g_free(tmpstr); \
+}
static void prefs_themes_display_theme_info(ThemesData *tdata, const ThemeInfo *info)
{
ThemesPage *theme = tdata->page;
gchar *save_prefs_path;
gint i;
-
- gtk_label_set_text(GTK_LABEL(theme->name), info->name);
- gtk_label_set_text(GTK_LABEL(theme->author), info->author);
- gtk_label_set_text(GTK_LABEL(theme->url), info->url);
- gtk_label_set_text(GTK_LABEL(theme->status), info->status);
+
+ SET_LABEL_TEXT_UTF8(theme->name, info->name);
+ SET_LABEL_TEXT_UTF8(theme->author, info->author);
+ SET_LABEL_TEXT_UTF8(theme->url, info->url);
+ SET_LABEL_TEXT_UTF8(theme->status, info->status);
save_prefs_path = prefs_common.pixmap_theme_path;
prefs_common.pixmap_theme_path = tdata->displayed;
for (i = 0; i < PREVIEW_ICONS; ++i) {
stock_pixmap_gdk(theme->window, prefs_themes_icons[i],
&(theme->pixmaps[i]), &(theme->masks[i]));
- gtk_pixmap_set(GTK_PIXMAP(theme->icons[i]),
+ gtk_image_set_from_pixmap(GTK_IMAGE(theme->icons[i]),
theme->pixmaps[i], theme->masks[i]);
}
prefs_common.pixmap_theme_path = save_prefs_path;
prefs_themes_update_buttons(tdata);
}
+#undef SET_LABEL_TEXT_UTF8
static void prefs_themes_display_global_stats(const ThemesData *tdata)
{
dinfo = g_new0(DirInfo, 1);
prefs_themes_foreach_file(dirname, prefs_themes_file_stats, dinfo);
- stats = g_strdup_printf(_("%d files (%d icons), size is %s"),
+ stats = g_strdup_printf(_("%d files (%d icons), size: %s"),
dinfo->files, dinfo->pixms, to_human_readable(dinfo->bytes));
g_free(dinfo);
NULL, dummy_pixmap_xpm);
if (gdkpixmap == NULL)
g_error ("Couldn't create replacement pixmap.");
- pixmap = gtk_pixmap_new (gdkpixmap, mask);
- gdk_pixmap_unref (gdkpixmap);
- gdk_bitmap_unref (mask);
+ pixmap = gtk_image_new_from_pixmap(gdkpixmap, mask);
+ g_object_unref (gdkpixmap);
+ g_object_unref (mask);
return pixmap;
}
/* END GLADE CODE */
gtk_container_add (GTK_CONTAINER (hbuttonbox1), btn_remove);
GTK_WIDGET_SET_FLAGS (btn_remove, GTK_CAN_DEFAULT);
- gtk_signal_connect(GTK_OBJECT (btn_use), "clicked",
- GTK_SIGNAL_FUNC (prefs_themes_btn_use_clicked_cb),
- NULL);
- gtk_signal_connect(GTK_OBJECT(btn_remove), "clicked",
- GTK_SIGNAL_FUNC(prefs_themes_btn_remove_clicked_cb),
- NULL);
- gtk_signal_connect(GTK_OBJECT(btn_install), "clicked",
- GTK_SIGNAL_FUNC(prefs_themes_btn_install_clicked_cb),
- NULL);
- gtk_signal_connect(GTK_OBJECT(btn_more), "clicked",
- GTK_SIGNAL_FUNC(prefs_themes_btn_more_clicked_cb),
- NULL);
+ g_signal_connect(G_OBJECT(btn_use), "clicked",
+ G_CALLBACK(prefs_themes_btn_use_clicked_cb),
+ NULL);
+ g_signal_connect(G_OBJECT(btn_remove), "clicked",
+ G_CALLBACK(prefs_themes_btn_remove_clicked_cb),
+ NULL);
+ g_signal_connect(G_OBJECT(btn_install), "clicked",
+ G_CALLBACK(prefs_themes_btn_install_clicked_cb),
+ NULL);
+ g_signal_connect(G_OBJECT(btn_more), "clicked",
+ G_CALLBACK(prefs_themes_btn_more_clicked_cb),
+ NULL);
gtk_widget_grab_default (btn_use);
/* END GLADE EDITED CODE */