Mathematica中LocatorPane图形上的右键菜单

时间:2011-05-26 20:18:36

标签: wolfram-mathematica contextmenu graphic

当在Mathematica中右键单击图形时,您将获得一个上下文菜单(剪切图形,复制图形,将图形保存为......),但对于LocatorPane Graphic,此右键单击菜单将被禁用。 如何在Mathematica中使用EventHandler或MouseAction命令调用LocatorPane图形的上下文菜单?什么命令创建此菜单?

LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]]

我发现此代码在mathematica中打开“另存为”窗口。

FrontEndExecute[FrontEndToken["SelectionSaveSpecial"]]

我希望当我右键单击LocatorPane图形时,“另存为”窗口打开。

2 个答案:

答案 0 :(得分:4)

不是完整的答案,但Cell的上下文菜单由ContextMenu的{​​{1}}选项控制。对于您希望的任何单元格,您可以为样式Cell设置Cell s的默认上下文菜单:

"Graphics"

答案 1 :(得分:2)

你说:

  

我想通过右键单击LocatorPane图形来调用“将图形另存为”。

我还没有办法做到这一点,但你可能不知道你可以:

  1. 通过单击右侧的空白区域并向左拖动来选择LocatorPane对象。

  2. 使用菜单File > Save Selection As...以所需格式保存图片。


  3. 我认为正确的选项似乎不起作用:

    SetOptions[EvaluationNotebook[], 
      ComponentwiseContextMenu -> {"GraphicsBox" -> 
         FEPrivate`FrontEndResource["ContextMenus", "GraphicsBox"], 
        "Graphics3DBox" -> 
         FEPrivate`FrontEndResource["ContextMenus", "Graphics3DBox"], 
        "LocatorPaneBox" -> 
         FEPrivate`FrontEndResource["ContextMenus", "GraphicsBox"], 
        "CellGroup" -> 
         FEPrivate`FrontEndResource["ContextMenus", "CellGroup"], 
        "CellBracket" -> 
         FEPrivate`FrontEndResource["ContextMenus", "CellBracket"], 
        "CellRange" -> 
         FEPrivate`FrontEndResource["ContextMenus", "CellRange"], 
        "CellInsertionPoint" -> 
         FEPrivate`FrontEndResource["ContextMenus", "CellInsertionPoint"]}
      ];
    

    具体来说,"LocatorPaneBox" ->的值已更改为"GraphicsBox",但没有明显效果。

    另一方面,更改"GraphicsBox" -> 的值会产生影响。

    我怀疑因为LocatorPane使用鼠标输入,它会捕获右键单击尝试,并且永远不会将其传递给上下文菜单机制。也许禁用鼠标作为LocatorPane的输入设备会纠正这个问题,但这似乎不切实际。


    以下是实施使用"SelectionSaveSpecial"的建议的一种方法:

    Dynamic[EventHandler[
      LocatorPane[{1, 1}/2, Graphics[{Gray, Disk[]}]],
      {"MouseClicked", 2} :> 
       FrontEndExecute[
         SelectionMove[EvaluationNotebook[], All, GeneratedCell];
         SelectionMove[EvaluationNotebook[], All, CellContents]; 
         FrontEndToken["SelectionSaveSpecial"]
       ]
    ]]