Как добавить кнопку в хедер окна в Blender

С помощью Python API в Blender можно кастомизировать интерфейс, настроив его удобным для себя образом. Например, можно вынести наиболее часто используемые операторы в хедер (верхнее меню) любой рабочей области Таким образом можно собрать собственный риббон из «быстрых» кнопок.

Хедер каждой рабочей области (окна) в Blender описывается в API собственным типом. Например, хедер 3D вьюпорта описана в bpy.types.VIEW3D_HT_header.

Проще всего определить тип хедера у нужного окна, кликнув по любой кнопке на нем правой кнопкой мышки, в выпадающем меню выбрав «Edit Source» (должны быть включены Developer Extras в настройках) и открутив открывшийся в текстовом редакторе код вверх до определения класса.

Для основных рабочих областей Blender типы хедеров следующие:

3D Viewport — VIEW3D_HT_header
Image Editor — IMAGE_HT_header
UV Editor — IMAGE_HT_header
Compositor — NODE_HT_header
Texture Node Editor — NODE_HT_header
Geometry Node Editor — NODE_HT_header
Shader Editor — NODE_HT_header
Video Squiencer — SEQUENCER_HT_header
Movie Clip Editor — CLIP_HT_header
Dope Sheet — DOPESHEET_HT_header
Time Line — DOPESHEET_HT_header
Graph Editor — GRAPH_HT_header
Drivers — GRAPH_HT_header
Nonlinear Animation — NLA_HT_header
Text Editor — TEXT_HT_header
Python Console — CONSOLE_HT_header
Info — INFO_HT_header
Outliner — OUTLINER_HT_header
Properties — PROPERTIES_HT_header
File Browser — FILEBROWSER_HT_header
Asset Browser — FILEBROWSER_HT_header
Spreadsheet — SPREADSHEET_HT_header
Preferences — USERPREF_HT_header
Для того, чтобы добавить какие-либо элементы интерфейса в хедер, определим функцию для их отрисовки, аналогично функции «draw» для пользовательских панелей.
Например, кнопка для оператора, вставляющего в сцену дефолтный куб «bpy.ops.mesh.primitive_cube_add»:

Чтобы функция не терялась при перезагрузке сцены, мы обернули ее в декоратор @persistent.

Теперь для размещения кнопки вызова этого оператора в хедере 3D вьюпорта, добавим нашу функцию в хедер командой «prepend».

При использовании «prepend» все элементы интерфейса, определенные в нашей функции, будут отрисовываться в хедере перед его основными кнопками. Можно так же использовать функцию «append», в этом случае все элементы из нашей функции будут отрисованы в хедере после его базовых кнопок.

Для того, чтобы убрать добавленные нами кнопки из хедера, нужно удалить нашу функцию, вызвав метод хедера «remove»:

5 1 голос
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии