//FIXME this looks weird void sheet_release_selected_objects (Sheet *sheet) { GList *list, *copy; GooCanvasGroup *group; gint item_nbr; g_return_if_fail (sheet != NULL); g_return_if_fail (IS_SHEET (sheet)); group = sheet->priv->selected_group; copy = g_list_copy (sheet->priv->selected_objects); // Remove all the selected_objects into selected_group for (list = copy; list; list = list->next) { item_nbr = goo_canvas_item_find_child (GOO_CANVAS_ITEM (group), GOO_CANVAS_ITEM (list->data)); goo_canvas_item_remove_child (GOO_CANVAS_ITEM (group), item_nbr); } g_list_free (copy); g_list_free (sheet->priv->selected_objects); sheet->priv->selected_objects = NULL; }
bool canvas_t::set_background(const std::string &filename) { canvas_goocanvas *gcanvas = static_cast<canvas_goocanvas *>(this); GooCanvasItem *gr = gcanvas->group[CANVAS_GROUP_BG]; int n = goo_canvas_item_get_n_children(gr); if(n > 0) { assert_cmpnum(n, 1); goo_canvas_item_remove_child(gr, 0); } if(filename.empty()) return false; gcanvas->bg.pix.reset(gdk_pixbuf_new_from_file(filename.c_str(), nullptr)); if(!gcanvas->bg.pix) return false; float width = gdk_pixbuf_get_width(gcanvas->bg.pix.get()); float height = gdk_pixbuf_get_height(gcanvas->bg.pix.get()); /* calculate required scale factor */ gcanvas->bg.scale.x = (gcanvas->bounds.max.x - gcanvas->bounds.min.x) / width; gcanvas->bg.scale.y = (gcanvas->bounds.max.y - gcanvas->bounds.min.y) / height; GooCanvasItem *bg = goo_canvas_image_new(gr, gcanvas->bg.pix.get(), gcanvas->bounds.min.x / gcanvas->bg.scale.x - width / 2.0f, gcanvas->bounds.min.y / gcanvas->bg.scale.y - height / 2.0f, nullptr); goo_canvas_item_scale(bg, gcanvas->bg.scale.x, gcanvas->bg.scale.y); return true; }
static VALUE rg_remove_child(VALUE self, VALUE child) { gint child_num; child_num = goo_canvas_item_find_child(SELF(self), SELF(child)); goo_canvas_item_remove_child(SELF(self), child_num); G_CHILD_REMOVE(self, child); return self; }