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