[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pspp-cvs] pspp/src/ui/gui ChangeLog helper.c psppire-case...
From: |
John Darrington |
Subject: |
[Pspp-cvs] pspp/src/ui/gui ChangeLog helper.c psppire-case... |
Date: |
Tue, 07 Aug 2007 00:56:59 +0000 |
CVSROOT: /sources/pspp
Module name: pspp
Changes by: John Darrington <jmd> 07/08/07 00:56:59
Modified files:
src/ui/gui : ChangeLog helper.c psppire-case-file.c
psppire-data-store.c psppire-data-store.h
Log message:
Fixed the two biggest sources of GtkCritical errors.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/ChangeLog?cvsroot=pspp&r1=1.75&r2=1.76
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/helper.c?cvsroot=pspp&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/psppire-case-file.c?cvsroot=pspp&r1=1.28&r2=1.29
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/psppire-data-store.c?cvsroot=pspp&r1=1.51&r2=1.52
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/gui/psppire-data-store.h?cvsroot=pspp&r1=1.19&r2=1.20
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/ChangeLog,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -b -r1.75 -r1.76
--- ChangeLog 6 Aug 2007 02:09:01 -0000 1.75
+++ ChangeLog 7 Aug 2007 00:56:59 -0000 1.76
@@ -1,3 +1,16 @@
+2007-08-07 John Darrington <address@hidden>
+
+ * helper.c (execute_syntax): Set the active file data to NULL at the
+ end of the procedure. Thanks to Ben for suggesting this.
+
+ * psppire-case-file.c: Added assertions to the remaining functions
+ on inaccessible objects.
+
+ * psppire-data-store.c psppire-data-store.h: Disconnect or block
+ signals on dictionary and case_file, when make_reader has been called.
+ Reconnect or unblock them when a new datasheet has been set for the
+ data_store.
+
2007-08-06 John Darrington <address@hidden>
* syntax-editor.glade: Changed some properties to be less annoying.
Index: helper.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/helper.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- helper.c 30 Jul 2007 09:28:36 -0000 1.23
+++ helper.c 7 Aug 2007 00:56:59 -0000 1.24
@@ -201,6 +201,8 @@
psppire_data_store_set_case_file (the_data_store, pcf);
}
+ proc_set_active_file_data (the_dataset, NULL);
+
som_flush ();
}
Index: psppire-case-file.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire-case-file.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -b -r1.28 -r1.29
--- psppire-case-file.c 18 Jul 2007 05:32:22 -0000 1.28
+++ psppire-case-file.c 7 Aug 2007 00:56:59 -0000 1.29
@@ -168,6 +168,7 @@
{
g_return_val_if_fail (cf, FALSE);
g_return_val_if_fail (cf->datasheet, FALSE);
+ g_return_val_if_fail (cf->accessible, FALSE);
g_return_val_if_fail (first + n_cases <=
psppire_case_file_get_case_count (cf), FALSE);
@@ -190,6 +191,7 @@
g_return_val_if_fail (cf, FALSE);
g_return_val_if_fail (cf->datasheet, FALSE);
+ g_return_val_if_fail (cf->accessible, FALSE);
case_clone (&tmp, cc);
result = datasheet_insert_rows (cf->datasheet, posn, &tmp, 1);
@@ -204,7 +206,7 @@
/* Append a case to the case file */
-gboolean
+static gboolean
psppire_case_file_append_case (PsppireCaseFile *cf,
struct ccase *c)
{
@@ -214,6 +216,7 @@
g_return_val_if_fail (cf, FALSE);
g_return_val_if_fail (cf->datasheet, FALSE);
+ g_return_val_if_fail (cf->accessible, FALSE);
posn = datasheet_get_row_cnt (cf->datasheet);
Index: psppire-data-store.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire-data-store.c,v
retrieving revision 1.51
retrieving revision 1.52
diff -u -b -r1.51 -r1.52
--- psppire-data-store.c 29 Jul 2007 07:56:53 -0000 1.51
+++ psppire-data-store.c 7 Aug 2007 00:56:59 -0000 1.52
@@ -178,6 +178,8 @@
data_store->dict = 0;
data_store->case_file = 0;
data_store->width_of_m = 10;
+
+
}
const PangoFontDescription *
@@ -384,36 +386,55 @@
void
-psppire_data_store_set_case_file (PsppireDataStore *data_store,
+psppire_data_store_set_case_file (PsppireDataStore *ds,
PsppireCaseFile *cf)
{
- if ( data_store->case_file)
+ gint i;
+ if ( ds->case_file)
{
- g_object_unref (data_store->case_file);
+ g_object_unref (ds->case_file);
}
- data_store->case_file = cf;
+ ds->case_file = cf;
- g_sheet_model_range_changed (G_SHEET_MODEL (data_store),
+ g_sheet_model_range_changed (G_SHEET_MODEL (ds),
-1, -1, -1, -1);
+ for (i = 0 ; i < n_cf_signals ; ++i )
+ {
+ if ( ds->cf_handler_id [i] > 0 )
+ g_signal_handler_disconnect (ds->case_file,
+ ds->cf_handler_id[i]);
+ }
+
+
+ if ( ds->dict )
+ for (i = 0 ; i < n_dict_signals; ++i )
+ {
+ if ( ds->dict_handler_id [i] > 0)
+ {
+ g_signal_handler_unblock (ds->dict,
+ ds->dict_handler_id[i]);
+ }
+ }
- g_signal_connect (data_store->case_file, "cases-deleted",
+ ds->cf_handler_id [CASES_DELETED] =
+ g_signal_connect (ds->case_file, "cases-deleted",
G_CALLBACK (delete_cases_callback),
- data_store);
+ ds);
- g_signal_connect (data_store->case_file, "case-inserted",
+ ds->cf_handler_id [CASE_INSERTED] =
+ g_signal_connect (ds->case_file, "case-inserted",
G_CALLBACK (insert_case_callback),
- data_store);
+ ds);
-
- g_signal_connect (data_store->case_file, "case-changed",
+ ds->cf_handler_id [CASE_CHANGED] =
+ g_signal_connect (ds->case_file, "case-changed",
G_CALLBACK (changed_case_callback),
- data_store);
+ ds);
}
-
/**
* psppire_data_store_replace_set_dictionary:
* @data_store: The variable store
@@ -425,28 +446,59 @@
void
psppire_data_store_set_dictionary (PsppireDataStore *data_store, PsppireDict
*dict)
{
+ int i;
+
+ /* Disconnect any existing handlers */
+ if ( data_store->dict )
+ for (i = 0 ; i < n_dict_signals; ++i )
+ {
+ g_signal_handler_disconnect (data_store->dict,
+ data_store->dict_handler_id[i]);
+ }
+
data_store->dict = dict;
+ if ( dict != NULL)
+ {
+
+ data_store->dict_handler_id [VARIABLE_INSERTED] =
g_signal_connect (dict, "variable-inserted",
G_CALLBACK (insert_variable_callback),
data_store);
+ data_store->dict_handler_id [VARIABLE_DELETED] =
g_signal_connect (dict, "variable-deleted",
G_CALLBACK (delete_variable_callback),
data_store);
+ data_store->dict_handler_id [VARIABLE_CHANGED] =
g_signal_connect (dict, "variable-changed",
G_CALLBACK (variable_changed_callback),
data_store);
+ data_store->dict_handler_id [SIZE_CHANGED] =
g_signal_connect (dict, "dict-size-changed",
G_CALLBACK (dict_size_change_callback),
data_store);
+ }
+
+
/* The entire model has changed */
g_sheet_model_range_changed (G_SHEET_MODEL (data_store), -1, -1, -1, -1);
g_sheet_column_columns_changed (G_SHEET_COLUMN (data_store), 0, -1);
+
+
+ if ( data_store->dict )
+ for (i = 0 ; i < n_dict_signals; ++i )
+ {
+ if ( data_store->dict_handler_id [i] > 0)
+ {
+ g_signal_handler_block (data_store->dict,
+ data_store->dict_handler_id[i]);
+ }
+ }
}
static void
@@ -673,8 +725,22 @@
struct casereader *
psppire_data_store_get_reader (PsppireDataStore *ds)
{
+ int i;
struct casereader *reader ;
+ for (i = 0 ; i < n_cf_signals ; ++i )
+ {
+ g_signal_handler_disconnect (ds->case_file, ds->cf_handler_id[i]);
+ ds->cf_handler_id[i] = 0 ;
+ }
+
+ if ( ds->dict )
+ for (i = 0 ; i < n_dict_signals; ++i )
+ {
+ g_signal_handler_block (ds->dict,
+ ds->dict_handler_id[i]);
+ }
+
reader = psppire_case_file_make_reader (ds->case_file);
return reader;
@@ -835,7 +901,7 @@
glong row = pixel / ROW_HEIGHT;
if (row >= geometry_get_row_count (geo, data))
- row = geometry_get_row_count (geo, data) -1;
+ row = geometry_get_row_count (geo, data) - 1;
return row;
}
Index: psppire-data-store.h
===================================================================
RCS file: /sources/pspp/pspp/src/ui/gui/psppire-data-store.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- psppire-data-store.h 29 Jul 2007 07:56:53 -0000 1.19
+++ psppire-data-store.h 7 Aug 2007 00:56:59 -0000 1.20
@@ -56,6 +56,26 @@
struct dictionary;
+
+enum cf_signal_handler {
+ CASES_DELETED,
+ CASE_INSERTED,
+ CASE_CHANGED,
+ n_cf_signals
+};
+
+
+enum dict_signal_handler {
+ VARIABLE_INSERTED,
+ VARIABLE_CHANGED,
+ VARIABLE_DELETED,
+ SIZE_CHANGED,
+ n_dict_signals
+};
+
+void do_this_thing (PsppireDict *, struct dictionary *, void *);
+
+
struct _PsppireDataStore
{
GObject parent;
@@ -72,6 +92,9 @@
/* Geometry */
gint margin_width;
+
+ gint cf_handler_id [n_cf_signals];
+ gint dict_handler_id [n_dict_signals];
};
struct _PsppireDataStoreClass
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pspp-cvs] pspp/src/ui/gui ChangeLog helper.c psppire-case...,
John Darrington <=