/[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.23 by jmd, Sun Nov 27 08:21:33 2005 UTC revision 1.24 by jmd, Mon Nov 28 07:14:23 2005 UTC
# Line 112  static void psppire_var_sheet_unblock(Gt Line 112  static void psppire_var_sheet_unblock(Gt
112    
113  static void psppire_var_sheet_block(GtkSheet *sheet);  static void psppire_var_sheet_block(GtkSheet *sheet);
114    
115  /* Callback for when the Value Labels dialog is closed using the OK button.  static gboolean
    It sets the appropriate variable accordingly. */  
 static gint  
 apply_val_labs(GtkWidget *w, gpointer data)  
 {  
 }  
   
   
   
 gboolean  
116  click2row(GtkWidget *w, gint row, gpointer data)  click2row(GtkWidget *w, gint row, gpointer data)
117  {  {
118    gint current_row, current_column;    gint current_row, current_column;
# Line 231  auto_generate_var_name(PSPP_Dict *dict) Line 222  auto_generate_var_name(PSPP_Dict *dict)
222    return name;    return name;
223  }  }
224    
225    static  const gchar *alignments[]={
226      _("Left"),
227      _("Right"),
228      _("Centre"),
229      0
230    };
231    
232    static  const gchar *measures[]={
233      _("Nominal"),
234      _("Ordinal"),
235      _("Scale"),
236      0
237    };
238    
239    static GtkListStore *
240    create_label_list(const gchar **labels)
241    {
242      gint i = 0;
243      GtkTreeIter iter;
244    
245      GtkListStore *list_store;
246      list_store = gtk_list_store_new (1, G_TYPE_STRING);
247    
248      const gchar *s;
249      while ( (s = labels[i++]))
250        {
251          gtk_list_store_append (list_store, &iter);
252          gtk_list_store_set (list_store, &iter,
253                              0, s,
254                              -1);
255        }
256            
257      return list_store;
258    }
259    
260    /* Callback for when the alignment combo box
261       item is selected */
262    static void        
263    change_alignment(GtkComboBox *cb,
264        gpointer user_data)
265    {
266      struct variable *var = user_data;
267      gint active_item = gtk_combo_box_get_active(cb);
268    
269      if ( active_item < 0 ) return ;
270    
271      var->alignment = active_item;
272    
273      /* Inform the dictionary of the change so that it can emit a signal
274         to let the data sheet know */
275      pspp_dict_var_changed(pspp_dictionary, var->index);
276    
277    }
278    
279    
280    /* Callback for when the alignment combo box
281       item is selected */
282    static void        
283    change_measure(GtkComboBox *cb,
284        gpointer user_data)
285    {
286      struct variable *var = user_data;
287      gint active_item = gtk_combo_box_get_active(cb);
288    
289      if ( active_item < 0 ) return ;
290    
291      var->measure = active_item + 1;
292    }
293    
294    
295    
296    
297  /* Callback whenever the cell on the var sheet is entered or left.  /* Callback whenever the cell on the var sheet is entered or left.
# Line 251  var_sheet_cell_change_entry (GtkSheet * Line 312  var_sheet_cell_change_entry (GtkSheet *
312    GtkSheetCellAttr attributes;    GtkSheetCellAttr attributes;
313    gtk_sheet_get_attributes(sheet, row, column, &attributes);    gtk_sheet_get_attributes(sheet, row, column, &attributes);
314    
   
315    switch (column)    switch (column)
316      {      {
317        case COL_ALIGN:
318          {
319            static GtkListStore *list_store = 0;
320            GtkComboBoxEntry *cbe;
321            gtk_sheet_change_entry(sheet, GTK_TYPE_COMBO_BOX_ENTRY);
322            cbe =
323              GTK_COMBO_BOX_ENTRY(gtk_sheet_get_entry(sheet)->parent);
324    
325    
326            if ( ! list_store) list_store = create_label_list(alignments);
327    
328            gtk_combo_box_set_model(GTK_COMBO_BOX(cbe),
329                                    GTK_TREE_MODEL(list_store));
330    
331            gtk_combo_box_entry_set_text_column (cbe, 0);
332    
333            struct variable *var = pspp_dict_get_var(pspp_dictionary, row);      
334            
335            g_signal_connect(G_OBJECT(cbe),"changed",
336                             G_CALLBACK(change_alignment), var);
337          }
338          break;
339        case COL_MEASURE:
340          {
341            static GtkListStore *list_store = 0;
342            GtkComboBoxEntry *cbe;
343            gtk_sheet_change_entry(sheet, GTK_TYPE_COMBO_BOX_ENTRY);
344            cbe =
345              GTK_COMBO_BOX_ENTRY(gtk_sheet_get_entry(sheet)->parent);
346    
347    
348            if ( ! list_store) list_store = create_label_list(measures);
349    
350            gtk_combo_box_set_model(GTK_COMBO_BOX(cbe),
351                                    GTK_TREE_MODEL(list_store));
352    
353            gtk_combo_box_entry_set_text_column (cbe, 0);
354    
355            struct variable *var = pspp_dict_get_var(pspp_dictionary, row);      
356    
357            g_signal_connect(G_OBJECT(cbe),"changed",
358                             G_CALLBACK(change_measure), var);
359          }
360          break;
361    
362      case COL_VALUES:      case COL_VALUES:
363        {        {
364          PsppireCustomEntry *customEntry;          PsppireCustomEntry *customEntry;
# Line 267  var_sheet_cell_change_entry (GtkSheet * Line 372  var_sheet_cell_change_entry (GtkSheet *
372    
373    
374          if (!val_labs_dialog )          if (!val_labs_dialog )
           {  
375              val_labs_dialog = val_labs_dialog_create(xml);              val_labs_dialog = val_labs_dialog_create(xml);
376    
             g_signal_connect(GTK_OBJECT(val_labs_dialog->ok),  
                              "clicked",  
                              GTK_SIGNAL_FUNC(apply_val_labs), sheet);  
   
   
           }  
   
377          val_labs_dialog->target = &var->val_labs ;          val_labs_dialog->target = &var->val_labs ;
378          g_signal_connect_swapped(GTK_OBJECT(customEntry),          g_signal_connect_swapped(GTK_OBJECT(customEntry),
379                                   "clicked",                                   "clicked",
# Line 366  var_sheet_cell_change_entry (GtkSheet * Line 463  var_sheet_cell_change_entry (GtkSheet *
463            }            }
464        }        }
465        break;        break;
466    
467      default:      default:
468        gtk_sheet_change_entry(sheet, GTK_TYPE_ENTRY);        gtk_sheet_change_entry(sheet, GTK_TYPE_ENTRY);
469        break;        break;
# Line 611  populate_row_from_var(GtkSheet *sheet, c Line 709  populate_row_from_var(GtkSheet *sheet, c
709                val_labs_done(&ip);                val_labs_done(&ip);
710              }              }
711            break;            break;
712            case COL_ALIGN:
713              gtk_sheet_set_cell_text(sheet, row, c, alignments[var->alignment]);
714              break;
715            case COL_MEASURE:
716              gtk_sheet_set_cell_text(sheet, row, c, measures[var->measure-1]);
717              break;
718          }          }
         
719      }      }
   
   
720  }  }
721    
722    
# Line 625  repopulate_rows(GtkSheet *sheet, PSPP_Di Line 726  repopulate_rows(GtkSheet *sheet, PSPP_Di
726  {  {
727    gint r;    gint r;
728    
   /*  
      gtk_sheet_freeze (sheet);  
   */  
729    for ( r = from ; r <= to ; ++r )    for ( r = from ; r <= to ; ++r )
730      {      {
731        struct variable *var = pspp_dict_get_var(dict, r);              struct variable *var = pspp_dict_get_var(dict, r);      
732        populate_row_from_var(sheet, var, r);        populate_row_from_var(sheet, var, r);
733      }      }
   /*  
      gtk_sheet_thaw (sheet);  
   */  
734  }  }
735    
736    
# Line 945  psppire_var_sheet_block(GtkSheet *sheet) Line 1040  psppire_var_sheet_block(GtkSheet *sheet)
1040                                      G_CALLBACK(update_variable),                                      G_CALLBACK(update_variable),
1041                                      0);                                      0);
1042    
   
1043    g_signal_handlers_block_by_func(sheet,    g_signal_handlers_block_by_func(sheet,
1044                                      G_CALLBACK(var_sheet_cell_change_entry),                                      G_CALLBACK(var_sheet_cell_change_entry),
1045                                      0);                                      0);

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

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