From ae6da71c3f88e6a650f8df83521382bc325b1f46 Mon Sep 17 00:00:00 2001 From: Nicola Fontana Date: Wed, 28 Apr 2010 19:05:45 +0200 Subject: [PATCH] [AdgADim] Suffix values with a degree by default Overriden the "value" property to provide a more useful implementation that appends ADG_UTF8_DEGREE to the set value by default. --- src/adg/adg-adim.c | 39 ++++++++++++++++++++++++++++----------- src/adg/adg-dim.c | 10 +++++++--- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/adg/adg-adim.c b/src/adg/adg-adim.c index 97b146ea..a687e8b2 100644 --- a/src/adg/adg-adim.c +++ b/src/adg/adg-adim.c @@ -42,8 +42,11 @@ #define PARENT_ENTITY_CLASS ((AdgEntityClass *) adg_adim_parent_class) +G_DEFINE_TYPE(AdgADim, adg_adim, ADG_TYPE_DIM); + enum { PROP_0, + PROP_VALUE, PROP_ORG1, PROP_ORG2, PROP_HAS_EXTENSION1, @@ -52,11 +55,11 @@ enum { static void dispose (GObject *object); -static void get_property (GObject *object, +static void _adg_get_property (GObject *object, guint param_id, GValue *value, GParamSpec *pspec); -static void set_property (GObject *object, +static void _adg_set_property (GObject *object, guint param_id, const GValue *value, GParamSpec *pspec); @@ -79,16 +82,13 @@ static CpmlPath * trail_callback (AdgTrail *trail, gpointer user_data); -G_DEFINE_TYPE(AdgADim, adg_adim, ADG_TYPE_DIM); - - static void adg_adim_class_init(AdgADimClass *klass) { GObjectClass *gobject_class; AdgEntityClass *entity_class; AdgDimClass *dim_class; - GParamSpec *param; + GParamSpec *param, *old_param; gobject_class = (GObjectClass *) klass; entity_class = (AdgEntityClass *) klass; @@ -97,8 +97,8 @@ adg_adim_class_init(AdgADimClass *klass) g_type_class_add_private(klass, sizeof(AdgADimPrivate)); gobject_class->dispose = dispose; - gobject_class->get_property = get_property; - gobject_class->set_property = set_property; + gobject_class->get_property = _adg_get_property; + gobject_class->set_property = _adg_set_property; entity_class->global_changed = _adg_global_changed; entity_class->local_changed = _adg_local_changed; @@ -108,6 +108,16 @@ adg_adim_class_init(AdgADimClass *klass) dim_class->default_value = default_value; + /* Override #AdgDim:value to append a degree symbol + * to the default set value template string */ + old_param = g_object_class_find_property(gobject_class, "value"); + param = g_param_spec_string(old_param->name, + g_param_spec_get_nick(old_param), + g_param_spec_get_blurb(old_param), + "<>" ADG_UTF8_DEGREE, + old_param->flags); + g_object_class_install_property(gobject_class, PROP_VALUE, param); + param = g_param_spec_boxed("org1", P_("First Origin"), P_("Where the first line comes from: this point is used toghether with \"ref1\" to align the first extension line"), @@ -183,11 +193,15 @@ dispose(GObject *object) } static void -get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +_adg_get_property(GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) { AdgADimPrivate *data = ((AdgADim *) object)->data; switch (prop_id) { + case PROP_VALUE: + g_value_set_string(value, adg_dim_get_value((AdgDim *) object)); + break; case PROP_ORG1: g_value_set_boxed(value, data->org1); break; @@ -207,8 +221,8 @@ get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) } static void -set_property(GObject *object, guint prop_id, - const GValue *value, GParamSpec *pspec) +_adg_set_property(GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) { AdgEntity *entity; AdgADimPrivate *data; @@ -217,6 +231,9 @@ set_property(GObject *object, guint prop_id, data = ((AdgADim *) object)->data; switch (prop_id) { + case PROP_VALUE: + adg_dim_set_value((AdgDim *) object, g_value_get_string(value)); + break; case PROP_ORG1: data->org1 = adg_entity_point(entity, data->org1, g_value_get_boxed(value)); diff --git a/src/adg/adg-dim.c b/src/adg/adg-dim.c index 7b9cfce4..11767ae7 100644 --- a/src/adg/adg-dim.c +++ b/src/adg/adg-dim.c @@ -165,10 +165,10 @@ adg_dim_class_init(AdgDimClass *klass) g_object_class_install_property(gobject_class, PROP_DETACHED, param); param = g_param_spec_string("value", - P_("Basic Value"), + P_("Value Template"), P_("The template string to be used for generating the set value of the quote"), NULL, - G_PARAM_READWRITE); + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); g_object_class_install_property(gobject_class, PROP_VALUE, param); param = g_param_spec_string("min", @@ -199,10 +199,14 @@ adg_dim_init(AdgDim *dim) data->level = 1; data->outside = ADG_THREE_STATE_UNKNOWN; data->detached = ADG_THREE_STATE_UNKNOWN; - data->value = NULL; data->min = NULL; data->max = NULL; +#if 0 + /* These ones are G_PARAM_CONSTRUCT, so initialized by GObject */ + data->value = NULL +#endif + dim->data = data; } -- 2.11.4.GIT