Dear Haris, First, there's nothing wrong (at least that I can see) with your menu file, although I would consider using the activation field to determine whether the menu items should be activated or "grayed out" in the current context.
The problem you encountered is a bug in the Commander() function that, apparently, didn't surface before because no one previously tried to define a submenu of a top-level menu introduced by a plug-in package, as opposed to a new top-level menu or a submenu of one of the standard Rcmdr top-level menus. Briefly, the expression Menus[, "menuOrItem"] == line[1, "menuOrItem"], which is meant to determine where the submenu is to be "cascaded" under its parent menu, should read Menus[, "commandOrMenu"] == line[1, "menuOrItem"]. I've now fixed this bug. I intend to upload a new version (1.3-6) of the Rcmdr package, which addresses several small problems, to CRAN soon, probably later today. Thanks for bringing this bug to my attention. John -------------------------------- John Fox, Professor Department of Sociology McMaster University Hamilton, Ontario Canada L8S 4M4 905-525-9140x23604 http://socserv.mcmaster.ca/jfox -------------------------------- > -----Original Message----- > From: Charilaos Skiadas [mailto:[EMAIL PROTECTED] > Sent: Friday, November 02, 2007 12:31 AM > To: John Fox > Cc: 'R-help help' > Subject: Re: [R] Rcmdr Plugin and menus.txt > > Thanks John, no hurry. > > I tried to debug it a little bit, without much success. Two things I > discovered: > 1) The exact same lines work just fine if I place them in the > Rcmdr- menus.txt file in the Rcmdr package (and add the > "testOne" function > also.) > 2) While trying to do debug(Commander), the thing I noticed > is that, when reading items from the menus.txt file, the > function seems to process them in the opposite order. So it > starts from the last item and moves up (well, I don't know if > it would move up since it crashes in the absence of the > psychMenu object). It seems the problem might be with the line: > Menus <- addMenus(Menus) > When examining Menus, I noticed that my new commands were > added at the beginning of the Menus data frame, and in a > messed up order: > > Browse[1]> Menus[1:20,1:3] > type menuOrItem operationOrParent > 8 item psychMenu cascade > 1 menu psychMenu topMenu > 4 menu testTwoMenu psychMenu > 5 item testTwoMenu command > 6 item testTwoMenu command > 7 item testTwoMenu command > 2 item psychMenu command > 2100 menu fileMenu topMenu > 3 item fileMenu command > 410 item fileMenu command > 510 item fileMenu command > 610 item fileMenu command > 710 item fileMenu command > 810 item fileMenu command > 9 item fileMenu command > 10 menu exitMenu fileMenu > 11 item exitMenu command > 12 item exitMenu command > 13 item fileMenu cascade > 14 item topMenu cascade > > > I would hazard to guess that the problem is with the call > "Menus <- insertRows(Menus, line, where)" in line 866 of > Rcmdr. But at that point things got a bit too "technical" for > me. Hope this helps narrow the problem down a bit. > > Thanks for the preprint. It is nicely written, though it > didn't shed any light on this problem. > > Haris Skiadas > Department of Mathematics and Computer Science Hanover College > > On Nov 1, 2007, at 3:32 PM, John Fox wrote: > > > Dear Haris, > > > > I'll take a look at this as soon as I have a chance, probably not > > until tomorrow. In the meantime I've attached a "preprint" of an > > article that describes how to write plug-ins. Perhaps > you'll find that > > helpful. > > (I don't > > know whether it will go through r-help, but you should receive the > > direct > > email.) > > > > Regards, > > John > > > > -------------------------------- > > John Fox, Professor > > Department of Sociology > > McMaster University > > Hamilton, Ontario > > Canada L8S 4M4 > > 905-525-9140x23604 > > http://socserv.mcmaster.ca/jfox > > -------------------------------- > > > >> -----Original Message----- > >> From: [EMAIL PROTECTED] > >> [mailto:[EMAIL PROTECTED] On Behalf Of > Charilaos Skiadas > >> Sent: Thursday, November 01, 2007 2:53 PM > >> To: R-help help > >> Subject: [R] Rcmdr Plugin and menus.txt > >> > >> Hi all, > >> > >> I'm trying to write a plugin for R Commander, following > the model of > > > >> the TeachingDemos plugin. I am struggling trying to even > add items by > >> editing the menus.txt file. I would welcome any help from > anyone who > >> has messed with it. > >> Essentially the problem I am having is: I cannot create a > submenu to > >> a newly created menu. Here is what the menus.txt file looks like: > >> > >> # type menu/item operation/parent > >> label command/menu > >> activation install? > >> menu psychMenu topMenu > >> "" "" > >> "" "" > >> item psychMenu command "Test" > >> testOne "" "" > >> item topMenu cascade > >> "Psych" psychMenu > >> "" "" > >> menu testTwoMenu psychMenu > >> "" "" > >> "" "" > >> item testTwoMenu command "Binomial > >> distributions" testOne > >> "" "" > >> item testTwoMenu command "Normal > >> distributions" testOne > >> "" "" > >> item testTwoMenu command "t > >> distributions" testOne > >> "" "" > >> item psychMenu cascade "Submenu" > >> testTwoMenu "" "" > >> > >> > >> I would expect the above to create: > >> 1) A top level menu called "psychMenu", with the title "Psych" > >> 2) An item in this menu with title "Test" > >> 3) A second item, called "Submenu", and internally called > >> "testTwoMenu", which is itself a submenu. > >> 4) Three items in that submenu. > >> > >> The difference between this and the example is basically, > that in the > >> example, the testTwoMenu is created as a submenu of the > >> distributionsMenu. If I change those last five lines above to read: > >> > >> menu testTwoMenu distributionsMenu > >> "" "" > >> "" "" > >> item testTwoMenu command "Binomial > >> distributions" testOne > >> "" "" > >> item testTwoMenu command "Normal > >> distributions" testOne > >> "" "" > >> item testTwoMenu command "t > >> distributions" testOne > >> "" "" > >> item distributionsMenu cascade "Submenu" > >> testTwoMenu "" "" > >> > >> > >> Then everything works fine and the submenu is created inside the > >> distributions menu. On the other hand, my original code > gives me the > >> error: > >> > >> Warning in max(which((Menus[, "operationOrParent"] == > >> "cascade") & (Menus[, : > >> no non-missing arguments to max; returning -Inf Error > in eval(expr, > > > >> envir, enclos) : object "psychMenu" not found > >> > >> > >> I should point out further, that keeping only the first > three lines > >> from my original code also works fine, and creates the new > menu and > >> an item in it. The problem seems to arise when I try to create a > >> submenu in a menu I have just created. > >> > >> Any thoughts how to accomplish this, or rather what am I > doing wrong? > >> > >> Should this go to R-SIG-GUI instead? Or is there another list more > >> appropriate? > >> > >> Thanks, > >> Haris Skiadas > >> Department of Mathematics and Computer Science Hanover College > >> > > > > > ______________________________________________ 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.