diff --git a/konaclient-gtk/glade/previewWidget.glade b/konaclient-gtk/glade/previewWidget.glade index 1225897..b7f6412 100644 --- a/konaclient-gtk/glade/previewWidget.glade +++ b/konaclient-gtk/glade/previewWidget.glade @@ -40,7 +40,6 @@ True True True - False diff --git a/konaclient-gtk/main.c b/konaclient-gtk/main.c index 3623eab..df1451f 100644 --- a/konaclient-gtk/main.c +++ b/konaclient-gtk/main.c @@ -26,11 +26,11 @@ int buildWindow() { previewLayout = gtk_flow_box_new(); gtk_flow_box_set_max_children_per_line(GTK_FLOW_BOX(previewLayout), 200); - for (int i = 0; i < 100; ++i) { + for (int i = 0; i < 2; ++i) { // CUSTOM!!!!! ki = kona_image_new(); - temp = PreviewWidget_new(ki); + g_signal_connect(ki, "notify::previewFile", (GCallback)previewImage_update_preview_from_konaImage, temp); gtk_flow_box_insert(GTK_FLOW_BOX(previewLayout),temp,0); gtk_widget_show(temp); // ------------------- @@ -40,52 +40,57 @@ int buildWindow() { gtk_widget_show(previewLayout); - gtk_container_add(GTK_CONTAINER(previewContainer), previewLayout); + gtk_container_add(GTK_CONTAINER(previewContainer), previewLayout); - g_object_unref(G_OBJECT(builder)); + g_object_unref(G_OBJECT(builder)); - gtk_widget_show(GTK_WIDGET(mainWindow)); + gtk_widget_show(GTK_WIDGET(mainWindow)); - /*** TESTING LIB ***/ - GValue val = G_VALUE_INIT; - GValue sval = G_VALUE_INIT; + GValue sval = G_VALUE_INIT; + g_value_init(&sval, G_TYPE_STRING); + g_value_set_string(&sval, "/home/markus/Pictures/FFT-an.png"); + g_object_set_property((GObject*) ki, "previewFile", &sval); - kona_image_meta meta; - ki = kona_image_new(); - g_value_init(&val, G_TYPE_POINTER); + if (0) { + /*** TESTING LIB ***/ + GValue val = G_VALUE_INIT; + + kona_image_meta meta; + ki = kona_image_new(); + g_value_init(&val, G_TYPE_POINTER); - meta.height = 100; - meta.width = 200; - meta.image_url = "MEOWMEOWMEOW"; + meta.height = 100; + meta.width = 200; + meta.image_url = "MEOWMEOWMEOW"; - g_value_set_pointer(&val, (gpointer) &meta); - g_object_set_property((GObject*) ki, "meta", &val); + g_value_set_pointer(&val, (gpointer) &meta); + g_object_set_property((GObject*) ki, "meta", &val); - g_value_init(&sval, G_TYPE_STRING); - g_value_set_string(&sval, "Hello world!"); - g_object_set_property((GObject*) ki, "fullFile", &sval); + g_value_init(&sval, G_TYPE_STRING); + g_value_set_string(&sval, "Hello world!"); + g_object_set_property((GObject*) ki, "fullFile", &sval); - g_value_reset(&val); - g_value_reset(&sval); + g_value_reset(&val); + g_value_reset(&sval); - meta.height = 0; - meta.width = 1; + meta.height = 0; + meta.width = 1; - // Read back - g_object_get_property((GObject*) ki, "meta", &val); - kona_image_meta *metret; - metret = g_value_get_pointer(&val); - printf("WIDTH=%i\n", metret->width); - printf("HEIGHT=%i\n", metret->height); - - g_object_get_property((GObject*) ki, "fullFile", &sval); - printf("STRING=%s\n", g_value_get_string(&sval)); + // Read back + g_object_get_property((GObject*) ki, "meta", &val); + kona_image_meta *metret; + metret = g_value_get_pointer(&val); + printf("WIDTH=%i\n", metret->width); + printf("HEIGHT=%i\n", metret->height); + g_object_get_property((GObject*) ki, "fullFile", &sval); + printf("STRING=%s\n", g_value_get_string(&sval)); + } } int main(int argc, char **argv) diff --git a/konaclient-gtk/previewwidget.c b/konaclient-gtk/previewwidget.c index ca51ebf..33b4b91 100644 --- a/konaclient-gtk/previewwidget.c +++ b/konaclient-gtk/previewwidget.c @@ -6,17 +6,17 @@ G_DEFINE_TYPE(PreviewWidget, PreviewWidget, GTK_TYPE_BIN) void kona_download_image( GtkWidget *widget, gpointer data ) { - PreviewWidget_set_image(data, "/home/kurisu/Pictures/Screenshot from 2016-03-07 09-16-18.png"); // DEBUG ONLY! + PreviewWidget_set_image(data, "/home/markus/Pictures/ba5431ccdc292f920692d17bdfc2758d.png"); // DEBUG ONLY! } void PreviewWidget_set_image(PreviewWidget *widget, gchar *url) { - GtkWidget *w; + //GtkWidget *w; GList *widgets; int height, width; float iheight, iwidth; widgets = gtk_container_get_children(GTK_CONTAINER(widget)); - w = widgets->data; // Grab GtkImage + //w = widgets->data; // Grab GtkImage GdkPixbuf *p, *ps; p = gdk_pixbuf_new_from_file(url, NULL); @@ -33,44 +33,81 @@ void PreviewWidget_set_image(PreviewWidget *widget, gchar *url) { ps = gdk_pixbuf_scale_simple(p, width, height, GDK_INTERP_BILINEAR); g_object_unref(p); - gtk_image_set_from_pixbuf(GTK_IMAGE(w), ps); + gtk_image_set_from_pixbuf(GTK_IMAGE(widget->image), ps); - gtk_widget_set_visible(w, TRUE); + gtk_widget_set_visible(widget->image, TRUE); - w = g_list_next(widgets)->data; // Grab Spinner - gtk_widget_set_visible(w, FALSE); + gtk_widget_set_visible(widget->spinner, FALSE); } +enum { + PROP_KI=1, + PROP_COUNT +}; +static GParamSpec *properties [PROP_COUNT]; +static void preview_widget_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { + PreviewWidget *self = (PreviewWidget*)object; + + switch (prop_id) { + case PROP_KI: + g_value_set_pointer(value, self->ki); + break; + default: + break; + } +} +static void preview_widget_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { + PreviewWidget *self = (PreviewWidget*)object; + + switch (prop_id) { + case PROP_KI: + self->ki = g_value_get_pointer(value); + break; + default: + break; + } +} void PreviewWidget_class_init(PreviewWidgetClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS(klass); + object_class->set_property = preview_widget_set_property; + object_class->get_property = preview_widget_get_property; + + properties [PROP_KI] = + g_param_spec_pointer("ki", "ki", "Pointer to corresponding KonaImage struct", G_PARAM_READWRITE); + + g_object_class_install_properties(object_class, PROP_COUNT, properties); } 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")); - - /*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); + PreviewWidget* w = g_object_new (TYPE_PREVIEWWIDGET, "ki", ki, NULL); + printf("c_pv=%p\n", w); + //g_signal_connect(ki, "notify::previewFile", (GCallback)previewImage_update_preview_from_konaImage, w); + return w; } @@ -79,7 +116,20 @@ GtkWidget *PreviewWidget_new(KonaImage* ki) void debugfoo(GtkButton *widget, GtkImage *img) { gtk_image_clear(img); - g_object_unref(gtk_image_get_pixbuf(img)); - gtk_widget_destroy(img); + gtk_widget_destroy(GTK_WIDGET(img)); +} + + +// CALLBACKS FROM KONAIMAGE +void previewImage_update_preview_from_konaImage( KonaImage *ki, PreviewWidget *pv) +{ + GValue val = G_VALUE_INIT; + g_value_init(&val, G_TYPE_STRING); + g_object_get_property(ki, "previewFile", &val); + printf("SET IMAGE TO: %s\n", g_value_get_string(&val)); + printf("h_pv=%p\n", pv); + gtk_widget_set_visible(pv->image, TRUE); + //PreviewWidget_set_image(pv, "hi"); + } diff --git a/konaclient-gtk/previewwidget.h b/konaclient-gtk/previewwidget.h index d9201f3..92615ea 100644 --- a/konaclient-gtk/previewwidget.h +++ b/konaclient-gtk/previewwidget.h @@ -18,6 +18,10 @@ typedef struct _PreviewWidgetClass PreviewWidgetClass; struct _PreviewWidget { GtkBin bin; + GtkWidget *image; + GtkWidget *button; + GtkWidget *spinner; + KonaImage *ki; }; struct _PreviewWidgetClass { @@ -32,6 +36,10 @@ void PreviewWidget_set_image(PreviewWidget *widget, gchar *url); void debugfoo(GtkButton *widget, GtkImage* img); + +// CALLBACKS FROM KONAIMAGE +void previewImage_update_preview_from_konaImage( KonaImage *ki, PreviewWidget *pv); + G_END_DECLS #endif // PREVIEWWIDGET_H