[R] Platform independent dialogs & menus?

Philippe Grosjean phgrosjean at sciviews.org
Mon Mar 20 14:17:36 CET 2006

Keith Chamberlain wrote:
> Dear list mates,
> Are {utils} dialog box functions, and winMenuAdd... functions used to change
> (e.g. Console) menus, platform dependent? 

Yes, Windows-only as the 'win' prefix suggests it.

> I'm writing a script loaded with .First that provides first time users in a
> lab course with the ability to select, load, and change between what I
> called a 'session' (more specific save that focuses on the session object I
> defined rather than the whole workspace, & intended to run many different
> sessions through the course of what would be one workspace).

See also the 'session' package on CRAN for that.

> I'm using winMenuAdd() calls to generate their 'Session' menu at startup,
> the menus call functions sourced in for the menu actions. In the menu
> actions, I call routines that use select.list() and file.choose() calls to
> interact with users. 
> I do not work with Macs often, and from what I've gathered today in posts
> about cross-platform difficulties, my sense of being intimidated "seems"
> well placed to me (then again, breaks & some sleep would probably help). I
> have not had the chance to test routines on a Mac yet, so I have no idea
> what to expect. Is this tract I took with winMenuAdd() & related [{utils}
> windows build] an appropriate route to take wrt the Mac build of R, or would
> I be better off using another package? 

For a platform-independent way of defining menus (you will have a 
floating window with your menu), look at ?MenuAdd in package svWidgets 
(SciViews bundle). With these functions, you even have more control on 
the menus (define shortcuts, trigger the menus through R code, for 
instance), and you can define your menu in one R instruction and a 
simple text file to describe the menu structure, like this:

# Create a Tk window then add a menu to it
||Objects  ~~ ls()
||Path	   ~~ search()

# Add menus to the RGui console (Windows only)
||One	  ~~ cat("One triggered!\n")
||Two	  ~~ cat("Two triggered!\n")  ~~ state = "disable"
|||Three  ~~ cat("Three triggered!\n")
|||Four	  ~~ cat("Four triggered!\n")
||Five	  ~~ cat("Five triggered!\n")

# Add menu to the RGui console popup (Windows only)
||Six	  ~~ cat("Six triggered!\n")

If the preceeding menu definition is in a file named "Menus.txt" in the 
/gui subdirectory of your "MyPackage" package, you can do:

 > tkWinAdd("MyTkWindow", title = "Menu window", pos ="-40+20")
 > MenuReadPackage("MyPackage")

... and you got all your menus configured at once (for MyTkWindows + 
RGui console + RGui console popup menu


Philippe Grosjean

> Please advise,
> KeithC.
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

More information about the R-help mailing list