From: John Darrington Date: Sun, 15 Feb 2015 16:26:00 +0000 (+0100) Subject: PsppireDialog: New property: help-page X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=531de52e961c7feaa6f5e86f1de36afa69ab1fab;p=pspp PsppireDialog: New property: help-page New property to indicate the manual page which should be opened when the Help button is clicked. --- diff --git a/Makefile.am b/Makefile.am index 3fc689fc6c..c475469d09 100644 --- a/Makefile.am +++ b/Makefile.am @@ -74,7 +74,6 @@ include $(top_srcdir)/doc/automake.mk include $(top_srcdir)/examples/automake.mk include $(top_srcdir)/src/automake.mk include $(top_srcdir)/utilities/automake.mk - include $(top_srcdir)/tests/automake.mk if WITH_GUI_TOOLS diff --git a/doc/automake.mk b/doc/automake.mk index 92bd95dca9..2c6ec860e1 100644 --- a/doc/automake.mk +++ b/doc/automake.mk @@ -57,9 +57,10 @@ $(srcdir)/doc/tut.texi: $(AM_V_GEN)echo "@set example-dir $(examplesdir)" > $@ -# The SED and AWK filters in this rule, are to work-around some nasty bugs in makeinfo version 4.13, which produces -# broken docbook xml. These workarounds are rather horrible and must be removed asap. -$(srcdir)/doc/pspp.xml: doc/pspp.texi $(doc_pspp_TEXINFOS) +# The SED and AWK filters in this rule, are to work-around some nasty bugs in +# makeinfo version 4.13, which produces broken docbook xml. These workarounds +# are rather horrible and must be removed asap. +$(srcdir)/doc/pspp.xml: doc/pspp.texi $(doc_pspp_TEXINFOS) doc/help-pages-list @$(MKDIR_P) doc $(AM_V_GEN)$(MAKEINFO) $(AM_MAKEINFOFLAGS) --docbook -I $(top_srcdir) \ $(top_srcdir)/doc/pspp.texi -o - \ @@ -80,11 +81,15 @@ $(srcdir)/doc/pspp.xml: doc/pspp.texi $(doc_pspp_TEXINFOS) | $(AWK) '/.*.*<\/para>/{x=sub("",""); print; s=1;next}/<\/table>/{print; if (s==1) print ""; s=0; next}1' \ > $@,tmp $(AM_V_at)$(XMLLINT) --output /dev/null $@,tmp + cat doc/help-pages-list | while read node ; do \ + $(AM_V_at)$(XMLLINT) --xpath "$$node" $@,tmp > /dev/null; \ + if test $$? -ne 0 ; then echo "$$node does not appear in $@" ; exit 1; fi ; \ + done mv $@,tmp $@ docbookdir = $(docdir) dist_docbook_DATA = doc/pspp.xml - + CLEANFILES += pspp-dev.dvi $(docbook_DATA) diff --git a/src/ui/gui/aggregate.ui b/src/ui/gui/aggregate.ui index a430056555..7c4905da0e 100644 --- a/src/ui/gui/aggregate.ui +++ b/src/ui/gui/aggregate.ui @@ -7,6 +7,7 @@ Aggregate Data True Vertical + AGGREGATE True diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk index 7f4d474f6b..65f45f8f98 100644 --- a/src/ui/gui/automake.mk +++ b/src/ui/gui/automake.mk @@ -47,6 +47,13 @@ UI_FILES = \ src/ui/gui/var-sheet.ui \ src/ui/gui/var-type-dialog.ui + +doc/help-pages-list: $(UI_FILES) + cat $^ | grep '"help-page"' | \ + sed -e 's% *\([^<]*\)%//*[@id='"'"'\1'"'"']%' \ + -e 's%#%'"'"']/*[@id='"'"'%g' > $@ + + EXTRA_DIST += \ src/ui/gui/artwork/actions/.empty \ src/ui/gui/artwork/apps/scalable/.empty \ @@ -57,7 +64,7 @@ EXTRA_DIST += \ if HAVE_GUI bin_PROGRAMS += src/ui/gui/psppire -noinst_PROGRAMS += src/ui/gui/spreadsheet-test +noinst_PROGRAMS += src/ui/gui/spreadsheet-test src_ui_gui_psppire_CFLAGS = $(GTK_CFLAGS) $(GTKSOURCEVIEW_CFLAGS) -Wall -DGDK_MULTIHEAD_SAFE=1 src_ui_gui_spreadsheet_test_CFLAGS = $(GTK_CFLAGS) -Wall -DGDK_MULTIHEAD_SAFE=1 @@ -96,7 +103,6 @@ src_ui_gui_spreadsheet_test_LDADD = \ src_ui_gui_spreadsheet_test_SOURCES = src/ui/gui/spreadsheet-test.c src/ui/gui/psppire-spreadsheet-model.c - src_ui_gui_psppiredir = $(pkgdatadir) diff --git a/src/ui/gui/autorecode.ui b/src/ui/gui/autorecode.ui index 9b4a2e8eab..c8d8de4d3b 100644 --- a/src/ui/gui/autorecode.ui +++ b/src/ui/gui/autorecode.ui @@ -6,6 +6,7 @@ Automatic Recode True + AUTORECODE True diff --git a/src/ui/gui/binomial.ui b/src/ui/gui/binomial.ui index 7040e18eb4..66e9822551 100644 --- a/src/ui/gui/binomial.ui +++ b/src/ui/gui/binomial.ui @@ -12,6 +12,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Binomial Test True + NPAR-TESTS#BINOMIAL True diff --git a/src/ui/gui/chi-square.ui b/src/ui/gui/chi-square.ui index 8544485b8a..da230eaab6 100644 --- a/src/ui/gui/chi-square.ui +++ b/src/ui/gui/chi-square.ui @@ -12,6 +12,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Chi-Square Test True + NPAR-TESTS#CHISQUARE True diff --git a/src/ui/gui/compute.ui b/src/ui/gui/compute.ui index fe9b10b203..4cabaed536 100644 --- a/src/ui/gui/compute.ui +++ b/src/ui/gui/compute.ui @@ -7,6 +7,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Compute Variable True + COMPUTE True diff --git a/src/ui/gui/correlation.ui b/src/ui/gui/correlation.ui index d9fcdca3d8..f4b3bc18f5 100644 --- a/src/ui/gui/correlation.ui +++ b/src/ui/gui/correlation.ui @@ -6,6 +6,7 @@ Bivariate Correlations True + CORRELATIONS True diff --git a/src/ui/gui/count.ui b/src/ui/gui/count.ui index 13ab1313bb..aaf2cb457f 100644 --- a/src/ui/gui/count.ui +++ b/src/ui/gui/count.ui @@ -6,6 +6,7 @@ Count Occurrences of Values within Cases True + COUNT True diff --git a/src/ui/gui/crosstabs.ui b/src/ui/gui/crosstabs.ui index ac864041db..37d6560f04 100644 --- a/src/ui/gui/crosstabs.ui +++ b/src/ui/gui/crosstabs.ui @@ -6,6 +6,7 @@ Crosstabs True + CROSSTABS True diff --git a/src/ui/gui/descriptives.ui b/src/ui/gui/descriptives.ui index a573cc1be3..0be07385b8 100644 --- a/src/ui/gui/descriptives.ui +++ b/src/ui/gui/descriptives.ui @@ -7,6 +7,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Descriptives True + DESCRIPTIVES True diff --git a/src/ui/gui/examine.ui b/src/ui/gui/examine.ui index f22b1047d9..200884ead4 100644 --- a/src/ui/gui/examine.ui +++ b/src/ui/gui/examine.ui @@ -7,6 +7,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Explore True + EXAMINE True diff --git a/src/ui/gui/factor.ui b/src/ui/gui/factor.ui index 9705f89151..62b41e2308 100644 --- a/src/ui/gui/factor.ui +++ b/src/ui/gui/factor.ui @@ -29,6 +29,7 @@ Factor Analysis True Tabular + FACTOR True diff --git a/src/ui/gui/frequencies.ui b/src/ui/gui/frequencies.ui index a65e45f0b9..177fd01c16 100644 --- a/src/ui/gui/frequencies.ui +++ b/src/ui/gui/frequencies.ui @@ -8,6 +8,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Frequencies True + FREQUENCIES True diff --git a/src/ui/gui/help-menu.h b/src/ui/gui/help-menu.h index 4d5e2303e6..730c3be481 100644 --- a/src/ui/gui/help-menu.h +++ b/src/ui/gui/help-menu.h @@ -25,4 +25,17 @@ void merge_help_menu (GtkUIManager *uim); void online_help (const char *page); +enum index + { + hi_DESCRIPTIVES, + hi_EXAMINE, + hi_FREQUENCIES, + hi_LOGISTIC_REGRESSION, + n_hi + }; + +void set_help_page (GtkWidget *w, enum index idx); + + + #endif diff --git a/src/ui/gui/k-means.ui b/src/ui/gui/k-means.ui index be659dd5c5..7ca549b9ae 100644 --- a/src/ui/gui/k-means.ui +++ b/src/ui/gui/k-means.ui @@ -7,6 +7,7 @@ K-Means Cluster Analysis True Vertical + QUICK-CLUSTER True diff --git a/src/ui/gui/logistic.ui b/src/ui/gui/logistic.ui index 9b8e73c3be..1c38cc3f42 100644 --- a/src/ui/gui/logistic.ui +++ b/src/ui/gui/logistic.ui @@ -6,6 +6,7 @@ Logistic Regression True + LOGISTIC-REGRESSION True diff --git a/src/ui/gui/means.ui b/src/ui/gui/means.ui index a650a6bba9..5c98f6c234 100644 --- a/src/ui/gui/means.ui +++ b/src/ui/gui/means.ui @@ -7,6 +7,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Means True + MEANS True diff --git a/src/ui/gui/oneway.ui b/src/ui/gui/oneway.ui index aebedb4216..ec50f2451e 100644 --- a/src/ui/gui/oneway.ui +++ b/src/ui/gui/oneway.ui @@ -7,6 +7,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK One-Way ANOVA True + ONEWAY True diff --git a/src/ui/gui/psppire-dialog.c b/src/ui/gui/psppire-dialog.c index d89b3b4ec2..7369cbbf60 100644 --- a/src/ui/gui/psppire-dialog.c +++ b/src/ui/gui/psppire-dialog.c @@ -39,9 +39,29 @@ enum {DIALOG_REFRESH, static guint signals [n_SIGNALS]; +static GObjectClass *parent_class = NULL; + static void psppire_dialog_buildable_init (GtkBuildableIface *iface); +static void +psppire_dialog_finalize (GObject *object) +{ + PsppireDialog *dialog = PSPPIRE_DIALOG (object); + + g_free (dialog->help_page); + + if (G_OBJECT_CLASS (parent_class)->finalize) + G_OBJECT_CLASS (parent_class)->finalize (object); +} + +static void +psppire_dialog_base_init (PsppireDialogClass *class) +{ + GObjectClass *object_class = G_OBJECT_CLASS (class); + + object_class->finalize = psppire_dialog_finalize; +} GType psppire_dialog_get_type (void) @@ -53,7 +73,7 @@ psppire_dialog_get_type (void) static const GTypeInfo dialog_info = { sizeof (PsppireDialogClass), - NULL, /* base_init */ + psppire_dialog_base_init, NULL, /* base_finalize */ (GClassInitFunc) psppire_dialog_class_init, NULL, /* class_finalize */ @@ -83,15 +103,13 @@ psppire_dialog_get_type (void) -static GObjectClass *parent_class = NULL; - - /* Properties */ enum { PROP_0, PROP_ORIENTATION, - PROP_SLIDING + PROP_SLIDING, + PROP_HELP_PAGE, }; @@ -118,6 +136,9 @@ psppire_dialog_get_property (GObject *object, case PROP_SLIDING: g_value_set_boolean (value, dialog->slidable); break; + case PROP_HELP_PAGE: + g_value_set_string (value, dialog->help_page); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -178,6 +199,9 @@ psppire_dialog_set_property (GObject *object, case PROP_ORIENTATION: dialog->orientation = g_value_get_enum (value); break; + case PROP_HELP_PAGE: + dialog->help_page = g_value_dup_string (value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -195,6 +219,14 @@ psppire_dialog_class_init (PsppireDialogClass *class) GObjectClass *object_class = (GObjectClass *) class; GParamSpec *sliding_spec ; + GParamSpec *help_page_spec ; + + help_page_spec = + g_param_spec_string ("help-page", + "Help Page", + "The section of the manual to load when the Help button is clicked", + NULL, + G_PARAM_READWRITE); orientation_spec = g_param_spec_enum ("orientation", @@ -223,6 +255,11 @@ psppire_dialog_class_init (PsppireDialogClass *class) PROP_SLIDING, sliding_spec); + g_object_class_install_property (object_class, + PROP_HELP_PAGE, + help_page_spec); + + signals [DIALOG_REFRESH] = g_signal_new ("refresh", G_TYPE_FROM_CLASS (class), @@ -309,6 +346,7 @@ psppire_dialog_init (PsppireDialog *dialog) dialog->contents_are_acceptable = NULL; dialog->acceptable_data = NULL; dialog->slidable = FALSE; + dialog->help_page = NULL; g_value_init (&value, orientation_spec->value_type); g_param_value_set_default (orientation_spec, &value); @@ -516,12 +554,13 @@ psppire_dialog_reload (PsppireDialog *dialog) void psppire_dialog_help (PsppireDialog *dialog) { - char *name = NULL; - g_object_get (dialog, "name", &name, NULL); + const char *page = NULL; + + g_object_get (dialog, "help-page", &page, NULL); - online_help (name); + online_help (page); - g_signal_emit (dialog, signals [DIALOG_HELP], 0, name); + g_signal_emit (dialog, signals [DIALOG_HELP], 0, page); } diff --git a/src/ui/gui/psppire-dialog.h b/src/ui/gui/psppire-dialog.h index af56aac1e8..527e8b0d05 100644 --- a/src/ui/gui/psppire-dialog.h +++ b/src/ui/gui/psppire-dialog.h @@ -67,6 +67,9 @@ struct _PsppireDialog gpointer acceptable_data; gboolean slidable; PsppireOrientation orientation; + + gchar *help_page; + }; struct _PsppireDialogClass diff --git a/src/ui/gui/psppire.ui b/src/ui/gui/psppire.ui index f07fe76540..5419c3a0b6 100644 --- a/src/ui/gui/psppire.ui +++ b/src/ui/gui/psppire.ui @@ -6,6 +6,7 @@ Weight Cases True + WEIGHT True @@ -194,6 +195,7 @@ Transpose True + FLIP True @@ -382,6 +384,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Data File Comments True + DOCUMENT Vertical diff --git a/src/ui/gui/rank.ui b/src/ui/gui/rank.ui index 4716ac7c23..2b84d7a8c2 100644 --- a/src/ui/gui/rank.ui +++ b/src/ui/gui/rank.ui @@ -7,6 +7,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Rank Cases True + RANK True diff --git a/src/ui/gui/regression.ui b/src/ui/gui/regression.ui index d7a0675f4d..415fea257a 100644 --- a/src/ui/gui/regression.ui +++ b/src/ui/gui/regression.ui @@ -6,6 +6,7 @@ Regression True + REGRESSION True diff --git a/src/ui/gui/reliability.ui b/src/ui/gui/reliability.ui index 9593b80c9c..79e467fb74 100644 --- a/src/ui/gui/reliability.ui +++ b/src/ui/gui/reliability.ui @@ -25,6 +25,7 @@ Reliability Analysis True + RELIABILITY True diff --git a/src/ui/gui/roc.ui b/src/ui/gui/roc.ui index 1b7052a4fa..44b23c55b1 100644 --- a/src/ui/gui/roc.ui +++ b/src/ui/gui/roc.ui @@ -6,6 +6,7 @@ ROC Curve True + ROC True diff --git a/src/ui/gui/runs.ui b/src/ui/gui/runs.ui index 96c894a7c9..720492b6fd 100644 --- a/src/ui/gui/runs.ui +++ b/src/ui/gui/runs.ui @@ -7,6 +7,7 @@ Runs Test True Vertical + NPAR-TESTS#RUNS True diff --git a/src/ui/gui/select-cases.ui b/src/ui/gui/select-cases.ui index 9ee9001ef2..597b9fdf01 100644 --- a/src/ui/gui/select-cases.ui +++ b/src/ui/gui/select-cases.ui @@ -8,6 +8,7 @@ Select Cases True Vertical + SELECT-IF True diff --git a/src/ui/gui/sort.ui b/src/ui/gui/sort.ui index b061ed5ce8..16da2313c5 100644 --- a/src/ui/gui/sort.ui +++ b/src/ui/gui/sort.ui @@ -7,6 +7,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Sort Cases True + SORT-CASES True diff --git a/src/ui/gui/split-file.ui b/src/ui/gui/split-file.ui index 85aad4d76e..902b01b6a0 100644 --- a/src/ui/gui/split-file.ui +++ b/src/ui/gui/split-file.ui @@ -7,6 +7,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK Split File True + SPLIT-FILE True