pidgin/gtkutils.c

changeset 33360
df9c0c0d8dda
parent 33277
d6229108ce71
parent 33359
aba982dbb801
child 33499
ba4d2f8a8025
equal deleted inserted replaced
33358:d9ff435d843d 33360:df9c0c0d8dda
2160 2160
2161 2161
2162 static void 2162 static void
2163 icon_preview_change_cb(GtkFileChooser *widget, struct _icon_chooser *dialog) 2163 icon_preview_change_cb(GtkFileChooser *widget, struct _icon_chooser *dialog)
2164 { 2164 {
2165 GdkPixbuf *pixbuf, *scale; 2165 GdkPixbuf *pixbuf;
2166 int height, width; 2166 int height, width;
2167 char *basename, *markup, *size; 2167 char *basename, *markup, *size;
2168 struct stat st; 2168 struct stat st;
2169 char *filename; 2169 char *filename;
2170 2170
2171 filename = gtk_file_chooser_get_preview_filename( 2171 filename = gtk_file_chooser_get_preview_filename(
2172 GTK_FILE_CHOOSER(dialog->icon_filesel)); 2172 GTK_FILE_CHOOSER(dialog->icon_filesel));
2173 2173
2174 if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file(filename))) 2174 if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file_at_size(filename, 128, 128)))
2175 { 2175 {
2176 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL); 2176 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL);
2177 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), ""); 2177 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), "");
2178 g_free(filename); 2178 g_free(filename);
2179 return; 2179 return;
2180 } 2180 }
2181 2181
2182 width = gdk_pixbuf_get_width(pixbuf); 2182 gdk_pixbuf_get_file_info(filename, &width, &height);
2183 height = gdk_pixbuf_get_height(pixbuf);
2184 basename = g_path_get_basename(filename); 2183 basename = g_path_get_basename(filename);
2185 size = purple_str_size_to_units(st.st_size); 2184 size = purple_str_size_to_units(st.st_size);
2186 markup = g_strdup_printf(_("<b>File:</b> %s\n" 2185 markup = g_strdup_printf(_("<b>File:</b> %s\n"
2187 "<b>File size:</b> %s\n" 2186 "<b>File size:</b> %s\n"
2188 "<b>Image size:</b> %dx%d"), 2187 "<b>Image size:</b> %dx%d"),
2189 basename, size, width, height); 2188 basename, size, width, height);
2190 2189
2191 scale = gdk_pixbuf_scale_simple(pixbuf, width * 50 / height, 2190 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), pixbuf);
2192 50, GDK_INTERP_BILINEAR);
2193 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), scale);
2194 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup); 2191 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup);
2195 2192
2196 g_object_unref(G_OBJECT(pixbuf)); 2193 g_object_unref(G_OBJECT(pixbuf));
2197 g_object_unref(G_OBJECT(scale));
2198 g_free(filename); 2194 g_free(filename);
2199 g_free(basename); 2195 g_free(basename);
2200 g_free(size); 2196 g_free(size);
2201 g_free(markup); 2197 g_free(markup);
2202 } 2198 }

mercurial