Mercurial > pidgin.yaz
diff src/gtkrequest.c @ 11357:f0bc5f121684
[gaim-migrate @ 13579]
Image field added to the request API.
committer: Tailor Script <tailor@pidgin.im>
author | Bartoz Oler <bartosz@pidgin.im> |
---|---|
date | Sun, 28 Aug 2005 22:16:17 +0000 |
parents | a511b77a368b |
children | 4db38b374d3f |
line wrap: on
line diff
--- a/src/gtkrequest.c Sun Aug 28 21:43:47 2005 +0000 +++ b/src/gtkrequest.c Sun Aug 28 22:16:17 2005 +0000 @@ -1241,6 +1241,32 @@ } static GtkWidget * +create_image_field(GaimRequestField *field) +{ + GtkWidget *widget; + GdkPixbuf *buf, *scale; + GdkPixbufLoader *loader; + + loader = gdk_pixbuf_loader_new(); + gdk_pixbuf_loader_write(loader, + (const guchar *)gaim_request_field_image_get_buffer(field), + gaim_request_field_image_get_size(field), + NULL); + gdk_pixbuf_loader_close(loader, NULL); + buf = gdk_pixbuf_loader_get_pixbuf(loader); + + scale = gdk_pixbuf_scale_simple(buf, + gaim_request_field_image_get_scale_x(field) * gdk_pixbuf_get_width(buf), + gaim_request_field_image_get_scale_y(field) * gdk_pixbuf_get_height(buf), + GDK_INTERP_BILINEAR); + widget = gtk_image_new_from_pixbuf(scale); + g_object_unref(G_OBJECT(buf)); + g_object_unref(G_OBJECT(scale)); + + return widget; +} + +static GtkWidget * create_account_field(GaimRequestField *field) { GtkWidget *widget; @@ -1604,6 +1630,8 @@ widget = create_choice_field(field); else if (type == GAIM_REQUEST_FIELD_LIST) widget = create_list_field(field); + else if (type == GAIM_REQUEST_FIELD_IMAGE) + widget = create_image_field(field); else if (type == GAIM_REQUEST_FIELD_ACCOUNT) widget = create_account_field(field); else