| 2254 |
2254 |
| 2255 |
2255 |
| 2256 static void |
2256 static void |
| 2257 icon_preview_change_cb(GtkFileChooser *widget, struct _icon_chooser *dialog) |
2257 icon_preview_change_cb(GtkFileChooser *widget, struct _icon_chooser *dialog) |
| 2258 { |
2258 { |
| 2259 GdkPixbuf *pixbuf, *scale; |
2259 GdkPixbuf *pixbuf; |
| 2260 int height, width; |
2260 int height, width; |
| 2261 char *basename, *markup, *size; |
2261 char *basename, *markup, *size; |
| 2262 struct stat st; |
2262 struct stat st; |
| 2263 char *filename; |
2263 char *filename; |
| 2264 |
2264 |
| 2265 filename = gtk_file_chooser_get_preview_filename( |
2265 filename = gtk_file_chooser_get_preview_filename( |
| 2266 GTK_FILE_CHOOSER(dialog->icon_filesel)); |
2266 GTK_FILE_CHOOSER(dialog->icon_filesel)); |
| 2267 |
2267 |
| 2268 if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file(filename))) |
2268 if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file_at_size(filename, 128, 128))) |
| 2269 { |
2269 { |
| 2270 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL); |
2270 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL); |
| 2271 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), ""); |
2271 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), ""); |
| 2272 g_free(filename); |
2272 g_free(filename); |
| 2273 return; |
2273 return; |
| 2274 } |
2274 } |
| 2275 |
2275 |
| 2276 width = gdk_pixbuf_get_width(pixbuf); |
2276 gdk_pixbuf_get_file_info(filename, &width, &height); |
| 2277 height = gdk_pixbuf_get_height(pixbuf); |
|
| 2278 basename = g_path_get_basename(filename); |
2277 basename = g_path_get_basename(filename); |
| 2279 size = purple_str_size_to_units(st.st_size); |
2278 size = purple_str_size_to_units(st.st_size); |
| 2280 markup = g_strdup_printf(_("<b>File:</b> %s\n" |
2279 markup = g_strdup_printf(_("<b>File:</b> %s\n" |
| 2281 "<b>File size:</b> %s\n" |
2280 "<b>File size:</b> %s\n" |
| 2282 "<b>Image size:</b> %dx%d"), |
2281 "<b>Image size:</b> %dx%d"), |
| 2283 basename, size, width, height); |
2282 basename, size, width, height); |
| 2284 |
2283 |
| 2285 scale = gdk_pixbuf_scale_simple(pixbuf, width * 50 / height, |
2284 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), pixbuf); |
| 2286 50, GDK_INTERP_BILINEAR); |
|
| 2287 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), scale); |
|
| 2288 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup); |
2285 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup); |
| 2289 |
2286 |
| 2290 g_object_unref(G_OBJECT(pixbuf)); |
2287 g_object_unref(G_OBJECT(pixbuf)); |
| 2291 g_object_unref(G_OBJECT(scale)); |
|
| 2292 g_free(filename); |
2288 g_free(filename); |
| 2293 g_free(basename); |
2289 g_free(basename); |
| 2294 g_free(size); |
2290 g_free(size); |
| 2295 g_free(markup); |
2291 g_free(markup); |
| 2296 } |
2292 } |