#include "previewwidget.h" G_DEFINE_TYPE(PreviewWidget, PreviewWidget, GTK_TYPE_BIN) void kona_download_image( GtkWidget *widget, gpointer data ) { PreviewWidget_set_image(data, "/home/kurisu/Pictures/Wallpapers/preview.jpg"); // DEBUG ONLY! } void PreviewWidget_set_image(PreviewWidget *widget, gchar *url) { GtkWidget *w; GList *widgets; int height, width; float iheight, iwidth; widgets = gtk_container_get_children(GTK_CONTAINER(widget)); w = widgets->data; // Grab GtkImage GdkPixbuf *p; p = gdk_pixbuf_new_from_file(url, NULL); iheight = (float) gdk_pixbuf_get_height(p); iwidth = (float) gdk_pixbuf_get_width(p); if (gdk_pixbuf_get_width(p) < gdk_pixbuf_get_height(p)) { height = 150; width = iwidth / iheight * 150; } else { width = 200; height = iheight / iwidth * 200; } p = gdk_pixbuf_scale_simple(p, width, height, GDK_INTERP_BILINEAR); gtk_image_set_from_pixbuf(GTK_IMAGE(w), p); gtk_widget_set_visible(w, TRUE); w = g_list_next(widgets)->data; // Grab Spinner gtk_widget_set_visible(w, FALSE); } void PreviewWidget_class_init(PreviewWidgetClass *klass) { } void PreviewWidget_init(PreviewWidget *klass) { GtkWidget *widget; GtkBuilder *builder; builder = gtk_builder_new(); gtk_builder_add_from_file(builder, "glade/previewWidget.glade", NULL); widget = GTK_WIDGET(gtk_builder_get_object(GTK_BUILDER(builder), "previewWidget")); gtk_builder_connect_signals(builder, NULL); gtk_container_add(GTK_CONTAINER(klass), widget); GTK_WIDGET(gtk_builder_get_object(builder, "image")); /*klass->image= GTK_WIDGET(gtk_builder_get_object(builder, "image")); klass->button = GTK_WIDGET(gtk_builder_get_object(builder, "button")); klass->spinner = GTK_WIDGET(gtk_builder_get_object(builder, "spinner"));*/ g_object_unref(G_OBJECT(builder)); } GtkWidget *PreviewWidget_new(KonaImage* ki) { return g_object_new (TYPE_PREVIEWWIDGET, NULL); } // TODO: DESTROY etc. void debugfoo(GtkButton *widget, GtkImage *img) { gtk_widget_destroy(img); }