On Mon, Jul 28, 2008 at 6:33 AM, Prof Brian Ripley <ripley@stats.ox.ac.uk>wrote:

> On Mon, 28 Jul 2008, Felix Andrews wrote:
>
>  Hi R-devel
>>
>> I use the packages RGtk2 and cairoDevice. The cairoDevice package has
>> a few stand-alone functions, plus "asCairoDevice" which depends on
>> RGtk2 and calls require(RGtk2). So cairoDevice lists RGtk2 under
>> "Suggests" in the DESCRIPTION file. It can not Import RGtk2 because
>> that would force all users to install RGtk2.
>>
>> The upshot of this is, if you *import* the RGtk2 namespace into
>> another package and then call asCairoDevice(), RGtk2 is attached to
>> the user's search path. That is significant because RGtk2 exports a
>> large number of objects: -- 7476 to be exact -- which can clog up
>> things like help.search and autocompletion.
>>
>> What is the recommended solution? Could asCairoDevice call
>> loadNamespace rather than require?
>>
>
> The code is
>
>  asCairoDevice
>>
> function (widget, pointsize = 10)
> {
>    if (!require("RGtk2"))
>        stop("asGtkDevice requires the RGtk package")
>    if (!inherits(widget, "GtkDrawingArea") && !inherits(widget,
>        "GdkDrawable")) {
>        stop("Object being used as a Cairo Device must be a GtkDrawingArea
> or GdkDrawable")
>    }
>    .Call("do_asCairoDevice", widget, as.numeric(pointsize),
>        PACKAGE = "cairoDevice")
> }
>
> Note that the stop() message is wrong (wrong function name, wrong package)
> and seems most likely an error.  But why not ask the package author?
>

I can't remember putting this in there, but anyway it's pointless, as RGtk2
must already be loaded if someone is going to be passing a widget to the
function. Nor does the function use any RGtk2 symbols.

So that's an easy fix.

Thanks,
Michael


>
> The normal solution is to use :: to load functions from a name space
> required only in rarely used functions in your package.
>
> --
> Brian D. Ripley,                  ripley@stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/<http://www.stats.ox.ac.uk/%7Eripley/>
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272866 (PA)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>
>
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

	[[alternative HTML version deleted]]

