By March 16, 2015 4 Comments

Multi Script Editor v2

Этот кросс платформенный, кросс программный Python редактор с открытыми исходниками,  написаный на PySide и предназначен для вставки в любое приложение как инструмент для скриптинга.

Возможно вы скажете – зачем такое нужно? И так полно аналогов, при этом с функционалом куда лучше! Но если бы это меня устраивало, я бы не начинал делать свой вариант. Мой скрипт задуман как дополнительный редактор скриптов для Houdini. Те кто в курсе знают что адекватной панели в Houdini для этого нет. И так вышло, что в последствии я смог с одинаковым успехом встроить тот же самый виджет в Maya и Nuke. С тех пор он получил приставку Multi и он может быть прикручен практически к любой программе, особенно написанной на Qt. Главное условие – поддержка скриптинга на Python 2.7.

 

Краткое описание

За основу взят стандартный ScriptEditor из Maya, поэтому вставка его именно в Maya возможно не принесет бОльшего удобства. Основные функции, которые реализованы на данный момент (версия 2.0.1):

  • сохранение и восстановление вкладок и кода в них
  • выполнение выделенного кода по нажатию Ctrl+Enter
  • настройка цветовой темы редактора кода
  • автодополнение кода (использован модуль модуль jedi)
  • контекстное автодополнение для конкретного софта

Остальные возможности можете посмотреть в описании к последнему релизу на странице закачки.
Ниже скриншоты окна скриптэдитора, вставленного в разные приложения.

Stand Alone

Скрипт может запускаться как отдельное stand alone приложение.

scriptEditor

Houdini

Та программа, ради которой написан скрипт. На картинке он вставлен в версию 14, которая нативно поддерживает PyQt виджеты. В предыдущих версиях скрипт так же работает но как отдельное окно. В данном случае скрипт вставлен с помощью модуля hqt.
Для Houdini создан контекстный автокомплит для функций createNode, createInputNode и createOutputNode. Это значит что после текста “createNode(“ скрипт будет предлагать только список доступных для создания нод.

Поддерживается Drag and Drop нод и параметров в Houdini.

houdini

Nuke

На картинке представлена вставка в Nuke как отдельного виджета. Ничто не мешает создать новую панель и заменить стандартный ScriptEditor в Nuke. Кстати, последний не имеет автокомплитов и до недавнего времени не умел сохранять введенный код при закрытии программы. А вкладок у него по-прежнему нет, приходится открывать несколько редакторов.

MulriScriptEditor можно вставляется так же в Hiero и NukeStudio.

Для Nuke сделан контекстный автокомплит для функции nuke.createNode. Именно для этой функции автокомплит будет предлагать список доступных нод вместо всего остального. То же самое касается класса nuke.nodes

nuke

Maya

Стандартный ScriptEditor в Maya послужил прототипом моего скрипта. Можно использовать любой из них. В MultiScriptEditor реализован контекстный автокомплит для pymel и cmds функций createNode, который выдает только список доступных для создания нод.

Так как парсинг всех методов в данный момент происходит не на фоне, в Maya он занимает заметное количество времени. Около 15 сек. Но после работает быстро.

maya

Библиотеки автокомплитов

Все библиотеки которые я подготовил для работы автокомплитов подойдут для любого IDE. Например, если вы используете PyCharm, просто добавьте к его пути поиска модуля папку managers для Nuke и managers/houdini для Houdini. Для Maya используются стандартные скрипты.

Установка

Standalone

  • установите Python 2.7 на систему
  • установте пакет PySide для Python 2.7
  • для запуска используйте run.cmd (Windows) или run.sh (Linux)

Houdini 13

  • скачайте и установите скрипт hqt.py
  • установите PySide для стандартного интерпретатора Python 2.7
  • создайте новый инструмент на поле с кодом:
import sys
paths = ['path/to/MultiScriptEditor_module','path/to/default/python27/lib/with/PySide']
# example ['c:/houdini/python/lib', 'c:/python27/Lib/site-packages']
for path in paths:
if not path in sys.path:
    sys.path.append(path)
import pw_multiScriptEditor
pw_multiScriptEditor.showHoudini(ontop=1)

Houdini 14

  • скачайте и установите скрипт hqt.py
  • создайте новый инструмент на поле с кодом:
import sys
path = 'path/to/MultiScriptEditor_module'
# example c:/houdini/python/lib
if not path in sys.path:
    sys.path.append(path)
import pw_multiScriptEditor
pw_multiScriptEditor.showHoudini(name='Multi Script Editor',replacePyPanel=1, hideTitleMenu=0)

Maya

  • Создайте кнопку на полке с таким кодом:
import sys
path = 'path/to/MultiScriptEditor_module'
# example c:/maya/python/lib
if not path in sys.path:
    sys.path.append(path)
import pw_multiScriptEditor
pw_multiScriptEditor.showMaya()

Nuke

  • Добавте код в menu.py
menubar = nuke.menu("Nuke")
toolMenu = menubar.addMenu('&Tools')
path = 'path/to/MultiScriptEditor_module'
# example c:/nuke/python/lib
if not path in sys.path:
    sys.path.append(path)
import pw_multiScriptEditor
# add to menu
toolMenu.addCommand("Multi Script Editor", "pw_multiScriptEditor.showNuke()")
# create new pane
pw_multiScriptEditor.showNuke(panel=True)

Видео

 

Благодарность

Буду премного благодарен если окажете мне посильную помощь, оставляя по мне интерес делиться с Вами полезными штуками 😉

Posted in: Houdini, Maya, Nuke, PyQt, Python Tools

4 Comments on "Multi Script Editor v2"

Trackback | Comments RSS Feed

  1. weijer says:

    Thank you too much!

  2. Morten says:

    Awesome tool! Any plans for a Houdini 15 edition of the script editor?

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