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 |
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 |
|
|
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), |
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: |
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, |
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")); |