static SheetObjectView * gnm_soi_new_view (SheetObject *so, SheetObjectViewContainer *container) { SheetObjectImage *soi = SHEET_OBJECT_IMAGE (so); GocItem *item = NULL; item = goc_item_new ( gnm_pane_object_group (GNM_PANE (container)), so_image_goc_view_get_type (), NULL); if (soi->image) { goc_item_hide (goc_item_new (GOC_GROUP (item), GOC_TYPE_IMAGE, "image", soi->image, "crop-bottom", soi->crop_bottom, "crop-left", soi->crop_left, "crop-right", soi->crop_right, "crop-top", soi->crop_top, NULL)); } else { GdkPixbuf *placeholder = go_gdk_pixbuf_load_from_file ("res:gnm:pixmaps/unknown_image.png"); GdkPixbuf *pixbuf = gdk_pixbuf_copy (placeholder); goc_item_hide (goc_item_new (GOC_GROUP (item), GOC_TYPE_PIXBUF, "pixbuf", pixbuf, NULL)); g_object_unref (pixbuf); g_object_set_data (G_OBJECT (item), "tile", placeholder); } return gnm_pane_object_register (so, item, TRUE); }
static SheetObjectView * gnm_soi_new_view (SheetObject *so, SheetObjectViewContainer *container) { SheetObjectImage *soi = SHEET_OBJECT_IMAGE (so); GocItem *item = NULL; GdkPixbuf *pixbuf, *placeholder = NULL; pixbuf = soi_get_pixbuf (soi, 1.); if (pixbuf == NULL) { placeholder = gtk_icon_theme_load_icon ( gtk_icon_theme_get_default (), "unknown_image", 100, 0, NULL); pixbuf = gdk_pixbuf_copy (placeholder); } item = goc_item_new ( gnm_pane_object_group (GNM_PANE (container)), so_image_goc_view_get_type (), NULL); goc_item_hide (goc_item_new (GOC_GROUP (item), GOC_TYPE_PIXBUF, "pixbuf", pixbuf, NULL)); g_object_unref (G_OBJECT (pixbuf)); if (placeholder) g_object_set_data (G_OBJECT (item), "tile", placeholder); return gnm_pane_object_register (so, item, TRUE); }
static SheetObjectView * gnm_so_path_new_view (SheetObject *so, SheetObjectViewContainer *container) { GnmSOPath *sop = GNM_SO_PATH (so); GnmSOPathView *item; /* FIXME: this is unsafe if the paths change after the view is created, * but this can't occur for now */ unsigned i; if (sop->path == NULL && sop->paths == NULL) return NULL; item = (GnmSOPathView *) goc_item_new ( gnm_pane_object_group (GNM_PANE (container)), so_path_goc_view_get_type (), NULL); if (sop->path) item->path = goc_item_new (GOC_GROUP (item), GOC_TYPE_PATH, "closed", TRUE, "fill-rule", TRUE, NULL); else { item->paths = g_ptr_array_sized_new (sop->paths->len); g_ptr_array_set_free_func (item->paths, g_object_unref); for (i = 0; i < sop->paths->len; i++) g_ptr_array_add (item->paths, goc_item_new (GOC_GROUP (item), GOC_TYPE_PATH, "closed", TRUE, "fill-rule", TRUE, NULL)); } cb_gnm_so_path_changed (sop, NULL, item); g_signal_connect_object (sop, "notify::style", G_CALLBACK (cb_gnm_so_path_changed), item, 0); return gnm_pane_object_register (so, GOC_ITEM (item), TRUE); }