/[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.9 by jmd, Wed Nov 2 09:44:02 2005 UTC revision 1.10 by jmd, Wed Nov 2 13:17:29 2005 UTC
# Line 118  set_var_type(GtkWidget *w, gpointer data Line 118  set_var_type(GtkWidget *w, gpointer data
118    decimals =atoi(gtk_entry_get_text    decimals =atoi(gtk_entry_get_text
119                   (GTK_ENTRY(var_type_dialog->entry_decimals)));                   (GTK_ENTRY(var_type_dialog->entry_decimals)));
120    
121      var->type = NUMERIC;
122    var->width = width;    var->width = 0;
123      switch (var_type_dialog->active_button)
   spec.w = width;  
   spec.d = decimals;  
     
   for(i = 0; i < num_BUTTONS; ++i )  
124      {      {
125        if ( gtk_toggle_button_get_active      case BUTTON_STRING:
126             (GTK_TOGGLE_BUTTON(var_type_dialog->radioButton[i])) )        var->type = ALPHA;
127          {        var->width = width;
128            switch (i)        spec = make_output_format(FMT_A, width, 0);
129              {        break;
130              case BUTTON_STRING:      case BUTTON_NUMERIC:
131                spec.type = FMT_A;        spec = make_output_format(FMT_F, width, decimals);
132                break;        break;
133              case BUTTON_NUMERIC:      case BUTTON_COMMA:
134                spec.type = FMT_F;        spec = make_output_format(FMT_COMMA, width, decimals);
135                break;        break;
136              default:      case BUTTON_DOT:
137                break;        spec = make_output_format(FMT_DOT, width, decimals);
138              }        break;
139            break;      case BUTTON_SCIENTIFIC:
140          }        spec = make_output_format(FMT_E, width, decimals);
141          break;
142        case BUTTON_DATE:
143          spec = make_output_format(FMT_DATE, 10, 0);
144          break;
145        case BUTTON_DOLLAR:
146          spec = make_output_format(FMT_DOLLAR, width, decimals);
147          break;
148        case BUTTON_CUSTOM:
149          spec = make_output_format(FMT_CCA, width, decimals);
150          break;
151        default:
152          g_print("Unknown format\n");
153          break;
154      }      }
     
   var->write = var->print = spec;  
155    
156      var->write = var->print = spec;
157        
158    pspp_dict_var_changed(pspp_dictionary, current_row);    pspp_dict_var_changed(pspp_dictionary, current_row);
159        
   
160    return FALSE;    return FALSE;
161  }  }
162    
# Line 173  static gboolean Line 180  static gboolean
180  var_sheet_cell_set (GtkSheet * sheet, gint row, gint column)  var_sheet_cell_set (GtkSheet * sheet, gint row, gint column)
181  {  {
182    gint r;    gint r;
   g_print("Set row %d\n",row);  
   
   g_print("%s:%d Last populated row: %d\n",__FILE__,__LINE__,last_populated_row);      
   
183    /* Fill out any rows above, which are empty */    /* Fill out any rows above, which are empty */
184    for ( r = last_populated_row + 1 ; r < row ; ++r )    for ( r = last_populated_row + 1 ; r < row ; ++r )
185      {      {
       g_print("Autofilling row %d\n",r);  
186        gchar *name = auto_generate_var_name(pspp_dictionary);        gchar *name = auto_generate_var_name(pspp_dictionary);
187        pspp_dict_set_name(pspp_dictionary, r, name);        pspp_dict_set_name(pspp_dictionary, r, name);
188        g_free(name);        g_free(name);
189      }      }
190    if ( row - 1 > last_populated_row)    if ( row - 1 > last_populated_row)
191      last_populated_row = row - 1;      last_populated_row = row - 1;
   g_print("%s:%d Last populated row: %d\n",__FILE__,__LINE__,last_populated_row);      
192    
193    struct variable *var = pspp_dict_get_var(pspp_dictionary, row);          struct variable *var = pspp_dict_get_var(pspp_dictionary, row);      
194        
195    /* Fill out any cells to the left which are empty */    /* Fill out any cells to the left which are empty */
196    if ( var == NULL && column != 0 )    if ( var == NULL && column != 0 )
197      {      {
       g_print("Filling Left\n");  
198        gchar *name = auto_generate_var_name(pspp_dictionary);        gchar *name = auto_generate_var_name(pspp_dictionary);
199        pspp_dict_set_name(pspp_dictionary, row, name);        pspp_dict_set_name(pspp_dictionary, row, name);
200        g_free(name);        g_free(name);
201        last_populated_row = row ;        last_populated_row = row ;
202        var = pspp_dict_get_var(pspp_dictionary, row);              var = pspp_dict_get_var(pspp_dictionary, row);      
203      }      }
   g_print("%s:%d Last populated row: %d\n",__FILE__,__LINE__,last_populated_row);      
204    
205    if ( column == COL_TYPE )    if ( column == COL_TYPE )
206      {      {
# Line 252  populate_row_from_var(GtkSheet *sheet, c Line 251  populate_row_from_var(GtkSheet *sheet, c
251        return;        return;
252      }      }
253    
254      const struct fmt_spec *write_spec = &var->write;
255    for ( c = 0 ; c < n_COLS ; ++c )    for ( c = 0 ; c < n_COLS ; ++c )
256      {      {
257        switch (c)        switch (c)
# Line 261  populate_row_from_var(GtkSheet *sheet, c Line 261  populate_row_from_var(GtkSheet *sheet, c
261            break;            break;
262          case COL_TYPE:          case COL_TYPE:
263            {            {
             const struct fmt_spec *write_spec = &var->write;  
264              switch ( write_spec->type )              switch ( write_spec->type )
265                {                {
266                case FMT_F:                case FMT_F:
# Line 273  populate_row_from_var(GtkSheet *sheet, c Line 272  populate_row_from_var(GtkSheet *sheet, c
272                case FMT_DOT:                case FMT_DOT:
273                  gtk_sheet_set_cell_text(sheet, row, c, _("Dot"));                  gtk_sheet_set_cell_text(sheet, row, c, _("Dot"));
274                  break;                  break;
275                  case FMT_E:
276                    gtk_sheet_set_cell_text(sheet, row, c, _("Scientific"));
277                    break;
278                  case FMT_DATE:
279                    gtk_sheet_set_cell_text(sheet, row, c, _("Date"));
280                    break;
281                case FMT_DOLLAR:                case FMT_DOLLAR:
282                  gtk_sheet_set_cell_text(sheet, row, c, _("Dollar"));                  gtk_sheet_set_cell_text(sheet, row, c, _("Dollar"));
283                  break;                  break;
284                  case FMT_CCA:
285                  case FMT_CCB:
286                  case FMT_CCC:
287                  case FMT_CCD:
288                  case FMT_CCE:
289                    gtk_sheet_set_cell_text(sheet, row, c, _("Custom"));
290                    break;
291                case FMT_A:                case FMT_A:
292                  gtk_sheet_set_cell_text(sheet, row, c, _("String"));                  gtk_sheet_set_cell_text(sheet, row, c, _("String"));
293                  break;                  break;
# Line 287  populate_row_from_var(GtkSheet *sheet, c Line 299  populate_row_from_var(GtkSheet *sheet, c
299            break;            break;
300          case COL_WIDTH:          case COL_WIDTH:
301            {            {
302              GString *s = gint_to_gstring(var->width);              GString *s = gint_to_gstring(var->write.w);
303              gtk_sheet_set_cell_text(sheet, row, c, s->str);                    gtk_sheet_set_cell_text(sheet, row, c, s->str);      
304              g_string_free(s, TRUE);              g_string_free(s, TRUE);
305            }            }
306            break;            break;
307          case COL_DECIMALS:          case COL_DECIMALS:
308            {            {
309                GtkSheetRange range;
310                range.col0 = range.coli = c;
311                range.row0 = range.rowi = row;
312    
313              GString *s = gint_to_gstring(var->write.d);              GString *s = gint_to_gstring(var->write.d);
314              gtk_sheet_set_cell_text(sheet, row, c, s->str);                    gtk_sheet_set_cell_text(sheet, row, c, s->str);      
315              g_string_free(s, TRUE);              g_string_free(s, TRUE);
316                gtk_sheet_range_set_editable (sheet,
317                                    &range, var->type == NUMERIC);
318            }            }
319            break;            break;
320          case COL_COLUMNS:          case COL_COLUMNS:
# Line 306  populate_row_from_var(GtkSheet *sheet, c Line 324  populate_row_from_var(GtkSheet *sheet, c
324              g_string_free(s, TRUE);              g_string_free(s, TRUE);
325            }            }
326            break;            break;
327            case COL_LABEL:
328              if (var->label)
329                gtk_sheet_set_cell_text(sheet, row, c, var->label);  
330              else
331                gtk_sheet_cell_clear(sheet, row, c);
332              break;
333          }          }
334      }      }
335  }  }
# Line 394  psppire_variable_sheet_create (gchar *wi Line 418  psppire_variable_sheet_create (gchar *wi
418  }  }
419    
420    
   
   
   
421  /* Update a variable.  /* Update a variable.
422     This callback is invoked whenever a cell on the var_sheet is     This callback is invoked whenever a cell on the var_sheet is
423     changed     changed
# Line 453  update_variable(GtkSheet *sheet, gint ro Line 474  update_variable(GtkSheet *sheet, gint ro
474        old_var->width = atoi(gtk_sheet_cell_get_text(sheet, row, col));        old_var->width = atoi(gtk_sheet_cell_get_text(sheet, row, col));
475        pspp_dict_var_changed(pspp_dictionary, row);        pspp_dict_var_changed(pspp_dictionary, row);
476        break;        break;
477      }      case COL_LABEL:
478          old_var->label = gtk_sheet_cell_get_text(sheet, row, col);
479          break;
480         }
481    
482    if ( row > last_populated_row )    if ( row > last_populated_row )
483      last_populated_row = row ;      last_populated_row = row ;
# Line 485  var_sheet_update_callback(GObject *obj, Line 509  var_sheet_update_callback(GObject *obj,
509    
510    
511    
512  /* Associate a  dictionary with the var sheet */  /* Associate a dictionary with the var sheet.
513    */
514  void  void
515  psppire_var_sheet_set_dictionary(GtkWidget *sheet, PSPP_Dict *d)  psppire_var_sheet_set_dictionary(GtkWidget *sheet, PSPP_Dict *d)
516  {  {
# Line 500  psppire_var_sheet_set_dictionary(GtkWidg Line 525  psppire_var_sheet_set_dictionary(GtkWidg
525  }  }
526    
527    
528    /* Blank the sheet */
529    void
530    psppire_var_sheet_clear(GtkWidget *sheet)
531    {
532      gtk_sheet_range_clear(sheet, NULL);
533      last_populated_row = -1;
534    }

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

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