Модификация темы DarkOne v4

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

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

Сообщение #1 AHAPXICT » 04.10.2014, 02:44

Модификация DarkOne v4 оригинального автора tedGo включает в себя: DarkOne v4, DarkOne v3.1, CompactOne v1.0.1.
Концепция данной модификации, это использование различных визуализаций для создания соответствующей атмосферы при прослушивании музыки.
Важно: Для корректной работы DarkOne v4 требуется разрешение экрана монитора 1280*х и выше!
Проверьте наличие установленного DirectX 9 на вашем компьютере, необходим для работы foo_vis_shpeck

Скачать DirectX 9 можно здесь: microsoft.com
Для тех у кого возникают проблемы с плагином foo_prettypop код ошибки: Failed to load DLL: foo_prettypop.dll. Есть два варианта решения проблемы: 1. Удалить плагин. 2. Установить расширенный пакет NET Framework 3.5 включающий в себя пакеты 2.0 и 3.0 необходимые для работы foo_prettypop. Скачать: Microsoft .NET Framework 3.5 Скачать foo_prettypop с web.archive.org: Pretty Popup 1.2.5
Изображение
DarkOne v3.1 Поддерживает разрешение экрана 1024х768
Изображение
CompactOne v1.0
Изображение
Переключение VU meter осуществляется путём нажатия кнопок мыши на панели:
Нажатие левой кнопки при нажатой правой - предыдущий индикатор в группе.
Нажатие правой кнопки при нажатой левой - следующий индикатор в группе.

Код: Выделить всё
Дата сборки: 29.06.2020
Оригинальный автор: tedGo
Модифицировал: AHAPXICT
Версия сборки: 1.38 & 1.5.5
Версия плеера: Foobar2000 v1.3.20 & v1.5.5.0
История версий:
1.38 & 1.5.5
1. EL Playlist - fix http://, https:// stream

1.38 & 1.5.2
1. Основные изменения только в версии DarkOne_4_JS_v1.5.2. Обновлена версия плеера v1.5.2.0 и компонент foo_ui_columns-1.4.0. На панелях управления добавлены новые функции для кнопок, режим быстрого переключения предустановок DSP и выбора звукового устройства.

v1.37 & 1.4.8.2
1. Для Display Panel в DarkOne v.4 добавлено последовательное переключение Playback Order путём нажатия ЛКМ на пиктограмму.
2. Изменил концепцию масштабирования часов. Теперь часы общие для лайаутов 1280х  1366х с привязкой даты к левому краю, дня и месяца соответственно к правому краю. Версия Digital Clock FULL HD (Unfinished) тоже переделана, но так и осталась незаконченной (Unfinished)
3. Исправлена ошибка плавного фейдера громкости (скрипт позаимствован у kgena_ua). Теперь при нажатии СКМ на часах а потом на ручке громкости это не приводит к ошибке панели, а громкость восстанавливается до 0ДБ.
4. Новая версия Scroll Text теперь управляется СКМ и колесом мыши, а так же добавлен режим слева направо.
5. Специально для VU meter slim by kutuzof в DarkOne v.4 добавлен ещё один слот в дисплей панели.
6. В версии DarkOne v.3.1 в Menubar Panel так же добавлена возможность последовательного переключения Playback Order. Переключение между режимами СКМ на пиктограмме. По умолчанию установлен выбор, как раньше, через контекстное меню.
7. Переделан лайаут CompactOne.
8. Другие изменения и исправления.
9. Главное в конце)) Эта версия имеет частичную совместимость с пред идущими версиями, но возможен перенос файлов конфигурации(.fcl) из старых версий и наоборот.

v1.36 & 1.4.8.1
1. Заменён скрипт БИО на новый "Biography, albums, title, similar artist info www.last.fm 07112019" by kgena_ua
2. Добавлен VU Meter на дисплей панель. Рамка (border) кликабельная с переключением трёх видов отображения.
Список установленных плагинов:
foo_ac3
foo_adpcm
foo_cuefilter
foo_discogs
foo_dynamic_range
foo_hdcd
foo_http_sjis_patch2
foo_input_dts
foo_input_dvda
foo_input_monkey
foo_input_sacd
foo_logitech_lcd
foo_midi
foo_out_asio
foo_playcount
foo_prettypop
foo_quicksearch
foo_stop_after_queue
foo_ui_columns
foo_ui_hacks
foo_uie_albumlist
foo_uie_biography
foo_uie_elplaylist
foo_uie_esplaylist
foo_uie_explorer
foo_uie_lyrics3
foo_uie_panel_splitter
foo_uie_vis_channel_spectrum
foo_uie_vis_peakmeter_spectrum
foo_uie_wsh_panel_mod
foo_vis_shpeck
foo_vis_vumeter
foo_vst
foo_wave_seekbar
Важно! Дополнительные инструкции, а так же дополнительные сведения находятся в папке foobar2000 в файле Readme.txt
Установка:
1.Разархивировать архив в любое удобное для вас место на вашем компьютере.

Например: C:\Program Files; D:\; F:\; Съёмный диск(флешка) и Т.Д.

2.Запускается плейер с файла foobar2000.exe находящегося в папке: foobar2000\foobar2000.exe

Если вы хотите отправить ярлык на рабочий стол, на файле foobar2000.exe сделайте щелчок правой кнопкой мыши

и выберите в появившемся контекстном меню: Отправить\Рабочий стол(создать ярлык)

3.При первом запуске плейер предложит выбрать звуковое устройство: Выберите ваше звуковое устройство.

Настройка аудио параметров находится: Menu\File\Preferences\Playback\Output в пункте меню Device

выберите устройство вывода DirectSound, WASAPI или ASIO.

4.Добавление ваших медиа файлов в музыкальную библиотеку(Media Library) осуществляется через пункт меню:

Menu\Library\Configure или Menu\File\Preferences\Media Library -> кнопка меню Add... укажите расположение ваших медиа файлов.

Например: C:\Documents and Settings\Пользователь\Мои документы\Моя музыка; D:\Моя музыка\Rock и Т.Д.

Примичание: При первом запуске меню можно активировать кнопкой с передней панели - Album List

5.Плейер полностью готов к работе ;). Создавайте свои плейлисты и наслаждайтесь любимой музыкой!!!

Функции кнопок передней панели:

С функциями(левая панель):
Menu\view\Album List - Музыкальная библиотека
Menu\view\Layout - Переключение обложек. В Compact One смена обложек происходит через пункт меню: Menu\view\Layout
Menu\view\Playlist Manager - Менеджер плейлистов
Menu\view\DSP - открывает первые четыре плагина в списке DSP Manager

С функциями(правая панель) для воспроизводимого на данный момент файла(Now Playing):

Menu\Now Playing\Open containing folder - Открыть папку с файлом
Menu\Now Playing\File Operation\Copy to\... - копировать файл( Возможно копирование "стрим" потоков. Подходит не для всех)
Menu\Now Playing\Properties - Свойства
Menu\Now Playing\File Operation\Delete file - Удалить файл
Menu\Now Playing\Convert\... - Конвертировать
Menu\Now Playing\Tagging\Discogs\Write Tags... - Поиск тегов
Menu\Now Playing\Dynamic Range Meter - Измеритель динамического диапазона (Не работает для радио и "стрим" потоков)
Menu\Playback/Seek/Back by 30 seconds - Перемотка на 30 секунд назад (В скрипте можно поставить нужное время для перемотки)
Menu\Playback/Seek/Ahead by 30 seconds - Перемотка на 30 секунд вперёд
VolumeMute ON\OFF - Управление громкостью - режим отключить звук ВКЛ\ВЫКЛ

С функциями(верхняя панель) для плагина foo_ui_hacks, смотреть пункт 36. foo_ui_hacks by DRON:

View/Fullscreen - выполняет функцию включения полноэкранного режима вкл\выкл

View/Show or Hide caption - выполняет функцию: Показать или скрыть заголовок.

Важно!!!

При скрытом заголовке плеер перетаскивается за ту же кнопку, только за пиктограмму!

Отображение заголовка производится путём нажания на эту же кнопку в любом свободном месте от пиктограммы!

При двойном клике ПКМ на пиктограмме кнопки при скрытом заголовке - открывается полноэкранный режим, но с панелью меню пуск!
Код: Выделить всё
Примечания: 1. При использовании штатного эквалайзера, вызов его на экран кнопкой DSP на панели, вызовет "крэш" плеера. Что обусловлено особенностью эквалайзера или плагина foo_vst.
2. В VIS панели используются три аналоговых VU Meter для мониторов с высоким разрешением, сделанные из исходников macarych, имеющие индекс HD в названиях, находятся в папке USER VU Meter плагина foo_vis_vumeter. При возрастании нагрузки на процессор(для слабых ПК) их можно заменить на такие же из корневой папки плагина foo_vis_vumeter но без индекса в названии.
3. В активных DSP установлен штатный лимиттер, так как некоторые интернет радиостанции, из плей листа, имеют выходной уровень сигнала выше 0 ДБ.

Скачать с Google Диск:
DarkOne_4_v1.38 Версия плеера 1.3.20, версия WSH Panel Mod (Панель WSH) 1.5.10 (foo_uie_wsh_panel_mod.dll), Columns UI 0.5.1 (foo_ui_columns.dll). Системные требования WIN XP и выше.
DarkOne_4_JS_v1.5.5 Версия плеера 1.5.5.0, версия JScript Panel v2.3.6.1 by marc2003 - kbuffington (foo_jscript_panel.dll), Columns UI 1.4.1 (foo_ui_columns.dll). Системные требования WIN 7 и выше.

Старые версии
Скачать с Google Диск:
DarkOne_4_JS_v1.5.4
DarkOne_4_v1.37
DarkOne_4_JS_v1.4.8.2
DarkOne_4_JS_v1.4.8.1
DarkOne_4_JS_v1.4.8 Версия плеера 1.4.8
DarkOne_4_JS_v1.4.6 Версия плеера 1.4.6
DarkOne_4_JS_v1.4.3 Версия плеера v1.4.3, версия JS v2.2.1, Columns UI 1.0.0
DarkOne_4_JS_v1.4.2 Версия плеера v1.4.2, версия JS v2.2.0, Columns UI 1.0.0
DarkOne_4_JS_v1.4 Версия плеера v1.4, версия JS v2.1.7.2
DarkOne_4_JS_v1.34 Собрана на foo_jscript_panel (JS) v1.24
DarkOne_4_v1.36
DarkOne_4_v1.35
DarkOne_4_v1.34
DarkOne_4_v1.33
DarkOne_4_v1.33 Waveform Minibar (mod) Trash

Radio Logos
multi _logos.jpg

Установка:
Для отображения логотипов интернет станций в плей листах достаточно поместить папку Radio Logos с логотипами в папку с плеером.
Путь: foobar2000/Radio Logos

1. DarkOne Cover Panel by tedGo
Данную функцию можно активировать из контекстного меню по щелчку ПКМ(правая кнопка мыши) на панели(Cover Panel). Пункт меню: "Radio Logos: ON/OFF". Выбор в контекстном меню доступен в режиме "Стоп" или при воспроизведении интернет радио. В папке foobar2000 автоматически создаст папку Radio Logos, если она ещё не создана. В папку можно добавлять картинки с логотипами для интернет станций. Названия картинок должны соответствовать названиям станций, служебные символы виндовс не используются. Для упрощения операции переименования своих картинок в пункт контекстного меню добавлена функция Copy filename to clipboard. Функция становится доступной в режиме воспроизведения и если включено отображение логотипов Radio Logos: ON. Функция копирует название интернет станции в буфер обмена сразу заменяя запрещённые символы допустимыми, в результате получается готовое название для переименования файла (картинки). Рекомендуется переименовывать картинки из меню свойства ПКМ по картинке. Других действий не требуется.

2. CoverFlow View by Br3tt
Функцию можно активировать из всплывающей панели инструментов Toolbar в верхней части панели, пункт контекстного меню: Radio Logos

Для удобства обложки разделены по плейлистам, а также в архивах присутствуют сами плейлисты в формате .fpl:

Скачать с Google Диск:
Radio Logos
Radio Logos by kutuzof More logos, more stations!
Новые изображения для DarkOne и VU Meter by kutuzof. Рекомендую!
Alternative images & VU Meters for DarkOne by kutuzof
Изображение
Скачать с Google Диск: Image for DarkOne
Add-ons DarkOne v4.0 by kutuzof
Описание будет добавляться!
Изображение
Изображение
Изображение
Скачать с Google Диск:
DarkOne v4.0 (JS).rar Системные требования WIN 7 и выше.
DarkOne v4.0 (WSH).rar Системные требования WIN XP и выше.
Последний раз редактировалось AHAPXICT 29.06.2020, 23:31, всего редактировалось 128 раз(а).
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 226
С нами: 6 лет 8 месяцев


Сообщение #541 AHAPXICT » 09.07.2018, 23:51

dimon212909, видел и читал ваши пред идущие сообщения. Рекомендую сбавить обороты и постепенно заниматься настройкой (не буду расписывать подробно эту тему, надеюсь вы меня поняли)
Я уже начал заниматься переделкой своей модификации под новую версию плеера и JS панели, но закинул на неопределённое время и пока не возвращался.
По вашему вопросу:
Код: Выделить всё
// ==PREPROCESSOR==
// @name "DarkOne Display Panel"
// @version "4.0 build20130603"
// @author "super-gau and tedGo, includes partial codes by fbuser, Br3tt and T.P Wang"
// @import "%fb2k_path%themes\DarkOne_v4.0\Others\WSH Scripts\DO 4.0 Global Script.js"
// ==/PREPROCESSOR==

// ----- VARIABLES -----
var g_timer = v_timer = g_alpha = s_alpha = p_alpha = null;
var g_interval, fileinfo, g_trackinfo;
var v_change = g_active = false;

var t_rem = window.GetProperty("Remain Time on", false);

// ----- COLOURS -----
var d_arr = new Array("Default", "Blue", "Green", "Red", "White", "Yellow");
var c_arr = new Array(RGB(191, 228, 255), RGB(128, 192, 255), RGB(0, 255, 0), RGB(255, 0, 0), RGB(255, 255, 255), RGB(255, 255, 0));

function InitColours() {
   d_col = window.GetProperty("Display Colour", 0);
   g_dcol = d_arr[d_col];
   g_acol = c_arr[d_col];
   g_fact = g_acol == -65536 ? 0.09 : 0.03;
   g_bcol = combColours(ui_backcol, g_acol, g_fact);
}

InitColours();

// ----- CREATE HELPERS -----
String.prototype.repeat = function(n) {
   return (new Array(n + 1)).join(this);
}

function pad(x, y, z) {
   z || (z = ' ');
   return x.length < y ? x + z.repeat(y - x.length) : x;
}

function pad_right(x, y, z) {
   z || (z = ' ');
   return x.length < y ? z.repeat(y - x.length) + x : x
}

function TimeFmt(t) {
   var zpad = function(n) {
      var str = n.toString();
      return str.length < 2 ? "0" + str : str;
   }

   var h = Math.floor(t / 3600);
   t -= h * 3600;
   var m = Math.floor(t / 60);
   t -= m * 60;
   var s = Math.floor(t);

   return zpad(h) + ":" + zpad(m) + ":" + zpad(s);
}

function drawSquares(gr, squareSize, paddingSize, x, y, w, h) {
   var stepSize = squareSize + paddingSize;
   var totalsq = Math.ceil(w / stepSize);
   var totalrow = Math.ceil(h / stepSize);

   for(var j = 0; j < totalrow; j++) {
      for(var i = 0; i < totalsq; i++) {
         gr.FillSolidRect(i * stepSize + x, j * stepSize + y, squareSize, squareSize, g_bcol);
      }
   }
}

// ----- CREATE INFO -----
Info.prototype.setColours = function() {
   var metadb = fb.GetNowPlaying();

   if (metadb) {
      fileinfo = metadb.GetFileInfo();
      this.Colours[0] = fb.TitleFormat("[$info(encoding)]").Eval() == "lossless" ? g_acol : g_bcol;
      this.Colours[1] = fb.TitleFormat("[$info(encoding)]").Eval() == "lossless" ? g_bcol : g_acol;
        this.Colours[2] = fb.TitleFormat("[$info(md5)]").Eval() ? g_acol : g_bcol;
        this.Colours[3] = fb.TitleFormat("[%replaygain_track_gain%]").Eval() ? g_acol : g_bcol;
      this.Colours[4] = fb.TitleFormat("[%tracknumber%]").Eval() ? ui_btntxtcol : g_bcol;
      this.Colours[5] = fb.TitleFormat("[%totaltracks%]").Eval() ? ui_btntxtcol : g_bcol;
      this.Colours[6] = ui_btntxtcol;
   } else for (var i = 0; i < this.Colours.length; i++) this.Colours[i] = g_bcol;
}

Info.prototype.setTrackNo = function() {
   var metadb = fb.GetNowPlaying();
   var a, b, c, d;

   if (metadb) {
      a = fb.TitleFormat("[$num(%tracknumber%,2)]").Eval();
      b = fb.TitleFormat("[$num(%totaltracks%,2)]").Eval();
      c = pad(a, 3);
      d = pad(b, 3);
      this.TrackNo = c;
      this.TotalNo = d;
      g_trackinfo = !g_active ? 2 : metadb.RawPath.indexOf("FOO_LASTFM") == 0 ? 1 : 0;
   } else {
      this.TrackNo = "";
      this.TotalNo = "";
   }
}

Info.prototype.setPBTime = function() {
   this.Elapse = TimeFmt(fb.PlaybackTime);
   this.Remain = g_active ? TimeFmt(fb.PlaybackLength - fb.PlaybackTime) : "";
}

Info.prototype.setBitrate = function() {
   this.Bitrate = pad_right(fb.TitleFormat("$num(%bitrate%,0)").Eval(), 4);
}

Info.prototype.setInfo = function() {
   this.setColours();
   this.setTrackNo();
   this.setPBTime();
   this.setBitrate();
}

function Info() {
   this.Colours = new Array(7);
   this.setInfo();
}

info = new Info();

// ----- BASE IMAGE OBJECT -----
function BaseImage() {
   this.image = null;
   this.curVal  = "";

   this.reset = function() {
      this.curVal  = "";
   }

   this.dispose = function() {
      this.image && this.image.Dispose();
   }

   this.isDrawDigit = function(digitValue, index) {
      return (this.curVal == null || this.curVal == "" || digitValue != this.curVal.charAt(index));
   }
}

// ----- CREATE TRACKNUMBER IMAGE -----
function NumImage() {
   this.image = gdi.CreateImage(54, 20);

   this.init = function(curNo) {
      gr = this.image.GetGraphics();

      this.drawDigit(curNo, 0);
      this.drawDigit(curNo, 1);
      this.drawDigit(curNo, 2);

      this.curVal = curNo;

      this.image.ReleaseGraphics(gr);
   }

   this.draw = function(curNo) {
      this.init(curNo);
   }

   this.drawDigit = function(curNo, index) {
      var digitValue = curNo.charAt(index);

      if (this.isDrawDigit(digitValue, index)) {
         var xoffset = index * 18;
         gr.FillSolidRect(xoffset, 0, 18, 20, ui_backcol);
         drawSquares(gr, 2, 1, xoffset, 0, 18, 20);
         g_signs && gr.DrawImage(g_signs, xoffset, 0, 18, 20, digitValue == " " ? 216 : digitValue * 18, d_col * 22, 18, 20);
      }
   }
}

NumImage.prototype = new BaseImage();
var g_trackNoImage = new NumImage();
var g_totalNoImage = new NumImage();

// ----- CREATE TIME IMAGE -----
function TimeImage() {
   this.image = gdi.CreateImage(120, 20);

   this.init = function(time) {
      gr = this.image.GetGraphics();

      this.drawDigit(time, 0, 0);
      this.drawDigit(time, 1, 0);

      g_signs && gr.DrawImage(g_signs, 36, 0, 6, 20, 234, d_col * 22, 6, 20);

      this.drawDigit(time, 3, -12);
      this.drawDigit(time, 4, -12);

      g_signs && gr.DrawImage(g_signs, 78, 0, 6, 20, 234, d_col * 22, 6, 20);

      this.drawDigit(time, 6, -24);
      this.drawDigit(time, 7, -24);

      this.curVal = time;

      this.image.ReleaseGraphics(gr);
   }

   this.draw = function(time) {
      if (this.curVal == "") this.init(time);
      else {
         gr = this.image.GetGraphics();

         this.drawDigit(time, 0, 0);
         this.drawDigit(time, 1, 0);

         this.drawDigit(time, 3, -12);
         this.drawDigit(time, 4, -12);

         this.drawDigit(time, 6, -24);
         this.drawDigit(time, 7, -24);

         this.curVal = time;

         this.image.ReleaseGraphics(gr);
      }
   }

   this.drawDigit = function(time, index, offset) {
      var digitValue = time.charAt(index);

      if (this.isDrawDigit(digitValue, index)) {
         var xoffset = index * 18 + offset;
         gr.FillSolidRect(xoffset, 0, 18, 20, ui_backcol);
         drawSquares(gr, 2, 1, xoffset, 0, 18, 20);
         g_signs && gr.DrawImage(g_signs, xoffset, 0, 18, 20, isNaN(digitValue) ? 0 : digitValue * 18, d_col * 22, 18, 20);
      }
   }
}

TimeImage.prototype = new BaseImage();
var g_timeImage = new TimeImage();

// ----- CREATE BITRATE IMAGE -----
function BitrateImage() {
   this.image = gdi.CreateImage(72, 20);

   this.init = function(bitrate) {
      gr = this.image.GetGraphics();

      this.drawDigit(bitrate, 0);
      this.drawDigit(bitrate, 1);
      this.drawDigit(bitrate, 2);
      this.drawDigit(bitrate, 3);

      this.curVal = bitrate;

      this.image.ReleaseGraphics(gr);
   }

   this.draw = function(bitrate) {
      this.init(bitrate);
   }

   this.drawDigit = function(bitrate, index) {
      var digitValue = bitrate.charAt(index);

      if (this.isDrawDigit(digitValue, index)) {
         var xoffset = index * 18;
         gr.FillSolidRect(xoffset, 0, 18, 20, ui_backcol);
         drawSquares(gr, 2, 1, xoffset, 0, 18, 20);
         g_signs && gr.DrawImage(g_signs, xoffset, 0, 18, 20, digitValue == " " ? 216 : digitValue * 18, d_col * 22, 18, 20);
      }
   }
}

BitrateImage.prototype = new BaseImage();
var g_bitrateImage = new BitrateImage();

// ----- CREATE VOLUME IMAGE -----
function VolumeImage() {
   this.image = gdi.CreateImage(168, 20);

   this.init = function(volume) {
      gr = this.image.GetGraphics();

      this.drawDigit(volume, 0, 0);
      this.drawDigit(volume, 1, 0);
      this.drawDigit(volume, 2, 0);
      this.drawDigit(volume, 3, 0);

      g_signs && gr.DrawImage(g_signs, 72, 0, 6, 20, 240, d_col * 22, 6, 20);

      this.drawDigit(volume, 5, -12);
      this.drawDigit(volume, 6, -12);

      g_signs && gr.DrawImage(g_signs, 114, 0, 18, 20, 216, d_col * 22, 18, 20);
      g_signs && gr.DrawImage(g_signs, 132, 0, 36, 20, 264, d_col * 22, 36, 20);

      this.curVal = volume;

      this.image.ReleaseGraphics(gr);
   }

   this.draw = function(volume) {
      if (this.curVal == "") this.init(volume);
      else {
         gr = this.image.GetGraphics();

         this.drawDigit(volume, 0, 0);
         this.drawDigit(volume, 1, 0);
         this.drawDigit(volume, 2, 0);
         this.drawDigit(volume, 3, 0);

         this.drawDigit(volume, 5, -12);
         this.drawDigit(volume, 6, -12);

         this.curVal = volume;

         this.image.ReleaseGraphics(gr);
      }
   }

   this.drawDigit = function(volume, index, offset) {
      var digitValue = volume.charAt(index);

      if (this.isDrawDigit(digitValue, index)) {
         var xoffset = index * 18 + offset;
         gr.FillSolidRect(xoffset, 0, 18, 20, ui_backcol);
         drawSquares(gr, 2, 1, xoffset, 0, 18, 20);
         g_signs && gr.DrawImage(g_signs, xoffset, 0, 18, 20, digitValue == " " ? 216 : digitValue == "-" ? 246 : digitValue * 18, d_col * 22, 18, 20);
      }
   }
}

VolumeImage.prototype = new BaseImage();
var g_volumeImage = new VolumeImage();

// ----- CREATE MENU -----
function CustomMenu(x, y) {
   var a = window.CreatePopupMenu();
   var idx;

   for (var i = 0; i < d_arr.length; i++) {
      a.AppendMenuItem(0, 1 + i, d_arr[i]);
   }
   a.CheckMenuRadioItem(1, 6, d_col + 1);

   a.AppendMenuSeparator();
   a.AppendMenuItem(0, 7, "Properties");
   a.AppendMenuItem(0, 8, "Configure...");

   idx = a.TrackPopupMenu(x, y);

   switch (true) {
      case (idx >= 1 && idx <= 6):
         window.SetProperty("Display Colour", idx - 1);
         InitColours();
         info.setColours();
         g_trackNoImage.reset();
         g_totalNoImage.reset();
         g_timeImage.reset();
         g_bitrateImage.reset();
         g_volumeImage.reset();
         window.Repaint();
         break;

      case (idx == 7):
         window.ShowProperties();
         break;

      case (idx == 8):
         window.ShowConfigure();
         break;
   }

   a.Dispose();
}

// ----- DRAW -----
function on_paint(gr) {
   !window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, ui_backcol);
   drawSquares(gr, 2, 1, 0, 30, ww - 26, 20);

   gr.DrawRect(1, 0, ww * 17 / 70, 10, 1, info.Colours[0]);
   gr.DrawRect(ww * 71 / 280, 0, ww * 17 / 70, 10, 1, info.Colours[1]);
   gr.DrawRect(ww * 141 / 280, 0, ww * 17 / 70, 10, 1, info.Colours[2]);
   gr.DrawRect(ww * 211 / 280, 0, ww * 17 / 70, 10, 1, info.Colours[3]);

   gr.GdiDrawText("LOSSLESS", btn_font, info.Colours[0], ww / 8 - 33, 0, 70, 10, 37);
   gr.GdiDrawText("LOSSY", btn_font, info.Colours[1], ww / 8 * 3 - 34, 0, 70, 10, 37);
   gr.GdiDrawText("AUDIO MD5", btn_font, info.Colours[2], ww / 8 * 5 - 34, 0, 70, 10, 37);
   gr.GdiDrawText("REPLAYGAIN", btn_font, info.Colours[3], ww - ww / 8 - 33, 0, 70, 10, 37);

   gr.GdiDrawText("TRACK", btn_font, info.Colours[4], 0, 18, 27, 10, 37);
   gr.GdiDrawText("TOTAL", btn_font, info.Colours[5], 60, 18, 27, 10, 37);
   gr.GdiDrawText("ELAPSED", btn_font, v_change || t_rem ? g_bcol : info.Colours[6], ww / 2 - 38, 18, 35, 10, 38);
   gr.GdiDrawText("TIME", btn_font, v_change ? g_bcol : info.Colours[6], ww / 2 + 5, 18, 20, 10, 38);
   gr.GdiDrawText("REMAINING", btn_font, v_change || !t_rem ? g_bcol : info.Colours[6], ww / 2 + 33, 18, 46, 10, 38);
   gr.GdiDrawText("VOLUME", btn_font, v_change ? ui_btntxtcol : g_bcol, ww - 88, 18, 34, 10, 37);
   gr.GdiDrawText("KBPS", btn_font, v_change ? g_bcol : info.Colours[6], ww - 46, 18, 20, 10, 37);

   if (fb.IsPlaying) {
      if (g_trackinfo == 0) {
         g_trackNoImage.draw(info.TrackNo);
         gr.DrawImage(g_trackNoImage.image, 0, 30, 54, 20, 0, 0, 54, 20);

         g_totalNoImage.draw(info.TotalNo);
         gr.DrawImage(g_totalNoImage.image, 60, 30, 54, 20, 0, 0, 54, 20);
      } else {
         var noTrack = g_trackinfo == 1 ? 534 : 420;
         g_signs && gr.DrawImage(g_signs, 0, 30, 114, 20, noTrack, d_col * 22, 114, 20);
      }

      g_signs && gr.DrawImage(g_signs, ww / 2 - 63, 30, 18, 20, fb.IsPaused ? 197 : 179, d_col * 22, 18, 20);
   }

   if (v_change) {
      var vol = fb.Volume.toFixed(2) + " db";
      g_volumeImage.draw(pad_right(vol, 10));
      gr.DrawImage(g_volumeImage.image, ww - 191, 30, 165, 20, 0, 0, 165, 20);
   } else {
      if (fb.IsPlaying) {
         var t_play = t_rem && !g_active ? false : true;
         var t_fmt = t_rem ? info.Remain : info.Elapse;
         t_play && g_timeImage.draw(t_fmt);
         t_play && gr.DrawImage(g_timeImage.image, ww / 2 - 38, 30, 120, 20, 0, 0, 120, 20);
         !t_play && g_signs && gr.DrawImage(g_signs, ww / 2 - 38, 30, 120, 20, 300, d_col * 22, 120, 20);

         g_bitrateImage.draw(info.Bitrate);
         gr.DrawImage(g_bitrateImage.image, ww - 94, 30, 69, 20, 0, 0, 69, 20);
      }
   }

   g_alpha = g_fact == 0.09 ? 20 : 7;
   s_alpha = fb.StopAfterCurrent ? 255 : g_alpha;
   g_signs && gr.DrawImage(g_signs, ww - 18, 21, 18, 12, 648, d_col * 22, 18, 12, 0, s_alpha);

   p_alpha = fb.IsPlaying ? 255 : g_alpha;
   g_signs && gr.DrawImage(g_signs, ww - 18, 38, 18, 12, 668 + plman.PlaybackOrder * 20, d_col * 22, 18, 12, 0, p_alpha);

   !window.IsTransparent && gr.FillGradRect(0, -25, ww, 75, 90, RGBA(63, 100, 127, 128), 0);
}

// ----- MOUSE ACTIONS -----
function on_mouse_rbtn_up(x, y) {
   CustomMenu(x, y);
   return true;
}

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

function on_volume_change(val) {
   if (v_timer) {
      window.ClearTimeout(v_timer);
      v_timer = null;
   }

   v_timer = window.SetTimeout(
      function () {
         window.RepaintRect(ww / 2 - 38, 18, ww - (ww / 2 - 12), 32);
         window.ClearTimeout(v_timer);
         v_timer = null;
         v_change = false;
      }, 3000);

   v_change = true;
   window.RepaintRect(ww / 2 - 38, 18, ww - (ww / 2 - 12), 32);
}

function on_playback_order_changed(new_order) {
   window.RepaintRect(ww - 18, 38, 18, 12);
}

function on_playback_time(time) {
   info.setPBTime();
   window.RepaintRect(ww / 2 - 38, 30, 120, 20);
}

function on_playback_dynamic_info() {
   info.setBitrate()
   window.RepaintRect(ww - 94, 30, 69, 20);
}

function on_playback_edited() {
   info.setInfo();
   window.Repaint();
}

function on_playback_new_track(metadb) {
   if (metadb) g_active = fb.PlaybackLength <= 0 ? false : true;
   info.setInfo();
   window.Repaint();
}

function on_playback_pause(state) {
   window.RepaintRect(ww / 2 - 62, 30, 18, 20);
}

function on_playback_stop(reason) {
   if (fileinfo) fileinfo.Dispose();

   if (reason != 2) {
      g_active = false;
      info.setInfo();
      fb.RunMainMenuCommand("ELPlaylist/Redraw");
   }

   window.Repaint();
}

function on_playlist_stop_after_current_changed(state) {
   window.RepaintRect(ww - 18, 21, 18, 12);
}

function on_notify_data(name, info) {
   if (name == "remTime") {
      window.SetProperty("Remain Time on", info == true ? true : false);
      t_rem = window.GetProperty("Remain Time on");
      window.RepaintRect(ww / 2 - 38, 18, 120, 38);
   }
}

function on_script_unload() {
   g_trackNoImage && g_trackNoImage.dispose();
   g_totalNoImage && g_totalNoImage.dispose();
   g_timeImage && g_timeImage.dispose();
   g_bitrateImage && g_bitrateImage.dispose();
   g_volumeImage && g_volumeImage.dispose();
   g_signs && g_signs.Dispose();
}
Или скачать:
DO 4.0 Display Panel (foo_jscript_panel-v2.1.5.2).txt
(14.79 КБ) Скачиваний: 553

P.S. Прошу больше не задавать вопросов как исправить скрипты в других панелях. С уважением AHAPXICT.
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 226
С нами: 6 лет 8 месяцев

Сообщение #542 dimon212909 » 10.07.2018, 00:08

AHAPXICT, При много благодарен!
С уважением
dimon212909
Новичок
Репутация: 0
С нами: 2 года

Сообщение #543 Lev » 11.07.2018, 16:05

Наконец-то нашел сборку мечты )
Сколько труда вложено, жесть.
Самое главное, что из коробки все работает.
Пару дней не много под себя подгонял по мелочи и все.
Спасибо большое за сборку!


И дочитал всю тему форума )
Lev M
Новичок
Аватара
Возраст: 43
Репутация: 3
С нами: 1 год 11 месяцев

Волна

Сообщение #544 thespaceweare » 17.07.2018, 15:15

Подскажите пожалуйста как сделать, чтобы seekbar был волной. а то предыдущая сборка у меня была волна трек был виден целиком по пикам. а здесь пустое место ползет ползунок и все. спасибо
thespaceweare
Новичок
Репутация: 0
С нами: 1 год 11 месяцев

Сообщение #545 Lev » 17.07.2018, 16:56

Если я правильно понял, то вот тут http://take.ms/Xt9Mr есть кнопочка. Появляется при наведении.
Lev M
Новичок
Аватара
Возраст: 43
Репутация: 3
С нами: 1 год 11 месяцев

Сообщение #546 thespaceweare » 17.07.2018, 21:36

Благодарю. Как просто то ))) Но мне кажется лучше чтоб эти кнопочки светились перманентно. они едва заметно не напрягают
thespaceweare
Новичок
Репутация: 0
С нами: 1 год 11 месяцев

Сообщение #547 AHAPXICT » 17.07.2018, 22:03

Lev, спасибо что ответили, ну и плюс за то что прочитали тему - правильный подход.
thespaceweare, в модификации есть много скрытых "плюшек" про которые я уже и сам зам забыл. Например, по вашему замечанию, в скрипте специально оставил значения для регулировки отображения этих кнопок, альфа канал установлен на 0.
ПКМ на кнопке --> Splitter Settings... --> Script --> в самый низ // ----- BUTTONS ----- // найдёте строки:

..... REFRESH,fontcolor:19-30-38 brushcolor:37-57-73-0 pencolor:37-57-73-0,fontcolor:10-20-30 brushcolor:63-100-127-100 pencolor:37-57-73-0)

Пример: 37-57-73-0 = RGBA(Red, Green, Blue, Alpha channel)
P.S. Установил сборку - настраивай под себя! Точка.
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 226
С нами: 6 лет 8 месяцев

Сообщение #548 MC Web » 17.07.2018, 22:57

AHAPXICT, привет!
Я полностью отказался от foo_wave_seekbar и перешел на foo_wave_minibar_mod. Отображает правда только один канал, но главные для меня плюсы, может отображать:
- не только воспроизводимый, но и выбранный трек
- при воспроизведении Онлайн-плейлистов
- при воспроизведении AAC файлов (даже ползунок foobar2000 не показывает).
MC Web
Гуру
Аватара
Репутация: 212
С нами: 6 лет 10 месяцев

Сообщение #549 AHAPXICT » 20.07.2018, 09:49

MC Web, приветствую. Да как-то руки не доходят проверить этот компонент. Эту тему на "гидрогене", понятное дело, читал, по моему Zao сначала сделал компонент без поддержки ХР, а потом Case сделал мод. У них ещё тёрки были по этому поводу. В общем, как соберусь, по тестирую конечно.
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 226
С нами: 6 лет 8 месяцев

Сообщение #550 romarioxxx » 30.09.2018, 02:04

Уважаемый AHAPXICT, всех Вам благ! Подскажите пожалуйста как увеличить размер шрифта кнопок в DarkOne v4?
romarioxxx
Новичок
Репутация: 0
С нами: 3 года 1 месяц

Сообщение #551 AHAPXICT » 30.09.2018, 10:19

romarioxxx, спасибо, вам тоже. Напишите более подробно. Я то знаю где всё настраивается, но не везде это целесообразно(конструктивно). Напишите где конкретно нужно увеличить шрифт или пришлите скриншот.
P.S. Наконец-то заставил себя и обновил модификацию. В старых версиях под спойлером есть последняя версия плеера на последней JS панели для теста.
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 226
С нами: 6 лет 8 месяцев

Сообщение #552 egiko » 03.10.2018, 12:06

AHAPXICT,
Благодарю за сборку. Много интересного увидел в скриптах PSS и не только.

Подскажите пожалуйста, каким способом вы сделали иконку DarkOne48x48.ico?
Я перепробовал множество способов: различные сайты, несколько программ, плагин для фотошопа, но всё равно они делают криво. "Криво" это заметно в микшере громкости, когда иконка перекрывает другие элементы, включая текст. Даже при размерах 48х48. У вас в этом отношении отлично.

И второй вопрос не связан со сборкой, по крайней мере я не увидел в ней этого. Писал в ветке PSS, но там молчат, может вы ответите :smile:
Как управлять переключением панелей из корневой pss?
На основной pss расположена другая pss, на которой есть несколько плейлистов. Кнопки расположены на корневой панели.
Спойлер
-PSS //коренной, на котором кнопки
--PSS //управлять переключением плейлистов в этом pss. Panel_main в примере ниже.
---Playlist 1
---Playlist 2

Встретил такой вариант:
В коренной pss:
Код: Выделить всё
$textbutton(0,0,12,20,p,P,
    SETGLOBAL:Show_P:1;
    SETGLOBAL:Show_P2:0;
    SETGLOBAL:NeedRefresh_RP:1;
    REFRESH
,,)

$textbutton(13,0,12,20,p2,P2,
    SETGLOBAL:Show_P:0;
    SETGLOBAL:Show_P2:1;
    SETGLOBAL:NeedRefresh_RP:1;
    REFRESH
,,)

$ifequal($get_ps_global(NeedRefresh_RP),1,
   $movepanel_c(Panel_main,0,0,%ps_width%,$add(%ps_height%,1))
   $movepanel_c(Panel_main,0,0,%ps_width%,%ps_height%)
   $set_ps_global(NeedRefresh_RP,0)
,
   $movepanel_c(Panel_main,0,0,%ps_width%,%ps_height%)
)


PSS, в которой расположены переключаемые панели (Panel_main):
Код: Выделить всё
$ifequal($get_ps_global(Show_P),1,
   $showpanel_c(Playlist,1)
,
   $showpanel_c(Playlist,0)
)

$ifequal($get_ps_global(Show_P2),1,
   $showpanel_c(Playlist2,1)
,
   $showpanel_c(Playlist2,0)
)

Но меня смущает эта NeedRefresh_RP.
Как это всё проще реализовать можно?

The ability to let that which does not matter truly slide.
egiko
Новичок
Аватара
Репутация: 3
С нами: 11 лет 4 месяца

Сообщение #553 AHAPXICT » 04.10.2018, 10:57

egiko писал(а):Подскажите пожалуйста, каким способом вы сделали иконку DarkOne48x48.ico?
Там полноценная иконка, название оставил от старой с одной картинкой 48x48 что бы не менять название путей. Я уже не помню при помощи какой программы запаковывал, но остался проект(выложу ниже для примера). Файл .ico содержит много картинок от 16 до 256 pix. Рисовал, не один день, каждую иконку отдельно, так как выяснилось что простым уменьшением размера не получишь нужного результата. Ну и к этому для отображения иконки вместо отображения стандартной папки в ней лежит файл desktop.ini (по умолчанию не отображается, так как является системным) Создать его можно из текстового документа изменив расширение. Пример:
Код: Выделить всё
[.ShellClassInfo]
ConfirmFileOp=0
IconFile=DarkOne48x48.ico
IconIndex=0
InfoTip=Foobar2000 v1.4 DarkOne v4 Portable
В архиве есть проект для фотошоп и Paint.Net

По PSS нечего не скажу, так как сам смог добиться только половинного результата поместив часть скрипта в Per Second и выбрав Follow cursor.
То есть нужная функция срабатывает если плеер в режиме воспроизведения, если в режиме стоп, то как минимум нужно пошевелить курсором мыши. Можно посмотреть в CompactOne v1.0, функция показать/скрыть панель инструментов
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 226
С нами: 6 лет 8 месяцев

Сообщение #554 RobertBodo » 07.10.2018, 16:10

2 АНАРХІСТ:
:help: Шось Dark1_ JS_1.33 под 1.3.20 отказывается запускаться напрочь в обоих режимах :help:
Вин7-sp1+ с последними обновами. Дайретикс 9 всех лет и модификаций стоит... 0 последствий..висит в Процессах запущенный Фубар2000.ехе32 - и мертви бджьолы..

Спойлер
Рисовал, не один день, каждую иконку отдельно, так как выяснилось что простым уменьшением размера не получишь нужного результата

.. :eek: ..а у меня на раз получилось сделать иконы для папки и для ярлыка через ГИМП, он их сам генерирует из 1-слойного базового файла.
Качество теряется по-любому, если исходный был крупным, его пошагово уменьшать нужно, или через систему масок в ФШ (долго и нудно, но результат отличный). Еще с помощью растровой графики в Корел Дро как-то уменьшают удачно, но не пытался.
RobertBodo
Новичок
Репутация: 2
С нами: 1 год 9 месяцев

Сообщение #555 vladj » 07.10.2018, 16:49

Попробуй удалить из компонентов плагин эксплорера, частенько он не даёт запустится некоторым сборкам на некоторых ОС. Просто вынеси в сторонку, лично я никогда его не использую...тот-же плагин библиотеки только мусор в виде хардов лишний болтается в панели.
HTPC Termaltake, eGlobal i5-7200, Asrock Beebox J3160, Onkyo 525E, цап SMSL, фронт Yamaha 8900.
vladj M
Гуру
Аватара
Откуда: Пермский край
Репутация: 394
С нами: 10 лет 5 месяцев

Сообщение #556 MC Web » 07.10.2018, 16:55

RobertBodo писал(а):...отказывается запускаться напрочь в обоих режимах
vladj писал(а):Попробуй удалить из компонентов плагин эксплорера, частенько он не даёт запустится некоторым сборкам на некоторых ОС.
Обычно, достаточно просто запустить службу СЕРВЕР в Windows.
MC Web
Гуру
Аватара
Репутация: 212
С нами: 6 лет 10 месяцев

Сообщение #557 RobertBodo » 07.10.2018, 17:18

MC Web, Обычно, достаточно просто запустить службу СЕРВЕР в Windows
.. :eek: ..во на..отключал 100%!
Мое почтение мастеру Вэбу :smile: .. авось..
ЗЫ: а почему об этой бяке в релизе не встретилось? :spy:
Спойлер
2 vladj: "..плагин Эксплорера, говорите?.." :wink:
Изображение
RobertBodo
Новичок
Репутация: 2
С нами: 1 год 9 месяцев

Сообщение #558 vladj » 07.10.2018, 18:06

Я после установки ОС отключаю около 2-х десятков служб мне не нужных потому и сервер всегда на всех компах отключен.
RobertBodo писал(а):а почему об этой бяке в релизе не встретилось?
Автор сборки не может учесть все настройки системы у пользователей, у всех по разному настроено бывает. Для того и форум, ты спросил и тебе быстро ответили...в частности про сервер.
HTPC Termaltake, eGlobal i5-7200, Asrock Beebox J3160, Onkyo 525E, цап SMSL, фронт Yamaha 8900.
vladj M
Гуру
Аватара
Откуда: Пермский край
Репутация: 394
С нами: 10 лет 5 месяцев

Сообщение #559 dimitros987 » 07.10.2018, 20:44

Спасибо огромное!!!
dimitros987
Новичок
Репутация: 0
С нами: 4 года 9 месяцев

Сообщение #560 AHAPXICT » 07.10.2018, 22:19

RobertBodo, с первым вопросом уже порешали.
RobertBodo писал(а):.. :eek: ..а у меня на раз получилось сделать иконы для папки и для ярлыка
Да не хрена у тебя не получилось. Размазню сделать, дело не хитрое. Если бы ты проект открыл по ссылке и картинки посмотрел, этого бы комментария не было)) Слышал про пиксельную графику?

vladj, как обычно топишь за библиотеку))))
Media Library it's bad - explorer it's good!
Изображение
Изображение
Media Library it's bad - explorer it's good!
AHAPXICT M
Автор темы, Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 226
С нами: 6 лет 8 месяцев

Пред.След.

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

Кто сейчас на форуме (по активности за 10 минут)

Сейчас этот раздел просматривают: 1 гость