AIMP4: Skin Engine — пользовательские провайдеры. Часть 2

Вторую часть статьи я посвятил новому типу пользовательского провайдера – CustomContextMenu.

Прошлые статьи по теме:

  1. AIMP4: Skin Engine
  2. AIMP4: Skin Engine – элементы управления. Часть 1
  3. AIMP4: Skin Engine – элементы управления. Часть 2
  4. AIMP4: Skin Engine – пользовательские локализации
  5. AIMP4: Skin Engine – графика
  6. AIMP4: Skin Engine – оптимизации
  7. AIMP4: Skin Engine – пользовательские провайдеры. Часть 1

Пользовательское контекстное меню

CustomContextMenu позволит создать свое собственное контекстное меню и вынести в него любую из команд, что представлена стандартным или пользовательским провайдером.

Как и любой другой пользовательский провайдер, контекстное меню создается через одноименный диалог. Провайдер не имеет точек доступа, а в качестве параметров выступает редактор пунктов меню:

custom context menu editor

Каждому из пунктов меню можно задать заголовок (как напрямую, так и посредством биндинга), иконку (чей размер должен быть строго равен 16х16 пикселей), а так же связи:

context menu item access points

State, в данном случае, отвечает за состояние “галочки”, что вы можете сейчас наблюдать у некоторых пунктов стандартных меню.

Для добавления разделителя, необходимо задать пункту меню в качестве заголовка ‘-‘. Непосредственно перед показом меню из него временно убираются невидимые пункты меню, а так же разделители, что располагаются по краям меню после этой операции. Помимо этого разделители, идущие друг за другом, схлопываются до одного. 

Пользовательское контекстное меню можно привязать к элементу управления двумя способами: путем его назначения через свойство PopupMenu у элемента или посредством биндинга:

context menu binding

4 thoughts on “AIMP4: Skin Engine — пользовательские провайдеры. Часть 2

  1. ScrollUnLock

    Иконка для пункта меню указывается индивидуально или из списка стандартных иконок?

  2. Zhenya

    Свойство Caption поддерживает макросы пользовательских локализаций?

    Видимо, будет ещё третья часть про пользовательские провайдеры?
    Потому, что в первых двух записях не было сказано про “провайдеры-скрипты”.

    1. Artem Post author

      Свойство Caption поддерживает макросы пользовательских локализаций?

      Да, естественно

Leave a Reply