Merge branch 'rewrite-sheet' of ssh://jmd@git.sv.gnu.org/srv/git/pspp into rewrite...
authorJohn Darrington <john@darrington.wattle.id.au>
Thu, 27 Nov 2008 09:16:20 +0000 (18:16 +0900)
committerJohn Darrington <john@darrington.wattle.id.au>
Thu, 27 Nov 2008 09:16:20 +0000 (18:16 +0900)
lib/gtksheet/gsheetmodel.c
lib/gtksheet/gtksheet.c
lib/gtksheet/gtksheet.h
src/ui/gui/psppire-data-editor.c
src/ui/gui/psppire-var-sheet.c
src/ui/gui/text-data-import-dialog.c

index 5af404641bb499ffaee172bc90627d1fea5f5249..55b22db87010dd41488d15253dd279a13335ebfc 100644 (file)
@@ -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;
 
index b6ff0000cd9cb2aab9893cf3a0fe80613f17d376..b41840806430519c65f22524211ca32c0d2469b8 100644 (file)
@@ -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);
 }
 
 
index ba2294f84bedbbf28f2352f8da955259a5b4fed2..bdb7ea32efeaabd8bc60a96eec0be5d89a18463f 100644 (file)
@@ -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,
index c1908387f7765a834d48ff0d0af184300b540cdb..e08f414d9866602a0a707ccd529071dac97df6f3 100644 (file)
@@ -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,
index 493fd05c04783ac1476ed5eb5b14e92891b1eb69..c17301056586ac8ad6c844e2a64face30e0ab44f 100644 (file)
@@ -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));
index a029198ae328e831621c61d70b1719f0efa7b565..872f11bab5d43c7a7b5cc865ef3b6e45adb974d9 100644 (file)
@@ -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);