X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-variable.c;h=5c884a3fb616e558dc77f0766101209b71434924;hb=57b436a22d9ae0e395fb2e3ce101c2b5c2e6939e;hp=1256c82f98ec47075aef2f0ba193e54866357f26;hpb=9d888a2e774f76e66e31b2ab60a1d4b2d451e635;p=pspp diff --git a/src/ui/gui/psppire-variable.c b/src/ui/gui/psppire-variable.c index 1256c82f98..5c884a3fb6 100644 --- a/src/ui/gui/psppire-variable.c +++ b/src/ui/gui/psppire-variable.c @@ -25,6 +25,8 @@ #include #include +#include + #include "psppire-variable.h" #include "psppire-dict.h" @@ -115,8 +117,21 @@ psppire_variable_set_width(struct PsppireVariable *pv, gint width) fmt.w = width; if ( pv->v->type == ALPHA ) + { + gint old_var_cnt , new_var_cnt ; + + if ( pv->v->width == 0 ) + old_var_cnt = 1; + else + old_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING); + + new_var_cnt = DIV_RND_UP(width, MAX_SHORT_STRING); pv->v->width = width; + psppire_dict_resize_variable(pv->dict, pv, + old_var_cnt, new_var_cnt); + } + return psppire_variable_set_format(pv, &fmt); } @@ -124,15 +139,30 @@ psppire_variable_set_width(struct PsppireVariable *pv, gint width) gboolean psppire_variable_set_type(struct PsppireVariable *pv, int type) { + gint old_var_cnt , new_var_cnt ; + g_return_val_if_fail(pv, FALSE); 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 ) + old_var_cnt = 1; + else + old_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING); + if ( type == NUMERIC ) pv->v->width = 0; + if ( pv->v->width == 0 ) + new_var_cnt = 1; + else + new_var_cnt = DIV_RND_UP(pv->v->width, 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); return TRUE; } @@ -346,9 +376,8 @@ psppire_variable_get_width(const struct PsppireVariable *pv) } -/* FIXME: This name is misleading */ gint -psppire_variable_get_index(const struct PsppireVariable *pv) +psppire_variable_get_fv(const struct PsppireVariable *pv) { g_return_val_if_fail(pv, -1); g_return_val_if_fail(pv->v, -1); @@ -356,3 +385,14 @@ psppire_variable_get_index(const struct PsppireVariable *pv) return pv->v->fv; } + + +gint +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; +} +