В nanoCAD существует возможность добавлять новые пункты меню, создавать собственные панели инструментов (Toolbar) — рис. 1, и ленты (Ribbon) — рис. 2. Все кнопки в меню, панелях инструментов и лентах связаны с командами. Можно добавлять свои команды, использующие API nanoCAD. Команды описываются в DLLбиблиотеках, которые становятся доступны пользователю после загрузки в Платформу.
Рис. 1
Рис. 2
Создание пользовательского меню и панелей инструментов, а также изменение ленты может включать следующие шаги:
- подготовка DLLбиблиотеки с командами;
- создание меню;
- создание панели инструментов;
- создание ленты;
- добавление иконок в меню, панель инструментов и в ленту;
- иконки для темной и светлой схемы;
- создание ресурсной DLL с иконками;
- отключение меню, панели инструментов, ленты.
Подготовка DLLбиблиотеки с командами
За любой кнопкой интерфейса nanoCAD стоит команда, которая выполняет те или иные действия. Используя инструменты API nanoCAD, пользователь может разрабатывать собственные наборы команд. Как правило, разработка нацелена на взаимодействие с пользователем, поэтому DLLбиблиотека содержит команды, которые станут доступны пользователю после загрузки в командной строке Платформы nanoCAD. Для удобства командам могут быть назначены свои кнопки в меню, панелях инструментов и в ленте.
Для этого код должен содержать название команды (атрибут CommandMethod).
Листинг MyApplication.dll (имена команд — HelloHost_Example1 и HelloHost_Example2):
...
public class HelloHost
{
[CommandMethod(“HelloHost_Example1”)]
public void Template1()
{
...
}
...
[CommandMethod(“HelloHost_Example2”)]
public void Template2()
{
...
}
}
...
Полный пример кода содержится в SDK:
\SDK\samples\Mgd\HelloHost\HelloHost.cs
Создание меню
Перейдите в настройки пользовательского интерфейса (НПИ): Сервис ➔ Интерфейс ➔ Настройка пользовательского интерфейса либо используйте команду INTERFACE в командной строке nanoCAD (рис. 3).
Рис. 3
Для кастомизации меню используется отдельный файл, его нужно создать (рис. 4).
Рис. 4
Переключитесь на созданный конфигурационный файл, выбрав его из выпадающего списка (рис. 5).
Рис. 5
Создайте меню верхнего уровня (правая кнопка мыши (ПКМ) ➔ вкладка Главное меню) в созданном конфигурационном файле (рис. 6).
Рис. 6
Результат должен выглядеть так, как показано на рис. 7.
Рис. 7
Создайте описание команд HelloHost_Example1 и HelloHost_Example2 (ПКМ ➔ Создать команду). Команды будут вызываться в пунктах меню (рис. 8).
Рис. 8
Поле Внутреннее имя должно содержать точное название команды, как в DLLприложении (рис. 9 и 10).
Рис. 9
Рис. 10
Добавьте пункты меню, вызывающие команды HelloHost_Example1 и HelloHost_Example2 (рис. 11).
Рис. 11
Сохраните и подключите конфигурационный файл.
При подключении Платформа попросит выбрать файл — нужно указать созданный частичный файл меню: MyMenuConfig.cfg (рис. 12).
Рис. 12
Для применения новых настроек перезагрузите Платформу nanoCAD полностью.
Результат должен быть таким, как показано на рис. 13.
Рис. 13
Примечание. Так как созданное меню использует команды из DLLбиблиотеки, ее загрузку следует автоматизировать, то есть добавить DLL в список автоматически загружаемых приложений.
Создание панели инструментов
Перейдите в настройки пользовательского интерфейса (НПИ): Сервис ➔ Интерфейс ➔ Настройка пользовательского интерфейса либо используйте команду INTERFACE в командной строке nanoCAD. Вкладка Панели инструментов.
В примере используется ранее созданный частичный конфигурационный файл.
Добавьте панель инструментов (щелчок ПКМ в окне вкладки Панели инструментов) и укажите нужные параметры в окне создания панели инструментов (рис. 14).
Рис. 14
Для удобства первой настройки параметру Размещение можно назначить значение Сверху (рис. 15).
Рис. 15
Добавьте кнопки на панель инструментов — они будут вызывать команды из DLLприложения (рис. 16).
Рис. 16
Полученный результат представлен на рис. 17.
Рис. 17
Сохраните и подключите конфигурационный файл. Если конфигурационный файл уже был подключен ранее, пункт 2 (рис. 18) следует пропустить.
Рис. 18
Для применения новых настроек перезагрузите Платформу nanoCAD полностью.
После создания и подключения панель инструментов отображается с системными иконками (рис. 19).
Рис. 19
Созданный частичный конфигурационный файл располагается по следующему адресу:
C:\Users\nanoUser\AppData\Roaming\Nanosoft\nanoCAD x64 XX.x\Config\MyMenuConfig.cfg
При подключении конфигурационного файла в диалоге НПИ название файла будет добавлено в основной конфигурационный файл:
C:\Users\nanoUser\AppData\Roaming\Nanosoft\nanoCAD x64 XX.x\Config\nanoCAD.cfg
Листинг nanoCAD.cfg:
...
[\ribbon]
...
#include “MyMenuConfig.cfg”
...
Создание ленты (Ribbon)
Лента приложения описывается в файле CUIX, который представляет собой ZIPархив, где расположены XMLфайлы, поименованные определенным образом.
Частичные (пользовательские) файлы ленты поддерживаются Платформой, но не поддерживаются диалогом НПИ.
Диалог НПИ умеет редактировать лишь основную ленту приложения, поэтому его имеет смысл применять только в том случае, когда используется подход «настроить и распространить по всем компьютерам».
Для создания частичной (пользовательской) ленты требуется выполнить следующие действия:
1 Создайте три файла: [Content_Types].xml, Menu_Package_Info.xml, RibbonRoot.cui.
Листинг [Content_Types].xml:
Листинг Menu_Package_Info.xml:
Листинг RibbonRoot.cui:
Создайте архив MyRibbon.zip, содержащий указанные выше файлы (на одном уровне, без вложенности в папку), — рис. 20. Не рекомендуется использовать внешние архиваторы и дополнительные параметры сжатия.
Рис. 20
2 Переименуйте файл MyRibbon.zip в MyRibbon.cuix. Например, в командной строке Windows:
C:\Users\nanoUser\AppData\Roaming\Nanosoft\Config\>rename MyRibbon.zip MyRibbon.cuix
3 Расположите MyRibbon.cuix в C:\Users\nanoUser\AppData\Roaming\Nanosoft\nanoCAD x64 XX.x\Config.
4 Добавьте ссылку на MyRibbon.cuix в конец файла: C:\Users\nanoUser\AppData\Roaming\Nanosoft\nanoCAD x64 XX.x\Config\MyMenuConfig.cfg
Листинг MyMenuConfig.cfg:
Примечание. Вносить изменения в файл CUIX можно без перезапуска всей Платформы, достаточно воспользоваться командой RELOADRIBBON.
Результат показан на рис. 21.
Рис. 21
Примечание. Дополнительные (частные) ленты поддерживаются только в формате CUIX.
Добавление иконок в меню, панель инструментов и в ленту
Иконка команды — это свойство описания команды. Если она не указана, будет отображаться иконка по умолчанию.
Настроенная иконка выводится и в меню, и на панель инструментов, и в ленту.
Задать иконку можно в поле Ресурсная DLL (рис. 22). При этом принимаются форматы ICO, BMP и иконки в составе ресурсной DLL (рис. 23).
Рис. 22
Примеры иконок входят в состав SDK: \SDK\samples\Menu\MenuRes\res.
Рис. 23
Результат добавления иконок показан на рис. 24.
Рис. 24
Иконки для темной и светлой схемы
Иконки для светлой и темной схемы разные, предусмотрен механизм автоматического переключения. Если в описании команд прописана иконка myicon.ico, то при переключении в темную схему будет использована иконка myicon_dark.ico (при ее наличии).
В случае использования изображений формата BMP файлы подбираются по следующим правилам:
myBitmap.bmp —светлая схема, 16x16;
myBitmap_large.bmp — светлая схема, 32x32;
myBitmap_dark.bmp — темная схема, 16x16;
myBitmap_dark_large.bmp — темная схема, 32x32.
Создание ресурсной DLL с иконками
Пример проекта Visual Studio, с помощью которого можно сформировать ресурсную DLL с иконками, входит в состав SDK:
\SDK\samples\Menu\MenuRes\MenuRes.vcxproj
Итоговый листинг MyMenuConfig.cfg:
Отключение меню, панели инструментов, ленты
Для отключения ранее подключенного меню или панели инструментов нужно:
- Перейти в настройки пользовательского интерфейса (НПИ): Сервис ➔ Интерфейс ➔ Настройки пользовательского интерфейса либо вызвать команду INTERFACE в командной строке nanoCAD.
- Переключиться на конфигурационный файл меню, который следует отключить.
- Файл ➔ Отключить текущий частичный файл.
Для отключения ленты достаточно убрать ссылку на файл CUIX из частичного конфигурационного файла.