/[pspp]/psppire/src/var_sheet.c
ViewVC logotype

Diff of /psppire/src/var_sheet.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.24 by jmd, Mon Nov 28 07:14:23 2005 UTC revision 1.25 by jmd, Sat Dec 3 00:13:34 2005 UTC
# Line 38  Line 38 
38  #include "var_sheet.h"  #include "var_sheet.h"
39  #include "customentry.h"  #include "customentry.h"
40    
41    #include "misc.h"
42  #include "val_labs_dialog.h"  #include "val_labs_dialog.h"
43    #include "missing_val_dialog.h"
44    
45  #define _(A) A  #define _(A) A
46  #define N_(A) A  #define N_(A) A
# Line 50  static PSPP_Dict *pspp_dictionary; Line 52  static PSPP_Dict *pspp_dictionary;
52  static gint last_populated_row = -1;  static gint last_populated_row = -1;
53  static struct var_type_dialog *var_type_dialog;  static struct var_type_dialog *var_type_dialog;
54  static struct val_labs_dialog *val_labs_dialog;  static struct val_labs_dialog *val_labs_dialog;
55    static struct missing_val_dialog *missing_val_dialog;
56  static const gint n_initial_rows = 40;  static const gint n_initial_rows = 40;
57    
58    
# Line 375  var_sheet_cell_change_entry (GtkSheet * Line 378  var_sheet_cell_change_entry (GtkSheet *
378              val_labs_dialog = val_labs_dialog_create(xml);              val_labs_dialog = val_labs_dialog_create(xml);
379    
380          val_labs_dialog->target = &var->val_labs ;          val_labs_dialog->target = &var->val_labs ;
381    
382          g_signal_connect_swapped(GTK_OBJECT(customEntry),          g_signal_connect_swapped(GTK_OBJECT(customEntry),
383                                   "clicked",                                   "clicked",
384                                   GTK_SIGNAL_FUNC(val_labs_dialog_show),                                   GTK_SIGNAL_FUNC(val_labs_dialog_show),
# Line 382  var_sheet_cell_change_entry (GtkSheet * Line 386  var_sheet_cell_change_entry (GtkSheet *
386        }        }
387        break;        break;
388      case COL_MISSING:      case COL_MISSING:
389        gtk_sheet_change_entry(sheet, PSPPIRE_CUSTOM_ENTRY_TYPE);        {
390            PsppireCustomEntry *customEntry;
391            
392            gtk_sheet_change_entry(sheet, PSPPIRE_CUSTOM_ENTRY_TYPE);
393    
394            customEntry =
395              PSPPIRE_CUSTOM_ENTRY(gtk_sheet_get_entry(sheet));
396    
397    
398            if (!missing_val_dialog )
399                missing_val_dialog = missing_val_dialog_create(xml);
400    
401            missing_val_dialog->var = pspp_dict_get_var(pspp_dictionary, row);
402    
403            g_signal_connect_swapped(GTK_OBJECT(customEntry),
404                                     "clicked",
405                                     GTK_SIGNAL_FUNC(missing_val_dialog_show),
406                                     missing_val_dialog);
407          }
408        break;        break;
409    
410      case COL_TYPE:      case COL_TYPE:
# Line 552  var_sheet_range_set_editable(GtkSheet *s Line 574  var_sheet_range_set_editable(GtkSheet *s
574    
575    
576    
577    
578  /* Populate ROW according to the variable VAR */  /* Populate ROW according to the variable VAR */
579  static void  static void
580  populate_row_from_var(GtkSheet *sheet, const struct variable *var,  populate_row_from_var(GtkSheet *sheet, const struct variable *var,
# Line 689  populate_row_from_var(GtkSheet *sheet, c Line 712  populate_row_from_var(GtkSheet *sheet, c
712            else            else
713              gtk_sheet_cell_clear(sheet, row, c);              gtk_sheet_cell_clear(sheet, row, c);
714            break;            break;
715            case COL_MISSING:
716              if ( mv_is_empty(&var->miss ))
717                gtk_sheet_set_cell_text(sheet, row, c, _("None"));
718              else
719                {
720                  gchar *text = 0;
721                  if ( ! mv_has_range (&var->miss))
722                    {
723                      const int n = mv_n_values(&var->miss);
724                      gchar *mv[4] = {0,0,0,0};
725                      gint i;
726                      for(i = 0 ; i < n; ++i )
727                        {
728                          union value v;
729                          mv_peek_value(&var->miss, &v, i);
730                          mv[i] = value_to_text(v, var->write);
731                        }
732                      text = g_strjoinv(", ", mv);
733                      for(i = 0 ; i < n; ++i )
734                        g_free(mv[i]);
735                      
736                    }
737                  else
738                    {
739                      gchar *l, *h;
740                      union value low, high;
741                      mv_peek_range(&var->miss, &low.f, &high.f);
742                      
743                      l = value_to_text(low, var->write);
744                      h = value_to_text(high, var->write);
745    
746                      text = g_strdup_printf("%s - %s", l, h);
747                      g_free(l);
748                      g_free(h);
749                      
750                      if ( mv_has_value(&var->miss))
751                        {
752                          gchar *s = 0;
753                          union value v;
754                          mv_peek_value(&var->miss, &v, 0);
755    
756                          s = value_to_text(v, var->write);
757    
758                          gchar *s2 = g_strdup_printf("%s, %s", text, s);
759                          free(s);
760                          free(text);
761                          text = s2;
762                        }
763                    }
764    
765                  gtk_sheet_set_cell_text(sheet, row, c, text);
766                  g_free(text);
767                }
768              break;
769          case COL_VALUES:          case COL_VALUES:
770            if ( ! var->val_labs || 0 == val_labs_count(var->val_labs))            if ( ! var->val_labs || 0 == val_labs_count(var->val_labs))
771              gtk_sheet_set_cell_text(sheet, row, c, _("None"));              gtk_sheet_set_cell_text(sheet, row, c, _("None"));

Legend:
Removed from v.1.24  
changed lines
  Added in v.1.25

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26