R: Run Point-and-Click Interface

run.simplepanel {spatstat.geom} | R Documentation

## Run Point-and-Click Interface

### Description

Execute various operations in a simple point-and-click user interface.

### Usage

    run.simplepanel(P, popup=TRUE, verbose = FALSE)
    clear.simplepanel(P)
    redraw.simplepanel(P, verbose = FALSE)

### Arguments

`P` | An interaction panel (object of class `"simplepanel"`, created by `simplepanel` or `grow.simplepanel`).
`popup` | Logical. If `popup=TRUE` (the default), the panel will be displayed in a new popup window. If `popup=FALSE`, the panel will be displayed on the current graphics window if it already exists, and on a new window otherwise.
`verbose` | Logical. If `TRUE`, debugging information will be printed.

### Details

These commands enable the user to run a simple, robust, point-and-click interface to any R code. The interface is implemented using only the basic graphics package in R.

The argument `P` is an object of class `"simplepanel"`, created by `simplepanel` or `grow.simplepanel`, which specifies the graphics to be displayed and the actions to be performed when the user interacts with the panel.

The command `run.simplepanel(P)` activates the panel: the display is initialised and the graphics system waits for the user to click the panel. While the panel is active, the user can only interact with the panel; the R command line interface and the R GUI cannot be used. When the panel terminates (typically because the user clicked a button labelled Exit), control returns to the R command line interface and the R GUI.

The command `clear.simplepanel(P)` clears all the display elements in the panel, resulting in a blank display except for the title of the panel.

The command `redraw.simplepanel(P)` redraws all the buttons of the panel, according to the `redraw` functions contained in the panel.

If `popup=TRUE` (the default), `run.simplepanel` begins by calling `dev.new` so that a new popup window is created; this window is closed using `dev.off` when `run.simplepanel` terminates. If `popup=FALSE`, the panel will be displayed on the current graphics window if it already exists, and on a new window otherwise; this window is not closed when `run.simplepanel` terminates.

For more sophisticated control of the graphics focus (for example, to use the panel to control the display on another window), initialise the graphics devices yourself using `dev.new` or similar commands; save these devices in the shared environment `env` of the panel `P`; and write the click/redraw functions of `P` in such a way that they access these devices using `dev.set`. Then use `run.simplepanel` with `popup=FALSE`.

### Value

The return value of `run.simplepanel(P)` is the value returned by the `exit` function of `P`. See `simplepanel`.

The functions `clear.simplepanel` and `redraw.simplepanel` return `NULL`.

### Author(s)

Adrian Baddeley Adrian.Baddeley@curtin.edu.au

and Rolf Turner r.turner@auckland.ac.nz

### See Also

`simplepanel`

### Examples

      if(interactive()) {
        # make boxes (alternatively use layout.boxes())
        Bminus <- square(1)
        Bvalue <- shift(Bminus, c(1.2, 0))
        Bplus <- shift(Bvalue, c(1.2, 0))
        Bdone <- shift(Bplus, c(1.2, 0))
        myboxes <- list(Bminus, Bvalue, Bplus, Bdone)
        myB <- do.call(boundingbox,myboxes)

        # make environment containing an integer count
        myenv <- new.env()
        assign("answer", 0, envir=myenv)

        # what to do when finished: return the count.
        myexit <- function(e) { return(get("answer", envir=e)) }

        # button clicks
        # decrement the count
        Cminus <- function(e, xy) {
         ans <- get("answer", envir=e)
         assign("answer", ans - 1, envir=e)
         return(TRUE)
       }
       # display the count (clicking does nothing)
       Cvalue <- function(...) { TRUE }
       # increment the count
       Cplus <- function(e, xy) {
        ans <- get("answer", envir=e)
        assign("answer", ans + 1, envir=e)
        return(TRUE)
       }
       # quit button
       Cdone <- function(e, xy) { return(FALSE) }

       myclicks <- list("-"=Cminus,
                        value=Cvalue,
                        "+"=Cplus,
                        done=Cdone)

       # redraw the button that displays the current value of the count
       Rvalue <- function(button, nam, e) {
         plot(button, add=TRUE)
         ans <- get("answer", envir=e)
         text(centroid.owin(button), labels=ans)
         return(TRUE)
      }

      # make the panel
      P <- simplepanel("Counter",
                       B=myB, boxes=myboxes,
                       clicks=myclicks,
                       redraws = list(NULL, Rvalue, NULL, NULL),
                       exit=myexit, env=myenv)
      P

      run.simplepanel(P)
      }

[Package spatstat.geom version 2.2-0 Index]