вторник, 2 апреля 2013 г.

Docked Cells в Mathematica

Все, кто программировал в Математике, знают, что одна из самых полезных операций называется Quit Kernel. Удивительно, что для нее нет ни клавиатурного сокращения, ни кнопки. Нужно лезть в меню Evaluation>Quit Kernel>Local, а затем еще жать Ok в появившемся окошке с предупреждением. Есть немного более простой способ, конечно --- ввести Quit и нажать Shift-Enter. Но если ядро занято другими вычислениями, этот способ не работает. Есть и третий способ: создать кнопку командой  Button["Quit", Quit[]] и жать на нее в свое удовольствие. Проблема в том, что кнопочка эта постепенно уплывает из зоны видимости. Можно, конечно, сгенерировать палитру (palette) и для кого-то это будет самый удобный вариант. Понятно, что для настоящего художника в палитре должна быть не только черная краска, так что в палитру можно оформить несколько ваших любимых кнопок.
Однако, в том, что палитра хранится отдельно от файла есть как достоинства, так и недостатки. Достоинства, понятно, в том, что одну палитру можно использовать при работе в любом файле. Недостаток --- в том, что взяв с собой файл на другой компьютер, нужно не забыть взять и установить туда и палитру. Выходом из этого концептуального тупика может стать Docked Cell. По сути, это та же палитра, только определенного вида. Важно, что хранится она  прямо в файле. Вот пример создания Docked Cell-а с тремя кнопками:
SetOptions[InputNotebook[], DockedCells -> {Cell[BoxData[ToBoxes[
      Row[{Button["Quit", Quit[]],
        Button["Abort", FrontEndTokenExecute["FindEvaluatingCell"];
         FrontEndTokenExecute["EvaluatorAbort"]],
        Button["Evaluate", FrontEndTokenExecute["EvaluateCells"];
         SelectionMove[InputNotebook[], Next, Cell]]}]
      ]],
    Background -> RGBColor[0.9, 0.9, 0.9],
    CellMargins -> 0,
    CellFrame -> {{0, 0}, {1, 0}}]}]

Жмем Shift-Enter и вуаля. Кому-то может показаться, что вбивать такую команду в каждом новом файле утомительно. Согласен, но тут можно и палитру сделать:
CreatePalette[Button["Install tools",SetOptions[InputNotebook[], DockedCells -> {Cell[BoxData[ToBoxes[
      Row[{Button["Quit", Quit[]],
        Button["Abort", FrontEndTokenExecute["FindEvaluatingCell"];
         FrontEndTokenExecute["EvaluatorAbort"]],
        Button["Evaluate", FrontEndTokenExecute["EvaluateCells"];
         SelectionMove[InputNotebook[], Next, Cell]]}]
      ]],
    Background -> RGBColor[0.9, 0.9, 0.9],
    CellMargins -> 0,
    CellFrame -> {{0, 0}, {1, 0}}]}]]]

А еще лучше --- сделать такую палитру
CreatePalette[{Row[{Button["Quit", Quit[]],
    Button["Abort", FrontEndTokenExecute["FindEvaluatingCell"];
     FrontEndTokenExecute["EvaluatorAbort"]],
    Button["Evaluate", FrontEndTokenExecute["EvaluateCells"];
     SelectionMove[InputNotebook[], Next, Cell]]}],
  Button["embed tools",
   SetOptions[InputNotebook[],
    DockedCells -> Most@First@NotebookGet[ButtonNotebook[]]],
   ContentPadding -> False, FrameMargins -> 0]}]

Комментариев нет:

Отправить комментарий