From: John Darrington Date: Sun, 27 Jan 2013 19:41:07 +0000 (+0100) Subject: Added a callback to set the range entry on change X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=404bd133ab1d8d446564100debb606fd2786371f;p=pspp Added a callback to set the range entry on change --- diff --git a/src/ui/gui/page-sheet-spec.c b/src/ui/gui/page-sheet-spec.c index a23ac40dd6..5a760bd53d 100644 --- a/src/ui/gui/page-sheet-spec.c +++ b/src/ui/gui/page-sheet-spec.c @@ -53,6 +53,8 @@ #include "ui/gui/psppire-scanf.h" #include "ui/syntax-gen.h" +#include "ui/gui/psppire-spreadsheet-model.h" + #include #include "gl/error.h" @@ -65,8 +67,6 @@ struct import_assistant; - - /* The "sheet-spec" page of the assistant. */ /* The sheet_spec page of the assistant (only relevant for spreadsheet imports). */ @@ -80,6 +80,20 @@ struct sheet_spec_page struct spreadsheet_read_options opts; }; +static void +on_sheet_combo_changed (GtkComboBox *cb, struct import_assistant *ia) +{ + GtkTreeIter iter; + gchar *range = NULL; + GtkTreeModel *model = gtk_combo_box_get_model (cb); + GtkBuilder *builder = ia->asst.builder; + GtkWidget *range_entry = get_widget_assert (builder, "cell-range-entry"); + + gtk_combo_box_get_active_iter (cb, &iter); + gtk_tree_model_get (model, &iter, PSPPIRE_SPREADSHEET_MODEL_COL_RANGE, &range, -1); + gtk_entry_set_text (GTK_ENTRY (range_entry), range); + g_free (range); +} /* Initializes IA's sheet_spec substructure. */ struct sheet_spec_page * @@ -95,6 +109,8 @@ sheet_spec_page_create (struct import_assistant *ia) "text", 0, NULL); + g_signal_connect (combo_box, "changed", G_CALLBACK (on_sheet_combo_changed), ia); + return p; } diff --git a/src/ui/gui/psppire-spreadsheet-model.c b/src/ui/gui/psppire-spreadsheet-model.c index f66ce1da28..240356f294 100644 --- a/src/ui/gui/psppire-spreadsheet-model.c +++ b/src/ui/gui/psppire-spreadsheet-model.c @@ -157,18 +157,10 @@ psppire_spreadsheet_model_new (struct spreadsheet *sp) - -enum -{ - COL_SHEET_NAME, - COL_SHEET_RANGE, - N_COLS -}; - static gint tree_model_n_columns (GtkTreeModel * model) { - return N_COLS; + return PSPPIRE_SPREADSHEET_MODEL_N_COLS; } static GtkTreeModelFlags @@ -184,7 +176,7 @@ static GType tree_model_column_type (GtkTreeModel * model, gint index) { g_return_val_if_fail (PSPPIRE_IS_SPREADSHEET_MODEL (model), (GType) 0); - g_return_val_if_fail (index < N_COLS, (GType) 0); + g_return_val_if_fail (index < PSPPIRE_SPREADSHEET_MODEL_N_COLS, (GType) 0); return G_TYPE_STRING; } @@ -244,13 +236,13 @@ tree_model_get_value (GtkTreeModel * model, GtkTreeIter * iter, { PsppireSpreadsheetModel *spreadsheetModel = PSPPIRE_SPREADSHEET_MODEL (model); - g_return_if_fail (column < N_COLS); + g_return_if_fail (column < PSPPIRE_SPREADSHEET_MODEL_N_COLS); g_return_if_fail (iter->stamp == spreadsheetModel->stamp); g_value_init (value, G_TYPE_STRING); switch (column) { - case COL_SHEET_NAME: + case PSPPIRE_SPREADSHEET_MODEL_COL_NAME: { const char *x = gnumeric_get_sheet_name (spreadsheetModel->spreadsheet, @@ -258,13 +250,13 @@ tree_model_get_value (GtkTreeModel * model, GtkTreeIter * iter, g_value_set_string (value, x); } break; - case COL_SHEET_RANGE: + case PSPPIRE_SPREADSHEET_MODEL_COL_RANGE: { char *x = gnumeric_get_sheet_range (spreadsheetModel->spreadsheet, (gint) iter->user_data); g_value_set_string (value, x); - free (x); + g_free (x); } break; default: diff --git a/src/ui/gui/psppire-spreadsheet-model.h b/src/ui/gui/psppire-spreadsheet-model.h index 94be3c397e..0366ad4bc1 100644 --- a/src/ui/gui/psppire-spreadsheet-model.h +++ b/src/ui/gui/psppire-spreadsheet-model.h @@ -82,4 +82,12 @@ GtkTreeModel * psppire_spreadsheet_model_new (struct spreadsheet *sp); G_END_DECLS + +enum +{ + PSPPIRE_SPREADSHEET_MODEL_COL_NAME, + PSPPIRE_SPREADSHEET_MODEL_COL_RANGE, + PSPPIRE_SPREADSHEET_MODEL_N_COLS +}; + #endif /* __PSPPIRE_SPREADSHEET_MODEL_H__ */