Thanks, that's very helpful. Unfortunately Gtk2 is difficult to get running on a Mac, so I've been trying the gWidgetstcktk interface. It sounds like the behavior you're describing is exactly what I want, so it may just be a difference in the TGtk2 and tcltk event loops? In your example, can you think of a way to have a "cancel" button that would be able to kill reallySlowFunction() early? for the time being, I guess I'll just work on getting the gtk28 package from macports working... Thanks, Peter
On Feb 12, 2008, at 1:31 PM, John Verzani wrote: > Dear Peter, > > I think this issue has more to do with the event loop than gWidgets. > I've cc'ed Michael Lawrence, who may be able to shed more light on > this. Perhaps gIdleAdd from RGtk2 can work around this, but I didn't > get anywhere. My understanding is that the event loop is preventing > the console from being interactive, but not GTK events. So for > instance, the GUI in the following example is responsive, during the > execution, but the command line is not. > > library(gWidgets) > options("guiToolkit"="RGtk2") > > reallySlowFunction = function(n=20) { > for(i in 1:n) { > cat("z") > Sys.sleep(1) > } > cat("\n") > } > > > w <- gwindow("test") > g <- ggroup(cont=w, horizontal=FALSE) > b <- gbutton("click me", cont=g,handler = function(h,...) > reallySlowFunction()) > r <- gradio(1:3, cont=g, handler = function(h,...) print(svalue(h > $obj))) > > ## you can click the radio button and get a response, but not the > console > > > --John > > > Hello, > I'm trying to make a graphical interface for an R function > I've written. A common use for the function is to call it with > specific parameters, and then watch the output as it evolves. > There's not necessarily a logical stopping point, so I usually > use ctrl-C when I'm done to stop it. > I've made a gWidgets interface to the function that gets some > user info and then on a button click calls the function. The > gWidgets window, however, seems to be frozen as long as the > function is running, and the function output seems to be > happening in the "background" in my R session, so ctrl-C (esc > on the Mac GUI) does not work to stop it. I have to kill R > entirely to stop the process. > So after all that setup here is my question: > Is there some way to have a gWidgets window interrupt a > function that it has called via a widget handler? > Thanks, > Peter > > -- > John Verzani > CUNY/CSI Department of Mathematics > [EMAIL PROTECTED] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.