Обнаружение, доступен ли токен переднего плана для выполнения - PullRequest
9 голосов
/ 01 января 2012

Как я могу определить, доступен ли входной токен для выполнения?В качестве альтернативы, как я могу определить, что маркер переднего плана не был выполнен?

Пример: команда Edit -> Copy недоступна, если ничего не выбрано.FrontEndTokenExecute["Copy"] в этом случае просто издаст звуковой сигнал, но он не дает мне (программного) указания на то, что произошел сбой.

1 Ответ

5 голосов
/ 02 января 2012

Я нашел способ справиться со вторым вопросом, но он не изящен:

  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. Действуйте соответствующим образом
...