X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-variable.c;h=70c69a7ee768b3bdcbee3cd02a67b287dc31a50d;hb=5bacd5c053e285ccfba287d2b28079f1d1c49cc9;hp=5c884a3fb616e558dc77f0766101209b71434924;hpb=57b436a22d9ae0e395fb2e3ce101c2b5c2e6939e;p=pspp diff --git a/src/ui/gui/psppire-variable.c b/src/ui/gui/psppire-variable.c index 5c884a3fb6..70c69a7ee7 100644 --- a/src/ui/gui/psppire-variable.c +++ b/src/ui/gui/psppire-variable.c @@ -1,6 +1,6 @@ /* PSPPIRE --- A Graphical User Interface for PSPP - Copyright (C) 2004 Free Software Foundation + Copyright (C) 2004, 2006 Free Software Foundation Written by John Darrington This program is free software; you can redistribute it and/or modify @@ -18,12 +18,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include + #include #include #include #include #include +#include #include @@ -42,7 +45,7 @@ psppire_variable_set_name(struct PsppireVariable *pv, const gchar *text) if ( !text) return FALSE; - if ( 0 == strcmp(pv->v->name, text)) + if ( 0 == strcmp(var_get_name (pv->v), text)) return FALSE; if ( ! psppire_dict_check_name(pv->dict, text, TRUE) ) @@ -50,7 +53,7 @@ psppire_variable_set_name(struct PsppireVariable *pv, const gchar *text) dict_rename_var(pv->dict->dict, pv->v, text); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -63,9 +66,9 @@ psppire_variable_set_columns(struct PsppireVariable *pv, gint columns) g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - pv->v->display_width = columns; + var_set_display_width (pv->v, columns); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -77,10 +80,9 @@ psppire_variable_set_label(struct PsppireVariable *pv, const gchar *label) g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - g_free(pv->v->label); - pv->v->label = g_strdup(label); + var_set_label (pv->v, label); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -95,8 +97,7 @@ psppire_variable_set_decimals(struct PsppireVariable *pv, gint decimals) g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - fmt = pv->v->write; - + fmt = *var_get_write_format (pv->v); fmt.d = decimals; return psppire_variable_set_format(pv, &fmt); @@ -112,21 +113,20 @@ psppire_variable_set_width(struct PsppireVariable *pv, gint width) g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - fmt = pv->v->write; - + fmt = *var_get_write_format (pv->v); fmt.w = width; - if ( pv->v->type == ALPHA ) + if (var_is_alpha (pv->v)) { gint old_var_cnt , new_var_cnt ; - if ( pv->v->width == 0 ) + if ( var_get_width (pv->v) == 0 ) old_var_cnt = 1; else - old_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING); + old_var_cnt = DIV_RND_UP(var_get_width (pv->v), MAX_SHORT_STRING); new_var_cnt = DIV_RND_UP(width, MAX_SHORT_STRING); - pv->v->width = width; + var_set_width (pv->v, width); psppire_dict_resize_variable(pv->dict, pv, old_var_cnt, new_var_cnt); @@ -145,25 +145,22 @@ psppire_variable_set_type(struct PsppireVariable *pv, int type) g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - pv->v->type = type; - - if ( pv->v->width == 0 ) + if ( var_get_width (pv->v) ) old_var_cnt = 1; else - old_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING); + old_var_cnt = DIV_RND_UP (var_get_width (pv->v), MAX_SHORT_STRING); - if ( type == NUMERIC ) - pv->v->width = 0; + var_set_width (pv->v, type == VAR_NUMERIC ? 0 : 1); - if ( pv->v->width == 0 ) + if ( var_get_width (pv->v) == 0 ) new_var_cnt = 1; else - new_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING); + new_var_cnt = DIV_RND_UP (var_get_width (pv->v), MAX_SHORT_STRING); psppire_dict_resize_variable(pv->dict, pv, old_var_cnt, new_var_cnt); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -175,17 +172,17 @@ psppire_variable_set_format(struct PsppireVariable *pv, struct fmt_spec *fmt) g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - if ( check_output_specifier(fmt, false) - && - check_specifier_type(fmt, pv->v->type, false) - && - check_specifier_width(fmt, pv->v->width, false) - ) + msg_disable (); + if ( fmt_check_output(fmt) + && fmt_check_type_compat (fmt, var_get_type (pv->v)) + && fmt_check_width_compat (fmt, var_get_width (pv->v))) { - pv->v->write = pv->v->print = *fmt; - psppire_dict_var_changed(pv->dict, pv->v->index); + msg_enable (); + var_set_both_formats (pv->v, fmt); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } + msg_enable (); return FALSE; } @@ -199,10 +196,9 @@ psppire_variable_set_value_labels(const struct PsppireVariable *pv, g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - val_labs_destroy(pv->v->val_labs); - pv->v->val_labs = val_labs_copy(vls); + var_set_value_labels (pv->v, vls); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -214,9 +210,9 @@ psppire_variable_set_missing(const struct PsppireVariable *pv, g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - mv_copy(&pv->v->miss, miss); + var_set_missing_values (pv->v, miss); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -226,9 +222,9 @@ psppire_variable_set_write_spec(const struct PsppireVariable *pv, struct fmt_spe g_return_val_if_fail(pv, FALSE); g_return_val_if_fail(pv->v, FALSE); - pv->v->write = fmt; + var_set_write_format (pv->v, &fmt); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -238,9 +234,9 @@ psppire_variable_set_print_spec(const struct PsppireVariable *pv, struct fmt_spe g_return_val_if_fail(pv, FALSE); g_return_val_if_fail(pv->v, FALSE); - pv->v->print = fmt; + var_set_print_format (pv->v, &fmt); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -253,9 +249,9 @@ psppire_variable_set_alignment(struct PsppireVariable *pv, gint align) g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - pv->v->alignment = align; + var_set_alignment (pv->v, align); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -267,9 +263,9 @@ psppire_variable_set_measure(struct PsppireVariable *pv, gint measure) g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); - pv->v->measure = measure + 1; + var_set_measure (pv->v, measure + 1); - psppire_dict_var_changed(pv->dict, pv->v->index); + psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); return TRUE; } @@ -280,8 +276,7 @@ psppire_variable_get_write_spec(const struct PsppireVariable *pv) g_return_val_if_fail(pv, NULL); g_return_val_if_fail(pv->v, NULL); - - return &pv->v->write; + return var_get_write_format (pv->v); } @@ -291,7 +286,7 @@ psppire_variable_get_name(const struct PsppireVariable *pv) g_return_val_if_fail(pv, NULL); g_return_val_if_fail(pv->v, NULL); - return pv->v->name; + return var_get_name (pv->v); } @@ -301,7 +296,7 @@ psppire_variable_get_columns(const struct PsppireVariable *pv) g_return_val_if_fail(pv, -1); g_return_val_if_fail(pv->v, -1); - return pv->v->display_width; + return var_get_display_width (pv->v); } @@ -312,7 +307,7 @@ psppire_variable_get_label(const struct PsppireVariable *pv) g_return_val_if_fail(pv, NULL); g_return_val_if_fail(pv->v, NULL); - return pv->v->label; + return var_get_label (pv->v); } @@ -322,7 +317,7 @@ psppire_variable_get_missing(const struct PsppireVariable *pv) g_return_val_if_fail(pv, NULL); g_return_val_if_fail(pv->v, NULL); - return &pv->v->miss; + return var_get_missing_values (pv->v); } @@ -332,7 +327,7 @@ psppire_variable_get_value_labels(const struct PsppireVariable *pv) g_return_val_if_fail(pv, NULL); g_return_val_if_fail(pv->v, NULL); - return pv->v->val_labs; + return var_get_value_labels (pv->v); } @@ -342,7 +337,7 @@ psppire_variable_get_alignment(const struct PsppireVariable *pv) g_return_val_if_fail(pv, -1); g_return_val_if_fail(pv->v, -1); - return pv->v->alignment; + return var_get_alignment (pv->v); } @@ -353,7 +348,7 @@ psppire_variable_get_measure(const struct PsppireVariable *pv) g_return_val_if_fail(pv, -1); g_return_val_if_fail(pv->v, -1); - return pv->v->measure - 1; + return var_get_measure (pv->v) - 1; } gint @@ -362,7 +357,7 @@ psppire_variable_get_type(const struct PsppireVariable *pv) g_return_val_if_fail(pv, -1); g_return_val_if_fail(pv->v, -1); - return pv->v->type; + return var_get_type (pv->v); } @@ -372,7 +367,7 @@ psppire_variable_get_width(const struct PsppireVariable *pv) g_return_val_if_fail(pv, -1); g_return_val_if_fail(pv->v, -1); - return pv->v->width; + return var_get_width (pv->v); } @@ -382,7 +377,7 @@ psppire_variable_get_fv(const struct PsppireVariable *pv) g_return_val_if_fail(pv, -1); g_return_val_if_fail(pv->v, -1); - return pv->v->fv; + return var_get_case_index (pv->v); } @@ -393,6 +388,6 @@ psppire_variable_get_index(const struct PsppireVariable *pv) g_return_val_if_fail(pv, -1); g_return_val_if_fail(pv->v, -1); - return pv->v->index; + return var_get_dict_index (pv->v); }