X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-val-chooser.c;h=680e147b62c845424c5aeb83ca7c507ff4bbf539;hb=5166b8309e1fec33d5122de360ba212ad3107a2c;hp=368eea32c8b0b3ccf7ba992198845c06437491af;hpb=4233ff9b1569035a8b748b3695cb865e6412e5b2;p=pspp diff --git a/src/ui/gui/psppire-val-chooser.c b/src/ui/gui/psppire-val-chooser.c index 368eea32c8..680e147b62 100644 --- a/src/ui/gui/psppire-val-chooser.c +++ b/src/ui/gui/psppire-val-chooser.c @@ -77,9 +77,21 @@ enum { PROP_0, PROP_IS_STRING, + PROP_SHOW_ELSE }; +enum + { + VC_VALUE, + VC_SYSMIS, + VC_MISSING, + VC_RANGE, + VC_LOW_UP, + VC_HIGH_DOWN, + VC_ELSE + }; + static void psppire_val_chooser_set_property (GObject *object, guint prop_id, @@ -90,14 +102,20 @@ psppire_val_chooser_set_property (GObject *object, switch (prop_id) { + case PROP_SHOW_ELSE: + { + gboolean x = g_value_get_boolean (value); + gtk_widget_set_visible (GTK_WIDGET (vr->rw[VC_ELSE].rb), x); + gtk_widget_set_visible (GTK_WIDGET (vr->rw[VC_ELSE].label), x); + } + break; case PROP_IS_STRING: vr->input_var_is_string = g_value_get_boolean (value); - - gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[1].rb), !vr->input_var_is_string); - gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[2].rb), !vr->input_var_is_string); - gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[3].rb), !vr->input_var_is_string); - gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[4].rb), !vr->input_var_is_string); - gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[5].rb), !vr->input_var_is_string); + gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[VC_SYSMIS].rb), !vr->input_var_is_string); + gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[VC_MISSING].rb), !vr->input_var_is_string); + gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[VC_RANGE].rb), !vr->input_var_is_string); + gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[VC_LOW_UP].rb), !vr->input_var_is_string); + gtk_widget_set_sensitive (GTK_WIDGET (vr->rw[VC_HIGH_DOWN].rb), !vr->input_var_is_string); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -116,6 +134,13 @@ psppire_val_chooser_get_property (GObject *object, switch (prop_id) { + case PROP_SHOW_ELSE: + { + gboolean x = + gtk_widget_get_visible (GTK_WIDGET (vr->rw[VC_ELSE].rb)); + g_value_set_boolean (value, x); + } + break; case PROP_IS_STRING: g_value_set_boolean (value, vr->input_var_is_string); default: @@ -140,6 +165,14 @@ psppire_val_chooser_class_init (PsppireValChooserClass *class) FALSE, G_PARAM_READWRITE); + GParamSpec *show_else_spec = + g_param_spec_boolean ("show-else", + "Show Else", + "Should the \"All other values\" item be visible", + TRUE, + G_PARAM_READWRITE); + + parent_class = g_type_class_peek_parent (class); object_class->set_property = psppire_val_chooser_set_property; @@ -150,6 +183,10 @@ psppire_val_chooser_class_init (PsppireValChooserClass *class) g_object_class_install_property (object_class, PROP_IS_STRING, is_string_spec); + + g_object_class_install_property (object_class, + PROP_SHOW_ELSE, + show_else_spec); } @@ -288,13 +325,13 @@ static GtkWidget * simple_entry (struct layout *l, struct range_widgets *rw) static struct layout range_opt[n_VAL_CHOOSER_BUTTONS]= { - {N_("Value:"), simple_entry, simple_set }, - {N_("System Missing"), NULL, sysmis_set }, - {N_("System or User Missing"), NULL, missing_set}, - {N_("Range:"), range_entry, range_set }, - {N_("Range, LOWEST thru value"), simple_entry, lo_up_set }, - {N_("Range, value thru HIGHEST"), simple_entry, hi_down_set}, - {N_("All other values"), NULL, else_set } + {N_("_Value:"), simple_entry, simple_set }, + {N_("_System Missing"), NULL, sysmis_set }, + {N_("System _or User Missing"), NULL, missing_set}, + {N_("_Range:"), range_entry, range_set }, + {N_("Range, _LOWEST thru value"), simple_entry, lo_up_set }, + {N_("Range, value thru _HIGHEST"), simple_entry, hi_down_set}, + {N_("_All other values"), NULL, else_set } }; static void @@ -321,22 +358,26 @@ psppire_val_chooser_init (PsppireValChooser *vr) for (i = 0; i < n_VAL_CHOOSER_BUTTONS; ++i) { struct layout *l = &range_opt[i]; - GtkWidget *label = gtk_label_new (gettext (l->label)); + vr->rw[i].label = GTK_LABEL (gtk_label_new (gettext (l->label))); + gtk_label_set_use_underline (vr->rw[i].label, TRUE); vr->rw[i].rb = GTK_TOGGLE_BUTTON (gtk_radio_button_new (group)); + gtk_label_set_mnemonic_widget (vr->rw[i].label, GTK_WIDGET (vr->rw[i].rb)); - gtk_widget_set_sensitive (label, FALSE); - g_signal_connect (vr->rw[i].rb, "toggled", G_CALLBACK (set_sensitivity_from_toggle), label); - - gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + gtk_misc_set_alignment (GTK_MISC (vr->rw[i].label), 0, 0.5); group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (vr->rw[i].rb)); - gtk_table_attach_defaults (GTK_TABLE (table), GTK_WIDGET (vr->rw[i].rb), 0, 1, - row, row + 1); - - - gtk_table_attach_defaults (GTK_TABLE (table), label, 1, 2, - row, row + 1); + /* Attach the buttons */ + gtk_table_attach (GTK_TABLE (table), GTK_WIDGET (vr->rw[i].rb), + 0, 1, row, row + 1, + 0, GTK_EXPAND | GTK_FILL, + 0, 0); + + /* Attach the labels */ + gtk_table_attach (GTK_TABLE (table), GTK_WIDGET (vr->rw[i].label), + 1, 2, row, row + 1, + GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, + 0, 0); ++row; if (l->fill) @@ -619,23 +660,23 @@ psppire_val_chooser_set_status (PsppireValChooser *vr, const struct old_value *o break; case OV_SYSMIS: - gtk_toggle_button_set_active (vr->rw[1].rb, TRUE); + gtk_toggle_button_set_active (vr->rw[VC_SYSMIS].rb, TRUE); break; case OV_MISSING: - gtk_toggle_button_set_active (vr->rw[2].rb, TRUE); + gtk_toggle_button_set_active (vr->rw[VC_MISSING].rb, TRUE); break; case OV_RANGE: { gchar *str = num_to_string (ov->v.range[0]); - gtk_toggle_button_set_active (vr->rw[3].rb, TRUE); - gtk_entry_set_text (vr->rw[3].e1, str); + gtk_toggle_button_set_active (vr->rw[VC_RANGE].rb, TRUE); + gtk_entry_set_text (vr->rw[VC_RANGE].e1, str); g_free (str); str = num_to_string (ov->v.range[1]); - gtk_entry_set_text (vr->rw[3].e2, str); + gtk_entry_set_text (vr->rw[VC_RANGE].e2, str); g_free (str); } break; @@ -644,9 +685,9 @@ psppire_val_chooser_set_status (PsppireValChooser *vr, const struct old_value *o { gchar *str = num_to_string (ov->v.range[1]); - gtk_toggle_button_set_active (vr->rw[4].rb, TRUE); + gtk_toggle_button_set_active (vr->rw[VC_LOW_UP].rb, TRUE); - gtk_entry_set_text (vr->rw[4].e1, str); + gtk_entry_set_text (vr->rw[VC_LOW_UP].e1, str); g_free (str); } @@ -657,16 +698,16 @@ psppire_val_chooser_set_status (PsppireValChooser *vr, const struct old_value *o { gchar *str = num_to_string (ov->v.range[0]); - gtk_toggle_button_set_active (vr->rw[5].rb, TRUE); + gtk_toggle_button_set_active (vr->rw[VC_HIGH_DOWN].rb, TRUE); - gtk_entry_set_text (vr->rw[5].e1, str); + gtk_entry_set_text (vr->rw[VC_HIGH_DOWN].e1, str); g_free (str); } break; case OV_ELSE: - gtk_toggle_button_set_active (vr->rw[6].rb, TRUE); + gtk_toggle_button_set_active (vr->rw[VC_ELSE].rb, TRUE); break; default: