2 PSPPIRE --- A Graphical User Interface for PSPP
3 Copyright (C) 2004 Free Software Foundation
4 Written by John Darrington
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
24 #include <data/missing-values.h>
25 #include <data/value-labels.h>
26 #include <data/format.h>
28 #include "psppire-variable.h"
29 #include "psppire-dict.h"
34 psppire_variable_set_name(struct PsppireVariable *pv, const gchar *text)
36 g_return_val_if_fail(pv, FALSE);
37 g_return_val_if_fail(pv->dict, FALSE);
38 g_return_val_if_fail(pv->v, FALSE);
43 if ( 0 == strcmp(pv->v->name, text))
46 if ( ! psppire_dict_check_name(pv->dict, text, TRUE) )
49 dict_rename_var(pv->dict->dict, pv->v, text);
51 psppire_dict_var_changed(pv->dict, pv->v->index);
58 psppire_variable_set_columns(struct PsppireVariable *pv, gint columns)
60 g_return_val_if_fail(pv, FALSE);
61 g_return_val_if_fail(pv->dict, FALSE);
62 g_return_val_if_fail(pv->v, FALSE);
64 pv->v->display_width = columns;
66 psppire_dict_var_changed(pv->dict, pv->v->index);
72 psppire_variable_set_label(struct PsppireVariable *pv, const gchar *label)
74 g_return_val_if_fail(pv, FALSE);
75 g_return_val_if_fail(pv->dict, FALSE);
76 g_return_val_if_fail(pv->v, FALSE);
79 pv->v->label = g_strdup(label);
81 psppire_dict_var_changed(pv->dict, pv->v->index);
88 psppire_variable_set_decimals(struct PsppireVariable *pv, gint decimals)
92 g_return_val_if_fail(pv, FALSE);
93 g_return_val_if_fail(pv->dict, FALSE);
94 g_return_val_if_fail(pv->v, FALSE);
100 return psppire_variable_set_format(pv, &fmt);
106 psppire_variable_set_width(struct PsppireVariable *pv, gint width)
108 struct fmt_spec fmt ;
109 g_return_val_if_fail(pv, FALSE);
110 g_return_val_if_fail(pv->dict, FALSE);
111 g_return_val_if_fail(pv->v, FALSE);
117 if ( pv->v->type == ALPHA )
118 pv->v->width = width;
120 return psppire_variable_set_format(pv, &fmt);
125 psppire_variable_set_type(struct PsppireVariable *pv, int type)
127 g_return_val_if_fail(pv, FALSE);
128 g_return_val_if_fail(pv->dict, FALSE);
129 g_return_val_if_fail(pv->v, FALSE);
133 if ( type == NUMERIC )
136 psppire_dict_var_changed(pv->dict, pv->v->index);
142 psppire_variable_set_format(struct PsppireVariable *pv, struct fmt_spec *fmt)
144 g_return_val_if_fail(pv, FALSE);
145 g_return_val_if_fail(pv->dict, FALSE);
146 g_return_val_if_fail(pv->v, FALSE);
148 if ( check_output_specifier(fmt, false)
150 check_specifier_type(fmt, pv->v->type, false)
152 check_specifier_width(fmt, pv->v->width, false)
155 pv->v->write = pv->v->print = *fmt;
156 psppire_dict_var_changed(pv->dict, pv->v->index);
165 psppire_variable_set_value_labels(const struct PsppireVariable *pv,
166 const struct val_labs *vls)
168 g_return_val_if_fail(pv, FALSE);
169 g_return_val_if_fail(pv->dict, FALSE);
170 g_return_val_if_fail(pv->v, FALSE);
172 val_labs_destroy(pv->v->val_labs);
173 pv->v->val_labs = val_labs_copy(vls);
175 psppire_dict_var_changed(pv->dict, pv->v->index);
180 psppire_variable_set_missing(const struct PsppireVariable *pv,
181 const struct missing_values *miss)
183 g_return_val_if_fail(pv, FALSE);
184 g_return_val_if_fail(pv->dict, FALSE);
185 g_return_val_if_fail(pv->v, FALSE);
187 mv_copy(&pv->v->miss, miss);
189 psppire_dict_var_changed(pv->dict, pv->v->index);
194 psppire_variable_set_write_spec(const struct PsppireVariable *pv, struct fmt_spec fmt)
196 g_return_val_if_fail(pv, FALSE);
197 g_return_val_if_fail(pv->v, FALSE);
201 psppire_dict_var_changed(pv->dict, pv->v->index);
206 psppire_variable_set_print_spec(const struct PsppireVariable *pv, struct fmt_spec fmt)
208 g_return_val_if_fail(pv, FALSE);
209 g_return_val_if_fail(pv->v, FALSE);
213 psppire_dict_var_changed(pv->dict, pv->v->index);
220 psppire_variable_set_alignment(struct PsppireVariable *pv, gint align)
222 g_return_val_if_fail(pv, FALSE);
223 g_return_val_if_fail(pv->dict, FALSE);
224 g_return_val_if_fail(pv->v, FALSE);
226 pv->v->alignment = align;
228 psppire_dict_var_changed(pv->dict, pv->v->index);
234 psppire_variable_set_measure(struct PsppireVariable *pv, gint measure)
236 g_return_val_if_fail(pv, FALSE);
237 g_return_val_if_fail(pv->dict, FALSE);
238 g_return_val_if_fail(pv->v, FALSE);
240 pv->v->measure = measure + 1;
242 psppire_dict_var_changed(pv->dict, pv->v->index);
247 const struct fmt_spec *
248 psppire_variable_get_write_spec(const struct PsppireVariable *pv)
250 g_return_val_if_fail(pv, NULL);
251 g_return_val_if_fail(pv->v, NULL);
254 return &pv->v->write;
259 psppire_variable_get_name(const struct PsppireVariable *pv)
261 g_return_val_if_fail(pv, NULL);
262 g_return_val_if_fail(pv->v, NULL);
269 psppire_variable_get_columns(const struct PsppireVariable *pv)
271 g_return_val_if_fail(pv, -1);
272 g_return_val_if_fail(pv->v, -1);
274 return pv->v->display_width;
280 psppire_variable_get_label(const struct PsppireVariable *pv)
282 g_return_val_if_fail(pv, NULL);
283 g_return_val_if_fail(pv->v, NULL);
289 const struct missing_values *
290 psppire_variable_get_missing(const struct PsppireVariable *pv)
292 g_return_val_if_fail(pv, NULL);
293 g_return_val_if_fail(pv->v, NULL);
299 const struct val_labs *
300 psppire_variable_get_value_labels(const struct PsppireVariable *pv)
302 g_return_val_if_fail(pv, NULL);
303 g_return_val_if_fail(pv->v, NULL);
305 return pv->v->val_labs;
310 psppire_variable_get_alignment(const struct PsppireVariable *pv)
312 g_return_val_if_fail(pv, -1);
313 g_return_val_if_fail(pv->v, -1);
315 return pv->v->alignment;
321 psppire_variable_get_measure(const struct PsppireVariable *pv)
323 g_return_val_if_fail(pv, -1);
324 g_return_val_if_fail(pv->v, -1);
326 return pv->v->measure - 1;
330 psppire_variable_get_type(const struct PsppireVariable *pv)
332 g_return_val_if_fail(pv, -1);
333 g_return_val_if_fail(pv->v, -1);
340 psppire_variable_get_width(const struct PsppireVariable *pv)
342 g_return_val_if_fail(pv, -1);
343 g_return_val_if_fail(pv->v, -1);
349 psppire_variable_get_index(const struct PsppireVariable *pv)
351 g_return_val_if_fail(pv, -1);
352 g_return_val_if_fail(pv->v, -1);