X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcoloreditor.c;h=8cbbf21541c48e7141fa7c7253da69d7653243ef;hb=e1edc998a2e9c557030d207533932b3120e13fe5;hp=99e3c534aefb71e1e29a2b6fd467f776b7d5c911;hpb=43ffb8521d3e5814d35f5b0451458a111ae37e97;p=~andy%2Fgtk diff --git a/gtk/gtkcoloreditor.c b/gtk/gtkcoloreditor.c index 99e3c534a..8cbbf2154 100644 --- a/gtk/gtkcoloreditor.c +++ b/gtk/gtkcoloreditor.c @@ -12,41 +12,34 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library. If not, see . */ /* TODO * - touch - * - accessible color names * - accessible relations for popups - * - api to replace palette * - saving per-application (?) - * - better checkmark - * - use css for swatches * - better popup theming */ #include "config.h" +#include "gtkcoloreditorprivate.h" + #include "gtkcolorchooserprivate.h" -#include "gtkcoloreditor.h" -#include "gtkcolorplane.h" -#include "gtkcolorscale.h" -#include "gtkcolorswatch.h" +#include "gtkcolorplaneprivate.h" +#include "gtkcolorscaleprivate.h" +#include "gtkcolorswatchprivate.h" +#include "gtkcolorutils.h" #include "gtkgrid.h" #include "gtkorientable.h" -#include "gtkaspectframe.h" -#include "gtkdrawingarea.h" #include "gtkentry.h" #include "gtkoverlay.h" -#include "gtkhsv.h" #include "gtkadjustment.h" #include "gtklabel.h" #include "gtkspinbutton.h" -#include "gtkalignment.h" #include "gtkintl.h" +#include "gtkstylecontext.h" #include @@ -75,14 +68,14 @@ struct _GtkColorEditorPrivate GtkAdjustment *a_adj; guint text_changed : 1; - guint show_alpha : 1; + guint use_alpha : 1; }; enum { PROP_ZERO, - PROP_COLOR, - PROP_SHOW_ALPHA + PROP_RGBA, + PROP_USE_ALPHA }; static void gtk_color_editor_iface_init (GtkColorChooserInterface *iface); @@ -101,21 +94,15 @@ scale_round (gdouble value, gdouble scale) } static void -update_entry (GtkColorEditor *editor) +entry_set_rgba (GtkColorEditor *editor, + const GdkRGBA *color) { gchar *text; - gdouble h, s, v; - gdouble r, g, b; - - h = gtk_adjustment_get_value (editor->priv->h_adj); - s = gtk_adjustment_get_value (editor->priv->s_adj); - v = gtk_adjustment_get_value (editor->priv->v_adj); - gtk_hsv_to_rgb (h, s, v, &r, &g, &b); text = g_strdup_printf ("#%02X%02X%02X", - scale_round (r, 255), - scale_round (g, 255), - scale_round (b, 255)); + scale_round (color->red, 255), + scale_round (color->green, 255), + scale_round (color->blue, 255)); gtk_entry_set_text (GTK_ENTRY (editor->priv->entry), text); editor->priv->text_changed = FALSE; g_free (text); @@ -135,7 +122,7 @@ entry_apply (GtkWidget *entry, if (gdk_rgba_parse (&color, text)) { color.alpha = gtk_adjustment_get_value (editor->priv->a_adj); - gtk_color_chooser_set_color (GTK_COLOR_CHOOSER (editor), &color); + gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (editor), &color); } editor->priv->text_changed = FALSE; @@ -164,17 +151,21 @@ static void hsv_changed (GtkColorEditor *editor) { GdkRGBA color; - gdouble h, s, v; + gdouble h, s, v, a; h = gtk_adjustment_get_value (editor->priv->h_adj); s = gtk_adjustment_get_value (editor->priv->s_adj); v = gtk_adjustment_get_value (editor->priv->v_adj); + a = gtk_adjustment_get_value (editor->priv->a_adj); + gtk_hsv_to_rgb (h, s, v, &color.red, &color.green, &color.blue); - color.alpha = gtk_adjustment_get_value (editor->priv->a_adj); - update_entry (editor); - gtk_color_swatch_set_color (GTK_COLOR_SWATCH (editor->priv->swatch), &color); - gtk_color_scale_set_color (GTK_COLOR_SCALE (editor->priv->a_slider), &color); - g_object_notify (G_OBJECT (editor), "color"); + color.alpha = a; + + gtk_color_swatch_set_rgba (GTK_COLOR_SWATCH (editor->priv->swatch), &color); + gtk_color_scale_set_rgba (GTK_COLOR_SCALE (editor->priv->a_slider), &color); + entry_set_rgba (editor, &color); + + g_object_notify (G_OBJECT (editor), "rgba"); } static void @@ -300,7 +291,8 @@ get_child_position (GtkOverlay *overlay, } static void -value_changed (GtkAdjustment *a, GtkAdjustment *as) +value_changed (GtkAdjustment *a, + GtkAdjustment *as) { gdouble scale; @@ -311,7 +303,8 @@ value_changed (GtkAdjustment *a, GtkAdjustment *as) } static GtkAdjustment * -scaled_adjustment (GtkAdjustment *a, gdouble scale) +scaled_adjustment (GtkAdjustment *a, + gdouble scale) { GtkAdjustment *as; @@ -329,7 +322,9 @@ scaled_adjustment (GtkAdjustment *a, gdouble scale) } static gboolean -popup_draw (GtkWidget *popup, cairo_t *cr, GtkColorEditor *editor) +popup_draw (GtkWidget *popup, + cairo_t *cr, + GtkColorEditor *editor) { GtkStyleContext *context; gint width, height; @@ -344,183 +339,179 @@ popup_draw (GtkWidget *popup, cairo_t *cr, GtkColorEditor *editor) return FALSE; } +static GtkWidget * +create_popup (GtkColorEditor *editor, + GtkWidget *attach, + GtkWidget *contents) +{ + GtkWidget *popup; + + g_object_set (contents, "margin", 12, NULL); + + popup = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); + gtk_style_context_add_class (gtk_widget_get_style_context (popup), GTK_STYLE_CLASS_TOOLTIP); + gtk_container_add (GTK_CONTAINER (popup), contents); + + gtk_widget_show_all (contents); + gtk_widget_set_no_show_all (popup, TRUE); + + g_signal_connect (popup, "draw", G_CALLBACK (popup_draw), editor); + + gtk_overlay_add_overlay (GTK_OVERLAY (editor->priv->overlay), popup); + g_signal_connect (attach, "popup-menu", G_CALLBACK (popup_edit), editor); + + return popup; +} + static void gtk_color_editor_init (GtkColorEditor *editor) { GtkWidget *grid; - GtkWidget *box; GtkWidget *slider; - GtkWidget *alignment; - GtkAdjustment *adj; + GtkWidget *entry; + GtkWidget *swatch; + GtkAdjustment *h_adj, *s_adj, *v_adj, *a_adj; + AtkObject *atk_obj; GdkRGBA transparent = { 0, 0, 0, 0 }; editor->priv = G_TYPE_INSTANCE_GET_PRIVATE (editor, GTK_TYPE_COLOR_EDITOR, GtkColorEditorPrivate); - editor->priv->show_alpha = TRUE; - - editor->priv->h_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); - editor->priv->s_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); - editor->priv->v_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); - editor->priv->a_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); - g_object_ref_sink (editor->priv->h_adj); - g_object_ref_sink (editor->priv->s_adj); - g_object_ref_sink (editor->priv->v_adj); - g_object_ref_sink (editor->priv->a_adj); - g_signal_connect_swapped (editor->priv->h_adj, "value-changed", - G_CALLBACK (hsv_changed), editor); - g_signal_connect_swapped (editor->priv->s_adj, "value-changed", - G_CALLBACK (hsv_changed), editor); - g_signal_connect_swapped (editor->priv->a_adj, "value-changed", - G_CALLBACK (hsv_changed), editor); - g_signal_connect_swapped (editor->priv->v_adj, "value-changed", - G_CALLBACK (hsv_changed), editor); + editor->priv->use_alpha = TRUE; - gtk_widget_push_composite_child (); + editor->priv->h_adj = h_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); + editor->priv->s_adj = s_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); + editor->priv->v_adj = v_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); + editor->priv->a_adj = a_adj = gtk_adjustment_new (0, 0, 1, 0.01, 0.1, 0); - editor->priv->overlay = gtk_overlay_new (); - gtk_widget_override_background_color (editor->priv->overlay, 0, &transparent); - editor->priv->grid = grid = gtk_grid_new (); - gtk_grid_set_row_spacing (GTK_GRID (grid), 12); - gtk_grid_set_column_spacing (GTK_GRID (grid), 12); + g_object_ref_sink (h_adj); + g_object_ref_sink (s_adj); + g_object_ref_sink (v_adj); + g_object_ref_sink (a_adj); + + g_signal_connect_swapped (h_adj, "value-changed", G_CALLBACK (hsv_changed), editor); + g_signal_connect_swapped (s_adj, "value-changed", G_CALLBACK (hsv_changed), editor); + g_signal_connect_swapped (v_adj, "value-changed", G_CALLBACK (hsv_changed), editor); + g_signal_connect_swapped (a_adj, "value-changed", G_CALLBACK (hsv_changed), editor); + + gtk_widget_push_composite_child (); - editor->priv->swatch = gtk_color_swatch_new (); - gtk_widget_set_sensitive (editor->priv->swatch, FALSE); - gtk_color_swatch_set_corner_radii (GTK_COLOR_SWATCH (editor->priv->swatch), 2, 2, 2, 2); - - editor->priv->entry = gtk_entry_new (); - g_signal_connect (editor->priv->entry, "activate", - G_CALLBACK (entry_apply), editor); - g_signal_connect (editor->priv->entry, "notify::text", - G_CALLBACK (entry_text_changed), editor); - g_signal_connect (editor->priv->entry, "focus-out-event", - G_CALLBACK (entry_focus_out), editor); - - editor->priv->h_slider = slider = g_object_new (GTK_TYPE_COLOR_SCALE, - "adjustment", editor->priv->h_adj, - "draw-value", FALSE, - "orientation", GTK_ORIENTATION_VERTICAL, - NULL); - gtk_color_scale_set_type (GTK_COLOR_SCALE (slider), GTK_COLOR_SCALE_HUE); + /* Construct the main UI */ + editor->priv->swatch = swatch = gtk_color_swatch_new (); + gtk_color_swatch_set_selectable (GTK_COLOR_SWATCH (editor->priv->swatch), FALSE); + gtk_widget_set_events (swatch, gtk_widget_get_events (swatch) + & ~(GDK_BUTTON_PRESS_MASK + | GDK_BUTTON_RELEASE_MASK + | GDK_KEY_PRESS_MASK + | GDK_KEY_RELEASE_MASK)); + gtk_widget_set_can_focus (swatch, FALSE); + + editor->priv->entry = entry = gtk_entry_new (); + atk_obj = gtk_widget_get_accessible (entry); + atk_object_set_role (atk_obj, ATK_ROLE_ENTRY); + atk_object_set_name (atk_obj, _("Color Name")); + g_signal_connect (entry, "activate", G_CALLBACK (entry_apply), editor); + g_signal_connect (entry, "notify::text", G_CALLBACK (entry_text_changed), editor); + g_signal_connect (entry, "focus-out-event", G_CALLBACK (entry_focus_out), editor); + + editor->priv->h_slider = slider = gtk_color_scale_new (h_adj, GTK_COLOR_SCALE_HUE); + gtk_orientable_set_orientation (GTK_ORIENTABLE (slider), GTK_ORIENTATION_VERTICAL); if (gtk_widget_get_direction (slider) == GTK_TEXT_DIR_RTL) - gtk_style_context_add_class (gtk_widget_get_style_context (slider), GTK_STYLE_CLASS_SCALE_HAS_MARKS_ABOVE); + gtk_style_context_add_class (gtk_widget_get_style_context (slider), + GTK_STYLE_CLASS_SCALE_HAS_MARKS_ABOVE); else - gtk_style_context_add_class (gtk_widget_get_style_context (slider), GTK_STYLE_CLASS_SCALE_HAS_MARKS_BELOW); - - editor->priv->a_slider = slider = g_object_new (GTK_TYPE_COLOR_SCALE, - "adjustment", editor->priv->a_adj, - "draw-value", FALSE, - "orientation", GTK_ORIENTATION_HORIZONTAL, - NULL); - gtk_color_scale_set_type (GTK_COLOR_SCALE (slider), GTK_COLOR_SCALE_ALPHA); - gtk_style_context_add_class (gtk_widget_get_style_context (slider), GTK_STYLE_CLASS_SCALE_HAS_MARKS_ABOVE); - - editor->priv->sv_plane = gtk_color_plane_new (editor->priv->h_adj, - editor->priv->s_adj, - editor->priv->v_adj); + gtk_style_context_add_class (gtk_widget_get_style_context (slider), + GTK_STYLE_CLASS_SCALE_HAS_MARKS_BELOW); + + editor->priv->sv_plane = gtk_color_plane_new (h_adj, s_adj, v_adj); gtk_widget_set_size_request (editor->priv->sv_plane, 300, 300); + editor->priv->a_slider = slider = gtk_color_scale_new (a_adj, GTK_COLOR_SCALE_ALPHA); + gtk_orientable_set_orientation (GTK_ORIENTABLE (slider), GTK_ORIENTATION_HORIZONTAL); + gtk_style_context_add_class (gtk_widget_get_style_context (slider), + GTK_STYLE_CLASS_SCALE_HAS_MARKS_ABOVE); + + editor->priv->grid = grid = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (grid), 12); + gtk_grid_set_column_spacing (GTK_GRID (grid), 12); + gtk_grid_attach (GTK_GRID (grid), editor->priv->swatch, 1, 0, 1, 1); gtk_grid_attach (GTK_GRID (grid), editor->priv->entry, 2, 0, 1, 1); gtk_grid_attach (GTK_GRID (grid), editor->priv->h_slider, 0, 1, 1, 1); gtk_grid_attach (GTK_GRID (grid), editor->priv->sv_plane, 1, 1, 2, 1); gtk_grid_attach (GTK_GRID (grid), editor->priv->a_slider, 1, 2, 2, 1); - /* This extra alignment is necessary so we have room to the sides + /* This extra margin is necessary so we have room to the sides * to place the popups as desired */ - alignment = gtk_alignment_new (0.5, 0.5, 0, 0); - gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 0, 0, 30, 30); - gtk_container_add (GTK_CONTAINER (editor->priv->overlay), alignment); - gtk_container_add (GTK_CONTAINER (alignment), grid); - - editor->priv->sv_popup = gtk_alignment_new (0.5, 0.5, 0, 0); - gtk_style_context_add_class (gtk_widget_get_style_context (editor->priv->sv_popup), - GTK_STYLE_CLASS_TOOLTIP); - gtk_alignment_set_padding (GTK_ALIGNMENT (editor->priv->sv_popup), 12, 12, 12, 12); + gtk_widget_set_margin_left (grid, 30); + gtk_widget_set_margin_right (grid, 30); + + editor->priv->overlay = gtk_overlay_new (); + gtk_widget_override_background_color (editor->priv->overlay, 0, &transparent); + gtk_container_add (GTK_CONTAINER (editor->priv->overlay), grid); + + /* Construct the sv popup */ + editor->priv->s_entry = entry = gtk_spin_button_new (scaled_adjustment (s_adj, 100), 1, 0); + atk_obj = gtk_widget_get_accessible (entry); + atk_object_set_name (atk_obj, C_("Color channel", "Saturation")); + atk_object_set_role (atk_obj, ATK_ROLE_ENTRY); + g_signal_connect (entry, "key-press-event", G_CALLBACK (popup_key_press), editor); + + editor->priv->v_entry = entry = gtk_spin_button_new (scaled_adjustment (v_adj, 100), 1, 0); + atk_obj = gtk_widget_get_accessible (entry); + atk_object_set_name (atk_obj, C_("Color channel", "Value")); + atk_object_set_role (atk_obj, ATK_ROLE_ENTRY); + g_signal_connect (entry, "key-press-event", G_CALLBACK (popup_key_press), editor); + grid = gtk_grid_new (); + gtk_grid_set_row_spacing (GTK_GRID (grid), 6); gtk_grid_set_column_spacing (GTK_GRID (grid), 6); - adj = scaled_adjustment (editor->priv->s_adj, 100); - editor->priv->s_entry = gtk_spin_button_new (adj, 1, 0); - g_signal_connect (editor->priv->s_entry, "key-press-event", - G_CALLBACK (popup_key_press), editor); - - adj = scaled_adjustment (editor->priv->v_adj, 100); - editor->priv->v_entry = gtk_spin_button_new (adj, 1, 0); - g_signal_connect (editor->priv->v_entry, "key-press-event", - G_CALLBACK (popup_key_press), editor); - gtk_container_add (GTK_CONTAINER (editor->priv->sv_popup), grid); gtk_grid_attach (GTK_GRID (grid), gtk_label_new (C_("Color channel", "S")), 0, 0, 1, 1); gtk_grid_attach (GTK_GRID (grid), editor->priv->s_entry, 1, 0, 1, 1); gtk_grid_attach (GTK_GRID (grid), gtk_label_new (C_("Color channel", "V")), 0, 1, 1, 1); gtk_grid_attach (GTK_GRID (grid), editor->priv->v_entry, 1, 1, 1, 1); - gtk_widget_show_all (editor->priv->sv_popup); - gtk_widget_hide (editor->priv->sv_popup); - gtk_widget_set_no_show_all (editor->priv->sv_popup, TRUE); - - gtk_overlay_add_overlay (GTK_OVERLAY (editor->priv->overlay), editor->priv->sv_popup); - - g_signal_connect (editor->priv->sv_popup, "draw", - G_CALLBACK (popup_draw), editor); - g_signal_connect (editor->priv->sv_plane, "popup-menu", - G_CALLBACK (popup_edit), editor); - - editor->priv->h_popup = gtk_alignment_new (0.5, 0.5, 0, 0); - gtk_style_context_add_class (gtk_widget_get_style_context (editor->priv->h_popup), - GTK_STYLE_CLASS_TOOLTIP); - gtk_alignment_set_padding (GTK_ALIGNMENT (editor->priv->h_popup), 12, 12, 12, 12); - box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - adj = scaled_adjustment (editor->priv->h_adj, 100); - editor->priv->h_entry = gtk_spin_button_new (adj, 1, 0); - g_signal_connect (editor->priv->h_entry, "key-press-event", - G_CALLBACK (popup_key_press), editor); - gtk_container_add (GTK_CONTAINER (editor->priv->h_popup), box); - gtk_container_add (GTK_CONTAINER (box), gtk_label_new (C_("Color channel", "H"))); - gtk_container_add (GTK_CONTAINER (box), editor->priv->h_entry); - gtk_widget_show_all (editor->priv->h_popup); - gtk_widget_hide (editor->priv->h_popup); - gtk_widget_set_no_show_all (editor->priv->h_popup, TRUE); - - gtk_overlay_add_overlay (GTK_OVERLAY (editor->priv->overlay), editor->priv->h_popup); - - g_signal_connect (editor->priv->h_popup, "draw", - G_CALLBACK (popup_draw), editor); - g_signal_connect (editor->priv->h_slider, "popup-menu", - G_CALLBACK (popup_edit), editor); - - editor->priv->a_popup = gtk_alignment_new (0.5, 0.5, 0, 0); - gtk_style_context_add_class (gtk_widget_get_style_context (editor->priv->a_popup), - GTK_STYLE_CLASS_TOOLTIP); - gtk_alignment_set_padding (GTK_ALIGNMENT (editor->priv->a_popup), 12, 12, 12, 12); + + editor->priv->sv_popup = create_popup (editor, editor->priv->sv_plane, grid); + + /* Construct the h popup */ + editor->priv->h_entry = entry = gtk_spin_button_new (scaled_adjustment (h_adj, 100), 1, 0); + atk_obj = gtk_widget_get_accessible (entry); + atk_object_set_name (atk_obj, C_("Color channel", "Hue")); + atk_object_set_role (atk_obj, ATK_ROLE_ENTRY); + g_signal_connect (entry, "key-press-event", G_CALLBACK (popup_key_press), editor); + + grid = gtk_grid_new (); + gtk_grid_set_column_spacing (GTK_GRID (grid), 6); + + gtk_grid_attach (GTK_GRID (grid), gtk_label_new (C_("Color channel", "H")), 0, 0, 1, 1); + gtk_grid_attach (GTK_GRID (grid), editor->priv->h_entry, 1, 0, 1, 1); + + editor->priv->h_popup = create_popup (editor, editor->priv->h_slider, grid); + + /* Construct the a popup */ + editor->priv->a_entry = entry = gtk_spin_button_new (scaled_adjustment (a_adj, 100), 1, 0); + atk_obj = gtk_widget_get_accessible (entry); + atk_object_set_name (atk_obj, C_("Color channel", "Alpha")); + atk_object_set_role (atk_obj, ATK_ROLE_ENTRY); + g_signal_connect (entry, "key-press-event", G_CALLBACK (popup_key_press), editor); + grid = gtk_grid_new (); gtk_grid_set_column_spacing (GTK_GRID (grid), 6); - adj = scaled_adjustment (editor->priv->a_adj, 100); - editor->priv->a_entry = gtk_spin_button_new (adj, 1, 0); - g_signal_connect (editor->priv->a_entry, "key-press-event", - G_CALLBACK (popup_key_press), editor); - gtk_container_add (GTK_CONTAINER (editor->priv->a_popup), grid); + gtk_grid_attach (GTK_GRID (grid), gtk_label_new (C_("Color channel", "A")), 0, 0, 1, 1); gtk_grid_attach (GTK_GRID (grid), editor->priv->a_entry, 1, 0, 1, 1); - gtk_widget_show_all (editor->priv->a_popup); - gtk_widget_hide (editor->priv->a_popup); - gtk_widget_set_no_show_all (editor->priv->a_popup, TRUE); - - gtk_overlay_add_overlay (GTK_OVERLAY (editor->priv->overlay), editor->priv->a_popup); - g_signal_connect (editor->priv->a_popup, "draw", - G_CALLBACK (popup_draw), editor); - g_signal_connect (editor->priv->a_slider, "popup-menu", - G_CALLBACK (popup_edit), editor); + editor->priv->a_popup = create_popup (editor, editor->priv->a_slider, grid); - g_signal_connect (editor->priv->overlay, "get-child-position", - G_CALLBACK (get_child_position), editor); - g_signal_connect (editor, "notify::visible", - G_CALLBACK (dismiss_current_popup), NULL); + /* Hook up popup positioning */ + g_signal_connect (editor->priv->overlay, "get-child-position", G_CALLBACK (get_child_position), editor); + g_signal_connect (editor, "notify::visible", G_CALLBACK (dismiss_current_popup), NULL); gtk_widget_show_all (editor->priv->overlay); - gtk_container_add (GTK_CONTAINER (editor), editor->priv->overlay); + gtk_widget_pop_composite_child (); } @@ -535,14 +526,14 @@ gtk_color_editor_get_property (GObject *object, switch (prop_id) { - case PROP_COLOR: + case PROP_RGBA: { GdkRGBA color; - gtk_color_chooser_get_color (cc, &color); + gtk_color_chooser_get_rgba (cc, &color); g_value_set_boxed (value, &color); } break; - case PROP_SHOW_ALPHA: + case PROP_USE_ALPHA: g_value_set_boolean (value, gtk_widget_get_visible (ce->priv->a_slider)); break; default: @@ -552,16 +543,14 @@ gtk_color_editor_get_property (GObject *object, } static void -gtk_color_editor_set_show_alpha (GtkColorEditor *editor, - gboolean show_alpha) +gtk_color_editor_set_use_alpha (GtkColorEditor *editor, + gboolean use_alpha) { - if (editor->priv->show_alpha != show_alpha) + if (editor->priv->use_alpha != use_alpha) { - editor->priv->show_alpha = show_alpha; - - gtk_widget_set_visible (editor->priv->a_slider, show_alpha); - - gtk_color_swatch_set_show_alpha (GTK_COLOR_SWATCH (editor->priv->swatch), show_alpha); + editor->priv->use_alpha = use_alpha; + gtk_widget_set_visible (editor->priv->a_slider, use_alpha); + gtk_color_swatch_set_use_alpha (GTK_COLOR_SWATCH (editor->priv->swatch), use_alpha); } } @@ -576,11 +565,11 @@ gtk_color_editor_set_property (GObject *object, switch (prop_id) { - case PROP_COLOR: - gtk_color_chooser_set_color (cc, g_value_get_boxed (value)); + case PROP_RGBA: + gtk_color_chooser_set_rgba (cc, g_value_get_boxed (value)); break; - case PROP_SHOW_ALPHA: - gtk_color_editor_set_show_alpha (ce, g_value_get_boolean (value)); + case PROP_USE_ALPHA: + gtk_color_editor_set_use_alpha (ce, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -610,15 +599,15 @@ gtk_color_editor_class_init (GtkColorEditorClass *class) object_class->get_property = gtk_color_editor_get_property; object_class->set_property = gtk_color_editor_set_property; - g_object_class_override_property (object_class, PROP_COLOR, "color"); - g_object_class_override_property (object_class, PROP_SHOW_ALPHA, "show-alpha"); + g_object_class_override_property (object_class, PROP_RGBA, "rgba"); + g_object_class_override_property (object_class, PROP_USE_ALPHA, "use-alpha"); g_type_class_add_private (class, sizeof (GtkColorEditorPrivate)); } static void -gtk_color_editor_get_color (GtkColorChooser *chooser, - GdkRGBA *color) +gtk_color_editor_get_rgba (GtkColorChooser *chooser, + GdkRGBA *color) { GtkColorEditor *editor = GTK_COLOR_EDITOR (chooser); gdouble h, s, v; @@ -631,8 +620,8 @@ gtk_color_editor_get_color (GtkColorChooser *chooser, } static void -gtk_color_editor_set_color (GtkColorChooser *chooser, - const GdkRGBA *color) +gtk_color_editor_set_rgba (GtkColorChooser *chooser, + const GdkRGBA *color) { GtkColorEditor *editor = GTK_COLOR_EDITOR (chooser); gdouble h, s, v; @@ -643,21 +632,19 @@ gtk_color_editor_set_color (GtkColorChooser *chooser, gtk_adjustment_set_value (editor->priv->s_adj, s); gtk_adjustment_set_value (editor->priv->v_adj, v); gtk_adjustment_set_value (editor->priv->a_adj, color->alpha); - gtk_color_swatch_set_color (GTK_COLOR_SWATCH (editor->priv->swatch), color); - gtk_color_scale_set_color (GTK_COLOR_SCALE (editor->priv->a_slider), color); - - update_entry (editor); - gtk_widget_queue_draw (GTK_WIDGET (editor)); + gtk_color_swatch_set_rgba (GTK_COLOR_SWATCH (editor->priv->swatch), color); + gtk_color_scale_set_rgba (GTK_COLOR_SCALE (editor->priv->a_slider), color); + entry_set_rgba (editor, color); - g_object_notify (G_OBJECT (editor), "color"); + g_object_notify (G_OBJECT (editor), "rgba"); } static void gtk_color_editor_iface_init (GtkColorChooserInterface *iface) { - iface->get_color = gtk_color_editor_get_color; - iface->set_color = gtk_color_editor_set_color; + iface->get_rgba = gtk_color_editor_get_rgba; + iface->set_rgba = gtk_color_editor_set_rgba; } GtkWidget *