projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Patch #5209
[pspp]
/
src
/
ui
/
gui
/
psppire-variable.c
diff --git
a/src/ui/gui/psppire-variable.c
b/src/ui/gui/psppire-variable.c
index 49dd84b6566fb56b4d2f5246873cbb2c18ca512c..5c884a3fb616e558dc77f0766101209b71434924 100644
(file)
--- a/
src/ui/gui/psppire-variable.c
+++ b/
src/ui/gui/psppire-variable.c
@@
-25,6
+25,8
@@
#include <data/value-labels.h>
#include <data/format.h>
#include <data/value-labels.h>
#include <data/format.h>
+#include <libpspp/misc.h>
+
#include "psppire-variable.h"
#include "psppire-dict.h"
#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 )
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;
pv->v->width = width;
+ psppire_dict_resize_variable(pv->dict, pv,
+ old_var_cnt, new_var_cnt);
+ }
+
return psppire_variable_set_format(pv, &fmt);
}
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)
{
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;
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 ( 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;
}
psppire_dict_var_changed(pv->dict, pv->v->index);
return TRUE;
}
@@
-345,8
+375,9
@@
psppire_variable_get_width(const struct PsppireVariable *pv)
return pv->v->width;
}
return pv->v->width;
}
+
gint
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);
{
g_return_val_if_fail(pv, -1);
g_return_val_if_fail(pv->v, -1);
@@
-354,3
+385,14
@@
psppire_variable_get_index(const struct PsppireVariable *pv)
return pv->v->fv;
}
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;
+}
+