* img: toolkit image object (for example for gtk this would be GdkPixbuf*)
*/
void attachment_set_image(Attachment *attachment, void *img) {
+ ui_image_ref(img);
// TODO: replace this with new toolkit function for setting UiGeneric values
if(attachment->ui->img->set) {
attachment->ui->img->set(attachment->ui->img, img, UI_IMAGE_OBJECT_TYPE);
}
}
+int attachment_set_image_from_data(Attachment *attachment, cxmutstr data) {
+ int ret = ui_image_load_data(attachment->ui->img, data.ptr, data.length);
+ if(!ret) {
+ // we need an extra reference to the image
+ ui_image_ref(attachment->ui->img->value);
+ }
+ return ret;
+}
+
void attachment_set_data(Attachment *attachment, cxmutstr data) {
attachment->bin_content = data;
}
void attachment_set_image(Attachment *attachment, void *img);
+int attachment_set_image_from_data(Attachment *attachment, cxmutstr data);
+
void attachment_set_data(Attachment *attachment, cxmutstr data);
void attachment_save(UiObject *obj, Attachment *attachment, bool cleanup_content);
// create attachment
Attachment *attachment = attachment_create(model->note_allocator, note->resource_id, NOTE_ATTACHMENT_IMAGE, util_resource_name(attachment_path));
attachment_create_ui_model(model->ctx, attachment, note);
- g_object_ref(pixbuf);
attachment_set_image(attachment, pixbuf);
if(attachment_path) {
em->serialize = md_serialize_image;
g_object_ref(image);
g_object_ref(anchor);
+
+ BufferEmbeddedObjects *embedded_objects = g_object_get_data(G_OBJECT(buffer), "embedded");
+ cxListAdd(embedded_objects->objects, em);
g_object_set_data(G_OBJECT(anchor), "em", em);
} else {
free(op);
if(note->model) {
+ // fill attachment model
+ CxIterator i = cxListIterator(note->attachments);
+ cx_foreach(Attachment *, attachment, i) {
+ ui_list_append(note->model->attachments, attachment);
+ if(attachment_set_image_from_data(attachment, attachment->bin_content)) {
+ fprintf(stderr, "Error: cannot open attachment image data\n");
+ }
+ }
+ ui_list_update(note->model->attachments);
+
editor_load_markdown(note, wdata->textview, note->content);
}
note->content_loaded = TRUE;
g_object_unref(pixbuf);
} else {
obj->value = pixbuf;
+ obj->type = UI_IMAGE_OBJECT_TYPE;
}
return 0;
g_object_unref(pixbuf);
} else {
obj->value = pixbuf;
+ obj->type = UI_IMAGE_OBJECT_TYPE;
}
return 0;