Скрипты для foo_uie_wsh_panel_mod

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

Описание: Кнопочки, конфиги, секреты, советы.

Сообщение #2761 imfam » 23.08.2020, 17:41

Давай. Тогда конкретно
panel.png
panel.png (10.87 КБ) Просмотров: 806

Есть две картинки: активная (outputMH.png) и неактивная (output.png) кнопки. По клику на неактивной кнопке переключается вывод и картинки должны меняться так, чтобы оставалась индикация текущего вывода.
imfam
Бывалый
Откуда: Германия
Репутация: 16
С нами: 7 лет 4 месяца

Сообщение #2762 AHAPXICT » 23.08.2020, 22:33

imfam, извиняюсь, задержали дела...
imfam писал(а):Давай. Тогда конкретно
Да я это и понял ещё по первому вопросу. Нужно что бы кнопка оставалась нажатой как в старой радиоле например. Разные варианты предлагал с точки зрения дизайна, что может выглядеть более выигрышно в данном случае, ну или более простая реализация с тем же эффектом. Но это всё лирика, перейдём к делу. Мне надо рабочий скрипт, в смысле не отрезок как в примере, попробую его отредактировать в Notepad++, потому что в своей сборке не получится запустить без переделки всё равно. Модифицированный не надо, лезть в "кнопки" я не буду, там специальный скрипт отдельный, проще сделать отдельно.
Так будет быстрее, без переписки, и никто никого ждать не будет.
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 230
С нами: 6 лет 10 месяцев

Сообщение #2763 imfam » 23.08.2020, 22:46

AHAPXICT, я дал выше ссылку на свою сборку . Там все скрипты: пкм на кнопках. Нужно только свои устройства вывода звука вписать вместо моих, иначе переключать будет нечего.

Кнопки, как на картинке
Код: Выделить всё
// DarkOne v2.1 Control Panel
// Code by T.P Wang and tedGo

// ==PREPROCESSOR==
// @import "%fb2k_path%themes\DarkOne\Others\WSH Scripts\DO Global Script.js"
// @import "%fb2k_path%themes\DarkOne\Others\WSH Scripts\DO Global Button Script.js"
// ==/PREPROCESSOR==

window.MinWidth = 280;

// ----- CREATE BUTTONS --------------------------------------------
var imgPath = fb.foobarPath + "themes\\DarkOne\\Buttons\\Control\\";
var btn_font = gdi.Font("Tahoma", 12, 0);
var r = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var s = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var t = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var u = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};

Buttons.DEV = new Button(ww / 2 - 110, 22, 55, 14, r, function(){fb.RunMainMenuCommand("Playback/Device/Preferences...")}, "Output");
Buttons.EXT = new Button(ww / 2 - 55, 22, 55, 14, s, function(){fb.RunMainMenuCommand("Playback/Device/KS : AudioQuest DragonFly");}, "External");
Buttons.SHARED = new Button(ww / 2 + 0, 22, 55, 14, t, function(){fb.RunMainMenuCommand("Playback/Device/WASAPI (shared) : Speakers (Realtek(R) Audio)");}, "Shared");
Buttons.ASIO = new Button(ww / 2 + 55, 22, 55, 14, u, function(){fb.RunMainMenuCommand("Playback/Device/ASIO : Realtek ASIO");}, "ASIO");


// ----- DRAW ------------------------------------------------------
function on_paint(gr) {

   gr.FillSolidRect(0, 0, ww, wh, ui_backcol);

   buttonsDraw(gr);

      var x2 = ww / 2 - 110;
      var x3 = ww / 2 - 55;
      var x4 = ww / 2 + 0;
      var x5 = ww / 2 + 55;
   
    gr.GdiDrawText("Output", btn_font, ui_btntxtcol, x2, 06, 55, 12, 33);
    gr.GdiDrawText("External", btn_font, ui_btntxtcol, x3, 06, 55, 12, 33);
    gr.GdiDrawText("Shared", btn_font, ui_btntxtcol, x4, 06, 55, 12, 33);
   gr.GdiDrawText("ASIO", btn_font, ui_btntxtcol, x5, 06, 55, 12, 33);

}

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

        Buttons.DEV.changePos(ww / 2 - 110, 22, 55, 14);
      Buttons.DEV.alterImage(r);
      Buttons.EXT.changePos(ww / 2 - 55, 22, 55, 14);
        Buttons.EXT.alterImage(s);
      Buttons.SHARED.changePos(ww / 2 + 0, 22, 55, 14);
      Buttons.SHARED.alterImage(t);
      Buttons.ASIO.changePos(ww / 2 + 55, 22, 55, 14);
      Buttons.ASIO.alterImage(u);

   }
      
imfam
Бывалый
Откуда: Германия
Репутация: 16
С нами: 7 лет 4 месяца

Сообщение #2764 AHAPXICT » 23.08.2020, 23:16

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

Сообщение #2765 imfam » 24.08.2020, 00:08

imfam
Бывалый
Откуда: Германия
Репутация: 16
С нами: 7 лет 4 месяца

Сообщение #2766 AHAPXICT » 24.08.2020, 00:27

imfam, как вы поняли вариантов много, сам где-то полгода назад столкнулся с подобной проблемой когда хотел изменения в отображение кнопок внести, вернее там всё привязано к отдельному скрипту, поэтому я пошёл обходным путём. Ну как я заметил у вас всё проще, а у меня все кнопки разные да ещё это зависит от ширины панели и т.д., судя по скрипту всё 55, ну да ладно. Проверил концепт на своей сборке. Удалите не нужные строки из скрипта.
Код: Выделить всё
// DarkOne v2.1 Control Panel
// Code by T.P Wang and tedGo

// ==PREPROCESSOR==
// @import "%fb2k_path%themes\DarkOne\Others\WSH Scripts\DO Global Script.js"
// @import "%fb2k_path%themes\DarkOne\Others\WSH Scripts\DO Global Button Script.js"
// ==/PREPROCESSOR==

window.MinWidth = 280;

var active_device = window.GetProperty("active device buttons", 0);
var button_dev = gdi.Image(imgPath + "outputMH.png");

// ----- CREATE BUTTONS --------------------------------------------
var imgPath = fb.foobarPath + "themes\\DarkOne\\Buttons\\Control\\";
var btn_font = gdi.Font("Tahoma", 12, 0);
var r = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var s = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var t = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var u = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};

Buttons.DEV = new Button(ww / 2 - 110, 22, 55, 14, r, function(){active_device = 0, activedevice(), fb.RunMainMenuCommand("Playback/Device/Preferences...")}, "Output");
Buttons.EXT = new Button(ww / 2 - 55, 22, 55, 14, s, function(){active_device = 1, activedevice(), fb.RunMainMenuCommand("Playback/Device/KS : AudioQuest DragonFly");}, "External");
Buttons.SHARED = new Button(ww / 2 + 0, 22, 55, 14, t, function(){active_device = 2, activedevice(), fb.RunMainMenuCommand("Playback/Device/WASAPI (shared) : Speakers (Realtek(R) Audio)");}, "Shared");
Buttons.ASIO = new Button(ww / 2 + 55, 22, 55, 14, u, function(){active_device = 3, activedevice(), fb.RunMainMenuCommand("Playback/Device/ASIO : Realtek ASIO");}, "ASIO");


// ----- DRAW ------------------------------------------------------
function on_paint(gr) {

   gr.FillSolidRect(0, 0, ww, wh, ui_backcol);

   buttonsDraw(gr);

      var x2 = ww / 2 - 110;
      var x3 = ww / 2 - 55;
      var x4 = ww / 2 + 0;
      var x5 = ww / 2 + 55;
/*   
    gr.GdiDrawText("Output", btn_font, ui_btntxtcol, x2, 06, 55, 12, 33);
    gr.GdiDrawText("External", btn_font, ui_btntxtcol, x3, 06, 55, 12, 33);
    gr.GdiDrawText("Shared", btn_font, ui_btntxtcol, x4, 06, 55, 12, 33);
    gr.GdiDrawText("ASIO", btn_font, ui_btntxtcol, x5, 06, 55, 12, 33);
*/
    gr.GdiDrawText("Output", btn_font, active_device == 0 ? RGB(128,192,255) : ui_btntxtcol, x2, 06, 55, 12, 33);
    gr.GdiDrawText("External", btn_font, active_device == 1 ? RGB(128,192,255) : ui_btntxtcol, x3, 06, 55, 12, 33);
    gr.GdiDrawText("Shared", btn_font, active_device == 2 ? RGB(128,192,255) : ui_btntxtcol, x4, 06, 55, 12, 33);
    gr.GdiDrawText("ASIO", btn_font, active_device == 3 ? RGB(128,192,255) : ui_btntxtcol, x5, 06, 55, 12, 33);


    gr.DrawImage(button_dev, ww / 2 - 110 + 55 * active_device, 22, 55, 14, 0, 0, 55, 14, 0, 255); //255 alpha
//    gr.FillSolidRect(ww / 2 - 110 + 54 * active_device, 25, 53, 8, RGBA(19, 30, 38, 150));
//   gr.FillSolidRect(ww / 2 - 74 + 55 * active_device, 28, 38, 2, RGBA(245, 55, 0, 230));
}

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

        Buttons.DEV.changePos(ww / 2 - 110, 22, 55, 14);
      Buttons.DEV.alterImage(r);
      Buttons.EXT.changePos(ww / 2 - 55, 22, 55, 14);
        Buttons.EXT.alterImage(s);
      Buttons.SHARED.changePos(ww / 2 + 0, 22, 55, 14);
      Buttons.SHARED.alterImage(t);
      Buttons.ASIO.changePos(ww / 2 + 55, 22, 55, 14);
      Buttons.ASIO.alterImage(u);

   }
     
function activedevice() {
    window.SetProperty("active device buttons", active_device)
    window.Repaint();
}
imgonline-com-ua-GIF-Animation-aeN1XWyjsdexeR.gif
imgonline-com-ua-GIF-Animation-aeN1XWyjsdexeR.gif (38.51 КБ) Просмотров: 729
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 230
С нами: 6 лет 10 месяцев

Сообщение #2767 imfam » 24.08.2020, 00:52

Спасибо. Теперь уже завтра продолжу.
Сейчас консоль даёт ошибку
Код: Выделить всё
WSH Panel Mod ({B38385B4-7CBE-4019-BB99-8CCE46084548}): Parsing file "C:\Utilities\foobar2000\themes\DarkOne\Others\WSH Scripts\DO Global Script.js"
WSH Panel Mod ({B38385B4-7CBE-4019-BB99-8CCE46084548}): Parsing file "C:\Utilities\foobar2000\themes\DarkOne\Others\WSH Scripts\DO Global Button Script.js"
WSH Panel Mod ({B38385B4-7CBE-4019-BB99-8CCE46084548}): initialized in 3 ms
Error: WSH Panel Mod ({B38385B4-7CBE-4019-BB99-8CCE46084548}): Microsoft JScript runtime error:
Object expected
File: <main>
Ln: 46, Col: 5
<source text only available at compile time>
imfam
Бывалый
Откуда: Германия
Репутация: 16
С нами: 7 лет 4 месяца

Сообщение #2768 AHAPXICT » 24.08.2020, 02:30

imfam, не расстраивайтесь, я так и предполагал (что будут косяки). Не помог и тест на своей сборке)) Там всё просто,скачал вашу сборку, посмотрел, решил проблему. Я то не обратил даже внимание, что строка с путём для картинки стоит выше чем imgPath :oops: , ну дальше просто чего-то не хватило))Вот ваш скрипт, проверил на вашей сборке. Подсветку текста мою удалите, свои строки разремте, посмотрите так же как подсведка кнопок работает.(две строки под основной)
Код: Выделить всё
// DarkOne v2.1 Control Panel
// Code by T.P Wang and tedGo

// ==PREPROCESSOR==
// @import "%fb2k_path%themes\DarkOne\Others\WSH Scripts\DO Global Script.js"
// @import "%fb2k_path%themes\DarkOne\Others\WSH Scripts\DO Global Button Script.js"
// ==/PREPROCESSOR==

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

window.MinWidth = 280;

var active_device = window.GetProperty("active device buttons", 0);
// ----- CREATE BUTTONS --------------------------------------------
var imgPath = fb.foobarPath + "themes\\DarkOne\\Buttons\\Control\\";
var button_dev = gdi.Image(imgPath + "outputMH.png");
var btn_font = gdi.Font("Tahoma", 12, 0);
var r = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var s = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var t = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};
var u = {normal: imgPath + "output.png", hover: imgPath + "outputMH.png"};

Buttons.DEV = new Button(ww / 2 - 110, 22, 55, 14, r, function(){active_device = 0, activedevice(), fb.RunMainMenuCommand("Playback/Device/Preferences...")}, "Output");
Buttons.EXT = new Button(ww / 2 - 55, 22, 55, 14, s, function(){active_device = 1, activedevice(), fb.RunMainMenuCommand("Playback/Device/KS : AudioQuest DragonFly");}, "External");
Buttons.SHARED = new Button(ww / 2 + 0, 22, 55, 14, t, function(){active_device = 2, activedevice(), fb.RunMainMenuCommand("Playback/Device/WASAPI (shared) : Speakers (Realtek(R) Audio)");}, "Shared");
Buttons.ASIO = new Button(ww / 2 + 55, 22, 55, 14, u, function(){active_device = 3, activedevice(), fb.RunMainMenuCommand("Playback/Device/ASIO : Realtek ASIO");}, "ASIO");


// ----- DRAW ------------------------------------------------------
function on_paint(gr) {

   gr.FillSolidRect(0, 0, ww, wh, ui_backcol);

   buttonsDraw(gr);

      var x2 = ww / 2 - 110;
      var x3 = ww / 2 - 55;
      var x4 = ww / 2 + 0;
      var x5 = ww / 2 + 55;
/*   
    gr.GdiDrawText("Output", btn_font, ui_btntxtcol, x2, 06, 55, 12, 33);
    gr.GdiDrawText("External", btn_font, ui_btntxtcol, x3, 06, 55, 12, 33);
    gr.GdiDrawText("Shared", btn_font, ui_btntxtcol, x4, 06, 55, 12, 33);
    gr.GdiDrawText("ASIO", btn_font, ui_btntxtcol, x5, 06, 55, 12, 33);
*/
    gr.GdiDrawText("Output", btn_font, active_device == 0 ? RGB(128,192,255) : ui_btntxtcol, x2, 06, 55, 12, 33);
    gr.GdiDrawText("External", btn_font, active_device == 1 ? RGB(128,192,255) : ui_btntxtcol, x3, 06, 55, 12, 33);
    gr.GdiDrawText("Shared", btn_font, active_device == 2 ? RGB(128,192,255) : ui_btntxtcol, x4, 06, 55, 12, 33);
    gr.GdiDrawText("ASIO", btn_font, active_device == 3 ? RGB(128,192,255) : ui_btntxtcol, x5, 06, 55, 12, 33);


    gr.DrawImage(button_dev, ww / 2 - 110 + 55 * active_device, 22, 55, 14, 0, 0, 55, 14, 0, 255); //Image 255 alpha
//    gr.FillSolidRect(ww / 2 - 110 + 55 * active_device, 25, 55, 8, RGBA(19, 30, 38, 200)); // Down Color
//    gr.FillSolidRect(ww / 2 - 100 + 55 * active_device, 27, 38, 2, RGBA(245, 55, 0, 230)); //Orange light
}

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

        Buttons.DEV.changePos(ww / 2 - 110, 22, 55, 14);
      Buttons.DEV.alterImage(r);
      Buttons.EXT.changePos(ww / 2 - 55, 22, 55, 14);
        Buttons.EXT.alterImage(s);
      Buttons.SHARED.changePos(ww / 2 + 0, 22, 55, 14);
      Buttons.SHARED.alterImage(t);
      Buttons.ASIO.changePos(ww / 2 + 55, 22, 55, 14);
      Buttons.ASIO.alterImage(u);

   }
     
function activedevice() {
    window.SetProperty("active device buttons", active_device)
    window.Repaint();
}
imgonline-com-ua-GIF-Animation-Lx2hIAHUrYV.gif
imgonline-com-ua-GIF-Animation-Lx2hIAHUrYV.gif (21.11 КБ) Просмотров: 720
Media Library it's bad - explorer it's good!
AHAPXICT M
Гуру
Аватара
Возраст: 49
Откуда: Киев
Репутация: 230
С нами: 6 лет 10 месяцев

Сообщение #2769 imfam » 24.08.2020, 10:13

AHAPXICT, задача решена. Скрипт работает и менять ничего не надо. Подсветка текста тоже к месту.
Спасибо!
imfam
Бывалый
Откуда: Германия
Репутация: 16
С нами: 7 лет 4 месяца

Сообщение #2770 NikosColev » 04.09.2020, 16:23

Если все компоненты сборки на Spider Monkey Panel, то использовать Biography, albums, title, similar artist info.www.last.fm не получится или есть варианты?

Добавлено спустя 3 часа 29 минут:
Не пойму, а с WSH скрипт точно совместим?
Код: Выделить всё
Scripting Engine Initialization Failed (Biography, albums, title, similar artist info.www.last.fm. v10062020 by kgena_ua, CODE: 0x80020101)
Check the console for more information (Always caused by unexcepted script error).
Код: Выделить всё
WSH Panel Mod ({A59FEF58-89B7-4955-B166-24E7D03BCAF8}): initialized in 49 ms
Error: WSH Panel Mod (Biography, albums, title, similar artist info.www.last.fm. v10062020 by kgena_ua): Ошибка выполнения Microsoft JScript:
Невозможно создание объекта сервером программирования объектов
File: <main>
Ln: 298, Col: 1
<source text only available at compile time>
"Человек живет и движется среди того что видит, но видит только то что способен осознать" (с) Поль Валери
NikosColev
Бывалый
Аватара
Репутация: 1
С нами: 14 лет 3 месяца

Пред.

Вернуться в Секреты foobar2000