Merge remote-tracking branch 'origin/master' into sheet
authorJohn Darrington <john@darrington.wattle.id.au>
Sun, 10 Jul 2016 05:47:34 +0000 (07:47 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Sun, 10 Jul 2016 05:47:34 +0000 (07:47 +0200)
1  2 
src/ui/gui/automake.mk
src/ui/gui/widgets.c

diff --combined src/ui/gui/automake.mk
index 2d6862857ccd43be94a619d997a779c284f7d28d,0f0ea346627dfeb7a89925d0d5bbe3894d3d986b..1155cf70db779a1b41dd91f9f030b1e9bdc3bd91
@@@ -69,7 -69,6 +69,7 @@@ EXTRA_DIST += 
        src/ui/gui/marshaller-list \
        src/ui/gui/pspplogo.svg
  
 +src_ui_gui_psppire_CPPFLAGS=
  
  if HAVE_GUI
  bin_PROGRAMS += src/ui/gui/psppire 
@@@ -242,6 -241,10 +242,10 @@@ src_ui_gui_psppire_SOURCES = 
        src/ui/gui/psppire-dialog-action-rank.h \
        src/ui/gui/psppire-dialog-action-recode.c \
        src/ui/gui/psppire-dialog-action-recode.h \
+       src/ui/gui/psppire-dialog-action-recode-same.c \
+       src/ui/gui/psppire-dialog-action-recode-same.h \
+       src/ui/gui/psppire-dialog-action-recode-different.c \
+       src/ui/gui/psppire-dialog-action-recode-different.h \
        src/ui/gui/psppire-dialog-action-regression.c \
        src/ui/gui/psppire-dialog-action-regression.h \
        src/ui/gui/psppire-dialog-action-reliability.c \
        src/ui/gui/psppire-value-entry.h \
        src/ui/gui/psppire-var-ptr.c \
        src/ui/gui/psppire-var-ptr.h \
 -      src/ui/gui/psppire-var-sheet.c \
        src/ui/gui/psppire-var-sheet.h \
 +      src/ui/gui/psppire-var-sheet-header.h \
 +      src/ui/gui/psppire-var-sheet-header.c \
        src/ui/gui/psppire-vbuttonbox.h \
        src/ui/gui/psppire-window.c \
        src/ui/gui/psppire-window.h \
@@@ -385,7 -387,6 +389,7 @@@ dist_appdata_DATA = src/ui/gui/pspp.app
  BUILT_SOURCES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h
  CLEANFILES += src/ui/gui/psppire-marshal.c src/ui/gui/psppire-marshal.h \
        $(nodist_src_ui_gui_psppire_DATA)
 +include $(top_srcdir)/src/ui/gui/efficient-sheet.mk
  endif HAVE_GUI
  
  #ensure the installcheck passes even if there is no X server available
@@@ -393,7 -394,7 +397,7 @@@ installcheck-local
        DISPLAY=/invalid/port $(MAKE) $(AM_MAKEFLAGS) installcheck-binPROGRAMS
  
  # <gtk/gtk.h> wrapper
 -src_ui_gui_psppire_CPPFLAGS = $(AM_CPPFLAGS) -Isrc/ui/gui/include
 +src_ui_gui_psppire_CPPFLAGS += $(AM_CPPFLAGS) -Isrc/ui/gui/include
  BUILT_SOURCES += src/ui/gui/include/gtk/gtk.h
  src/ui/gui/include/gtk/gtk.h: src/ui/gui/include/gtk/gtk.in.h
        @$(MKDIR_P) src/ui/gui/include/gtk
diff --combined src/ui/gui/widgets.c
index 042b8fcee76ddaafa2e409d27dbd042709a4f3ac,b9a7a1ec3edf2da7741aaa292f9182e684d40c95..3f138291ec0dc43d06f318aa6c40d97840bdab99
@@@ -4,7 -4,6 +4,7 @@@
  
  #include "widgets.h"
  
 +#include "gettext.h"
  
  #include "psppire-dialog.h"
  #include "psppire-selector.h"
@@@ -43,7 -42,8 +43,8 @@@
  #include "psppire-dialog-action-oneway.h"
  #include "psppire-means-layer.h"
  #include "psppire-dialog-action-rank.h"
- #include "psppire-dialog-action-recode.h"
+ #include "psppire-dialog-action-recode-same.h"
+ #include "psppire-dialog-action-recode-different.h"
  #include "psppire-dialog-action-regression.h"
  #include "psppire-dialog-action-reliability.h"
  #include "psppire-dialog-action-roc.h"
@@@ -92,7 -92,8 +93,8 @@@ static const get_type_func dialog_actio
    psppire_dialog_action_indep_samps_get_type,
    psppire_dialog_action_var_info_get_type,
    psppire_dialog_action_rank_get_type,
-   psppire_dialog_action_recode_get_type,
+   psppire_dialog_action_recode_same_get_type,
+   psppire_dialog_action_recode_different_get_type,
    psppire_dialog_action_reliability_get_type,
    psppire_dialog_action_regression_get_type,
    psppire_dialog_action_roc_get_type,
@@@ -120,62 -121,6 +122,62 @@@ preregister_actions (void
  }
  
  
 +static void
 +tx_string_to_double (const GValue *src, GValue *dest)
 +{
 +  const gchar *str = g_value_get_string (src);
 +  gdouble dble = g_strtod (str, NULL);
 +  g_value_set_double (dest, dble);
 +}
 +
 +
 +static void
 +tx_string_to_int (const GValue *src, GValue *dest)
 +{
 +  const gchar *str = g_value_get_string (src);
 +  gint x = atoi (str);
 +  g_value_set_int (dest, x);
 +}
 +
 +static void
 +enum_to_string (const GValue *src, GValue *dest)
 +{
 +  gint n = g_value_get_enum (src);
 +  GType t = G_VALUE_TYPE (src);
 +  GEnumClass *ec = g_type_class_ref (t);
 +  GEnumValue *ev = g_enum_get_value (ec, n);
 +
 +  g_value_set_string (dest, gettext (ev->value_nick));
 +}
 +
 +
 +
 +GType align_enum_type;
 +GType measure_enum_type;
 +GType role_enum_type;
 +
 +
 +extern const GEnumValue align[];
 +extern const GEnumValue measure[];
 +extern const GEnumValue role[];
 +
 +
 +
 +static void
 +preregister_misc (void)
 +{
 +  align_enum_type = g_enum_register_static ("PsppAlignment", align);
 +  measure_enum_type = g_enum_register_static ("PsppMeasure", measure);
 +  role_enum_type = g_enum_register_static ("PsppRole", role);
 +
 +  g_value_register_transform_func (G_TYPE_STRING, G_TYPE_DOUBLE, tx_string_to_double);
 +  g_value_register_transform_func (G_TYPE_STRING, G_TYPE_INT, tx_string_to_int);
 +  
 +  g_value_register_transform_func (measure_enum_type, G_TYPE_STRING, enum_to_string);
 +  g_value_register_transform_func (align_enum_type, G_TYPE_STRING, enum_to_string);
 +  g_value_register_transform_func (role_enum_type, G_TYPE_STRING, enum_to_string);
 +}
 +
  
  /* Any custom widgets which are to be used in GtkBuilder ui files
     need to be preregistered, otherwise GtkBuilder refuses to 
@@@ -197,7 -142,6 +199,7 @@@ preregister_widgets (void
    psppire_means_layer_get_type ();
  
    preregister_actions ();
 +  preregister_misc ();
  
    /* This seems to be necessary on Cygwin.
       It ought not to be necessary.  Having it here can't do any harm. */