+21 Septempber 2007 John Darrington <john@darrington.wattle.id.au>
+
+ * gtksheet.c (range_update_callback): Scroll to cell 0,0 if the
+ current position is outside the model's range.
+
24 July 2007 John Darrington <john@darrington.wattle.id.au>
* gtksheet.c gtksheet.h: Removed the `clip' feature, which IMO
range.rowi = rowi;
range.coli = coli;
+ if ( MAX_VISIBLE_ROW (sheet) >
+ g_sheet_model_get_row_count (sheet->model)
+ ||
+ MAX_VISIBLE_COLUMN (sheet) >
+ g_sheet_model_get_column_count (sheet->model))
+ {
+ gtk_sheet_move_query (sheet, 0, 0);
+ }
+
if ( ( row0 < 0 && col0 < 0 ) || ( rowi < 0 && coli < 0 ) )
{
gint i;
+2007-09-27 John Darrington <john@darrington.wattle.id.au>
+
+ Addressing bug #20821:
+
+ * psppire-dict.c: Added a BACKEND_CHANGED signal to indicate when
+ a PsppireDict's struct dictionary has been replaced.
+
+ * psppire-var-store.c: Added the appropriate method for
+ get_column_count. Added a signal handler for dict:BACKEND_CHANGED,
+ which calls the g_sheet_model_range_changed for the entire sheet.
+
2007-09-18 Ben Pfaff <blp@gnu.org>
* helper.c (create_casereader_from_data_store): New function.
/* --- variables --- */
static GObjectClass *parent_class = NULL;
-enum {VARIABLE_CHANGED,
- VARIABLE_RESIZED,
- VARIABLE_INSERTED,
- VARIABLE_DELETED,
- WEIGHT_CHANGED,
- FILTER_CHANGED,
- SPLIT_CHANGED,
- n_SIGNALS};
+enum {
+ BACKEND_CHANGED,
+
+ VARIABLE_CHANGED,
+ VARIABLE_RESIZED,
+ VARIABLE_INSERTED,
+ VARIABLE_DELETED,
+
+ WEIGHT_CHANGED,
+ FILTER_CHANGED,
+ SPLIT_CHANGED,
+ n_SIGNALS
+};
static guint signals [n_SIGNALS];
object_class->finalize = psppire_dict_finalize;
+ signals [BACKEND_CHANGED] =
+ g_signal_new ("backend-changed",
+ G_TYPE_FROM_CLASS (class),
+ G_SIGNAL_RUN_FIRST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+
signals [VARIABLE_CHANGED] =
g_signal_new ("variable_changed",
G_TYPE_FROM_CLASS (class),
psppire_dict_replace_dictionary (PsppireDict *dict, struct dictionary *d)
{
struct variable *var = dict_get_weight (d);
+
dict->dict = d;
weight_changed_callback (d, var ? var_get_dict_index (var) : -1, dict);
split_changed_callback (d, dict);
dict_set_callbacks (dict->dict, &gui_callbacks, dict);
+
+ g_signal_emit (dict, signals [BACKEND_CHANGED], 0);
}
const gchar *text, glong row, glong column);
static glong psppire_var_store_get_row_count (const GSheetModel * model);
+static glong psppire_var_store_get_column_count (const GSheetModel * model);
static gchar *text_for_column (const struct variable *pv, gint c, GError **err);
+
static void
psppire_var_store_sheet_model_init (GSheetModelIface *iface)
{
iface->get_row_count = psppire_var_store_get_row_count;
+ iface->get_column_count = psppire_var_store_get_column_count;
iface->free_strings = TRUE;
iface->get_string = psppire_var_store_get_string;
iface->set_string = psppire_var_store_set_string;
g_sheet_model_rows_inserted (model, row, 1);
}
+static void
+refresh (PsppireDict *d, gpointer data)
+{
+ PsppireVarStore *vs = data;
+ g_sheet_model_range_changed (G_SHEET_MODEL (vs), -1, -1, -1, -1);
+}
/**
* psppire_var_store_replace_set_dictionary:
g_signal_connect (dict, "variable-deleted", G_CALLBACK (var_delete_callback),
var_store);
- g_signal_connect (dict, "variable-inserted", G_CALLBACK (var_insert_callback),
- var_store);
+ g_signal_connect (dict, "variable-inserted",
+ G_CALLBACK (var_insert_callback), var_store);
+ g_signal_connect (dict, "backend-changed", G_CALLBACK (refresh),
+ var_store);
/* The entire model has changed */
g_sheet_model_range_changed (G_SHEET_MODEL (var_store), -1, -1, -1, -1);
return rows ;
}
+static glong
+psppire_var_store_get_column_count (const GSheetModel * model)
+{
+ return n_COLS ;
+}
+
+
/* Row related funcs */
static glong