/[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.11 by jmd, Thu Nov 3 02:29:26 2005 UTC revision 1.12 by jmd, Thu Nov 3 04:52:28 2005 UTC
# Line 24  Line 24 
24    
25    
26    
27  #ifdef HAVE_CONFIG_H  #include <psppire-conf.h>
 #  include <config.h>  
 #endif  
28    
29  #include <glade/glade.h>  #include <glade/glade.h>
30    
# Line 60  static struct var_type_dialog *var_type_ Line 58  static struct var_type_dialog *var_type_
58  extern GladeXML *xml;  extern GladeXML *xml;
59    
60    
61    static GdkColor enabled;
62    static GdkColor disabled;
63    
64  struct column_parameters  struct column_parameters
65  {  {
66    gchar label[20];      gchar label[20];  
# Line 237  gint_to_gstring(gint x) Line 238  gint_to_gstring(gint x)
238  }  }
239    
240    
241    /* Change the editability of the cells URANGE in SHEET according to the flag
242       EDITABLE */
243    void
244    var_sheet_range_set_editable(GtkSheet *sheet,
245                                 const GtkSheetRange *urange,
246                                 gboolean editable)
247    {
248    
249      gtk_sheet_range_set_editable (sheet, urange, editable);
250      
251      GdkColor *desiredColour =   editable ? &enabled : &disabled;
252    
253      gtk_sheet_range_set_foreground (sheet,
254                                      urange,
255                                      desiredColour);
256    
257      gtk_sheet_range_set_background (sheet,
258                                      urange,
259                                      &sheet->bg_color);
260    
261    
262    
263    }
264    
265    
266    
267  /* Populate ROW according to the variable VAR */  /* Populate ROW according to the variable VAR */
268  static void  static void
269  populate_row_from_var(GtkSheet *sheet, const struct variable *var,  populate_row_from_var(GtkSheet *sheet, const struct variable *var,
# Line 253  populate_row_from_var(GtkSheet *sheet, c Line 280  populate_row_from_var(GtkSheet *sheet, c
280      }      }
281    
282    const struct fmt_spec *write_spec = &var->write;    const struct fmt_spec *write_spec = &var->write;
283    
284      /* Set the editability of the cells */
285    
286      GtkSheetRange range;
287      range.col0 = 0;
288      range.coli = n_COLS;
289      range.row0 = range.rowi = row;
290    
291      var_sheet_range_set_editable (sheet, &range, TRUE);
292    
293      /* Certain types must disable certain columns */
294      switch ( write_spec->type )
295        {
296        case FMT_A:
297          {
298            GtkSheetRange range;
299            range.col0 = range.coli = COL_DECIMALS;
300            range.row0 = range.rowi = row;
301    
302            var_sheet_range_set_editable (sheet, &range, FALSE);
303          }
304          break;
305          
306        case FMT_DATE:
307          {
308            GtkSheetRange range;
309            range.col0 = COL_WIDTH;
310            range.coli = COL_DECIMALS;
311            range.row0 = range.rowi = row;
312            var_sheet_range_set_editable (sheet, &range, FALSE);
313          }
314          break;
315        }
316    
317    for ( c = 0 ; c < n_COLS ; ++c )    for ( c = 0 ; c < n_COLS ; ++c )
318      {      {
319        switch (c)        switch (c)
# Line 307  populate_row_from_var(GtkSheet *sheet, c Line 368  populate_row_from_var(GtkSheet *sheet, c
368            break;            break;
369          case COL_DECIMALS:          case COL_DECIMALS:
370            {            {
             GtkSheetRange range;  
             range.col0 = range.coli = c;  
             range.row0 = range.rowi = row;  
   
371              GString *s = gint_to_gstring(var->write.d);              GString *s = gint_to_gstring(var->write.d);
372              gtk_sheet_set_cell_text(sheet, row, c, s->str);                    gtk_sheet_set_cell_text(sheet, row, c, s->str);      
373              g_string_free(s, TRUE);              g_string_free(s, TRUE);
374              gtk_sheet_range_set_editable (sheet,  
                                 &range, var->type == NUMERIC);  
375            }            }
376            break;            break;
377          case COL_COLUMNS:          case COL_COLUMNS:
# Line 333  populate_row_from_var(GtkSheet *sheet, c Line 389  populate_row_from_var(GtkSheet *sheet, c
389            break;            break;
390          }          }
391      }      }
392    
393    
394  }  }
395    
396    
# Line 411  psppire_variable_sheet_create (gchar *wi Line 469  psppire_variable_sheet_create (gchar *wi
469      }      }
470    
471    
472    gtk_widget_show(sheet);    /* Set the enabled colour to the default foreground colour */
473      GtkSheetCellAttr attributes;
474      g_assert(gtk_sheet_get_attributes (sheet,0,0, &attributes));
475      enabled = attributes.foreground;
476    
477    
478      g_assert(gdk_color_parse("gray",&disabled));
479    
480      GdkColormap *colormap = gdk_colormap_get_system();
481    
482      gdk_colormap_alloc_color (colormap, &disabled, FALSE, TRUE);
483    
484      gtk_widget_show(sheet);
485    
486    return sheet;    return sheet;
487    

Legend:
Removed from v.1.11  
changed lines
  Added in v.1.12

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