检测前端令牌是否可用于执行

时间:2012-01-01 18:53:05

标签: wolfram-mathematica mathematica-frontend

如何检测front end token是否可以执行?或者,如何检测前端令牌是否无法执行?

示例:编辑 - >如果未选择任何内容,则复制命令不可用。在这种情况下,FrontEndTokenExecute["Copy"]会发出哔哔声,但它没有给我(编程)指示它已经失败。

1 个答案:

答案 0 :(得分:5)

我找到了一种方法来处理你的第二个问题,但这并不优雅:

  1. Preferences > Interface > Message and Warning actions设置次要用户界面警告提示音并打印到控制台
  2. 确保消息窗口中至少有一条错误消息
  3. 获取消息窗口笔记本的句柄(使用Notebooks[]左右)
  4. 使用将最后一个单元格存储在消息笔记本中 NotebookGet[NotebookObject[FrontEndObject[LinkObject["55d_shm", 1, 1]], 1]]/. Notebook[{___, Cell[a___]}, ___] :> Cell[a](你的句柄当然会有所不同)
  5. 您的电话:FrontEndTokenExecute [“复制”]
  6. 获取最后一条错误消息,并检查它是否与步骤4中存储的错误消息不同。
  7. 错误单元格类似于Cell["You tried to edit a cell that is not editable. You can make the \ cell editable by choosing Cell Editable in the Cell Properties \ submenu.", "Message", "Message", "MSG", PageWidth -> WindowWidth, ShowCellLabel -> True, CellChangeTimes -> {3.534442831*10^9}, CellTags -> "cantEditLockedCell"]
  8. 适当行动