====== Создание плэйлистов из одиночных трэков ====== До сих пор наш дизайн неплохо справлялся с полными альбомами и с отображением файлов по одиночке. А что если встретятся неполные альбомы? Они в той или иной мере сломают нам отображение плэйлиста. И, к сожалению, неполные альбомы встречаются не так уж редко, наверняка у каждого из вас есть папочка с музыкальным ассорти, набранным с различных дисков. Только представьте себе плэйлист содержащий все песни, вышедшие в определенном году, он не отобразится красиво как один альбом, потому что во всех трэках прописаны тэги ''%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~~