diff --git a/src/zmapWindow/zmapWindowItemFeatureSet.c b/src/zmapWindow/zmapWindowItemFeatureSet.c index 8b5cd94c6cd2fddd3dad4d7a04b14a5a508a19dd..e52e0bf2b6086776b547ff5c840532f621bed4d8 100755 --- a/src/zmapWindow/zmapWindowItemFeatureSet.c +++ b/src/zmapWindow/zmapWindowItemFeatureSet.c @@ -27,9 +27,9 @@ * * Exported functions: See XXXXXXXXXXXXX.h * HISTORY: - * Last edited: Apr 27 14:55 2009 (edgrif) + * Last edited: May 7 16:01 2009 (rds) * Created: Mon Jul 30 13:09:33 2007 (rds) - * CVS info: $Id: zmapWindowItemFeatureSet.c,v 1.16 2009-04-28 14:33:41 edgrif Exp $ + * CVS info: $Id: zmapWindowItemFeatureSet.c,v 1.17 2009-05-07 21:35:14 rds Exp $ *------------------------------------------------------------------- */ #include <string.h> /* memset */ @@ -607,6 +607,49 @@ ZMapWindowItemFeatureSetData zmapWindowItemFeatureSetDestroy(ZMapWindowItemFeatu return item_feature_set; } +/* This function is written the wrong way round. It should be + * re-written, along with extract_value_from_style_table so that + * this function is part of utils and extract_value_from_style_table + * calls it. It wouldn't need to be here then! */ +gboolean zmapWindowStyleListGetSetting(GList *list_of_styles, + char *setting_name, + GValue *value_in_out) +{ + GList *list; + gboolean result = FALSE; + + if(value_in_out && (list = g_list_first(list_of_styles))) + { + ItemFeatureValueDataStruct value_data = {}; + GObjectClass *object_class; + GParamSpec *param_spec; + + object_class = g_type_class_peek(ZMAP_TYPE_WINDOW_ITEM_FEATURE_SET); + + if((param_spec = g_object_class_find_property(object_class, setting_name))) + { + value_data.param_id = param_spec->param_id; + value_data.spec_name = setting_name; + value_data.gvalue = value_in_out; + + result = TRUE; + + do + { + ZMapFeatureTypeStyle style; + GQuark unique_id; + + style = ZMAP_FEATURE_STYLE(list->data); + unique_id = zMapStyleGetUniqueID(style); + extract_value_from_style_table(GINT_TO_POINTER(unique_id), style, &value_data); + } + while((list = g_list_next(list))); + } + } + + return result; +} + /* Object code */ static void zmap_window_item_feature_set_class_init(ZMapWindowItemFeatureSetDataClass set_data_class) diff --git a/src/zmapWindow/zmapWindowItemFeatureSet.h b/src/zmapWindow/zmapWindowItemFeatureSet.h index f76033aa04d8d865d16a1560a928831afe7aef03..878d2fb699b2ade3026101574f576fb79d897b38 100755 --- a/src/zmapWindow/zmapWindowItemFeatureSet.h +++ b/src/zmapWindow/zmapWindowItemFeatureSet.h @@ -27,9 +27,9 @@ * * Exported functions: See XXXXXXXXXXXXX.h * HISTORY: - * Last edited: Apr 27 11:45 2009 (edgrif) + * Last edited: May 7 22:36 2009 (rds) * Created: Fri Feb 6 15:32:46 2009 (rds) - * CVS info: $Id: zmapWindowItemFeatureSet.h,v 1.9 2009-04-28 14:33:41 edgrif Exp $ + * CVS info: $Id: zmapWindowItemFeatureSet.h,v 1.10 2009-05-07 21:36:12 rds Exp $ *------------------------------------------------------------------- */ @@ -111,6 +111,9 @@ void zmapWindowItemFeatureSetFeatureRemove(ZMapWindowItemFeatureSetData item_fea ZMapWindowItemFeatureSetData zmapWindowItemFeatureSetDestroy(ZMapWindowItemFeatureSetData item_feature_set); +gboolean zmapWindowStyleListGetSetting(GList *list_of_styles, + char *setting_name, + GValue *value_in_out); #endif /* __ZMAP_WINDOW_ITEM_FEATURE_SET_H__ */