Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #2881 clip » 13.09.2021, 10:37

kgena_ua, приветствую
kgena_ua:переходите на SMP, полноте Вам
1. SMP сейчас в тренде пока не появится новый тренд, что-то типа "тигра- скорпиона", и тогда все начнут перебегать на новый тренд, как это уже было с WSH -->JSP --> SMP ...
2. SMP пока не стабильна (последний релиз тому в подтверждение), а скрипты на WSH работают десятилетие, без всяких обновлений
3. Плохая совместимость SMP с dockable panels не дает нормально протестировать SMP-панель (Floating window не катит, т.к. он только для DUI)
kgena_ua:я перестал пользовать JS Panel
4. Так SMP основана на коде JSP
5. Сейчас две биографии - ваша и от WilB и теперь обе на SMP - прямо соцсоревнование какое-то, но тягаться с WilB на его поле, думаю, будет проблематично (он программист, у него более навороченный код, он оперативно обновляет код под разные хотелки и после выхода новой SMP).
kgena_ua:Только не для WSH. Не интересно
Все ... капец. Теперь по WSH (здесь) и спросить будет не у кого ... Аминь :pray:
clip
Репутация: 0
С нами: 10 месяцев 7 дней

Сообщение #2882 kgena_ua » 13.09.2021, 12:39

clip, добрый день.
clip:SMP сейчас в тренде пока не появится новый тренд
Согласен.
clip:SMP пока не стабильна (последний релиз тому в подтверждение)
Да. Я не обновлялся, но наслышан.
clip:Плохая совместимость SMP с dockable panels
Это плохо. Мне это не нравиться.
clip:Floating window не катит, т.к. он только для DUI
Если Вы имеете ввиду foo_flowin, то на CUI работает. Я пользуюсь.
kgena_ua:я перестал пользовать JS Panel
Я перестал пользовать JSP по другой причине, связанной с определенным, назовем, случаем.
clip:но тягаться с WilB на его поле, думаю, будет проблематично
Я не тягаюсь. У WilB в био свои плюсы, у меня свои. Мои плюсы для меня плюсее. :smile:
Он программист, ему проще. Он ставит перед собой задачу и решает ее. Я ставлю перед собой задачу, а потом думаю: "и как я буду эту фигню делать чтоб оно заработало". За счет этого у меня есть очень интересные решения, на мой взгляд.
kgena_ua:Только не для WSH. Не интересно
Это касается только скрипта био. Поймите, с последней версией на WSH много изменений, переделок, добавлений и улучшений, как на мой взгляд, и залезть туда для каких-либо исправлений... так там все надо менять.
clip:Все ... капец. Теперь по WSH (здесь) и спросить будет не у кого
Ничего подобного. Я всегда стараюсь отвечать на вопросы по WSH если знаю ответ, и мне это интересно, особенно если кому-то получилось помочь.
Никакого "аминь".

А WSH я использую. Я от него не отказывался и отказываться не собираюсь.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 7 месяцев

Сообщение #2883 MC Web » 13.09.2021, 13:22

kgena_ua:Вот доделываю, по Вашей просьбе, вывод изображения при отсутствии "выбранного артиста".
Как понял, это будет для SMP, значит придется пытаться самостоятельно внедрять в старый скрипт WSH.
kgena_ua:
clip: Floating window не катит, т.к. он только для DUI
Если Вы имеете ввиду foo_flowin, то на CUI работает.
Но не поддерживает элементы/компоненты относящиеся к CUI.
MC Web
Репутация: 243
С нами: 8 лет 3 месяца

Сообщение #2884 clip » 13.09.2021, 13:56

MC Web:kgena_ua:

clip:
Floating window не катит, т.к. он только для DUI

Если Вы имеете ввиду foo_flowin, то на CUI работает.

Но не поддерживает элементы/компоненты относящиеся к CUI.
Думал может что-то пропустил - поставил крайнюю версию (0.1.3) на CUI ... при попытке, что-то выбрать - никакой реакции, да ладно меня пока вполне устраивает dockable panels
kgena_ua:Ничего подобного. Я всегда стараюсь отвечать на вопросы по WSH если знаю ответ, и мне это интересно, особенно если кому-то получилось помочь.
Никакого "аминь".
А этим вы порадовали, значит не все так безнадежно :wink:
Спасибо за отзывы - всего доброго и удачи :hi:
clip
Репутация: 0
С нами: 10 месяцев 7 дней

Сообщение #2885 MC Web » 13.09.2021, 15:32

clip:поставил крайнюю версию (0.1.3) на CUI ... при попытке, что-то выбрать - никакой реакции
Добавляет элементы относящиеся к DUI
Изображение
MC Web
Репутация: 243
С нами: 8 лет 3 месяца

Сообщение #2886 clip » 13.09.2021, 16:03

MC Web:Добавляет элементы относящиеся к DUI
Вот это самое окно "всплывающие окна" у меня и не появляется, т.е. меню --> вид --> flowin --> new flowin - никаких реакций (как и другие элементы подменю), в отличии от dockable panels где из меню это все работает на раз
MC Web, спасибо за попытку помочь - будем считать это косяком моего конфига :hi:
clip
Репутация: 0
С нами: 10 месяцев 7 дней

Сообщение #2887 koshingg » 16.09.2021, 21:08

MC Web как ты получил 3 мужчин ? https://foobar2000.ru/forum/viewtopic.php?t=1878&start=2800#postform Я установил скрипт, (а также Preston Blair.zip fonts) но у меня только 2 человечка.

Добавлено спустя 15 минут 58 секунд:
MC Web Кроме того, что это за компонент? Не могли бы вы поделиться своими настройками? Выглядит отлично. Большое спасибо.
Вложения
1.png
ONLY 2.png
ONLY 2.png (9.26 КБ) Просмотров: 871
koshingg
Репутация: 0
С нами: 4 месяца 13 дней

Сообщение #2888 LUR » 19.09.2021, 16:24

kgena_ua, нашел баг в биографии под SMP

Код: Выделить всё
CheckMenuRadioItem failed:
WinAPI error:
  CheckMenuRadioItem failed with error (0x0):
    Function failed, but returned a `SUCCESS` error code, which is usually caused by a bugged WinAPI. One such case is when process runs out of GDI handles and can't create a new GDI object.

File: <main>
Line: 1894, Column: 37
Stack trace:
  on_mouse_rbtn_up@:1894:37

Добавлено спустя 3 часа 32 минуты:
P.S. Нашел причину:
Строка 1891 - опечатка, вместо 380 должно быть 381
_group_font_style_t.AppendMenuItem( EMI(font_style_t, 1), 380, font_style[1][0]);
LUR M
Модератор
Аватара
Возраст: 39
Откуда: Минск
Репутация: 297
С нами: 9 лет

Сообщение #2889 kgena_ua » 20.09.2021, 18:11

LUR, спасибо.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 7 месяцев

Сообщение #2890 SergPuh.68 » 22.09.2021, 20:57

Привет.У меня в скрипте громкости ползунок выполнен при помощи изображения .png Как можно сделать что бы при наведении курсором было одно изображение,при перетаскивании другое а в обычном положении третье?
Код: Выделить всё
function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r,g,b,a){ return ((a<<24)|(r<<16)|(g<<8)|(b)); }

var g_drag = 0;
var ww;
var hofset = 1;
var wh = 12;
var ih=21; var iw=14;
var vofset;
var grad;

function on_paint(gr){

    grad = Math.pow((100+fb.Volume)/100,2);
    vofset = (window.Height-wh)/2;
    ww = window.Width - 14*hofset;

    gr.FillGradRect(hofset,vofset=+3, ww*grad, wh, 0, RGB(55,64,73), RGB(84,92,100));
    gr.FillGradRect(hofset,vofset=+3, ww*grad, wh, 270, RGBA(25,34,43,70), RGBA(84,92,100,70));       
    gr.FillGradRect(hofset,vofset=+3, ww*grad, 1, 0, RGBA(95,107,117,150), RGBA(95,107,117,255));
    img = gdi.image(fb.FoobarPath + "Images\\volume.png");
    gr.DrawImage(img, hofset+ww*grad-iw/14, (window.Height-ih)/2, iw, ih, 0, 0,iw, ih);      
}
function on_mouse_lbtn_down(x,y){
    g_drag = 1;
}
function on_mouse_lbtn_up(x,y){
    on_mouse_move(x,y);
    g_drag = 0;
}
function on_mouse_move(x,y){
    if(g_drag){
        var v = (x-hofset)/ww;
        v = (v<0) ? 0 : (v<1) ? v : 1;
        v = 100 * (Math.pow(v,1/2) - 1);
        fb.Volume = v;
    }
        window.SetCursor(32649);   
}
function on_mouse_wheel(delta){
    if(delta>0)
        fb.VolumeUp();
    else
        fb.VolumeDown();
}
function on_volume_change(val){
    window.Repaint();
}
function on_playback_time(time){
window.Repaint();
}
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #2891 kgena_ua » 23.09.2021, 09:51

SergPuh.68:при наведении курсором было одно изображение,при перетаскивании другое а в обычном положении третье
Код: Выделить всё
function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }
function RGBA(r,g,b,a){ return ((a<<24)|(r<<16)|(g<<8)|(b)); }

var g_drag = false;
var ww;
var hofset = 1;
var wh = 12;
var ih = 21; var iw = 14;
var vofset;
var grad;

var img_leave = gdi.image(fb.FoobarPath + "\\maybe\\textures\\mouse_leave.png");
var img_on = gdi.image(fb.FoobarPath + "\\maybe\\textures\\mouse_on.png");
var img_move = gdi.image(fb.FoobarPath + "\\maybe\\textures\\mouse_move.png");
var img = img_leave;

function on_paint(gr){
    grad = Math.pow((100+fb.Volume)/100,2);
    vofset = (window.Height-wh)/2;
    ww = window.Width - 14*hofset;

    gr.FillGradRect(hofset,vofset=+3, ww*grad, wh, 0, RGB(55,64,73), RGB(84,92,100));
    gr.FillGradRect(hofset,vofset=+3, ww*grad, wh, 270, RGBA(25,34,43,70), RGBA(84,92,100,70));       
    gr.FillGradRect(hofset,vofset=+3, ww*grad, 1, 0, RGBA(95,107,117,150), RGBA(95,107,117,255));
    //img = gdi.image(fb.FoobarPath + "Images\\volume.png");
    if (img) gr.DrawImage(img, hofset+ww*grad-iw/14, (window.Height-ih)/2, iw, ih, 0, 0,iw, ih);     
}

function on_mouse_leave() {
    img = img_leave;
    window.Repaint();
}

function on_mouse_lbtn_down(x,y){
    g_drag = true;
    img = img_move;
    window.Repaint();
}

function on_mouse_lbtn_up(x,y){
    on_mouse_move(x,y);
    g_drag = false;
}

function on_mouse_move(x,y){
    if (g_drag){
        var v = (x-hofset)/ww;
        v = (v<0) ? 0 : (v<1) ? v : 1;
        v = 100 * (Math.pow(v,1/2) - 1);
        fb.Volume = v;
    }
    window.SetCursor(32649);
   
    img = g_drag ? img_move : img_on;
    window.Repaint();
}

function on_mouse_wheel(delta){
    if(delta>0)
        fb.VolumeUp();
    else
        fb.VolumeDown();
}

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

function on_playback_time(time){
    window.Repaint();
}





I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 7 месяцев

Сообщение #2892 SergPuh.68 » 23.09.2021, 11:33

kgena_ua, спасибо, всё отлично работает.
YouTube Music
SergPuh.68 M
Аватара
Откуда: Украина
Репутация: 127
С нами: 2 года 10 месяцев

Сообщение #2893 Cerberus » 23.09.2021, 22:56

kgena_ua, Добрый вечер!
1) Подскажите как вернуть сайт Last.Fm в панель свойства трека?
два скрина: 1 из сборки Lur 191203, другой из сборки 210920.
По датам и версии все сходиться. Скрипт один и тот же.
2) подскажите как в панели Биографии убрать эти надписи, что бы только текст биографии остался?)

3) пытаюсь внедрить ваш скрипт Get Covers (Artwork) radio logos в сборку от LUR, но выскакивает такая ошибка. Подскажите как ее можно устранить.
Спасибо!
Вложения
11.PNG
4.PNG
3.PNG
2.PNG
2.PNG (11.54 КБ) Просмотров: 541
1.PNG
Cerberus
Репутация: 9
С нами: 5 лет 1 месяц

Сообщение #2894 kgena_ua » 24.09.2021, 11:32

Cerberus, привет.
1. Посмотрю панель "свойства". Не обращал внимание.
Попробуйте двойной клик по наименованию группы, может текст просто скрыт.


2. При наведении курсора в области, см. изображение, появятся треугольные маркеры. Двойной клик левой клавишей - включение или отключение доп.текста. Текст "last.fm" и "allmusic" не отключаются.
bio.png
bio.png (112.64 КБ) Просмотров: 501


3, По Get Covers (Artwork) radio logos. У меня только последняя версия. Для Spider Monkey Panel.
covers 22092021.rar
(11.18 КБ) Скачиваний: 34
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 7 месяцев

Сообщение #2895 clip » 24.09.2021, 12:44

kgena_ua, приветствую
1. У меня давно стоит панелька на WSH 1.5.6 и в ней
Код: Выделить всё
function on_item_focus_change() {
    if (g_metadb) {window.UnwatchMetadb();}
    if (fb.IsPlaying || fb.IsPaused) g_metadb = fb.GetNowPlaying();
    if (g_metadb)
    {
        on_metadb_changed();
        window.WatchMetadb(g_metadb);
    }
}
Работал скрипт нормально, за исключением того, что в "Stream" не обновлялись метаданные (Artist, Title ....) - не знаю из за
function on_item_focus_change() или другой (может подскажете, где копать)
На сегоднешний день возникла необходимость перейти на JSP - так, вроде, все перевел с WSH --> JSP кроме function on_item_focus_change() из за window.UnwatchMetadb() и window.WatchMetadb(g_metadb) перепробовал много классических методов написания function on_item_focus_change() - не хочет нормально работать скрипт даже в обычном (альбомном) режиме
Отсюда вопрос:
-как корректно прописать function on_item_focus_change() для JSP
-не обновление метаданных в "Stream" из за этой функции или ....
2. Есть код менюшки
Код: Выделить всё
function capitalize(str) {                                 
   return str.charAt(0).toUpperCase() + str.slice(1);
}
function display_menu(x, y) {
   x = this.left;
   y = this.top;

   var a = {}, b = {}, c = "file;edit;View;playback;library;help".split(";");

   a[0] = window.CreatePopupMenu();
   for (var i = 1; i < 7; i++) a[i] = fb.CreateMainMenuManager();
   a[7] = fb.CreateContextMenuManager();
   for (var j = 0; j < 7; j++) b[j] = window.CreatePopupMenu();

   for (var k = 0; k < 6; k++) b[k].AppendTo(a[0], 16, capitalize(c[k]));
   for (var l = 1; l < 7; l++) a[l].Init(c[l - 1]);
   for (var m = 1; m < 7; m++) a[m].BuildMenu(b[m - 1], m * 1000);
   
   if (fb.IsPlaying) {
      a[7].InitNowPlaying();
      a[7].BuildMenu(b[6], 7000);
      b[6].AppendTo(a[0], 16, "Now Playing");
   }

   var idx = a[0].TrackPopupMenu(x, y);

   switch (true) {
      case idx == 0:
         break;

      case (idx >= 1000 && idx < 8000):
         var d = Math.floor(idx / 1000);
         a[d].ExecuteByID(idx - d * 1000);
         break;

   }
   
   for (var n = 0; n < 8; n++) a[n].Dispose();
}
Как локализовать (у меня локализованная сборка)
Код: Выделить всё
var a = {}, b = {}, c = "file;edit;View;playback;library;help".split(";");
Чет не в лоб, не через "new Array" не хочет работать - крашится
Буду благодарен за любые советы и помощь :smile:
clip
Репутация: 0
С нами: 10 месяцев 7 дней

Сообщение #2896 kgena_ua » 24.09.2021, 15:24

clip,
window.WatchMetadb и window.UnWatchMetadb не используется в WSH с версии 1.5.7.
В переходе на JSP все так-же, как и на WSH.
Код: Выделить всё
function on_item_focus_change() {
    metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();
    if (metadb) on_metadb_changed();
}

function on_metadb_changed() {
    artist = Eval("%artist%");
    title = Eval("%title%");
    window.Repaint();
}

function Eval(field) {
    var path = fb.Titleformat("%path%").EvalWithMetadb(metadb);
    var tfo = fb.TitleFormat("[" + field + "]");
    if (path.indexOf('://') > 0){
        return tfo.Eval(); // Stream
    } else {
        return tfo.EvalWithMetadb(metadb);
    }
}

clip:Есть код менюшки
Тут я не могу разобраться или тут чего-то не хватает.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 7 месяцев

Сообщение #2897 clip » 24.09.2021, 17:32

kgena_ua,
kgena_ua:window.WatchMetadb и window.UnWatchMetadb не используется в WSH с версии 1.5.7.
В переходе на JSP все так-же, как и на WSH.
Так из за этого и весь коленкор
Я уже пробовал ваш вариант function on_item_focus_change() - это глючит
1. Этот код (WSH 1.5.6) работает на альбомном режиме и не обновляет метаданные в "Stream" (если не передернуть)
Код: Выделить всё
function on_item_focus_change() {
    if (g_metadb) {window.UnwatchMetadb();}
    if (fb.IsPlaying || fb.IsPaused) g_metadb = fb.GetNowPlaying();
    if (g_metadb)
    {
        on_metadb_changed();
        window.WatchMetadb(g_metadb);
    }
}

function on_metadb_changed() {
    g_drag = 0;
    rating = g_tfo.EvalWithMetadb(g_metadb);
    if (rating == "?") {rating = 0;}
    lrating = rating;
    window.RepaintRect(rating_padx, rating_pady, 75, 15);
}
2. Этот код (WSH 1.5.7 и выше, а так же JSP) глючит даже на альбомном режиме
Код: Выделить всё
function on_item_focus_change() {
    g_metadb= fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();
    if (g_metadb) on_metadb_changed();

function on_metadb_changed() {
    g_drag = 0;
    rating = g_tfo.EvalWithMetadb(g_metadb);
    if (rating == "?") {rating = 0;}
    lrating = rating;
    window.RepaintRect(rating_padx, rating_pady, 75, 15);
}
3.
clip:
Есть код менюшки

Тут я не могу разобраться или тут чего-то не хватает.
Попробуйте вставить вместо основного меню - работает как часы, у меня только оно работает стабильно
Только как оно работает - для меня это ..... :sad:
clip
Репутация: 0
С нами: 10 месяцев 7 дней

Сообщение #2898 kgena_ua » 24.09.2021, 18:41

clip, маленькиq скрипт для WSH. Отображает %artist%, "%title%", "%rating%" и $meta(rating) для альбома и stream:
Код: Выделить всё
// ==PREPROCESSOR==
// @feature "v1.4"
// @feature "watch-metadb"
// ==/PREPROCESSOR==

function RGB(r, g, b) { return (0xff000000 | (r << 16) | (g << 8) | (b)); }   
   
var ww, wh;   
var font = gdi.Font("Arial",12,1);
var color = RGB(10, 10, 10);

DT_LEFT = 0x00000000;
DT_WORD_ELLIPSIS = 0x00040000;

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

function on_paint(gr) {
    gr.GdiDrawText( artist, font, color, 10, 0, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );
    gr.GdiDrawText( title, font, color, 10, 20, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );
    gr.GdiDrawText( rating_1, font, color, 10, 40, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );
    gr.GdiDrawText( rating_2, font, color, 10, 60, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );
}

var artist = "";
var title = "";
var rating_1 = "";
var rating_2 = "";

var metadb;
on_item_focus_change();

function on_playlist_switch() {
    on_item_focus_change();
}

function on_playback_new_track() {
    on_item_focus_change();
}

function on_playback_dynamic_info_track() {
    on_item_focus_change();
}

function on_playback_stop() {
    on_item_focus_change();
}

function on_selection_changed(metadb) {
   on_item_focus_change();
}

function on_item_focus_change() {
    metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();
    if (metadb) on_metadb_changed();
}

function on_metadb_changed() {
    artist = Eval("%artist%");
    title = Eval("%title%");
    rating_1 = Eval("%rating%");
    rating_2 = Eval("$meta(rating)");
    window.Repaint();
}

function Eval(field) {
    if (!metadb) return;
    var tfo = fb.TitleFormat("[" + field + "]");
    if (metadb.Path.indexOf('://') > 0){
        return tfo.Eval(); // Stream
    } else {
        return tfo.EvalWithMetadb(metadb);
    }
}
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 7 месяцев

Сообщение #2899 clip » 25.09.2021, 14:35

kgena_ua, приветствую
kgena_ua:clip, маленькиq скрипт для WSH
Спасибо, сам по себе скрипт действительно маленький и рабочий, однако попытки внедрить его элементы в мой большой не увенчались успехом, т.к. все похоже упирается в то,что
Код: Выделить всё
function on_item_focus_change() {
    g_metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();
    if (g_metadb) on_metadb_changed();
}
не является полноценной заменой этого
Код: Выделить всё
function on_item_focus_change() {
    if (g_metadb) {window.UnwatchMetadb();}
    if (fb.IsPlaying || fb.IsPaused) g_metadb = fb.GetNowPlaying();
    if (g_metadb)
    {
        on_metadb_changed();
        window.WatchMetadb(g_metadb);
    }
}
Если ничего не трогать в базовом скрипте , а поменять только эту функцию - начинает глючить
Базовый скрипт для WSH 1.5.6 (нет никаких настроек под "Stream") .... хотел загрузить его сюда, а он оказался такой "маленький", что не дают :smile:
Тогда здесь -
Спойлер
https://www.upload.ee/files/13499906/skins.rar.html
clip
Репутация: 0
С нами: 10 месяцев 7 дней

Сообщение #2900 kgena_ua » 25.09.2021, 18:21

clip,
1. Скрипт для старой версии, некоторые функции уже не используются, кое-что надо исправлять - менять, чтобы хотя-бы запустить его на последней версии WSH.
2. Скрипт отображает встроенные обложки. Зачем париться. Не проще воспользоваться моим скриптом "Get covers".
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 7 месяцев

Пред.След.

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