pidgin/gtkutils.c

branch
release-2.x.y
changeset 33359
aba982dbb801
parent 32043
73c3b1db2364
child 33360
df9c0c0d8dda
child 33477
ed01a53b8afc
equal deleted inserted replaced
33356:3b55f180e38d 33359:aba982dbb801
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 }

mercurial