From: John Darrington Date: Thu, 27 Nov 2008 09:16:20 +0000 (+0900) Subject: Merge branch 'rewrite-sheet' of ssh://jmd@git.sv.gnu.org/srv/git/pspp into rewrite... X-Git-Tag: v0.7.1~107 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ad1c79cd51b7ca9d0ad51d80ff916fa48ee5e893;hp=5eabbd1a129cd18e0dcd5a077b187ea9c5a8a917;p=pspp-builds.git Merge branch 'rewrite-sheet' of ssh://jmd@git.sv.gnu.org/srv/git/pspp into rewrite-sheet --- diff --git a/lib/gtksheet/gsheetmodel.c b/lib/gtksheet/gsheetmodel.c index 5af40464..55b22db8 100644 --- a/lib/gtksheet/gsheetmodel.c +++ b/lib/gtksheet/gsheetmodel.c @@ -505,7 +505,6 @@ g_sheet_model_get_row_count(const GSheetModel *model) { g_return_val_if_fail (G_IS_SHEET_MODEL (model), -1); - return G_SHEET_MODEL_GET_IFACE (model)->get_row_count (model); } @@ -515,6 +514,8 @@ g_sheet_model_get_row_count(const GSheetModel *model) gboolean g_sheet_model_get_column_sensitivity (const GSheetModel *model, gint col) { + g_return_val_if_fail (G_IS_SHEET_MODEL (model), FALSE); + if ( NULL == G_SHEET_MODEL_GET_IFACE (model)->get_column_sensitivity) return TRUE; @@ -553,6 +554,8 @@ GtkJustification g_sheet_model_get_column_justification (const GSheetModel *model, gint col) { + g_return_val_if_fail (G_IS_SHEET_MODEL (model), GTK_JUSTIFY_LEFT); + if ( G_SHEET_MODEL_GET_IFACE (model)->get_column_justification) return G_SHEET_MODEL_GET_IFACE (model)->get_column_justification (model, col); @@ -564,6 +567,8 @@ g_sheet_model_get_column_justification (const GSheetModel *model, gboolean g_sheet_model_get_row_sensitivity (const GSheetModel *model, gint row) { + g_return_val_if_fail (G_IS_SHEET_MODEL (model), FALSE); + if ( NULL == G_SHEET_MODEL_GET_IFACE (model)->get_row_sensitivity) return TRUE; diff --git a/lib/gtksheet/gtksheet.c b/lib/gtksheet/gtksheet.c index b6ff0000..b4184080 100644 --- a/lib/gtksheet/gtksheet.c +++ b/lib/gtksheet/gtksheet.c @@ -1046,7 +1046,6 @@ gtk_sheet_init (GtkSheet *sheet) sheet->sheet_window = NULL; sheet->entry_widget = NULL; - sheet->entry_container = NULL; sheet->entry_handler_id = 0; sheet->button = NULL; @@ -1074,7 +1073,7 @@ gtk_sheet_init (GtkSheet *sheet) /* create sheet entry */ - sheet->entry_type = 0; + sheet->entry_type = GTK_TYPE_ENTRY; create_sheet_entry (sheet); /* create global selection button */ @@ -1210,7 +1209,7 @@ range_update_callback (GSheetModel *m, gint row0, gint col0, * Returns: the new sheet widget */ GtkWidget * -gtk_sheet_new (void *vgeo, void *hgeo, GSheetModel *model) +gtk_sheet_new (GSheetModel *model) { GtkWidget *widget = g_object_new (GTK_TYPE_SHEET, "model", model, @@ -1658,9 +1657,6 @@ gtk_sheet_dispose (GObject *object) if (sheet->vaxis) g_object_unref (sheet->vaxis); if (sheet->haxis) g_object_unref (sheet->haxis); - g_object_unref (sheet->entry_container); - sheet->entry_container = NULL; - g_object_unref (sheet->button); sheet->button = NULL; @@ -2511,9 +2507,7 @@ gtk_sheet_entry_changed (GtkWidget *widget, gpointer data) sheet->active_cell.row = -1; sheet->active_cell.col = -1; - text = gtk_entry_get_text (GTK_ENTRY (gtk_sheet_get_entry (sheet))); - - + text = gtk_entry_get_text (gtk_sheet_get_entry (sheet)); if (text && strlen (text) > 0) { @@ -2628,7 +2622,7 @@ gtk_sheet_show_active_cell (GtkSheet *sheet) GTK_WIDGET_SET_FLAGS (GTK_WIDGET (sheet->entry_widget), GTK_VISIBLE); - sheet_entry = GTK_ENTRY (gtk_sheet_get_entry (sheet)); + sheet_entry = gtk_sheet_get_entry (sheet); gtk_sheet_get_attributes (sheet, row, col, &attributes); @@ -2637,14 +2631,14 @@ gtk_sheet_show_active_cell (GtkSheet *sheet) if ( ! text ) text = g_strdup (""); - gtk_entry_set_visibility (GTK_ENTRY (sheet_entry), attributes.is_visible); + gtk_entry_set_visibility (sheet_entry, attributes.is_visible); if ( GTK_IS_ENTRY (sheet_entry)) { const gchar *old_text = gtk_entry_get_text (GTK_ENTRY (sheet_entry)); if (strcmp (old_text, text) != 0) - gtk_entry_set_text (GTK_ENTRY (sheet_entry), text); + gtk_entry_set_text (sheet_entry, text); switch (attributes.justification) { @@ -2663,6 +2657,9 @@ gtk_sheet_show_active_cell (GtkSheet *sheet) gtk_sheet_size_allocate_entry (sheet); + gtk_widget_set_sensitive (GTK_WIDGET (sheet_entry), + g_sheet_model_is_editable (sheet->model, + row, col)); gtk_widget_map (sheet->entry_widget); gtk_widget_grab_focus (GTK_WIDGET (sheet_entry)); @@ -4526,7 +4523,7 @@ gtk_sheet_size_allocate_entry (GtkSheet *sheet) if (!GTK_WIDGET_REALIZED (GTK_WIDGET (sheet))) return; if (!GTK_WIDGET_MAPPED (GTK_WIDGET (sheet))) return; - sheet_entry = GTK_ENTRY (gtk_sheet_get_entry (sheet)); + sheet_entry = gtk_sheet_get_entry (sheet); if ( ! gtk_sheet_get_attributes (sheet, sheet->active_cell.row, sheet->active_cell.col, @@ -4562,29 +4559,8 @@ create_sheet_entry (GtkSheet *sheet) gtk_widget_unparent (sheet->entry_widget); } - if (sheet->entry_type) - { - sheet->entry_container = g_object_new (sheet->entry_type, NULL); - g_object_ref_sink (sheet->entry_container); - sheet->entry_widget = gtk_sheet_get_entry (sheet); - - if ( NULL == sheet->entry_widget) - { - g_warning ("Entry type is %s. It must be GtkEntry subclass, or a widget containing one. " - "Using default", g_type_name (sheet->entry_type)); - g_object_unref (sheet->entry_container); - sheet->entry_widget = sheet->entry_container = gtk_entry_new (); - } - else - { - sheet->entry_widget = sheet->entry_container ; - } - } - else - { - sheet->entry_widget = sheet->entry_container = gtk_entry_new (); - g_object_ref_sink (sheet->entry_container); - } + sheet->entry_widget = g_object_new (sheet->entry_type, NULL); + g_object_ref_sink (sheet->entry_widget); gtk_widget_size_request (sheet->entry_widget, NULL); @@ -4620,43 +4596,32 @@ find_entry (GtkWidget *w, gpointer user_data) } } -GtkWidget * + +GtkEntry * gtk_sheet_get_entry (GtkSheet *sheet) { - GtkWidget *parent; - GtkWidget *entry = NULL; + GtkWidget *w = sheet->entry_widget; g_return_val_if_fail (sheet != NULL, NULL); g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL); g_return_val_if_fail (sheet->entry_widget != NULL, NULL); - if (GTK_IS_ENTRY (sheet->entry_container)) - return (sheet->entry_container); - - parent = sheet->entry_container; - - if (GTK_IS_CONTAINER (parent)) + while (! GTK_IS_ENTRY (w)) { - gtk_container_forall (GTK_CONTAINER (parent), find_entry, &entry); - - if (GTK_IS_ENTRY (entry)) - return entry; - } - - if (!GTK_IS_ENTRY (entry)) return NULL; + GtkWidget *entry = NULL; - return (entry); + if (GTK_IS_CONTAINER (w)) + { + gtk_container_forall (GTK_CONTAINER (w), find_entry, &entry); -} + if (NULL == entry) + break; -GtkWidget * -gtk_sheet_get_entry_widget (GtkSheet *sheet) -{ - g_return_val_if_fail (sheet != NULL, NULL); - g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL); - g_return_val_if_fail (sheet->entry_widget != NULL, NULL); + w = entry; + } + } - return (sheet->entry_widget); + return GTK_ENTRY (w); } @@ -5336,8 +5301,8 @@ gtk_sheet_forall (GtkContainer *container, if (sheet->button && sheet->button->parent) (* callback) (sheet->button, callback_data); - if (sheet->entry_container && GTK_IS_CONTAINER (sheet->entry_container)) - (* callback) (sheet->entry_container, callback_data); + if (sheet->entry_widget && GTK_IS_CONTAINER (sheet->entry_widget)) + (* callback) (sheet->entry_widget, callback_data); } diff --git a/lib/gtksheet/gtksheet.h b/lib/gtksheet/gtksheet.h index ba2294f8..bdb7ea32 100644 --- a/lib/gtksheet/gtksheet.h +++ b/lib/gtksheet/gtksheet.h @@ -118,10 +118,6 @@ struct _GtkSheet /* The GtkEntry used for editing the cells */ GtkWidget *entry_widget; - /* The widget containing entry_widget, or - entry_widget itself if no container */ - GtkWidget *entry_container; - /* The type of entry_widget */ GtkType entry_type; @@ -229,18 +225,16 @@ GtkType gtk_sheet_range_get_type (void); /* create a new sheet */ -GtkWidget * gtk_sheet_new (void *vgeo, void *hgeo, - GSheetModel *model); +GtkWidget * gtk_sheet_new (GSheetModel *model); /* create a new sheet with custom entry */ GtkWidget * -gtk_sheet_new_with_custom_entry (void *vgeo, - void *hgeo, - GtkType entry_type); +gtk_sheet_new_with_custom_entry (GtkType entry_type); + /* Change entry */ void gtk_sheet_change_entry (GtkSheet *sheet, GtkType entry_type); -GtkWidget *gtk_sheet_get_entry (GtkSheet *sheet); +GtkEntry *gtk_sheet_get_entry (GtkSheet *sheet); void gtk_sheet_get_selected_range (GtkSheet *sheet, diff --git a/src/ui/gui/psppire-data-editor.c b/src/ui/gui/psppire-data-editor.c index c1908387..e08f414d 100644 --- a/src/ui/gui/psppire-data-editor.c +++ b/src/ui/gui/psppire-data-editor.c @@ -735,7 +735,7 @@ init_sheet (PsppireDataEditor *de, int i, PsppireAxisUniform *vaxis = psppire_axis_uniform_new (); de->sheet_bin[i] = gtk_scrolled_window_new (hadj, vadj); - de->data_sheet[i] = gtk_sheet_new (NULL, NULL, NULL); + de->data_sheet[i] = gtk_sheet_new (NULL); g_object_set (de->sheet_bin[i], "border-width", 3, diff --git a/src/ui/gui/psppire-var-sheet.c b/src/ui/gui/psppire-var-sheet.c index 493fd05c..c1730105 100644 --- a/src/ui/gui/psppire-var-sheet.c +++ b/src/ui/gui/psppire-var-sheet.c @@ -254,7 +254,7 @@ traverse_cell_callback (GtkSheet *sheet, if ( existing_cell->row == n_vars && new_cell->row >= n_vars) { - GtkEntry *entry = GTK_ENTRY (gtk_sheet_get_entry (sheet)); + GtkEntry *entry = gtk_sheet_get_entry (sheet); const gchar *name = gtk_entry_get_text (entry); @@ -319,12 +319,12 @@ var_sheet_change_active_cell (PsppireVarSheet *vs, { case PSPPIRE_VAR_STORE_COL_ALIGN: { + GtkEntry *entry; static GtkListStore *list_store = NULL; GtkComboBoxEntry *cbe; gtk_sheet_change_entry (sheet, GTK_TYPE_COMBO_BOX_ENTRY); - cbe = - GTK_COMBO_BOX_ENTRY (gtk_sheet_get_entry (sheet)->parent); - + entry = gtk_sheet_get_entry (sheet); + cbe = GTK_COMBO_BOX_ENTRY (GTK_WIDGET (entry)->parent); if ( ! list_store) list_store = create_label_list (alignments); @@ -340,12 +340,11 @@ var_sheet_change_active_cell (PsppireVarSheet *vs, case PSPPIRE_VAR_STORE_COL_MEASURE: { + GtkEntry *entry; GtkComboBoxEntry *cbe; gtk_sheet_change_entry (sheet, GTK_TYPE_COMBO_BOX_ENTRY); - cbe = - GTK_COMBO_BOX_ENTRY (gtk_sheet_get_entry (sheet)->parent); - - + entry = gtk_sheet_get_entry (sheet); + cbe = GTK_COMBO_BOX_ENTRY (GTK_WIDGET (entry)->parent); gtk_combo_box_set_model (GTK_COMBO_BOX (cbe), GTK_TREE_MODEL (vs_class->measure_list)); diff --git a/src/ui/gui/text-data-import-dialog.c b/src/ui/gui/text-data-import-dialog.c index a029198a..872f11ba 100644 --- a/src/ui/gui/text-data-import-dialog.c +++ b/src/ui/gui/text-data-import-dialog.c @@ -1628,7 +1628,6 @@ prepare_formats_page (struct import_assistant *ia) (void *) NULL); var_sheet = PSPPIRE_VAR_SHEET (psppire_var_sheet_new ()); g_object_set (var_sheet, - "row-geometry", var_store, "model", var_store, "may-create-vars", FALSE, (void *) NULL);