Сборка от LUR (21.09.24)

Список разделов foobar2000 Сборки Релизы сборок

Описание: Проверенные финальные версии сборок.

Сообщение #1 LUR » 20.01.2013, 23:49

Сборка представляет собой портативную версию плеера с набором плагинов и конфигурацией, готовую к использованию.
Представлена в двух языковых вариантах: английском и русском. Номера версий всех модулей в обоих вариантах одинаковы.

S1.jpg
S2.jpg

S3.jpg
S4.jpg


Код: Выделить всё
Дата сборки: 21.09.2024
Автор: LUR
Версия: 240921

Известные плюсы и минусы сборки:
Код: Выделить всё
+ Лаконичный интерфейс с оригинальной конфигурацией и быстрым доступом к основным функциям сборки.
+ Быстрое переключение между двумя вариантами плейлиста: с обложками и без.
+ Русский вариант сборки: русифицированы все модули сборки: стандартный набор плеера и плагины. Русификация обновляется в достаточно короткие сроки после выхода обновлений стабильной версии плеера.

- Русский вариант сборки: ввиду известных причин невозможности русифицировать плеер в лоб, перевод производится по принципу "что вижу - то перевожу". Следовательно, перевод постоянно находится в процессе дополнения и корректировки.

В основе лежит полная версия плеера:

foobar2000 v2.1.6 x86

Список дополнительных плагинов
foo_cuefixer 1.3.2
foo_openlyrics 1.11
foo_out_asio 2.2.3
foo_playcount 3.1.5
foo_pqview 0.2
foo_quicksearch 3.9
foo_run 0.4.5
foo_ui_columns 2.1.0
foo_ui_hacks 2013-02-19
foo_uie_albumlist 2.0.3
foo_uie_esplaylist 0.1.3.9
foo_uie_jsplitter 3.6.1.8
foo_uie_vis_channel_spectrum 0.17.2
foo_vis_shpeck 0.3.7
foo_vis_vumeter 2013-02-16
foo_wave_minibar_mod 1.2.58
Предустановленные кодировщики
● LAME 3.100 x64
FLAC 1.4.3 x64
● Refalac 1.82 x64
● Opus 1.5.2-21 x64
● OggEnc 2.88 x64 (libVorbis v1.3.7)
Скрипты отображения информации
Информация о файле: Properties & properties file (ml) (version "04112018") © kgena_ua
Информация об исполнителе: Biography, Albums, Title, Similar artist, Lyrics info (version "03052022") © kgena_UA

СКАЧАТЬ

===== УСТАНОВЩИК =====> (пароль: LUR2024)

ЗЕРКАЛО
===== УСТАНОВЩИК =====> (пароль: LUR2024)


УСТАНОВКА
Требования к запуску сборки: установленные библиотеки Microsoft Visual Studio 2015
Также визуализация работает при помощи DirectX 9, поэтому в современных операционных системах его необходимо предварительно установить

Для сборки создан установщик. Просто запустите его на выполнение и следуйте инструкциям, отображаемым на экране.
Имеется возможность выбрать язык сборки: русский или английский.

15.png


Имеется возможность установить сборку как в стандартном, так и портативном режиме.

16.png


Отличия:
1) Стандартная установка: для установки необходимы права администратора. По окончанию установки будут автоматически зарегистрированы поддерживаемые типы музыкальных файлов, а также возможность добавить контекстное меню плеера для папок в Проводнике (см. Настройки -> Интеграция с системой). Также при стандартной установке записывается информация в реестр, и foobar2000 будет доступен к удалению стандартным системным методом.
2) Портативная установка: устанавливается в произвольную папку, не требующую прав администратора, никаких записей в реестре не ведет. Отсутствует возможность включить контекстное меню Проводника.

ОБНОВЛЕНИЕ сборки: Перед копированием файлов установщик обнаруживает существующую конфигурацию плеера в зависимости от варианта установки:
1) Стандартная установка:
● папка установки: читается из реестра
● папка конфигурации ищется здесь: C:\Users\<пользователь>\AppData\Roaming\foobar2000-v2
2) Портативная установка:
● папка установки выбирается в установщике
● папка конфигурации находится здесь: <папка портативной установки>\profile
По результату предлагает сохранить существующую конфигурацию или перезаписать ее. Если вы хотите просто обновить версию сборки оставьте пункт "Сохранить конфигурацию", который назначен по умолчанию, и продолжите установку.

17.png



СПРАВКА ПО ИСПОЛЬЗОВАНИЮ (рекомендуется к прочтению)

ПАРА СОГЛАШЕНИЙ
В советах по настройке (и вообще в ответах на форуме) используется доступ к настройкам плеера. В этом случае указывается ключевое слово Preferences (для английской версии) или Настройки (для русской версии). Доступ к настройкам плеера производится одним из следующих способов:
1) Через специальный значок в окне сборки, представляющий собой шестеренку в правом верхнем углу под строкой поиска.
Prefeneces.jpg
Prefeneces.jpg (11.83 КБ) Просмотров: 799165

2) С помощью стандартной горячей клавиши Ctrl+P
3) Через главное меню. Попасть в него можно, нажав иконку приложения в верхнем левом углу окна. И далее: File -> Preferences (английская) или Файл -> Настройки (русская)
Также ввиду того, что сборка представлена в двух языковых вариантах, то пути к настройкам указаны в двух вариантах. Некоторые названия для краткости выглядят так: "Название в английской версии" / "Название в русской версии"

ИНТЕГРАЦИЯ С ПРОВОДНИКОМ
Файловые ассоциации поддерживаемых типов музыкальных файлов автоматически настраиваются при установке сборки в "стандартном" режиме. Управление соответствующими системными опциями находится в Настройках
ВНИМАНИЕ! Данные настройки недоступны при установке сборки в "портативном" режиме.
Английская версия: Preferences -> Shell Integration - Register supported file formats on startup
Русская версия: Настройки -> Интеграция с системой - Регистрировать поддерживаемые форматы файлов при запуске
Также, если вы захотите иметь возможность отправлять папки с музыкой в плеер из контекстного меню Проводника:
Английская версия: Preferences -> Shell Integration - Folder context menus
Русская версия: Настройки -> Интеграция с системой - Включить контекстное меню для папок

ИНТЕРФЕЙС СБОРКИ (нажмите для увеличения)
Help.jpg


РАБОТА С ПЛЕЙЛИСТАМИ
В сборке организованы два отображения плейлиста (см. выше ИНТЕРФЕЙС СБОРКИ):
1) "Плоский" режим с фоновой обложкой - это просто список треков с разделением по альбомам или по папкам (если прилетели из Проводника)
2) Плейлист с "папкообразной навигацией" - это многоуровневый плейлист, по нему можно бродить как по папкам. Двойной клик на заголовке альбома - переход наверх.
Все плейлисты доступны в панели органайзера плейлистов, расположенной справа (должен быть включен соответствующим переключатель, см. скриншот). В данной панели вы можете создавать/изменять/удалять плейлисты, а также организовывать их в папки различной вложенности.
Добавлять музыку можно различными путями:
1) Из Проводника двойным щелчком на музыкальном файле или через контекстное меню (для этого активируйте настройки из пункта ИНТЕГРАЦИЯ С ПРОВОДНИКОМ). При этом все добавляемые файлы автоматически отправляются в плейлист с названием "Default" / "По умолчанию".
2) Перетягиванием из Проводника в панель органайзера плейлистов. В этом случае, если справа в текущий момент открыта панель органайзера плейлистов, то можно перетянуть в нее треки, по одному или кучкой. Точки назначения: а) существующий плейлист б) пустое место или любая папка с плейлистами, в этом случае автоматически создастся новый плейлист с названием %artist% - %title% трека или первого из кучки треков.
3) Перетягиванием из Проводника в панель плейлиста со списком треков. Так вы добавите перетягиваемые треки к текущим.
4) Перетягиванием из панели плейлиста в панель органайзера плейлистов. Да, вы можете прямо в плеере перетягиванием формировать плейлисты.

РАБОТА С ФОНОТЕКОЙ
Если у вас нормально прописаны все теги в вашей музыке, то советую воспользоваться Фонотекой. Это база данных с гибкими возможностями запросов и отображения музыки. Добавление вашей музыки в Фонотеку производится из настроек:
Английская версия: Preferences -> Media Library - Music folders - Add... и добавляем папки.
Русская версия: Настройки -> Фонотека - Папки с музыкой - Добавить... и добавляем папки.
Доступ к Фонотеке осуществляется через специальную панель, расположенную справа (должен быть включен соответствующим переключатель, см. скриншот). Обзор Фонотеки может происходить в различных режимах, в том числе и по папкам. Смена режимов доступна из контекстного меню панели Фонотеки "View" / "Вид".
Если вас не устраивает текущая группировка треков в плейлисте, вы можете изменить ее через правую кнопку мыши на плейлисте в подменю Grouping / "Группировка" через выбор существующих пресетов, или настроить их самому (Grouping -> Configure / Группировка -> Настроить)

СПЕЦИАЛЬНЫЕ ИЛИ СЛУЖЕБНЫЕ ПЛЕЙЛИСТЫ
Этот термин ничего не значит, просто мне так удобно называть плейлисты, которые заранее созданы и настроены мной и поставляются вместе со сборкой. Их смысл в том, чтобы для каких-либо стандартных операций имелись уже заготовленные точки назначения. В панели органайзера плейлистов вы можете видеть папку "Auto" / "Авто", в которой имеются следующие плейлисты:
1) "Library" / "Фонотека" - предназначен для обзора Фонотеки. При двойном щелчке в дереве Фонотеки треки отправляются сюда.
2) "Search" / "Поиск" - сюда отправляются треки, найденные через строку поиска в верхнем правом углу окна.
3) "Queue" / "Очередь" - здесь отображается текущая очередь воспроизведения. Очередь воспроизведения - это стандартная возможность плеера быстро добавить один или несколько треков для проигрывания вслед за текущим. Добавляются треки правой кнопкой мыши -> "Add to playback queue" / "Добавить в очередь".
4) "Default" / "По умолчанию" - сюда отправляются треки, запущенные напрямую из Проводника.

БОКОВАЯ ПАНЕЛЬ
Может показаться неочевидным, но размер боковой правой панели может изменяться. Наведите мышь в место, указанное на скриншоте интерфейса, пока не изменится курсор мыши, и изменяйте размер перетягиванием.

ВЫБОР ЦВЕТА СБОРКИ
При желании можно поменять стандартный черный цвет темы на белый. Для этого в сборке уже присутствует готовая тема:
Английская версия: Preferences -> Display -> Columns UI -> Main - FCL importing and exporting - Import... выбираем файл белой темы, он лежит в папке сборки themes и называется "LUR White.fcl". Выскакивает окно "Select settings to import", просто жмете ОК.
Русская версия: Настройки -> Внешний вид -> Интерфейс Columns -> Основные - Импорт и экспорт FCL - Импорт... выбираем файл белой темы, он лежит в папке сборки themes и называется "LUR Белый.fcl". Выскакивает окно "Выберите настройки для импорта", просто жмете ОК.
Для возврата черной темы в обеих версиях надо импортировать файл темы "LUR.fcl", который лежит там же.
Если вы пользуетесь отображением стрелочного прибора над полосой перемотки, то при смене темы вам нужно вручную сменить скин для него: правая кнопка мыши на панели прибора -> LUR White для белой темы или LUR для черной.

СТОЛБЦЫ В ПЛЕЙЛИСТЕ
Новичкам может сразу быть непонятно, что ширину столбцов и их набор в плейлисте можно менять под себя. Если вы хотите настроить столбцы плейлиста, то для этого нужно включить отображение шапки плейлиста с заголовками столбцов, и через нее регулировать размеры или добавлять/изменять содержимое столбцов. Включается она через контекстное меню:
Правая кнопка мыши в любом месте плейлиста ->
Английская версия: Options -> Appearance -> Show column header
Русская версия: Опции -> Внешний вид -> Показывать заголовки столбцов
У самой шапки есть контекстное меню (правая кнопка мыши), через которое можно добавлять/изменять/перемещать столбцы и задавать различные опции их отображения.

СВОЙСТВА ТРЕКА
В верхней части интерфейса, справа от полосы перемотки, отображается текущее время проигрываемого трека, которое меняется на обратный отсчет при нажатии. В нижней части интерфейса панель, где указываются свойства текущего трека, такие как кодек, битрейт и т.д. настраивается с помощью правой кнопки мыши.

ГОРЯЧИЕ КЛАВИШИ
Любители горячих клавиш могут увидеть их список и по возможности добавить свои собственные в настройках:
Английская версия: Preferences -> Keyboard Shortcuts
Русская версия: Настройки -> Горячие клавиши
Горячие клавиши по умолчанию в плеере не изменялись, были только добавлены новые. Привожу их список:
Пробел - Пуск/Стоп
Влево - Перемотка назад на 5 секунд
Вправо - Перемотка вперед на 5 секунд
Ctrl + влево - Перемотка назад на 1 секунду
Ctrl + вправо - Перемотка вперед на 1 секунду
Alt + P - Переместить курсор к текущему треку
Ctrl + вниз - Понизить громкость
Ctrl + вверх - Повысить громкость
F11 - Полноэкранный режим
Ctrl + Alt + Вправо - Следующий трек (глобальная, т.е. действует в любом приложении)
Ctrl + Alt + Влево - Предыдущий трек (глобальная, т.е. действует в любом приложении)


ИНСТРУКЦИЯ ДЛЯ ЭКРАНОВ С БОЛЬШИМ РАЗРЕШЕНИЕМ
При использовании сборки на экране с большим разрешением, может возникнуть желание увеличить шрифт сборки и другие элементы интерфейса сборки. Если вы захотите просто изменить шрифт, то вполне может пострадать ее внешний вид ввиду того, что размеры элементов интерфейса рассчитаны только на тот размер шрифта, который установлен в ней по умолчанию. Поэтому привожу пошаговую инструкцию по масштабированию всего интерфейса, т.к. за разные элементы отвечают разные плагины и их настройки находятся в разных местах.

1. Меняем масштаб в главном скрипте сборки:
Спойлер
Shift+Win+ПКМ

12.png
12.png (22.26 КБ) Просмотров: 182785


_alpha = уровень яркости обложки под плейлистом
_scale = масштаб. Единица обычный размер, 1.5, в полтора раза больше и т.д.


2. Изменяем масштаб таймера трека
Спойлер
Shift+Win+ПКМ

13.png
13.png (9.91 КБ) Просмотров: 182785


_scale = масштаб. Единица обычный размер, 1.5, в полтора раза больше и т.д.


3. Изменяем масштаб регулятора громкости
Спойлер
Shift+Win+ПКМ

14.png
14.png (7.13 КБ) Просмотров: 182785


_scale = масштаб. Единица обычный размер, 1.5, в полтора раза больше и т.д.


4. Изменяем шрифт сборки:
Спойлер
К СОЖАЛЕНИЮ, для изменения не только шрифта, но и его размера, здесь нельзя обойтись без определенных танцев действий. Необходимо закрыть плеер, вынуть плагин UI Hacks, запустить плеер, не обращать внимание на ужасы, нажать Ctrl+P, так попадаем в настройки, изменить шрифты, закрыть плеер, вернуть плагин UI Hacks, запустить плеер.
3.png


5. Меняем высоту строчек в плейлисте
Спойлер
4.png
4.png (66.21 КБ) Просмотров: 385261

5.png
5.png (10.82 КБ) Просмотров: 385261


6. Меняем шрифт на панели свойств трека
Спойлер
Shift+Win+ПКМ
6.png
6.png (20.67 КБ) Просмотров: 65280

7.png
7.png (6.62 КБ) Просмотров: 385261


7. Меняем шрифт на панели биографии
Спойлер
8.png

9.png


8. Меняем шрифт на панели текстов песен
Спойлер
10.png

11.png



9. Единственный нюанс остается с иконкой в строке поиска. К сожалению ее масштабировать нельзя.
На случай, если вы захотите ее вовсе "убрать", заменив черным фоном или типо того, то она находится в папке плеера по пути foobar2000\themes\lur\black\QS.bmp (для черной темы, для белой: foobar2000\themes\lur\white\QS.bmp)


БОЛЬШАЯ ПРОСЬБА К СПРАШИВАЮЩИМ: При публикации вопроса пожалуйста указывайте вариант сборки, который Вы используете (английскую или русскую).

P.S. Если кого-то заинтересует русская сборка, просьба писать о найденных косяках и недопереводах со скриншотами на адрес: dima точка lur собак yandex точка ru

История версий
Версия 240921
● foobar2000 v2.1.6 x86
● foo_cuefixer 1.3.2
● foo_openlyrics 1.11
● foo_out_asio 2.2.3
● foo_quicksearch 3.9
● foo_uie_albumlist 2.0.3
● foo_uie_jsplitter 3.6.1.8
● Opus 1.5.2-21 x64

Версия 240505
● foobar2000 v2.1.5 x86
● foo_uie_jsplitter 3.6.1.5
● Refalac 1.82 x64
● Opus 1.5.2 x64

Версия 240322
● foobar2000 v2.1.3 x86
● foo_cuefixer 1.31
● Opus 1.5.1 x64

Версия 240227
● Создан установщик сборки "Всё в одном"
+ Выбор языка: русский/английский
+ Выбор режима установки: стандартная/портативная
+ Возможность обновить установленную сборку без перезаписи конфигурации
● foo_cuefixer 1.3a
● foo_uie_jsplitter 3.6.1.3

Версия 240215
● foobar2000 v2.1.2 x86
● foo_cuefixer 1.3
● foo_openlyrics 1.8
● foo_out_asio 2.2.2
● foo_playcount 3.1.5
● foo_run 0.4.5
● foo_ui_columns 2.1.0
● foo_uie_albumlist 2.0.2
● foo_uie_jsplitter 3.6.1.2
● foo_wave_minibar_mod 1.2.58
● FLAC 1.4.3 x64
● Refalac 1.81 x64
● Opus 1.4 x64

Версия 220903
● foobar2000 v1.6.12
● foo_openlyrics 1.2
● Refalac 1.76 x64

Версия 220506
● foobar2000 v1.6.11
● foo_openlyrics 1.00
● foo_verifier 1.4.2
● foo_wave_minibar_mod 1.0.49
● Biography, Albums, Title, Similar artist, Lyrics info (version "03052022") © kgena_UA
● FLAC 1.3.4 x64
● Refalac 1.73 x64

Версия 220118
● foobar2000 v1.6.9
● foo_ui_columns 1.7.0
● foo_uie_albumlist 0.4.2
● foo_uie_jsplitter 3.6.1

Версия 211129
● foobar2000 v1.6.8
● foo_openlyrics 0.10
● foo_uie_jsplitter 3.5.2-p5
● foo_verifier 1.4.1

Версия 210920
● foobar2000 v1.6.7
● foo_cuefixer 1.24
● foo_input_monkey 2.5
● foo_openlyrics 0.9
● foo_playcount 3.0.4
● foo_ui_columns 1.6.0
● foo_uie_albumlist 0.4.1
● foo_uie_jsplitter 3.5.2-p2
● foo_verifier 1.4
● foo_wave_minibar_mod 1.0.45
● OggEnc 2.88 x64 (libVorbis v1.3.7)
● FLAC 1.3.3 x64
● Refalac 1.72 x64
● Biography, Albums, Title, Similar artist, Lyrics info (version "25082021") © kgena_ua
Данная версия несовместима с предыдущими версиями сборки, так что не пытайтесь обновить с помощью нее любую старую версию. Также из сборки удалены следующие плагины:
● foo_cuefilter (заменен на foo_cuefixer)
● foo_out_wasapi (встроенная поддержка WASAPI shared в плеере с версии 1.6, WASAPI Exclusive (монопольный режим) с версии 1.6.7)
● foo_uie_lyrics3 (заменен на foo_openlyrics)

Версия 191203
● foobar2000 v1.5
● foo_input_monkey 2.3.1
● foo_uie_jsplitter 2.3.3.1
● foo_verifier 1.3
● foo_wave_minibar_mod 1.0.31
● FLAC 1.3.3 x64
● Opus 1.3.1 x64

Версия 190315
● foobar2000 v1.4.3
● foo_input_monkey 2.2.1
● foo_playcount 3.0.3
● foo_uie_jsplitter 2.2.1
● foo_verifier 1.2.2
● foo_wave_minibar_mod 1.0.22

Версия 190126
● foobar2000 v1.4.2
● foo_uie_jsplitter 2.2.0
● foo_uie_albumlist 0.4.0-beta.5
● Добавлена опция для регулятора громкости (сворачивать/оставлять развернутым)

Версия 190103
● foobar2000 v1.4.1
● Добавлен режим миниплеера
● foo_uie_jsplitter 2.1.8
● foo_wave_minibar_mod 1.0.20
● Properties & properties file (ml) (version "04112018") © kgena_ua
● Biography, Albums, Similar and title artist info (version "30122018") © kgena_ua
● OggEnc 2.88 x64 (libVorbis v1.3.6)
● Refalac 1.68 x64
● Opus 1.3 x64

Версия 180810
● Фиксы перевода
● foo_uie_jsplitter 2.1.6.2

Версия 180804
● В русской версии исправлен перенос тега "Альбом" в окне свойств трека.

Версия 180803
● foo_uie_jsplitter 2.1.6.1
● Добавлена возможность изменять размер обложки над текстом песни
● Мелкие фиксы

Версия 180730
● foobar2000 v1.4
● foo_cuefilter 0.1.7.0
● foo_input_monkey 2.1.9
● foo_run 0.3.8
● foo_uie_jsplitter 2.1.6.0
● foo_verifier 1.2.1
● foo_wave_minibar_mod 1.0.17
● Refalac 1.67 x64
● Properties & properties file (ml) (version "22122017") © kgena_ua
● Biography Text & Album Info & Picture (version "15062018") © kgena_ua

Версия 171125
● foobar2000 v1.3.17
● foo_uie_albumlist 0.4.0-beta.2
● LAME 3.100 x64
● Properties & properties file (ml) (version "05112017") © kgena_ua
● Biography Text & Album Info & Picture (version "06102017") © kgena_ua

Версия 170715
● foobar2000 v1.3.16
● foo_out_wasapi 3.3
● OggEnc 2.88 x64
● FLAC 1.3.2 x64
● Refalac 1.64 x64
● Opus 1.2.1 x64
● Properties & properties file (ml) (version "09072017") © kgena_ua
● Biography Text & Album Info & Picture (version "07072017") © kgena_ua

Версия 170407
● foobar2000 v1.3.15
● Панель Item properties заменена на скрипт для WSH панели: Properties & properties file (version "28032017") © kgena_ua
● Biography Text & Album Info & Picture (version "01032017") © kgena_ua

Версия 161228
● foobar2000 v1.3.14
● плагин foo_uie_biography заменен на панель WSH со скриптом "Biography Text && Picture. www.last.fm" © kgena_ua version "09102016"
● удалены плейлисты радио, как оказалось большая часть из них нерабочая, а поддерживать все в актуальном состоянии считаю нецелесообразным.
● в русской сборке исправлены ошибки перевода плагина foo_quicksearch

Версия 161106
● foobar2000 v1.3.13
● foo_ui_columns 0.5.1

Версия 160408
● foobar2000 v1.3.10
● foo_ui_columns 0.4.0
● foo_uie_albumlist 0.3.7
● foo_uie_lyrics3 0.5
● LAME 3.99.5 x64
● OggEnc 2.87 x64
● FLAC 1.3.1 x64
● Refalac 1.58 x64

Версия 151108
● foobar2000 v1.3.9
● foo_plorg 2.6
● foo_quicksearch 3.6
● foo_ui_columns 0.3.9.1 (опционально)

Версия 150326
● foobar2000 v1.3.8
● foo_uie_lyrics3 0.4.5

Версия 150115
● foobar2000 v1.3.7

Версия 141129
● foobar2000 v1.3.6

Версия 141031
● foobar2000 v1.3.5

Версия 141009
● foobar2000 v1.3.4
● foo_verifier 1.1.2

Версия 140721
● foobar2000 v1.3.3
● заменены плейлисты радио

Версия 140411
● foobar2000 v1.3.2
● foo_uie_lyrics3 0.4.4
● foo_wave_seekbar 0.2.45

Версия 140124
● foobar2000 v1.3.1
● foo_wave_seekbar 0.2.42

Версия 140106
● foobar2000 v1.3
● foo_uie_lyrics3 0.4.1

Версия 130711
● foobar2000 v1.2.9
● foo_wave_seekbar 0.2.40

Версия 130621
● foobar2000 v1.2.8
● foo_wave_seekbar 0.2.39.6
● добавлена поддержка ASIO (foo_out_asio 2.1.2)
● добавлена обложка на панель лирики

Версия 130505
● foobar2000 v1.2.6
● foo_wave_seekbar 0.2.36.1
● все варианты "полосы перемотки" (верхней части интерфейса) объединены в одну сборку, добавлена кнопка переключения этих вариантов.
● добавлен плагин визуализации стрелочного прибора foo_vis_vumeter 2013-02-16, на его основе добавлен один из вариантов верхней части интерфейса
● добавлен плагин отображения очереди воспроизведения foo_pqview 0.2
● исправлено несоответствие группировки/сортировки между панелью Фонотеки и панелью плейлиста

Версия 130421
● foobar2000 v1.2.5
● foo_input_monkey 2.1.7

Версия 130410
● теперь сборка представлена в трех вариантах с различной полосой перемотки

Версия 130403
● foo_wave_seekbar 0.2.34
● foo_uie_wsh_panel_mod 1.5.6
● foo_ui_hacks 2013-02-19
● добавлен регулятор громкости в правом нижнем углу
● расширен список вариантов отображения Фонотеки (контекстное меню "View"/"Вид")

Версия 130330
● foobar v1.2.4
● foo_verifier 1.1.1
● foo_out_wasapi 3.2.3
● foo_wave_seekbar 0.2.33
● Теперь при обзоре Фонотеки треки появляются в плейлисте только после двойного щелчка.

Версия 130214
● foobar v1.2.3
● foo_out_wasapi 3.2.1
● изменен принцип отображения фоновой обложки для плейлиста без обложек (с сохранением пропорций)
● исправлена отрисовка некоторых элементов интерфейса при изменении размера окна
● в Windows 8 не работала левая кнопка мыши из-за включенной опции перетаскивания окна средней кнопкой в плагине UI Hacks

Версия 130204
● добавлена фоновая обложка текущего трека для плейлиста без обложек
● в тему добавлены обложки noartist.png и nocover.png, для отсутствующих обложек исполнителя и альбома соответственно

Версия 130120
● первая версия сборки
Последний раз редактировалось LUR 11.07.2013, 15:56, всего редактировалось 53 раз(а).
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет


Сообщение #1181 vladj » 06.08.2018, 22:52

Посмотрел, у меня v1.3.16, но это ерунда (разницы нет), ща попробую обновится на 1.4, уверен и там будет работать.
PS. Пара минут и работает уже версия 1.4 :smile:
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #1182 marillion13 » 06.08.2018, 23:06

vladj:PS. Пара минут и работает уже версия 1.4
Сейчас из скриптов вышел...не нашёл. Скрин дайте,если можно.
Спойлер
Где вы тут нашли?
Код: Выделить всё
var _tp = fb.ProfilePath + "themes\\lur\\black\\";

var _bgColor = 0xFF141414;
var _ww = 0, _wh = 0;
var _mainViewWidth = 0;
var _sidebarWidth = window.GetProperty("Sidebar width", 320);
var _lyricsArtHeight = window.GetProperty("Lyrics art height", 150);
var _newMainViewWidth, _newSidebarWidth, _newLyricsArtHeight;
var g_cover_image = null;

window.HandOnButtons = true;

var ButtonStop = window.CreateButton(7, 18, _tp+"stop.png", _tp+"stop_over.png");
var ButtonPrev = window.CreateButton(46, 18, _tp+"prev.png", _tp+"prev_over.png");
var ButtonPlay = window.CreateButton(83, 15, [_tp+"play.png", _tp+"pause.png"], [_tp+"play_over.png", _tp+"pause_over.png"]);
var ButtonNext = window.CreateButton(126, 18, _tp+"next.png", _tp+"next_over.png");
var ButtonOpen = window.CreateButton(165, 18, _tp+"open.png", _tp+"open_over.png");
var ButtonRepeat = window.CreateButton(207, 16, [_tp+"repeat.png", _tp+"repeat_all.png", _tp+"repeat_one.png"], null);
var ButtonShuffle = window.CreateButton(207, 34, [_tp+"shuffle.png", _tp+"shuffle_on.png"], null);
var ButtonSeekbar = window.CreateButton(0, 0, [_tp+"switch_wave.png", _tp+"switch_vu.png", _tp+"switch_simple.png", _tp+"switch_spectrum.png"], [_tp+"switch_wave_over.png", _tp+"switch_vu_over.png", _tp+"switch_simple_over.png", _tp+"switch_spectrum_over.png"]);
var ButtonPlaylist = window.CreateButton(0, 0, [_tp+"plain.png", _tp+"plain_on.png"], _tp+"plain_on.png");
var ButtonLibPlaylist = window.CreateButton(0, 0, [_tp+"cd.png", _tp+"cd_on.png"], _tp+"cd_on.png");
var ButtonShpeck = window.CreateButton(0, 0, [_tp+"vis.png", _tp+"vis_on.png"], _tp+"vis_on.png");
var ButtonNowPlaying = window.CreateButton(0, 0, _tp+"now_playing.png", _tp+"now_playing_over.png");
var ButtonPlorg = window.CreateButton(0, 0, [_tp+"plain.png", _tp+"plain_on.png"], _tp+"plain_on.png");
var ButtonLibrary = window.CreateButton(0, 0, [_tp+"library.png", _tp+"library_on.png"], _tp+"library_on.png");
var ButtonInfo = window.CreateButton(0, 0, [_tp+"info.png", _tp+"info_on.png"], _tp+"info_on.png");
var ButtonBio = window.CreateButton(0, 0, [_tp+"bio.png", _tp+"bio_on.png"], _tp+"bio_on.png");
var ButtonLyrics = window.CreateButton(0, 0, [_tp+"lyrics.png", _tp+"lyrics_on.png"], _tp+"lyrics_on.png");
var ButtonPreferences = window.CreateButton(0, 0, _tp+"prefs.png", _tp+"prefs_over.png");

window.RadioButtons([ButtonPlaylist, ButtonLibPlaylist, ButtonShpeck]);
window.RadioButtons([ButtonPlorg, ButtonLibrary, ButtonInfo, ButtonBio, ButtonLyrics]);

SeekbarMode = {
   Spectrum: 0,
   Waveform: 1,
    VUMeter: 2,
   Simple: 3   
};
ButtonSeekbar.State = window.GetProperty("Seekbar mode", SeekbarMode.Spectrum);

ViewMode = {
   Playlist: 0,
   LibPlaylist: 1,
   Shpeck: 2
};
switch(window.GetProperty("View mode", ViewMode.Playlist))
{
case ViewMode.Playlist:
    ButtonPlaylist.State = 1;
    break;
case ViewMode.LibPlaylist:
    ButtonLibPlaylist.State = 1;
    break;
case ViewMode.Shpeck:
    ButtonShpeck.State = 1;
    break;
default:
    break;
}

SidebarView = {
   Plorg: 0,
   Library: 1,
   Info: 2,
   Bio: 3,
   Lyrics: 4
};
switch(window.GetProperty("Sidebar view", SidebarView.Plorg))
{
case SidebarView.Plorg:
    ButtonPlorg.State = 1;
    break;
case SidebarView.Library:
    ButtonLibrary.State = 1;
    break;
case SidebarView.Info:
    ButtonInfo.State = 1;
    break;
case SidebarView.Bio:
    ButtonBio.State = 1;
    break;
case SidebarView.Lyrics:
    ButtonLyrics.State = 1;
    break;
default:
    break;
}

PlaybackOrder = {
    Default: 0,
    RepeatPlaylist: 1,
    RepeatTrack: 2,
    Random: 3,
    ShuffleTracks: 4,
    ShuffleAlbums: 5,
    ShuffleFolders: 6   
};
switch(plman.PlaybackOrder)
{
case PlaybackOrder.Default:
    ButtonRepeat.State = 0;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.RepeatPlaylist:
    ButtonRepeat.State = 1;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.RepeatTrack:
    ButtonRepeat.State = 2;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.ShuffleTracks:
    ButtonRepeat.State = 0;
    ButtonShuffle.State = 1;
    break;
default:
    break;
}

function on_size() {
   _ww = window.Width;
   _wh = window.Height;
   _mainViewWidth = _ww - _sidebarWidth;
   move_buttons();
   do_layout();
}

function move_buttons() {      
   ButtonSeekbar.Move(_mainViewWidth - 26, 44);
   
   ButtonPlaylist.Move(2, _wh - 28);
   ButtonLibPlaylist.Move(28, _wh - 28);
   ButtonShpeck.Move(54, _wh - 28);
   ButtonNowPlaying.Move(80, _wh - 28);

   ButtonPlorg.Move(_mainViewWidth + 20, 35);
   ButtonLibrary.Move(_mainViewWidth + 46, 35);
   ButtonInfo.Move(_mainViewWidth + 72, 35);
   ButtonBio.Move(_mainViewWidth + 98, 35);
   ButtonLyrics.Move(_mainViewWidth + 124, 35);
   ButtonPreferences.Move(_sidebarWidth > 175 ? _ww - 30 : _mainViewWidth + 148, 35);
}

var Spectrum = window.GetPanel("Spectrum");
var Waveform = window.GetPanel("Waveform");
var VUMeter = window.GetPanel("VUMeter");
var Seekbar = window.GetPanel("Seekbar");
var Time = window.GetPanel("Time");
var Playlist = window.GetPanel("Playlist");
var LibPlaylist = window.GetPanel("LibPlaylist");
var Shpeck = window.GetPanel("Shpeck");
// Для автостарта шпека
    Shpeck.Show();
    Shpeck.Move(0, 70, 10, 10);         
var StatusInfo = window.GetPanel("StatusInfo");
var Search = window.GetPanel("Search");
var Plorg = window.GetPanel("Plorg");
var Lib = window.GetPanel("Lib");
var Info = window.GetPanel("Info");
var Bio = window.GetPanel("Bio");
var Artwork = window.GetPanel("Artwork");
var Lyrics = window.GetPanel("Lyrics");
var Volume = window.GetPanel("Volume");

function do_layout() {
    switch(window.GetProperty("Seekbar mode", SeekbarMode.Spectrum))
   {
      case SeekbarMode.Spectrum:
         Waveform.Hidden = VUMeter.Hidden = true;
         Spectrum.Move(240, 0, _mainViewWidth - 325, 50);
         Spectrum.Show();
         Seekbar.Move(240, 50, _mainViewWidth - 325, 20);
         Seekbar.Show();
         break;
      case SeekbarMode.Waveform:
         Spectrum.Hidden = Seekbar.Hidden = VUMeter.Hidden = true;
         Waveform.Move(240, 0, _mainViewWidth - 325, 70);
         Waveform.Show();
         break;
      case SeekbarMode.VUMeter:
         Spectrum.Hidden = Waveform.Hidden = true;
         VUMeter.Move(240, 0, _mainViewWidth - 325, 50);
         VUMeter.Show();
         Seekbar.Move(240, 50, _mainViewWidth - 325, 20);
         Seekbar.Show();
         break;
      case SeekbarMode.Simple:
         Spectrum.Hidden = Waveform.Hidden = VUMeter.Hidden = true;
         Seekbar.Move(240, 0, _mainViewWidth - 325, 70);
         Seekbar.Show();
         break;
      default:
         break;
   }
   
   Time.Move(_mainViewWidth - 85, 0, 85, 44);
   Time.Show();
   
    switch(window.GetProperty("View mode", ViewMode.Playlist))
   {
      case ViewMode.Playlist:
         LibPlaylist.Hidden = Shpeck.Hidden = true;
         Playlist.Move(0, 70, _mainViewWidth, _wh - 100);
         Playlist.Show();
         break;
      case ViewMode.LibPlaylist:
         Playlist.Hidden = Shpeck.Hidden = true;
         LibPlaylist.Move(0, 70, _mainViewWidth, _wh - 100);
         LibPlaylist.Show();
         break;
      case ViewMode.Shpeck:
         Playlist.Hidden = LibPlaylist.Hidden = true;
         Shpeck.Show();
         Shpeck.Move(0, 70, _mainViewWidth, _wh - 100);
         break;
      default:
         break;
   }

    StatusInfo.Move(106, _wh - 30, _mainViewWidth - 106, 30);
   StatusInfo.Show();
   
    Search.Move(_mainViewWidth + 20, 5, _sidebarWidth - 24, 22);
   Search.Show();

    switch(window.GetProperty("Sidebar view", SidebarView.Plorg))
   {
      case SidebarView.Plorg:
         Lib.Hidden = Info.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
            Plorg.Move(_mainViewWidth + 5, 70, _sidebarWidth - 5, _wh - 100);
         Plorg.Show();
         break;
      case SidebarView.Library:
         Plorg.Hidden = Info.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Lib.Move(_mainViewWidth + 5, 70, _sidebarWidth + 12, _wh - 100, true);
         Lib.Show();
         break;
      case SidebarView.Info:
         Plorg.Hidden = Lib.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Info.Move(_mainViewWidth + 10, 70, _sidebarWidth - 10, _wh - 100);
         Info.Show();
         break;
      case SidebarView.Bio:
         Plorg.Hidden = Lib.Hidden = Info.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Bio.Move(_mainViewWidth + 10, 70, _sidebarWidth - 10, _wh - 100);
         Bio.Show();
         break;
      case SidebarView.Lyrics:
         Plorg.Hidden = Lib.Hidden = Info.Hidden = Bio.Hidden = true;
         Artwork.Move(_mainViewWidth + 10, 70, _sidebarWidth - 10, _lyricsArtHeight);
         Artwork.Show();
         Lyrics.Move(_mainViewWidth + 10, 70 + _lyricsArtHeight + 5, _sidebarWidth - 20, _wh - 105 - _lyricsArtHeight);
         Lyrics.Show();
         break;
      default:
         break;
   }
   
   Volume.Move(_mainViewWidth + _sidebarWidth / 2, _wh - 30, _sidebarWidth / 2 + 1, 30);
   Volume.Show();
}

function on_paint(gr) {   
   
    //gr.FillSolidRect(0, 0, _ww, _wh, _bgColor);
   gr.FillSolidRect(0, 0, 240, 70, _bgColor);
   gr.FillSolidRect(_mainViewWidth - 85, 44, 85, 26, _bgColor);
   gr.FillSolidRect(0, _wh - 30, 106, 30, _bgColor);      
   gr.FillSolidRect(_mainViewWidth, 0, _sidebarWidth, 35, _bgColor);
   gr.DrawRect(_mainViewWidth + 19, 4, _sidebarWidth - 22, 24, 1, 0xFF646464);
   gr.FillSolidRect(_mainViewWidth, 35, _sidebarWidth, 35, _bgColor);      
   gr.FillSolidRect(_mainViewWidth, 70, 10, _wh - 100, _bgColor);
   gr.FillSolidRect(_ww - 10, 70, 10, _wh - 100, _bgColor);   
   gr.FillSolidRect(_mainViewWidth, _wh - 30, _sidebarWidth / 2 + 1, 30, _bgColor);
   gr.FillSolidRect(_mainViewWidth, 70 + _lyricsArtHeight, _sidebarWidth, 5, _bgColor);

    // Фоновая обложка для обычного плейлиста
    if(window.GetProperty("View mode", ViewMode.Playlist) == ViewMode.Playlist)
    {
        var ps_width = _mainViewWidth;
        var ps_height = _wh - 100;
        gr.FillSolidRect(0, 70, ps_width, ps_height, _bgColor);
        if(g_cover_image && ps_width > 0 && ps_height > 0) {
            if(ps_width > ps_height)
            {
                var dy = (ps_width / g_cover_image.Width * g_cover_image.Height - ps_height) * g_cover_image.Width / ps_width;
                gr.DrawImage(g_cover_image, 0, 70, ps_width, ps_height, 0, dy / 2, g_cover_image.Width, g_cover_image.Height - dy, 0, 100);
            }
            else
            {
                var dx = (ps_height / g_cover_image.Height * g_cover_image.Width - ps_width) * g_cover_image.Height / ps_height;
                gr.DrawImage(g_cover_image, 0, 70, ps_width, ps_height, dx / 2, 0, g_cover_image.Width - dx, g_cover_image.Height, 0, 100);
            }
        }
    }

   if(_dragSidebar) gr.FillSolidRect(_newMainViewWidth, 0, 5, _wh, 0xFFE81123);
    else
   if(_dragLyricsArt) gr.FillSolidRect(_mainViewWidth + 10, 70 + _newLyricsArtHeight, _sidebarWidth - 10, 5, 0xFFE81123);
}

function on_button_click(id) {
    switch(id)
    {
    case ButtonStop.ID:
        fb.Stop();
        break;
    case ButtonPrev.ID:
        fb.Prev();
        break;
    case ButtonPlay.ID:
        if(fb.IsPlaying) fb.Pause(); else fb.Play();
        break;
    case ButtonNext.ID:
        fb.Next();
        break;
    case ButtonOpen.ID:
        fb.RunMainMenuCommand("Файл/Открыть...");
        break;
    case ButtonRepeat.ID:
        ButtonShuffle.State = 0;
        plman.PlaybackOrder = ButtonRepeat.State;
        break;
    case ButtonShuffle.ID:
        ButtonRepeat.State = 0;
        if(ButtonShuffle.State == 1)
            plman.PlaybackOrder = PlaybackOrder.ShuffleTracks;
        else
            plman.PlaybackOrder = PlaybackOrder.Default;
        break;
    case ButtonSeekbar.ID:
        window.SetProperty("Seekbar mode", ButtonSeekbar.State);
        break;
    case ButtonPlaylist.ID:
        window.SetProperty("View mode", ViewMode.Playlist);
        break;
    case ButtonLibPlaylist.ID:
        window.SetProperty("View mode", ViewMode.LibPlaylist);
        break;
    case ButtonShpeck.ID:
        window.SetProperty("View mode", ViewMode.Shpeck);
        break;
    case ButtonNowPlaying.ID:
        fb.RunMainMenuCommand("Вид/Плейлист Columns/Перейти к текущему треку");
        break;
    case ButtonPlorg.ID:
        window.SetProperty("Sidebar view", SidebarView.Plorg);
        break;
    case ButtonLibrary.ID:
        window.SetProperty("Sidebar view", SidebarView.Library);
        break;
    case ButtonInfo.ID:
        window.SetProperty("Sidebar view", SidebarView.Info);
        break;
    case ButtonBio.ID:
        window.SetProperty("Sidebar view", SidebarView.Bio);
        break;
    case ButtonLyrics.ID:
        window.SetProperty("Sidebar view", SidebarView.Lyrics);
        break;
    case ButtonPreferences.ID:
        fb.RunMainMenuCommand("Файл/Настройки");            
        break;
    default:
        break;
    }
   
    do_layout();
}

function on_playback_starting(cmd, is_paused) {
   ButtonPlay.State = is_paused ? 0 : 1;
}
function on_playback_pause(state) {
   ButtonPlay.State = state ? 0 : 1;
}
function on_playback_stop(reason) {
    ButtonPlay.State = 0;
}
AlbumArtId = {
   front: 0,
   back: 1,
   disc: 2,
   icon: 3,
   artist: 4
};
var meta_now = fb.GetNowPlaying();
if(meta_now) g_cover_image = utils.GetAlbumArtV2(meta_now, AlbumArtId.front, false);
function on_playback_new_track(metadb) {
    if(g_cover_image) g_cover_image.Dispose();
    g_cover_image = utils.GetAlbumArtV2(metadb, AlbumArtId.front, false);
    window.Repaint();
}

var _dragSidebar = false, _dragLyricsArt = false;

function set_sidebar_width(width) {
   window.SetProperty("Sidebar width", width);
   _sidebarWidth = width;
   _mainViewWidth = _ww - _sidebarWidth;
   move_buttons();
   do_layout();
    window.Repaint();
}

function on_mouse_lbtn_down(x, y, mask) {
   if(!window.GetProperty("Lock sidebar", false) && x >= _mainViewWidth && x < _mainViewWidth + 5)
   {
      _dragSidebar = true;
        _newMainViewWidth = _mainViewWidth;
        _newSidebarWidth = _sidebarWidth;
      window.Repaint();
   }
    else
   if(x > _mainViewWidth && y >= 70 + _lyricsArtHeight && y <= 70 + _lyricsArtHeight + 5)
   {
      _dragLyricsArt = true;
        _newLyricsArtHeight = _lyricsArtHeight;
        window.Repaint();
   }
}

function on_mouse_lbtn_up(x, y, mask) {
   if(_dragSidebar)
    {
        _dragSidebar = false;
        _mainViewWidth = _newMainViewWidth;
        _sidebarWidth = _newSidebarWidth;
        set_sidebar_width(_sidebarWidth);
    }
    if(_dragLyricsArt)
    {
        _dragLyricsArt = false;
        _lyricsArtHeight = _newLyricsArtHeight;
        window.SetProperty("Lyrics art height", _lyricsArtHeight);
        do_layout();
        window.Repaint();
    }
}

function on_mouse_lbtn_dblclk(x, y, mask) {
   if(!window.GetProperty("Lock sidebar", false) && x >= _mainViewWidth && x < _mainViewWidth + 5)
    {
        set_sidebar_width(320);
        window.Repaint();
    }
    else
    if(x >= _mainViewWidth && y >= 70 + _lyricsArtHeight && y <= 70 + _lyricsArtHeight + 5)
    {
        _lyricsArtHeight = 150;
        window.SetProperty("Lyrics art height", _lyricsArtHeight);
        do_layout();
        window.Repaint();
    }   
}

var IDC_ARROW = 32512;
var IDC_HAND = 32649;
var IDC_SIZEWE = 32644;
var IDC_SIZENS = 32645;

function on_mouse_move(x, y, mask) {
   
    if(!window.GetProperty("Lock sidebar", false) && x >= _mainViewWidth && x < _mainViewWidth + 5)
       window.SetCursor(IDC_SIZEWE);
    else
    if(x >= _mainViewWidth && y >= 70 + _lyricsArtHeight && y <= 70 + _lyricsArtHeight + 5)
       window.SetCursor(IDC_SIZENS);
    else
      window.SetCursor(IDC_ARROW);

   if(_dragSidebar)
   {
        window.SetCursor(IDC_SIZEWE);
        _newMainViewWidth = x;
      _newSidebarWidth = _ww - x;
      if(_newSidebarWidth < 5)
        {
            _newSidebarWidth = 5;
            _newMainViewWidth = _ww - 10;
        }
        if(_newMainViewWidth < 325)
        {
            _newMainViewWidth = 325;
            _newSidebarWidth = _ww - 325;
        }
        window.Repaint();
   }
    else
   if(_dragLyricsArt)
   {
        window.SetCursor(IDC_SIZENS);
      _newLyricsArtHeight = y - 70;
      if(_newLyricsArtHeight < 0) _newLyricsArtHeight = 0;
        if(_newLyricsArtHeight > _wh - 105) _newLyricsArtHeight = _wh - 105;
        window.Repaint();
   }
}

MF_ENABLED = 0x00000000;

function on_mouse_rbtn_up(x, y, mask) {
   
    if(x <= _mainViewWidth) return true;
   
   var sidebarLocked = window.GetProperty("Lock sidebar", false);
   
   var menu = window.CreatePopupMenu();   
    menu.AppendMenuItem(MF_ENABLED, 10, "Зафиксировать боковую панель");
   //menu.AppendMenuSeparator();
   //menu.AppendMenuItem(MF_ENABLED, 20, "Properties");
   //menu.AppendMenuItem(MF_ENABLED, 30, "Configure");
    if(sidebarLocked) menu.CheckMenuRadioItem(10, 10, 10);
   var ret = menu.TrackPopupMenu(x,y);
   switch(ret)
   {
      case 10:
         window.SetProperty("Lock sidebar", !sidebarLocked);
         break;
      case 20:
         window.ShowProperties();
         break;
      case 30:
         window.ShowConfigure();
         break;
      default:
         break;
   }
   
   return true;
}
marillion13
Аватара
Репутация: 17
С нами: 9 лет 9 месяцев

Сообщение #1183 LUR » 06.08.2018, 23:28

vladj, в текущей сборке уже нет PSS. Теперь только JSplitter

Добавлено спустя 53 секунды:
marillion13, сейчас сижу пробую масштабировать, немного получается, но насчет всех элементов еще не знаю. Скоро может покажу.
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет

Сообщение #1184 vladj » 06.08.2018, 23:34

Так я не стремлюсь качать что-то новое, если меня старый интерфейс устраивает, который я под себя переделал, просто ядро обновил до 1.4. Поэтому у меня скрипты старые, отдельно на кнопки управления и на смену панелей и внизу на переключение плейлистов. По опыту...имхо...вин 10 хуже 7, сборки линукса пятилетей давности лучше 18.1, так-же и с фубаром. Есть нормальная работающая сборка, которая всем нравится и проще в настройказ, так нет...нужно усовершенствовать. А те, кто не очень разбирается в скриптах оказываются в глубокой попе, то не переделать, это не изменить. Залил переделанную немного мной, версия 1.4 https://yadi.sk/d/husTMHuN3Zx7mG...под телик я подыскал-бы что-либо более подходящее :smile:
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #1185 LUR » 06.08.2018, 23:35

vladj:Есть нормальная работающая сборка, которая всем нравится и проще в настройказ, так нет...нужно усовершенствовать
ну дело хозяйское. я свою переделал, потому что мне так удобнее с ней работать и вносить изменения. да и основная головная боль убралась, а именно исчезли контекстные меню, с помощью которых любой юзер мог враз уничтожить весь интерфейс и дальше только переустанавливать сборку. ну это конечно для юзера так выглядело)
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет

Сообщение #1186 vladj » 06.08.2018, 23:44

Просто, имхо, marillion13 под телик не совсем подходящую сборку выбрал, ему нужна трёх панельная, потемней, работающая в фулл, с крупными кнопками...а это например сборки от Aliado. Правда там чуток неудобные моменты попадаются, но если подправить, то как раз для ТВ.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #1187 LUR » 06.08.2018, 23:55

vladj:работающая в фулл, с крупными кнопками
все решается :wink:
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет

Сообщение #1188 marillion13 » 06.08.2018, 23:58

vladj,
vladj:Правда там чуток неудобные моменты попадаются, но если подправить, то как раз для ТВ
...Ну вот,опять подправить,к тому же и пришли :smoke:
LUR:с помощью которых любой юзер мог враз уничтожить весь интерфейс и дальше только переустанавливать сборку
...Вот вот,как раз про меня :smile:
marillion13
Аватара
Репутация: 17
С нами: 9 лет 9 месяцев

Сообщение #1189 vladj » 07.08.2018, 00:06

LUR:все решается
А ты попробуй свою на ТВ вывести и поуправлять ей с дивана мышей ...сомневаюсь что будет удобно. На ТВ, имхо, выгодней Аимп "гонять" со скинами катушечников или кассетников Онкио. Благо они там научились делать прилично панели с плейлистами и библиотеку, плюс звук уже прилично выводит.
marillion13:Ну вот,опять подправить,к тому же и пришли
Ты посмотри на скрины его сборки, что нужно он тебе не откажется поправить....я в его теме подскажу что мне не понравилось.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #1190 marillion13 » 07.08.2018, 00:17

vladj:А ты попробуй свою на ТВ вывести и поуправлять ей с дивана мышей ...сомневаюсь что будет удобно
..Как раз моя география :yes:
vladj:Ты посмотри на скрины его сборки, что нужно он тебе не откажется поправить
Я уже написал...значки сделать одинаковыми со значками управления
vladj:...я в его теме подскажу что мне не понравилось.
Что?
Последний раз редактировалось marillion13 07.08.2018, 00:23, всего редактировалось 1 раз.
marillion13
Аватара
Репутация: 17
С нами: 9 лет 9 месяцев

Сообщение #1191 LUR » 07.08.2018, 00:23

marillion13:Я уже написал...значки сделать одинаковыми со значками управления
А что если все увеличить? Попробуйте подсунуть вот этот скрипт:
Код: Выделить всё
var _scale = 2;
var _alpha = 40;

var _tp = fb.ProfilePath + "themes\\lur\\black\\";
var _bgColor = 0xFF141414;
var _ww = 0, _wh = 0;
var _mainViewWidth = 0;
var _sidebarWidth = window.GetProperty("Sidebar width", 320 * _scale);
var _lyricsArtHeight = window.GetProperty("Lyrics art height", 150 * _scale);
var _newMainViewWidth, _newSidebarWidth, _newLyricsArtHeight;
var g_cover_image = null;

window.HandOnButtons = true;

var ButtonStop = window.CreateButton(7 * _scale, 18 * _scale, _tp+"stop.png", _tp+"stop_over.png");
ButtonStop.Width *= _scale;
ButtonStop.Height *= _scale;
var ButtonPrev = window.CreateButton(46 * _scale, 18 * _scale, _tp+"prev.png", _tp+"prev_over.png");
ButtonPrev.Width *= _scale;
ButtonPrev.Height *= _scale;
var ButtonPlay = window.CreateButton(83 * _scale, 15 * _scale, [_tp+"play.png", _tp+"pause.png"], [_tp+"play_over.png", _tp+"pause_over.png"]);
ButtonPlay.Width *= _scale;
ButtonPlay.Height *= _scale;
var ButtonNext = window.CreateButton(126 * _scale, 18 * _scale, _tp+"next.png", _tp+"next_over.png");
ButtonNext.Width *= _scale;
ButtonNext.Height *= _scale;
var ButtonOpen = window.CreateButton(165 * _scale, 18 * _scale, _tp+"open.png", _tp+"open_over.png");
ButtonOpen.Width *= _scale;
ButtonOpen.Height *= _scale;
var ButtonRepeat = window.CreateButton(207 * _scale, 16 * _scale, [_tp+"repeat.png", _tp+"repeat_all.png", _tp+"repeat_one.png"], null);
ButtonRepeat.Width *= _scale;
ButtonRepeat.Height *= _scale;
var ButtonShuffle = window.CreateButton(207 * _scale, 34 * _scale, [_tp+"shuffle.png", _tp+"shuffle_on.png"], null);
ButtonShuffle.Width *= _scale;
ButtonShuffle.Height *= _scale;
var ButtonSeekbar = window.CreateButton(0, 0, [_tp+"switch_wave.png", _tp+"switch_vu.png", _tp+"switch_simple.png", _tp+"switch_spectrum.png"], [_tp+"switch_wave_over.png", _tp+"switch_vu_over.png", _tp+"switch_simple_over.png", _tp+"switch_spectrum_over.png"]);
ButtonSeekbar.Width *= _scale;
ButtonSeekbar.Height *= _scale;
var ButtonPlaylist = window.CreateButton(0, 0, [_tp+"plain.png", _tp+"plain_on.png"], _tp+"plain_on.png");
ButtonPlaylist.Width *= _scale;
ButtonPlaylist.Height *= _scale;
var ButtonLibPlaylist = window.CreateButton(0, 0, [_tp+"cd.png", _tp+"cd_on.png"], _tp+"cd_on.png");
ButtonLibPlaylist.Width *= _scale;
ButtonLibPlaylist.Height *= _scale;
var ButtonShpeck = window.CreateButton(0, 0, [_tp+"vis.png", _tp+"vis_on.png"], _tp+"vis_on.png");
ButtonShpeck.Width *= _scale;
ButtonShpeck.Height *= _scale;
var ButtonNowPlaying = window.CreateButton(0, 0, _tp+"now_playing.png", _tp+"now_playing_over.png");
ButtonNowPlaying.Width *= _scale;
ButtonNowPlaying.Height *= _scale;
var ButtonPlorg = window.CreateButton(0, 0, [_tp+"plain.png", _tp+"plain_on.png"], _tp+"plain_on.png");
ButtonPlorg.Width *= _scale;
ButtonPlorg.Height *= _scale;
var ButtonLibrary = window.CreateButton(0, 0, [_tp+"library.png", _tp+"library_on.png"], _tp+"library_on.png");
ButtonLibrary.Width *= _scale;
ButtonLibrary.Height *= _scale;
var ButtonInfo = window.CreateButton(0, 0, [_tp+"info.png", _tp+"info_on.png"], _tp+"info_on.png");
ButtonInfo.Width *= _scale;
ButtonInfo.Height *= _scale;
var ButtonBio = window.CreateButton(0, 0, [_tp+"bio.png", _tp+"bio_on.png"], _tp+"bio_on.png");
ButtonBio.Width *= _scale;
ButtonBio.Height *= _scale;
var ButtonLyrics = window.CreateButton(0, 0, [_tp+"lyrics.png", _tp+"lyrics_on.png"], _tp+"lyrics_on.png");
ButtonLyrics.Width *= _scale;
ButtonLyrics.Height *= _scale;
var ButtonPreferences = window.CreateButton(0, 0, _tp+"prefs.png", _tp+"prefs_over.png");
ButtonPreferences.Width *= _scale;
ButtonPreferences.Height *= _scale;

window.RadioButtons([ButtonPlaylist, ButtonLibPlaylist, ButtonShpeck]);
window.RadioButtons([ButtonPlorg, ButtonLibrary, ButtonInfo, ButtonBio, ButtonLyrics]);

SeekbarMode = {
   Spectrum: 0,
   Waveform: 1,
    VUMeter: 2,
   Simple: 3   
};
ButtonSeekbar.State = window.GetProperty("Seekbar mode", SeekbarMode.Spectrum);

ViewMode = {
   Playlist: 0,
   LibPlaylist: 1,
   Shpeck: 2
};
switch(window.GetProperty("View mode", ViewMode.Playlist))
{
case ViewMode.Playlist:
    ButtonPlaylist.State = 1;
    break;
case ViewMode.LibPlaylist:
    ButtonLibPlaylist.State = 1;
    break;
case ViewMode.Shpeck:
    ButtonShpeck.State = 1;
    break;
default:
    break;
}

SidebarView = {
   Plorg: 0,
   Library: 1,
   Info: 2,
   Bio: 3,
   Lyrics: 4
};
switch(window.GetProperty("Sidebar view", SidebarView.Plorg))
{
case SidebarView.Plorg:
    ButtonPlorg.State = 1;
    break;
case SidebarView.Library:
    ButtonLibrary.State = 1;
    break;
case SidebarView.Info:
    ButtonInfo.State = 1;
    break;
case SidebarView.Bio:
    ButtonBio.State = 1;
    break;
case SidebarView.Lyrics:
    ButtonLyrics.State = 1;
    break;
default:
    break;
}

PlaybackOrder = {
    Default: 0,
    RepeatPlaylist: 1,
    RepeatTrack: 2,
    Random: 3,
    ShuffleTracks: 4,
    ShuffleAlbums: 5,
    ShuffleFolders: 6   
};
switch(plman.PlaybackOrder)
{
case PlaybackOrder.Default:
    ButtonRepeat.State = 0;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.RepeatPlaylist:
    ButtonRepeat.State = 1;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.RepeatTrack:
    ButtonRepeat.State = 2;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.ShuffleTracks:
    ButtonRepeat.State = 0;
    ButtonShuffle.State = 1;
    break;
default:
    break;
}

function on_size() {
   _ww = window.Width;
   _wh = window.Height;
   _mainViewWidth = _ww - _sidebarWidth;
   move_buttons();
   do_layout();
}

function move_buttons() {      
   ButtonSeekbar.Move(_mainViewWidth - 26 * _scale, 44 * _scale);
   
   ButtonPlaylist.Move(2 * _scale, _wh - 28 * _scale);
   ButtonLibPlaylist.Move(28 * _scale, _wh - 28 * _scale);
   ButtonShpeck.Move(54 * _scale, _wh - 28 * _scale);
   ButtonNowPlaying.Move(80 * _scale, _wh - 28 * _scale);

   ButtonPlorg.Move(_mainViewWidth + 20 * _scale, 35 * _scale);
   ButtonLibrary.Move(_mainViewWidth + 46 * _scale, 35 * _scale);
   ButtonInfo.Move(_mainViewWidth + 72 * _scale, 35 * _scale);
   ButtonBio.Move(_mainViewWidth + 98 * _scale, 35 * _scale);
   ButtonLyrics.Move(_mainViewWidth + 124 * _scale, 35 * _scale);
   ButtonPreferences.Move(_sidebarWidth > 175 * _scale ? _ww - 30 * _scale : _mainViewWidth + 148 * _scale, 35 * _scale);
}

var Spectrum = window.GetPanel("Spectrum");
var Waveform = window.GetPanel("Waveform");
var VUMeter = window.GetPanel("VUMeter");
var Seekbar = window.GetPanel("Seekbar");
var Time = window.GetPanel("Time");
var Playlist = window.GetPanel("Playlist");
var LibPlaylist = window.GetPanel("LibPlaylist");
var Shpeck = window.GetPanel("Shpeck");
// Для автостарта шпека
    Shpeck.Show();
    Shpeck.Move(0, 70, 10, 10);         
var StatusInfo = window.GetPanel("StatusInfo");
var Search = window.GetPanel("Search");
var Plorg = window.GetPanel("Plorg");
var Lib = window.GetPanel("Lib");
var Info = window.GetPanel("Info");
var Bio = window.GetPanel("Bio");
var Artwork = window.GetPanel("Artwork");
var Lyrics = window.GetPanel("Lyrics");
var Volume = window.GetPanel("Volume");

function do_layout() {
    switch(window.GetProperty("Seekbar mode", SeekbarMode.Spectrum))
   {
      case SeekbarMode.Spectrum:
         Waveform.Hidden = VUMeter.Hidden = true;
         Spectrum.Move(240 * _scale, 0, _mainViewWidth - 325 * _scale, 50 * _scale);
         Spectrum.Show();
         Seekbar.Move(240 * _scale, 50 * _scale, _mainViewWidth - 325 * _scale, 20 * _scale);
         Seekbar.Show();
         break;
      case SeekbarMode.Waveform:
         Spectrum.Hidden = Seekbar.Hidden = VUMeter.Hidden = true;
         Waveform.Move(240 * _scale, 0, _mainViewWidth - 325 * _scale, 70 * _scale);
         Waveform.Show();
         break;
      case SeekbarMode.VUMeter:
         Spectrum.Hidden = Waveform.Hidden = true;
         VUMeter.Move(240 * _scale, 0, _mainViewWidth - 325 * _scale, 50 * _scale);
         VUMeter.Show();
         Seekbar.Move(240 * _scale, 50 * _scale, _mainViewWidth - 325 * _scale, 20 * _scale);
         Seekbar.Show();
         break;
      case SeekbarMode.Simple:
         Spectrum.Hidden = Waveform.Hidden = VUMeter.Hidden = true;
         Seekbar.Move(240 * _scale, 0, _mainViewWidth - 325 * _scale, 70 * _scale);
         Seekbar.Show();
         break;
      default:
         break;
   }
   
   Time.Move(_mainViewWidth - 85 * _scale, 0, 85 * _scale, 44 * _scale);
   Time.Show();
   
    switch(window.GetProperty("View mode", ViewMode.Playlist))
   {
      case ViewMode.Playlist:
         LibPlaylist.Hidden = Shpeck.Hidden = true;
         Playlist.Move(0, 70 * _scale, _mainViewWidth, _wh - 100 * _scale);
         Playlist.Show();
         break;
      case ViewMode.LibPlaylist:
         Playlist.Hidden = Shpeck.Hidden = true;
         LibPlaylist.Move(0, 70 * _scale, _mainViewWidth, _wh - 100 * _scale);
         LibPlaylist.Show();
         break;
      case ViewMode.Shpeck:
         Playlist.Hidden = LibPlaylist.Hidden = true;
         Shpeck.Show();
         Shpeck.Move(0, 70 * _scale, _mainViewWidth, _wh - 100 * _scale);
         break;
      default:
         break;
   }

    StatusInfo.Move(106 * _scale, _wh - 30 * _scale, _mainViewWidth - 106 * _scale, 30 * _scale);
   StatusInfo.Show();
   
    Search.Move(_mainViewWidth + 20 * _scale, 5 * _scale, _sidebarWidth - 24 * _scale, 22 * _scale);
   Search.Show();

    switch(window.GetProperty("Sidebar view", SidebarView.Plorg))
   {
      case SidebarView.Plorg:
         Lib.Hidden = Info.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
            Plorg.Move(_mainViewWidth + 5 * _scale, 70 * _scale, _sidebarWidth - 5 * _scale, _wh - 100 * _scale);
         Plorg.Show();
         break;
      case SidebarView.Library:
         Plorg.Hidden = Info.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Lib.Move(_mainViewWidth + 5 * _scale, 70 * _scale, _sidebarWidth + 12 * _scale, _wh - 100 * _scale);
         Lib.Show();
         break;
      case SidebarView.Info:
         Plorg.Hidden = Lib.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Info.Move(_mainViewWidth + 10 * _scale, 70 * _scale, _sidebarWidth - 10 * _scale, _wh - 100 * _scale);
         Info.Show();
         break;
      case SidebarView.Bio:
         Plorg.Hidden = Lib.Hidden = Info.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Bio.Move(_mainViewWidth + 10 * _scale, 70 * _scale, _sidebarWidth - 10 * _scale, _wh - 100 * _scale);
         Bio.Show();
         break;
      case SidebarView.Lyrics:
         Plorg.Hidden = Lib.Hidden = Info.Hidden = Bio.Hidden = true;
         Artwork.Move(_mainViewWidth + 10 * _scale, 70 * _scale, _sidebarWidth - 10 * _scale, _lyricsArtHeight);
         Artwork.Show();
         Lyrics.Move(_mainViewWidth + 10 * _scale, 70 * _scale + _lyricsArtHeight + 5 * _scale, _sidebarWidth - 20 * _scale, _wh - 105 * _scale - _lyricsArtHeight);
         Lyrics.Show();
         break;
      default:
         break;
   }
   
   Volume.Move(_mainViewWidth + _sidebarWidth / 2, _wh - 30 * _scale, _sidebarWidth / 2 + 1, 30 * _scale);
   Volume.Show();
}

function on_paint(gr) {   
   
    gr.FillSolidRect(0, 0, _ww, _wh, _bgColor);
   //gr.FillSolidRect(0, 0, 240 * _scale, 70 * _scale, _bgColor);
   //gr.FillSolidRect(_mainViewWidth - 85 * _scale, 44 * _scale, 85 * _scale, 26 * _scale, _bgColor);
   //gr.FillSolidRect(0, _wh - 30 * _scale, 106 * _scale, 30 * _scale, _bgColor);      
   //gr.FillSolidRect(_mainViewWidth, 0, _sidebarWidth, 35 * _scale, _bgColor);
   gr.DrawRect(_mainViewWidth + 19 * _scale, 4 * _scale, _sidebarWidth - 22 * _scale, 24 * _scale, _scale, 0xFF646464);
   //gr.FillSolidRect(_mainViewWidth, 35 * _scale, _sidebarWidth, 35 * _scale, _bgColor);      
   //gr.FillSolidRect(_mainViewWidth, 70 * _scale, 10 * _scale, _wh - 100 * _scale, _bgColor);
   //gr.FillSolidRect(_ww - 10 * _scale, 70 * _scale, 10 * _scale, _wh - 100 * _scale, _bgColor);   
   //gr.FillSolidRect(_mainViewWidth, _wh - 30 * _scale, _sidebarWidth / 2 + 1, 30 * _scale, _bgColor);
   //gr.FillSolidRect(_mainViewWidth, 70 * _scale + _lyricsArtHeight, _sidebarWidth, 5 * _scale, _bgColor);

    // Фоновая обложка для обычного плейлиста
    if(window.GetProperty("View mode", ViewMode.Playlist) == ViewMode.Playlist)
    {
        var ps_width = _mainViewWidth;
        var ps_height = _wh - 100 * _scale;
        gr.FillSolidRect(0, 70 * _scale, ps_width, ps_height, _bgColor);
        if(g_cover_image && ps_width > 0 && ps_height > 0) {
            if(ps_width > ps_height)
            {
                var dy = g_cover_image.Height - ps_height * g_cover_image.Width / ps_width;
                gr.DrawImage(g_cover_image, 0, 70 * _scale, ps_width, ps_height, 0, dy / 2, g_cover_image.Width, g_cover_image.Height - dy, 0, _alpha);
            }
            else
            {
                var dx = g_cover_image.Width - ps_width * g_cover_image.Height / ps_height;
                gr.DrawImage(g_cover_image, 0, 70 * _scale, ps_width, ps_height, dx / 2, 0, g_cover_image.Width - dx, g_cover_image.Height, 0, _alpha);
            }
        }
    }

   if(_dragSidebar) gr.FillSolidRect(_newMainViewWidth, 0, 5 * _scale, _wh, 0xFFE81123);
    else
   if(_dragLyricsArt) gr.FillSolidRect(_mainViewWidth + 10 * _scale, 70 * _scale + _newLyricsArtHeight, _sidebarWidth - 10 * _scale, 5 * _scale, 0xFFE81123);
}

function on_button_click(id) {
    switch(id)
    {
    case ButtonStop.ID:
        fb.Stop();
        break;
    case ButtonPrev.ID:
        fb.Prev();
        break;
    case ButtonPlay.ID:
        if(fb.IsPlaying) fb.Pause(); else fb.Play();
        break;
    case ButtonNext.ID:
        fb.Next();
        break;
    case ButtonOpen.ID:
        fb.RunMainMenuCommand("Файл/Открыть...");
        break;
    case ButtonRepeat.ID:
        ButtonShuffle.State = 0;
        plman.PlaybackOrder = ButtonRepeat.State;
        break;
    case ButtonShuffle.ID:
        ButtonRepeat.State = 0;
        if(ButtonShuffle.State == 1)
            plman.PlaybackOrder = PlaybackOrder.ShuffleTracks;
        else
            plman.PlaybackOrder = PlaybackOrder.Default;
        break;
    case ButtonSeekbar.ID:
        window.SetProperty("Seekbar mode", ButtonSeekbar.State);
        break;
    case ButtonPlaylist.ID:
        window.SetProperty("View mode", ViewMode.Playlist);
        break;
    case ButtonLibPlaylist.ID:
        window.SetProperty("View mode", ViewMode.LibPlaylist);
        break;
    case ButtonShpeck.ID:
        window.SetProperty("View mode", ViewMode.Shpeck);
        break;
    case ButtonNowPlaying.ID:
        fb.RunMainMenuCommand("Вид/Плейлист Columns/Перейти к текущему треку");
        break;
    case ButtonPlorg.ID:
        window.SetProperty("Sidebar view", SidebarView.Plorg);
        break;
    case ButtonLibrary.ID:
        window.SetProperty("Sidebar view", SidebarView.Library);
        break;
    case ButtonInfo.ID:
        window.SetProperty("Sidebar view", SidebarView.Info);
        break;
    case ButtonBio.ID:
        window.SetProperty("Sidebar view", SidebarView.Bio);
        break;
    case ButtonLyrics.ID:
        window.SetProperty("Sidebar view", SidebarView.Lyrics);
        break;
    case ButtonPreferences.ID:
        fb.RunMainMenuCommand("Файл/Настройки");            
        break;
    default:
        break;
    }
   
    do_layout();
}

function on_playback_starting(cmd, is_paused) {
   ButtonPlay.State = is_paused ? 0 : 1;
}
function on_playback_pause(state) {
   ButtonPlay.State = state ? 0 : 1;
}
function on_playback_stop(reason) {
    ButtonPlay.State = 0;
}
AlbumArtId = {
   front: 0,
   back: 1,
   disc: 2,
   icon: 3,
   artist: 4
};
var meta_now = fb.GetNowPlaying();
if(meta_now) g_cover_image = utils.GetAlbumArtV2(meta_now, AlbumArtId.front, false);
function on_playback_new_track(metadb) {
    if(g_cover_image) g_cover_image.Dispose();
    g_cover_image = utils.GetAlbumArtV2(metadb, AlbumArtId.front, false);
    window.Repaint();
}

var _dragSidebar = false, _dragLyricsArt = false;

function set_sidebar_width(width) {
   window.SetProperty("Sidebar width", width);
   _sidebarWidth = width;
   _mainViewWidth = _ww - _sidebarWidth;
   move_buttons();
   do_layout();
    window.Repaint();
}

function on_mouse_lbtn_down(x, y, mask) {
   if(!window.GetProperty("Lock sidebar", false) && x >= _mainViewWidth && x < _mainViewWidth + 5 * _scale)
   {
      _dragSidebar = true;
        _newMainViewWidth = _mainViewWidth;
        _newSidebarWidth = _sidebarWidth;
      window.Repaint();
   }
    else
   if(x > _mainViewWidth && y >= 70 * _scale + _lyricsArtHeight && y <= 70 * _scale + _lyricsArtHeight + 5 * _scale)
   {
      _dragLyricsArt = true;
        _newLyricsArtHeight = _lyricsArtHeight;
        window.Repaint();
   }
}

function on_mouse_lbtn_up(x, y, mask) {
   if(_dragSidebar)
    {
        _dragSidebar = false;
        _mainViewWidth = _newMainViewWidth;
        _sidebarWidth = _newSidebarWidth;
        set_sidebar_width(_sidebarWidth);
    }
    if(_dragLyricsArt)
    {
        _dragLyricsArt = false;
        _lyricsArtHeight = _newLyricsArtHeight;
        window.SetProperty("Lyrics art height", _lyricsArtHeight);
        do_layout();
        window.Repaint();
    }
}

function on_mouse_lbtn_dblclk(x, y, mask) {
   if(!window.GetProperty("Lock sidebar", false) && x >= _mainViewWidth && x < _mainViewWidth + 5 * _scale)
    {
        set_sidebar_width(320 * _scale);
        window.Repaint();
    }
    else
    if(x >= _mainViewWidth && y >= 70 * _scale + _lyricsArtHeight && y <= 70 * _scale + _lyricsArtHeight + 5 * _scale)
    {
        _lyricsArtHeight = 150 * _scale;
        window.SetProperty("Lyrics art height", _lyricsArtHeight);
        do_layout();
        window.Repaint();
    }   
}

var IDC_ARROW = 32512;
var IDC_HAND = 32649;
var IDC_SIZEWE = 32644;
var IDC_SIZENS = 32645;

function on_mouse_move(x, y, mask) {
   
    if(!window.GetProperty("Lock sidebar", false) && x >= _mainViewWidth && x < _mainViewWidth + 5 * _scale)
       window.SetCursor(IDC_SIZEWE);
    else
    if(x >= _mainViewWidth && y >= 70 * _scale + _lyricsArtHeight && y <= 70 * _scale + _lyricsArtHeight + 5 * _scale)
       window.SetCursor(IDC_SIZENS);
    else
      window.SetCursor(IDC_ARROW);

   if(_dragSidebar)
   {
        window.SetCursor(IDC_SIZEWE);
        _newMainViewWidth = x;
      _newSidebarWidth = _ww - x;
      if(_newSidebarWidth < 5 * _scale)
        {
            _newSidebarWidth = 5 * _scale;
            _newMainViewWidth = _ww - 10 * _scale;
        }
        if(_newMainViewWidth < 325 * _scale)
        {
            _newMainViewWidth = 325 * _scale;
            _newSidebarWidth = _ww - 325 * _scale;
        }
        window.Repaint();
   }
    else
   if(_dragLyricsArt)
   {
        window.SetCursor(IDC_SIZENS);
      _newLyricsArtHeight = y - 70 * _scale;
      if(_newLyricsArtHeight < 0) _newLyricsArtHeight = 0;
        if(_newLyricsArtHeight > _wh - 105 * _scale) _newLyricsArtHeight = _wh - 105 * _scale;
        window.Repaint();
   }
}

MF_ENABLED = 0x00000000;

function on_mouse_rbtn_up(x, y, mask) {
   
    if(x <= _mainViewWidth) return true;
   
   var sidebarLocked = window.GetProperty("Lock sidebar", false);
   
   var menu = window.CreatePopupMenu();   
    menu.AppendMenuItem(MF_ENABLED, 10, "Зафиксировать боковую панель");
   //menu.AppendMenuSeparator();
   //menu.AppendMenuItem(MF_ENABLED, 20, "Properties");
   //menu.AppendMenuItem(MF_ENABLED, 30, "Configure");
    if(sidebarLocked) menu.CheckMenuRadioItem(10, 10, 10);
   var ret = menu.TrackPopupMenu(x,y);
   switch(ret)
   {
      case 10:
         window.SetProperty("Lock sidebar", !sidebarLocked);
         break;
      case 20:
         window.ShowProperties();
         break;
      case 30:
         window.ShowConfigure();
         break;
      default:
         break;
   }
   
   return true;
}
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет

Сообщение #1192 marillion13 » 07.08.2018, 00:24

..Спасибо! Отпишусь!
Последний раз редактировалось marillion13 07.08.2018, 00:25, всего редактировалось 1 раз.
marillion13
Аватара
Репутация: 17
С нами: 9 лет 9 месяцев

Сообщение #1193 LUR » 07.08.2018, 00:25

Чтобы вам было проще, первые две строчки содержат переменные, которые вам нужны:
_scale задает коэффициент масштабирования
_alpha уровень яркости коврика

Добавлено спустя 29 секунд:
marillion13:...А где собственно сам скрипт?
выше

Добавлено спустя 51 секунду:
marillion13, Этот скрипт увеличит основную часть интерфейса. Поиграйтесь посмотрите, потом помогу остальные мелочи подправить.

Добавлено спустя 47 секунд:
_scale может быть дробным. Т.е. можете задавать 1.3, 1.5 и т.д.
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет

Сообщение #1194 marillion13 » 07.08.2018, 00:40

Результат отличный, вот только с крайним значком проблемка :cry:
Спойлер
Изображение
Пусть это останется для меня,попробую сам :smile:
marillion13
Аватара
Репутация: 17
С нами: 9 лет 9 месяцев

Сообщение #1195 LUR » 07.08.2018, 00:44

marillion13:Пусть это останется для меня,попробую сам
Замучаетесь пробовать. Во-первых в текущей сборке можно двигать ширину боковой панели. Если наведете мышь на границу между плейлистом и боковой панели, курсор мыши изменится, и сможете потянуть куда хотите.

Добавлено спустя 30 минут 10 секунд:
Вобщем вот инструкция по масштабированию всей сборки, т.к. за разные элементы отвечают разные плагины и их настройки в разных местах.

1. Меняем масштаб в главном скрипте сборки:
Спойлер
Shift+Win+ПКМ
0.png
0.png (17.12 КБ) Просмотров: 1843


Код: Выделить всё
var _scale = 1;
var _alpha = 40;

var _tp = fb.ProfilePath + "themes\\lur\\black\\";

var _bgColor = 0xFF141414;
var _ww = 0, _wh = 0;
var _mainViewWidth = 0;
var _sidebarWidth = window.GetProperty("Sidebar width", 320 * _scale);
var _lyricsArtHeight = window.GetProperty("Lyrics art height", 150 * _scale);
var _newMainViewWidth, _newSidebarWidth, _newLyricsArtHeight;
var g_cover_image = null;
   
window.HandOnButtons = true;

var ButtonStop = window.CreateButton(7 * _scale, 18 * _scale, _tp+"stop.png", _tp+"stop_over.png");
ButtonStop.Width *= _scale;
ButtonStop.Height *= _scale;
var ButtonPrev = window.CreateButton(46 * _scale, 18 * _scale, _tp+"prev.png", _tp+"prev_over.png");
ButtonPrev.Width *= _scale;
ButtonPrev.Height *= _scale;
var ButtonPlay = window.CreateButton(83 * _scale, 15 * _scale, [_tp+"play.png", _tp+"pause.png"], [_tp+"play_over.png", _tp+"pause_over.png"]);
ButtonPlay.Width *= _scale;
ButtonPlay.Height *= _scale;
var ButtonNext = window.CreateButton(126 * _scale, 18 * _scale, _tp+"next.png", _tp+"next_over.png");
ButtonNext.Width *= _scale;
ButtonNext.Height *= _scale;
var ButtonOpen = window.CreateButton(165 * _scale, 18 * _scale, _tp+"open.png", _tp+"open_over.png");
ButtonOpen.Width *= _scale;
ButtonOpen.Height *= _scale;
var ButtonRepeat = window.CreateButton(207 * _scale, 16 * _scale, [_tp+"repeat.png", _tp+"repeat_all.png", _tp+"repeat_one.png"], null);
ButtonRepeat.Width *= _scale;
ButtonRepeat.Height *= _scale;
var ButtonShuffle = window.CreateButton(207 * _scale, 34 * _scale, [_tp+"shuffle.png", _tp+"shuffle_on.png"], null);
ButtonShuffle.Width *= _scale;
ButtonShuffle.Height *= _scale;
var ButtonSeekbar = window.CreateButton(0, 0, [_tp+"switch_wave.png", _tp+"switch_vu.png", _tp+"switch_simple.png", _tp+"switch_spectrum.png"], [_tp+"switch_wave_over.png", _tp+"switch_vu_over.png", _tp+"switch_simple_over.png", _tp+"switch_spectrum_over.png"]);
ButtonSeekbar.Width *= _scale;
ButtonSeekbar.Height *= _scale;
var ButtonPlaylist = window.CreateButton(0, 0, [_tp+"plain.png", _tp+"plain_on.png"], _tp+"plain_on.png");
ButtonPlaylist.Width *= _scale;
ButtonPlaylist.Height *= _scale;
var ButtonLibPlaylist = window.CreateButton(0, 0, [_tp+"cd.png", _tp+"cd_on.png"], _tp+"cd_on.png");
ButtonLibPlaylist.Width *= _scale;
ButtonLibPlaylist.Height *= _scale;
var ButtonShpeck = window.CreateButton(0, 0, [_tp+"vis.png", _tp+"vis_on.png"], _tp+"vis_on.png");
ButtonShpeck.Width *= _scale;
ButtonShpeck.Height *= _scale;
var ButtonNowPlaying = window.CreateButton(0, 0, _tp+"now_playing.png", _tp+"now_playing_over.png");
ButtonNowPlaying.Width *= _scale;
ButtonNowPlaying.Height *= _scale;
var ButtonMiniPlayer = window.CreateButton(0, 0, [_tp+"mini.png", _tp+"mini_on.png"], _tp+"mini_on.png");
ButtonMiniPlayer.Width *= _scale;
ButtonMiniPlayer.Height *= _scale;
var ButtonPlorg = window.CreateButton(0, 0, [_tp+"plain.png", _tp+"plain_on.png"], _tp+"plain_on.png");
ButtonPlorg.Width *= _scale;
ButtonPlorg.Height *= _scale;
var ButtonLibrary = window.CreateButton(0, 0, [_tp+"library.png", _tp+"library_on.png"], _tp+"library_on.png");
ButtonLibrary.Width *= _scale;
ButtonLibrary.Height *= _scale;
var ButtonInfo = window.CreateButton(0, 0, [_tp+"info.png", _tp+"info_on.png"], _tp+"info_on.png");
ButtonInfo.Width *= _scale;
ButtonInfo.Height *= _scale;
var ButtonBio = window.CreateButton(0, 0, [_tp+"bio.png", _tp+"bio_on.png"], _tp+"bio_on.png");
ButtonBio.Width *= _scale;
ButtonBio.Height *= _scale;
var ButtonLyrics = window.CreateButton(0, 0, [_tp+"lyrics.png", _tp+"lyrics_on.png"], _tp+"lyrics_on.png");
ButtonLyrics.Width *= _scale;
ButtonLyrics.Height *= _scale;
var ButtonPreferences = window.CreateButton(0, 0, _tp+"prefs.png", _tp+"prefs_over.png");
ButtonPreferences.Width *= _scale;
ButtonPreferences.Height *= _scale;

window.RadioButtons([ButtonPlaylist, ButtonLibPlaylist, ButtonShpeck]);
window.RadioButtons([ButtonPlorg, ButtonLibrary, ButtonInfo, ButtonBio, ButtonLyrics]);

SeekbarMode = {
   Spectrum: 0,
   Waveform: 1,
    VUMeter: 2,
   Simple: 3   
};
ButtonSeekbar.State = window.GetProperty("Seekbar mode", SeekbarMode.Spectrum);

ViewMode = {
   Playlist: 0,
   LibPlaylist: 1,
   Shpeck: 2
};
switch(window.GetProperty("View mode", ViewMode.Playlist))
{
case ViewMode.Playlist:
    ButtonPlaylist.State = 1;
    break;
case ViewMode.LibPlaylist:
    ButtonLibPlaylist.State = 1;
    break;
case ViewMode.Shpeck:
    ButtonShpeck.State = 1;
    break;
default:
    break;
}

SidebarView = {
   Plorg: 0,
   Library: 1,
   Info: 2,
   Bio: 3,
   Lyrics: 4
};
switch(window.GetProperty("Sidebar view", SidebarView.Plorg))
{
case SidebarView.Plorg:
    ButtonPlorg.State = 1;
    break;
case SidebarView.Library:
    ButtonLibrary.State = 1;
    break;
case SidebarView.Info:
    ButtonInfo.State = 1;
    break;
case SidebarView.Bio:
    ButtonBio.State = 1;
    break;
case SidebarView.Lyrics:
    ButtonLyrics.State = 1;
    break;
default:
    break;
}

PlaybackOrder = {
    Default: 0,
    RepeatPlaylist: 1,
    RepeatTrack: 2,
    Random: 3,
    ShuffleTracks: 4,
    ShuffleAlbums: 5,
    ShuffleFolders: 6   
};
switch(plman.PlaybackOrder)
{
case PlaybackOrder.Default:
    ButtonRepeat.State = 0;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.RepeatPlaylist:
    ButtonRepeat.State = 1;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.RepeatTrack:
    ButtonRepeat.State = 2;
    ButtonShuffle.State = 0;
    break;
case PlaybackOrder.ShuffleTracks:
    ButtonRepeat.State = 0;
    ButtonShuffle.State = 1;
    break;
default:
    break;
}

WindowState = {
    Normal: 0,
    Minimized: 1,
    Maximized: 2
};
ButtonMiniPlayer.State = window.GetProperty("Mini view", false) ? 1 : 0;
var UIHacks = new ActiveXObject("UIHacks");
var switchToMiniFromMaximized = false, switchFromMiniToFull = false;
set_player_size(true);

function on_size() {
   _ww = window.Width;
   _wh = window.Height;   
   
    if(window.GetProperty("Mini view", false)) { 
        if(UIHacks.MainWindowState == WindowState.Maximized) {
            UIHacks.MainWindowState = WindowState.Normal;           
            return;
        }
        else {
            if(switchToMiniFromMaximized) {
                set_player_size(false);
            }
        }
    }
    else {
        if(!switchFromMiniToFull && UIHacks.MainWindowState != WindowState.Maximized) {
            window.SetProperty("Full view fullscreen", false);
            window.SetProperty("Full view maximized", false);
        }
    }       
   
    _mainViewWidth = _ww - _sidebarWidth;
    move_buttons();
    do_layout();
}

function move_buttons() {      
   ButtonSeekbar.Move(_mainViewWidth - 26 * _scale, 44 * _scale);
      
   ButtonPlaylist.Move(2 * _scale, _wh - 28 * _scale);
   ButtonLibPlaylist.Move(28 * _scale, _wh - 28 * _scale);
   ButtonShpeck.Move(54 * _scale, _wh - 28 * _scale);
   if(!window.GetProperty("Mini view", false))
        ButtonMiniPlayer.Move(80 * _scale, _wh - 28 * _scale);
    else
        ButtonMiniPlayer.Move(2 * _scale, _wh - 28 * _scale);
   ButtonNowPlaying.Move(106 * _scale, _wh - 28 * _scale);

   ButtonPlorg.Move(_mainViewWidth + 20 * _scale, 35 * _scale);
   ButtonLibrary.Move(_mainViewWidth + 46 * _scale, 35 * _scale);
   ButtonInfo.Move(_mainViewWidth + 72 * _scale, 35 * _scale);
   ButtonBio.Move(_mainViewWidth + 98 * _scale, 35 * _scale);
   ButtonLyrics.Move(_mainViewWidth + 124 * _scale, 35 * _scale);
   ButtonPreferences.Move(_sidebarWidth > 175 * _scale ? _ww - 30 * _scale : _mainViewWidth + 148 * _scale, 35 * _scale);
}

var Spectrum = window.GetPanel("Spectrum");
var Waveform = window.GetPanel("Waveform");
var VUMeter = window.GetPanel("VUMeter");
var Seekbar = window.GetPanel("Seekbar");
var Time = window.GetPanel("Time");
var Playlist = window.GetPanel("Playlist");
var LibPlaylist = window.GetPanel("LibPlaylist");
var Shpeck = window.GetPanel("Shpeck");
// Для автостарта шпека
    Shpeck.Show();
    Shpeck.Move(0, 70, 10, 10);         
var StatusInfo = window.GetPanel("StatusInfo");
var Search = window.GetPanel("Search");
var Plorg = window.GetPanel("Plorg");
var Lib = window.GetPanel("Lib");
var Info = window.GetPanel("Info");
var Bio = window.GetPanel("Bio");
var Artwork = window.GetPanel("Artwork");
var Lyrics = window.GetPanel("Lyrics");
var Volume = window.GetPanel("Volume");

function do_layout() {
    switch(window.GetProperty("Seekbar mode", SeekbarMode.Spectrum))
   {
      case SeekbarMode.Spectrum:
         Waveform.Hidden = VUMeter.Hidden = true;
         Spectrum.Move(240 * _scale, 0, _mainViewWidth - 325 * _scale, 50 * _scale);
         Spectrum.Show();
         Seekbar.Move(240 * _scale, 50 * _scale, _mainViewWidth - 325 * _scale, 20 * _scale);
         Seekbar.Show();
         break;
      case SeekbarMode.Waveform:
         Spectrum.Hidden = Seekbar.Hidden = VUMeter.Hidden = true;
         Waveform.Move(240 * _scale, 0, _mainViewWidth - 325 * _scale, 70 * _scale);
         Waveform.Show();
         break;
      case SeekbarMode.VUMeter:
         Spectrum.Hidden = Waveform.Hidden = true;
         VUMeter.Move(240 * _scale, 0, _mainViewWidth - 325 * _scale, 50 * _scale);
         VUMeter.Show();
         Seekbar.Move(240 * _scale, 50 * _scale, _mainViewWidth - 325 * _scale, 20 * _scale);
         Seekbar.Show();
         break;
      case SeekbarMode.Simple:
         Spectrum.Hidden = Waveform.Hidden = VUMeter.Hidden = true;
         Seekbar.Move(240 * _scale, 0, _mainViewWidth - 325 * _scale, 70 * _scale);
         Seekbar.Show();
         break;
      default:
         break;
   }
   
   Time.Move(_mainViewWidth - 85 * _scale, 0, 85 * _scale, 44 * _scale);
   Time.Show();
   
    switch(window.GetProperty("View mode", ViewMode.Playlist))
   {
      case ViewMode.Playlist:
         LibPlaylist.Hidden = Shpeck.Hidden = true;
         Playlist.Move(0, 70 * _scale, _mainViewWidth, _wh - 100 * _scale);
         Playlist.Show();
         break;
      case ViewMode.LibPlaylist:
         Playlist.Hidden = Shpeck.Hidden = true;
         LibPlaylist.Move(0, 70 * _scale, _mainViewWidth, _wh - 100 * _scale);
         LibPlaylist.Show();
         break;
      case ViewMode.Shpeck:
         Playlist.Hidden = LibPlaylist.Hidden = true;
         Shpeck.Show();
         Shpeck.Move(0, 70 * _scale, _mainViewWidth, _wh - 100 * _scale);
         break;
      default:
         break;
   }

    if(!window.GetProperty("Mini view", false))
        StatusInfo.Move(136 * _scale, _wh - 30 * _scale, _mainViewWidth - 136 * _scale, 30 * _scale);
    else {
        if(!window.GetProperty("Volume expand"))
            StatusInfo.Move(32 * _scale, _wh - 30 * _scale, _mainViewWidth - 64 * _scale, 30 * _scale);
        else
            StatusInfo.Move(32 * _scale, _wh - 30 * _scale, _mainViewWidth - 194 * _scale, 30 * _scale);
    }
   StatusInfo.Show();
   
    Search.Move(_mainViewWidth + 20 * _scale, 5 * _scale, _sidebarWidth - 24 * _scale, 22 * _scale);
   Search.Show();

    switch(window.GetProperty("Sidebar view", SidebarView.Plorg))
   {
      case SidebarView.Plorg:
         Lib.Hidden = Info.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
            Plorg.Move(_mainViewWidth + 5 * _scale, 70 * _scale, _sidebarWidth - 5 * _scale, _wh - 100 * _scale);
         Plorg.Show();
         break;
      case SidebarView.Library:
         Plorg.Hidden = Info.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Lib.Move(_mainViewWidth + 5 * _scale, 70 * _scale, _sidebarWidth + 12 * _scale, _wh - 100 * _scale);
         Lib.Show();
         break;
      case SidebarView.Info:
         Plorg.Hidden = Lib.Hidden = Bio.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Info.Move(_mainViewWidth + 10 * _scale, 70 * _scale, _sidebarWidth - 10 * _scale, _wh - 100 * _scale);
         Info.Show();
         break;
      case SidebarView.Bio:
         Plorg.Hidden = Lib.Hidden = Info.Hidden = Artwork.Hidden = Lyrics.Hidden = true;
         Bio.Move(_mainViewWidth + 10 * _scale, 70 * _scale, _sidebarWidth - 10 * _scale, _wh - 100 * _scale);
         Bio.Show();
         break;
      case SidebarView.Lyrics:
         Plorg.Hidden = Lib.Hidden = Info.Hidden = Bio.Hidden = true;
         Artwork.Move(_mainViewWidth + 10 * _scale, 70 * _scale, _sidebarWidth - 10 * _scale, _lyricsArtHeight);
         Artwork.Show();
         Lyrics.Move(_mainViewWidth + 10 * _scale, 70 * _scale + _lyricsArtHeight + 5 * _scale, _sidebarWidth - 20 * _scale, _wh - 105 * _scale - _lyricsArtHeight);
         Lyrics.Show();
         break;
      default:
         break;
   }
   
    if(!window.GetProperty("Volume expand", false))
        Volume.Move(_ww - 25 * _scale, _wh - 30 * _scale, 26 * _scale, 30 * _scale);
    else {
        if(!window.GetProperty("Mini view", false)) {
            if(_sidebarWidth >= 160 * _scale)
               Volume.Move(_ww - 160 * _scale, _wh - 30 * _scale, 161 * _scale, 30 * _scale);
            else
                Volume.Move(_ww - _sidebarWidth, _wh - 30 * _scale, _sidebarWidth + 1 * _scale, 30 * _scale);
        }
        else
            Volume.Move(_mainViewWidth - 155 * _scale, _wh - 30 * _scale, 156 * _scale, 30 * _scale);
    }
   Volume.Show();
}

function set_player_size(init) {

    if(window.GetProperty("Mini view", false)) {
        if(UIHacks.MainWindowState == WindowState.Maximized) {
            switchToMiniFromMaximized = true;
            window.SetProperty("Full view fullscreen", UIHacks.Fullscreen);
            window.SetProperty("Full view maximized", true);
            UIHacks.MainWindowState = WindowState.Normal;
            return;
        }
        else {
            if(!switchToMiniFromMaximized) {
                window.SetProperty("Full view fullscreen", false);
                window.SetProperty("Full view maximized", false);
            }
            switchToMiniFromMaximized = false;
        }
        if(!init) {
            window.SetProperty("Full view x", window.FoobarWindowX);
            window.SetProperty("Full view y", window.FoobarWindowY);
            window.SetProperty("Full view width", window.FoobarWindowWidth);
            window.SetProperty("Full view height", window.FoobarWindowHeight);
            window.SetProperty("Full view sidebar width", _sidebarWidth);
        }
        ButtonPlaylist.Hidden = ButtonLibPlaylist.Hidden = ButtonShpeck.Hidden = ButtonNowPlaying.Hidden = true;
        window.SetProperty("Sidebar width", 5 * _scale);
       _sidebarWidth = 5 * _scale;
       _mainViewWidth = _ww - _sidebarWidth;
        window.FoobarWindowX = window.GetProperty("Mini view x", window.FoobarWindowX);
        window.FoobarWindowY = window.GetProperty("Mini view y", window.FoobarWindowY);
        window.FoobarWindowWidth = window.GetProperty("Mini view width", window.FoobarWindowWidth);
        UIHacks.MinSize.Width = 315 * _scale;
        UIHacks.MaxSize.Width = 500 * _scale;
        UIHacks.MinSize.Height = UIHacks.MaxSize.Height = 95 * _scale;
        UIHacks.MinSize = UIHacks.MaxSize = true;
        window.NotifyOthers("Mini view", true);
    }
    else {
        if(!init) {
            window.SetProperty("Mini view x", window.FoobarWindowX);
            window.SetProperty("Mini view y", window.FoobarWindowY);
            window.SetProperty("Mini view width", window.FoobarWindowWidth);
        }
        UIHacks.MaxSize = false;
       _sidebarWidth = window.GetProperty("Full view sidebar width", 320 * _scale);
        window.SetProperty("Sidebar width", _sidebarWidth);
       _mainViewWidth = _ww - _sidebarWidth;
        switchFromMiniToFull = true;
        window.FoobarWindowX = window.GetProperty("Full view x", 200 * _scale);
        window.FoobarWindowY = window.GetProperty("Full view y", 200 * _scale);
        window.FoobarWindowWidth = window.GetProperty("Full view width", 1100 * _scale);
        window.FoobarWindowHeight = window.GetProperty("Full view height", 700 * _scale);
        UIHacks.MinSize.Width = _sidebarWidth + 310 * _scale;
        UIHacks.MinSize.Height = 100 * _scale;
        UIHacks.MinSize = true;     
        UIHacks.MaxSize = false;       
        if(window.GetProperty("Full view fullscreen", false)) UIHacks.Fullscreen = true;
        else if(window.GetProperty("Full view maximized", false)) UIHacks.MainWindowState = WindowState.Maximized;
        switchFromMiniToFull = false;
        ButtonPlaylist.Hidden = ButtonLibPlaylist.Hidden = ButtonShpeck.Hidden = ButtonNowPlaying.Hidden = false;
        window.NotifyOthers("Mini view", false);
    }           
}

function on_paint(gr) {   
   
    gr.FillSolidRect(0, 0, _ww, _wh, _bgColor);
//   gr.FillSolidRect(0, 0, 240, 70, _bgColor);
   //gr.FillSolidRect(_mainViewWidth - 85, 44, 85, 26, _bgColor);
   //gr.FillSolidRect(0, _wh - 30, 134, 30, _bgColor);      
   //gr.FillSolidRect(_mainViewWidth, 0, _sidebarWidth, 35, _bgColor);
   gr.DrawRect(_mainViewWidth + 19 * _scale, 4 * _scale, _sidebarWidth - 22 * _scale, 24 * _scale, 1 * _scale, 0xFF646464);
   //gr.FillSolidRect(_mainViewWidth, 35, _sidebarWidth, 35, _bgColor);      
   //gr.FillSolidRect(_mainViewWidth, 70, 10, _wh - 100, _bgColor);
   //gr.FillSolidRect(_ww - 10, 70, 10, _wh - 100, _bgColor);   
   //if(!window.GetProperty("Mini view", false))
        //gr.FillSolidRect(_mainViewWidth, _wh - 30, _sidebarWidth / 2 + 1, 30, _bgColor);
    //else
        //gr.FillSolidRect(_mainViewWidth, _wh - 30, _sidebarWidth / 2 + 1, 30, _bgColor);
   //gr.FillSolidRect(_mainViewWidth, 70 + _lyricsArtHeight, _sidebarWidth, 5, _bgColor);

    // Фоновая обложка для обычного плейлиста
    if(window.GetProperty("View mode", ViewMode.Playlist) == ViewMode.Playlist)
    {
        var ps_width = _mainViewWidth;
        var ps_height = _wh - 100 * _scale;
        gr.FillSolidRect(0, 70 * _scale, ps_width, ps_height, _bgColor);
        if(g_cover_image && ps_width > 0 && ps_height > 0) {
            if(ps_width > ps_height)
            {
                var dy = g_cover_image.Height - ps_height * g_cover_image.Width / ps_width;
                gr.DrawImage(g_cover_image, 0, 70 * _scale, ps_width, ps_height, 0, dy / 2, g_cover_image.Width, g_cover_image.Height - dy, 0, _alpha);
            }
            else
            {
                var dx = g_cover_image.Width - ps_width * g_cover_image.Height / ps_height;
                gr.DrawImage(g_cover_image, 0, 70 * _scale, ps_width, ps_height, dx / 2, 0, g_cover_image.Width - dx, g_cover_image.Height, 0, _alpha);
            }
        }
    }

   if(_dragSidebar) gr.FillSolidRect(_newMainViewWidth, 0, 5 * _scale, _wh, 0xFFE81123);
    else
   if(_dragLyricsArt) gr.FillSolidRect(_mainViewWidth + 10 * _scale, 70 * _scale + _newLyricsArtHeight, _sidebarWidth - 10 * _scale, 5 * _scale, 0xFFE81123);
}

function on_button_click(id) {
    switch(id)
    {
    case ButtonStop.ID:
        fb.Stop();
        break;
    case ButtonPrev.ID:
        fb.Prev();
        break;
    case ButtonPlay.ID:
        if(fb.IsPlaying) fb.Pause(); else fb.Play();
        break;
    case ButtonNext.ID:
        fb.Next();
        break;
    case ButtonOpen.ID:
        fb.RunMainMenuCommand("Файл/Открыть...");
        break;
    case ButtonRepeat.ID:
        ButtonShuffle.State = 0;
        plman.PlaybackOrder = ButtonRepeat.State;
        break;
    case ButtonShuffle.ID:
        ButtonRepeat.State = 0;
        if(ButtonShuffle.State == 1)
            plman.PlaybackOrder = PlaybackOrder.ShuffleTracks;
        else
            plman.PlaybackOrder = PlaybackOrder.Default;
        break;
    case ButtonSeekbar.ID:
        window.SetProperty("Seekbar mode", ButtonSeekbar.State);
        break;
    case ButtonPlaylist.ID:
        window.SetProperty("View mode", ViewMode.Playlist);
        break;
    case ButtonLibPlaylist.ID:
        window.SetProperty("View mode", ViewMode.LibPlaylist);
        break;
    case ButtonShpeck.ID:
        window.SetProperty("View mode", ViewMode.Shpeck);
        break;
    case ButtonNowPlaying.ID:
        fb.RunMainMenuCommand("Вид/Плейлист Columns/Перейти к текущему треку");   
        break;
    case ButtonMiniPlayer.ID:
        window.SetProperty("Mini view", !window.GetProperty("Mini view", false));
        set_player_size(false);
        break;
    case ButtonPlorg.ID:
        window.SetProperty("Sidebar view", SidebarView.Plorg);
        break;
    case ButtonLibrary.ID:
        window.SetProperty("Sidebar view", SidebarView.Library);
        break;
    case ButtonInfo.ID:
        window.SetProperty("Sidebar view", SidebarView.Info);
        break;
    case ButtonBio.ID:
        window.SetProperty("Sidebar view", SidebarView.Bio);
        break;
    case ButtonLyrics.ID:
        window.SetProperty("Sidebar view", SidebarView.Lyrics);
        break;
    case ButtonPreferences.ID:
        fb.RunMainMenuCommand("Файл/Настройки");               
        break;
    default:
        break;
    }
   
    do_layout();
}

function on_playback_starting(cmd, is_paused) {
   ButtonPlay.State = is_paused ? 0 : 1;
}
function on_playback_pause(state) {
   ButtonPlay.State = state ? 0 : 1;
}
function on_playback_stop(reason) {
    ButtonPlay.State = 0;
}
AlbumArtId = {
   front: 0,
   back: 1,
   disc: 2,
   icon: 3,
   artist: 4
};
var meta_now = fb.GetNowPlaying();
if(meta_now) g_cover_image = utils.GetAlbumArtV2(meta_now, AlbumArtId.front, false);
function on_playback_new_track(metadb) {
    if(g_cover_image) g_cover_image.Dispose();
    g_cover_image = utils.GetAlbumArtV2(metadb, AlbumArtId.front, false);
    window.Repaint();
}

var _dragSidebar = false, _dragLyricsArt = false;

function set_sidebar_width(width) {
   window.SetProperty("Sidebar width", width);
    if(!window.GetProperty("Mini view", false)) window.SetProperty("Full view sidebar width", width);
   _sidebarWidth = width;
   _mainViewWidth = _ww - _sidebarWidth;
    UIHacks.MinSize.Width = _sidebarWidth + 310;
   move_buttons();
   do_layout();
    window.Repaint();
}

function on_mouse_lbtn_down(x, y, mask) {
   if(!window.GetProperty("Lock sidebar", false) && !window.GetProperty("Mini view", false) && x >= _mainViewWidth && x < _mainViewWidth + 5 * _scale)
   {
      _dragSidebar = true;
        _newMainViewWidth = _mainViewWidth;
        _newSidebarWidth = _sidebarWidth;
      window.Repaint();
   }
    else
   if(x > _mainViewWidth && y >= 70 * _scale + _lyricsArtHeight && y <= 70 * _scale + _lyricsArtHeight + 5 * _scale)
   {
      _dragLyricsArt = true;
        _newLyricsArtHeight = _lyricsArtHeight;
        window.Repaint();
   }
}

function on_mouse_lbtn_up(x, y, mask) {
   if(_dragSidebar)
    {
        _dragSidebar = false;
        _mainViewWidth = _newMainViewWidth;
        _sidebarWidth = _newSidebarWidth;
        set_sidebar_width(_sidebarWidth);
    }
    if(_dragLyricsArt)
    {
        _dragLyricsArt = false;
        _lyricsArtHeight = _newLyricsArtHeight;
        window.SetProperty("Lyrics art height", _lyricsArtHeight);
        do_layout();
        window.Repaint();
    }
}

function on_mouse_lbtn_dblclk(x, y, mask) {
   if(!window.GetProperty("Lock sidebar", false) && x >= _mainViewWidth && x < _mainViewWidth + 5 * _scale)
    {
        set_sidebar_width(320 * _scale);
        window.Repaint();
    }
    else
    if(x >= _mainViewWidth && y >= 70 * _scale + _lyricsArtHeight && y <= 70 * _scale + _lyricsArtHeight + 5 * _scale)
    {
        _lyricsArtHeight = 150 * _scale;
        window.SetProperty("Lyrics art height", _lyricsArtHeight);
        do_layout();
        window.Repaint();
    }   
}

var IDC_ARROW = 32512;
var IDC_HAND = 32649;
var IDC_SIZEWE = 32644;
var IDC_SIZENS = 32645;

function on_mouse_move(x, y, mask) {
   
    if(!window.GetProperty("Lock sidebar", false) && !window.GetProperty("Mini view", false) && x >= _mainViewWidth && x < _mainViewWidth + 5 * _scale)
       window.SetCursor(IDC_SIZEWE);
    else
    if(x >= _mainViewWidth && y >= 70 * _scale + _lyricsArtHeight && y <= 70 * _scale + _lyricsArtHeight + 5 * _scale)
       window.SetCursor(IDC_SIZENS);
    else
      window.SetCursor(IDC_ARROW);

   if(_dragSidebar)
   {
        window.SetCursor(IDC_SIZEWE);
        _newMainViewWidth = x;
      _newSidebarWidth = _ww - x;
      if(_newSidebarWidth < 5 * _scale)
        {
            _newSidebarWidth = 5 * _scale;
            _newMainViewWidth = _ww - 10 * _scale;
        }
        if(_newMainViewWidth < 325 * _scale)
        {
            _newMainViewWidth = 325 * _scale;
            _newSidebarWidth = _ww - 325 * _scale;
        }
        window.Repaint();
   }
    else
   if(_dragLyricsArt)
   {
        window.SetCursor(IDC_SIZENS);
      _newLyricsArtHeight = y - 70 * _scale;
      if(_newLyricsArtHeight < 0) _newLyricsArtHeight = 0;
        if(_newLyricsArtHeight > _wh - 105 * _scale) _newLyricsArtHeight = _wh - 105 * _scale;
        window.Repaint();
   }
}

MF_ENABLED = 0x00000000;   

function on_mouse_rbtn_up(x, y, mask) {
   
    if(x <= _mainViewWidth) return true;
   
   var sidebarLocked = window.GetProperty("Lock sidebar", false);
   
   var menu = window.CreatePopupMenu();   
    menu.AppendMenuItem(MF_ENABLED, 10, "Зафиксировать боковую панель");
   //menu.AppendMenuSeparator();
   //menu.AppendMenuItem(MF_ENABLED, 20, "Properties");
   //menu.AppendMenuItem(MF_ENABLED, 30, "Configure");
    menu.CheckMenuItem(10, sidebarLocked);
   var ret = menu.TrackPopupMenu(x,y);
   switch(ret)
   {
      case 10:
         window.SetProperty("Lock sidebar", !sidebarLocked);
         break;
      case 20:
         window.ShowProperties();
         break;
      case 30:
         window.ShowConfigure();
         break;
      default:
         break;
   }
   
   return true;
}

function on_notify_data(name, info) {
    if(name != "Volume expand") return;
    window.SetProperty("Volume expand", info);
    do_layout();
}

var _scale = масштаб. Единица обычный размер, 1.5, в полтора раза больше и т.д.
var _alpha = уровень яркости обложки под плейлистом

2. Изменяем масштаб таймера трека
Спойлер
Shift+Win+ПКМ
1.PNG
1.PNG (6.15 КБ) Просмотров: 1843


Код: Выделить всё
var _scale = 1;

var DT_RIGHT = 0x00000002;
var DT_VCENTER = 0x00000004;
var DT_WORDBREAK = 0x00000010;
var DT_CALCRECT = 0x00000400;
var DT_NOPREFIX = 0x00000800;

ColourTypeCUI = {
    text: 0,
    selection_text: 1,
    inactive_selection_text: 2,
    background: 3,
    selection_background: 4,
    inactive_selection_background: 5,
    active_item_frame: 6
};
FontTypeCUI = {
    items: 0,
    labels: 1
};
ColourTypeDUI = {
    text: 0,
    background: 1,
    highlight: 2,
    selection: 3
};
FontTypeDUI = {
    defaults: 0,
    tabs: 1,
    lists: 2,
    playlists: 3,
    statusbar: 4,
    console: 5
};

var g_instancetype = window.InstanceType;
var g_font = null;
var _ww = 0, _wh = 0;
var g_textcolor = 0;
var g_backcolor = 0;

function get_font() {
    if (g_instancetype == 0) { // CUI
        g_font = gdi.Font(window.GetFontCUI(FontTypeCUI.items).Name, 21 * _scale, 1);
    } else if (g_instancetype == 1) { // DUI
        g_font = gdi.Font(window.GetFontDUI(FontTypeDUI.defaults).Name, 21 * _scale, 1);
    } else {
        // None
    }
}
get_font();

function get_colors() {
    if (g_instancetype == 0) { // CUI
        g_textcolor = window.GetColourCUI(ColourTypeCUI.text);
        g_backcolor = window.GetColourCUI(ColourTypeCUI.background);
    } else if (g_instancetype == 1) { // DUI
        g_textcolor = window.GetColourDUI(ColourTypeDUI.text);
        g_backcolor = window.GetColourDUI(ColourTypeDUI.background);
    } else {
        // None
    }
}
get_colors();

function on_size() {
    _ww = window.Width;
    _wh = window.Height;
}

function on_paint(gr) {
    gr.FillSolidRect(0, 0, _ww, _wh, g_backcolor);
    var playbackTime = window.GetProperty("Playback time", true) ?
        fb.TitleFormat("%playback_time%").Eval() :
        fb.TitleFormat("-%playback_time_remaining%").Eval();
    gr.GdiDrawText(playbackTime, g_font, g_textcolor, 0, 0, _ww, _wh, DT_VCENTER | DT_RIGHT | DT_WORDBREAK | DT_CALCRECT | DT_NOPREFIX);
}

function on_playback_seek(time) {
    window.Repaint();
}
function on_playback_time(time) {
    window.Repaint();
}
function on_playback_stop(reason) {
    window.Repaint();
}

function on_mouse_lbtn_down(x, y, mask) {
    window.SetProperty("Playback time", !window.GetProperty("Playback time", true));
    window.Repaint();
}   

function on_font_changed() {
    get_font();
    window.Repaint();
}

function on_colors_changed() {
    get_colors();
    window.Repaint();
}

function on_mouse_rbtn_up(x, y, mask) {
   return true;
}

var _scale = масштаб.

3. Изменяем масштаб регулятора громкости:
Спойлер
Shift+Win+ПКМ
2.PNG
2.PNG (3.39 КБ) Просмотров: 1843


Код: Выделить всё
var _scale = 1;

function RGBA(r, g, b, a) {
   return ((a << 24) | (r << 16) | (g << 8) | (b));
}

ColourTypeCUI = {
    text: 0,
    selection_text: 1,
    inactive_selection_text: 2,
    background: 3,
    selection_background: 4,
    inactive_selection_background: 5,
    active_item_frame: 6
};

IDC_ARROW = 32512;
IDC_HAND = 32649;

var tp = fb.ProfilePath + "themes\\lur\\black\\";
var g_img_volume = gdi.Image(tp + "volume.png");
var g_img_mute = gdi.Image(tp + "mute.png");
var g_animating = false, g_waiting = false, g_cursor_on_icon = false;
var g_animation_timer, g_wait_timer;
var g_count = window.GetProperty("Collapse volume", true) ? 0 : 10;
var g_drag = false;
var ww;
var wh;

function pos2vol(p) {
     return (50 * Math.log(0.99 * p + 0.01) / Math.log(10));
}

function vol2pos(v){
   var p=((Math.pow(10,v/50)-0.01)/0.99);
   return(p);
}

function on_size() {
    ww = window.Width;
    wh = window.Height;
}

function on_paint(gr){
    var bgcolor = window.GetColourCUI(ColourTypeCUI.background);
    gr.FillSolidRect(0, 0, ww, wh, bgcolor);
    var width = g_count * (ww - 30 * _scale) / 10;
   var pos = parseInt(vol2pos(fb.Volume) * width);
    var x = ww - 4 * _scale - width;
    gr.DrawImage(fb.Volume > -100 ? g_img_volume : g_img_mute,
                 x - 26 * _scale, 0, 26 * _scale, 26 * _scale,
                 0, 0, 26, 26,
                 0, g_count != 0 || g_cursor_on_icon ? 255 : 155);
    gr.FillSolidRect(x, 12 * _scale, width, 2 * _scale, RGBA(180,180,180,60));
    gr.FillSolidRect(x, 12 * _scale, pos, 2 * _scale, RGBA(180,180,180,255));
}

function StartWaitingToMinimize() {
    if(g_waiting || !window.GetProperty("Collapse volume", true)) return;
    g_waiting = true;
    g_wait_timer = window.SetTimeout(function() {       
        g_cursor_on_icon = false;       
        g_animating = true;
        g_waiting = false;
        g_animation_timer = window.SetInterval(function(){
            g_count--;
            window.Repaint();
            if(g_count <= 0) {
                window.ClearInterval(g_animation_timer);
                g_animating = false;
                g_count = 0;
                window.NotifyOthers("Volume expand", false);               
            }
        }, 15);
    }, 5000);
}

function StopWaitingToMinimize() {
    if(!g_waiting) return;
    window.ClearTimeout(g_wait_timer);
    g_waiting = false;
}

function on_mouse_lbtn_down(x,y){
    if(g_animating) return;
       
    if(g_count == 0) {
        if(x >= ww - 30 * _scale) {
            window.NotifyOthers("Volume expand", true);
            g_cursor_on_icon = false;
            g_animating = true;
            g_animation_timer = window.SetInterval(function(){
                g_count++;
                window.Repaint();
                if(g_count >= 10) {
                    window.ClearInterval(g_animation_timer);
                    g_animating = false;
                    g_count = 10;
                    StartWaitingToMinimize();
                }
            }, 15);
        }
    }
    else {
        StopWaitingToMinimize();
        if(x <= 26 * _scale) fb.VolumeMute(); else g_drag = true;
    }
}

function on_mouse_lbtn_up(x,y){
    if(g_animating) return;
   
    on_mouse_move(x,y);
    g_drag = false;
    StartWaitingToMinimize();
}

function on_mouse_move(x,y){
    if(g_animating) return;
   
    if(g_drag){
        var p = x < 27 * _scale ? 0 : (x - 27 * _scale) / (ww - 30 * _scale);
        var v = pos2vol(p);
        if(fb.Volume != v) fb.Volume = v;
    }
    else {
        if(g_count == 0) {
            if(x >= ww - 30 * _scale) {
                window.SetCursor(IDC_HAND);
                if(!g_cursor_on_icon) {
                    g_cursor_on_icon = true;
                    window.RepaintRect(ww - 30 * _scale, 0, 26 * _scale, 26 * _scale);
                }               
            }
            else {
                window.SetCursor(IDC_ARROW);
                if(g_cursor_on_icon) {
                    g_cursor_on_icon = false;                   
                    window.RepaintRect(ww - 30 * _scale, 0, 26 * _scale, 26 * _scale);
                }
            }
        }
        else
            window.SetCursor(IDC_HAND);
    }
}

function on_mouse_leave() {
    if(g_animating) return;

    window.SetCursor(IDC_ARROW);

    if(g_cursor_on_icon) {
        g_cursor_on_icon = false;
        if(g_count == 0)
            window.RepaintRect(ww - 30 * _scale, 0, 26 * _scale, 26 * _scale);
    }
}

function on_mouse_wheel(step){
    if(g_animating) return;

    StopWaitingToMinimize();
    if(step > 0) fb.VolumeUp(); else fb.VolumeDown();   
    StartWaitingToMinimize();
}

function on_volume_change(val){
    window.Repaint();
}

function on_colors_changed() {
    window.Repaint();   
}

var MF_ENABLED = 0x00000000;
function on_mouse_rbtn_up(x, y, mask) {
   
    var menu = window.CreatePopupMenu();   
   
    menu.AppendMenuItem(MF_ENABLED, 10, "Скрывать регулятор громкости");   
    menu.CheckMenuItem(10, window.GetProperty("Collapse volume", true));

    var ret = menu.TrackPopupMenu(x, y);
   
    switch(ret)
    {
        case 10:
            window.SetProperty("Collapse volume", !window.GetProperty("Collapse volume", true));
            if(!window.GetProperty("Collapse volume", true)) {
                StopWaitingToMinimize();
                g_count = 10;
                window.NotifyOthers("Volume expand", true);
                window.Repaint();
            }
            StartWaitingToMinimize();
            break;
        default:
            break;
    }
   
   menu.Dispose();
       
   return true;
}

function on_notify_data(name, info) {
    if(name != "Mini view") return;
    window.SetProperty("Mini view", info);
}

var _scale = масштаб. Единица обычный размер, 1.5, в полтора раза больше и т.д.

4. Изменяем шрифт сборки:
Спойлер
3.png
3.png (46.5 КБ) Просмотров: 1843


5. Меняем высоту строчек в плейлисте
Спойлер
4.PNG

5.PNG
5.PNG (10.82 КБ) Просмотров: 1843


6. Меняем шрифт на панели свойств трека
Спойлер
Shift+Win+ПКМ
6.PNG
6.PNG (9.59 КБ) Просмотров: 1843

7.png
7.png (6.62 КБ) Просмотров: 739


7. Меняем шрифт на панели биографии
Спойлер
8.PNG
8.PNG (83.16 КБ) Просмотров: 1843

9.png
9.png (8.33 КБ) Просмотров: 739


8. Меняем шрифт на панели текстов песен
Спойлер
10.PNG

11.PNG
11.PNG (8.94 КБ) Просмотров: 1843

LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет

Сообщение #1196 Viatcheslav_Bukas » 07.08.2018, 15:25

Парни, простите за возможно глупый вопрос :wink: В продолжение моего сообщения - /viewtopic.php?t=4994&p=70618#p70618
Как сделать, чтобы содержимое колонки Название для потока радиостации можно было отредактировать вручную (в положении "СТОП")? Например (на скриншоте), RMI - Italo Disco Classic (верхний в списке) заменить на Italo Disco Classic. Возможно ли такое? Спасибо за помощь :smile:
Viatcheslav_Bukas M
Аватара
Откуда: Беларусь, г. Бобруйск
Репутация: 0
С нами: 6 лет 3 месяца

Сообщение #1197 vladj » 07.08.2018, 17:08

Viatcheslav_Bukas:Название для потока радиостации можно было отредактировать вручную
Как можно редактировать теги в треках, которые лежат на хардах сервера, и вещающие оттуда сами решают выводить-ли впереди название их сервера. Имхо.
vladj M
Аватара
Откуда: Пермский край
Репутация: 427
С нами: 14 лет 9 месяцев

Сообщение #1198 MC Web » 07.08.2018, 17:47

Viatcheslav_Bukas:Как сделать, чтобы содержимое колонки Название для потока радиостации можно было отредактировать вручную (в положении "СТОП")? Например (на скриншоте), RMI - Italo Disco Classic (верхний в списке) заменить на Italo Disco Classic.
Название радиостанции передается автоматически, у некоторых вообще нет никакой информации.
Viatcheslav_Bukas:Возможно ли такое?
Если есть желание, можно посмотреть ЗДЕСЬ, zeremy показал на видео, как это проделать с компонентом m-TAGS.
MC Web
Репутация: 248
С нами: 11 лет 3 месяца

Сообщение #1199 marillion13 » 07.08.2018, 17:51

LUR, В изменении скрипта на 1)масштаб таймера трека 2)регулятора громкости- в начале скрипта в обоих случаях строчка
Код: Выделить всё
var _scale = 1;
остутствуют. Меняю скрипт согласно приведёнными вами примерами,пишу первым
Код: Выделить всё
var _scale = 1;
нижняя пустая ...сохраняю..изменений нет. Все остальные сделал без проблем.
marillion13
Аватара
Репутация: 17
С нами: 9 лет 9 месяцев

Сообщение #1200 LUR » 07.08.2018, 17:57

marillion13, ничего не понял. Я к каждому пункту приложил скрипт, которым следует заменить существующий. А далее _scale в каждом из скриптов увеличиваете под ваши нужды. Единица это масштаб по умолчанию, т.е. ничего не увеличивается. Ставите _scale = 1.5 , будет в полтора раза больше и т.д.

Добавлено спустя 1 минуту:
Надо весь скрипт заменить, если что, а не одну строчку добавить)
LUR M
Автор темы, Модератор
Аватара
Откуда: Минск
Репутация: 390
С нами: 12 лет

Пред.След.

Вернуться в Релизы сборок