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