Index: src/validation.c =================================================================== RCS file: /cvs/gnome/gnumeric/src/validation.c,v retrieving revision 1.11 diff -u -p -r1.11 validation.c --- src/validation.c 2002/02/21 21:52:39 1.11 +++ src/validation.c 2002/02/23 09:07:47 @@ -124,7 +124,7 @@ validation_eval (WorkbookControl *wbc, M return VALIDATION_STATUS_VALID; v = mstyle_get_validation (mstyle); - g_return_val_if_fail (v != NULL, 1); + g_return_val_if_fail (v != NULL, VALIDATION_STATUS_VALID); if (v->style == VALIDATION_TYPE_ANY) return VALIDATION_STATUS_VALID; @@ -150,35 +150,43 @@ validation_eval (WorkbookControl *wbc, M gnum_float dummy; if (val->type == VALUE_FLOAT && gnumabs (modfgnum (cell->value->v_float.val, &dummy)) > 1e-10) { - msg = g_strdup_printf (_("'%" GNUM_FORMAT_f "' is not an integer"), + msg = g_strdup_printf (_("'%" GNUM_FORMAT_f "' is not a whole number."), cell->value->v_float.val); break; } } + /* fall through to TYPE_AS_NUMBER case */ case VALIDATION_TYPE_AS_DATE : /* What the hell does this do */ case VALIDATION_TYPE_AS_TIME : /* What the hell does this do */ + /* dates/times are special cases of numbers */ +#warning TODO: check string format, make sure it is a number? case VALIDATION_TYPE_AS_NUMBER : - if (val->type == VALUE_ERROR) + switch (val->type) { + case VALUE_ERROR: msg = g_strdup_printf (_("'%s' is an error"), val->v_err.mesg->str); - else if (cell->value->type == VALUE_STRING) { + break; + case VALUE_STRING: { Value *res = format_match_number (val->v_str.val->str, NULL); if (res == NULL) { char const *fmt; - /* FIXME what else is needed */ - if (v->type == VALIDATION_TYPE_AS_DATE) { - fmt = N_("'%s' is not a valid date"); - } else if (v->type == VALIDATION_TYPE_AS_TIME) { - fmt = N_("'%s' is not a valid time"); - } else - fmt = N_("'%s' is not a number"); + fmt = N_("'%s' is not a number"); msg = g_strdup_printf (_(fmt), val->v_str.val->str); } else val_expr = expr_tree_new_constant (res); - } else + break; + } + case VALUE_FLOAT: + case VALUE_INTEGER: val_expr = expr_tree_new_constant ( value_duplicate (cell->value)); + break; + default: + /* all others are errors */ + msg = g_strdup_printf (_("Not a number.")); + break; + } break; case VALIDATION_TYPE_IN_LIST : @@ -202,7 +210,7 @@ validation_eval (WorkbookControl *wbc, M break; } - if (msg == NULL && expr == NULL) { + if (msg == NULL && expr == NULL/*not custom*/) { Operation op; g_return_val_if_fail (val_expr != NULL, VALIDATION_STATUS_VALID); @@ -246,8 +254,9 @@ validation_eval (WorkbookControl *wbc, M return VALIDATION_STATUS_VALID; } - if (v->op == VALIDATION_OP_BETWEEN || v->op == VALIDATION_OP_NOT_BETWEEN) { - g_return_val_if_fail (v->expr[1] != NULL, VALIDATION_STATUS_VALID); + if ((valid && v->op == VALIDATION_OP_BETWEEN) || v->op == VALIDATION_OP_NOT_BETWEEN) { + if (v->expr [1] == NULL) + return VALIDATION_STATUS_VALID; expr_tree_ref (v->expr[1]); expr = expr_tree_new_binary (val_expr, @@ -261,10 +270,11 @@ validation_eval (WorkbookControl *wbc, M return VALIDATION_STATUS_VALID; } } + /* condition was not valid. */ expr_str = expr_tree_as_string (expr, parse_pos_init_evalpos (&pp, &ep)); - msg = g_strdup_printf (_("%s is not true."), expr_str); + msg = g_strdup_printf (_("The validation condition %s is not satified."), expr_str); g_free (expr_str); } } Index: src/dialogs/cell-format.glade =================================================================== RCS file: /cvs/gnome/gnumeric/src/dialogs/cell-format.glade,v retrieving revision 1.53 diff -u -p -r1.53 cell-format.glade --- src/dialogs/cell-format.glade 2002/02/17 17:36:53 1.53 +++ src/dialogs/cell-format.glade 2002/02/23 09:07:48 @@ -3646,7 +3646,7 @@ - val <= min || max <= val (not between) + val < min or max < val (not between) 0.0 convertwidget40 yes Index: src/dialogs/dialog-cell-format.c =================================================================== RCS file: /cvs/gnome/gnumeric/src/dialogs/dialog-cell-format.c,v retrieving revision 1.206 diff -u -p -r1.206 dialog-cell-format.c --- src/dialogs/dialog-cell-format.c 2002/02/22 06:40:13 1.206 +++ src/dialogs/dialog-cell-format.c 2002/02/23 09:07:48 @@ -1999,15 +1999,13 @@ fmt_dialog_init_protection_page (FormatS /*****************************************************************************/ static void -validation_entry_from_expr (GnumericExprEntry *entry, +validation_entry_from_expr (GnumericExprEntry *gee, ParsePos const *pp, ExprTree const *expr) { - if (expr != NULL) { - char *expr_str = expr_tree_as_string (expr, pp); - gtk_entry_set_text (GTK_ENTRY (entry), expr_str); - g_free (expr_str); - } else - gtk_entry_set_text (GTK_ENTRY (entry), ""); + if (expr != NULL) + gnm_expr_entry_load_from_expr(gee, expr, pp); + else + gnm_expr_entry_load_from_text(gee, ""); } static ExprTree * @@ -2167,8 +2165,12 @@ static void fmt_dialog_init_validation_expr_entry (FormatState *state, ExprEntry *entry, char const *name, int i) { + GnumericExprEntryFlags flags; entry->name = GTK_LABEL (glade_xml_get_widget (state->gui, name)); entry->entry = gnumeric_expr_entry_new (state->wbcg, TRUE); + flags = GNUM_EE_ABS_ROW | GNUM_EE_ABS_COL | GNUM_EE_SHEET_OPTIONAL; + gnm_expr_entry_set_flags (entry->entry, + flags, flags | GNUM_EE_SINGLE_RANGE); gtk_table_attach (state->validation.criteria_table, GTK_WIDGET (entry->entry), 1, 3, 2+i, 3+i, GTK_EXPAND | GTK_FILL, 0, 0, 0); @@ -2367,19 +2369,11 @@ cb_fmt_dialog_set_focus (GtkWidget *wind { if (state->validation.changed) validation_rebuild_validation (state); - - if (IS_GNUMERIC_EXPR_ENTRY (focus_widget)) { - GnumericExprEntryFlags flags; + if (IS_GNUMERIC_EXPR_ENTRY (focus_widget)) wbcg_set_entry (state->wbcg, GNUMERIC_EXPR_ENTRY (focus_widget)); - - flags = GNUM_EE_ABS_ROW | GNUM_EE_ABS_COL | GNUM_EE_SHEET_OPTIONAL; - gnm_expr_entry_set_flags (state->validation.expr0.entry, - flags, flags | GNUM_EE_SINGLE_RANGE); - gnm_expr_entry_set_flags (state->validation.expr1.entry, - flags, flags | GNUM_EE_SINGLE_RANGE); - } else + else wbcg_set_entry (state->wbcg, NULL); }