[R-gui] embedding R in GTK+ (GtkDrawingArea)

Thomas Glogowski thomas.glogowski at rub.de
Tue Sep 24 01:23:25 CEST 2013


Michael Lawrence <lawrence.michael <at> gene.com> writes:

> 
> The objects in RGtk2 (and cairoDevice) are externalptr objects in R. One
> approach would be to create an externalptr in C, and then call some R code
> that sets the class attribute accordingly, i.e., to the result of
> gTypeGetAncestors("GtkDrawingArea"), and then calls asCairoDevice() on that
> object.
> 
> Michael
> 

Thank's Michael but I don't understand how to do what you've explained. How
can I change an external pointer (created in C) to be an
GtkDrawingArea using R?

What I've tried so far is:

-1-store the existing GtkDrawingArea* from my app in a DLL callable variable
-2-set up a DrawingArea in R with: DA <- gtkDrawingArea
-3-call the DLL-function with .Call ("R_Interface_get_da", DA )
-4-the DLL-function R_Interface_get_da takes DA as an SEXP and lets it point
to the variable created in step 1 (i.e. my apps DrawingArea).

Doing it that way I thought DA would be an object of the correct class
allready, because I only let it point to some other DrawingArea. But that
doesn't work in conjunction with asCairoDevice.



Thomas



More information about the R-SIG-GUI mailing list