blob: b0f37b91ddbc9a0f34885facf234f9573d0330df [file] [log] [blame]
# Copyright (C) 2000-2008 The R Core Team
require(tcltk) || stop("tcltk support is absent")
require(stats)
local({
have_ttk <- as.character(tcl("info", "tclversion")) >= "8.5"
if(have_ttk) {
tkbutton <- ttkbutton
tkcheckbutton <- ttkcheckbutton
tkentry <- ttkentry
tkframe <- ttkframe
tklabel <- ttklabel
tkradiobutton <- ttkradiobutton
}
dialog.t.test <- function(){
tt <- tktoplevel()
tkwm.title(tt,"t test")
x.entry <- tkentry(tt, textvariable=xvar)
y.entry <- tkentry(tt, textvariable=yvar)
alt <- tclVar("two.sided")
done <- tclVar(0)
eqvar <- tclVar(0)
reset <- function()
{
tclvalue(xvar)<-""
tclvalue(yvar)<-""
tclvalue(alt)<-"two.sided"
tclvalue(eqvar)<-"0"
}
reset.but <- tkbutton(tt, text="Reset", command=reset)
submit.but <- tkbutton(tt, text="submit",
command=function()tclvalue(done)<-1)
build <- function()
{
## notice that tclvalue() is correct here, since it is the
## string representation of xvar and yvar that is being
## displayed in the entry fields
x <- parse(text=tclvalue(xvar))[[1]]
y <- parse(text=tclvalue(yvar))[[1]]
a <- tclvalue(alt)
vv <- as.logical(tclObj(eqvar))
substitute(t.test(x,y,alternative=a,var.equal=vv))
}
var.cbut <- tkcheckbutton(tt, text="Equal variance", variable=eqvar)
alt.rbuts <- tkframe(tt)
tkpack(tklabel(alt.rbuts, text="Alternative"))
for ( i in c("two.sided", "less", "greater")){
tmp <- tkradiobutton(alt.rbuts, text=i, variable=alt, value=i)
tkpack(tmp,anchor="w")
}
tkgrid(tklabel(tt,text="t-test"),columnspan=2)
tkgrid(tklabel(tt,text="x variable"), x.entry)
tkgrid(tklabel(tt,text="y variable"), y.entry)
tkgrid(var.cbut, alt.rbuts)
tkgrid(submit.but, reset.but)
if (tclvalue(alt)=="") tclvalue(alt)<-"two.sided"
## capture destroy (e.g. from window controls
## otherwise the tkwait hangs with nowhere to go
tkbind(tt, "<Destroy>", function()tclvalue(done)<-2)
tkwait.variable(done)
if(tclvalue(done)=="2") stop("aborted")
tkdestroy(tt)
cmd <- build()
cat("### Command executed via Tk ###\n")
cat(deparse(build()),sep="\n")
cat("### -----\n")
eval.parent(cmd)
}
cat("******************************************************\n",
"The source for this demo can be found in the file:\n",
file.path(system.file(package = "tcltk"), "demo", "tkttest.R"),
"\n******************************************************\n")
xvar <- tclVar("Ozone[Month==5]")
yvar <- tclVar("Ozone[Month==8]")
with(airquality, dialog.t.test())
})