On 13-07-13 1:33 PM, Simon Zehnder wrote:
Dear R-Users,

I am writing a package using S4 classes. In the generic method "plot" I want to 
set the title for the plotting window as I will have several windows and window titles 
help the users to distinguish the graphics without putting a title into the plot itself 
(this can be done by users whenever they want)

So I created a helper function .setDeviceTitle which I called after the plot 
has been done:

".setDeviceTitle" <- function(title = "title", dev = dev.cur()) {
        dev <- names(dev)[1]
        
        ## check for OS ##
        if (dev == "windows") {
                windows(title = title)
        } else if (dev == "X11") {
                X11(title = title)
        } else {
                quartz(title = title)
        }
}

The result is a new device with the title in addition to the old. Is it 
possible to give a window a title after the plot has been done? If not: Before 
I plot the device I cannot know what device it will be, so I thought about a 
check via capabilities():

if (any(names(capabilities()) == "X11")) {
        X11(title = title)
}
else if (any(names(capabilities)) == "windows") {
        windows(title = title)
} else {
        quartz(title = title)
}

I want to have a safe method, which works on each OS R can run. How would you 
solve the problem?

Use dev.new() rather than picking a particular device. If all the possible devices support the "title" argument, then

dev.new(title=title)

will be fine. If you might need more customization (or want to protect against a user who chooses a device that doesn't have "title" as an argument), use getOption("device") to examine the call that will be used.

Duncan Murdoch

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to