[gnumeric] xlsx: import radio button's state.



commit 78a31ceb23e4ab57071880db1ab222af91849888
Author: Morten Welinder <terra gnome org>
Date:   Wed Feb 25 12:55:59 2015 -0500

    xlsx: import radio button's state.

 plugins/excel/xlsx-read-drawing.c |    5 +--
 src/sheet-object-widget.c         |   62 +++++++++++++++++++------------------
 2 files changed, 34 insertions(+), 33 deletions(-)
---
diff --git a/plugins/excel/xlsx-read-drawing.c b/plugins/excel/xlsx-read-drawing.c
index b48e951..fa95a19 100644
--- a/plugins/excel/xlsx-read-drawing.c
+++ b/plugins/excel/xlsx-read-drawing.c
@@ -3678,10 +3678,9 @@ xlsx_vml_checked (GsfXMLIn *xin, G_GNUC_UNUSED GsfXMLBlob *blob)
        const char *s = xin->content->str;
        gboolean checked = strtol (s, NULL, 10) > 0;
 
-       if (GNM_IS_SOW_CHECKBOX (state->so)) {
+       if (GNM_IS_SOW_CHECKBOX (state->so) ||
+           GNM_IS_SOW_RADIO_BUTTON (state->so)) {
                g_object_set (state->so, "active", checked, NULL);
-       } else if (GNM_IS_SOW_RADIO_BUTTON (state->so)) {
-               /* FIXME */
        }
 }
 
diff --git a/src/sheet-object-widget.c b/src/sheet-object-widget.c
index f41a2d6..11c6037 100644
--- a/src/sheet-object-widget.c
+++ b/src/sheet-object-widget.c
@@ -2808,13 +2808,31 @@ enum {
        SOR_PROP_VALUE
 };
 
-static GnmValue *
-so_parse_value (SheetObject *so, const char *s)
+static void
+sheet_widget_radio_button_set_active (SheetWidgetRadioButton *swrb,
+                                     gboolean active)
 {
-       Sheet *sheet = so->sheet;
-       return format_match (s, NULL, workbook_date_conv (sheet->workbook));
+       GList *ptr;
+
+       if (swrb->active == active)
+               return;
+       swrb->active = active;
+
+       swrb->being_updated = TRUE;
+
+       for (ptr = swrb->sow.so.realized_list; ptr != NULL ; ptr = ptr->next) {
+               SheetObjectView *view = ptr->data;
+               GocWidget *item = get_goc_widget (view);
+               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item->widget),
+                                             active);
+       }
+
+       g_object_notify (G_OBJECT (swrb), "active");
+
+       swrb->being_updated = FALSE;
 }
 
+
 static void
 sheet_widget_radio_button_get_property (GObject *obj, guint param_id,
                                        GValue *value, GParamSpec *pspec)
@@ -2848,7 +2866,8 @@ sheet_widget_radio_button_set_property (GObject *obj, guint param_id,
 
        switch (param_id) {
        case SOR_PROP_ACTIVE:
-               g_assert_not_reached ();
+               sheet_widget_radio_button_set_active (swrb,
+                                                     g_value_get_boolean (value));
                break;
        case SOR_PROP_TEXT:
                sheet_widget_radio_button_set_label (SHEET_OBJECT (swrb),
@@ -2891,30 +2910,6 @@ sheet_widget_radio_button_set_value (SheetObject *so, GnmValue const *val)
 }
 
 static void
-sheet_widget_radio_button_set_active (SheetWidgetRadioButton *swrb,
-                                     gboolean active)
-{
-       GList *ptr;
-
-       if (swrb->active == active)
-               return;
-       swrb->active = active;
-
-       swrb->being_updated = TRUE;
-
-       for (ptr = swrb->sow.so.realized_list; ptr != NULL ; ptr = ptr->next) {
-               SheetObjectView *view = ptr->data;
-               GocWidget *item = get_goc_widget (view);
-               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (item->widget),
-                                             active);
-       }
-
-       g_object_notify (G_OBJECT (swrb), "active");
-
-       swrb->being_updated = FALSE;
-}
-
-static void
 radio_button_eval (GnmDependent *dep)
 {
        GnmValue *v;
@@ -3203,6 +3198,13 @@ cb_radio_button_config_destroy (RadioButtonConfigState *state)
        g_free (state);
 }
 
+static GnmValue *
+so_parse_value (SheetObject *so, const char *s)
+{
+       Sheet *sheet = so->sheet;
+       return format_match (s, NULL, workbook_date_conv (sheet->workbook));
+}
+
 static void
 cb_radio_button_config_ok_clicked (G_GNUC_UNUSED GtkWidget *button, RadioButtonConfigState *state)
 {
@@ -3404,7 +3406,7 @@ SOW_MAKE_TYPE (radio_button, RadioButton,
                               (object_class, SOR_PROP_ACTIVE,
                                g_param_spec_boolean ("active", NULL, NULL,
                                                      FALSE,
-                                                     GSF_PARAM_STATIC | G_PARAM_READABLE));
+                                                     GSF_PARAM_STATIC | G_PARAM_READWRITE));
                       g_object_class_install_property
                               (object_class, SOR_PROP_TEXT,
                                g_param_spec_string ("text", NULL, NULL, NULL,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]