====== Создание плэйлистов из одиночных трэков ======
До сих пор наш дизайн неплохо справлялся с полными альбомами и с отображением файлов по одиночке. А что если встретятся неполные альбомы? Они в той или иной мере сломают нам отображение плэйлиста. И, к сожалению, неполные альбомы встречаются не так уж редко, наверняка у каждого из вас есть папочка с музыкальным ассорти, набранным с различных дисков. Только представьте себе плэйлист содержащий все песни, вышедшие в определенном году, он не отобразится красиво как один альбом, потому что во всех трэках прописаны тэги ''%tracknumber%'', ''%album tracks%'' и ''%album%'', и эти тэги различаются, соответственно они будут рассматриваться как трэки разных альбомов. Мы имеем все шансы получить не только некрасивый внешний вид плэйлиста, но и вероятность того, что некоторая важная информация, например имя исполнителя, не будет отображена. Вы ведь помните, что наш дизайн показывает имя исполнителя только в строчке соответствующей первому трэку, для всех остальных строк эта информация не показывается, поэтому если у нас нет трэка с номером 1, то информации об исполнителе не будет.
К сожалению, нет универсального решения этой проблемы в рамках скрипта для одного плэйлиста, но мы можем разделить наши плэйлисты на 'плэйлисты из альбомов' (полных) и 'плэйлисты из отдельных трэков'. Трудно назвать такой вариант идеальным, но он достаточно хорошо работает. В этом случае нам достаточно будет поместить все неполные альбомы (или одиночные трэки) в нужный плэйлист.
===== Включаем вкладки для плэйлистов =====
Вкладки для плэйлистов по умолчанию выключены в Foobar2000, нам же, для того чтобы легко переключатся между списками альбомов и списками одиночных файлов, нужно их включить. На всех скриншотах вкладки уже на сам деле включены.
{{playlist_tabs.png}}
Перейдите на вкладку **Layout** на странице **Display / Columns UI** настроек. Она должна выглядеть примерно так:
{{layout_tab_before.png}}
- Щелкните правой кнопкой мыши на элементе списка **Columns Playlist** и выберите **Change base / Splitters / Playlist tabs** в меню.
- Теперь выберите мышкой элемент списка **Playlist tabs** и на правой стороне окна снимите галочку **Show caption**.
- Щелкните правой кнопкой мыши на **Playlist tabs** и выберите **Insert panel / Playlist views / Columns Playlist**.
- Нажмите кнопку **Apply** чтобы изменения вступили в силу
У Вас должно получиться дерево с корнем **Playlist tabs** и единственным отростком **Columns Playlist**.
{{layout_tab_after.png}}
У нас появилась новая панель над плэйлистом с единственной вкладкой с именем //Default//. Каждая вкладка в этой панели соответсвует отдельному плэйлисту. Теперь щелкните правой кнопкой мыши на существующей вкладке и выберите **Create playlist**, затем щелкните правой кнопкой на новой вкладке, выберите **Rename** и переименуте ее в //Singles//.
===== Вводим ограничения на существующие столбцы =====
Для плэйлистов из отдельных трэков мы создадим совершенно новый набор столбцов, а это означает, что нам нужно отключить уже существующие столбцы для таких плэйлистов. Мы сделаем это на вкладке **Columns** в **Design / Columns UI / Playlist view**, в которой для каждого столбца есть 2 опции: **Playlist filters** и **Filter playlists**.
{{playlist_filters.png}}
Итак нам нужно спрятать наши столбцы для случая плэйлистов из одиночных файлов. Используемый режим (альбомный вид или одиночные файлы) определяется соотвестивем имени плэйлиста и строки фильтра, заданной в поле **Filter playlists**.
Наш дизайн должен переключатся в режим одиночных файлов, в том случае если имя плэйлиста содержит строку //single// или начинается с //-s-//. Этому соответствует такая строка фильтра:
*single*;-s-*
Джокеры (спец. символы) здесь работают так же, как и в Windows. "Звездочка" (*) подразумевает любое количество символов, в том числе и 0. Знак вопроса (?) подразумевает любой одиночный символ. Одновременно можно задать несколько условий, разделив их точкой с запятой (;). В строках фильтров регистр символов не учитывается.
Таким образом, наша строка в первую очередь применяется к всем именам плэйлистов, в которых есть слово //single//, с произвольным количеством символов до или после этого слова, т.е. это слово может располагаться в любом месте имени. Точка с запятой служит окончанием этого условия, и началом нового, которое применяется ко всем именам начинающихся с фразы //-s-//, после которой может идти любое число символов.
Если Вы не хотите сильно ограничивать себя в именовании плэйлистов, то можете использовать в качестве строки фильтра сочетание "звездочка" ип робел (* ). В этом случае все плэйлисты с именами, заканчивающимися на пробел будут отображаться в режиме одиночных трэков, а остальные - в режиме полных альбомов.
Теперь для кадого из 5 существующих столбцов выберите значение **Hide on playlist** в списке выбора **Playlist filters** и введите строку фильтра. Нажмите **Apply** и убедитесь, что в плэйлисте //Singles// все столбцы исчезли, притом, что плэйлист //Default// не изменился.
===== Создание столбцов для режима одиночных трэков =====
Мы собираемся создать пять новых столбцов для плэйлистов из одиночных трэков, эти столбцы, соответственно, должны отображаться только для таких плэйлистов. Следовательно, для этого нам нужен **Playlist filter** с именем **Show only on playlists**, строка фильтра останется такой же, как и в выше. Не забудьте применить эти настройки к каждому из пяти новых столбцов.
==== Столбец Artist ====
Создайте новый столбец с именем //Artist//, задайте ширину (**Width**) равную **230**, и выравнивание по левому краю (**Aligment** = **Left**). Как следует из названия, в этом столбце будет отображаться имя исполнителя. Соответственно скрипт на вкладке **Display** будет выглядеть так:
[%artist%]
Цвета будут такие: белый текст, на фоне черных и темно-серых перемежающихся полосок, с темно-красными линиями выделения. И это именно те цвета, которые определены в нашем глобальном цветовом скрипте, поэтому во вкладке **Style** ничего делать не надо.
==== Столбец Title ====
Для отображения названия композиции создайте столбец с именем //Tilte//, шириной 240 пикселей, с выравниванием по левому краю. В этом столбце мы также будем отображать нашу анимацию, которую мы создали ранее, это делает скрипт во вкладке **Display** немного сложнее:
$if(%isplaying% , $ifequal($put(foo,$mod(%_time_elapsed_seconds%,8)),0, ')))) ', $select($get(foo), $get_global(cTxtDim)'('$rgb()'))) ', $get_global(cTxtDim)'(('$rgb()')) ', $get_global(cTxtDim)'((('$rgb()') ', $get_global(cTxtDim)'(((( '$rgb(), ')'$get_global(cTxtDim)'((( '$rgb(), '))'$get_global(cTxtDim)'(( '$rgb(), ')))'$get_global(cTxtDim)'( '$rgb() )) ) %title%Скрипт почти полностью повторяет тот что мы создали для столбца [[foobar2000:tagz:tutorial:create_columns#stolbec_tracknumber|Tracknumber в режиме альбомов]], единственное отличие это два пробела, которые рисуются после анимации, для того чтобы отделить название композиции и замыкающую функцию ''$rgb()'', чтобы быть уверенным что цвет вернется к значениям по умолчанию. Для этого столбца понадобится свой скрипт в **Style**, потому что по нашей задумке он должен выглядеть точно так же как столбец //Track// для режима полных альбомов: черный текст на светло-сером фоне, с красным индикатором выделения и темно-серым фоном для текущей проигрываемой композиции. Это будет единственный столбец для этого режима, которому потребуются свои цвета.
$set_style(text,$get_global(cTxtTrk),$get_global(cTxtSel)) $if(%isplaying% , $set_style(back,$get_global(cBgPlay),$get_global(cBgPlay)) , $set_style(back,$get_global(cBgTrk),$get_global(cBgSel)) )Первая строка меняет цвет текста, остальные: фона, сначала для текущей композиции, затем для всех остальных. Не забудьте поставить галочку **Use custom color spec** когда будете вводить скрипт. ==== Столбец Album ==== Этот столбец отображает название альбома, номер трэка и номер диска. Назовите его //Album// и сделайте его шириной 160 пикселей с выравниваем по левому краю. Скрипт для вкладки **Display** для него очень прост: ['('%tracknumber%') '] [%album%][', CD '%disc%] Сначала идет номер трэка в квадратных скобках. Я отказался от отображения в шестнадцатеричном виде по тем же причинам, что и для всплывающей подсказки для системного трэя. После номера отображается название альбома и номер диска, для многодисковых альбомов. Квадратные скобки вокруг каждого элемента гарантируют, что он будет отображаться только при его наличии. ==== Столбец Time ==== Создайте столбец с именем //Time//, шириной 50 пикселей и, на этот раз, с выравниванием по правому краю. **Display** скрипт будет точно таким же, как и скрипт для соответствующего столбца в режиме альбомов. $if(%_time_remaining%, '['%_time_remaining%']', $if2(%_length%,'n/a') ) Он выдает длину трэка или ‘n/a’, а также оставшееся время для проигрываемой композиции. И снова нам не нужно задавать цветов отдельно. ==== Столбец RGain ==== Этот столбец называется //RGain//, шириной 50 пикселей и выровненный по правому краю. Скрипт для него является упрощенной версией соответствующего скрипта для альбомного режима - часть, отвечающая за album gain отсутствует, т.к. наш плэйлист рассчитан на одиночные трэки, то album gain смотрелся бы здесь нелепо. $if2(%__replaygain_track_gain%,'n/a') ===== Результат ===== 5-я стадия закончена. И в месте с ней мы полностью закончили готовый к использованию дизайн для Columns UI. Снова посмотрим на скриншот законченного //Dark Connections//, на этот раз уже в режиме одиночных файлов. {{dark_connections_fb2k_single.png?250x183|Нажмите для увеличения}} Если у вас все еще нет его ... гхм, ну конечно же он у Вас есть ;-), Вы ведь только что его закончили. Тем не менее... ;-) Просто скачайте FCS файл [[Dark Connections 2.0.0]]. Цифра 2 в номере версии означает, что этот дизайн предназначен для Foobar2000, через минуту мы вернемся к версии 1. Если Вам не интересна адаптация //Dark Connections// к Foobar2000 0.8.3, то смело читайте [[заключение]]. Если Вам это интересно, то [[идем дальше]]. ~~DISCUSSION~~