From 4de4054fdd53cca142b77fafad7f9fd687523f9d Mon Sep 17 00:00:00 2001 From: edgrif <edgrif> Date: Tue, 19 Jan 2010 18:33:57 +0000 Subject: [PATCH] add new version of display mode setting code to fix bugs. --- .../items/zmapWindowContainerFeatureSet.c | 76 +++++++++++++++---- .../items/zmapWindowContainerFeatureSet.h | 11 ++- 2 files changed, 69 insertions(+), 18 deletions(-) diff --git a/src/zmapWindow/items/zmapWindowContainerFeatureSet.c b/src/zmapWindow/items/zmapWindowContainerFeatureSet.c index 0c300c075..b857fd3a4 100755 --- a/src/zmapWindow/items/zmapWindowContainerFeatureSet.c +++ b/src/zmapWindow/items/zmapWindowContainerFeatureSet.c @@ -27,9 +27,9 @@ * * Exported functions: See XXXXXXXXXXXXX.h * HISTORY: - * Last edited: Oct 27 11:53 2009 (edgrif) + * Last edited: Jan 19 18:31 2010 (edgrif) * Created: Mon Jul 30 13:09:33 2007 (rds) - * CVS info: $Id: zmapWindowContainerFeatureSet.c,v 1.16 2010-01-19 12:36:53 mh17 Exp $ + * CVS info: $Id: zmapWindowContainerFeatureSet.c,v 1.17 2010-01-19 18:33:57 edgrif Exp $ *------------------------------------------------------------------- */ #include <string.h> /* memset */ @@ -82,6 +82,8 @@ typedef struct ZMapFeature feature; }QueueFeatureStruct, *QueueFeature; + + static void zmap_window_item_feature_set_class_init (ZMapWindowContainerFeatureSetClass container_set_class); static void zmap_window_item_feature_set_init (ZMapWindowContainerFeatureSet container_set); static void zmap_window_item_feature_set_set_property(GObject *gobject, @@ -109,16 +111,18 @@ static void zmap_g_queue_replace(GQueue *queue, gpointer old, gpointer new); static GObjectClass *parent_class_G = NULL; - static gboolean debug_table_ids_G = FALSE; + + /*! * \brief Get the GType for the ZMapWindowContainerFeatureSet GObjects * * \return GType corresponding to the GObject as registered by glib. */ + GType zmapWindowContainerFeatureSetGetType(void) { static GType group_type = 0; @@ -532,13 +536,13 @@ gboolean zmapWindowContainerFeatureSetGetMagValues(ZMapWindowContainerFeatureSet /*! - * \brief Access the display state of a column. + * Functions to set/get display state of column, i.e. show, show_hide or hide. Complicated + * by having an overall state for the column and potentially sub-states for sub-features. * * \param The container to interrogate. * * \return The display state of the container. */ - ZMapStyleColumnDisplayState zmapWindowContainerFeatureSetGetDisplay(ZMapWindowContainerFeatureSet container_set) { ZMapStyleColumnDisplayState display = ZMAPSTYLE_COLDISPLAY_SHOW; @@ -547,16 +551,19 @@ ZMapStyleColumnDisplayState zmapWindowContainerFeatureSetGetDisplay(ZMapWindowCo ZMAPSTYLE_PROPERTY_DISPLAY_MODE, &(container_set->settings.display_state), NULL); - display = container_set->settings.display_state; + display = container_set->settings.display_state ; - return display; + return display ; } -/*! - * \brief Change the display state of the container. + + + +/*! Sets the given state both on the column _and_ in all the styles for the features + * within that column. * * This function needs to update all the styles in the local cache of styles that the column holds. - * However this does not actually take care of the foo_canvas_show/hide of the column, as that is + * However this does not actually do the foo_canvas_show/hide of the column, as that is * application logic that is held elsewhere. * * \param container The container to set. @@ -564,11 +571,16 @@ ZMapStyleColumnDisplayState zmapWindowContainerFeatureSetGetDisplay(ZMapWindowCo * * \return void */ -void zmapWindowContainerFeatureSetDisplay(ZMapWindowContainerFeatureSet container_set, ZMapStyleColumnDisplayState state) +void zmapWindowContainerFeatureSetSetDisplay(ZMapWindowContainerFeatureSet container_set, + ZMapStyleColumnDisplayState state) { ItemFeatureValueDataStruct value_data = {NULL}; GValue value = {0}; + g_object_set(G_OBJECT(container_set), + ZMAPSTYLE_PROPERTY_DISPLAY_MODE, state, + NULL); + g_value_init(&value, G_TYPE_UINT); g_value_set_uint(&value, state); @@ -590,6 +602,9 @@ void zmapWindowContainerFeatureSetDisplay(ZMapWindowContainerFeatureSet containe } + + + /*! * \brief Example of how to change the setting in only one style. * @@ -652,6 +667,7 @@ gboolean zmapWindowContainerFeatureSetShowWhenEmpty(ZMapWindowContainerFeatureSe return show; } + /*! * \brief Access the frame mode of a column. * @@ -659,7 +675,6 @@ gboolean zmapWindowContainerFeatureSetShowWhenEmpty(ZMapWindowContainerFeatureSe * * \return The frame mode of the container. */ - ZMapStyle3FrameMode zmapWindowContainerFeatureSetGetFrameMode(ZMapWindowContainerFeatureSet container_set) { ZMapStyle3FrameMode frame_mode = ZMAPSTYLE_3_FRAME_INVALID; @@ -1101,7 +1116,7 @@ static void zmap_window_item_feature_set_class_init(ZMapWindowContainerFeatureSe ZMAPSTYLE_COLDISPLAY_INVALID, ZMAPSTYLE_COLDISPLAY_SHOW, ZMAPSTYLE_COLDISPLAY_INVALID, - ZMAP_PARAM_STATIC_RO)); + ZMAP_PARAM_STATIC_RW)); /* bump mode */ g_object_class_install_property(gobject_class, @@ -1193,9 +1208,15 @@ static void zmap_window_item_feature_set_set_property(GObject *gobject, const GValue *value, GParamSpec *pspec) { + ZMapWindowContainerFeatureSet container_feature_set ; + + container_feature_set = ZMAP_CONTAINER_FEATURESET(gobject); switch(param_id) { + case ITEM_FEATURE_SET_VISIBLE: + container_feature_set->settings.display_state = g_value_get_uint(value) ; + break ; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, param_id, pspec); break; @@ -1394,7 +1415,6 @@ static void extract_value_from_style_table(gpointer key, gpointer value, gpointe } case ITEM_FEATURE_SET_FRAME_MODE: - case ITEM_FEATURE_SET_VISIBLE: case ITEM_FEATURE_SET_BUMP_MODE: case ITEM_FEATURE_SET_DEFAULT_BUMP_MODE: { @@ -1402,7 +1422,7 @@ static void extract_value_from_style_table(gpointer key, gpointer value, gpointe current = g_value_get_uint(value_data->gvalue); - if(!current) + if (!current) { g_object_get(G_OBJECT(style), value_data->spec_name, &style_version, @@ -1411,8 +1431,30 @@ static void extract_value_from_style_table(gpointer key, gpointer value, gpointe if(style_version) g_value_set_uint(value_data->gvalue, style_version); } + + break; } - break; + + case ITEM_FEATURE_SET_VISIBLE: + { + guint style_version = 0, current; + + current = g_value_get_uint(value_data->gvalue); + + if (!current) + { + g_object_get(G_OBJECT(style), + value_data->spec_name, &style_version, + NULL); + + if (style_version) + g_value_set_uint(value_data->gvalue, style_version); + } + + break; + } + + case ITEM_FEATURE_SET_JOIN_ALIGNS: { guint style_version = 0, current; @@ -1598,3 +1640,5 @@ static void zmap_g_queue_replace(GQueue *queue, gpointer old, gpointer new) return ; } + + diff --git a/src/zmapWindow/items/zmapWindowContainerFeatureSet.h b/src/zmapWindow/items/zmapWindowContainerFeatureSet.h index c4bf74fe1..5532aeb29 100755 --- a/src/zmapWindow/items/zmapWindowContainerFeatureSet.h +++ b/src/zmapWindow/items/zmapWindowContainerFeatureSet.h @@ -27,9 +27,9 @@ * * Exported functions: See XXXXXXXXXXXXX.h * HISTORY: - * Last edited: Nov 6 17:59 2009 (edgrif) + * Last edited: Jan 17 11:09 2010 (edgrif) * Created: Wed Dec 3 08:21:03 2008 (rds) - * CVS info: $Id: zmapWindowContainerFeatureSet.h,v 1.8 2010-01-19 12:36:53 mh17 Exp $ + * CVS info: $Id: zmapWindowContainerFeatureSet.h,v 1.9 2010-01-19 18:33:57 edgrif Exp $ *------------------------------------------------------------------- */ @@ -96,9 +96,16 @@ double zmapWindowContainerFeatureSetGetWidth(ZMapWindowContainerFeatureSet c double zmapWindowContainerFeatureGetBumpSpacing(ZMapWindowContainerFeatureSet container_set); gboolean zmapWindowContainerFeatureSetGetMagValues(ZMapWindowContainerFeatureSet container_set, double *min_mag_out, double *max_mag_out); + ZMapStyleColumnDisplayState zmapWindowContainerFeatureSetGetDisplay(ZMapWindowContainerFeatureSet container_set); +void zmapWindowContainerFeatureSetSetDisplay(ZMapWindowContainerFeatureSet container_set, + ZMapStyleColumnDisplayState state) ; + +/* this one sets a style which is probably wrong.... */ void zmapWindowContainerFeatureSetDisplay(ZMapWindowContainerFeatureSet container_set, ZMapStyleColumnDisplayState state); + + gboolean zmapWindowContainerFeatureSetShowWhenEmpty(ZMapWindowContainerFeatureSet container_set); ZMapStyle3FrameMode zmapWindowContainerFeatureSetGetFrameMode(ZMapWindowContainerFeatureSet container_set); gboolean zmapWindowContainerFeatureSetIsFrameSpecific(ZMapWindowContainerFeatureSet container_set, -- GitLab