From 8b7d9e1600fa856e60ab7218d291d5fa1b95376f Mon Sep 17 00:00:00 2001 From: Juan Pablo Ugarte Date: Fri, 25 Sep 2020 19:17:24 -0300 Subject: GladePropertyDef: cleanup color type handling Cleanup PangoColor and GdkColor handling in make_string_from_gvalue and make_gvalue_from_string functions. --- gladeui/glade-property-def.c | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/gladeui/glade-property-def.c b/gladeui/glade-property-def.c index c3989e65..661c1735 100644 --- a/gladeui/glade-property-def.c +++ b/gladeui/glade-property-def.c @@ -503,15 +503,10 @@ glade_dtostr (double number, gdouble epsilon) * Returns: A newly allocated string representation of @value */ gchar * -glade_property_def_make_string_from_gvalue (GladePropertyDef * - property_def, - const GValue * value) +glade_property_def_make_string_from_gvalue (GladePropertyDef *property_def, + const GValue *value) { - gchar *string = NULL, **strv; - GObject *object; - GdkColor *color; - GdkRGBA *rgba; - GList *objects; + gchar *string = NULL; G_GNUC_BEGIN_IGNORE_DEPRECATIONS if (GLADE_PROPERTY_IS_PARAM_SPEC_VALUE_ARRAY (property_def->pspec)) @@ -551,20 +546,26 @@ glade_property_def_make_string_from_gvalue (GladePropertyDef * { if (property_def->pspec->value_type == GDK_TYPE_COLOR) { - color = g_value_get_boxed (value); + GdkColor *color = g_value_get_boxed (value); if (color) string = g_strdup_printf ("#%04x%04x%04x", color->red, color->green, color->blue); } else if (property_def->pspec->value_type == GDK_TYPE_RGBA) { - rgba = g_value_get_boxed (value); + GdkRGBA *rgba = g_value_get_boxed (value); if (rgba) string = gdk_rgba_to_string (rgba); } + else if (property_def->pspec->value_type == PANGO_TYPE_COLOR) + { + PangoColor *color = g_value_get_boxed (value); + if (color) + string = pango_color_to_string (color); + } else if (property_def->pspec->value_type == G_TYPE_STRV) { - strv = g_value_get_boxed (value); + gchar **strv = g_value_get_boxed (value); if (strv) string = g_strjoinv ("\n", strv); } @@ -614,13 +615,13 @@ glade_property_def_make_string_from_gvalue (GladePropertyDef * } else if (G_IS_PARAM_SPEC_OBJECT (property_def->pspec)) { - object = g_value_get_object (value); + GObject *object = g_value_get_object (value); string = glade_property_def_make_string_from_object (property_def, object); } else if (GLADE_IS_PARAM_SPEC_OBJECTS (property_def->pspec)) { - objects = g_value_get_boxed (value); + GList *objects = g_value_get_boxed (value); string = glade_property_def_make_string_from_objects (property_def, objects); @@ -841,13 +842,11 @@ glade_property_def_make_objects_from_string (GladePropertyDef * */ GValue * glade_property_def_make_gvalue_from_string (GladePropertyDef *property_def, - const gchar *string, - GladeProject *project) + const gchar *string, + GladeProject *project) { GValue *value = g_new0 (GValue, 1); gchar **strv; - GdkColor color = { 0, }; - GdkRGBA rgba = { 0, }; g_value_init (value, property_def->pspec->value_type); @@ -894,6 +893,7 @@ glade_property_def_make_gvalue_from_string (GladePropertyDef *property_def, { if (property_def->pspec->value_type == GDK_TYPE_COLOR) { + GdkColor color; if (gdk_color_parse (string, &color)) g_value_set_boxed (value, &color); else @@ -901,11 +901,20 @@ glade_property_def_make_gvalue_from_string (GladePropertyDef *property_def, } else if (property_def->pspec->value_type == GDK_TYPE_RGBA) { + GdkRGBA rgba; if (gdk_rgba_parse (&rgba, string)) g_value_set_boxed (value, &rgba); else g_warning ("could not parse rgba colour name `%s'", string); } + else if (property_def->pspec->value_type == PANGO_TYPE_COLOR) + { + PangoColor color; + if (pango_color_parse (&color, string)) + g_value_set_boxed (value, &color); + else + g_warning ("could not parse pango color name `%s'", string); + } else if (property_def->pspec->value_type == G_TYPE_STRV) { strv = g_strsplit (string, "\n", 0); -- cgit v1.2.1