RGtk2/ 0000755 0001762 0000144 00000000000 13232454047 011207 5 ustar ligges users RGtk2/inst/ 0000755 0001762 0000144 00000000000 12557255216 012172 5 ustar ligges users RGtk2/inst/examples/ 0000755 0001762 0000144 00000000000 12557255216 014010 5 ustar ligges users RGtk2/inst/examples/GtkCellRenderer.R 0000644 0001762 0000144 00000000261 12557255216 017146 0 ustar ligges users text_editing_started <- function(cell, editable, path, data)
{
checkPtrType(editable, "GtkEntry")
## ... create a GtkEntryCompletion
editable$setCompletion(completion)
}
RGtk2/inst/examples/GtkDialog-4.R 0000644 0001762 0000144 00000000244 12557255216 016141 0 ustar ligges users result <- dialog$run()
if (result == GtkResponseType["accept"])
do_application_specific_something()
else do_nothing_since_dialog_was_cancelled()
dialog$destroy()
RGtk2/inst/examples/GtkSpinButton-1.R 0000644 0001762 0000144 00000001044 12557255216 017043 0 ustar ligges users ## Provides a function to retrieve an integer value from a GtkSpinButton
## and creates a spin button to model percentage values.
grab_int_value <- function(a_spinner, user_data) {
return(a_spinner$getValueAsInt())
}
create_integer_spin_button <- function() {
spinner_adj <- gtkAdjustment(50.0, 0.0, 100.0, 1.0, 5.0, 5.0)
window <- gtkWindow("toplevel", show = F)
window$setBorderWidth(5)
## creates the spinner, with no decimal places
spinner <- gtkSpinner(spinner_adj, 1.0, 0)
window$add(spinner)
window$showAll()
}
RGtk2/inst/examples/GtkListStore-3.R 0000644 0001762 0000144 00000000074 12557255216 016672 0 ustar ligges users list_store$insert(iter, position)
list_store$set(iter, ...)
RGtk2/inst/examples/pango-PangoRenderer.R 0000644 0001762 0000144 00000000042 12557255216 017764 0 ustar ligges users renderer$partChanged("underline")
RGtk2/inst/examples/GtkRadioAction.R 0000644 0001762 0000144 00000000162 12557255216 016774 0 ustar ligges users while (more_actions) {
action <- gtkRadioAction(...)
action$setGroup(group)
group <- action$getGroup()
}
RGtk2/inst/examples/GCancellable.R 0000644 0001762 0000144 00000000575 12557255216 016436 0 ustar ligges users ## Make sure we don't do any unnecessary work if already cancelled
if (cancellable$setErrorIfCancelled())
return()
## Set up all the data needed to be able to
## handle cancellation of the operation
my_data <- myData(...)
id <- 0
if (!is.null(cancellable))
id <- cancellable$connect(cancelled_handler, data, NULL)
## cancellable operation here...
cancellable$disconnect(id)
RGtk2/inst/examples/GtkUIManager-3.R 0000644 0001762 0000144 00000000274 12557255216 016554 0 ustar ligges users window$add(vbox, show = F)
gSignalConnect(merge, "add_widget", add_widget, vbox)
merge$addUiFromFile("my-menus")
merge$addUiFromFile("my-toolbars")
merge$ensureUpdate()
window$showAll()
RGtk2/inst/examples/GtkAboutDialog-1.R 0000644 0001762 0000144 00000000172 12557255216 017131 0 ustar ligges users gtkShowAboutDialog(NULL, "name" = "ExampleCode", "logo" = example_logo,
"title" = "About ExampleCode")
RGtk2/inst/examples/GtkDialog-1.R 0000644 0001762 0000144 00000001067 12557255216 016142 0 ustar ligges users # Function to open a dialog box displaying the message provided.
quick_message <- function(message) {
## Create the widgets
dialog <- gtkDialog("Message", NULL, "destroy-with-parent",
"gtk-ok", GtkResponseType["none"],
show = FALSE)
label <- gtkLabel(message)
## Ensure that the dialog box is destroyed when the user responds.
gSignalConnect(dialog, "response", gtkWidgetDestroy)
## Add the label, and show everything we've added to the dialog.
dialog[["vbox"]]$add(label)
dialog$showAll()
}
RGtk2/inst/examples/GtkAccelLabel.R 0000644 0001762 0000144 00000001022 12557255216 016543 0 ustar ligges users ## Creating a simple menu item with an accelerator key.
## Create a GtkAccelGroup and add it to the window.
accel_group = gtkAccelGroup()
window$addAccelGroup(accel_group)
## Create the menu item
save_item = gtkMenuItem("Save")
menu$add(save_item)
## Now add the accelerator to the GtkMenuItem.
## It will be activated if the user types ctrl-s
## We just need to make sure we use the "visible" flag here to show it.
save_item$addAccelerator("activate", accel_group, GDK_S,
"control-mask", "visible")
RGtk2/inst/examples/GtkRecentManager-2.R 0000644 0001762 0000144 00000000301 12557255216 017445 0 ustar ligges users manager <- gtkRecentManagerGetDefault()
lookup <- manager$lookupItem(file_uri)
if (lookup$error)
warning("Could not find the file:", lookup$error$message)
else use_info_object(lookup$retval)
RGtk2/inst/examples/gtk-High-level-Printing-API-2.R 0000644 0001762 0000144 00000001065 12557255216 021242 0 ustar ligges users if (!is.null(settings))
op$setPrintSettings(settings)
if (!is.null(page_setup))
op$setDefaultPageSetup(page_setup)
gSignalConnect(op, "begin-print", begin_print)
gSignalConnect(op, "draw-page", draw_page)
res <- op$run("print-dialog", parent)
if (res[[1]] == "error") {
error_dialog = gtkMessageDialog(parent, "destroy-with-parent", "error",
"close", "Error printing file: ", res$error$message)
gSignalConnect(error_dialog, "response", gtkWidgetDestroy)
error_dialog$show()
} else if (res[[1]] == "apply")
settings = op$getPrintSettings()
RGtk2/inst/examples/GtkRadioMenuItem.R 0000644 0001762 0000144 00000000234 12557255216 017302 0 ustar ligges users group <- NULL
for (i in 1:5) {
item <- gtkRadioMenuItem(group, "This is an example")
group <- item$getGroup()
if (i == 1)
item$setActive(TRUE)
}
RGtk2/inst/examples/GMemoryOutputStream.R 0000644 0001762 0000144 00000000144 12557255216 020106 0 ustar ligges users ## a stream that can grow
stream <- gMemoryOutputStream(0)
## fixed-size streams are not supported
RGtk2/inst/examples/GtkRadioButton.R 0000644 0001762 0000144 00000001156 12557255216 017036 0 ustar ligges users # Creating two radio buttons
create_radio_buttons <- function() {
window <- gtkWindow("toplevel", show = F)
box <- gtkVBoxNew(TRUE, 2)
## Create a radio button with a GtkEntry widget
radio1 <- gtkRadioButton()
entry <- gtkEntry()
radio1$add(entry)
## Create a radio button with a label
radio2 <- gtkRadioButtonNewWithLabelFromWidget(radio1,
"I'm the second radio button.")
## Pack them into a box, then show all the widgets
box$packStart(radio1, TRUE, TRUE, 2)
box$packStart(radio2, TRUE, TRUE, 2)
window$add(box)
window$showAll()
}
RGtk2/inst/examples/GtkLabel-2.R 0000644 0001762 0000144 00000000177 12557255216 015764 0 ustar ligges users ## Pressing Alt-H will activate this button
button <- gtkButton()
label <- gtkLabelNewWithMnemonic("_Hello")
button$add(label)
RGtk2/inst/examples/pango-Cairo-Rendering.R 0000644 0001762 0000144 00000003232 12557255216 020205 0 ustar ligges users RADIUS <- 150
N.WORDS <- 10
FONT <- "Sans Bold 27"
draw.text <- function(widget, event, data)
{
width <- widget[["allocation"]][["width"]]
height <- widget[["allocation"]][["height"]]
device.radius <- min(width, height) / 2.
cr <- gdkCairoCreate(widget[["window"]])
## Center coordinates on the middle of the region we are drawing
cr$translate(device.radius + (width - 2 * device.radius) / 2,
device.radius + (height - 2 * device.radius) / 2)
cr$scale(device.radius / RADIUS, device.radius / RADIUS)
## Create a PangoLayout, set the font and text
layout <- pangoCairoCreateLayout(cr)
layout$setText("Text")
desc <- pangoFontDescriptionFromString(FONT)
layout$setFontDescription(desc)
## Draw the layout N.WORDS times in a circle
for (i in 1:N.WORDS) {
angle <- (360 * i) / N.WORDS
cr$save()
## Gradient from red at angle 60 to blue at angle 300
red <- (1 + cos((angle - 60) * pi / 180)) / 2
cr$setSourceRgb(red, 0, 1.0 - red)
cr$rotate(angle * pi / 180)
## Inform Pango to re-layout the text with the new transformation
pangoCairoUpdateLayout(cr, layout)
size <- layout$getSize()
cr$moveTo(- (size$width / .PangoScale) / 2, - RADIUS)
pangoCairoShowLayout(cr, layout)
cr$restore()
}
return(FALSE)
}
white <- c( 0, "0xffff", "0xffff", "0xffff" )
window <- gtkWindow("toplevel", show = F)
window$setTitle("Rotated Text")
drawing.area <- gtkDrawingArea()
window$add(drawing.area)
# This overrides the background color from the theme
drawing.area$modifyBg("normal", white)
gSignalConnect(drawing.area, "expose-event", draw.text)
window$showAll()
RGtk2/inst/examples/gio-Extension-Points-1.R 0000644 0001762 0000144 00000000171 12557255216 020272 0 ustar ligges users ## Register an extension point
ep <- gIoExtensionPointRegister("my-extension-point")
ep$setRequiredType(MY_TYPE_EXAMPLE)
RGtk2/inst/examples/GSocketConnectable.R 0000644 0001762 0000144 00000000520 12557255216 017625 0 ustar ligges users connect_to_host <- function(hostname, port, cancellable)
{
addr <- gNetworkAddress(hostname, port)
enumerator <- addr$enumerate()
## Try each sockaddr until we succeed.
conn <- NULL
while (is.null(conn) && (!is.null(sockaddr <- enumerator$next(cancellable))))
conn <- connect_to_sockaddr(sockaddr$retval)
conn
}
RGtk2/inst/examples/gdk-Windows-1.R 0000644 0001762 0000144 00000006115 12557255216 016471 0 ustar ligges users # The expose event handler for the event box.
#
# This function simply draws a transparency onto a widget on the area
# for which it receives expose events. This is intended to give the
# event box a "transparent" background.
#
# In order for this to work properly, the widget must have an RGBA
# colormap. The widget should also be set as app-paintable since it
# doesn't make sense for GTK+ to draw a background if we are drawing it
# (and because GTK+ might actually replace our transparency with its
# default background color).
#
transparent_expose <- function(widget, event)
{
cr <- gdkCairoCreate(widget$window)
cr$setOperator("clear")
gdkCairoRegion(cr, event$region)
cr$fill()
return(FALSE)
}
# The expose event handler for the window.
#
# This function performs the actual compositing of the event box onto
# the already-existing background of the window at 50% normal opacity.
#
# In this case we do not want app-paintable to be set on the widget
# since we want it to draw its own (red) background. Because of this,
# however, we must ensure that we set after = TRUE when connecting to the signal
# so that this handler is called after the red has been drawn. If it was
# called before then GTK would just blindly paint over our work.
#
# Note: if the child window has children, then you need a cairo 1.16
# feature to make this work correctly.
#
window_expose_event <- function(widget, event)
{
# get our child (in this case, the event box)
child <- widget$getChild()
# create a cairo context to draw to the window
cr <- gdkCairoCreate(widget$window)
# the source data is the (composited) event box
gdkCairoSetSourcePixmap(cr, child$window, child$allocation$x,
child$allocation$y)
# draw no more than our expose event intersects our child
region <- gdkRegionRectangle(child$allocation)
region$intersect(event$region)
gdkCairoRegion(cr, region)
cr$clip()
# composite, with a 50% opacity
cr$setOperator("over")
cr$paintWithAlpha(0.5)
return(FALSE)
}
# Make the widgets
button <- gtkButton("A Button")
event <- gtkEventBox()
window <- gtkWindow()
# Put a red background on the window
red <- gdkColorParse("red")$color
window$modifyBg("normal", red)
# Set the colormap for the event box.
# Must be done before the event box is realized.
#
screen <- event$getScreen()
rgba <- screen$getRgbaColormap()
event$setColormap(rgba)
# Set our event box to have a fully-transparent background
# drawn on it. Currently there is no way to simply tell GTK+
# that "transparency" is the background color for a widget.
#
event$setAppPaintable(TRUE)
gSignalConnect(event, "expose-event", transparent_expose)
# Put them inside one another
window$setBorderWidth(10)
window$add(event)
event$add(button)
# Set the event box GdkWindow to be composited.
# Obviously must be performed after event box is realized.
#
event$window$setComposited(TRUE)
# Set up the compositing handler.
# Note that we do _after_ so that the normal (red) background is drawn
# by gtk before our compositing occurs.
#
gSignalConnect(window, "expose-event", window_expose_event, after = TRUE)
RGtk2/inst/examples/GtkSpinButton-2.R 0000644 0001762 0000144 00000001032 12557255216 017041 0 ustar ligges users # Provides a function to retrieve a floating point value from a
# GtkSpinButton, and creates a high precision spin button.
grab_value <- function(a_spinner, user_data) {
return(a_spinner$getValue())
}
create_floating_spin_button <- function() {
spinner_adj <- gtkAdjustment(2.500, 0.0, 5.0, 0.001, 0.1, 0.1)
window <- gtkWindow("toplevel", show = F)
window$setBorderWidth(5)
## creates the spinner, with three decimal places
spinner <- gtkSpinner(spinner_adj, 0.001, 3)
window$add(spinner)
window$showAll()
}
RGtk2/inst/examples/GtkMenu-1.R 0000644 0001762 0000144 00000000234 12557255216 015642 0 ustar ligges users ## connect our handler which will popup the menu
gSignalConnect(window, "button_press_event", my_popup_handler, menu,
user.data.first=TRUE)
RGtk2/inst/examples/cairo-context-2.R 0000644 0001762 0000144 00000000053 12557255216 017047 0 ustar ligges users group <- cr$popGroup()
cr$setSource(group)
RGtk2/inst/examples/GtkIconView.R 0000644 0001762 0000144 00000000060 12557255216 016320 0 ustar ligges users # You don't have to free anything with RGtk2...
RGtk2/inst/examples/gdk-GdkRGB.R 0000644 0001762 0000144 00000001536 12557255216 015743 0 ustar ligges users # Simple example of using GdkRGB with RGtk2
IMAGE_WIDTH <- 256
IMAGE_HEIGHT <- 256
rgb_example <- function()
{
window <- gtkWindow("toplevel", show = F)
darea <- gtkDrawingArea()
darea$setSizeRequest(IMAGE_WIDTH, IMAGE_HEIGHT)
window$add(darea)
# Set up the RGB buffer.
x <- rep(0:(IMAGE_WIDTH-1), IMAGE_HEIGHT)
y <- rep(0:(IMAGE_HEIGHT-1), IMAGE_WIDTH, each = T)
red <- x - x %% 32
green <- (x / 32) * 4 + y - y %% 32
blue <- y - y %% 32
buf <- rbind(red, green, blue)
# connect to expose event
gSignalConnect(darea, "expose-event", on_darea_expose, buf)
window$showAll()
}
on_darea_expose <- function(widget, event, buf)
{
gdkDrawRgbImage(widget[["window"]],
widget[["style"]][["fgGc"]][[GtkStateType["normal"]+1]],
0, 0, IMAGE_WIDTH, IMAGE_HEIGHT, "max", buf, IMAGE_WIDTH * 3)
}
RGtk2/inst/examples/GtkFileSelection.R 0000644 0001762 0000144 00000001711 12557255216 017326 0 ustar ligges users # Getting a filename from a user
# Note how much easier GtkFileChooser is to use
store_filename <- function(widget, file_selector) {
selected_filename <- file_selector$getFilename();
print(paste("Selected filename:", selected_filename))
}
create_file_selection <- function() {
## Create the selector
file_selector <- gtkFileSelection("Please select a file for editing.",
show = FALSE)
gSignalConnect(file_selector[["ok_button"]], "clicked", store_filename,
file_selector)
## Ensure that the dialog box is destroyed when the user clicks a button.
gSignalConnect(file_selector[["ok_button"]], "clicked", gtkWidgetDestroy,
file_selector, user.data.first = TRUE)
gSignalConnect(file_selector[["cancel_button"]], "clicked", gtkWidgetDestroy,
file_selector, user.data.first = TRUE)
## Display that dialog
file_selector$show()
}
RGtk2/inst/examples/GtkNotebook-2.R 0000644 0001762 0000144 00000001017 12557255216 016517 0 ustar ligges users on_drop_zone_drag_data_received <- function(widget, context, x, y,
selection_data, info, time,
user_data)
{
notebook <- context$getWidget()
child <- selection_data$data
# unfortunately, it's not possible to actually use 'child' - there
# would need to be a way to derefernce it and make an externalptr
# if you need this functionality, please let the RGtk2 maintainer know.
# process_widget(child)
# notebook$remove(child)
}
RGtk2/inst/examples/gdk-Windows-2.R 0000644 0001762 0000144 00000000262 12557255216 016467 0 ustar ligges users fields <- c("base.width", "base.height", "min.width", "min.height", "width.inc",
"height.inc")
hints[fields] <- char_width
toplevel$setGeometryHints(terminal, hints)
RGtk2/inst/examples/cairo-version-info-5.R 0000644 0001762 0000144 00000000153 12557255216 020005 0 ustar ligges users # This function is not that useful in R.
# Instead, please use cairoVersionString() with compareVersion().
RGtk2/inst/examples/gdk-Cursors.R 0000644 0001762 0000144 00000002140 12557255216 016333 0 ustar ligges users ######
# Creating a custom cursor
######
## This data is in X bitmap format, and can be created with the 'bitmap'
## utility in X11
cursor1_width <- 16
cursor1_height <- 16
cursor1_bits <- c(0x80, 0x01, 0x40, 0x02, 0x20, 0x04, 0x10, 0x08, 0x08, 0x10,
0x04, 0x20, 0x82, 0x41, 0x41, 0x82, 0x41, 0x82, 0x82, 0x41,
0x04, 0x20, 0x08, 0x10, 0x10, 0x08, 0x20, 0x04, 0x40, 0x02,
0x80, 0x01)
cursor1mask_bits <- c(0x80, 0x01, 0xc0, 0x03, 0x60, 0x06, 0x30, 0x0c, 0x18,
0x18, 0x8c, 0x31, 0xc6, 0x63, 0x63, 0xc6, 0x63, 0xc6,
0xc6, 0x63, 0x8c, 0x31, 0x18, 0x18, 0x30, 0x0c, 0x60,
0x06, 0xc0, 0x03, 0x80, 0x01)
fg <- c(65535, 0, 0) # Red.
bg <- c(0, 0, 65535) # Blue.
source <- gdkBitmapCreateFromData(NULL, cursor1_bits,
cursor1_width, cursor1_height)
mask <- gdkBitmapCreateFromData(NULL, cursor1mask_bits,
cursor1_width, cursor1_height)
cursor <- gdkCursorNewFromPixmap(source, mask, fg, bg, 8, 8)
widget[["window"]]$setCursor(cursor)
RGtk2/inst/examples/cairo-cairo-t-1.R 0000644 0001762 0000144 00000000226 12557255216 016722 0 ustar ligges users cr$pushGroup()
cr$setSource(fill_pattern)
cr$fillPreserve()
cr$setSource(stroke_pattern)
cr$stroke()
cr$popGroupToSource(cr)
cr$paintWithAlpha(alpha)
RGtk2/inst/examples/GtkLabel-3.R 0000644 0001762 0000144 00000000131 12557255216 015753 0 ustar ligges users ## Pressing Alt+H will activate this button
button <- gtkButtonNewWithMnemonic("_Hello")
RGtk2/inst/examples/GtkDialog-5.R 0000644 0001762 0000144 00000000363 12557255216 016144 0 ustar ligges users cancel_button <- dialog$addButton("gtk-cancel", "cancel")
ok_button <- dialog$addButton("gtk-ok", "ok")
ok_button$grabDefault()
help_button <- dialog$addButton("gtk-help", "help")
dialog$setAlternativeButtonOrder("ok", "cancel", "help")
RGtk2/inst/examples/GAppInfo.R 0000644 0001762 0000144 00000000310 12557255216 015570 0 ustar ligges users file <- gFileNewForCommandlineArg(uri_from_commandline)
uri <- file$getUri()
identical(uri, uri_from_commandline) # FALSE
if (file$hasUriScheme("cdda"))
{
## do something special with uri
}
RGtk2/inst/examples/GtkLabel-5.R 0000644 0001762 0000144 00000000104 12557255216 015755 0 ustar ligges users label <- gtkLabelNew()
label$setMarkup("Small text")
RGtk2/inst/examples/GtkFileChooserButton.R 0000644 0001762 0000144 00000000220 12557255216 020171 0 ustar ligges users # Create a button to let the user select a file in /etc
button <- gtkFileChooserButton("Select a file", "open")
button$setCurrentFolder("/etc")
RGtk2/inst/examples/GtkMessageDialog-4.R 0000644 0001762 0000144 00000000050 12557255216 017441 0 ustar ligges users # GMarkup is not yet supported in RGtk2
RGtk2/inst/examples/GtkCombo-1.R 0000644 0001762 0000144 00000000315 12557255216 015775 0 ustar ligges users ######
# Creating a combobox with simple text items
######
items <- c("First Item", "Second Item", "Third Item", "Fourth Item",
"Fifth Item")
combo <- gtkCombo()
combo$setPopdownStrings(items)
RGtk2/inst/examples/cairo-version-info-4.R 0000644 0001762 0000144 00000000322 12557255216 020002 0 ustar ligges users # R users should not be concerned with compile-time checking, but at runtime:
if (compareVersion(cairoVersionString(), "1.0.0") == 1)
cat("Running with suitable cairo version:", cairoVersionString(), "\n")
RGtk2/inst/examples/cairo-Patterns-1.R 0000644 0001762 0000144 00000000105 12557255216 017160 0 ustar ligges users cr$setSourceSurface(image, x, y)
cr$getSource()$setFilter("nearest")
RGtk2/inst/examples/cairo-Patterns-2.R 0000644 0001762 0000144 00000000113 12557255216 017160 0 ustar ligges users matrix <- cairoMatrixInitScale(0.5, 0.5)$matrix
pattern$setMatrix(matrix)
RGtk2/inst/examples/gdk-pixbuf-scaling.R 0000644 0001762 0000144 00000001533 12557255216 017613 0 ustar ligges users expose_cb <- function(widget, event, data)
{
dest <- gdkPixbuf(color = "rgb", has.alpha = FALSE, bits = 8,
w = event[["area"]]$width, h = event[["area"]]$height)
area <- event[["area"]]
pixbuf$compositeColor(dest, 0, 0, area$width, area$height,
-area$x, -area$y,
widget[["allocation"]]$width / pixbuf$getWidth(),
widget[["allocation"]]$height / pixbuf$getHeight(),
"bilinear", 255,
area$x, area$y, 16, 0xaaaaaa, 0x555555)
dest$renderToDrawable(widget[["window"]],
widget[["style"]][["fgGc"]][[GtkStateType["normal"]+1]],
0, 0, area$x, area$y,
area$width, area$height,
"normal", area$x, area$y)
return(TRUE)
}
RGtk2/inst/examples/GtkLabel-7.R 0000644 0001762 0000144 00000000044 12557255216 015762 0 ustar ligges users ## RGtk2 has no support for GMarkup
RGtk2/inst/examples/GtkToggleButton.R 0000644 0001762 0000144 00000001045 12557255216 017216 0 ustar ligges users # Let's make two toggle buttons
make_toggles <- function() {
dialog <- gtkDialog(show = F)
toggle1 <- gtkToggleButton("Hi, i'm a toggle button.")
## Makes this toggle button invisible
toggle1$setMode(TRUE)
gSignalConnect(toggle1, "toggled", output_state)
dialog[["actionArea"]]$packStart(toggle1, FALSE, FALSE, 2)
toggle2 <- gtkToggleButton("Hi, i'm another button.")
toggle2$setMode(FALSE)
gSignalConnect(toggle2, "toggled", output_state)
dialog[["actionArea"]]$packStart(toggle2, FALSE, FALSE, 2)
dialog$showAll()
}
RGtk2/inst/examples/GtkTreeModel-1.R 0000644 0001762 0000144 00000000673 12557255216 016625 0 ustar ligges users ## Acquiring a GtkTreeIter
## Three ways of getting the iter pointing to the location
## get the iterator from a string
model$getIterFromString("3:2:5")$iter
## get the iterator from a path
path <- gtkTreePathNewFromString("3:2:5")
model$getIter(path)$iter
## walk the tree to find the iterator
parent_iter <- model$iterNthChild(NULL, 3)$iter
parent_iter <- model$iterNthChild(parent_iter, 2)$iter
model$iterNthChild(parent_iter, 5)$iter
RGtk2/inst/examples/gtk-High-level-Printing-API-1.R 0000644 0001762 0000144 00000000521 12557255216 021235 0 ustar ligges users settings <- NULL
print_something <-
{
op <- gtkPrintOperation()
if (!is.null(settings))
op$setPrintSettings(settings)
gSignalConnect(op, "begin_print", begin_print)
gSignalConnect(op, "draw_page", draw_page)
res <- op$run("print-dialog", main_window)[[1]]
if (res == "apply")
settings <- op$getPrintSettings()
}
RGtk2/inst/examples/GtkFileChooser-1.R 0000644 0001762 0000144 00000000652 12557255216 017144 0 ustar ligges users update_preview_cb <- function(file_chooser, preview)
{
filename <- file_chooser$getPreviewFilename()
pixbuf <- gdkPixbuf(file=filename, w=128, h=128)[[1]]
have_preview <- !is.null(pixbuf)
preview$setFromPixbuf(pixbuf)
file_chooser$setPreviewWidgetActive(have_preview)
}
preview <- gtkImage()
my_file_chooser$setPreviewWidget(preview)
gSignalConnect(my_file_chooser, "update-preview", update_preview_cb, preview)
RGtk2/inst/examples/pango-Scripts-and-Languages.R 0000644 0001762 0000144 00000000061 12557255216 021325 0 ustar ligges users pangoLanguageFromString("xx")$getSampleString()
RGtk2/inst/examples/GVolume-1.R 0000644 0001762 0000144 00000000233 12557255216 015645 0 ustar ligges users mount <- volume$getMount() ## mounted, so never NULL
mount_root <- mount$getRoot()
volume_activation_root <- volume$getActivationRoot() ## assume not NULL
RGtk2/inst/examples/GtkEditable.R 0000644 0001762 0000144 00000000336 12557255216 016314 0 ustar ligges users insert_text_handler <- function(editable, text, length, position, id)
{
result <- toupper(text)
gSignalHandlerBlock(editable, id)
editable$insertText(result, length, position)
gSignalHandlerUnblock(editable, id)
}
RGtk2/inst/examples/GtkPageSetup.R 0000644 0001762 0000144 00000000377 12557255216 016505 0 ustar ligges users do_page_setup <- function()
{
if (is.null(settings))
settings <- gtkPrintSettings()
new_page_setup <- gtkPrintRunPageSetupDialog(main_window, page_setup,
settings)
page_setup <- new_page_setup
}
RGtk2/inst/examples/GtkRecentChooserDialog.R 0000644 0001762 0000144 00000000514 12557255216 020464 0 ustar ligges users dialog <- gtkRecentChooserDialog("Recent Documents", parent_window,
"gtk-cancel", GtkResponseType["cancel"],
"gtk-open", GtkResponseType["accept"])
if (dialog$run() == GtkResponseType["accept"])
{
info <- dialog$getCurrentItem()
open_file(info$getUri())
}
RGtk2/inst/examples/GtkRecentManager-1.R 0000644 0001762 0000144 00000000103 12557255216 017444 0 ustar ligges users manager <- gtkRecentManagerGetDefault()
manager$addItem(file_uri)
RGtk2/inst/examples/gtk-gtkfilefilter.R 0000644 0001762 0000144 00000000061 12557255216 017546 0 ustar ligges users filter <- gtkFileFilter()
filter$addPattern("*")
RGtk2/inst/examples/GtkTreeStore-2.R 0000644 0001762 0000144 00000000074 12557255216 016655 0 ustar ligges users tree_store$insert(iter, position)
tree_store$set(iter, ...)
RGtk2/inst/examples/GtkWidget-3.R 0000644 0001762 0000144 00000000170 12557255216 016162 0 ustar ligges users toplevel <- widget$getToplevel()
if (toplevel$flags() & GtkWidgetFlags["toplevel"])
{
# Perform action on toplevel.
}
RGtk2/inst/examples/GtkTreeModelSort-1.R 0000644 0001762 0000144 00000000673 12557255216 017475 0 ustar ligges users ## Using a GtkTreeModel sort
## get the child model
child_model <- get_my_model()
## Create the first tree
sort_model1 <- gtkTreeModelSort(child_model)
tree_view1 <- gtkTreeView(sort_model1)
## Create the second tree
sort_model2 <- gtkTreeModelSort(child_model)
tree_view2 <- gtkTreeView(sort_model2)
## Now we can sort the two models independently
sort_model1$setSortColumnId(0, "ascending")
sort_model2$setSortColumnId(0, "descending")
RGtk2/inst/examples/cairo-cairo-t-2.R 0000644 0001762 0000144 00000000053 12557255216 016721 0 ustar ligges users group <- cr$popGroup()
cr$setSource(group)
RGtk2/inst/examples/GtkScale.R 0000644 0001762 0000144 00000000203 12557255216 015623 0 ustar ligges users format_value_callback <- function(scale, value)
{
return(paste("-->", format(value, nsmall=scale$getDigits()), "<--"), sep="")
}
RGtk2/inst/examples/GtkSocket.R 0000644 0001762 0000144 00000000340 12557255216 016026 0 ustar ligges users socket <- gtkSocket()
parent$add(socket)
## The following call is only necessary if one of
## the ancestors of the socket is not yet visible.
socket$realize()
print(paste("The ID of the sockets window is", socket$getId()))
RGtk2/inst/examples/cairo-scaled-font-1.R 0000644 0001762 0000144 00000000446 12557255216 017567 0 ustar ligges users glyphs <- scaled_font$textToGlyphs(x, y, utf8, utf8_len)
if (glyphs$retval == CairoStatus["success"])
cr$showTextGlyphs(utf8, utf8_len,
glyphs$glyphs, glyphs$num_glyphs,
glyphs$clusters, glyphs$num_clusters,
glyphs$cluster_flags)
RGtk2/inst/examples/GtkMessageDialog-2.R 0000644 0001762 0000144 00000000503 12557255216 017442 0 ustar ligges users dialog <- gtkMessageDialog(main_application_window, "destroy-with-parent",
"error", "close", "Error loading file '", filename,
"': ", message)
# Destroy the dialog when the user responds to it (e.g. clicks a button)
gSignalConnect(dialog, "response", gtkWidgetDestroy)
RGtk2/inst/examples/GtkImage-1.R 0000644 0001762 0000144 00000000160 12557255216 015756 0 ustar ligges users image <- gtkImageNewFromFile("myfile.png")
# or, perhaps more conveniently
image <- gtkImage(file="myfile.png")
RGtk2/inst/examples/GtkFileChooser-2.R 0000644 0001762 0000144 00000000127 12557255216 017142 0 ustar ligges users toggle <- gtkCheckButton("Open file read-only")
my_file_chooser$setExtraWidget(toggle)
RGtk2/inst/examples/GtkWidget-4.R 0000644 0001762 0000144 00000000267 12557255216 016172 0 ustar ligges users gtkWidgetPushCompositeChild()
hscrollbar <- gtkHScrollbarNew(hadjustment)
hscrollbar$setCompositeName("hscrollbar")
gtkWidgetPopCompositeChild()
hscrollbar$setParent(scrolled_window)
RGtk2/inst/examples/gdk-Application-launching.R 0000644 0001762 0000144 00000000232 12557255216 021104 0 ustar ligges users context <- gdkAppLaunchContext()
context$setScreen(my_screen)
context$setTimestamp(event$time)
gAppInfoLaunchDefaultForUri("http://www.gtk.org", context)
RGtk2/inst/examples/GtkTreeViewColumn.R 0000644 0001762 0000144 00000000240 12557255216 017505 0 ustar ligges users renderer <- gtkCellRendererText()
column <- gtkTreeViewColumn("Title", renderer, "text" = TEXT_COLUMN,
"foreground" = COLOR_COLUMN)
RGtk2/inst/examples/gtk-Resource-Files-12.R 0000644 0001762 0000144 00000000220 12557255216 017757 0 ustar ligges users path <- widget$path()$path
class_path <- widget$classPath()$path
gtkRcGetStyleByPaths(widget$getSettings(), path, class_path, class(widget)[1])
RGtk2/inst/examples/pango-pango-renderer.R 0000644 0001762 0000144 00000000065 12557255216 020146 0 ustar ligges users renderer$partChanged(PangoRendererPart["underline"])
RGtk2/inst/examples/GtkActivatable.R 0000644 0001762 0000144 00000004023 12557255216 017017 0 ustar ligges users gClass("FooBar", "GtkButton",
.prop_overrides=c("related-action", "use-action-appearance"),
GObject=list(
dispose=function(object) {
object$doSetRelatedAction(NULL)
},
set_property=function(object, id, value, pspec) {
if (pspec$name == "related-action") {
assignProp(object, pspec, value)
object$doSetRelatedAction(value)
} else if (pspec$name == "use-action-appearance") {
if (value != getProp(pspec)) {
assignProp(object, pspec, value)
object$syncActionProperties(object$"related-action")
}
} else {
warning("invalid property: ", pspec$name)
}
}
),
GtkActivatable=list(
sync_action_properties=function(activatable, action) {
if (is.null(action)) {
return()
}
activatable$visible <- action$visible
activatable$sensitive <- action$sensitive
## ...
if (activatable$use_action_appearance) {
if (!is.null(action$stock_id)) {
activatable$label <- action$stock_id
} else {
activatable$label <- action$label
}
activatable$use_stock <- !is.null(action$stock_id)
}
## ...
},
update=function(activatable, action, property_name) {
if (property_name == "visible") {
activatable$visible <- action$visible
} else if (property_name == "sensitive") {
activatable$sensitive <- action$sensitive
}
## ...
if (activatable$use_action_appearance) {
if (property_name == "stock-id") {
activatable$label <- action$stock_id
activatable$use_stock <- !is.null(action$stock_id)
} else if (property_name == "label") {
activatable$label <- action$label
}
}
## ...
}
))
RGtk2/inst/examples/gdk-Pango-Interaction.R 0000644 0001762 0000144 00000004706 12557255216 020226 0 ustar ligges users window <- NULL
RADIUS <- 150
N.WORDS <- 10
FONT <- "Sans Bold 27"
rotated.text.expose.event <- function(widget, event, data)
{
## matrix describing font transformation, initialize to identity
matrix <- pangoMatrixInit()
width <- widget[["allocation"]][["width"]]
height <- widget[["allocation"]][["height"]]
## Get the default renderer for the screen, and set it up for drawing
renderer <- gdkPangoRendererGetDefault(widget$getScreen())
renderer$setDrawable(widget[["window"]])
renderer$setGc(widget[["style"]][["blackGc"]])
## Set up a transformation matrix so that the user space coordinates for
## the centered square where we draw are [-RADIUS, RADIUS], [-RADIUS, RADIUS]
## We first center, then change the scale
device.radius <- min(width, height) / 2.
matrix$translate(device.radius + (width - 2 * device.radius) / 2,
device.radius + (height - 2 * device.radius) / 2)
matrix$scale(device.radius / RADIUS, device.radius / RADIUS)
## Create a PangoLayout, set the font and text
context <- widget$createPangoContext()
layout <- pangoLayoutNew(context)
layout$setText("Text")
desc <- pangoFontDescriptionFromString(FONT)
layout$setFontDescription(desc)
# Draw the layout N.WORDS times in a circle
for (i in 1:N.WORDS) {
rotated.matrix <- matrix$copy()
angle <- (360 * i) / N.WORDS
color <- list()
## Gradient from red at angle 60 to blue at angle 300
color$red <- 65535 * (1 + cos((angle - 60) * pi / 180)) / 2
color$green <- 0
color$blue <- 65535 - color$red
renderer$setOverrideColor("foreground", color)
rotated.matrix$rotate(angle)
context$setMatrix(rotated.matrix)
## Inform Pango to re-layout the text with the new transformation matrix
layout$contextChanged()
size <- layout$getSize()
renderer$drawLayout(layout, - size$width / 2, - RADIUS * 1024)
}
## Clean up default renderer, since it is shared
renderer$setOverrideColor("foreground", NULL)
renderer$setDrawable(NULL)
renderer$setGc(NULL)
return(FALSE)
}
white <- c( 0, "0xffff", "0xffff", "0xffff" )
window <- gtkWindowNew("toplevel")
window$setTitle("Rotated Text")
drawing.area <- gtkDrawingAreaNew()
window$add(drawing.area)
# This overrides the background color from the theme
drawing.area$modifyBg("normal", white)
gSignalConnect(drawing.area, "expose-event", rotated.text.expose.event)
window$setDefaultSize(2 * RADIUS, 2 * RADIUS)
window$showAll()
RGtk2/inst/examples/GtkLabel-6.R 0000644 0001762 0000144 00000000233 12557255216 015761 0 ustar ligges users label$setMarkup("Go to the <a href=\"http://www.gtk.org\" title=\"<i>Our&/i> website\">GTK+ website</a> for more...")
RGtk2/inst/examples/gdk-Keyboard-Handling-1.R 0000644 0001762 0000144 00000001002 12557255216 020307 0 ustar ligges users # We want to ignore irrelevant modifiers like ScrollLock
all_accels_mask <- GdkModifierType["control-mask"] |
GdkModifierType["shift-mask"] | GdkModifierType["mod1-mask"]
state <- gdkKeymapTranslateKeyboardState(keymap, event[["hardware_keycode"]],
event[["state"]], event[["group"]])
unconsumed <- all_accels_mask & event[["state"]] & !as.flag(state$consumed)
if (state$keyval == .gdkPlus && unconsumed == GdkModifierType["control-mask"])
print("Control was pressed")
RGtk2/inst/examples/GtkDialog-3.R 0000644 0001762 0000144 00000001022 12557255216 016133 0 ustar ligges users # Explicit
dialog <-
gtkDialogNewWithButtons("My dialog", main_app_window,
c("modal", "destroy-with-parent"),
"gtk-ok", GtkResponseType["accept"],
"gtk-cancel", GtkResponseType["reject"])
## Also via collapsed constructor
dialog <- gtkDialog("My dialog", main_app_window,
c("modal", "destroy-with-parent"),
"gtk-ok", GtkResponseType["accept"],
"gtk-cancel", GtkResponseType["reject"])
RGtk2/inst/examples/cairo-pattern-1.R 0000644 0001762 0000144 00000000123 12557255216 017035 0 ustar ligges users cr$setSourceSurface(image, x, y)
cr$getSource()$setFilter(CairoFilter["nearest"])
RGtk2/inst/examples/GtkExpander.R 0000644 0001762 0000144 00000000444 12557255216 016351 0 ustar ligges users expander <- gtkExpanderNewWithMnemonic("_More Options")
gSignalConnect(expander, "notify::expanded", expander_callback)
...
expander_callback <- (expander, param_spec, user_data)
{
if (expander$getExpanded()) {
# Show or create widgets
} else {
# Hide or destroy widgets
}
}
RGtk2/inst/examples/cairo-ps-surface.R 0000644 0001762 0000144 00000001212 12557255216 017272 0 ustar ligges users surface <- cairoPsSurfaceCreate(filename, width, height)
# ...
surface$dscComment("%Title: My excellent document")
surface$dscComment("%Copyright: Copyright (C) 2006 Cairo Lover")
# ...
surface$dscBeginSetup()
surface$dscComment("%IncludeFeature: *MediaColor White")
# ...
surface$dscBeginPageSetup()
surface$dscComment("%IncludeFeature: *PageSize A3")
surface$dscComment("%IncludeFeature: *InputSlot LargeCapacity")
surface$dscComment("%IncludeFeature: *MediaType Glossy")
surface$dscComment("%IncludeFeature: *MediaColor Blue")
# ... draw to first page here ..
cr$showPage()
# ...
surface$dscComment(surface, "%IncludeFeature: *PageSize A5")
# ...
RGtk2/inst/examples/GtkTooltips.R 0000644 0001762 0000144 00000002101 12557255216 016410 0 ustar ligges users ## Let's add some tooltips to some buttons
button_bar_tips <- gtkTooltips()
## Create the buttons and pack them into a GtkHBox
hbox <- gtkHBox(TRUE, 2)
load_button <- gtkButton("Load a file")
hbox$packStart(load_button, TRUE, TRUE, 2)
save_button <- gtkButton("Save a file")
hbox$packStart(save_button, TRUE, TRUE, 2)
## Add the tips
button_bar_tips$setTip(load_button,
"Load a new document into this window",
paste("Requests the filename of a document.",
"This will then be loaded into the current",
"window, replacing the contents of whatever",
"is already loaded."))
button_bar_tips$setTip(save_button,
"Saves the current document to a file",
paste("If you have saved the document previously,",
"then the new version will be saved over the",
"old one. Otherwise, you will be prompted for",
"a filename."))
RGtk2/inst/examples/gdk-pixbuf-File-saving-2.R 0000644 0001762 0000144 00000000143 12557255216 020472 0 ustar ligges users # (R does not require NULL-terminated vararg lists)
pixbuf$save(handle, "jpeg", "quality", "100")
RGtk2/inst/examples/GtkListStore-1.R 0000644 0001762 0000144 00000000631 12557255216 016667 0 ustar ligges users list_store <- gtk_list_store_new ("character", "integer", "logical")
sapply(character_vector,
function(string) {
## Add a new row to the model
iter <- list_store$append(iter)$iter
list_store$set(iter, 0, string, 1, i, 2, FALSE)
})
## Modify a particular row
path <- gtkTreePathNewFromString("4")
iter <- list_store$getIter(path)$iter
list_store$set(iter, 2, TRUE)
RGtk2/inst/examples/GThemedIcon-1.R 0000644 0001762 0000144 00000000273 12557255216 016421 0 ustar ligges users names <- c("gnome-dev-cdrom-audio", "gnome-dev-cdrom", "gnome-dev", "gnome")
icon1 <- gThemedIconNewFromNames(names)
icon2 <- gThemedIconNewWithDefaultCallbacks("gnome-dev-cdrom-audio")
RGtk2/inst/examples/GtkMessageDialog-1.R 0000644 0001762 0000144 00000000364 12557255216 017446 0 ustar ligges users # A Modal dialog
dialog <- gtkMessageDialog(main_application_window, "destroy-with-parent",
"error", "close", "Error loading file '", filename,
"': ", message)
dialog$run()
dialog$destroy()
RGtk2/inst/examples/gtk-High-level-Printing-API-3.R 0000644 0001762 0000144 00000001205 12557255216 021237 0 ustar ligges users draw_page <- (operation, context, page_nr, user_data)
{
cr <- context$getCairoContext()
width <- context$getWidth()
cr$rectangle(0, 0, width, HEADER_HEIGHT)
cr$setSourceRgb(0.8, 0.8, 0.8)
cr$fill()
layout <- context$createPangoLayout()
desc <- pangoFontDescriptionFromString("sans 14")
layout$setFontDescription(desc)
layout$setText("some text")
layout$setWidth(width)
layout$setAlignment(layout, "center")
layout_height <- layout$getSize()$height
text_height <- layout_height / PANGO_SCALE
cr$moveTo(width / 2, (HEADER_HEIGHT - text_height) / 2)
pangoCairoShowLayout(cr, layout)
}
RGtk2/inst/examples/cairo-paths-1.R 0000644 0001762 0000144 00000000570 12557255216 016505 0 ustar ligges users path <- cr$copyPath()$data
for (data in path) {
switch(CairoPathDataType[attr(data, "type") + 1L],
"move-to" = do_move_to_things(data[1], data[2]),
"line-to" = do_line_to_things(data[1], data[2]),
"curve-to" = do_curve_to_things(data[1], data[2], data[3], data[4],
data[5], data[6]),
"close-path" = do_close_path_things())
}
RGtk2/inst/examples/GtkLabel-4.R 0000644 0001762 0000144 00000000205 12557255216 015756 0 ustar ligges users ## Pressing Alt+H will focus the entry
entry <- gtkEntry()
label <- gtkLabelNewWithMnemonic("_Hello")
label$setMnemonicWidget(entry)
RGtk2/inst/examples/GtkRecentFilter.R 0000644 0001762 0000144 00000000063 12557255216 017166 0 ustar ligges users filter <- gtkRecentFilter()
filter$addPattern("*")
RGtk2/inst/examples/GVolume-2.R 0000644 0001762 0000144 00000000134 12557255216 015646 0 ustar ligges users (volume_activation_root$hasPrefix(mount_root) ||
volume_activation_root$equal(mount_root))
RGtk2/inst/examples/cairo-version-info-3.R 0000644 0001762 0000144 00000000344 12557255216 020005 0 ustar ligges users Compile-time
--------
R users should not be concerned with compile-time version checking.
Run-time
--------
cairoVersionString() Human-readable, use compareVersion() for comparison
cairoVersion() Encoded, not very useful in R
RGtk2/inst/examples/GtkTreeModelSort-2.R 0000644 0001762 0000144 00000001504 12557255216 017470 0 ustar ligges users # Accessing the child model in a selection changed callback
selection_changed <- function(selection, data)
{
# Get the current selected row and the model.
selected <- selection$getSelected()
if (!selected[[1]])
return()
## Look up the current value on the selected row and get a new value
## to change it to.
some_data <- selected$model$get(selected$iter, COLUMN_1)
modified_data <- change_the_data(some_data)
## Get an iterator on the child model, instead of the sort model.
child_iter <- sort_model$convertIterToChildIter(selected$iter)$iter
## Get the child model and change the value of the row. In this
## example, the child model is a GtkListStore. It could be any other
## type of model, though.
child_model <- sort_model$getModel()
child_model$set(child_iter, COLUMN_1, modified_data)
}
RGtk2/inst/examples/GtkImage-2.R 0000644 0001762 0000144 00000001241 12557255216 015760 0 ustar ligges users # Handling button-press events on a GtkImage
button_press_callback <- function(event_box, event, data) {
print(paste("Event box clicked at coordinates ", event[["x"]], ",",
event[["y"]], sep=""))
## Returning TRUE means we handled the event, so the signal
## emission should be stopped (don't call any further
## callbacks that may be connected). Return FALSE
## to continue invoking callbacks.
return(TRUE)
}
create_image <- function() {
image <- gtkImage(file="myfile.png")
event_box <- gtkEventBox()
event_box$add(image)
gSignalConnect(event_box, "button_press_event", button_press_callback, image)
return(image)
}
RGtk2/inst/examples/cairo-context-1.R 0000644 0001762 0000144 00000000224 12557255216 017046 0 ustar ligges users cr$pushGroup()
cr$setSource(fill_pattern)
cr$fillPreserve()
cr$setSource(stroke_pattern)
cr$stroke()
cr$popGroupToSource()
cr$paintWithAlpha(alpha)
RGtk2/inst/examples/cairo-paths-2.R 0000644 0001762 0000144 00000000176 12557255216 016510 0 ustar ligges users cr$save()
cr$translate(x + width / 2, y + height / 2)
cr$scale(width / 2, height / 2)
cr$arc(0, 0, 1, 0, 2 * pi)
cr$restore()
RGtk2/inst/examples/gdk-pixbuf-File-saving-1.R 0000644 0001762 0000144 00000000152 12557255216 020471 0 ustar ligges users formats <- gdkPixbufGetFormats()
writeable_formats <- formats[sapply(formats, gdkPixbufFormatIsWritable)]
RGtk2/inst/examples/GtkFileChooserDialog.R 0000644 0001762 0000144 00000001036 12557255216 020123 0 ustar ligges users ######
# Request a file from the user and open it
######
# This is how one creates a dialog with buttons and associated response codes.
# (Please ignore the C "Response Code" example in the next section)
dialog <- gtkFileChooserDialog("Open File", parent_window, "open",
"gtk-cancel", GtkResponseType["cancel"],
"gtk-open", GtkResponseType["accept"])
if (dialog$run() == GtkResponseType["accept"]) {
filename <- dialog$getFilename()
f <- file(filename)
}
dialog$destroy()
RGtk2/inst/examples/GtkMessageDialog-3.R 0000644 0001762 0000144 00000000223 12557255216 017442 0 ustar ligges users dialog <- gtkMessageDialog(main_application_window, "destroy-with-parent",
"error", "close")
dialog$setMarkup(message)
RGtk2/inst/examples/GtkTreeSelection.R 0000644 0001762 0000144 00000000061 12557255216 017343 0 ustar ligges users # You don't have to free anything in RGtk, silly
RGtk2/inst/examples/GtkAboutDialog-3.R 0000644 0001762 0000144 00000000072 12557255216 017132 0 ustar ligges users about$setTranslatorCredits(gettext("translator-credits"))
RGtk2/inst/examples/GtkIconTheme.R 0000644 0001762 0000144 00000000337 12557255216 016457 0 ustar ligges users icon_theme <- gtkIconThemeGetDefault()
result <- icon_theme$loadIcon("my-icon-name", 48, 0)
if (!result[[1]]) {
warning("Couldn't load icon: ", result$error$message)
} else {
pixbuf <- result[[1]]
## Use the pixbuf
}
RGtk2/inst/examples/GtkWidget-5.R 0000644 0001762 0000144 00000000110 12557255216 016156 0 ustar ligges users window$realize()
window$window$setBackPixmap(NULL, FALSE)
window$show()
RGtk2/inst/examples/cairo-scaled-font-3.R 0000644 0001762 0000144 00000000613 12557255216 017565 0 ustar ligges users ## R user obviously does not allocate things on the stack.
## This is the same as the first example.
glyphs <- scaled_font$textToGlyphs(x, y, utf8, utf8_len)
if (glyphs$retval == CairoStatus["success"])
cr$showTextGlyphs(utf8, utf8_len,
glyphs$glyphs, glyphs$num_glyphs,
glyphs$clusters, glyphs$num_clusters,
glyphs$cluster_flags)
RGtk2/inst/examples/GtkMenu-2.R 0000644 0001762 0000144 00000000716 12557255216 015650 0 ustar ligges users # The popup handler
my_popup_handler <- function(widget, event)
{
stopifnot(widget != NULL)
checkPtrType(widget, "GtkMenu")
stopifnot(event != NULL)
## The "widget" is the menu that was supplied when
## gSignalConnect() was called.
menu <- widget
if (event[["type"]] == "button-press") {
if (event[["button"]] == 3) {
menu$popup(button=event[["button"]], activate.time=event[["time"]])
return(TRUE)
}
}
return(FALSE)
}
RGtk2/inst/examples/GtkTreeModelFilter.R 0000644 0001762 0000144 00000000342 12557255216 017626 0 ustar ligges users visible_func <- function(model, iter, data)
{
## Visible if row is non-empty and first column is "HI"
visible <- FALSE
str <- model$get(iter, 0)[[1]]
if (identical(str, "HI"))
visible <- TRUE
return(visible)
}
RGtk2/inst/examples/GtkWidget-6.R 0000644 0001762 0000144 00000001343 12557255216 016170 0 ustar ligges users drag_data_received <- function(widget, drag_context, x, y, data, info, time)
{
if (data$getLength() > 0L)
{
if (drag_context$getAction() == "ask")
{
dialog <- gtkMessageDialog(NULL,
c("modal", "destroy-with-parent"),
"info", "yes-no", "Move the data ?\n")
response <- dialog$run()
dialog$destroy()
### FIXME: setAction() not yet supported
if (response == GtkResponseType["yes"])
drag_context$setAction("move")
else
drag_context$setAction("copy")
}
gtkDragFinish(drag_context, TRUE, FALSE, time)
}
gtkDragFinish (drag_context, FALSE, FALSE, time)
}
RGtk2/inst/examples/GtkCombo-2.R 0000644 0001762 0000144 00000001165 12557255216 016002 0 ustar ligges users ######
# Creating a combobox with a complex item
######
combo <- gtkCombo()
item <- gtkListItem()
## You can put almost anything into the GtkListItem widget. Here we will use
## a horizontal box with an arrow and a label in it.
hbox <- gtkHbox(FALSE, 3)
item$add(hbox)
arrow <- gtkArrow("right", "out")
hbox$packStart(arrow, FALSE, FALSE, 0)
label <- gtkLabel("First Item")
hbox$packStart(label, FALSE, FALSE, 0)
## You must set the string to display in the entry field when the item is
## selected.
combo$setItemString(item, "1st Item")
## Now we simply add the item to the combo's list.
combo[["list"]]$add(item)
RGtk2/inst/examples/GtkAboutDialog-2.R 0000644 0001762 0000144 00000000072 12557255216 017131 0 ustar ligges users about$setTranslatorCredits(gettext("translator-credits"))
RGtk2/inst/examples/GAsyncResult.R 0000644 0001762 0000144 00000000606 12557255216 016520 0 ustar ligges users
frobnitz_result_func <- function(source_object, res, user_data)
{
success <- _theoretical_frobnitz_finish (source_object, res, NULL)
if (success)
message("Hurray!")
else
message("Uh oh!")
## ....
}
_theoretical_frobnitz_async (theoretical_data,
NULL,
frobnitz_result_func,
NULL)
RGtk2/inst/examples/gdk-pixbuf-File-saving-3.R 0000644 0001762 0000144 00000000254 12557255216 020476 0 ustar ligges users contents <- readBin("/home/hughsie/.color/icc/L225W.icm", what="raw")
contents_encode <- RCurl::base64(contents)
pixbuf$save(handle, "png", "icc-profile", contents_encode)
RGtk2/inst/examples/GtkWidget-7.R 0000644 0001762 0000144 00000002251 12557255216 016170 0 ustar ligges users drag_motion <- function(widget, context, x, y, time)
{
state <- widget$getData("drag-state")
if (!state$drag_highlight) {
state$drag_highlight <- T
gtkDragHighlight(widget)
}
target <- gtkDragDestFindTarget(widget, context, NULL)
if (target == 0)
gdkDragStatus(context, 0, time)
else {
state$pending_status <- context[["suggestedAction"]]
gtkDragGetData(widget, context, target, time)
}
widget$setData("drag-state", state)
return(TRUE)
}
drag_data_received <- function(widget, context, x, y, selection_data, info,
time)
{
state <- widget$getData("drag-state")
if (state$pending_status) {
## We are getting this data due to a request in drag_motion,
## rather than due to a request in drag_drop, so we are just
## supposed to call gdk_drag_status(), not actually paste in the data.
str <- gtkSelectionDataGetText(selection_data)
if (!data_is_acceptable (str))
gdkDragStatus(context, 0, time)
else
gdkDragStatus(context, state$pending_status, time)
state$pending_status <- 0
}
else {
## accept the drop
}
widget$setData("drag-state", state)
}
RGtk2/inst/examples/GtkPrintContext.R 0000644 0001762 0000144 00000001550 12557255216 017243 0 ustar ligges users draw_page <- function(operation, context, page_nr)
{
cr <- context$getCairoContext()
# Draw a red rectangle, as wide as the paper (inside the margins)
cr$setSourceRgb(1.0, 0, 0)
cr$rectangle(0, 0, context$getWidth(), 50)
cr$fill()
# Draw some lines
cr$moveTo(20, 10)
cr$lineTo(40, 20)
cr$arc(60, 60, 20, 0, pi)
cr$lineTo(80, 20)
cr$setSourceRgb(0, 0, 0)
cr$setLineWidth(5)
cr$setLineCap("round")
cr$setLineJoin("round")
cr$stroke()
# Draw some text
layout <- context$createLayout()
layout$setText("Hello World! Printing is easy")
desc <- pangoFontDescriptionFromString("sans 28")
layout$setFontDescription(desc)
cr$moveTo(30, 20)
cr$layoutPath(layout)
# Font Outline
cr$setSourceRgb(0.93, 1.0, 0.47)
cr$setLineWidth(0.5)
cr$strokePreserve()
# Font Fill
cr$setSourceRgb(0, 0.0, 1.0)
cr$fill()
}
RGtk2/inst/examples/gdk-Events.R 0000644 0001762 0000144 00000000236 12557255216 016143 0 ustar ligges users # motion event handler
{
x <- motion_event$x
y <- motion_event$y
# handle (x,y) motion here
motion_event$request_motions() # handles is_hint events
}
RGtk2/inst/examples/GThemedIcon-2.R 0000644 0001762 0000144 00000000105 12557255216 016414 0 ustar ligges users c("gnome-dev-cdrom-audio", "gnome-dev-cdrom", "gnome-dev", "gnome")
RGtk2/inst/examples/GtkPaned.R 0000644 0001762 0000144 00000000473 12557255216 015634 0 ustar ligges users hpaned <- gtkHPaned()
frame1 <- gtkFrame()
frame2 <- gtkFrame()
frame1$setShadowType("in")
frame2$setShadowType("in")
hpaned$setSizeRequest(200 + hpaned$styleGet("handle-size"), -1)
hpaned$pack1(frame1, TRUE, FALSE)
frame1$setSizeRequest(50, -1)
hpaned$pack2(frame2, FALSE, FALSE)
frame2$setSizeRequest(50, -1)
RGtk2/inst/examples/gio-Extension-Points-2.R 0000644 0001762 0000144 00000000412 12557255216 020271 0 ustar ligges users ## Implement an extension point
myExampleImplType <- gClass("MyExampleImpl", MY_TYPE_EXAMPLE)
gIoExtensionPointImplement ("my-extension-point",
myExampleImplType,
"my-example",
10);
RGtk2/inst/examples/cairo-pattern-2.R 0000644 0001762 0000144 00000000065 12557255216 017043 0 ustar ligges users matrix$initScale(0.5, 0.5)
pattern$setMatrix(matrix)
RGtk2/inst/examples/cairo-paths-3.R 0000644 0001762 0000144 00000000146 12557255216 016506 0 ustar ligges users cr$moveTo(x, y)
cr$relLineTo(width, 0)
cr$relLineTo(0, height)
cr$relLineTo(-width, 0)
cr$closePath()
RGtk2/inst/examples/gdk-Keyboard-Handling-2.R 0000644 0001762 0000144 00000000344 12557255216 020320 0 ustar ligges users # XXX Don't do this XXX
unconsumed <- all_accel_mask & event[["state"]] & !as.flag(state$consumed)
if (state$keyval == accel_keyval &&
unconsumed == accel_mods & !as.flag(state$consumed))
print("Accellerator was pressed")
RGtk2/inst/examples/GtkTreeModel-2.R 0000644 0001762 0000144 00000001063 12557255216 016620 0 ustar ligges users ## Reading data from a GtkTreeModel
## make a new list_store
list_store <- gtkListStore("character", "integer")
## Fill the list store with data
populate_model(list_store)
## Get the first iter in the list
result <- list_store$getIterFirst()
row_count <- 1
while(result[[1]]) {
## Walk through the list, reading each row
data <- list_store$get(result$iter, 0, 1)
## Do something with the data
print(paste("Row ", row_count, ": (", data[[1]], ",", data[[2]], ")", sep=""))
row_count <- row_count + 1
result <- list_store$iterNext()
}
RGtk2/inst/examples/GtkDrawingArea.R 0000644 0001762 0000144 00000000657 12557255216 016775 0 ustar ligges users expose_event_callback <- function(widget, event, data) {
gdkDrawArc(widget[["window"]],
widget[["style"]][["fgGc"]][[widget[["state"]]+1]],
TRUE, 0, 0, widget[["allocation"]]$width,
widget[["allocation"]]$height, 0, 64 * 360)
return(TRUE)
}
[...]
drawing_area = gtkDrawingArea()
drawing_area$setSizeRequest(100, 100)
gSignalConnect(drawing_area, "expose_event", expose_event_callback)
RGtk2/inst/examples/cairo-image-surface.R 0000644 0001762 0000144 00000000223 12557255216 017733 0 ustar ligges users stride <- format$strideForWidth(width)
data <- raw(stride * height)
surface <- cairoImageSurfaceCreateForData(data, format, width, height, stride)
RGtk2/inst/examples/cairo-scaled-font-2.R 0000644 0001762 0000144 00000000235 12557255216 017564 0 ustar ligges users glyphs <- scaled_font$textToGlyphs(x, y, utf8, utf8_len)
if (glyphs$retval == CairoStatus["success"]) {
cr$showGlyphs(glyphs$glyphs, glyphs$num_glyphs)
}
RGtk2/inst/ui/ 0000755 0001762 0000144 00000000000 12557255216 012607 5 ustar ligges users RGtk2/inst/ui/demo.ui 0000644 0001762 0000144 00000027611 12557255216 014101 0 ustar ligges users
GtkBuilder demo
250
440
GtkBuilder demo
True
False
True
The toolbar
False
1
automatic
in
True
automatic
True
liststore1
3
Name list
A list of person with name, surname and age columns
Name
0
Surname
1
Age
2
2
True
False
3
RGtk2/inst/CITATION 0000644 0001762 0000144 00000001327 12557255216 013332 0 ustar ligges users citHeader("To cite RGtk2 in publications use:")
citEntry(entry = "Article",
title = "{RGtk2}: A Graphical User Interface Toolkit for {R}",
author = personList(as.person("Michael Lawrence"),
person("Duncan", "Temple Lang")),
journal = "Journal of Statistical Software",
year = "2010",
volume = "37",
number = "8",
pages = "1--52",
url = "http://www.jstatsoft.org/v37/i08/",
textVersion =
paste("Michael Lawrence, Duncan Temple Lang (2010).",
"RGtk2: A Graphical User Interface Toolkit for R.",
"Journal of Statistical Software, 37(8), 1-52.",
"URL http://www.jstatsoft.org/v37/i08/.")
)
RGtk2/inst/images/ 0000755 0001762 0000144 00000000000 12557255216 013437 5 ustar ligges users RGtk2/inst/images/gnome-applets.png 0000644 0001762 0000144 00000006022 12557255216 016720 0 ustar ligges users ‰PNG
IHDR 0 0 Wù‡ gAMA ±üa bKGD ÿ ÿ ÿ ½§“ pHYs ` `zxE tIMEÐ(–ªŠ IDATxÚíšYŒ×u†¿Ú«»§»g㢤9Ò–dk¡MÑ–I¦@Ó’F²
'P q^b=Fâ ûI6ò”<YÀÉk Iˆ
Ã@LÙ¢hQ#Ò҈Ԉξw³»ºö5}‹(·‡Ãe˜<)à =·«þÿžÿœ{î¹#qs—$L.ÜK…¿gK÷·ü’v \&¬H aùý-'r#äpU˜V¸W
csÀ1,'“þoÈg])€6„é˽‘Ï~„@Ðc±°[â
õ: (à&PÌOÝsp÷3_:z|dxèpÉ4È’4'±á:NàØöZ³eM¯®o¾}ú½÷ߘ]XYïóÅ3ãB|üy@.€Ï—Ÿ|ìsû¿ö•§¿yûÞ½_“$‰,ËH’˜(Š ‚ ß÷ñ<ϱ±]ÛvX[ßøÉÙ>úÑGç/nÁÉN(×9ó&P*/ÿ»üüÄñíÞ=r¿a–0Œº®£ëŠª **²,!!‘IR–B–¡ªò§†û_쯹³+baGRR¶/dS*ÿ·?ø«{ïýÄ·+}5Õ,•)•ʦ‰n¨ª†ªj]ðR7²Ò4%Mb’$%NRUS¥/ì®Ì.¬¾ÙCâ–È¥£ç³ÿwóò÷ÆÆö}£Tî£T*S®”)•K覉a訪Š,É¿$’4!‰câ8!Šc’8¤‡ëåÅ•Í;%¡l3ûj>û?øþwÿäÀ»ÿ¼\©R*•)U*”ÊeÌRÃ4Q5EQd².ø$é‚•ð}Ÿ(މã˜8ŽˆÂˆLÊ•Kzk}³}¦^o˜„|
ÚÓÇž¿{ß_꺎¦i¦iš˜å
åJõŠ™å
¦ib˜š¦Ñ¯‚”¡êЬ )2²¬¢¨
²,S)›ß®Ò°t+üNö9vôñoišnÊ²Š¢¨hš†¦F Ã,Q*WɃYӻ໱Ð/Ë
Š,Q®T”î½$uM–es°¿ï;B¦ê6x®›@±Lкdp°ÿÅîedYñ)Ë2ªªc–úPUýÊwH2ùxI’d Y’»™ª\'Nº*‘$©û2Yz±RÖïr½a/ÈÛ¥Ï'}x"K3²,#ËR²,ƒ,íf–4%ŽC|Ï&ŽÃ+ß!Æåã³4#ÍR$EcyI(Wøpz«ã`Ù®RíÓ¿*2Ý
{AÞ¦XS«ÕÊ#išt2‰ºEDa@x¾‡çv| ðˆÂ€(êŽKÓ˜$‰IÓ„4MI’Çqyá…xüèqÖ7/Ó±]TM£R.?ôÝŒämô¯jŠüÉ8ê®°QÔøÝ•Öw\§sÅ|×Á÷}¿K"C¢(&ŽºÙÈj5Ñ4z—^z‰;Flj☡¡a\Ï¿è/xAÚ‰®H“dO…A@„¾‹ï{xŽƒëØ¸¶…ݱpm×±ñß÷|·;>£(˜››g}}3gÞ£^ïgâ¹ç¨Vð\›,Í€ r£IÝ®úŒ¢Ðô=ïÊ
+Ë]¾išE!ªª‘×B¹¼ßÅs=<ÏízÊó‚ ÇõHâÿxí
‡wqäÈþú‡/£ëŠ¢*À° X¢àK®g]Ø.`$ÏóƒÀï‚Y_ßä¿Nüš8ΰ;mÛ¢cµéXÝOǶÄ÷Žcã:.žçŠøé«˜øžËüü¿9u’0˜xî9ÒTUM€A &d¤]o0÷z ¸äâÜRóàø¾Û$I¢i9œýà<©¤òÈáдnž¿V5êx>—–™_fßþýì“eNœøtާŽ=Í/~þSJ†‰¨uDµ*]ËÊUÖ(ùìCǧ/ÌÜÖ±]‚žxž³gÏ"e]ï¦iJŠ rñ|×qXZ\âÌÔ4—æ?È“?J…LNž&<×feeOßÿ‹óÆek
h 9b3tM]Í)Üq×þÿð…?:ôãþfæù³ïaee…ŸýçëŒÞ¹—O#IRV×6(—L.·ÚX–EÛ² ‚ñxæÙϳ²4χS°´¼€m;ŒŽÞN¬,^âÈçá×_KóŠW”í†À]kû©l³SSSkjæýÙ‰çYZ^åGŸâ¶½{ù‡ü'—ÛL›Æó|6M66[ôUk<ðÀƒ<úØcÿÒãÝSorñâǬo¬awl‚0$cöìÆ45ÖÖ79vü™ìäÉ“«À²ðBGr|-[y ßGËíÍÏOÿ¼Ùl›úxÅÅÆÇ0>>Îî]CܵŒGŽf×®aÂÀ'Í2,Ëbò·y·cÑhlà!žïá{>A!I…ƒÃÃ8V‹™ù¥ö=÷=X6Mó“¾ï¿½Å{Û8Ø*f9 xÿüÅWJ%ýI×q´Öåˬ®ò¹‡?ÿþäÒ4¦ÝXãö=à I,ÌÏ’¥)aF1AAÅ1iS2M¢8¥¿V#ô¼ìÜôìlËþ÷êÄÄľW_}õN`¦ÐénvC“×C†ï‡Š¥¾ŠyŸë‡È²ÂÚê
çΟ'=š–ÕÂî´ñ=?ñÿʪì!q#Ë2%䯯J¥ÆÐà ozw}yus©Ùl^[[[«†aø« äëÙR–›N§Z1ïlµÛ{²&'ß%ŠBÈRü Ä45â$&ŠÅ¬ûq% ’$¡©
}•
õZZµŠ¦›\º4c>{þ`˲fFFF5‹ÀA (lvnzSo }Í–mÉÄw¾szrÀ¶;¨ªBÿ Aà¡k*ª"“$ i’"+2Šª ©*¦aP¯Õì¯Ó_¯£éKË«ö/ßšœÎÁ–ã8‹Õju¤Õj'F!³›%{¡T;¶çÊ%IÒUU¦Zaª*ÓW)£ë:•rÓ0é«”©×ê
R«V©Öjhºž½õö鿩ɩ1Ã9ÐnµZoO¿>.´^n(ˆ‹íÁHôpZÀ°FÉFûòm»‡²f£Q¾{lCM쯡j*º¦#ÉJwK©t72 ïœy?üÍäÔ\ÇvÛâ™¶ ‘›'´ÿ
ðmàõë©…¶# öÐVå,ˆ¦gçC3TEÙsï½uM×ÕáÁ!YQU)#ËÚm+_Üˆææ—Üóæ?%!¯@ ÓCÀ^>üðãkõ¤ëÈR†(u÷cÀ3À—óâ¥e‘·Õž¼]lðÊÀA¡í¬“ë_x¸)nˆ¢î/€o +Ûuï”›hîZÀQ`Q¼,ï<¸ùlúiŒO®ôŸ›U c‹g“7y³A|52ð” 7]èB‡Ð9p¯ ™@xqª ›bç–ÇÆo?ÞÏÞÞÝÚ§Eý~ªp·Ò{ ¸ÂÖ‚tcŘð€5à.àaàÍ[A€‚¾ëÀ}À/
eÇÕäfç
bà\„ŠæŠßGÀYàëÀÏÄDí˜@®Å6ð$ðÓ-<ÐE/´E,¼·Eäà=ñ¬<VDâ8q³Å//™¥¯.Ù‹!¾â¦<+d£M`·ÈPV˜³ø<}þðCÑv±wêbÉ}H¤¾ÙB&*za+9Bÿ{€zÀçõ4zó³µQàâ$Pr8ÓC 7zeÔ^š)|çÀoÕ©ž à²{Ãê‹üü Èy
Õ·XÔ~o£$š¹Qá·aáðïjmöÓ¢õÒØ "˜E‘êÜÂB¦b xvœõÄÂP‹ZÔsž|µEkSØŽ%”_‰XòóüÝ{.^å˜52* @ñNÁwB hŸÈJiOýÓ{È]´Xd¡ìZåò8'ÞîZ†®Oº—¶YG2AdÇÝ;õ@ÔîÑzo—o«þøÿëÿÄõßÄÖAýkå IEND®B`‚ RGtk2/inst/images/gnome-fs-regular.png 0000644 0001762 0000144 00000003403 12557255216 017317 0 ustar ligges users ‰PNG
IHDR 0 4 Ì“»‘ bKGD ùC» ¸IDATxÚÕšKoWDZCÚ4³Ð*HtEÊ¢,‚RBÃ+ÚO€Ô]Yõ#ðP%XtQ‰Hx4<
‚À’MT‰v”‡`ÄĵöÜÓ…3ž;wî±SPÒ+dß¹w|ÿó?çÌ5Àw€,„«»»ûéúõëúN`u¹wïžè£P(È|Œb±(cccrôèQ_©õÀ{@*VܺuKDDfffÞŠ@J©†®r¹,ÅbQ¦¦¦dttÔWâ“8%R¼ƒ!"ˆHÃû*•
="“ɰyóf._¾ð X´Ùä
Mlݺu^×G¹\ ££ƒ-[¶044Dkk«S‰Ð—Û·oÏ‹àþ~abb ¥™L†M›6qòä :::¬J¤æÃâºÀú~…çy58yžGww77~ÊñãÇM85ÍBsÜ&0ˆ¡”J%¦¦¦¸sçccc\½z•R©Ä†
ݜ:u
à{`©O±Í&„â”hDh÷Úª ¶y_¡#GŽP,Q¾¡Y±¢‹={ö|ü €Jó¦žu.Ã÷D¥„¾¾>–/_N.—£Xü‡\îããã œ8qÂ߸dF…¦Ù<zl¡P ½½=Qp×ýF¬_]+³Ÿ!•JQ©T ˜žžæáäÓiòù<££·8vìÀ.à`ÒÊB.Œ»‚ÏÄrTè ãzÀ*¥jó"Uæñ¼Êìž*õô|ÆôtžÞÞ/éééñ·7ùš“,÷6¬`”Š*¨”ªy šŒ5Áý¶¶¶ÈS›u¶mÛ¦YEæ„å8Œ›Êxž2Œ¢´õ¾ðÕ¸(fhnnv—"Âèè(©TÊbéÏd’ 2Ë&Á=ÏSšð¢Á‰Ð_‰+W.ÓÞþÕtÍ67×ïѬEÄšæ½@ý{ô·õ}I9'¡íÛ¿¨eÂ$,»•±1²qÀ>veOîÞýù|ž„jT¸yóétºXDï)U½|·ûÐð4_UFÕTÝ«4…dûb###tvv&yÀ&˜Ýʦ‹MÏ„ÝîòŒ2<ý]_9ýwcb@رcårÙ¢VX$c\‡¢D(Øe°€F«óýý{xñb*B"pãÆ
-Z“1tXøÌ\ÊÈ´>ÌD›W³óÕDXLö€Ý2,\kƒ‹ù“I‚5¶¬Ž¯º $;wîä͛׆2Ñø.Nf´`Â%¬¨X!+"ìÝ»çÏŸ%AH¸~ý:--šûUH€*Ó(“H„I|hDÆ¥°bºg.\8ϲeËŠ^õ@ÃÆ$f€Û˜M÷€ÉLÅ&@H)¡··—R©T³Š¿Ñ,®¢Êˆ5ù…ƒÜF™6Á%ÂBû÷ —›LNd×®ýÆâÅ‹5H ±B8i™î×á\žÆLññ«N³Zsç†éêZ™ÄzpÚù\êêõBÌ^'‰³Ä¶C’zXH±k×.
…£$p?Ôœ”k’³÷qµUUŽxò$!¥ô²ÕUÛç}fr1IØâRc³°ðbíÞDÃÃgYµjM2éÖò» [ÿj«ƒ\Lb&-[IaÖWîJ !úúv“ÏOÐgwe+äìl$kKýYbbâqR"S\º4Bgç’cø–ðk•(Yæþðš(Da©¯:ÃêÕk“šhÛhòr´´¹ßÖ¸»˜%êMkÕ!€þþ~^¾|Q³F”“ÅÑ™¹ß8؊ðÁÄ)´/Ç¡Cƒd³'×B##¿²tiFK(n&ÑÝï×6îîMBJ†ë&Sè(„Ξ=Ú5%çàýŒ$ZÛäñ¨«%¶s‹ë«yµŠpÙên)MеCg9n[÷úrpð0'CÈ/[£Ü«×*ÊÊ"ÑžXOnQ|“b"àÌ™_X»v]r°¥ñzP›ÔóvÛž’Ï!B™xß¾ýärO-Ör»}®‚ÛâŵopðkÆÇÿJnêÏŸ?GW×
ë›ã(LpÙzh˸[X™Ó§fݺ“=”Ó$0†;‰¹--uŸ34rêȘœœpÔþâÌØs=Ù©WðÇ¿I†ÃÃC¬\¹Ú€L´·¹¿‘à‹Â.~}]rõ©IïeÞ…Å)€û÷ïÂÀÀ!ž<ÉZš”xú{Û¯#55… ”Íf혜œdff†±±ßgON<Òé4eܽû'Ùl–W¯^YoÁü_¨ÎëG`Õû´Ú÷9ð>ТŸ .À!Àkà)0áŸCõè¾Hÿð€P*MZ0/dÁmŠ(€¶Cžú@e IEND®B`‚ RGtk2/inst/images/rgtk-logo.gif 0000644 0001762 0000144 00000016446 12557255216 016046 0 ustar ligges users GIF87ak Œ ç p¨Ø ˜0øøø( •€ˆ
˜°ä˜°X8øžÜ™ø¨¨d ˜Èð²Èà@ ,0D ¤Ø8(xŒàx|˜ˆ(PtŒÐ
0 ˜¸êÚðX ˜Èø\ck°¸Üpx˜t˜Œ8LPEPe‚¨ 4\(hð(|„Œ`@( È( ØÐåíõõ©¢Àð” ˆ˜À˜¨Ø(*:¤´Üp€¨pèxR]ˆ¸ÀØju’49K@ÀPPXX(0™4¾ˆ¬p0@pXh¢Ê0X¨ˆˆ¤äìøˆ È¥b`•ÀÉËãÒÚò Ô€´äˆ˜Èx€¸258BHbÔŒ|ˆÀ ¨è(Xˆø ¤°Ø\l”pÜxøðøl|¤DœTJMX˜¤ÌP\€°¼ädl€ÆÀæ hH@@P¨x´€ÀhŒ¼((0«¹½èðå½ÉĘШ¸àzš²ˆ¸ðxj²“¡¶(@ˆ ¨à˜ ØXÌ`ðèøðøø€ˆ°º`mxˆ°EEP´ÉñÞäôˆðˆhp¤5p@P˜È€ÀðMRj°4dP(0Úààhp`p ÂÊõx¤è x€¨èðøð ˜œ¨À(H°UUh•¨px |hxpˆÐ(0@@D\RUu`p˜xº†P€¸p8àŒXhˆ0°@`dxH@Xh€Ø(0Pd`\d€Ö™ààrˆ¸ÀÈà˜ Èpr…^\–4;Y€¸ø¸¸xˆ¸ *E €8ˆ@Pxà€°ÀðµÌ¨°àÐP€T¤lH0`²b²Ìxlhx°bmˆ¬°¸ˆÀð€¨ØH@ˆ((@@5:BLxXÔàøˆÈpx¨˜¸˜¨Ðx°àÀ¹äìäìÔÎΤ°è`ÔpxЀPhˆX`€¸Àà°ààèø
¤˜¦Hh¸z…¥(¤¼ìˆ˜Ð@Hpr²¨p€¸bµràäèhx˜ÆÓô è’À@p˜ à€ˆÀ€ˆ¸tšÆ =-ÎÜÚx€ l|œPXp (8XHHP°x€° ðèðìððFTzð , k Œ þ H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ÉÒã9<-cì÷‚CAiÅÆL£cSæÊ~ÊNÛ"PÚmŸ(yóöŠ€œ?>Q²‘£TŒ5
˜úäí“:'\8ûƒ_Ô‘ÒÖ`Ât¦Û§3׊±¢4SšktÆêýEôlGä®ù8£¢”š?ŠHXAÇ[€"” ºvB¯ƒKünlãC
¬†Oœ óãc:”~8ò 5¼ÅzöÕLFdjJ•’ º+V §“5„ÖÇ\kùí‰Ó”•òQÊ4éE(#¦ãèøqãÆ!þ@“`ÙA³ÏÂ(àÀ!_ÈD7¦üG€Öá‘ë‡@ÌÊŠò/¤·P.¨á pVe+xÓwøyçA~z›Î XPsŒ œ &(ZpE@4~7¡„+~G^–U ƒ†)¢ˆz ÚŽtÄaˆ~¬å—¢ŠÈ)WYl¦—*‰£¥íè1T¦ä~¶8¤!iÀ¦×´å¡Ke8ŠXŠDB48ÁfWE|À,†·b þY¶BO>3Â̇Øhdt,¶£h?,¸ uqHˆ¥ÊÑñß^2åscý§£'|Â¥t”ÚUŸaÚŽž–7%þ÷
‰Ü'¥ê©Kót § þw‚ÂcÅ¢Á}ꪫ—&X¢¡à
É: GJ0ˆPfˆ+S(„^‡,EèÙ+¨žFÛ 1ÈèÁ'VðZŸ#Íc…“Oꘉ¡øAÃà±Ç^ZnŽGvú«•âYLyŠÔ¯zà
ºá9¿¾~â„!èò 4w
+߈ÉçÄ•ßA€7ëuHç -¨?ü€fx†¢žçJJ¡Ð«ão9ÖWò~&ÃØi’åA²g ir펛#ùDZrYzçD+$fi§``µºD¦Á+˜ùéêèÊj²b—~
%°ÊñXù¤0þc˜Ò¬–PÑ9Á€ÊÍ:=äŠÐÈÕ)%tj
„-6«³ð f…båE&äÓ¤í³-„´@Ó¸0Ym§+itäY…x³8Ö®º7«3ö‹CÛI¯{6´zŠx™ãáèìºt˜bÞ×$XAëçî6æVèyD‚Gv÷9ŽÁÐ/Ì8
y½2†ñâ’Bïl;Y„vZY·q˜–£çùÓR–\³: ,dÀ†Ð)ÕT wŸƒ ô2¹›àAWœ0F'B [¢IP&ÄG²¬
ÉC
›Çé¢`ÂzI„2ñ´B¨f]Ë‘.¡ì‰‡Vþ'ê Û Á»‘ÐN,™R6d*ð/@EäàNÃÝÐÒµ.:”¡S›Ûœð Ót-ÀÒÝUTBÀaÉK8œœhEXâC (ö”âÚ°Z‘øAå=®;„Ø>Ñ:!©ëˆuФâà‡6X‚ t,È9¢è b’À(d¸Cäï8€ Ä´F¾›MnE‘pÛq:¥£"¼O{ú’ 'DCD`*(€ÈA¨!@ñ2ô(ƒL¡I0Æ ?umCÙhÆÀÍ0€à›Ûä¦8ÇépŽºÐZ±„ðmogDÒ…%>1˜aàÂþ8æAª… 5°Àÿh@€Á‚±° h"kþÐ
,ۈ
oG8¨±‹]¼!ÍhF+†Žz ©+\%€/‘vó€üPeøbPª!À‹ 0è‚/Ô@ \A
ØC“@ _”HH€Âð&Ø PÀ²l`3XC+²†1@«T ¼‰…˜õ-˜JeÕK?8a
sðÁ0Á Øu. €4˜~² @mÀB‘¢à–HSœñ&lcGˆld# PÖ²”Íì2«ÙÍ>6á Ažð„è/%ý°†WXÁ˜°þ†]Q°€Œb
(]Az1_üõ§]4À‚3Ø@B `…>ZðŒo|cè¨Ç%.±ƒX÷€=¸ =d7»ô/$]YÌàoðCž ‹Kˆ"LHÓ
! ‡kŒàC@…h[ÛÚvá2º%H/rÀS¨ÿ „“¨hŒø“pÅ;š0QøCYÈp`zÀ A`+ôPËâïðît›Ñ X¸8\
ìðŽ„@‰uàqeªáX …\[8 è9H/0Q
ôÀýÇ-
JE_ÈÄ‚ôá†tÑåB3ô1]´¢©éH‡þZÑ
?pÓéhÄ9wQ*ðáͨ‡ QŽÑBb؃¬Ú´)_¬Àžè¯¢…Œ‚é ÉñD)XðOàBù
· ¢“1„L8ƒh ÁêqƒÈ
…Ã2(«ƒI!¼°¯X¡„€ ¤_˜Á;ø .CO ,8AŠ@ÈDÃèÌX†`"÷wÈøbnbcøÓ–¾4!¨ÜI_Aî°3:Q>P¡XHÇ6–0$cò„¼Q‹xÄ£<¨@ á
,ìâOh˜á.¸ã—° Hƒ
Š@0G*…lÍ_þâ€