[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] pspp/src/ui/gui ChangeLog menu-actions.c psppir...
From: |
John Darrington |
Subject: |
[Pspp-cvs] pspp/src/ui/gui ChangeLog menu-actions.c psppir... |
Date: |
Mon, 15 May 2006 12:03:58 +0000 |
CVSROOT: /sources/pspp
Module name: pspp
Branch:
Changes by: John Darrington <address@hidden> 06/05/15 12:03:58
Modified files:
src/ui/gui : ChangeLog menu-actions.c psppire-case-array.c
psppire-case-array.h psppire-data-store.c
psppire-dict.c psppire-dict.h
psppire-variable.c
Log message:
When inserting new cases into the data sheet, initialise them with
blank/SYSMIS
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/ui/gui/ChangeLog.diff?tr1=1.12&tr2=1.13&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/ui/gui/menu-actions.c.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/ui/gui/psppire-case-array.c.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/ui/gui/psppire-case-array.h.diff?tr1=1.1&tr2=1.2&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/ui/gui/psppire-data-store.c.diff?tr1=1.8&tr2=1.9&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/ui/gui/psppire-dict.c.diff?tr1=1.4&tr2=1.5&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/ui/gui/psppire-dict.h.diff?tr1=1.2&tr2=1.3&r1=text&r2=text
http://cvs.savannah.gnu.org/viewcvs/pspp/pspp/src/ui/gui/psppire-variable.c.diff?tr1=1.3&tr2=1.4&r1=text&r2=text
Patches:
Index: pspp/src/ui/gui/ChangeLog
diff -u pspp/src/ui/gui/ChangeLog:1.12 pspp/src/ui/gui/ChangeLog:1.13
--- pspp/src/ui/gui/ChangeLog:1.12 Sun May 14 00:01:39 2006
+++ pspp/src/ui/gui/ChangeLog Mon May 15 12:03:58 2006
@@ -1,3 +1,11 @@
+Mon May 15 20:01:25 WST 2006 John Darrington <address@hidden>
+
+ * menu-actions.c psppire-case-array.c psppire-case-array.h
+ psppire-data-store.c psppire-dict.c psppire-dict.h
+ psppire-variable.c:
+
+ Initialised new cases to SYSMIS/blank when inserting in data sheet.
+
Sat May 13 08:00:50 WST 2006 John Darrington <address@hidden>
* data-sheet.c, helper.c, helper.h, psppire-data-store.c,
Index: pspp/src/ui/gui/menu-actions.c
diff -u pspp/src/ui/gui/menu-actions.c:1.4 pspp/src/ui/gui/menu-actions.c:1.5
--- pspp/src/ui/gui/menu-actions.c:1.4 Mon Apr 17 01:54:15 2006
+++ pspp/src/ui/gui/menu-actions.c Mon May 15 12:03:58 2006
@@ -200,9 +200,9 @@
for(case_num=0;;case_num++)
{
- if (!psppire_case_array_add_case(the_cases,
- populate_case_from_reader,
- reader))
+ if (!psppire_case_array_append_case(the_cases,
+ populate_case_from_reader,
+ reader))
break;
}
}
@@ -325,6 +325,35 @@
}
+/* Fill a case with SYSMIS for numeric and whitespace for string
+ variables respectively */
+static gboolean
+blank_case(struct ccase *cc, gpointer _dict)
+{
+ gint i;
+ PsppireDict *dict = _dict;
+
+ for(i = 0 ; i < psppire_dict_get_var_cnt(dict); ++i )
+ {
+ union value *val ;
+
+ const struct PsppireVariable *var = psppire_dict_get_variable(dict, i);
+
+ gint idx = psppire_variable_get_index(var);
+
+ val = case_data_rw(cc, idx) ;
+
+ if ( psppire_variable_get_type(var) == ALPHA )
+ memset(val->s, ' ', psppire_variable_get_width(var));
+ else
+ val->f = SYSMIS;
+
+ case_unshare(cc);
+ }
+
+ return TRUE;
+}
+
void
on_insert1_activate (GtkMenuItem *menuitem,
@@ -343,7 +372,9 @@
PsppireDataStore *data_store =
PSPPIRE_DATA_STORE(gtk_sheet_get_model(data_sheet));
- psppire_case_array_insert_case(data_store->cases,
data_sheet->range.row0);
+ psppire_case_array_insert_case(data_store->cases,
+ data_sheet->range.row0,
+ blank_case, the_dictionary);
}
break;
case PAGE_VAR_SHEET:
Index: pspp/src/ui/gui/psppire-case-array.c
diff -u pspp/src/ui/gui/psppire-case-array.c:1.3
pspp/src/ui/gui/psppire-case-array.c:1.4
--- pspp/src/ui/gui/psppire-case-array.c:1.3 Tue Apr 4 12:43:22 2006
+++ pspp/src/ui/gui/psppire-case-array.c Mon May 15 12:03:58 2006
@@ -176,24 +176,15 @@
ca->width = new_size;
}
-/* FIXME: add_case and insert_case need to be merged/refactored */
-gboolean
-psppire_case_array_add_case(PsppireCaseArray *ca,
+
+/* Append a case to the case array. If FILL_CASE_FUNC is not NULL,
+ * then use it to populate the case */
+inline gboolean
+psppire_case_array_append_case(PsppireCaseArray *ca,
psppire_case_array_fill_case_func fill_case_func,
gpointer aux)
{
- g_return_val_if_fail(ca->size < ca->capacity, FALSE);
-
- case_create(&ca->cases[ca->size], ca->width);
-
- if ( !fill_case_func(&ca->cases[ca->size], aux))
- return FALSE;
-
- ca->size++;
-
- g_signal_emit(ca, signal[CASE_INSERTED], 0, ca->size - 1);
-
- return TRUE;
+ return psppire_case_array_insert_case(ca, ca->size, fill_case_func, aux);
}
@@ -215,24 +206,33 @@
}
-void
-psppire_case_array_insert_case(PsppireCaseArray *ca, gint posn)
+/* Insert a new case before case POSN.
+ * If FILL_CASE_FUNC is not NULL, then use it to populate the new case */
+gboolean
+psppire_case_array_insert_case(PsppireCaseArray *ca, gint posn,
+ psppire_case_array_fill_case_func fill_case_func,
+ gpointer aux)
+
{
gint i;
- g_return_if_fail(posn >= 0);
- g_return_if_fail(posn <= ca->size);
-
- g_assert(ca->size + 1 <= ca->capacity);
+ g_return_val_if_fail(posn >= 0, FALSE);
+ g_return_val_if_fail(posn <= ca->size, FALSE);
+ g_return_val_if_fail(ca->size < ca->capacity, FALSE);
for(i = ca->size; i > posn ; --i)
case_move(&ca->cases[i], &ca->cases[i - 1]);
case_create(&ca->cases[posn], ca->width);
+ if ( fill_case_func && !fill_case_func(&ca->cases[posn], aux))
+ return FALSE;
+
ca->size++;
g_signal_emit(ca, signal[CASE_INSERTED], 0, posn);
+
+ return TRUE;
}
void
Index: pspp/src/ui/gui/psppire-case-array.h
diff -u pspp/src/ui/gui/psppire-case-array.h:1.1
pspp/src/ui/gui/psppire-case-array.h:1.2
--- pspp/src/ui/gui/psppire-case-array.h:1.1 Sat Mar 4 01:11:58 2006
+++ pspp/src/ui/gui/psppire-case-array.h Mon May 15 12:03:58 2006
@@ -72,7 +72,6 @@
void psppire_case_array_resize(PsppireCaseArray *ca, gint new_size);
-void psppire_case_array_insert_case(PsppireCaseArray *ca, gint posn);
void psppire_case_array_delete_cases(PsppireCaseArray *ca, gint first, gint
n_cases);
@@ -81,10 +80,13 @@
typedef gboolean psppire_case_array_use_case_func(const struct ccase *,
gpointer aux);
-
-gboolean psppire_case_array_add_case(PsppireCaseArray *ca,
- psppire_case_array_fill_case_func
fill_case_func,
- gpointer aux);
+gboolean psppire_case_array_insert_case(PsppireCaseArray *ca, gint posn,
+ psppire_case_array_fill_case_func
fill_case_func,
+ gpointer aux);
+
+inline gboolean psppire_case_array_append_case(PsppireCaseArray *ca,
+ psppire_case_array_fill_case_func
fill_case_func,
+ gpointer aux);
gboolean psppire_case_array_iterate_case(PsppireCaseArray *ca,
Index: pspp/src/ui/gui/psppire-data-store.c
diff -u pspp/src/ui/gui/psppire-data-store.c:1.8
pspp/src/ui/gui/psppire-data-store.c:1.9
--- pspp/src/ui/gui/psppire-data-store.c:1.8 Sun May 14 00:01:39 2006
+++ pspp/src/ui/gui/psppire-data-store.c Mon May 15 12:03:58 2006
@@ -187,14 +187,15 @@
insert_case_callback(GtkWidget *w, gint casenum, gpointer data)
{
PsppireDataStore *store ;
+
g_return_if_fail (data);
store = PSPPIRE_DATA_STORE(data);
g_sheet_model_range_changed (G_SHEET_MODEL(store),
- casenum, -1,
- psppire_case_array_get_n_cases(store->cases),
- -1);
+ casenum, -1,
+ psppire_case_array_get_n_cases(store->cases),
+ -1);
}
@@ -453,7 +454,7 @@
for(r = psppire_case_array_get_n_cases(store->cases) ; r <= row ; ++r )
{
gint c;
- psppire_case_array_insert_case(store->cases, r);
+ psppire_case_array_insert_case(store->cases, r, 0, 0);
for (c = 0 ; c < psppire_dict_get_var_cnt(store->dict); ++c )
psppire_data_store_clear_datum(model, r, c);
Index: pspp/src/ui/gui/psppire-dict.c
diff -u pspp/src/ui/gui/psppire-dict.c:1.4 pspp/src/ui/gui/psppire-dict.c:1.5
--- pspp/src/ui/gui/psppire-dict.c:1.4 Thu May 11 14:28:03 2006
+++ pspp/src/ui/gui/psppire-dict.c Mon May 15 12:03:58 2006
@@ -151,8 +151,6 @@
gint v;
PsppireDict *d = PSPPIRE_DICT (object);
-
-
for (v = 0 ; v < psppire_dict_get_var_cnt(d) ; ++v )
g_free(d->variables[v]);
Index: pspp/src/ui/gui/psppire-dict.h
diff -u pspp/src/ui/gui/psppire-dict.h:1.2 pspp/src/ui/gui/psppire-dict.h:1.3
--- pspp/src/ui/gui/psppire-dict.h:1.2 Wed Mar 15 03:29:11 2006
+++ pspp/src/ui/gui/psppire-dict.h Mon May 15 12:03:58 2006
@@ -72,11 +72,6 @@
void psppire_dict_set_name (PsppireDict* s, gint idx, const gchar
*name);
void psppire_dict_delete_var (PsppireDict *s, gint idx);
-/* Return the variable indexed by IDX.
- returns NULL if IDX is not valid.
-*/
-struct variable *psppire_dict_get_var(PsppireDict *d, gint idx);
-
/* Return the number of variables in the dictionary */
gint psppire_dict_get_var_cnt(const PsppireDict *d);
Index: pspp/src/ui/gui/psppire-variable.c
diff -u pspp/src/ui/gui/psppire-variable.c:1.3
pspp/src/ui/gui/psppire-variable.c:1.4
--- pspp/src/ui/gui/psppire-variable.c:1.3 Tue Apr 4 12:43:22 2006
+++ pspp/src/ui/gui/psppire-variable.c Mon May 15 12:03:58 2006
@@ -345,6 +345,8 @@
return pv->v->width;
}
+
+/* FIXME: This name is misleading */
gint
psppire_variable_get_index(const struct PsppireVariable *pv)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pspp-cvs] pspp/src/ui/gui ChangeLog menu-actions.c psppir...,
John Darrington <=