Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How add a menu item with a menu key using an init.m

  • To: mathgroup at smc.vnet.net
  • Subject: [mg125277] Re: How add a menu item with a menu key using an init.m
  • From: Chris Degnen <degnen at cwgsy.net>
  • Date: Sun, 4 Mar 2012 04:32:46 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jinjlj$d33$1@smc.vnet.net>

On Thursday, March 1, 2012 10:39:47 AM UTC, John Fultz wrote:
> On Sat, 25 Feb 2012 01:58:51 -0500 (EST), Chris Degnen wrote:
> > Murray Eisenberg wrote:
> >
> >> Here's what I put there:
> >>
> >> FrontEnd`AddMenuCommands["Input from Above",
> >> {Delimiter,Item["Options &Explorer",
> >> KernelExecute[ToExpression["OptionsExplorer[]"]],
> >> MenuKey["o",Modifiers->{Control,Command}],
> >> MenuEvaluator->Automatic]}];
> >>
> >> But nothing happens after a restart of Mathematica with clean cache.
> >> What's wrong? Did I err in indicating the Insert menu's entry "Item from
> >> Above" referenced there? Or something else.
> >>
> > There are two problems: the front end token for the Insert
> > menu position would be "DuplicatePreviousOutput", and, more
> > problematically, AddMenuCommands can only add simple
> > front end tokens like "OptionsDialog" (as demonstrated by
> > Andy Ross).
> >
> > FrontEndExecute[AddMenuCommands["DuplicatePreviousOutput",
> > {Delimiter, MenuItem["Options &Explorer", "OptionsDialog",
> > MenuKey["O", Modifiers -> {"Control", "Shift"}]]}]];
> 
> No, you have this backwards.  AddMenuCommands can only *position* a menu 
> relative to one with a simple front end token.  The command that you're adding 
> can be any menu command.

Thanks for the clarification, but in that case should KernelExecute
menu items also work?

I have made three examples to illustrate the question.

(For readers, these menu modifications only persist for the current
front end session.)

The first one adds a MathGroup link to the Help menu, and works
fine, (at least with Chrome).

FrontEndExecute[
 AddMenuCommands[
  "SelectionHelpDialog", {Delimiter, 
   MenuItem["&MathGroup Archive", 
    FrontEndExecute[{FrontEnd`NotebookLocate[{URL[
         "http://forums.wolfram.com/mathgroup";], None}]}], 
    MenuKey["M", Modifiers -> {"Control", "Shift"}]]}]]


The second example adds a custom function at the same location on
the Help menu.  The MenuItem works if it is included in MenuSetup.tr
but when added through AddMenuCommands it produces the message
"Could not process unknown packet "CreateDialog"."
 
FrontEndExecute[
 AddMenuCommands[
  "SelectionHelpDialog", {Delimiter, 
   MenuItem["Custom Function version 1",
    KernelExecute[
     CreateDialog[{TextCell["Click OK to close"],
       DefaultButton[]}]],
    MenuEvaluator -> Automatic]}]]


The third example is a roundabout way to achieve what the second
example attempts.  It works for the function demonstrated, but it
would not work for OptionsExplorer[] which need to access the
current front end selection.  (OptionsExplorer seems to have some
obsolescence problems, by the way, before anyone spends time.)


FrontEndExecute[
 AddMenuCommands[
  "SelectionHelpDialog", {Delimiter, 
   MenuItem["Custom Function version 2",
    FrontEndExecute[
     {FrontEnd`NotebookWrite[FrontEnd`NotebookCreate[], 
       RowBox[{RowBox[{"CreateDialog", "[", RowBox[{"{",
             RowBox[
              {RowBox[
                {"TextCell",
                 "[", "\"\<Click OK to close\>\"", "]"}], ",",
               RowBox[{"DefaultButton", "[", "]"}]}],
             "}"}], "]"}], ";",
         RowBox[{"NotebookClose", "[", "]"}]}]],
      FrontEndToken["EvaluateCells"]}], 
    MenuKey["F", Modifiers -> {"Control", "Shift"}]]}]]

Is there some way to run KernelExecute with AddMenuCommands?

Thanks, Chris




  • Prev by Date: much power to mathematica
  • Next by Date: Re: new functional operator
  • Previous by thread: Re: How add a menu item with a menu key using an init.m
  • Next by thread: Re: How add a menu item with a menu key using an init.m