/** * gstyle_palette_remove_at_index: * @self: a #GstylePalette * @position: A position to remove the #GstyleColor from * * Try to remove the #GstyleColor at @position from the palette * * Returns: %TRUE on succes, %FALSE otherwise. */ gboolean gstyle_palette_remove_at_index (GstylePalette *self, gint position) { GstyleColor *color; g_return_val_if_fail (GSTYLE_IS_PALETTE (self), FALSE); if (0 <= position && position < self->colors->len) { color = GSTYLE_COLOR (g_ptr_array_index (self->colors, position)); remove_color_to_names_sets (self, color); g_ptr_array_remove_index (self->colors, position); g_list_model_items_changed (G_LIST_MODEL (self), position, 1, 0); gstyle_palette_set_changed (self, TRUE); return TRUE; } else { g_warning ("Trying to remove a Color in palette '%s' at out-of-bounds position %i in (0, %i)\n", gstyle_palette_get_name (self), position, self->colors->len - 1); return FALSE; } }
static void dnd_color_fill (GstyleColorWidget *self, GstyleColor *src_color, GstyleColor *dst_color) { const gchar *name; GdkRGBA src_rgba; GdkRGBA dst_rgba; g_assert (GSTYLE_COLOR_WIDGET (self)); g_assert (GSTYLE_COLOR (src_color)); g_assert (GSTYLE_COLOR (dst_color)); gstyle_color_fill_rgba (src_color, &src_rgba); gstyle_color_fill_rgba (dst_color, &dst_rgba); if (!(self->dnd_lock & GSTYLE_COLOR_WIDGET_DND_LOCK_FLAGS_COLOR)) { dst_rgba.red = src_rgba.red; dst_rgba.green = src_rgba.green; dst_rgba.blue = src_rgba.blue; } if (!(self->dnd_lock & GSTYLE_COLOR_WIDGET_DND_LOCK_FLAGS_ALPHA)) dst_rgba.alpha = src_rgba.alpha; gstyle_color_set_rgba (self->color, &dst_rgba); if (!(self->dnd_lock & GSTYLE_COLOR_WIDGET_DND_LOCK_FLAGS_KIND)) gstyle_color_set_kind (dst_color, gstyle_color_get_kind (src_color)); if (!(self->dnd_lock & GSTYLE_COLOR_WIDGET_DND_LOCK_FLAGS_NAME)) { name = gstyle_color_get_name (src_color); gstyle_color_set_name (dst_color, name); } }
/** * gstyle_palette_get_index: * @self: a #GstylePalette * @color: A #GstyleColor * * Search for a #GstyleColor in the palette and * return its index or -1 if not found. * * Returns: An index in the palette or -1. */ gint gstyle_palette_get_index (GstylePalette *self, GstyleColor *color) { guint len; g_return_val_if_fail (GSTYLE_IS_PALETTE (self), -1); g_return_val_if_fail (GSTYLE_COLOR (color), -1); len = self->colors->len; for (gint i = 0; i < len; i++) if (color == g_ptr_array_index (self->colors, i)) return i; return -1; }