void mimeview_clear(MimeView *mimeview) { mimeview->has_attach_file = FALSE; gtk_tree_store_clear(mimeview->store); textview_clear(mimeview->textview); imageview_clear(mimeview->imageview); gtk_tree_path_free(mimeview->opened); mimeview->opened = NULL; g_free(mimeview->drag_file); mimeview->drag_file = NULL; }
void imageview_show_image(ImageView *imageview, MimeInfo *mimeinfo, const gchar *file, gboolean resize) { GdkPixbuf *pixbuf; GError *error = NULL; g_return_if_fail(imageview != NULL); g_return_if_fail(imageview->scrolledwin != NULL); g_return_if_fail(imageview->scrolledwin->parent != NULL); if (file) { imageview_clear(imageview); pixbuf = gdk_pixbuf_new_from_file(file, &error); imageview->image_data = pixbuf; } else { pixbuf = (GdkPixbuf *)imageview->image_data; } if (error != NULL) { g_warning("%s\n", error->message); g_error_free(error); } if (!pixbuf) { g_warning(_("Can't load the image.")); return; } imageview->resize = resize; if (resize) { pixbuf = imageview_get_resized_pixbuf (pixbuf, imageview->scrolledwin->parent, 8); } else g_object_ref(pixbuf); if (!imageview->image) { imageview->image = gtk_image_new_from_pixbuf(pixbuf); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(imageview->scrolledwin), imageview->image); } else gtk_image_set_from_pixbuf(GTK_IMAGE(imageview->image), pixbuf); g_object_unref(pixbuf); gtk_widget_show(imageview->image); }
static void mimeview_change_view_type(MimeView *mimeview, MimeViewType type) { TextView *textview = mimeview->textview; ImageView *imageview = mimeview->imageview; GList *children; if (mimeview->type == type) return; children = gtk_container_get_children (GTK_CONTAINER(mimeview->mime_vbox)); if (children) { gtkut_container_remove(GTK_CONTAINER(mimeview->mime_vbox), GTK_WIDGET(children->data)); g_list_free(children); } switch (mimeview->type) { case MIMEVIEW_IMAGE: imageview_clear(mimeview->imageview); break; case MIMEVIEW_TEXT: textview_clear(mimeview->textview); break; default: break; } switch (type) { case MIMEVIEW_IMAGE: gtk_container_add(GTK_CONTAINER(mimeview->mime_vbox), GTK_WIDGET_PTR(imageview)); break; case MIMEVIEW_TEXT: gtk_container_add(GTK_CONTAINER(mimeview->mime_vbox), GTK_WIDGET_PTR(textview)); break; default: return; } mimeview->type = type; }
void imageview_destroy(ImageView *imageview) { imageview_clear(imageview); g_free(imageview); }