Укрощение форм. Работа с Form Editor, Forms в cfg, структура и построение интерфейса из Form и Layout.

Главные вкладки

9

Первая часть - Держим modoXXX.CFG "чистым".

Как всё устроено

Всё начинается с Layout, будь то основное окно modo, новое Window или Palette. Layout имеет различные представления/типы/вьюпорты:

Управление Layout'ом происходит в выпадающем меню, при нажатии на "стрелочку вправо" в правом верхнем углу.
Здесь можно выбрать тип Layout'а (подменю - Application), загрузить его "заготовку" (в подменю 3D Edit ... Utility), загрузить форму в Layout (Viewport Settings), действия над содержимым Layout (Viewport Controls), действия над самим Layout (Layout Controls).

Form View открывает доступ к Viewport Settings и позволяет загружать имеющиеся формы.
Tabbed Viewport разделяет Layout на вкладки.
Viewport Group позволяет группировать вьюпорты. При нажатии на "Num 0" вьюпорт/форма развернётся в пределах родительской группы.

Ctrl + ` (Ctrl + ё) - быстрый доступ к некоторым заготовкам вьюпортов и командам Split и Remove, не заменимым при построении интерфейса.

Не забываем сохранить Layout. Затем открываем Layout > Windows > New Window и загружаем туда сохранённый Layout для проверки.

Открываем System > Form Editor

Create > New Form > вводим MyTestForm > Ok
В Form Properties отмечаем Exported и загружаем форму в Form View вьюпорт. Через Viewport Settings или ПКМ на заголовке вьюпорта (Form View) и выбираем в списке MyTestForm.
Сохраняем форму (через ПКМ на ней в списке Form Editor'а).
Сохраняем Layout.

И переходим к экспорту.
File > Config Expor
Экспортируем Layouts.
Файлы с Layout и Form должны быть в папке Configs (можно посмотреть заранее, открыв System > Open User Configs Folder).

Конфиги форм хранят в себе данные о самих формах и о элементах внутри себя. Не хранят данные о том для каких форм они являются дочерними, но о группе в которой находятся и о формах, где они вставлены в Head и в Tale - "знают".
Таким образом, если Вы хотите встроить свою форму в "родную", то:
1) Вам придётся пересохранить форму, родительскую для Вашей. В этом случае сложно будет с кем-то поделиться таким изменением, т.к. оно просто заменит предыдущие настройки этой формы, а так же при переходе на новую версию программы Вы рискуете остаться в старой, либо конструировать всё заново.
2) Использовать при встраивании своих форм в родной интерфейс только блоки Head и Tale. Это накладывает существенные ограничения, не всегда есть возможность внедриться на "удобное" местечко. Но предоставляет универсальность интеграции в любой интерфейс. Также можно внедрить в свою форму, часть родного интерфейса.

Небольшой полезный урок

(В процессе выполнения не перезапускать modo и не сохранять общий конфиг.)

Выделить форму в Form Editor.
Нажать кнопку с буквой F чуть выше списка форм и ввести там Form Editor Properties. Выбрать её в списке и отключить поиск.
Нажать Create > New Subform > ввести Key > Ok
Форма Key выделена, Create > New Command > select.attr ? > Ok
Нажать + рядом с формой Common Properties и рядом с Head Category.
Перетащить курсором форму Key в открытый Head.
Назначить для формы Key параметр Style - Inline Subcontrols.
Сохранить форму Key в отдельный конфиг.
Удалить ссылку на форму Key в Head.
Удалить саму форму Key. (Удаление в другом порядке приведет к падению modo, если не удалить, то форма будет сохранена в общий конфиг, т.к. является текущим изменением и ещё не была импортирована при старте. Отличительная черта такого состояния - форму можно удалить. После перезапуска modo, такой возможности уже не будет.)
Перезапустить modo.
Теперь ключ любой формы можно копировать "на месте" и использовать для контекстного поиска по файлам конфигурации modo.

Forms в cfg

Будет полезно поэкспериментировать с несколькими пустыми формами, вкладывая друг в друга, сохраняя, и проверяя что получилось в конфигах.

На рисунке конфиг формы MyTestForm0
Сначала блок Hash основной формы, в котором перечислены вложенные элементы в блоках List
Ниже в блоках Hash описание вложенных форм. При сохранении будет записано в один файл, но эта часть может содержаться и отдельно, в других файлах cfg. Связь происходит по key.
Форма Key также находится, точнее её образец, в категории с key 32958980129 в блоке #head
Связь форм с Layout происходит по "ключу" основной формы - 97298197903:
Строка из конфига формы           <hash type="Sheet" key="97298197903:sheet">
Строка из конфига Layout'а          <list type="ExportedSheet">97298197903:sheet</list>

Ключ можно посмотреть в Form Editor, нажав + рядом с именем формы, а также в History при выделении формы в Form Editor, или командой select.attr ?
Ключ можно изменить в блокноте, редактируя конфиг, на любой другой, главное, чтобы они совпадали во всех встречающихся местах.

Вопросы приветствуются. Возникнут ситуации, не описанные выше - пишите.

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

#

601 Default Layout включает в себя другие Layout'ы.
После Save As у нового Layout изменяется Key, а все дочерние Layout'ы остаются при своих ключах, дабы наследоваться как образцы, а не как дупликаты. Из-за этого, изменения интерфейса в новом Layout, косвенно влияют на Default Layout.

Советую создать чистый Layout и перетаскивать нужные формы из старого. В этом случае накладок возникнуть не должно.

#

Супер. За картинку-схему - особенно огромное, человеческое спасибо, как раз все время путаюсь, где у нас что и как называется. Теперь все хорошо :)

А, порекомендовал бы в текстовом редакторе включить подсветку синтаксиса xml. И попробовать Sublime Text 2 - очень, очень достойный нотпад. Помимо множества классных вещей в нем есть Minimap - визуальная навигация. Очень помогает по длиннющим документам мгновенно скроллиться, особенно когда пока точно не знаешь, куда собственно надо :)

#

Блокнот сильный, много интересного. Гибкий и настраиваемый, правда для этого надо изучить его самого и иметь навык программирования.
Что сразу отметил, так это то, что нельзя свернуть часть кода, к примеру цикл или условие. Цветовые схемы настраиваются не в интерфейсе программы, а не понятно в каких файлах настройки, где ещё надо найти те самые строки кода.
Миникарта - круто. Много фишек, которые понравились. Но вот к примеру как сделать окрашивание скобок под курсором и её пары не нашёл.
Я понимаю, что это придирки от незнания, и всё это как-то делается. Но, видимо, не с моим уровнем программирования.
Notepad++, которой пользуюсь, сильно уступает по возможностям, но больше настроек предоставляет с ходу, без углубления.
Для Sublime Text можно ещё плагинов насобирать, может там ужё есть всё что надо.

#

RTFM!, да :) В документации (которая покамест пародия на таковую) второй строчкой идет вот чего: Perfect Workflow in Sublime Text 2 Обязательно все просмотри, дяденька очень доходчиво показывает, как творить чудеса. В "плюсы" возвращаться не захочется! :)))

Настройки - да, очень по-гиковски сделаны, редактированием json-ов, но это мелочки, открывай Default, там все откомментировано, копируй настройку, открывай User, вставляй, меняй, сохраняйся. Если чего-то не сворачивается или не подсвечивается, значит, неправильно синтаксис выставлен - повнимательнее просто. Скобки матчатся и подчеркиваются, кавычку нужно ставить одну, открывающуюся - добавится вторая, а курсор будет между - вписывай внутрь все, что нужно. Модовские конфиги - укажи внизу справа на статус-баре, где выбор синтаксиса - Open all with current extension as... - и промотай вниз до XML, теперь все *.cfg теперь будут показываться правильно. Остальное, что понадобится - пёрл, питон, луа - это все есть. Даже LXM-ки можешь понаряднее сделать - выставь для них синтаксис R :)

Для добавления пакетов надо поставить вот эту штуку - потом добавлять сможешь прямо из редактора.

Удачи :)

#

Желаю дополнить - на начальной стадии конструирования лэйаутов полезно в Preferences, в ветке UI, снять галку с Tidy Layouts - тогда станут видны границы элементов и будет легче ориентироваться в слоях Viewport Groups. Примерно так:

#

мнение наших иностранных друзей по поводу интерфейса в модо...
Is Modo Designed By Extra-Terrestrials (перевод: Модо создан пришельцами?)

Видимо хорошо что я не "рожденный 3Д Максом" и мозг смог легко адаптироваться к модо навигации и интерфейсу (чему я очень рад), да есть то что хотелось бы улучшить..., но честно говоря не охота тратить время в погоне за призрачными удобствами, т.к. модо (для моих текущих задач) устраивает меня полностью.
Но всеже, повторюсь, интересно узнать мнение разных людей по 3д пакетам, не только модо...

П.С. для меня так Блендер создан пришельцами (в моем не богатом опыте работы с разными 3Д пакетами) :)

 

Пара интересных на мой взгляд сообщений:

MajorDad wrote:

Hello .. i used Lightwave before modo.
What i know the pplz behind modo was developers for Lightwave in the good old time ^_^
After modo came out, i checked the application and i changed like this.
Modo for modelling and Lightwave for animation, rendering usw.
Now ... ok years ago LOL .. i use only modo ^_^
I love the flexibility of the GUI and the features from modo.
I've try all 3D application from POV to Maya and i know all 3D applications, but modo is my loving favorite n_n

rroy wrote:

I came from 3DsMax to Modo, it took me few months to get used to the UI.
But now I can't imagine going back to Max...