[R] Rcmdr Plugin and menus.txt
Charilaos Skiadas
cskiadas at gmail.com
Fri Nov 2 05:30:35 CET 2007
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: r-help-bounces at r-project.org
>> [mailto:r-help-bounces at r-project.org] 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
>>
More information about the R-help
mailing list