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

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


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, и имеет шанс стать популярным интерфейсом. Плагин находится в активной разработке (стадия BETA-версий).

Возможности

  • Дает возможность управления несколькими панелями через форматирование заголовков (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.13.0
    • library filter tweaks
    • transparent background for scpl (scrolling will be slower)
    • transparent background for library filter & track displays.
    • new Library Filter defaults (hit reset page to get defaults)
  • 0.12.0
    • new «Library Filter» panel. a bit similar to Album List but with the ability to «and» and «not» nodes. also uses the current scpl sort/group settings when sending to playlist. use the sample «library.pp» layout file with a POPUP: to see how to customize.
    • button in settings dialog to clear PVARs
  • 0.11.0
    • window title updates on pause
    • new «track globals» which are also evaluated before sorting/grouping. keep this small and fast.
    • tweaked sort/group criteria to use new track globals
    • «Reset Page» in Panels UI preferences resets to defaults
    • new button POPUP:«layout file» to create a new panels ui window.
  • 0.10.0
    • window size/position stored in pui
    • FILTER: button sorts by current sort/group
    • tray context menu
    • SORTGROUP_PRESET:index button (where index is the number of the preset)
    • $sortgroup_preset(index) returns the name of the specified preset.
    • %sortgroup_preset_count% returns the number of presets
    • %sortgroup% to get the name of the current sort/group criteria
    • changed $playlistname() to %playlistname%
    • %sortgroup% returns the current sort/group.
    • %groupformat% (only vailid in SCPL «Group Display») to get the current group by string.
    • «Singles» layout is chosen as default. Use this + %groupformat% to handle differnt grouping criteria dynamically.
    • changed base path to be relative to layout folder. eg. if you have your pui in ..\foobar2000\PanelsUI\MyTheme\MyTheme.pui, then /images\myimage.jpg would be ..\foobar2000\PanelsUI\MyTheme\images\myimage.jpg
    • customizable double click / middle click actions
    • sort/group settings are remembered by playlist name and applied on playlist changes
    • misc bug fixes / tweaks
  • 0.9.2
    • misc bug fixes / tweaks
    • delay load uxtheme.dll to support win2k
    • $playlistname() to get the playlist name
    • $sortidx(name) returns the sort index or false if not sorted
    • sort/group presets in main menu (view / panels ui / sort\ group by)
    • $extra(FOOBAR2000_VERSION)
  • 0.9.0
    • new sorting/grouping system
  • 0.8.0
    • «windowsize» button will now work inside child track displays
    • new user globals / layout globals will be run before all title formatting in TrackDisplay / SCPL.

layout globals will change between layouts and are saved in the .pui, while user globals stay the same for all layouts.

  • various bug fixes / improvements
  • 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) больше чем один раз), то выравнивание будет происходить с той же точки отсчета.

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

Примечание: эта функция нормально работает только в секции PerSecond.

$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 до ?.

Параметры OPTIONS:

Параметр Пример Примечание
bold
italic
underline
strikeout
uppercase
lowercase
nocleartype
fixedwidth-x
glow-R-G-BНастройки по умолчанию: glowexpand-2 и glowblur-2
glowalpha-xAlpha-значение дня glow или shadow
glowblur-xBlur-значение для glow или shadow
glowexpand-xExpand-значение для glow или shadow
shadowЦвет по умолчанию не изменяем
textalpha-xОтключает cleartype
textblur-x
textexpand-x

Следующий пример создаст шрифт 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

Кнопки

Сортировка

Тегирование

Изображения

Поддерживает форматы изображений: PNG, BMP, GIF,JPG и ICO.

$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. Опции выравнивания.
  • ROTATEFLIP-x, где x (см. таблицу ниже).
Поворот X Поворот Y Поворот XY Нет
Поворот 90° CW 5 7 3 1
Поворот 180° CW 6 4 0 2
Поворот 270° CW 7 5 1 3
Нет 4 6 2 0

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

$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)

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

Поля TrackInfo

%_trackinfo_mode% %_trackinfo_notrack%

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

$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
)

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

%_height%
%_width%

Наши статьи

Ссылки

1) Нажмите кнопку Panels и кликните по выпадающему списку ниже.
3) Custom borders.
4) Точнее, может либо работать, либо не работать совсем
foobar2000/plugins_for_0.9.x/foo_ui_panels_foo_ui_panels.txt · Последние изменения: 2007/06/09 03:30 (внешнее изменение)