====== Panels UI (foo_ui_panels) ======
**//Страница в разработке...//**
===== Описание =====
Новый интерфейс, объединяющий возможности Track Info Panel и Single Columns Playlist с поддержкой собственных панелей. Использует новые графические возможности Windows Vista, и имеет шанс стать популярным интерфейсом. Плагин находится в активной разработке (стадия BETA-версий).
===== Возможности =====
* Дает возможность управления несколькими панелями через форматирование заголовков (titleformating)
* Содержит в себе компоненты [[foobar2000:plugins_for_0.9.x:single_column_playlist_foo_uie_single_column_playlist]] и [[foobar2000:plugins_for_0.9.x: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 самостоятельный интерфейс, для его использования все равно необходим [[foobar2000:plugins_for_0.9.x:columns_ui]]
{{ foobar2000:plugins_for_0.9.x:foo_ui_panels.jpg?200|Одна из конфигураций под Panels UI}}
===== Установка =====
Установка стандартна: [[http://panels.fooblog2000.com/foo_ui_panels.zip|скачайте последнюю версию]] и разархивируйте dll-файл в [[foobar2000:directories|папку компонентов плеера]]. При апдейте убедитесь, что сохранили старые конфигурации 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”
* Различные багфиксы / улучшения
===== Структура кодирования =====
{{ foobar2000:plugins_for_0.9.x:panulsuiconfig.png?300|Окно конфигурации 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** — название компонента. Для дополнительного синтаксиса обратитесь к выпадающему меню((Нажмите кнопку ''Panels'' и кликните по выпадающему списку ниже.)) в окне конфигурирования Panels UI.
* **x & y** — указывают позицию панели (значения могут быть отрицательными).
* **width & heigh**t — указывают размер панели.
* **options** — пока недоступны.
Следующий пример создаст SCPL(([[http://wiki.foobar2000.ru/foobar2000/plugins_for_0.9.x/single_column_playlist_foo_uie_single_column_playlist|Single Column Playlist Viewer]].)) с координатами 5,5 и размером 200px на 300px. В верхнем правом углу экрана редактирования (где список панелей) появится новая панель "Identification"; нажав на кнопку ''Configure'', вы сможете редактировать код SCPL.
$panel(Identification,Single Column Playlist,5,5,200,300,)
===== Свои границы =====
Добавить свои границы((Custom borders.)) со «стеклянным» эффектом Windows Vista:
$glass(left,right,top,bottom)
===== Математические функции =====
Вычисление математических функций.
$eval()
* Операции: + - * / @ (целочисленный остаток от деления) и {} как замена круглых скобок
//Примечание: эта функция может нестабильно работать((Точнее, может либо работать, либо не работать совсем)) в субпанелях Track Display.//
Пример:
$eval(**{**%_width%**/**3**}**+$get(column.offset))
===== PVARS — постоянные переменные =====
$setpvar(name,value)
$getpvar(name)
* Переменные, подобные общим [[foobar2000:tittleformatting#operacii_s_peremennymi|операциям с переменными]] ($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)'' больше чем один раз), то выравнивание будет происходить с той же точки отсчета.
===Чтобы выравнять текст относительно===
Примечание: эта функция нормально работает только в секции [[foobar2000:plugins_for_0.9.x:foo_ui_panels_foo_ui_panels#tipy_otrisovki|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|{{foobar2000:plugins_for_0.9.x:teststring_bold.png|}}| |
|italic|{{foobar2000:plugins_for_0.9.x:teststring_italic.png|}}| |
|underline|{{foobar2000:plugins_for_0.9.x:teststring_underline.png|}}| |
|strikeout|{{foobar2000:plugins_for_0.9.x:teststring_strikeout.png|}}| |
|uppercase|{{foobar2000:plugins_for_0.9.x:teststring_uppercase.png|}}| |
|lowercase|{{foobar2000:plugins_for_0.9.x:teststring_lowercase.png|}}| |
|nocleartype|{{foobar2000:plugins_for_0.9.x:teststring_nocleartype.png|}}| |
|fixedwidth-x|{{foobar2000:plugins_for_0.9.x:teststring_fixedwidth.png|}}| |
|glow-R-G-B|{{foobar2000:plugins_for_0.9.x:teststring_fixedwidth.png|}}|Настройки по умолчанию: glowexpand-2 и glowblur-2|
|glowalpha-x|{{foobar2000:plugins_for_0.9.x:teststring_fixedwidth.png|}}|Alpha-значение дня glow или shadow|
|glowblur-x|{{foobar2000:plugins_for_0.9.x:teststring_fixedwidth.png|}}|Blur-значение для glow или shadow|
|glowexpand-x|{{foobar2000:plugins_for_0.9.x:teststring_fixedwidth.png|}}|Expand-значение для glow или shadow|
|shadow|{{foobar2000:plugins_for_0.9.x:teststring_shadow.png|}}|Цвет по умолчанию не изменяем|
|textalpha-x|{{foobar2000:plugins_for_0.9.x:teststring_textalpha.png|}}|Отключает cleartype|
|textblur-x|{{foobar2000:plugins_for_0.9.x:teststring_textblur.png|}}| |
|textexpand-x|{{foobar2000:plugins_for_0.9.x:teststring_textexpand.png|}}| |
Следующий пример создаст шрифт 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''.
**Примеры шрифтов и код:**
{{foobar2000:plugins:uie:trackinfo-font-example.png|Примеры шрифтов 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 размером 300x300 пикселей, и с помощью функций **areaWidth** и **areaHeight** оно уменьшено до размера 150x150 пикселей (**imageLeft** = 75 and **imageTop** = 150), то точка в верхнем левом углу финального изображения будет центром оригинального изображения 300x300.|
|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)
Уменьшить изображение до 24x24 (изначальный размер 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%
===== Наши статьи =====
* [[foobar2000:plugins:ui:panelsui:eval function]]
* [[foobar2000:plugins:ui:panelsui:PanelsUI Tabs]]
===== Ссылки =====
* [[http://users.bowie-cass.com/singa/foobar/bin/foo_ui_panels.zip|Скачать]]
* [[http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/Panels_UI_%28foo_ui_panels%29/Change_log|Changelog]]
* [[http://www.hydrogenaudio.org/forums/index.php?showtopic=52465|Дискуссионная страница плагина]] (англ.)
* [[http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Components_0.9/Panels_UI_%28foo_ui_panels%29#Description|Panels UI на Hydrogenaudio]]