Инструменты пользователя

Инструменты сайта


foobar2000:plugins_for_0.9.x:foo_ui_panels_foo_ui_panels

Это старая версия документа!


Panels UI (foo_ui_panels)

Описание

Новый интерфейс, объединяющий возможности Track Info Panel и Single Columns Playlist с поддержкой собственных панелей. Использует новые графические возможности Windows Vista, и имеет шанс стать популярным интерфейсом. Плагин находится в активной разработке.

Возможности

  • Дает возможность управления несколькими панелями через форматирование заголовков (titleformating)
  • Содержит в себе компоненты Single Column Playlist Viewer (foo_uie_single_column_playlist) и Track Info Panel Mod (foo_uie_trackinfo_mod) и их функции
  • Имеет свои панели
    $panel(ID,Name,x,y,width,height,options)
  • Добавление границ с эффектом стекла (Windows Vista)
    $glass(left,right,top,bottom)

Требования

  • Foobar2000 0.9.4+
  • Хотя Panels UI самостоятельный интерфейс, для его использования все равно необходим Columns UI (foo_ui_columns)

Скриншот

Одна из конфигураций под Panels UI

Установка

Установка стандартна: скачайте последнюю версию и разархивируйте dll-файл в папку компонентов плеера. При апдейте убедитесь, что сохранили старые конфигурации Panels UI, сделайте бекап.

Changelog

  • 0.7.5
    • Tooltips for buttons. (add TOOLTIP:mytooltip or TOOLTIP:”my tooltip” to override the default)
    • Free cached images in not used for a while
    • Options for WINDOWSIZE to set anchor points (eg: WINDOWSIZE:x:y:LEFT:TOP, WINDOWSIZE:x:y:RIGHT:BOTTOM, etc)
  • 0.7.0
    • Multiple buttons over same area can be executed
    • Перемещение окна кликнув по пустому пространству
    • Кнопка для установки размера окно: WINDOWSIZE:width:height
    • Папка PanelsUI перемещена из папки профиля в папку foobar2000
    • Новые опции для кнопок — “context-selected” и “context-playing”
    • Различные багфиксы / улучшения

Структура кодирования

Окно конфигурации Panels UI

Чтобы открыть окно конфигурации, кликните правой кнопкой по заголовку foobar2000 и выберите Settings… из контекстного меню. Альтернативный вариант: Ctrl+P → Display → PanelsUI → Edit Layout.

Область редактирования

Для облегчения кодирования начиная с версии 0.3.0 в область кодирования встроен редактор с возможностью подсветки на базе scintilla.

Чтобы изменить размер шрифта в области редактирования, нажмите Ctrl+колесо мышки вверх/вниз.

Формат

Табуляция и пробелы игнорируются.

Пример:

$if(%isplaying%,
 	Playing
 ,
 	Not Playing
 )

Если вы хотите добавить пробелы в код, то заключите их в символы апострофа «'».

 test
 '     'test
 test

Типы отрисовки

Позволяют вам экономить ресурсы путем разделения кода на разные секции в зависимости от требований по прорисовке изображений или другой информации. Доступно четыре различных типа прорисовки: global, background, per track и per second.

  • Global — глобальные значения.
  • Background — фоновый материал (например, изображения). Отрисовывается однократно.
  • PerTrack — данные, которые меняются каждый трек(%album%, %artist%, и т.д.). Неплохо в этой секции размещать и кнопки тоже.
  • PerSecond — данные, которые нуждаются в ежесекундном обновлении (%playback_time% и тому подобные).

Примечание: It has to be the exact same syntax (capitalization, etc.) FIXME

Пример:

 // Global
 $if($meta_test(album artist),$puts(album_is_va,1))
 $puts(fontStyle,$font(Calibri,10,bold,0-255-128))
 [[...]]
 // Background
 $imageabs(,,imagesbground.png,)
 [[...]]
 // PerTrack
 $button(0,0,0,0,0,0,imagesplay.png,imagesplay_hover.png,'Play or Pause',)
 [[...]]
 // PerSecond
 %playback_time%
 [[...]]

Панели

$panel(ID,Name,x,y,width,height,options)

* ID — идентификатор. * Name — название компонента. Для дополнительного синтаксиса обратитесь к выпадающему меню1) в окне конфигурирования Panels UI. * x & y — указывают позицию панели (значения могут быть отрицательными). * width & height — указывают размер панели. * options — пока недоступны.

Следующий пример создаст SCPL2) с координатами 5,5 и размером 200px на 300px. В верхнем правом углу экрана редактирования (где список панелей) появится новая панель «Identification»; нажав на кнопку Configure, вы сможете редактировать код SCPL.

$panel(Identification,Single Column Playlist,5,5,200,300,)

Свои границы

Добавить свои границы3) со «стеклянным» эффектом Windows Vista:

$glass(left,right,top,bottom)

Математические функции

Вычисление математических функций.

$eval()
  • Операции: + - * / @ (целочисленный остаток от деления) и {} как замена круглых скобок

Примечание: эта функция может нестабильно работать4) в субпанелях Track Display.

Пример:

$eval(**{**%_width%**/**3**}**+$get(column.offset))

PVARS — постоянные переменные

$setpvar(name,value)
$getpvar(name)
  • Переменные, подобные общим операциям с переменными ($put, $puts & $get) и добавленной возможностью хранить свои значения постоянно.
  • Могут быть назначены/вызваны отовсюду внутри Panels UI (Panels UI + Track Display и Single Columns Playlist).

Пример:

Код:

$getpvar(foo,bar)
$setpvar(foo,bar)
$getpvar(foo)
$getpvar(Foo)
$setpvar(foo,2000)
$getpvar(foo)<\/code>

На выходе:

  [[unknown|pvar]]

  bar
  bar

  2000

Вы можете настроить три возможных раскладки используя PVAR'ы.

 $select($getpvar(display),
 //Код первой панели
 ,
 //Код второй панели
 ,
 //Код третьей панели
 )

Выравнивание текста

Обычное выравние текста

$align(H,V)

Параметр Определение Примечание
(H)orizontalГоризонально. Может принимать значения left, center и right (слева, по центру или справа).
(V)erticalВертикально. Может принимать значения top, middle и bottom (сверху, по середине или снизу).top будет проверяться на перезапись.

Если с помощью этой функции выравнять несколько раз подряд (например, $align(left,middle) больше чем один раз), то выравнивание будет происходить с той же точки отсчета.

Чтобы выравнять текст относительно

$alignset() - $alignrel(H,V)

Параметр Определение Примечание
(H)orizontalГоризонтально. Может принимать значения left, center и right (слева, по центру или справа).
(V)erticalВертикально. Может принимать значения top, middle и bottom (сверху, по середине и внизу).top будет проверяться на перезапись.
$alignset()Устанавливает точку отсчета для $alignrel(H,V).Может применяться как замена функции $char(10), работает для всех следующих $alignrel(H,V).

Например:

$alignrel(left,middle) //Линия1_слева// $alignrel(center,middle) //Линия1_по_центру// $alignset() $alignrel(right,middle) //Линия2_справа//

Чтобы выравнять текст абсолютно (без проверки на перезапись текста)

$alignabs(X,Y,w,h,H,V)

Параметр Определение Примечание
X & YКоординаты позиции границ прямоугольника в котором будет происходить выравниваниеЗначения могут быть отрицательными.
(W)idth & (H)eightШирина и высота прямоугольника в котором будет происходить выравнивание текста.
H & Vсм. таблицу выше

Примечание: $alignabs(H,V) может быть использована для относительного выравнивания без проверки на перезапись.

Стили шрифтов

$font(NAME,SIZE,OPTIONS,COLOR)

Параметр Определение Примечание
NAMEНазвание шрифта.
SIZEРазмер шрифта.
OPTIONSОпции. Могут иметь значение bold, italic, underline, strikeout, nocleartype, glow- и shadow Также, возможно совмещать значения, например, «bolditalicunderlineglow-» даст комбинацию этих эффектов. Значения по-умолчанию для glow — glowexpand-2 и glowblur-2.
COLORЦвет. Цвет шрифта указывается в пространстве R-G-B.Например, 255-0-0 даст красный цвет.

Используйте SYSCOL-x для использования стандартных цветов из вашей темы Windows (msstyle). X — это номер цвета от 0 до ?.

Следующий пример создаст шрифт Arial, размером 10 пикселей, жирный, с синим эффектом glow и системным цевтом номер #15 (фон):

$font(Arial, 10, bold shadow glow-0-0-255,SYSCOL-15)
  • Вы можете сохранять и восстанавливать значения переменных шрифта используя функции $put/$puts/$get (например, $puts(font,$font(Calibri,9,bold,100-100-100))). Восстанавливать значения необходимо после использования функции $alignrel, но не перед ней.
  • Также, изменение настроек шрифта с помощью $get не оказывает никакого воздействия на $calcwidth/$calcheight. Эти функции используют последнее реальное значение параметров $font, даже если их задавали функцией $puts.
  • При использовании продвинутых эффектов отключается сглаживание (антиалиасинг) шрифтов (даже для alpha blending). Также, следующий текст влияет на предыдущий, так что, возможно, вам придется добавлять пробелы либо использовать функцию $alignabs.

Примеры шрифтов и код:

Примеры шрифтов Single Columns Playlist

Изображения

$imageabs

$imageabs(X,Y,imageName,imageOptions)
Параметр Определение Примечание
X & YАбсолютная позиция изображения с отсчетом от верхнего левого угла.
imageNameОтносительный путь к изображению из папки, где хранится конфигурация плеера.Если отключена поддержка профилей, то папка конфигурации будет той же, куда установлен плеер. Однако, если включена поддержка профилей, то папка будет расположена в C:\Documents and Settings\ИМЯ ПОЛЬЗОВАТЕЛЯ\Application Data\foobar2000\
imageOptionsМожет включать в себя другие параметры, влияющие на представление изображения.Описание параметров ниже.

Параметры imageOptions:

  • ALPHA-x. Прозрачность изображения; указывается целым числом от 0 (полностью прозрачно) до 255 (непрозрачно).
  • FLOW. Обтекание текста вокруг текста.

Пример:

$imageabs(0,0,%папка_конфигурации_foobar%\картинки\моя_картинка.png,flow alpha-150)

$imageabs2

$imageabs2(areaWidth,areaHeight,imageLeft,imageTop,imageWidth,imageHeight,areaLeft,areaTop,imagePath,imageOptions)

Параметр Определение Примечание
areaWidth & areaHeightПараметры, управляющие размером изображения. Позволяют только уменьшать изображение.
imageLeft & imageTopУказывают на позицию уменьшенного изображения от левого верхнего угла.imageLeft — горизонтальная позиция уменьшенного изображения, imageTop — вертикальная позиция не уменьшенного изображения. Если у вас есть изображение в формате JPEG размером 300×300 пикселей, и с помощью функций areaWidth и areaHeight оно уменьшено до размера 150×150 пикселей (imageLeft = 75 and imageTop = 150), то точка в верхнем левом углу финального изображения будет центром оригинального изображения 300×300.
imageWidth & imageHeightОбрезание ширины и высоты, соответственно обрезание сжатого изображения.Значения, которые больше, чем расстояние от обрезанного угла до границ уменьшенного изображения будут игнорироваться (обрезание как таковое будет пропущено). При значениях равных или больших, чем 32768, изображение вовсе не будет показано.
areaLeft & areaTopРасстояние, соответственно, влево и вниз, от верхнего левого угла панели до верхнего левого угла финального уменьшенного и обрезанного изображения.
imagePathАбсолютный или относительный путь к папке с изображениями.Для относительных путей нужно поставить слеш ('/') в начале пути. (например, «/путь\до\изображение.jpg»). Когда будете использовать относительные пути, учтите, что корневая папка — это инсталляционная папка foobar2000.
imageOptionsОпции изображения.Описание параметров ниже.

Параметры imageOptions:

  • ALPHA-x. Прозрачность изображения; указывается целым числом от 0 (полностью прозрачно) до 255 (непрозрачно).
  • NOKEEPASPECT. При изменении размера игнорировать пропорции изображения (aspect ratio).
  • VALIGN-T (vertical align-TOP), VALIGN-B, HALIGN-L, HALIGN-R. Опции выравнивания.

Более просто:

$imageabs2(Размеры сжатия,Положение угла обрезания,Размеры обрезания,Расположение панели,Путь,Опции изображения)

Пример:

$imageabs2(48,48,0,0,48,48,20,20,C:\Program Files\foobar2000 v0.9\icons\$replace(%filename_ext%,%filename%'.',)_48x48.png,alpha-192)

Уменьшить изображение до 24×24 (изначальный размер 48х48) без обрезания:

$imageabs2(**24**,**24**,0,0,**24**,**24**,20,20,/icons\$replace(%filename_ext%,%filename%'.',)_48x48.png,alpha-192)

Отрисовка прямоугольника

$drawrect(X,Y,W,H,brushColor-R-G-B penColor-R-G-B OPTIONS)

X & YПозиция прямоугольника относительно верхнего левого угла.Если эти параметры пропустить или выставить на ноль, то они заменятся минимальными значениями относительно $pad.
W & HОпределяет ширину и высоту прямоугольника.Если эти параметры пропустить или выставить на ноль, то они заменятся минимальными значениями относительно $pad.
brushColor & penColorЦвета фона и границы в пространстве R-G-B.Например, 255-0-0 даст красный цвет. Параметры могут быть отключены с помощью -null (например, brushColor-null). Используйте SYSCOL-x для использования стандартных цветов из вашей темы Windows (msstyle). X — это номер цвета от 0 до ?.
OPTIONSОпции прямоугольника.Описание параметров ниже.

Параметры OPTIONS:

При использовании сложных эффектов, таких как alpha blending или blurring, прямоугольник рисуется только используя цвет границы. Если вы укажите цвет фона, то возьмется цвет границы.

  • ALPHA — интервал 0-255.
  • EXPAND — расширить прямоугольник на столько-то пикселей.
  • BLUR — размазать (заблёрить) изображение с таким-то значением.
  • WIDTH — ширина границы (рисуется цветом границы). Значение по умолчанию — 1, если не отключено при помощи pencolor-null. Установка значения в 0 не отключает границу (значение остается 1).

Пример:

 $drawrect(,,,,pencolor-0-0-255 brushcolor-null width-2 alpha-100 blur-2)

Другие функции

Вычисление размеров

Следующие функции возвращают размеры (в пикселях) элемента плейлиста или группы, в зависимости используете ли вы эти функции в item display или group display окна настроек Single Column Playlist:

%_height%
%_width%

Следующие функции возвращают индекс (номер) элемента 5) в группе и количество элементов в группе:

%_itemindex%
%_itemcount%

Подобным же образом, следующие функции возвращают индекс (номер) элемента 6) в плейлисте и количество элементов плейлиста:

%list_index%
%list_total%

Следующие функции возвращают ширину и высоту текста:

$calcwidth(//Text1//)
$calcheight(//Text1//)
$calcwidth(%artist%) не возвращает не длину //%artist%//, а скорее ширину текста, хранимого в теге artist.

Проверка на выбор файла

Если курсор в плейлисте стоит на элементе (треке).

%_selected%

Пример:

$if(%_selected%,$drawrect(2,1,$sub(%_width%,4),16,brushcolor-233-243-247 pencolor-203-233-246))

Проверка на существование файла

$fileexists(//Путь к файлу//)

Следующий пример ищет folder.* где расположены музыкальные файлы:

$if($fileexists($replace(%path%,%filename_ext%,folder.*),
Yes
,
No
)

Перемещение треков или групп в плейлисте

Нажмите Alt и перетащите мышкой, либо нажмите Alt+вверх/вниз

Получение глобальных переменных Columns UI

$get_global(//переменная//)

Синтакс такой же, как и в Columns UI.

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

Запрет заголовка

!noheader!

Пример:

//В секции 'Group by'//
$if(%tracknumber%,%artist%,!noheader!)

Советы и секреты

Как растянуть изображение на несколько рядов

растянуть изображение на несколько рядов можно при помощи %tracknumber% или %list_index%, чтобы генерировать вертикальное смещение каждый раз при прорисовке изображения на каждом ряду. Код ниже поместите item display.

Пример Tracknumber:

Этот пример использует %tracknumber% для определения расположения путем умножения высоты ряда на tracknumber:

$imageabs(X OFFSET,$add(STARTING Y OFFSET,$mul(-ROW HEIGHT,%tracknumber%)),IMAGE DIRECTORY/IMAGE.png,)

Например, при высоте ряда 26 пикселей и горизонтальной (x) позицией 0 и начальный вертикальным смещением 25:

 $imageabs(0,$add(25,$mul(-26,%tracknumber%)),images/test.png,)

Пример List Index:

Другой алгоритм использует %list_index%. Этот пример рисует левую и правую границу single playlist column. Изображение шире, чем ширина ряда, поэтому нужно пользоваться техникой смещения.

  • Сначала определим ширину и высоту изображения:
$puts(art.width,30)
$puts(art.height,60)
  • Расчитаем число рядов, необходимое для отображения изображения:
$puts(art.num,$add($div($mul(%list_index%,%_height%),$get(art.height)),1))
  • Используем высоту и количество изображений для генерации смещения для каждого элемента:
$puts(art.offset,-$sub($sub($mul(%list_index%,%_height%),$mul($sub($get(art.num),1),$get(art.height))),%_height%))
  • Используем смещение:
$imageabs(0,$get(art.offset),images\column.left.png,)
  • Используем ширину для смещения по горизонтали для самой правой границы:
$imageabs($sub(%_width%,$get(art.width)),$get(art.offset),images\column.right.png,)

Группа, основанная на имени плейлиста

Используем компонент Cwbowron's Title formating (foo_cwb_hooks):

$if($strstr(%cwb_activelist%,'TERM'), SORT BY IF MATCH, ELSE SORT BY THIS)

Например,

$if($strstr(%cwb_activelist%,'-s-'), %rating%, %album%)

Этот код группирует альбом для всех плейлистов, если в плейлисте нет '-s-'. Если -s- есть, то элементы сгруппируются по рейтингу. (Strstr сравнивает две строки чтобы проверить наличие -s- в cwb_activeplaylist)

Примеры

Толкование настройки по умолчанию

Group By

  • Группировка элементов по альбому:
%album%

Item Display

  • Рисует заполненный прямоугольник стандартным системным цветом «SYSCOL-13»:
$if(%_selected%,$drawrect(0,0,0,0,brushcolor-SYSCOL-13 pencolor-null))
  • Рисует границу вокруг выбранного элемента цветом границы (системным цветом «SYSCOL-6»):
$if(%_focused%,$drawrect(0,0,0,0,brushcolor-null pencolor-SYSCOL-6))
  • Меняет текст выбранного элемента, используя разный цвет:
$if(%_selected%,$textcolor(SYSCOL-9),$textcolor(SYSCOL-8))
  • Устанавливает pagging рядов (horizontal, vertical):
$padding(4,0)
  • Основной текст в каждом ряду выравнивается top left и right:
$align(left,top)%list_index%
$align(right,top)%title%

Group Display

  • Рисует прямоугольник заголовка группы
$drawrect(0,0,0,0,brushcolor-130-130-255 pencolor-null)
  • Устанавливает pagging заголовка:
$padding(4,0)
  • Добавляет информацию альбома, дату и данные композитора:
$align(left,top)$font(,,bold,64-0-0)%album% '['%date%']'
$align(right,top)$font(,,bold,0-64-0)%composer%

(Values displayed are always those of the first item, without regard to the values of other items in the group.)

Наши статьи

Ссылки

1)
Нажмите кнопку Panels и кликните по выпадающему списку ниже.
3)
Custom borders.
4)
Точнее, может либо работать, либо не работать совсем
5) , 6)
Под элементом подразумевается трек в плейлисте
foobar2000/plugins_for_0.9.x/foo_ui_panels_foo_ui_panels.1173861366.txt.gz · Последние изменения: 2007/03/14 11:36 — Spike