[R-gui] equivalent of "modal" widgets in gWidgetsRGtk2
Duncan Murdoch
murdoch at stats.uwo.ca
Fri Jul 18 20:55:50 CEST 2008
On 7/18/2008 2:25 PM, Sebastian P. Luque wrote:
> Hi,
>
> Hopefully this example shows what I'm trying to do:
>
> doPlot <- function() {
> updatePlot <- function(h, ...) plot(rnorm(10))
> ## collect locator() coordinates
> coords <- list()
> loc.fun <- function() {
> coords[[length(coords) + 1]] <<- locator(1)
> }
> tblist <- list(quit=list(handler=function(h, ...) dispose(window)),
> plot=list(handler=updatePlot),
> loc.but=list(handler=loc.fun))
> window <- gwindow("gWidgetsDensity")
> ## Little menu bar
> add(window, gtoolbar(tblist))
> bigGroup <- ggroup(container=window)
> add(bigGroup, ggraphics(), expand=TRUE)
> invisible(coords)
> }
>
> This has a tool bar with 3 buttons: quit, plot and a loc.but. The
> latter calls locator to collect some coordinates from the plot. The
> loc.but button tries to call locator() and collects results in a list;
> one element per click. So the function should not exit until the window
> is destroyed. The function tries to return the collected coordinates
> invisibly, but the problem is that it exits before anything is done
> through the GUI. In tcltk this was done with tkwait.window(<<base
> frame>>). How can this be done in gWidgetsRGtk2? Thanks.
You can probably put a loop at the end, something like this:
stop <- FALSE
while (!stop) Sys.sleep(0.5)
and have the button which stops the process set stop to TRUE.
Duncan Murdoch
More information about the R-SIG-GUI
mailing list