konaclient-gtk/konaclient-gtk/previewwidget.c

83 lines
2.1 KiB
C

#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);
}