Nothing
# wrappers for RGtk1 functions to RGtk2
# containers
gtkChildren <- gtkContainerGetChildren
gtkParent <- gtkWidgetGetParent
# gdk manuals
gdkGetWindowSize <- function(w) {
geom <- gdkWindowGetGeometry(w)
c(geom["width"], geom["height"])
}
# signals
gtkObjectSignalEmit <- function(obj, signal, ...) gSignalEmit(obj, signal, ...)
gtkObjectGetSignals <- gObjectGetSignals
gtkTypeGetSignals <- gTypeGetSignals
.GtkClasses <- "GtkWidget"
getSignalInfo <- function(classes = .GtkClasses, load = TRUE) {
sapply(classes, function(type) sapply(gtkTypeGetSignals(type), gtkSignalGetInfo))
}
gtkSignalGetInfo <- gSignalGetInfo
# args
gtkObjectGetArgInfo <- gObjectGetPropInfo
gtkObjectGetArgs <- function(obj, argNames) obj$get(argNames)
gtkObjectGetArg <-
function(obj, argName)
{
props <- obj$get(argName)
if (!is.null(props))
props <- props[[1]]
props
}
gtkObjectSetArgs <- function(obj, ..., .vals) obj$set(..., .vals)
names.GtkObject <- names.GObject
# dnd
gtkTargetEntry <- gtkTargetEntryNew <-
function(target, flags, info) as.GtkTargetEntry(list(target, flags, info))
# gtk text stuff ---- not supported!
gtkTextGetText <- function(w) gtkEditableGetChars(w, 0, -1)
gtkTextClearText <- function(w, start = 0, end = -1) gtkEditableDeleteText(w, start, end)
gtkTextSetText <- function(w, contents="", append=FALSE) {
if (append)
pos <- nchar(gtkTextGetText(w))
else {
gtkTextClearText(w)
pos <- 0
}
gtkEditableInsertText(w, contents, pos)
}
# flags
gtkWidgetGetFlags <- function(w) gtkObjectFlags(w)
# this function should not be necessary in well-structured code
findWidgetByType <-
#
# Recursively search a widget tree for the first occurence of
# a widget of the specified type.
#
function(win, gtkType = "GtkMenuBar", verbose = FALSE)
{
if(verbose)
print(class(win))
if(is.function(gtkType)) {
if(gtkType(win))
return(win)
} else if(as.character(gtkType) %in% class(win)) {
return(win)
}
if("GtkContainer" %in% class(win)) {
for(i in win$GetChildren()) {
tmp <- findWidgetByType(i, gtkType, verbose = verbose)
if(!is.null(tmp))
return(tmp)
}
}
return(NULL)
}
# CList convenience access - note that this widget is deprecated
gtkCListGetText <-
function(w, row, cols, zeroBased = TRUE)
{
checkPtrType(w, "GtkCList")
if(missing(cols) && is.matrix(row) && ncol(row) == 2)
which = row
else
which = cbind(row, cols)
if(!zeroBased)
which <- which - 1
storage.mode(which) <- "integer"
.Call("R_gtkCListGetText", w, as.integer(t(which)), PACKAGE = "RGtk2")
}
gtkCListSetText <-
function(w, row, cols, values, zeroBased = TRUE)
{
checkPtrType(w, "GtkCList")
if(missing(cols) && is.matrix(row) && ncol(row) == 2)
which = row
else
which = cbind(row, cols)
if(!zeroBased)
which <- which - 1
storage.mode(which) <- "integer"
values <- rep(as.character(values), length = nrow(which))
invisible(.Call("R_gtkCListSetText", w, which, values, PACKAGE = "RGtk2"))
}
# types
gtkObjectGetTypeName <- function(w)
{
checkPtrType(w, "GtkObject")
class(w)[1]
}
gtkObjectGetClasses <- function(w, check = TRUE)
{
if(check)
checkPtrType(w, "GtkObject")
class(w)
}
gtkTypeGetClasses <- gTypeGetAncestors
gtkObjectGetType <- function(w, check = TRUE)
{
if(check)
checkPtrType(w, "GtkObject")
as.GType(class(w)[1])
}
gtkGetType <- function(name) as.GType(name)
# widgets
gtkTopWindow <-
function(title="My Window", show = TRUE)
{
window <- gtkWindowNew("toplevel", show = show)
window$setTitle(title)
window
}
gtkAdd <-
function(parent, ...)
{
widgets <- list(...)
if(length(widgets) == 0)
stop("No widgets to add to parent")
if(!all(sapply(widgets, checkPtrType, "GtkWidget"))) {
stop("Non widget objects passed to gtkAdd()")
}
sapply(widgets, function(widget) parent$add(widget))
}
gtkShow <- function(..., all=T)
{
widgets <- list(...)
func <- gtkWidgetShow
if (all)
func <- gtkWidgetShowAll
sapply(widgets, func)
}
gtkAddCallback <- gtkObjectAddCallback <-
function(w, signal, f, data = NULL, object = TRUE, after = TRUE)
gSignalConnect(w, signal, f, data, after, object)
gtkObjectRemoveCallback <- gtkObjectDisconnectCallback <- gSignalHandlerDisconnect
gtkObjectBlockCallback <- gSignalHandlerBlock
gtkObjectUnblockCallback <- gSignalHandlerUnblock
gtkAddTimeout <- gTimeoutAdd
gtkRemoveTimeout <- gtkRemoveIdle <- gSourceRemove
gtkAddIdle <- gIdleAdd
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.