Настройка пользовательского интерфейса Fusion 360 при помощи Fusion API - Часть 2
Содержимое
Содержимое пользовательского интерфейса определяется с помощью элементов управления.
Элементы управления
Как панели инструментов, так и группы панелей инструментов панели действуют как контейнеры для управления панели инструментов. Элемент управления панели инструментов - это видимый элемент управления, которые вы видите в пользовательском интерфейсе. Есть четыре различных типа элемента управления: команда, раскрывающийся список, кнопка-разделитель, и сепаратор. На рисунке ниже, все кнопки, которые вы видите, как в панели инструментов панели эскизов, и в связанном раскрывающемся меню являются командными элементами управления и будет вызывать команду при нажатии. Элементы прямоугольник, круг, дуга, и многоугольник являются раскрывающимися элементами управления, потому что они приводят к отображению выпадающего меню при нажатии. Разделительная линия между командами "Создать эскиз" и "Линия" - это сепаратор, который используется для визуального разделения и структурирования содержимого меню.
Элемент управления, показанный ниже является сплит-кнопкой. Она состоит из кнопки с маленькой стрелкой вправо. При нажатии кнопки выполняется команда, изображенная на кнопке, а при щелчке по стрелке появляется возможность выбора других команд. При желании, последняя вызванная команда выпадающего меню может стать командой по умолчанию на верхнем уровне.
Как отмечалось ранее, элементы управления - это видимые элементы, которые вы видите в пользовательском интерфейсе. Тем не менее, сами по себе элементы управления не очень умный и, прежде всего, служит только в качестве места-держатель в панели инструментов. Весь интеллекта (текст, иконки, подсказки и т.д.) который мы видим, связанный с элементом управления, на самом деле происходит от определения команды. Каждый элемент управления ссылается на определение команды, чтобы иметь возможность отображать себя.
Определения команд
Определения команд содержат всю информацию, которая определяет, как элементы управления выглядят и ведут себя. Определение команды непосредственно не видны, но на них ссылаются элементы управления и использует информацию в определении команды, для того, чтобы себя отобразить. В группе панелей инструментов у вас есть подмножество команд из выпадающего меню, также отображаемые в панели инструментов. В этом случае это два уникальных элемента управления (один в панели и один в выпадающем меню), но оба элемента управления ссылаются на одно и то же определение команды и будут вести себя одинаково. Если свойства определения команды будут изменены, эти изменения автоматически отображаются в обоих элементах управления. Например, если свойство определения команд IsEnabled установлен в значение False, оба элемента управления станут отключены. Кроме того, когда пользователь нажимает элемент управления, это действие прошло в определение команды и событие commandCreated определения команды выполняется с создателем определения команды, чтобы они могли осуществлять любое действие, которое команда должна выполнять.
Чтобы создать новый элемент управления, вы должны сначала создать определение команды. Существует правило, один-к-одному между определением команды и тем, что пользователь подразумевает под командой. Есть три различных типа определений команд (кнопка, флажок, и список), и вы выбираете тип на основании того, как вы хотите, чтобы команда отображалась в пользовательском интерфейсе. Определение команды кнопки приводит к созданию кнопки, в то время как определение команды флажок создает один флажок. Пример ниже показывает элемент управления раскрывающегося списка, который содержит четыре команды флажок (сетка макета, фиксация сетки макета, привязка к сетке, и инкрементное перемещение) и две команды кнопок (Настройки сетки и задать шаг инкремента).
Определение команды список определяет команду, которая будет отображаться в качестве выпадающего меню с привязанным списком флажков, переключателей или текстовых элементов. Ниже приведен пример списка флажок. Когда нажаты "Эффекты", отображается раскрывающееся меню и продолжает отображаться, пока пользователь ставит и снимает отметки в списке. Список помнит все изменения, так что он будет показывать текущее состояние во время следующего отображения.
Ниже приведен пример списка переключателей. Когда нажат "Визуальный стиль", отображается раскрывающийся список и пользователь может выбрать один элемент в списке, а затем в раскрывающийся список скрывается. Как вы и ожидаете от элементов управления "переключатель", только один пункт может быть выбран в за один раз. Список помнит выбранный элемент, поэтому в следующий раз отображения он будет отображаться он будет показывать выбранный пункт.
Ниже приведен пример стандартного списка элементов, который состоит из списка текстовых элементов. Когда нажат пункт "Ресурсы по программированию", отображается раскрывающийся список и пользователь может выбрать один элемент из списка, а затем раскрывающийся список закрывается. В случае стандартного списка элементов, нет понятия пункта или состояния "выбранного элемента", так что ничего предварительно не выбрано, когда список отображается.
В API есть один тип объекта CommandDefinition, но связанный с каждым CommandDefinition является объект ButtonControlDefinition, CheckBoxControlDefinition или ListControlDefinition, все происходят из общего класса ControlDefinition. Это представлено в объектной схеме моделей, которая показана ниже, вместе с группой панелей инструментов, панелью инструментов, рабочим пространством и различными объектами ToolbarControl, которые были рассмотрены ранее.
Ниже приведен код Python, который демонстрирует использование некоторых из этих объектов путем создания кнопки и добавления ее в нижней части панели INSPECT рабочего пространства модели. Он также подключается к созданному командой событию кнопки чтобы получить уведомление, когда кнопка нажата. Вы можете прочитать больше об обработке событий в теме События .
- # Получить объект UserInterface и собрать CommandDefinitions.
- ui = app.userInterface
- cmdDefs = ui.commandDefinitions
- # Создать определение команды кнопки.
- buttonExample = cmdDefs.addButtonDefinition('MyButtonDefId', 'Sample Button',
- 'Пример всплывающей подсказки кнопки',
- './/Resources//Sample')
- # Подключение к созданному командой событию.
- buttonExampleCreated = ButtonExampleCreatedEventHandler()
- buttonExample.commandCreated.add(buttonExampleCreated)
- handlers.append(buttonExampleCreated)
- # Получить панель Inspect.
- inspectPanel = ui.toolbarPanels.itemById('InspectPanel')
- # Добавить кнопку в нижней части.
- buttonControl = inspectPanel.controls.addCommand(buttonExample, 'MyButtonControlID')
- # Сделать кнопку доступной в панели.
- buttonControl.isPromotedByDefault = True
- buttonControl.isPromoted = True)
Источник: http://fusion360.autodesk.com/resources
Обсуждение: http://adn-cis.org/forum/index.php?topic=2833
Опубликовано 29.06.2015Отредактировано 06.07.2015 в 13:25:36