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 "missing-values.h"
25 #include "value-labels.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)
90 g_return_val_if_fail(pv, FALSE);
91 g_return_val_if_fail(pv->dict, FALSE);
92 g_return_val_if_fail(pv->v, FALSE);
94 struct fmt_spec fmt = pv->v->write;
98 return psppire_variable_set_format(pv, &fmt);
104 psppire_variable_set_width(struct PsppireVariable *pv, gint width)
106 g_return_val_if_fail(pv, FALSE);
107 g_return_val_if_fail(pv->dict, FALSE);
108 g_return_val_if_fail(pv->v, FALSE);
110 struct fmt_spec fmt = pv->v->write;
114 if ( pv->v->type == ALPHA )
115 pv->v->width = width;
117 return psppire_variable_set_format(pv, &fmt);
122 psppire_variable_set_type(struct PsppireVariable *pv, int type)
124 g_return_val_if_fail(pv, FALSE);
125 g_return_val_if_fail(pv->dict, FALSE);
126 g_return_val_if_fail(pv->v, FALSE);
130 if ( type == NUMERIC )
133 psppire_dict_var_changed(pv->dict, pv->v->index);
139 psppire_variable_set_format(struct PsppireVariable *pv, struct fmt_spec *fmt)
141 g_return_val_if_fail(pv, FALSE);
142 g_return_val_if_fail(pv->dict, FALSE);
143 g_return_val_if_fail(pv->v, FALSE);
145 if ( check_output_specifier(fmt, false)
147 check_specifier_type(fmt, pv->v->type, false)
149 check_specifier_width(fmt, pv->v->width, false)
152 pv->v->write = pv->v->print = *fmt;
153 psppire_dict_var_changed(pv->dict, pv->v->index);
162 psppire_variable_set_value_labels(const struct PsppireVariable *pv,
163 const struct val_labs *vls)
165 g_return_val_if_fail(pv, FALSE);
166 g_return_val_if_fail(pv->dict, FALSE);
167 g_return_val_if_fail(pv->v, FALSE);
169 val_labs_destroy(pv->v->val_labs);
170 pv->v->val_labs = val_labs_copy(vls);
172 psppire_dict_var_changed(pv->dict, pv->v->index);
177 psppire_variable_set_missing(const struct PsppireVariable *pv,
178 const struct missing_values *miss)
180 g_return_val_if_fail(pv, FALSE);
181 g_return_val_if_fail(pv->dict, FALSE);
182 g_return_val_if_fail(pv->v, FALSE);
184 mv_copy(&pv->v->miss, miss);
186 psppire_dict_var_changed(pv->dict, pv->v->index);
191 psppire_variable_set_write_spec(const struct PsppireVariable *pv, struct fmt_spec fmt)
193 g_return_val_if_fail(pv, FALSE);
194 g_return_val_if_fail(pv->v, FALSE);
198 psppire_dict_var_changed(pv->dict, pv->v->index);
203 psppire_variable_set_print_spec(const struct PsppireVariable *pv, struct fmt_spec fmt)
205 g_return_val_if_fail(pv, FALSE);
206 g_return_val_if_fail(pv->v, FALSE);
210 psppire_dict_var_changed(pv->dict, pv->v->index);
217 psppire_variable_set_alignment(struct PsppireVariable *pv, gint align)
219 g_return_val_if_fail(pv, FALSE);
220 g_return_val_if_fail(pv->dict, FALSE);
221 g_return_val_if_fail(pv->v, FALSE);
223 pv->v->alignment = align;
225 psppire_dict_var_changed(pv->dict, pv->v->index);
231 psppire_variable_set_measure(struct PsppireVariable *pv, gint measure)
233 g_return_val_if_fail(pv, FALSE);
234 g_return_val_if_fail(pv->dict, FALSE);
235 g_return_val_if_fail(pv->v, FALSE);
237 pv->v->measure = measure + 1;
239 psppire_dict_var_changed(pv->dict, pv->v->index);
244 const struct fmt_spec *
245 psppire_variable_get_write_spec(const struct PsppireVariable *pv)
247 g_return_val_if_fail(pv, NULL);
248 g_return_val_if_fail(pv->v, NULL);
251 return &pv->v->write;
256 psppire_variable_get_name(const struct PsppireVariable *pv)
258 g_return_val_if_fail(pv, NULL);
259 g_return_val_if_fail(pv->v, NULL);
266 psppire_variable_get_columns(const struct PsppireVariable *pv)
268 g_return_val_if_fail(pv, -1);
269 g_return_val_if_fail(pv->v, -1);
271 return pv->v->display_width;
277 psppire_variable_get_label(const struct PsppireVariable *pv)
279 g_return_val_if_fail(pv, NULL);
280 g_return_val_if_fail(pv->v, NULL);
286 const struct missing_values *
287 psppire_variable_get_missing(const struct PsppireVariable *pv)
289 g_return_val_if_fail(pv, NULL);
290 g_return_val_if_fail(pv->v, NULL);
296 const struct val_labs *
297 psppire_variable_get_value_labels(const struct PsppireVariable *pv)
299 g_return_val_if_fail(pv, NULL);
300 g_return_val_if_fail(pv->v, NULL);
302 return pv->v->val_labs;
307 psppire_variable_get_alignment(const struct PsppireVariable *pv)
309 g_return_val_if_fail(pv, -1);
310 g_return_val_if_fail(pv->v, -1);
312 return pv->v->alignment;
318 psppire_variable_get_measure(const struct PsppireVariable *pv)
320 g_return_val_if_fail(pv, -1);
321 g_return_val_if_fail(pv->v, -1);
323 return pv->v->measure - 1;
327 psppire_variable_get_type(const struct PsppireVariable *pv)
329 g_return_val_if_fail(pv, -1);
330 g_return_val_if_fail(pv->v, -1);
337 psppire_variable_get_width(const struct PsppireVariable *pv)
339 g_return_val_if_fail(pv, -1);
340 g_return_val_if_fail(pv->v, -1);
346 psppire_variable_get_index(const struct PsppireVariable *pv)
348 g_return_val_if_fail(pv, -1);
349 g_return_val_if_fail(pv->v, -1);