Description Usage Arguments Details Value Examples
A dialog is like an item group, in that it combines items
into a model. However, an item group is meant to be incorporated
into other GUIS, whereas a dialog creates its own window and
decorations. A dialog has default buttons, and options for adding
in menubars, toolbars, and statusbars. The choice of buttons can
be specified at construction.
1 2 |
items |
List of item instances to create the model for the
dialog object. May also be an item group
( |
title |
Title of dialog |
help_string |
String for default Help button |
buttons |
Character vector of button names. "OK","Cancel","Help","Undo","Redo" are some standard ones. "SPACE" and "SPRING" adjust the layout. |
... |
How to pass in other properties and methods of the dialog object. For example |
Methods:
The main method that a dialog has is
its OK_handler
which is a method called when the "OK"
button is clicked (one of the default buttons).
The getters and setters for the main value for an item are
get_NAME
and set_NAME
, where NAME
is the
item name. The name is specified when the item is constructed
(through its name
property) or more conveniently, taken
from the name of the component in the items
list that
defines the items for dialog or item group.
The method to_R
returns the items' values as a list (useful in combination with do.call
).
The method get_item_by_name
returns an item object by its
name. (Names should be unique.) This is useful if more properties
than the main one for an item are needed to be set. (The main
value is set via the setter.) The example shows how the validate
property of some items can be set.
The method is_valid
is TRUE
if all items validate and FALSE
otherwise.
The method model_value_changed(.)
is called whenever an
item property is changed either through the GUI. A dialog observes
itself.
For each item one can listen for changes with the method property_NAME_value_changed(., value, old_value)
.
Properties that are of interest:
status_text
If non-NULL, when GUI is drawn, a status bar will be made with this text. The method set_status_text
can be used to update the status
menu_list
A menu list to specify a menubar. (See gmenu
.)
toolbar_list
A menu list to specify a toolbar. (See gtoolbar
.)
buttons
A list of buttons names. The default is
c("OK", "SPACE", "Cancel", "Help")
. The special names
SPACE
and SPRING
adjust their positioning, otherwise
the values are button names. When a button is clicked, the handler
buttonname_handler
is called, where the buttonname is
stripped on non-alphanumeric characters. The basic buttons and
Redo
and Undo
have default handlers. Likely, only
OK_handler
will need redefining. The property
default_button
can be specified to make a button the
default one (so that it is activated when a user presses the enter
key).
Returns a proto object. See its show_help
method for details.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | ##
## a Basic example
dlg <- aDialog(items=list(
a = numericItem(0),
b = stringItem("a")
),
title="The title",
help_string="Help on this dialog"
)
## Not run: dlg$make_gui()
##
##
## example with model_value_changed
plotIt <- function(n, mean, sd, ...) hist(rnorm(n, mean, sd))
dlg <- aDialog(items=list(
n = integerItem(10),
mean = numericItem(0),
sd = numericItem(1),
out=graphicDeviceItem()
),
buttons="Cancel",
model_value_changed=function(.) if(.$is_valid()) do.call("plotIt", .$to_R())
)
##
## validation for n, sd
n <- dlg$get_item_by_name("n")
n$validate <- function(., rawvalue) {
if(rawvalue <= 1) stop("n must be positive integer") else rawvalue
}
sd <- dlg$get_item_by_name("sd")
sd$validate <- function(., rawvalue) {
if(rawvalue <- 0) stop("sd must be positive") else rawvalue
}
## Not run: dlg$make_gui()
##
##
## subtle point about scope. Proto methods can be defined via $<- or [[<- but there is a difference.
## $<- does not have lexical scope whereas [[<- does. The $<- might be more natural to type,
## but [[<- might be more natural to use. In this example,
## The "b" button does not work, as it can't find the
## function a -- the frame of evaluation is the environment dlg (not its enclosing frame).
## Thanks to Gabor for his help with this.
scope_example <- function() {
a <- function(...) print("hi")
dlg <- aDialog(items=list(),
buttons=c("a","b","c"),
a_handler=function(.) a(), ## like [[<-, not $<-
title="a, c work; b doesn't"
)
dlg$b_handler <- function(.) a() ## $<- has unbound variables found in dlg
dlg[['c_handler']] <- a ## [[<- uses lexical scope for unbound variables
}
## Not run: scope_example()
## See ?anItemGroup for an example of a modal dialog
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.