Здесь показаны различия между двумя версиями данной страницы.
Следующая версия | Предыдущая версия | ||
foobar2000:tagz:tutorial:create_single_mode [2006/06/09 10:17] Mishail создано |
foobar2000:tagz:tutorial:create_single_mode [2006/06/09 12:35] Mishail |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Создание плэйлистов из одиночных трэков ====== | ||
- | |||
- | До сих пор наш дизайн неплохо справлялся с полными альбомами и с отображением файлов по одиночке. А что если встретятся неполные альбомы? Они в той или иной мере сломают нам отображение плэйлиста. И, к сожалению, неполные альбомы встречаются не так уж редко, наверняка у каждого из вас есть папочка с музыкальным ассорти, набранным с различных дисков. Только представьте себе плэйлист содержащий все песни, вышедшие в определенном году, он не отобразится красиво как один альбом, потому что во всех трэках прописаны тэги ''%tracknumber%'', ''%album tracks%'' и ''%album%'', и эти тэги различаются, соответственно они будут рассматриваться как трэки разных альбомов. Мы имеем все шансы получить не только некрасивый внешний вид плэйлиста, но и вероятность того, что некоторая важная информация, например имя исполнителя, не будет отображена. Вы ведь помните, что наш дизайн показывает имя исполнителя только в строчке соответствующей первому трэку, для всех остальных строк эта информация не показывается, поэтому если у нас нет трэка с номером 1, то информации об исполнителе не будет. | ||
- | |||
- | К сожалению, нет универсального решения этой проблемы в рамках скрипта для одного плэйлиста, но мы можем разделить наши плэйлисты на 'плэйлисты из альбомов' (полных) и 'плэйлисты из отдельных трэков'. Трудно назвать такой вариант идеальным, но он достаточно хорошо работает. В этом случае нам достаточно будет поместить все неполные альбомы (или одиночные трэки) в нужный плэйлист. | ||
- | |||
- | ===== Включаем вкладки для плэйлистов ===== | ||
- | |||
- | Вкладки для плэйлистов по умолчанию выключены в Foobar2000, нам же, для того чтобы легко переключатся между списками альбомов и списками одиночных файлов, нужно их включить. На всех скриншотах вкладки уже на сам деле включены. | ||
- | |||
- | {{playlist_tabs.png}} | ||
- | |||
- | Перейдите на вкладку **Layout** на странице **Display / Columns UI** настроек. Она должна выглядеть примерно так: | ||
- | |||
- | {{layout_tab_before.png}} | ||
- | |||
- | 1. Щелкните правой кнопкой мыши на элементе списка **Columns Playlist** и выберите **Change base / Splitters / Playlist tabs** в меню. | ||
- | 2. Теперь выберите мышкой элемент списка **Playlist tabs** и на правой стороне окна снимите галочку **Show caption**. | ||
- | 3. Щелкните правой кнопкой мыши на **Playlist tabs** и выберите **Insert panel / Playlist views / Columns Playlist**. | ||
- | 4. Нажмите кнопку **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** немного сложнее: | ||
- | |||
- | <html><pre class="code"> | ||
- | $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% | ||
- | </pre></html> | ||
- | |||
- | Скрипт почти полностью повторяет тот что мы создали для столбца [[Tracknumber в режиме альбомов]], единственное отличие это два пробела, которые рисуются после анимации, для того чтобы отделить название композиции и замыкающую функцию ''$rgb()'', чтобы быть уверенным что цвет вернется к значениям по умолчанию. | ||
- | |||
- | Для этого столбца понадобится свой скрипт в **Style**, потому что по нашей задумке он должен выглядеть точно так же как столбец //Track// для режима полных альбомов: черный текст на светло-сером фоне, с красным индикатором выделения и темно-серым фоном для текущей проигрываемой композиции. Это будет единственный столбец для этого режима, которому потребуются свои цвета. | ||
- | |||
- | <html><pre class="code"> | ||
- | $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)) | ||
- | ) | ||
- | </pre></html> | ||
- | |||
- | Первая строка меняет цвет текста, остальные: фона, сначала для текущей композиции, затем для всех остальных. | ||
- | |||
- | Не забудьте поставить галочку **Use custom color spec** когда будете вводить скрипт. | ||
- | |||
- | ==== Столбец Альбом ==== | ||
- | |||
- | Этот столбец отображает название альбома, номер трэка и номер диска. Назовите его //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, то смело читайте [[заключение]]. Если Вам это интересно, то [[идем дальше]]. | ||