[education/rkward] /: Mass-add preview functionality to plugins

Thomas Friedrichsmeier null at kde.org
Wed May 4 17:20:22 BST 2022


Git commit 018a02aa96f1c5281d9dbd8e5885bca8fb0f99bd by Thomas Friedrichsmeier.
Committed on 04/05/2022 at 16:19.
Pushed by tfry into branch 'master'.

Mass-add preview functionality to plugins

M  +3    -1    ChangeLog
M  +5    -3    rkward/plugins/analysis/TESTS/PP_test.js
M  +1    -0    rkward/plugins/analysis/TESTS/PP_test.xml
M  +1    -0    rkward/plugins/analysis/TESTS/mood_test.xml
M  +12   -10   rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.js
M  +1    -0    rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.xml
M  +12   -10   rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.js
M  +1    -0    rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.xml
M  +5    -3    rkward/plugins/analysis/corr_matrix.js
M  +1    -0    rkward/plugins/analysis/corr_matrix.xml
M  +31   -48   rkward/plugins/analysis/crosstab.js
M  +1    -1    rkward/plugins/analysis/crosstab.rkh
M  +1    -2    rkward/plugins/analysis/crosstab.xml
M  +0    -6    rkward/plugins/analysis/crosstab_multi.js
M  +4    -2    rkward/plugins/analysis/irt/dichotomous/par_est_2pl.js
M  +1    -0    rkward/plugins/analysis/irt/dichotomous/par_est_2pl.xml
M  +4    -2    rkward/plugins/analysis/irt/dichotomous/par_est_3pl.js
M  +1    -0    rkward/plugins/analysis/irt/dichotomous/par_est_3pl.xml
M  +4    -2    rkward/plugins/analysis/irt/dichotomous/par_est_lltm.js
M  +1    -0    rkward/plugins/analysis/irt/dichotomous/par_est_lltm.xml
M  +4    -2    rkward/plugins/analysis/irt/dichotomous/par_est_rasch.js
M  +1    -0    rkward/plugins/analysis/irt/dichotomous/par_est_rasch.xml
M  +4    -2    rkward/plugins/analysis/irt/polytomous/par_est_gpcm.js
M  +1    -0    rkward/plugins/analysis/irt/polytomous/par_est_gpcm.xml
M  +4    -2    rkward/plugins/analysis/irt/polytomous/par_est_grm.js
M  +1    -0    rkward/plugins/analysis/irt/polytomous/par_est_grm.xml
M  +4    -2    rkward/plugins/analysis/irt/polytomous/par_est_lpcm.js
M  +1    -0    rkward/plugins/analysis/irt/polytomous/par_est_lpcm.xml
M  +4    -2    rkward/plugins/analysis/irt/polytomous/par_est_lrsm.js
M  +1    -0    rkward/plugins/analysis/irt/polytomous/par_est_lrsm.xml
M  +4    -2    rkward/plugins/analysis/irt/polytomous/par_est_pcm.js
M  +1    -0    rkward/plugins/analysis/irt/polytomous/par_est_pcm.xml
M  +4    -2    rkward/plugins/analysis/irt/polytomous/par_est_rsm.js
M  +1    -0    rkward/plugins/analysis/irt/polytomous/par_est_rsm.xml
M  +4    -2    rkward/plugins/analysis/irt/tests/eRm_waldtest.js
M  +1    -0    rkward/plugins/analysis/irt/tests/eRm_waldtest.xml
M  +7    -5    rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.js
M  +1    -0    rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.xml
M  +4    -2    rkward/plugins/analysis/irt/tests/ltm_gof_rasch.js
M  +1    -0    rkward/plugins/analysis/irt/tests/ltm_gof_rasch.xml
M  +4    -2    rkward/plugins/analysis/irt/tests/ltm_item_fit.js
M  +1    -0    rkward/plugins/analysis/irt/tests/ltm_item_fit.xml
M  +4    -2    rkward/plugins/analysis/irt/tests/ltm_person_fit.js
M  +1    -0    rkward/plugins/analysis/irt/tests/ltm_person_fit.xml
M  +4    -2    rkward/plugins/analysis/irt/tests/ltm_unidimensional.js
M  +1    -0    rkward/plugins/analysis/irt/tests/ltm_unidimensional.xml
M  +4    -2    rkward/plugins/analysis/moments/agostino_test.js
M  +1    -0    rkward/plugins/analysis/moments/agostino_test.xml
M  +4    -2    rkward/plugins/analysis/moments/anscombe_test.js
M  +1    -0    rkward/plugins/analysis/moments/anscombe_test.xml
M  +4    -2    rkward/plugins/analysis/moments/bonett_test.js
M  +1    -0    rkward/plugins/analysis/moments/bonett_test.xml
M  +4    -2    rkward/plugins/analysis/moments/moment.js
M  +1    -0    rkward/plugins/analysis/moments/moment.xml
M  +4    -2    rkward/plugins/analysis/moments/skewness_kurtosis_test.js
M  +1    -0    rkward/plugins/analysis/moments/skewness_kurtosis_test.xml
M  +4    -2    rkward/plugins/analysis/outliers/chisq_out_test.js
M  +1    -0    rkward/plugins/analysis/outliers/chisq_out_test.xml
M  +4    -2    rkward/plugins/analysis/outliers/dixon_test.js
M  +1    -0    rkward/plugins/analysis/outliers/dixon_test.xml
M  +5    -3    rkward/plugins/analysis/outliers/grubbs_test.js
M  +1    -0    rkward/plugins/analysis/outliers/grubbs_test.xml
M  +4    -2    rkward/plugins/analysis/outliers/outlier.js
M  +1    -0    rkward/plugins/analysis/outliers/outlier.xml
M  +4    -2    rkward/plugins/analysis/regression/linear_regression.js
M  +1    -0    rkward/plugins/analysis/regression/linear_regression.xml
M  +5    -3    rkward/plugins/analysis/time_series/Box_test.js
M  +1    -0    rkward/plugins/analysis/time_series/Box_test.xml
M  +4    -2    rkward/plugins/analysis/time_series/hp_filter.js
M  +1    -0    rkward/plugins/analysis/time_series/hp_filter.xml
M  +4    -2    rkward/plugins/analysis/time_series/kpss_test.js
M  +1    -0    rkward/plugins/analysis/time_series/kpss_test.xml
M  +7    -5    rkward/plugins/analysis/variances/F_test.js
M  +1    -0    rkward/plugins/analysis/variances/F_test.xml
M  +5    -3    rkward/plugins/analysis/variances/bartlett_test.js
M  +1    -0    rkward/plugins/analysis/variances/bartlett_test.xml
M  +5    -3    rkward/plugins/analysis/variances/fligner_test.js
M  +1    -0    rkward/plugins/analysis/variances/fligner_test.xml
M  +5    -3    rkward/plugins/analysis/variances/levene_test.js
M  +1    -0    rkward/plugins/analysis/variances/levene_test.xml
M  +12   -10   rkward/plugins/analysis/wilcoxon/wilcoxon_tests.js
M  +1    -0    rkward/plugins/analysis/wilcoxon/wilcoxon_tests.xml
M  +0    -1    rkward/plugins/data/limit_vector_length.js
M  +12   -11   rkward/plugins/distributions/dist_common.js
M  +5    -2    rkward/plugins/distributions/dist_help_snippets.xml
M  +6    -0    rkward/plugins/distributions/dist_snippets.xml
M  +5    -3    rkward/plugins/distributions/tests/ad_test.js
M  +1    -0    rkward/plugins/distributions/tests/ad_test.xml
M  +4    -2    rkward/plugins/distributions/tests/cvm_test.js
M  +1    -0    rkward/plugins/distributions/tests/cvm_test.xml
M  +4    -2    rkward/plugins/distributions/tests/jb_test.js
M  +1    -0    rkward/plugins/distributions/tests/jb_test.xml
M  +4    -2    rkward/plugins/distributions/tests/lillie_test.js
M  +1    -0    rkward/plugins/distributions/tests/lillie_test.xml
M  +4    -2    rkward/plugins/distributions/tests/pearson_test.js
M  +1    -0    rkward/plugins/distributions/tests/pearson_test.xml
M  +4    -2    rkward/plugins/distributions/tests/sf_test.js
M  +2    -1    rkward/plugins/distributions/tests/sf_test.xml
M  +4    -2    rkward/plugins/distributions/tests/shapiro_test.js
M  +1    -0    rkward/plugins/distributions/tests/shapiro_test.xml
M  +1    -0    rkward/plugins/x11device/grid.xml
M  +2    -2    tests/distributions/beta_probabilities.rkcommands.R
M  +20   -22   tests/distributions/beta_probabilities.rkout

https://invent.kde.org/education/rkward/commit/018a02aa96f1c5281d9dbd8e5885bca8fb0f99bd

diff --git a/ChangeLog b/ChangeLog
index 27c7f72b..f2082c1f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,9 @@
 TODOs:
 	- More tolerant handshake on Windows? Simply a matter of allowing more time?
+	- Allow vector of names in require()
 
-- A default preview() function is available to plugins, reducing the code needed to add preview functionaality
+- Add default preview() function is available to plugins, reducing the code needed to add preview functionality
+- Add preview functionality to most existing plugins that did not have it, yet
 - Better placement of messages in non-plot preview windows
 - Fixed some problems with cancelling running commands
 - Package installation uses inline widget to provide progress feedback, instead of separate dialogs
diff --git a/rkward/plugins/analysis/TESTS/PP_test.js b/rkward/plugins/analysis/TESTS/PP_test.js
index a706cfb7..5e2d1108 100755
--- a/rkward/plugins/analysis/TESTS/PP_test.js
+++ b/rkward/plugins/analysis/TESTS/PP_test.js
@@ -22,9 +22,11 @@ function calculate () {
 	echo ('}\n');
 }
 
-function printout () {
-	new Header ("Phillips-Perron Test for Unit Roots").addFromUI ("lshort").print ();
-	echo ('\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header ("Phillips-Perron Test for Unit Roots").addFromUI ("lshort").print ();
+		echo ('\n');
+	}
 	echo ('rk.results (results)\n');
 }
 
diff --git a/rkward/plugins/analysis/TESTS/PP_test.xml b/rkward/plugins/analysis/TESTS/PP_test.xml
index 631aa22e..9b7127f0 100755
--- a/rkward/plugins/analysis/TESTS/PP_test.xml
+++ b/rkward/plugins/analysis/TESTS/PP_test.xml
@@ -14,6 +14,7 @@
 							<option label="short" value="TRUE"/>
 							<option label="long" value="FALSE"/>
 						</radio>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/TESTS/mood_test.xml b/rkward/plugins/analysis/TESTS/mood_test.xml
index d635030a..5abe1509 100644
--- a/rkward/plugins/analysis/TESTS/mood_test.xml
+++ b/rkward/plugins/analysis/TESTS/mood_test.xml
@@ -14,6 +14,7 @@
 					<option value="greater" label="greater"/>
 					<option value="less" label="less"/>
 				</radio>
+				<preview id="preview" mode="output"/>
 			</column>
 		</row>
 	</dialog>
diff --git a/rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.js b/rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.js
index e0fe8b59..70754fa3 100644
--- a/rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.js
+++ b/rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.js
@@ -23,17 +23,19 @@ function calculate () {
 	echo ('\n');
 }
 
-function printout () {
-	var header = new Header (noquote ('result$method'));
-	header.addFromUI ("x", noquote ('names[1]'));
-	header.addFromUI ("y", noquote ('names[2]'));
-	header.add (i18n ("H1"), noquote ('rk.describe.alternative(result)'));
-	header.addFromUI ("exact");
-	if (getBoolean ("confint.state")) {
-		header.addFromUI ("conflevel");
+function printout (is_preview) {
+	if (!is_preview) {
+		var header = new Header (noquote ('result$method'));
+		header.addFromUI ("x", noquote ('names[1]'));
+		header.addFromUI ("y", noquote ('names[2]'));
+		header.add (i18n ("H1"), noquote ('rk.describe.alternative(result)'));
+		header.addFromUI ("exact");
+		if (getBoolean ("confint.state")) {
+			header.addFromUI ("conflevel");
+		}
+		header.print ();
+		echo ('\n');
 	}
-	header.print ();
-	echo ('\n');
 	echo ('rk.results (list (\n');
 	echo ('	' + i18n ("Variable Names") + '=names,\n');
 	echo ('	' + i18n ("statistic") + '=result$statistic,\n');
diff --git a/rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.xml b/rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.xml
index 3bf77776..48aa774f 100644
--- a/rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.xml
+++ b/rkward/plugins/analysis/ansari_bradley/ansari_bradley_exact_test.xml
@@ -21,6 +21,7 @@
 							<option value="less" label="less"/>
 						</radio>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.js b/rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.js
index 95ff2e14..540b6077 100644
--- a/rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.js
+++ b/rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.js
@@ -21,17 +21,19 @@ function calculate () {
 	echo ('\n');
 }
 
-function printout () {
-	var header = new Header (noquote ('result$method'));
-	header.addFromUI ("x", noquote ('names[1]'));
-	header.addFromUI ("y", noquote ('names[2]'));
-	header.add (i18n ("Alternative Hypothesis"), noquote ('rk.describe.alternative(result)'));
-	header.addFromUI ("exact");
-	if (getBoolean ("confint.state")) {
-		header.addFromUI ("conflevel");
+function printout (is_preview) {
+	if (!is_preview) {
+		var header = new Header (noquote ('result$method'));
+		header.addFromUI ("x", noquote ('names[1]'));
+		header.addFromUI ("y", noquote ('names[2]'));
+		header.add (i18n ("Alternative Hypothesis"), noquote ('rk.describe.alternative(result)'));
+		header.addFromUI ("exact");
+		if (getBoolean ("confint.state")) {
+			header.addFromUI ("conflevel");
+		}
+		header.print ();
+		echo ('\n');
 	}
-	header.print ();
-	echo ('\n');
 	echo ('rk.results (list (\n');
 	echo ('	' + i18n ("Variable Names") + '=names,\n');
 	echo ('	' + i18n ("statistic") + '=result$statistic,\n');
diff --git a/rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.xml b/rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.xml
index e0d88e22..672e2d25 100644
--- a/rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.xml
+++ b/rkward/plugins/analysis/ansari_bradley/ansari_bradley_test.xml
@@ -21,6 +21,7 @@
 							<option value="less" label="less"/>
 						</radio>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/corr_matrix.js b/rkward/plugins/analysis/corr_matrix.js
index bdc8ada0..2b4afa29 100644
--- a/rkward/plugins/analysis/corr_matrix.js
+++ b/rkward/plugins/analysis/corr_matrix.js
@@ -118,9 +118,11 @@ function calculate () {
 	}
 }
 
-function printout () {
-	// TODO: Printing of method and use is a poor solution, esp. when translated. We should support getting the <radio>'s option labels, and print those, instead.
-	new Header (i18n ("Correlation Matrix")).addFromUI ("method").addFromUI ("use").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		// TODO: Printing of method and use is a poor solution, esp. when translated. We should support getting the <radio>'s option labels, and print those, instead.
+		new Header (i18n ("Correlation Matrix")).addFromUI ("method").addFromUI ("use").print ();
+	}
 	echo ('rk.results (data.frame (result, check.names=FALSE), titles=c (' + i18n ("Coefficient") + ', names (data)))\n');
 	if (do_p) {
 		if (polyCorr) {
diff --git a/rkward/plugins/analysis/corr_matrix.xml b/rkward/plugins/analysis/corr_matrix.xml
index f1277976..91fb8f26 100644
--- a/rkward/plugins/analysis/corr_matrix.xml
+++ b/rkward/plugins/analysis/corr_matrix.xml
@@ -18,6 +18,7 @@
 					<varselector id="vars"/>
 					<varslot types="numeric" min_vars="2" multi="true" id="x" source="vars" required="true" label="variable(s):" num_dimensions="1"/>
 				</row>
+				<preview id="preview" mode="output"/>
 			</tab>
 			<tab label="Options" id="tab_Options">
 				<checkbox id="do_p" label="Calculate p values" value="1" checked="true" />
diff --git a/rkward/plugins/analysis/crosstab.js b/rkward/plugins/analysis/crosstab.js
index bd92e601..876e6bf7 100644
--- a/rkward/plugins/analysis/crosstab.js
+++ b/rkward/plugins/analysis/crosstab.js
@@ -65,60 +65,43 @@ function calculate () {
 	echo ('}\n');
 }
 
-function printout () {
-	doPrintout (true);
-}
-
-function preview () {
-	preprocess ();
-	calculate ();
-	doPrintout (false);
-}
-
-function sectionHeader (title, additions) {
-	echo ('\trk.header (' + quote (title) + ', parameters=list (' + i18nc ("dependent variable", "Dependent") + '=names (x)[1], '
-	                      + i18nc ("independent variable", "Independent") + '=names (yvars)[i]' + additions + '), level=2)\n');
-}
-
-function doPrintout (full) {
-	if (full) {
+function printout (is_preview) {
+	if (!is_preview) {
 		new Header (i18n ("Crosstabs (n to 1)"), 1).print ();
 		echo ('for (i in 1:length (results)) {\n');
-		sectionHeader (i18n ("Crosstabs (n to 1)"), "");
-		if (any_table_additions) {
-			echo ('	rk.print (ftable (results[[i]], col.vars=2))\n');
-		} else {
-			echo ('	rk.results (results[[i]], titles=c(names (x)[1], names (yvars)[i]))\n');
-		}
-		if (getValue ("chisq") == "TRUE") {
-			echo ('\n');
-			sectionHeader (i18n ("Pearson\'s Chi Square Test for Crosstabs"), ', ' + i18n ("Method") + '=chisquares[[i]][["method"]]');
-			echo ('	rk.results (list (' + i18nc ("a statistic indicator", "Statistic") + '=chisquares[[i]][[\'statistic\']], \'df\'=chisquares[[i]][[\'parameter\']], \'p\'=chisquares[[i]][[\'p.value\']]))\n');
-		}
-
-		if (getValue ("barplot") == "TRUE") {
-			echo ('\n');
-			sectionHeader (i18n ("Barplot for Crosstabs"), getValue ('barplot_embed.code.preprocess'));
-			echo ('	rk.graph.on ()\n');
-			echo ('	try ({\n');
-			if (any_table_additions) {
-				echo ('		counts <- results[[i]][, , "count"]\n');
-			} else {
-				echo ('		counts <- results[[i]]\n');
-			}
-			printIndented ("\t\t", getValue ('barplot_embed.code.printout'));
-			echo ('	})\n');
-			echo ('	rk.graph.off ()\n');
-		}
-		echo ('}\n');
 	} else {
-		// produce a single barplot of the first result
+		echo ('for (i in 1:1) {\n');
+	}
+	sectionHeader (i18n ("Crosstabs (n to 1)"), "");
+	if (any_table_additions) {
+		echo ('	rk.print (ftable (results[[i]], col.vars=2))\n');
+	} else {
+		echo ('	rk.results (results[[i]], titles=c(names (x)[1], names (yvars)[i]))\n');
+	}
+	if (getValue ("chisq") == "TRUE") {
+		echo ('\n');
+		sectionHeader (i18n ("Pearson\'s Chi Square Test for Crosstabs"), ', ' + i18n ("Method") + '=chisquares[[i]][["method"]]');
+		echo ('	rk.results (list (' + i18nc ("a statistic indicator", "Statistic") + '=chisquares[[i]][[\'statistic\']], \'df\'=chisquares[[i]][[\'parameter\']], \'p\'=chisquares[[i]][[\'p.value\']]))\n');
+	}
+
+	if (getValue ("barplot") == "TRUE") {
+		echo ('\n');
+		sectionHeader (i18n ("Barplot for Crosstabs"), getValue ('barplot_embed.code.preprocess'));
+		echo ('	rk.graph.on ()\n');
+		echo ('	try ({\n');
 		if (any_table_additions) {
-			echo ('counts <- results[[1]][, , "count"]\n');
+			echo ('		counts <- results[[i]][, , "count"]\n');
 		} else {
-			echo ('counts <- results[[1]]\n');
+			echo ('		counts <- results[[i]]\n');
 		}
-		echo (getValue ('barplot_embed.code.printout'));
+		printIndented ("\t\t", getValue ('barplot_embed.code.printout'));
+		echo ('	})\n');
+		echo ('	rk.graph.off ()\n');
 	}
+	echo ('}\n');
 }
 
+function sectionHeader (title, additions) {
+	echo ('\trk.header (' + quote (title) + ', parameters=list (' + i18nc ("dependent variable", "Dependent") + '=names (x)[1], '
+	                      + i18nc ("independent variable", "Independent") + '=names (yvars)[i]' + additions + '), level=2)\n');
+}
diff --git a/rkward/plugins/analysis/crosstab.rkh b/rkward/plugins/analysis/crosstab.rkh
index 6d87e35f..b8a0da16 100644
--- a/rkward/plugins/analysis/crosstab.rkh
+++ b/rkward/plugins/analysis/crosstab.rkh
@@ -16,7 +16,7 @@ For complete crosstabulation of three or more variables against each other (into
 		<setting id="y">Select one or more vectors that can be interpreted as a factor. Each of these will be cross-tabulated against the "dependent" variable.</setting>
 		<setting id="chisq">Should a chisquare test be performed (for each pair)?</setting>
 		<setting id="barplot">Should a barplot be produced (for each pair)?</setting>
-		<setting id="preview">Allows to preview the barplot(s). Only the first of the barplots is shown in the preview, even if more than one table is produced.</setting>
+		<setting id="preview">Allows to preview the result. Only the first table (and plot) is shown in the preview, even if more than one table is produced.</setting>
 
 		<caption id="margins_tab"/>
 		<setting id="margins">Calculate and show sums / margins</setting>
diff --git a/rkward/plugins/analysis/crosstab.xml b/rkward/plugins/analysis/crosstab.xml
index 8a48a4ea..5933c707 100644
--- a/rkward/plugins/analysis/crosstab.xml
+++ b/rkward/plugins/analysis/crosstab.xml
@@ -5,7 +5,6 @@
 	<logic>
 		<connect client="chi_options.enabled" governor="chisq.state" />
 		<connect client="barplot_options.enabled" governor="barplot.state" />
-		<connect client="preview.enabled" governor="barplot.state"/>
 		<set id="barplot_embed.xvar" to="counts"/>
 
 		<convert id="montecarlo" mode="equals" sources="simpv.string" standard="TRUE" />
@@ -21,8 +20,8 @@
 						<varslot min_vars="1" multi="true" id="y" source="vars" required="true" label="Independent"/>
 						<checkbox id="chisq" label="Chisquare" value="TRUE" value_unchecked="FALSE" checked="false" />
 						<checkbox id="barplot" label="Draw Barplot" value="TRUE" value_unchecked="FALSE" checked="false" />
-						<preview id="preview" label="Preview (for barplot)"/>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/crosstab_multi.js b/rkward/plugins/analysis/crosstab_multi.js
index 61b05b75..494d4c1e 100644
--- a/rkward/plugins/analysis/crosstab_multi.js
+++ b/rkward/plugins/analysis/crosstab_multi.js
@@ -18,9 +18,3 @@ function printout(is_preview) {
 	}
 	echo ('rk.print (result)\n');
 }
-
-function preview() {
-	preprocess();
-	calculate();
-	printout(true);
-}
diff --git a/rkward/plugins/analysis/irt/dichotomous/par_est_2pl.js b/rkward/plugins/analysis/irt/dichotomous/par_est_2pl.js
index 3e155cb6..5fc787e4 100644
--- a/rkward/plugins/analysis/irt/dichotomous/par_est_2pl.js
+++ b/rkward/plugins/analysis/irt/dichotomous/par_est_2pl.js
@@ -45,12 +45,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save         = getValue("save_name.active");
 	var save_name    = getValue("save_name");
 
-	echo ('rk.header ('+ i18n ("2PL parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header ('+ i18n ("2PL parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.2pl$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/dichotomous/par_est_2pl.xml b/rkward/plugins/analysis/irt/dichotomous/par_est_2pl.xml
index 4e8fcb09..a0795d8c 100644
--- a/rkward/plugins/analysis/irt/dichotomous/par_est_2pl.xml
+++ b/rkward/plugins/analysis/irt/dichotomous/par_est_2pl.xml
@@ -19,6 +19,7 @@
             <varslot types="numeric" id="x" classes="data.frame matrix" source="vars" required="true" label="Matrix of manifest variables:"/>
             <stretch />
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.2pl"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/dichotomous/par_est_3pl.js b/rkward/plugins/analysis/irt/dichotomous/par_est_3pl.js
index 885860ac..7eca40a6 100644
--- a/rkward/plugins/analysis/irt/dichotomous/par_est_3pl.js
+++ b/rkward/plugins/analysis/irt/dichotomous/par_est_3pl.js
@@ -51,12 +51,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save = getValue("save_name.active");
 	var save_name = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("3PL parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("3PL parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.3pl$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/dichotomous/par_est_3pl.xml b/rkward/plugins/analysis/irt/dichotomous/par_est_3pl.xml
index 13ed12cf..c7a16c7d 100644
--- a/rkward/plugins/analysis/irt/dichotomous/par_est_3pl.xml
+++ b/rkward/plugins/analysis/irt/dichotomous/par_est_3pl.xml
@@ -21,6 +21,7 @@
             <varslot types="numeric" id="x" classes="data.frame matrix" source="vars" required="true" label="Matrix of manifest variables:"/>
             <stretch />
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.3pl"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/dichotomous/par_est_lltm.js b/rkward/plugins/analysis/irt/dichotomous/par_est_lltm.js
index e03fb3b1..ce959d98 100644
--- a/rkward/plugins/analysis/irt/dichotomous/par_est_lltm.js
+++ b/rkward/plugins/analysis/irt/dichotomous/par_est_lltm.js
@@ -26,12 +26,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save = getValue("save_name.active");
 	var save_name = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("LLTM  parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("LLTM  parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.lltm$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/dichotomous/par_est_lltm.xml b/rkward/plugins/analysis/irt/dichotomous/par_est_lltm.xml
index 1493518d..3125503b 100644
--- a/rkward/plugins/analysis/irt/dichotomous/par_est_lltm.xml
+++ b/rkward/plugins/analysis/irt/dichotomous/par_est_lltm.xml
@@ -31,6 +31,7 @@
             </radio>
             <varslot types="numeric" id="group_vec" source="vars" label="Use this group vector:"/>
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.lltm"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/dichotomous/par_est_rasch.js b/rkward/plugins/analysis/irt/dichotomous/par_est_rasch.js
index 4abc5aab..c7381c5d 100644
--- a/rkward/plugins/analysis/irt/dichotomous/par_est_rasch.js
+++ b/rkward/plugins/analysis/irt/dichotomous/par_est_rasch.js
@@ -40,13 +40,15 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save      = getValue("save_name.active");
 	var save_name = getValue("save_name");
 	var irtparam  = getValue("irtparam");
 
-	echo ('rk.header (' + i18n ("Rasch parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Rasch parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.rasch$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/dichotomous/par_est_rasch.xml b/rkward/plugins/analysis/irt/dichotomous/par_est_rasch.xml
index e6381201..96acec06 100644
--- a/rkward/plugins/analysis/irt/dichotomous/par_est_rasch.xml
+++ b/rkward/plugins/analysis/irt/dichotomous/par_est_rasch.xml
@@ -19,6 +19,7 @@
             <varslot types="numeric" id="x" classes="data.frame matrix" source="vars" required="true" label="Matrix of manifest variables:"/>
             <stretch />
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.rasch"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_gpcm.js b/rkward/plugins/analysis/irt/polytomous/par_est_gpcm.js
index 3e87a6df..f4cd00e3 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_gpcm.js
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_gpcm.js
@@ -60,12 +60,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save = getValue("save_name.active");
 	var save_name = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("GPCM parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("GPCM parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.gpcm$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_gpcm.xml b/rkward/plugins/analysis/irt/polytomous/par_est_gpcm.xml
index f27fa292..f5876d12 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_gpcm.xml
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_gpcm.xml
@@ -27,6 +27,7 @@
             </frame>
             <stretch />
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.gpcm"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_grm.js b/rkward/plugins/analysis/irt/polytomous/par_est_grm.js
index 2fa13e3a..45b4b561 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_grm.js
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_grm.js
@@ -45,12 +45,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save         = getValue("save_name.active");
 	var save_name    = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("GRM parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("GRM parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.grm$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_grm.xml b/rkward/plugins/analysis/irt/polytomous/par_est_grm.xml
index 86b62358..261dfdf5 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_grm.xml
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_grm.xml
@@ -19,6 +19,7 @@
             <varslot types="numeric" id="x" classes="data.frame matrix" source="vars" required="true" label="Matrix of manifest variables:"/>
             <stretch />
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.grm"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_lpcm.js b/rkward/plugins/analysis/irt/polytomous/par_est_lpcm.js
index bec45d3c..a169982e 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_lpcm.js
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_lpcm.js
@@ -26,12 +26,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save         = getValue("save_name.active");
 	var save_name    = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("LPCM  parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("LPCM  parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.lpcm$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_lpcm.xml b/rkward/plugins/analysis/irt/polytomous/par_est_lpcm.xml
index f9137c3d..e473d879 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_lpcm.xml
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_lpcm.xml
@@ -31,6 +31,7 @@
             </radio>
             <varslot types="numeric" id="group_vec" source="vars" label="Use this group vector:"/>
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.lpcm"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_lrsm.js b/rkward/plugins/analysis/irt/polytomous/par_est_lrsm.js
index 66194487..66b1c217 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_lrsm.js
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_lrsm.js
@@ -26,12 +26,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save         = getValue("save_name.active");
 	var save_name    = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("LRSM  parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("LRSM  parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.lrsm$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_lrsm.xml b/rkward/plugins/analysis/irt/polytomous/par_est_lrsm.xml
index 8caaeccd..51e63866 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_lrsm.xml
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_lrsm.xml
@@ -34,6 +34,7 @@
             </radio>
             <varslot types="numeric" id="group_vec" source="vars" label="Use this group vector:"/>
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.lrsm"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_pcm.js b/rkward/plugins/analysis/irt/polytomous/par_est_pcm.js
index a7677101..bc78616f 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_pcm.js
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_pcm.js
@@ -21,12 +21,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save         = getValue("save_name.active");
 	var save_name    = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("PCM  parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("PCM  parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.pcm$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_pcm.xml b/rkward/plugins/analysis/irt/polytomous/par_est_pcm.xml
index 183803f8..e0779573 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_pcm.xml
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_pcm.xml
@@ -25,6 +25,7 @@
             <varslot types="numeric" id="x" classes="data.frame matrix" source="vars" required="true" label="Matrix of manifest variables:"/>
             <stretch />
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.pcm"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_rsm.js b/rkward/plugins/analysis/irt/polytomous/par_est_rsm.js
index 948d10ad..2a16c9cb 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_rsm.js
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_rsm.js
@@ -21,12 +21,14 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	// check whether parameter estimations should be kept in the global enviroment
 	var save         = getValue("save_name.active");
 	var save_name    = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("RSM  parameter estimation") + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("RSM  parameter estimation") + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(estimates.rsm$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Coefficients:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/polytomous/par_est_rsm.xml b/rkward/plugins/analysis/irt/polytomous/par_est_rsm.xml
index fd0ae0cd..d910af25 100644
--- a/rkward/plugins/analysis/irt/polytomous/par_est_rsm.xml
+++ b/rkward/plugins/analysis/irt/polytomous/par_est_rsm.xml
@@ -25,6 +25,7 @@
             <varslot types="numeric" id="x" classes="data.frame matrix" source="vars" required="true" label="Matrix of manifest variables:"/>
             <stretch />
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="estimates.rsm"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/tests/eRm_waldtest.js b/rkward/plugins/analysis/irt/tests/eRm_waldtest.js
index 9e4e49d2..48fa4c9b 100644
--- a/rkward/plugins/analysis/irt/tests/eRm_waldtest.js
+++ b/rkward/plugins/analysis/irt/tests/eRm_waldtest.js
@@ -18,8 +18,10 @@ function calculate () {
 	if (optimizer != "nlm") echo('rm(fitctrl, envir=.GlobalEnv)\n');
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Wald test (%1)", getValue ("x")) + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Wald test (%1)", getValue ("x")) + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(waldtest.res$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Wald test on item level (z-values):") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/tests/eRm_waldtest.xml b/rkward/plugins/analysis/irt/tests/eRm_waldtest.xml
index 2a7a3c06..023d970a 100644
--- a/rkward/plugins/analysis/irt/tests/eRm_waldtest.xml
+++ b/rkward/plugins/analysis/irt/tests/eRm_waldtest.xml
@@ -20,6 +20,7 @@
             <varslot types="numeric" id="x" classes="Rm" source="vars" required="true" label="Choose fitted model to test:"/>
             <text>Only objects of class Rm are valid!</text>
             <stretch />
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.js b/rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.js
index 6dd5fa88..8322524c 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.js
+++ b/rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.js
@@ -53,7 +53,7 @@ function calculate () {
 	echo (', chi.squared=FALSE, B=' + spin_samples + ')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	var chk_select      = getValue("chk_select");
 	var spin_samples    = getValue("spin_samples");
 	var chk_standard    = getValue("chk_standard");
@@ -65,10 +65,12 @@ function printout () {
 	if (inp_items)
 		inp_items   = inp_items.replace(/\n/g,', ').replace(/(\w*)\[\["|"\]\]/g, '');
 
-	header = new Header (i18n ("Cronbach\'s alpha")).add (i18n ("Dataset"), getValue ("x"));
-	if (chk_select && inp_items)
-		header.add (i18n ("Subset"), inp_items);
-	header.print ();
+	if (!is_preview) {
+		header = new Header (i18n ("Cronbach\'s alpha")).add (i18n ("Dataset"), getValue ("x"));
+		if (chk_select && inp_items)
+			header.add (i18n ("Subset"), inp_items);
+		header.print ();
+	}
 	echo ('rk.print(paste(' + i18n ("Items:") + ',cronalpha.res$p,' + i18n ("<br />Sample units:") + ',cronalpha.res$n,"<br /><strong>alpha:",round(cronalpha.res$alpha, digits=2),"</strong>');
 	if (chk_standard) echo(" (standardized)");
 	echo ('"))\n');
diff --git a/rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.xml b/rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.xml
index 62258cda..0d3e6abf 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.xml
+++ b/rkward/plugins/analysis/irt/tests/ltm_cronbach_alpha.xml
@@ -28,6 +28,7 @@
               <checkbox id="chk_bsci" label="Compute Bootstrap confidence interval (CI)" value="bsci" />
               <spinbox id="spin_ci" label="Confidence interval:" type="real" initial=".95" min="0" max="1" size="small" />
             </frame>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/tests/ltm_gof_rasch.js b/rkward/plugins/analysis/irt/tests/ltm_gof_rasch.js
index 0e1e9e7a..6d381914 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_gof_rasch.js
+++ b/rkward/plugins/analysis/irt/tests/ltm_gof_rasch.js
@@ -13,8 +13,10 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Goodness of Fit for Rasch Models (%1)", getValue ("x")) + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Goodness of Fit for Rasch Models (%1)", getValue ("x")) + ')\n');
+	}
 	echo ('rk.print ("Call:")\n');
 	echo ('rk.print.literal (deparse(GoFRasch.res$call, width.cutoff=500))\n');
 	echo ('rk.header ("Parametric Bootstrap test:", level=4)\n');
diff --git a/rkward/plugins/analysis/irt/tests/ltm_gof_rasch.xml b/rkward/plugins/analysis/irt/tests/ltm_gof_rasch.xml
index 058bb47f..fb3a407a 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_gof_rasch.xml
+++ b/rkward/plugins/analysis/irt/tests/ltm_gof_rasch.xml
@@ -18,6 +18,7 @@
             <frame label="Bootstrap options">
               <spinbox id="spin_samples" label="Number of samples" type="integer" initial="49" min="1" size="small" />
             </frame>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/tests/ltm_item_fit.js b/rkward/plugins/analysis/irt/tests/ltm_item_fit.js
index e951a798..909412ca 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_item_fit.js
+++ b/rkward/plugins/analysis/irt/tests/ltm_item_fit.js
@@ -29,10 +29,12 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
   	var rad_pvalue      = getValue("rad_pvalue");
 
-	echo ('rk.header (' + i18n ("Item-fit statistics (%1)", getValue("x")) + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Item-fit statistics (%1)", getValue("x")) + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(itemfit.res$call, width.cutoff=500))\n');
 	echo ('rk.print (' + i18n ("Alternative: Items do not fit the model") + ')\n');
diff --git a/rkward/plugins/analysis/irt/tests/ltm_item_fit.xml b/rkward/plugins/analysis/irt/tests/ltm_item_fit.xml
index 6d738394..0bf39170 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_item_fit.xml
+++ b/rkward/plugins/analysis/irt/tests/ltm_item_fit.xml
@@ -18,6 +18,7 @@
             <varslot types="numeric" id="x" classes="rasch tpm ltm" source="vars" required="true" label="Choose fitted model to examine:"/>
             <text>Only objects of class ltm, rasch and tpm are valid!</text>
             <stretch />
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/tests/ltm_person_fit.js b/rkward/plugins/analysis/irt/tests/ltm_person_fit.js
index 4655d761..03d89f8c 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_person_fit.js
+++ b/rkward/plugins/analysis/irt/tests/ltm_person_fit.js
@@ -30,8 +30,10 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Person-fit statistics (%1)", getValue("x")) + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Person-fit statistics (%1)", getValue("x")) + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(personfit.res$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Response patterns, person-fit statistics (L0, Lz) and probabilities for each response pattern (Pr):") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/tests/ltm_person_fit.xml b/rkward/plugins/analysis/irt/tests/ltm_person_fit.xml
index d27d1067..9385e515 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_person_fit.xml
+++ b/rkward/plugins/analysis/irt/tests/ltm_person_fit.xml
@@ -26,6 +26,7 @@
               <option label="More consistent response pattern than the model predicts" value="greater" />
               <option label="Two sided (test both of the above)" value="two.sided" />
             </radio>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/irt/tests/ltm_unidimensional.js b/rkward/plugins/analysis/irt/tests/ltm_unidimensional.js
index a200eec1..e7af78b3 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_unidimensional.js
+++ b/rkward/plugins/analysis/irt/tests/ltm_unidimensional.js
@@ -13,11 +13,13 @@ function calculate () {
 	echo (')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	var save         = getValue("save_name.active");
 	var save_name    = getValue("save_name");
 
-	echo ('rk.header (' + i18n ("Unidimensionality check (%1)", getValue("x")) + ')\n');
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Unidimensionality check (%1)", getValue("x")) + ')\n');
+	}
 	echo ('rk.print (' + i18n ("Call:") + ')\n');
 	echo ('rk.print.literal (deparse(unidim.res$call, width.cutoff=500))\n');
 	echo ('rk.header (' + i18n ("Matrix of tetrachoric correlations:") + ', level=4)\n');
diff --git a/rkward/plugins/analysis/irt/tests/ltm_unidimensional.xml b/rkward/plugins/analysis/irt/tests/ltm_unidimensional.xml
index f685a4c7..e1931410 100644
--- a/rkward/plugins/analysis/irt/tests/ltm_unidimensional.xml
+++ b/rkward/plugins/analysis/irt/tests/ltm_unidimensional.xml
@@ -21,6 +21,7 @@
               <spinbox id="spin_samples" label="Number of samples:" type="integer" initial="100" min="1" size="small" />
             </frame>
             <saveobject id="save_name" checkable="true" checked="true" label="Save results in workspace" initial="unidim.res"/>
+            <preview id="preview" mode="output"/>
           </column>
         </row>
       </tab>
diff --git a/rkward/plugins/analysis/moments/agostino_test.js b/rkward/plugins/analysis/moments/agostino_test.js
index 93531297..b2dcf2e3 100755
--- a/rkward/plugins/analysis/moments/agostino_test.js
+++ b/rkward/plugins/analysis/moments/agostino_test.js
@@ -11,8 +11,10 @@ function insertTestCall () {
 	}
 }
 
-function printout () {
-	new Header (i18n ("D'Agostino test of skewness")).addFromUI ("alternative").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("D'Agostino test of skewness")).addFromUI ("alternative").print ();
+	}
 	echo ('rk.results (results)\n');
 }
 
diff --git a/rkward/plugins/analysis/moments/agostino_test.xml b/rkward/plugins/analysis/moments/agostino_test.xml
index 89473610..8d87e09f 100755
--- a/rkward/plugins/analysis/moments/agostino_test.xml
+++ b/rkward/plugins/analysis/moments/agostino_test.xml
@@ -15,6 +15,7 @@
 							<option value="greater" label="greater"/>
 							<option value="less" label="less"/>
 						</radio>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/moments/anscombe_test.js b/rkward/plugins/analysis/moments/anscombe_test.js
index fbaadc79..d5129e6a 100644
--- a/rkward/plugins/analysis/moments/anscombe_test.js
+++ b/rkward/plugins/analysis/moments/anscombe_test.js
@@ -10,8 +10,10 @@ function insertTestCall () {
 	}
 }
 
-function printout () {
-	new Header (i18n ("Anscombe-Glynn test of kurtosis")).addFromUI ("alternative").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Anscombe-Glynn test of kurtosis")).addFromUI ("alternative").print ();
+	}
 	echo ('rk.results (results)\n');
 }
 
diff --git a/rkward/plugins/analysis/moments/anscombe_test.xml b/rkward/plugins/analysis/moments/anscombe_test.xml
index 45be12de..bd251af0 100644
--- a/rkward/plugins/analysis/moments/anscombe_test.xml
+++ b/rkward/plugins/analysis/moments/anscombe_test.xml
@@ -15,6 +15,7 @@
 							<option value="greater" label="greater"/>
 							<option value="less" label="less"/>
 						</radio>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/moments/bonett_test.js b/rkward/plugins/analysis/moments/bonett_test.js
index 1cd28fac..c3f82836 100644
--- a/rkward/plugins/analysis/moments/bonett_test.js
+++ b/rkward/plugins/analysis/moments/bonett_test.js
@@ -10,7 +10,9 @@ function insertTestCall () {
 	}
 }
 
-function printout () {
-	new Header (i18n ("Bonett-Seier test of Geary's kurtosis")).addFromUI ("alternative").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Bonett-Seier test of Geary's kurtosis")).addFromUI ("alternative").print ();
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/analysis/moments/bonett_test.xml b/rkward/plugins/analysis/moments/bonett_test.xml
index 52ecfde0..fb099425 100644
--- a/rkward/plugins/analysis/moments/bonett_test.xml
+++ b/rkward/plugins/analysis/moments/bonett_test.xml
@@ -15,6 +15,7 @@
 							<option value="greater" label="greater"/>
 							<option value="less" label="less"/>
 						</radio>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/moments/moment.js b/rkward/plugins/analysis/moments/moment.js
index 944971ab..81b6d7da 100644
--- a/rkward/plugins/analysis/moments/moment.js
+++ b/rkward/plugins/analysis/moments/moment.js
@@ -4,8 +4,10 @@ function insertTestCall () {
 	echo ('		results[i, ' + i18nc ("Statistical moment", "Moment") + '] <- moment (var, order = ' + getValue ("order") + ', central = ' + getValue ("central") + ', absolute = ' + getValue ("absolute") + ', na.rm = ' + getValue ("narm") + ')\n');
 }
 
-function printout () {
-	new Header (i18n ("Statistical Moment")).addFromUI ("order").addFromUI ("central").addFromUI ("absolute").addFromUI ("narm").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Statistical Moment")).addFromUI ("order").addFromUI ("central").addFromUI ("absolute").addFromUI ("narm").print ();
+	}
 	echo ('rk.results (results)\n');
 }
 
diff --git a/rkward/plugins/analysis/moments/moment.xml b/rkward/plugins/analysis/moments/moment.xml
index 2940c3c2..8ddc8d8c 100644
--- a/rkward/plugins/analysis/moments/moment.xml
+++ b/rkward/plugins/analysis/moments/moment.xml
@@ -10,6 +10,7 @@
 					<varselector id="vars"/>
 					<column>
 						<varslot types="numeric" id="x" multi="true" source="vars" required="true" label="variable(s):"/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/moments/skewness_kurtosis_test.js b/rkward/plugins/analysis/moments/skewness_kurtosis_test.js
index c8d70106..d17b4eb8 100755
--- a/rkward/plugins/analysis/moments/skewness_kurtosis_test.js
+++ b/rkward/plugins/analysis/moments/skewness_kurtosis_test.js
@@ -17,7 +17,9 @@ function insertTestCall () {
 	}
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Skewness and Kurtosis") + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Skewness and Kurtosis") + ')\n');
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/analysis/moments/skewness_kurtosis_test.xml b/rkward/plugins/analysis/moments/skewness_kurtosis_test.xml
index 83a9cd31..4547ea02 100755
--- a/rkward/plugins/analysis/moments/skewness_kurtosis_test.xml
+++ b/rkward/plugins/analysis/moments/skewness_kurtosis_test.xml
@@ -14,6 +14,7 @@
 							<varslot types="numeric" multi="true" id="x" source="vars" required="true" label="variable(s):"/>
 						</frame>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/outliers/chisq_out_test.js b/rkward/plugins/analysis/outliers/chisq_out_test.js
index 9be2296a..db420467 100755
--- a/rkward/plugins/analysis/outliers/chisq_out_test.js
+++ b/rkward/plugins/analysis/outliers/chisq_out_test.js
@@ -8,7 +8,9 @@ function makeTestCall () {
 	echo ('		results[i, ' + i18n ("Variance") + '] <- var (var)\n');
 }
 
-function printout () {
-	new Header (i18n ("Chi-squared test for outlier")).addFromUI ("opposite").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Chi-squared test for outlier")).addFromUI ("opposite").print ();
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/analysis/outliers/chisq_out_test.xml b/rkward/plugins/analysis/outliers/chisq_out_test.xml
index 594c892f..1cde75aa 100755
--- a/rkward/plugins/analysis/outliers/chisq_out_test.xml
+++ b/rkward/plugins/analysis/outliers/chisq_out_test.xml
@@ -10,6 +10,7 @@
 					<varselector id="vars"/>
 					<column>
 						<varslot types="numeric" id="x" multi="true" source="vars" required="true" label="variable(s):"/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/outliers/dixon_test.js b/rkward/plugins/analysis/outliers/dixon_test.js
index 95d1a3c1..846c2812 100755
--- a/rkward/plugins/analysis/outliers/dixon_test.js
+++ b/rkward/plugins/analysis/outliers/dixon_test.js
@@ -7,8 +7,10 @@ function makeTestCall () {
 	echo ('		results[i, ' + i18n ("Alternative Hypothesis") + ']<- rk.describe.alternative (t)\n');
 }
 
-function printout () {
-	new Header (i18n ("Dixon test for outlier")).addFromUI ("type").addFromUI ("opposite").addFromUI ("two_sided").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Dixon test for outlier")).addFromUI ("type").addFromUI ("opposite").addFromUI ("two_sided").print ();
+	}
 	echo ('rk.results (results)\n');
 }
 
diff --git a/rkward/plugins/analysis/outliers/dixon_test.xml b/rkward/plugins/analysis/outliers/dixon_test.xml
index fee77bd4..9a09749b 100755
--- a/rkward/plugins/analysis/outliers/dixon_test.xml
+++ b/rkward/plugins/analysis/outliers/dixon_test.xml
@@ -10,6 +10,7 @@
 					<varselector id="vars"/>
 					<column>
 						<varslot types="numeric" id="x" multi="true" source="vars" required="true" label="variable(s):"/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/outliers/grubbs_test.js b/rkward/plugins/analysis/outliers/grubbs_test.js
index a360da67..7c484239 100755
--- a/rkward/plugins/analysis/outliers/grubbs_test.js
+++ b/rkward/plugins/analysis/outliers/grubbs_test.js
@@ -8,9 +8,11 @@ function makeTestCall () {
 	echo ('		results[i, ' + i18n ("Alternative Hypothesis") + ']<- rk.describe.alternative (t)\n');
 }
 
-function printout () {
-	new Header (i18n ("Grubbs tests for one or two outliers in data sample"))
-	    .addFromUI ("type").addFromUI ("opposite").addFromUI ("two_sided").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Grubbs tests for one or two outliers in data sample"))
+		    .addFromUI ("type").addFromUI ("opposite").addFromUI ("two_sided").print ();
+	}
 	echo ('rk.results (results)\n');
 }
 
diff --git a/rkward/plugins/analysis/outliers/grubbs_test.xml b/rkward/plugins/analysis/outliers/grubbs_test.xml
index e36af8fd..8059b4dd 100755
--- a/rkward/plugins/analysis/outliers/grubbs_test.xml
+++ b/rkward/plugins/analysis/outliers/grubbs_test.xml
@@ -10,6 +10,7 @@
 					<varselector id="vars"/>
 					<column>
 						<varslot types="numeric" id="x" multi="true" source="vars" required="true" label="variable(s):"/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/outliers/outlier.js b/rkward/plugins/analysis/outliers/outlier.js
index 543cba66..9d22eb57 100755
--- a/rkward/plugins/analysis/outliers/outlier.js
+++ b/rkward/plugins/analysis/outliers/outlier.js
@@ -5,8 +5,10 @@ function makeTestCall () {
 	echo ('		results[i, \'Outlier\'] <- t\n');
 }
 
-function printout () {
-	new Header (i18n ("Find potential outlier")).addFromUI ("opposite").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Find potential outlier")).addFromUI ("opposite").print ();
+	}
 	echo ('rk.results (results)\n');
 }
 
diff --git a/rkward/plugins/analysis/outliers/outlier.xml b/rkward/plugins/analysis/outliers/outlier.xml
index 4acfdf59..6c20fa7e 100755
--- a/rkward/plugins/analysis/outliers/outlier.xml
+++ b/rkward/plugins/analysis/outliers/outlier.xml
@@ -10,6 +10,7 @@
 					<varselector id="vars"/>
 					<column>
 						<varslot types="numeric" id="x" multi="true" source="vars" required="true" label="variable(s):"/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/regression/linear_regression.js b/rkward/plugins/analysis/regression/linear_regression.js
index 3487f063..36112bf6 100644
--- a/rkward/plugins/analysis/regression/linear_regression.js
+++ b/rkward/plugins/analysis/regression/linear_regression.js
@@ -28,7 +28,9 @@ function calculate () {
 	}
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Linear Regression") + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Linear Regression") + ')\n');
+	}
 	echo ('rk.print(results)\n');
 }
diff --git a/rkward/plugins/analysis/regression/linear_regression.xml b/rkward/plugins/analysis/regression/linear_regression.xml
index 2a1e049f..652417ca 100644
--- a/rkward/plugins/analysis/regression/linear_regression.xml
+++ b/rkward/plugins/analysis/regression/linear_regression.xml
@@ -13,6 +13,7 @@
 					<checkbox id="intercept" label="Include intercept" checked="true"/>
 					<checkbox id="beta" label="Show standardized coefficients" checked="false"/>
 					<stretch/>
+					<preview id="preview" mode="output"/>
 				</column>
 			</row>
 		</tab>
diff --git a/rkward/plugins/analysis/time_series/Box_test.js b/rkward/plugins/analysis/time_series/Box_test.js
index 84881657..be99758c 100755
--- a/rkward/plugins/analysis/time_series/Box_test.js
+++ b/rkward/plugins/analysis/time_series/Box_test.js
@@ -22,9 +22,11 @@ function calculate () {
 	echo ('}\n');
 }
 
-function printout () {
-	new Header (i18n ("Box-Pierce and Ljung-Box Tests"))
-	    .addFromUI ("lag").addFromUI ("type").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Box-Pierce and Ljung-Box Tests"))
+		    .addFromUI ("lag").addFromUI ("type").print ();
+	}
 	echo ('\n');
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/analysis/time_series/Box_test.xml b/rkward/plugins/analysis/time_series/Box_test.xml
index 070d07ff..83e49c15 100755
--- a/rkward/plugins/analysis/time_series/Box_test.xml
+++ b/rkward/plugins/analysis/time_series/Box_test.xml
@@ -17,6 +17,7 @@
 								<option label="Ljung-Box" value="Ljung-Box"/>
 							</radio>
 						</frame>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/time_series/hp_filter.js b/rkward/plugins/analysis/time_series/hp_filter.js
index 85e43eb6..e21015a6 100644
--- a/rkward/plugins/analysis/time_series/hp_filter.js
+++ b/rkward/plugins/analysis/time_series/hp_filter.js
@@ -58,8 +58,10 @@ function calculate () {
 	}
 }
 
-function printout () {
-	new Header (i18n ("Hodrick-Prescott Filter")).add (i18n ("Lambda"), lambda).print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Hodrick-Prescott Filter")).add (i18n ("Lambda"), lambda).print ();
+	}
 
 	echo ('rk.graph.on ()\n');
 	echo ('try({\n');
diff --git a/rkward/plugins/analysis/time_series/hp_filter.xml b/rkward/plugins/analysis/time_series/hp_filter.xml
index 4a495d58..1763ea4e 100644
--- a/rkward/plugins/analysis/time_series/hp_filter.xml
+++ b/rkward/plugins/analysis/time_series/hp_filter.xml
@@ -48,6 +48,7 @@
 								<saveobject id="cycle_name" label="Save cycle" checkable="true" initial="hpcycle"/>
 							</frame>
 						</row>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/time_series/kpss_test.js b/rkward/plugins/analysis/time_series/kpss_test.js
index 76a51190..9974e10c 100755
--- a/rkward/plugins/analysis/time_series/kpss_test.js
+++ b/rkward/plugins/analysis/time_series/kpss_test.js
@@ -27,8 +27,10 @@ function calculate () {
 	echo ('}\n');
 }
 
-function printout () {
-	new Header (i18n ("KPSS Test for Level Stationarity")).addFromUI ("null").addFromUI ("lshort").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("KPSS Test for Level Stationarity")).addFromUI ("null").addFromUI ("lshort").print ();
+	}
 	echo ('rk.results (results)\n');
 }
 
diff --git a/rkward/plugins/analysis/time_series/kpss_test.xml b/rkward/plugins/analysis/time_series/kpss_test.xml
index adff8edd..96e83467 100755
--- a/rkward/plugins/analysis/time_series/kpss_test.xml
+++ b/rkward/plugins/analysis/time_series/kpss_test.xml
@@ -18,6 +18,7 @@
 							<option label="short" value="TRUE"/>
 							<option label="long" value="FALSE"/>
 						</radio>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/variances/F_test.js b/rkward/plugins/analysis/variances/F_test.js
index 80bae366..0c4bb277 100644
--- a/rkward/plugins/analysis/variances/F_test.js
+++ b/rkward/plugins/analysis/variances/F_test.js
@@ -6,13 +6,15 @@ function calculate () {
 	echo ('\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	echo ('names <- rk.get.description (' + getValue ("x") + ', ' + getValue ("y") + ')\n');
 	echo ('\n');
-	new Header (noquote ('result$method'))
-	    .addFromUI ("conflevel")
-	    .addFromUI ("ratio")
-	    .add (i18n ("Alternative Hypothesis"), noquote ('rk.describe.alternative(result)')).print ();
+	if (!is_preview) {
+		new Header (noquote ('result$method'))
+		    .addFromUI ("conflevel")
+		    .addFromUI ("ratio")
+		    .add (i18n ("Alternative Hypothesis"), noquote ('rk.describe.alternative(result)')).print ();
+	}
 	echo ('\n');
 	echo ('rk.results (list (\n');
 	echo ('	' + i18n ("Variables") + '=names,\n');
diff --git a/rkward/plugins/analysis/variances/F_test.xml b/rkward/plugins/analysis/variances/F_test.xml
index 2fbc4188..66f23177 100644
--- a/rkward/plugins/analysis/variances/F_test.xml
+++ b/rkward/plugins/analysis/variances/F_test.xml
@@ -16,6 +16,7 @@
 							<option value="greater" label="greater"/>
 							<option value="less" label="less"/>
 						</radio>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/analysis/variances/bartlett_test.js b/rkward/plugins/analysis/variances/bartlett_test.js
index 45e5a896..6a967c75 100644
--- a/rkward/plugins/analysis/variances/bartlett_test.js
+++ b/rkward/plugins/analysis/variances/bartlett_test.js
@@ -7,11 +7,13 @@ function calculate () {
 	echo ('result <- bartlett.test (list (' + vars + '))\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	echo ('names <- rk.get.description (' + vars + ')\n');
 	echo ('\n');
-	echo ('rk.header (result$method)\n');
-	echo ('\n');
+	if (!is_preview) {
+		echo ('rk.header (result$method)\n');
+		echo ('\n');
+	}
 	echo ('rk.results (list (\n');
 	echo ('	' + i18n ("Variables") + '=names,\n');
 	echo ('	' + i18n ("Bartlett's K-squared") + '=result$statistic,\n');
diff --git a/rkward/plugins/analysis/variances/bartlett_test.xml b/rkward/plugins/analysis/variances/bartlett_test.xml
index ceb02458..cc515582 100644
--- a/rkward/plugins/analysis/variances/bartlett_test.xml
+++ b/rkward/plugins/analysis/variances/bartlett_test.xml
@@ -8,6 +8,7 @@
 			<varselector id="vars"/>
 			<column>
 				<varslot types="numeric" id="x" source="vars" required="true" label="samples" multi="true" min_vars="2"/>
+				<preview id="preview" mode="output"/>
 			</column>
 		</row>
 	</dialog>
diff --git a/rkward/plugins/analysis/variances/fligner_test.js b/rkward/plugins/analysis/variances/fligner_test.js
index 0218748b..7e910558 100644
--- a/rkward/plugins/analysis/variances/fligner_test.js
+++ b/rkward/plugins/analysis/variances/fligner_test.js
@@ -7,11 +7,13 @@ function calculate () {
 	echo ('result <- fligner.test (list (' + vars + '))\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	echo ('names <- rk.get.description (' + vars + ')\n');
 	echo ('\n');
-	echo ('rk.header (result$method)\n');
-	echo ('\n');
+	if (!is_preview) {
+		echo ('rk.header (result$method)\n');
+		echo ('\n');
+	}
 	echo ('rk.results (list (\n');
 	echo ('	' + i18n ("Variables") + '=names,\n');
 	echo ('	' + i18n ("Fligner-Killeen:med X^2 test statistic") + '=result$statistic,\n');
diff --git a/rkward/plugins/analysis/variances/fligner_test.xml b/rkward/plugins/analysis/variances/fligner_test.xml
index c524fe43..957b4432 100644
--- a/rkward/plugins/analysis/variances/fligner_test.xml
+++ b/rkward/plugins/analysis/variances/fligner_test.xml
@@ -8,6 +8,7 @@
 			<varselector id="vars"/>
 			<column>
 				<varslot types="numeric" id="x" source="vars" multi="true" required="true" label="samples" min_vars="2"/>
+				<preview id="preview" mode="output"/>
 			</column>
 		</row>
 	</dialog>
diff --git a/rkward/plugins/analysis/variances/levene_test.js b/rkward/plugins/analysis/variances/levene_test.js
index df832db3..856389b6 100644
--- a/rkward/plugins/analysis/variances/levene_test.js
+++ b/rkward/plugins/analysis/variances/levene_test.js
@@ -6,11 +6,13 @@ function calculate () {
 	echo ('result <- leveneTest (' + getValue ("y") + ', ' + getValue ("group") + ')\n');
 }
 
-function printout () {
+function printout (is_preview) {
 	echo ('names <- rk.get.description (' + getValue ("y") + ', ' + getValue ("group") + ')\n');
 	echo ('\n');
-	new Header (i18n ("Levene's Test")).addFromUI ("y", noquote ('names[1]')).addFromUI ("group", noquote ('names[2]')).print ();
-	echo ('\n');
+	if (!is_preview) {
+		new Header (i18n ("Levene's Test")).addFromUI ("y", noquote ('names[1]')).addFromUI ("group", noquote ('names[2]')).print ();
+		echo ('\n');
+	}
 	echo ('rk.print (result)\n');
 }
 
diff --git a/rkward/plugins/analysis/variances/levene_test.xml b/rkward/plugins/analysis/variances/levene_test.xml
index 827cf6b3..1169a951 100644
--- a/rkward/plugins/analysis/variances/levene_test.xml
+++ b/rkward/plugins/analysis/variances/levene_test.xml
@@ -9,6 +9,7 @@
 			<column>
 				<varslot types="numeric" id="y" source="vars" required="true" label="response variable"/>
 				<varslot types="factor" id="group" source="vars" required="true" label="groups"/>
+				<preview id="preview" mode="output"/>
 			</column>
 		</row>
 	</dialog>
diff --git a/rkward/plugins/analysis/wilcoxon/wilcoxon_tests.js b/rkward/plugins/analysis/wilcoxon/wilcoxon_tests.js
index e10c4837..a5494de6 100644
--- a/rkward/plugins/analysis/wilcoxon/wilcoxon_tests.js
+++ b/rkward/plugins/analysis/wilcoxon/wilcoxon_tests.js
@@ -64,22 +64,24 @@ function calculate(){
 	echo("\n\t)\n\n");
 }
 
-function printout(){
+function printout(is_preview){
 	// printout the results
 
 	var y = getValue("y");
 	var confintChecked = getValue("confint.checked");
 	var correct = getValue("correct");
 	var mu = getValue("mu");
-	var header = new Header (noquote ('wcox.result$method'));
-	header.add (i18n ("Comparing"), noquote ('names[1]'));
-	if (y) header.add (i18nc ("compare against", "against"), noquote ('names[2]'));
-	header.add ("H1", noquote ('rk.describe.alternative (wcox.result)'));
-	header.add (i18n ("Continuity correction in normal approximation for p-value"), correct ? "TRUE" : "FALSE");
-	header.addFromUI ("exact");
-	if (y) header.addFromUI ("paired");
-	header.addFromUI ("mu");
-	header.print ();
+	if (!is_preview) {
+		var header = new Header (noquote ('wcox.result$method'));
+		header.add (i18n ("Comparing"), noquote ('names[1]'));
+		if (y) header.add (i18nc ("compare against", "against"), noquote ('names[2]'));
+		header.add ("H1", noquote ('rk.describe.alternative (wcox.result)'));
+		header.add (i18n ("Continuity correction in normal approximation for p-value"), correct ? "TRUE" : "FALSE");
+		header.addFromUI ("exact");
+		if (y) header.addFromUI ("paired");
+		header.addFromUI ("mu");
+		header.print ();
+	}
 	echo("rk.results (list (\n\t" + i18n ("Variable Names") + "=names,\n\t" + i18nc ("a statistic indicator", "Statistic") + "=wcox.result$statistic,\n\t" + i18n ("Location Shift") + "=wcox.result$null.value,\n\t" + i18n ("Hypothesis") + "=wcox.result$alternative,\n" + "\tp=wcox.result$p.value");
 	if(confintChecked) {
 		echo(",\n\t" + i18n ("Confidence interval percent") + "=(100 * attr(wcox.result$conf.int, \"conf.level\")),\n\t" + i18n ("Confidence interval of difference") + "=wcox.result$conf.int,\n\t" + i18n ("Difference in Location") + "=wcox.result$estimate");
diff --git a/rkward/plugins/analysis/wilcoxon/wilcoxon_tests.xml b/rkward/plugins/analysis/wilcoxon/wilcoxon_tests.xml
index 67f7d804..fd08b5fd 100644
--- a/rkward/plugins/analysis/wilcoxon/wilcoxon_tests.xml
+++ b/rkward/plugins/analysis/wilcoxon/wilcoxon_tests.xml
@@ -22,6 +22,7 @@
 						<checkbox id="paired" label="Paired test" value="true" />
 						<stretch />
 						<saveobject label="Save results to workspace" checkable="true" initial="wcox.result" id="svb_Svrsltst" />
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/data/limit_vector_length.js b/rkward/plugins/data/limit_vector_length.js
index 276f9f37..977cda6e 100644
--- a/rkward/plugins/data/limit_vector_length.js
+++ b/rkward/plugins/data/limit_vector_length.js
@@ -24,4 +24,3 @@ function calculate () {
 	}
 	echo ('}\n');
 }
-
diff --git a/rkward/plugins/distributions/dist_common.js b/rkward/plugins/distributions/dist_common.js
index 69d6c8d1..ef23d9ae 100644
--- a/rkward/plugins/distributions/dist_common.js
+++ b/rkward/plugins/distributions/dist_common.js
@@ -4,8 +4,8 @@ var dist;
 var invar;
 var outvar;
 
-const continuous = 1;
-const discrete = 2;
+var continuous = 1;
+var discrete = 2;
 
 // NOTE: range 
 function initDistSpecifics (title, stem, params, range, type) {
@@ -49,9 +49,9 @@ function calculate () {
 	if (mode == "q") values = getList ("p.0");
 	else values = getList ("q.0");
 	if (values.length < 1) {
-		// NOTE: making this an even number is somewhat important. Otherwise, the middle number will be something very close to (but not quite) 0 in many cases,
-		//       resulting in very ugly number formatting
-		var max_auto_sequence_length = 20;
+		var max_auto_sequence_length;
+		if (mode != "q") max_auto_sequence_length = getValue("n_quantiles");
+		else max_auto_sequence_length = getValue("n_probabilities");
 
 		if (invar == 'q') {
 			if (!dist["cont"]) {
@@ -67,7 +67,6 @@ function calculate () {
 				values = 'seq (' + String (dist["min"]) + ', ' + String (dist["max"]) + ', length.out=' + String (max_auto_sequence_length) + ')';
 			}
 		} else {    // invar == 'p'
-			max_auto_sequence_length += 1;   // here, an uneven number is preferable for divisibility of steps by 2
 			if (logpd) {
 				values = '-' + String (max_auto_sequence_length) + ':0';
 			} else {
@@ -93,12 +92,14 @@ function getLabel (quantity) {
 	return i18n ('Probability');
 }
 
-function printout () {
-	header = dist["header"];
-	if (mode != "d") {
-		header.add (i18nc ("Tail of distribution function: lower / upper", 'Tail'), getBoolean ("lower.state") ? i18n ('Lower tail: P[X ≤ x]') : i18n ('Upper tail: P[X > x]'));
+function printout (is_preview) {
+	if (!is_preview) {
+		header = dist["header"];
+		if (mode != "d") {
+			header.add (i18nc ("Tail of distribution function: lower / upper", 'Tail'), getBoolean ("lower.state") ? i18n ('Lower tail: P[X ≤ x]') : i18n ('Upper tail: P[X > x]'));
+		}
+		header.print ();
 	}
-	header.print ();
 
 	echo ('rk.results (data.frame (' + getLabel (invar) + '=' + invar + ', ' + getLabel (outvar) + '=' + outvar + ', check.names=FALSE))\n');
 }
diff --git a/rkward/plugins/distributions/dist_help_snippets.xml b/rkward/plugins/distributions/dist_help_snippets.xml
index b630e3e2..65c22763 100644
--- a/rkward/plugins/distributions/dist_help_snippets.xml
+++ b/rkward/plugins/distributions/dist_help_snippets.xml
@@ -2,11 +2,14 @@
 	<snippet id="dialog_settings">
 		<caption title="Generic settings"/>
 		<setting id="mode">Specify the quantity to be calculated (probabilities, densities, or quantiles), and the quantity given (probabilities or quantiles)</setting>
-		<setting id="q">When calculating densities or probabilities, specify one or more quantiles. If this setting is left empty, a sequence of evenly spaced quantiles will be used, instead.</setting>
-		<setting id="p">When calculating quantiles, specify one or more probabilities, optionally logarithmic (see below). If this setting is left empty, a sequence of evenly spaced (log) probabilities will be used, instead.</setting>
+		<setting id="n_quantiles">When calculating densities or probabilities, specify the number of evenly spaces quantiles to show. Alternatively, use the setting above.</setting>
+		<setting id="q">When calculating densities or probabilities, specify one or more quantiles. Alternatively, leave this empty to use the setting above, instead..</setting>
+		<setting id="n_probabilities">When calculating quantiles, specify the number of evenly spaced probabilities (optionally logarithmic) to show. Alternatively, use the setting below.</setting>
+		<setting id="p">When calculating quantiles, specify one or more probabilities, optionally logarithmic (see below). If this setting is left empty, the setting above is used, instead.</setting>
 		<setting id="logp">When calculating probabilities, return these as log (p). When specifying probabilities, these are supplied as log (p).</setting>
 		<setting id="logd">When calculating densities, return these as log (d).</setting>
 		<setting id="lower">If checked (the default) probabilities are P[X ≤ x]. Otherwise (upper tail) probabilities are P[X > x]</setting>
+		<setting id="preview">Show a preview of the result.</setting>
 		<caption title="Distribution specific settings"/>
 	</snippet>
 	<snippet id="dialog_usage">
diff --git a/rkward/plugins/distributions/dist_snippets.xml b/rkward/plugins/distributions/dist_snippets.xml
index d7d817b4..ed145514 100644
--- a/rkward/plugins/distributions/dist_snippets.xml
+++ b/rkward/plugins/distributions/dist_snippets.xml
@@ -8,7 +8,9 @@
 		<connect client="logp.visible" governor="do_d.not"/>
 		<connect client="logd.visible" governor="do_d"/>
 		<connect client="q.visible" governor="do_q.not"/>
+		<connect client="n_quantiles.visible" governor="do_q.not"/>
 		<connect client="p.visible" governor="do_q"/>
+		<connect client="n_probabilities.visible" governor="do_q"/>
 
 		<convert id="have_ui_note" mode="notequals" sources="ui_note.text" standard=""/>
 		<connect client="ui_note.visible" governor="have_ui_note"/>
@@ -22,6 +24,9 @@
 			<row>
 				<frame>
 					<column>
+						<spinbox required="true" type="integer" min="1" id="n_quantiles" initial="20" label="Number of quantiles"/>
+						<spinbox required="true" type="integer" min="1" id="n_probabilities" initial="20" label="Number of probabilities"/>
+						<text>- or -</text>
 						<matrix columns="1" allow_user_resize_columns="false" required="true" mode="real" fixed_width="true" min="0" id="q" label="Specify Quantiles (optional)"/>
 						<matrix columns="1" allow_user_resize_columns="false" required="true" mode="real" fixed_width="true" id="p" label="Specify Probabilities (optional)"/>
 						<checkbox id="logp" label="Logarithmic probabilities" />
@@ -38,5 +43,6 @@
 				</frame>
 			</row>
 			<text id="ui_note"/>
+			<preview id="preview" mode="output"/>
 	</snippet>
 </document>
diff --git a/rkward/plugins/distributions/tests/ad_test.js b/rkward/plugins/distributions/tests/ad_test.js
index ad58b018..9cb090ee 100755
--- a/rkward/plugins/distributions/tests/ad_test.js
+++ b/rkward/plugins/distributions/tests/ad_test.js
@@ -4,8 +4,10 @@ function testCall () {
 	return ("ad.test (var)");
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Anderson-Darling Normality Test") + ')\n');
-	echo ('\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Anderson-Darling Normality Test") + ')\n');
+		echo ('\n');
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/distributions/tests/ad_test.xml b/rkward/plugins/distributions/tests/ad_test.xml
index 498c680f..e3e37b37 100755
--- a/rkward/plugins/distributions/tests/ad_test.xml
+++ b/rkward/plugins/distributions/tests/ad_test.xml
@@ -14,6 +14,7 @@
 							Note: Objects must have at least 8 values
 						</text>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/distributions/tests/cvm_test.js b/rkward/plugins/distributions/tests/cvm_test.js
index 120665d7..9697ca84 100755
--- a/rkward/plugins/distributions/tests/cvm_test.js
+++ b/rkward/plugins/distributions/tests/cvm_test.js
@@ -4,7 +4,9 @@ function testCall () {
 	return ("cvm.test (var)");
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Cramer-von Mises Normality Test") + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Cramer-von Mises Normality Test") + ')\n');
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/distributions/tests/cvm_test.xml b/rkward/plugins/distributions/tests/cvm_test.xml
index 8d01057e..943153ae 100755
--- a/rkward/plugins/distributions/tests/cvm_test.xml
+++ b/rkward/plugins/distributions/tests/cvm_test.xml
@@ -14,6 +14,7 @@
 							Note: Objects must have at least 8 values
 						</text>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/distributions/tests/jb_test.js b/rkward/plugins/distributions/tests/jb_test.js
index a309c759..1ad6c8b8 100755
--- a/rkward/plugins/distributions/tests/jb_test.js
+++ b/rkward/plugins/distributions/tests/jb_test.js
@@ -15,7 +15,9 @@ preprocess = function () {
 	echo ('require (tseries)\n');	// instead of nortest
 }
 
-function printout () {
-	new Header (i18n ("Jarque-Bera Normality Test")).addFromUI ("excludenas").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Jarque-Bera Normality Test")).addFromUI ("excludenas").print ();
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/distributions/tests/jb_test.xml b/rkward/plugins/distributions/tests/jb_test.xml
index 3b49259b..9df2fad7 100755
--- a/rkward/plugins/distributions/tests/jb_test.xml
+++ b/rkward/plugins/distributions/tests/jb_test.xml
@@ -12,6 +12,7 @@
 					<column>
 						<varslot types="numeric" multi="true" id="x" source="vars" required="true" label="variable(s):"/>
 					</column>
+					<preview id="preview" mode="output"/>
 				</row>
 			</tab>
 			<tab label="Options">
diff --git a/rkward/plugins/distributions/tests/lillie_test.js b/rkward/plugins/distributions/tests/lillie_test.js
index 52f551f2..be5979d6 100755
--- a/rkward/plugins/distributions/tests/lillie_test.js
+++ b/rkward/plugins/distributions/tests/lillie_test.js
@@ -4,7 +4,9 @@ function testCall () {
 	return ("lillie.test (var)");
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Lilliefors (Kolmogorov-Smirnov) Normality test") + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Lilliefors (Kolmogorov-Smirnov) Normality test") + ')\n');
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/distributions/tests/lillie_test.xml b/rkward/plugins/distributions/tests/lillie_test.xml
index 78f3be15..e9b3fa3c 100755
--- a/rkward/plugins/distributions/tests/lillie_test.xml
+++ b/rkward/plugins/distributions/tests/lillie_test.xml
@@ -14,6 +14,7 @@
 							Note: Objects must have at least 5 values
 						</text>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/distributions/tests/pearson_test.js b/rkward/plugins/distributions/tests/pearson_test.js
index 51b74f13..e614636f 100755
--- a/rkward/plugins/distributions/tests/pearson_test.js
+++ b/rkward/plugins/distributions/tests/pearson_test.js
@@ -9,7 +9,9 @@ dfCall = function () {
 	        'results[i, ' + i18n ("degrees of freedom") + '] <- test$df\n');
 }
 
-function printout () {
-	new Header (i18n ("Pearson chi-square Normality Test")).addFromUI ("adjust").print ();
+function printout (is_preview) {
+	if (!is_preview) {
+		new Header (i18n ("Pearson chi-square Normality Test")).addFromUI ("adjust").print ();
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/distributions/tests/pearson_test.xml b/rkward/plugins/distributions/tests/pearson_test.xml
index 3d8969dc..e0cea085 100755
--- a/rkward/plugins/distributions/tests/pearson_test.xml
+++ b/rkward/plugins/distributions/tests/pearson_test.xml
@@ -14,6 +14,7 @@
 							Note: Objects must have at least 8 values
 						</text>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/distributions/tests/sf_test.js b/rkward/plugins/distributions/tests/sf_test.js
index 02afa992..a1ff5285 100755
--- a/rkward/plugins/distributions/tests/sf_test.js
+++ b/rkward/plugins/distributions/tests/sf_test.js
@@ -4,7 +4,9 @@ function testCall () {
 	return ("sf.test (var)");
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Shapiro-Francia Normality Test") + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Shapiro-Francia Normality Test") + ')\n');
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/distributions/tests/sf_test.xml b/rkward/plugins/distributions/tests/sf_test.xml
index 7a8463f0..1bf592f5 100755
--- a/rkward/plugins/distributions/tests/sf_test.xml
+++ b/rkward/plugins/distributions/tests/sf_test.xml
@@ -14,6 +14,7 @@
 							Note: Objects must have between 5 and 5000 values
 						</text>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
@@ -23,4 +24,4 @@
 			</tab>
 		</tabbook>
 	</dialog>
-</document>
\ No newline at end of file
+</document>
diff --git a/rkward/plugins/distributions/tests/shapiro_test.js b/rkward/plugins/distributions/tests/shapiro_test.js
index a0e4abda..e6ed1c05 100755
--- a/rkward/plugins/distributions/tests/shapiro_test.js
+++ b/rkward/plugins/distributions/tests/shapiro_test.js
@@ -6,7 +6,9 @@ function testCall () {
 	return ("shapiro.test (var)");
 }
 
-function printout () {
-	echo ('rk.header (' + i18n ("Shapiro-Wilk Normality Test") + ')\n');
+function printout (is_preview) {
+	if (!is_preview) {
+		echo ('rk.header (' + i18n ("Shapiro-Wilk Normality Test") + ')\n');
+	}
 	echo ('rk.results (results)\n');
 }
diff --git a/rkward/plugins/distributions/tests/shapiro_test.xml b/rkward/plugins/distributions/tests/shapiro_test.xml
index ed03862c..791a133b 100755
--- a/rkward/plugins/distributions/tests/shapiro_test.xml
+++ b/rkward/plugins/distributions/tests/shapiro_test.xml
@@ -14,6 +14,7 @@
 							Note: Objects must have between 3 and 5000 values
 						</text>
 						<stretch/>
+						<preview id="preview" mode="output"/>
 					</column>
 				</row>
 			</tab>
diff --git a/rkward/plugins/x11device/grid.xml b/rkward/plugins/x11device/grid.xml
index d8b29f2e..0d7431e1 100644
--- a/rkward/plugins/x11device/grid.xml
+++ b/rkward/plugins/x11device/grid.xml
@@ -52,6 +52,7 @@
 				</dropdown>
 				<embed id="col" component="rkward::color_chooser" label="Color"/>
 		</row>
+		<preview id="preview" mode="plot"/>
 	<stretch/>
 	<text id="trellis_note">Note: Not applicable for Trellis type devices! </text>
 	</dialog>
diff --git a/tests/distributions/beta_probabilities.rkcommands.R b/tests/distributions/beta_probabilities.rkcommands.R
index 6126f2e3..7d07f261 100644
--- a/tests/distributions/beta_probabilities.rkcommands.R
+++ b/tests/distributions/beta_probabilities.rkcommands.R
@@ -42,7 +42,7 @@ rk.results (data.frame ("Quantile"=q, "Density"=d, check.names=FALSE))
 })
 local({
 ## Compute
-p <- -21:0
+p <- -20:0
 q <- qbeta (p, shape1=1.0, shape2=2.0, ncp=0.0, log.p=TRUE)
 ## Print result
 rk.header ("Beta distribution", parameters=list("Shape 1"="1.0",
@@ -53,7 +53,7 @@ rk.results (data.frame ("log (Probability)"=p, "Quantile"=q, check.names=FALSE))
 })
 local({
 ## Compute
-p <- seq (0, 1, length.out=21)
+p <- seq (0, 1, length.out=20)
 q <- qbeta (p, shape1=1.0, shape2=2.0, ncp=0.0)
 ## Print result
 rk.header ("Beta distribution", parameters=list("Shape 1"="1.0",
diff --git a/tests/distributions/beta_probabilities.rkout b/tests/distributions/beta_probabilities.rkout
index a6a92874..89646f1b 100644
--- a/tests/distributions/beta_probabilities.rkout
+++ b/tests/distributions/beta_probabilities.rkout
@@ -130,7 +130,6 @@ DATE<br />
 DATE<br />
 <table border="1">
 <tr><td>log (Probability)</td><td>Quantile</td></tr>
-<tr><td>-21</td><td>3.7913e-10</td></tr>
 <tr><td>-20</td><td>1.0306e-09</td></tr>
 <tr><td>-19</td><td>2.8014e-09</td></tr>
 <tr><td>-18</td><td>7.6150e-09</td></tr>
@@ -163,27 +162,26 @@ DATE<br />
 DATE<br />
 <table border="1">
 <tr><td>Probability</td><td>Quantile</td></tr>
-<tr><td>0.00</td><td>0.000000</td></tr>
-<tr><td>0.05</td><td>0.025321</td></tr>
-<tr><td>0.10</td><td>0.051317</td></tr>
-<tr><td>0.15</td><td>0.078046</td></tr>
-<tr><td>0.20</td><td>0.105573</td></tr>
-<tr><td>0.25</td><td>0.133975</td></tr>
-<tr><td>0.30</td><td>0.163340</td></tr>
-<tr><td>0.35</td><td>0.193774</td></tr>
-<tr><td>0.40</td><td>0.225403</td></tr>
-<tr><td>0.45</td><td>0.258380</td></tr>
-<tr><td>0.50</td><td>0.292893</td></tr>
-<tr><td>0.55</td><td>0.329180</td></tr>
-<tr><td>0.60</td><td>0.367544</td></tr>
-<tr><td>0.65</td><td>0.408392</td></tr>
-<tr><td>0.70</td><td>0.452277</td></tr>
-<tr><td>0.75</td><td>0.500000</td></tr>
-<tr><td>0.80</td><td>0.552786</td></tr>
-<tr><td>0.85</td><td>0.612702</td></tr>
-<tr><td>0.90</td><td>0.683772</td></tr>
-<tr><td>0.95</td><td>0.776393</td></tr>
-<tr><td>1.00</td><td>1.000000</td></tr>
+<tr><td>0.000000</td><td>0.000000</td></tr>
+<tr><td>0.052632</td><td>0.026671</td></tr>
+<tr><td>0.105263</td><td>0.054095</td></tr>
+<tr><td>0.157895</td><td>0.082337</td></tr>
+<tr><td>0.210526</td><td>0.111477</td></tr>
+<tr><td>0.263158</td><td>0.141605</td></tr>
+<tr><td>0.315789</td><td>0.172830</td></tr>
+<tr><td>0.368421</td><td>0.205281</td></tr>
+<tr><td>0.421053</td><td>0.239114</td></tr>
+<tr><td>0.473684</td><td>0.274524</td></tr>
+<tr><td>0.526316</td><td>0.311753</td></tr>
+<tr><td>0.578947</td><td>0.351114</td></tr>
+<tr><td>0.631579</td><td>0.393023</td></tr>
+<tr><td>0.684211</td><td>0.438049</td></tr>
+<tr><td>0.736842</td><td>0.487011</td></tr>
+<tr><td>0.789474</td><td>0.541169</td></tr>
+<tr><td>0.842105</td><td>0.602640</td></tr>
+<tr><td>0.894737</td><td>0.675557</td></tr>
+<tr><td>0.947368</td><td>0.770584</td></tr>
+<tr><td>1.000000</td><td>1.000000</td></tr>
 </table>
 <h1>Beta distribution</h1>
 <h2>Parameters</h2>



More information about the rkward-tracker mailing list