tkWidgets (version 1.50.0)

widgetRender: Render a Tk Widget from Given Specifications

Description

This function takes a list that specifies the appearance and behavior of a Tk widget and renders the widget accordingly.

Usage

widgetRender(iWidget, tkTitle)

Arguments

iWidget
list of lists that specifies the appearance and behavior of the widget to be rendered.
tkTitle
character string for the text to appear in the title bar of the widget to be rendered.

Value

A list of lists with the original values of the passed modified or unmodified depending on whether the cancel or end button pressed.

Details

The widget to be rendered normally consists of frames with three widgets arranged in a row. The first widget is normally a label for the name of the second widget. The second widget can be any type of widgets. The third widget is a button widget that defines some behavior to be associated with the second widget. For example, a button that will cause something to be displayed in the second widget when pressed. The third widget can be missing if no such association is required.

The widget to be rendered also has two buttons at the bottom part of the widgets. The followings are the name and behavior of the buttons:

Cancel -
The unmodified list passed to the function at the time of invocation will be returned when pressed.

End -
A modified version of the iWidget argument will be returned when pressed. The returned list has the same number of elements as the original one but with the values modified based on the entries in corresponding widgets items.

References

Peter Dalgaard (2001) A Primer on the R-Tcl/Tk Package; R News 1 (3), 27--31 http://CRAN.R-project.org/doc/Rnews/

See Also

fileBrowser, objectBrowser.

Examples

Run this code
# Create the list to be passed
pW1 <- list(Name="AAA", Value="bbb",
            toText=function(x) paste(x,collapse= ","), fromText=NULL,
            canEdit=TRUE,
            buttonFun = fileBrowser, buttonText = "Browse")

pW2 <- list(Name="BBB", Value="x,y,z",
            toText=function(x) paste(x, collapse=","), fromText=NULL,
            canEdit=TRUE, buttonFun = ls, buttonText = "List")

pW3 <- list(Name="CCC", Value="ccc",
            toText=function(x) paste(x, collapse = ","), fromText=NULL,
            canEdit=TRUE, buttonFun=NULL,  buttonText=NULL)

widget1 <- list(wList = list(a = pW1, b = pW2, c = pW3),
                preFun  = function() "Hi",
                postFun = function() "Bye")

# Call the function
if(interactive()){
    x <- widgetRender(widget1, "Test Widget")
    str(x)
}

Run the code above in your browser using DataCamp Workspace