Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #2281 seriousstas » 18.03.2018, 15:02

про новую бету плеера
Именно !
JS панель наоборот радует своей скоростью работы и расширенным функционалом ..
что-то в новой версии не то)
А где почитать про изменения по TF в бетке ?
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #2282 MC Web » 18.03.2018, 15:13

AHAPXICT:Так что если всё будет работать как полагается, то менять однозначно!
А зачем менять то, что и так хорошо работает на то, что может когда нибудь заработает? :fie:
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #2283 kgena_ua » 20.03.2018, 22:29

Что по био, пропали фризы. Если да, то у мня есть обновление. На гидрогене у пользователя были проблемы...
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #2284 seriousstas » 20.03.2018, 22:33

kgena_ua:Что по био, пропали фризы. Если да, то у мня есть обновление. На гидрогене у пользователя были проблемы...
Пропали .. Не знаю что делать с Вашим скриптом поиска . Посмотрите на предмет совместимости с v1.4 ?
Код: Выделить всё
// ==PREPROCESSOR==
// @name "SEARCH PANEL"
// ==/PREPROCESSOR==

//------------------------------------------SEARCH PANEL
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));
}

DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_SINGLELINE = 0x00000020;
DT_VCENTER = 0x00000004;

//===load background image===//
var wallpaper_image = window.GetProperty("*_Wallpaper image", ".\\wsh_br3tt\\jsplaylist\\images\\default.jpg");
var Path = fb.FoobarPath;
var g_image = gdi.Image(Path + "\\" + wallpaper_image);
var wallpaper_show = window.GetProperty("*_Wallpaper Show ON|OFF", true);
var wallpaper_alpha = window.GetProperty("*_Wallpaper Alpha", 150);
var font_name = window.GetProperty("_Font Name", "Segoe UI Semibold");
var font_size = window.GetProperty("_Font Size", 35);
var font_style = window.GetProperty("_Font Style", 0);
var font_choice_name = window.GetProperty("_Font Category Name", "Segoe UI");
var font_choice_size = window.GetProperty("_Font Category Size", 25);
var font_choice_style = window.GetProperty("_Font Category Style", 1);
var font = gdi.Font(font_name, font_size, font_style);
var font2 = gdi.Font(font_choice_name, font_choice_size, font_choice_style);
var font_item = gdi.Font("Segoe UI Symbol", font_size, 0);
var lbdn = false;
var lbup = false;
var qwerty = window.GetProperty("*_Keyboard Layout(qwerty)", true);
var item_show = window.GetProperty("*_Item Show", true);
var t_color = window.GetProperty("_Text Color", "RGB(220,20,60)");
var m_color = window.GetProperty("_Text Сategory Сhoice Color", "RGB(120,120,120)");
var sel_color = window.GetProperty("_Text Select Color", "RGB(250,250,250)");
var sel_bg_act_color = window.GetProperty("_Button Active Rect Color", "RGB(0,170,255)");
var sel_bg_color = window.GetProperty("_Button Active Color", "RGB(100,100,100)");
var btn_main_color = window.GetProperty("_Button Gradient Main Color", "RGBA(47,48,53,250)");
var btn_sec_color = window.GetProperty("_Button Gradient Sec Color", "RGBA(10,10,20,50)");
var item_color = window.GetProperty("*_Item Color", "RGB(160,160,170)");
var background_color = window.GetProperty("*_Background Color", "RGB(15,15,15)");
var btn_round_rect_color = window.GetProperty("_Button RoundRect Color", "RGBA(0,0,0,250)");
var overlay_color = window.GetProperty("*_Wallpaper Overlay Color", "RGBA(0,0,0,180)");
var overlay_color_on = window.GetProperty("*_Wallpaper Overlay Color ON|OFF", false);
var g_t_color = 0,
    g_m_color = 0,
    g_sel_color = 0,
    g_sel_bg_act_color = 0,
    g_sel_bg_color = 0,
    g_btn_main_color = 0,
    g_btn_sec_color = 0,
    g_item_color = 0,
    g_background_color = 0,
    g_btn_round_rect_color = 0,
    g_overlay_color = 0;

function get_colors() {
    if (t_color.length > 0) g_t_color = eval(t_color);
    if (m_color.length > 0) g_m_color = eval(m_color);
    if (sel_color.length > 0) g_sel_color = eval(sel_color);
    if (sel_bg_act_color.length > 0) g_sel_bg_act_color = eval(sel_bg_act_color);
    if (sel_bg_color.length > 0) g_sel_bg_color = eval(sel_bg_color);
    if (btn_main_color.length > 0) g_btn_main_color = eval(btn_main_color);
    if (btn_sec_color.length > 0) g_btn_sec_color = eval(btn_sec_color);
    if (item_color.length > 0) g_item_color = eval(item_color);
    if (background_color.length > 0) g_background_color = eval(background_color);
    if (btn_round_rect_color.length > 0) g_btn_round_rect_color = eval(btn_round_rect_color);
    if (overlay_color.length > 0) g_overlay_color = eval(overlay_color);

};

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

get_colors();

var t_row = -8,
    t_row1, t_row2, t_row3, t_row4, t_height, rect_w;
var string = "",
    search_query;
var tag_search = window.GetProperty("tag_search", 1);
var previous_pll = plman.ActivePlaylist;

var sort = "%album artist%|%date%|%album%|%discnumber%|%tracknumber%|%title%";
var on_mouse = false;
var ab, ab1, ab2, ab3;
var ab_I, ab_C, ab_F, ab_M;
var it, it1, it2, it3, itM;
var line1 = false,
    line2 = false,
    line3 = false,
    line4 = false;
var lang = 1;
var count = 0;

function on_size() {
    if (!window.Width || !window.Height) {
        return;
    };
    ww = window.Width;
    wh = window.Height;
}

function on_paint(gr) {

    gr.FillSolidRect(0, 0, ww, wh, g_background_color); //---bg
            if (wallpaper_show) {
        try {
            gr.DrawImage(g_image, 0, 0, ww, wh, 0, 0, g_image.width, g_image.height, 0, wallpaper_alpha);
            if (overlay_color_on) gr.FillSolidRect(0, 0, ww, wh, g_overlay_color); //--- overlay fillrect
        } catch (e) {};
} else {};
    t_height = gr.CalcTextheight("abc", font);
    t_row1 = t_row + t_height - 4;
    t_row2 = t_row1 + t_height + 1;
    t_row3 = t_row2 + t_height + 1;
    t_row4 = t_row3 + t_height + 1;

    if (qwerty) {
        ab_I = Array("Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M", " ", "", ""); //last to sym del and clear
        ab_C = Array("Й", "Ц", "У", "К", "Е", "Ё", "Н", "Г", "Ш", "Щ", "З", "Х", "Ъ", "Ф", "Ы", "В", "А", "П", "Р", "О", "Л", "Д", "Ж", "Э", "Я", "Ч", "С", "М", "И", "Т", "Ь", "Б", "Ю", " ", "", "");
    } else {
        ab_I = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", " ", "", "");
        ab_C = Array("А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", " ", "", "");
    };

    ab_F = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "/", "'", "#", ".", ",", "-", ":", "&", " ", "", "")
    ab_M = Array("all", "artist", "album", "title", "genre", "date", "rating");

    if (lang == 1) ab_M = ab_M.concat("Ru", "09");
    if (lang == 2) ab_M = ab_M.concat("En", "09");
    if (lang == 3) ab_M = ab_M.concat("En", "Ru");

    itM = ab_M.length;

    if (lang == 1) ab = ab_I;
    if (lang == 2) ab = ab_C;
    if (lang == 3) ab = ab_F;

    it = ab.length;

    it1 = Math.round(it / 3);
    it2 = Math.round(it / 3);
    it3 = Math.round(it / 3);
    ab1 = ab.splice(0, it1);
    ab2 = ab.splice(0, it2);
    ab3 = ab.splice(0, it3);

    gr.FillGradRect(0, 0, ww, t_height - 13, 90, g_btn_sec_color, g_btn_main_color); //---top rect
    gr.SetSmoothingMode(4);
    gr.DrawRoundRect(0, 0, ww - 1, t_height - 13, 3, 3, 1.0, g_btn_round_rect_color); //---round rect
    gr.SetSmoothingMode(0);

    gr.SetSmoothingMode(4);
    if (on_mouse && line1) gr.FillSolidRect(x_col1, t_row1, ww / it1, t_height, g_sel_bg_color);
    if (on_mouse && line2) gr.FillSolidRect(x_col2, t_row2, ww / it2, t_height, g_sel_bg_color);
    if (on_mouse && line3) gr.FillSolidRect(x_col3, t_row3, ww / it3, t_height, g_sel_bg_color); //
    if (on_mouse && line4) gr.FillSolidRect(x_col4, t_row4, ww / itM, t_height - 4, g_sel_bg_color);

    gr.GdiDrawText(string, font, search ? g_sel_color : g_t_color, 10, t_row, ww, t_height, DT_SINGLELINE | DT_VCENTER | 0x00000800);

    for (var i = 0; i < it1; i = i + 1) {
        color = x_color > ww / it1 * i && x_color < ww / it1 * (i + 1) && on_mouse && line1 ? g_sel_color : g_t_color;
        gr.FillGradRect(ww / it1 * i, t_row1, ww / it1 - 1, t_height, 90, g_btn_sec_color, g_btn_main_color); //butt emul
        gr.DrawRoundRect(ww / it1 * i, t_row1, ww / it1 - 1, t_height, 3, 3, 1.0, g_btn_round_rect_color); //---round rect keyboard
        gr.GdiDrawText(ab1[i] == " " ? "˻ ˼" : ab1[i], font, color, ww / it1 * i, t_row1, ww / it1, t_height, DT_CENTER | DT_SINGLELINE | DT_VCENTER | 0x00000800);

    }

    for (var i = 0; i < it2; i = i + 1) {
        color = x_color > ww / it2 * i && x_color < ww / it2 * (i + 1) && on_mouse && line2 ? g_sel_color : g_t_color;
        gr.FillGradRect(ww / it2 * i, t_row2, ww / it2 - 1, t_height, 90, g_btn_sec_color, g_btn_main_color); //butt emul
        gr.DrawRoundRect(ww / it2 * i, t_row2, ww / it2 - 1, t_height, 3, 3, 1.0, g_btn_round_rect_color); //---round rect keyboard
        gr.GdiDrawText(ab2[i] == " " ? "˻ ˼" : ab2[i], font, color, ww / it2 * i, t_row2, ww / it2, t_height, DT_CENTER | DT_SINGLELINE | DT_VCENTER | 0x00000800);

    }

    for (var i = 0; i < it3; i = i + 1) {
        color = x_color > ww / it3 * i && x_color < ww / it3 * (i + 1) && on_mouse && line3 ? g_sel_color : g_t_color;
        gr.FillGradRect(ww / it3 * i, t_row3, ww / it3 - 1, t_height, 90, g_btn_sec_color, g_btn_main_color); //butt emul
        gr.DrawRoundRect(ww / it3 * i, t_row3, ww / it3 - 1, t_height, 3, 3, 1.0, g_btn_round_rect_color); //---round rect keyboard
        gr.GdiDrawText(ab3[i] == " " ? "˻ ˼" : ab3[i], font, color, ww / it3 * i, t_row3, ww / it3, t_height, DT_CENTER | DT_SINGLELINE | DT_VCENTER | 0x00000800);

    }

    for (var i = 0; i < itM; i = i + 1) {
        color = (x_color > ww / itM * i && x_color < ww / itM * (i + 1) && on_mouse && line4) || tag_search == i + 1 ? g_sel_color : g_m_color;
        gr.FillGradRect(ww / itM * i, t_row4, ww / itM - 1, t_height - 4, 90, g_btn_sec_color, g_btn_main_color); //butt emul
        gr.DrawRoundRect(ww / itM * i, t_row4, ww / itM - 1, t_height - 4, 3, 3, 1.0, g_btn_round_rect_color); //---round rect keyboard       
        gr.GdiDrawText(ab_M[i], font2, color, ww / itM * i, t_row4, ww / itM, t_height, DT_CENTER | DT_SINGLELINE | DT_VCENTER | 0x00000800);

    }

    if (on_mouse && line1) gr.DrawRoundRect(x_col1, t_row1, ww / it1 - 1, t_height, 3, 3, 1.0, g_sel_bg_act_color);
    if (on_mouse && line2) gr.DrawRoundRect(x_col2, t_row2, ww / it2 - 1, t_height, 3, 3, 1.0, g_sel_bg_act_color);
    if (on_mouse && line3) gr.DrawRoundRect(x_col3, t_row3, ww / it3 - 1, t_height, 3, 3, 1.0, g_sel_bg_act_color);
    if (on_mouse && line4) gr.DrawRoundRect(x_col4, t_row4, ww / itM - 1, t_height - 4, 3, 3, 1.0, g_sel_bg_act_color);

    if (item_show) {
        if (count <= 0) {} else {
            gr.GdiDrawText("♪ " + count, font_item, g_item_color, 0, t_row, ww - 10, t_height, DT_RIGHT | DT_SINGLELINE | DT_VCENTER | 0x00000800);
        };
    };
    gr.SetSmoothingMode(0);
};

var timer;
var f = 0;

function on_mouse_lbtn_down(x, y) {
    lbdn = true;
    lbup = false;
    on_mouse = true;
    window.ClearInterval(timer);
    timer = window.SetInterval(function() {
        f = f + 1;
        window.Repaint();
        if (lbup || f == 3) {
            window.ClearInterval(timer);
        }
    }, 200);
}

var ch;
var x_col1, x_col2, x_col3, x_col4;
var x_color;

function on_mouse_lbtn_up(x, y) {
    lbup = true;

    line1 = y >= t_row1 && y <= t_row1 + t_height ? true : false;
    line2 = y >= t_row2 && y <= t_row2 + t_height ? true : false;
    line3 = y >= t_row3 && y <= t_row3 + t_height ? true : false;
    line4 = y >= t_row4 && y <= t_row4 + t_height ? true : false;

    if (!line1 && !line2 && !line3 && !line4) return;
    if (!search) previous_pll = plman.ActivePlaylist;
    library_view_idx();

    for (var i = 0; i < it1; i = i + 1) {
        if (x > ww / it1 * i && x < ww / it1 * (i + 1) && line1) {
            ch = ab1[i]
        }
    }
    for (var i = 0; i < it2; i = i + 1) {
        if (x > ww / it2 * i && x < ww / it2 * (i + 1) && line2) {
            ch = ab2[i]
        }
    }
    //
    for (var i = 0; i < it3; i = i + 1) {
        if (x > ww / it3 * i && x < ww / it3 * (i + 1) && line3) {
            ch = ab3[i]
        }
    }
    //

    for (var i = 0; i < itM; i = i + 1) {
        if (x > ww / itM * i && x < ww / itM * (i + 1) && line4) {
            if (i < itM - 2) {
                tag_search = i + 1;
                tag_search_change();
                return;
            } else {
                ch = ab_M[i]
            }
        }
    }

    if (ch == "En") {
        ch = "";
        lang = 1;
        return
    };
    if (ch == "Ru") {
        ch = "";
        lang = 2;
        return
    };
    if (ch == "09") {
        ch = "";
        lang = 3;
        return
    };
    if (ch == "") { //del sym
        ch = "";
        string = string.substring(0, string.length - 1)
    };
    if (ch == "") { //clear sym
        ch = "";
        string = ""
    };
    if (ch == null) {
        ch = "";
        string = ""
    };

    string = string + ch;
    string = string.charAt(0) == " " ? "" : string;
    string = string.replace("  ", " ");
    if (string.length > 0 || search) pll_search();

    window.ClearInterval(timer);
    window.Repaint();
}



var search = false;
var count;

function pll_search() {

    remove_pll("search");

    switch (tag_search) {
        case 1:
            search_query = "%artist% HAS " + string + " OR " + "%album% HAS " + string + " OR " + "%title% HAS " + string + " OR " + "%genre% HAS " + string + " OR " + "%date% HAS " + string;
            break;
        case 2:
            search_query = "%artist% HAS " + string;
            break;
        case 3:
            search_query = "%album% HAS " + string;
            break;
        case 4:
            search_query = "%title% HAS " + string;
            break;
        case 5:
            search_query = "%genre% HAS " + string;
            break;
        case 6:
            search_query = "%date% HAS " + string;
            break;
        case 7:
            search_query = "rating HAS " + string.charAt(0) + " OR " + "%rating% HAS " + string.charAt(0) + " OR " + "rating HAS " + string.charAt(1) + " OR " + "%rating% HAS " + string.charAt(1) + " OR " + "rating HAS " + string.charAt(2) + " OR " + "%rating% HAS " + string.charAt(2) + " OR " + "rating HAS " + string.charAt(3) + " OR " + "%rating% HAS " + string.charAt(3) + " OR " + "rating HAS " + string.charAt(4) + " OR " + "%rating% HAS " + string.charAt(4);
            break;
    }

    idx = plman.PlaylistCount;
    plman.CreateAutoPlaylist(idx, "search", search_query, sort, 0);
    count = plman.PlaylistItemCount(idx)

    if (count > 0) {
        plman.ActivePlaylist = idx;
        search = true
    } else {
        plman.ActivePlaylist = lib_v_idx;
        remove_pll("search");
        search = false;
    }
}

function remove_pll(pll_name) {
    search = false;
    remove_idx = plman.PlaylistCount;
    for (var i = 0; i < remove_idx; i++) {
        if (plman.GetPlaylistName(i) == pll_name) {
            plman.RemovePlaylist(i)
        }
    }
}

var lib_v_idx;

function library_view_idx() {
    idx = plman.PlaylistCount;
    for (var i = 0; i < idx; i++) {
        if (plman.GetPlaylistName(i) == "Library view") {
            lib_v_idx = i
        }
    }
}

function on_playback_starting(cmd, is_paused) {
    string = "";
    search = false;
    if (plman.GetPlaylistName(plman.ActivePlaylist) != "search") {
        remove_pll("search");
    }
}



function on_mouse_move(x, y) {


    if (lbdn) on_mouse = true;

    line1 = y >= t_row1 && y <= t_row1 + t_height ? true : false;
    line2 = y >= t_row2 && y <= t_row2 + t_height ? true : false;
    line3 = y >= t_row3 && y <= t_row3 + t_height ? true : false;
    line4 = y >= t_row4 && y <= t_row4 + t_height ? true : false;
    x_color = x;


    for (var i = 0; i < it1; i = i + 1) {
        if (x > ww / it1 * i) {
            x_col1 = ww / it1 * i
        }
    }

    for (var i = 0; i < it2; i = i + 1) {
        if (x > ww / it2 * i) {
            x_col2 = ww / it2 * i
        }
    }

    for (var i = 0; i < it3; i = i + 1) {
        if (x > ww / it3 * i) {
            x_col3 = ww / it3 * i
        }
    }

    for (var i = 0; i < itM; i = i + 1) {
        if (x > ww / itM * i) {
            x_col4 = ww / itM * i
        }
    }
}


function on_mouse_leave() {
    window.ClearInterval(timer);
    on_mouse = false;
    lbdn = false;
    lbup = false;

    window.Repaint();
    CollectGarbage();
}

function on_mouse_rbtn_up(x, y) {
    var _menu = window.CreatePopupMenu();
    var i = 1;

    _menu.AppendMenuItem(0x00000000, i++, "all");
    _menu.AppendMenuItem(0x00000000, i++, "artist");
    _menu.AppendMenuItem(0x00000000, i++, "album");
    _menu.AppendMenuItem(0x00000000, i++, "title");
    _menu.AppendMenuItem(0x00000000, i++, "genre");
    _menu.AppendMenuItem(0x00000000, i++, "date");
    _menu.AppendMenuItem(0x00000000, i++, "rating");

    _menu.CheckMenuRadioItem(1, i, tag_search);
    _menu.EnableMenuItem(tag_search, 1);

    _menu.AppendMenuItem(0x00000800, 0, 0);
    _menu.AppendMenuItem(0x00000000, 11, "Keyboard Layout(qwerty)");
    _menu.AppendMenuItem(0x00000000, 8, "Wallpaper Show ON|OFF");
    _menu.AppendMenuItem(0x00000000, 9, "Properties ...");
    _menu.AppendMenuItem(0x00000000, 10, "Configure ...");


    _menu.CheckMenuItem(8, wallpaper_show);
    _menu.CheckMenuItem(11, qwerty);

    ret = _menu.TrackPopupMenu(x, y);
    if (ret == 0) return;

    switch (ret) {
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
            tag_search = 7;
            tag_search_change();
            break;
        case 8:
            wallpaper_show = !wallpaper_show;
            window.SetProperty("*_Wallpaper Show ON|OFF", wallpaper_show);
            break;
        case 9:
            window.ShowProperties();
            break;
        case 10:
            window.ShowConfigure();
            break;
        case 11:
            qwerty = !qwerty
            window.SetProperty("*_Keyboard Layout(qwerty)", qwerty);
            break;
    }
    _menu.Dispose();
    return true;
}

function tag_search_change() {
    window.SetProperty("tag_search", tag_search);
    if (string.length > 0) pll_search();
}

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

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

function on_playback_starting() {
    window.Repaint();
};
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #2285 zeremy » 21.03.2018, 00:09

@seriousstas

add after line 308
string = string.replace(" ", " ");

string = string.toLowerCase();
zeremy
Репутация: 21
С нами: 8 лет 4 месяца

Сообщение #2286 seriousstas » 21.03.2018, 00:17

zeremy, thank you very much! :beer:
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #2287 zeremy » 21.03.2018, 00:20

foobar2000 change log - version 1.4

Playlist & Media Library search use a new text-matching algorithm similar to Unicode Asymmetric Search.

http://unicode.org/reports/tr10/#Asymmetric_Search
zeremy
Репутация: 21
С нами: 8 лет 4 месяца

Сообщение #2288 kgena_ua » 24.03.2018, 09:29

"Biography, Albums, Similar and title artist info. www.last.fm"
version "240322018"


- исправлена ошибка - не определялся один исполнитель;
- добавлен пункт в меню свойства: "tooltip delay (ms)".



Добавлено спустя 2 часа 31 минуту:
"Get Covers (Artwork) radio logos"
version "24032018"


Вроде получилось сравнивать изображения.
Реализован просмотр встроенных обложек для каждого файла.
Изменен порядок отображения изображений.

Безымянный.jpg


Get Covers (Artwork) radio logos 24032018.rar
(10.54 КБ) Скачиваний: 271
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #2289 MC Web » 24.03.2018, 12:30

kgena_ua, привет.
Нашел косяк в "Biography, Albums, Similar and title artist info. www.last.fm". При воспроизведении некоторых исполнителей, скорее всего если в имени присутствует точка (заметил на Co.Ro) - не работает прокрутка колесиком, авто-цикл в норме.
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #2290 kutuzof » 24.03.2018, 13:27

"Get Covers (Artwork) radio logos"
version "24032018"

При выборе режима "centre (movable image)", если попадается картинка вытянутая по вертикали панель падает.
Вложения
Screenshot_10.png
Screenshot_10.png (9.62 КБ) Просмотров: 3616
kutuzof M
Аватара
Откуда: г. Орёл, Россия
Репутация: 249
С нами: 7 лет 6 месяцев

Сообщение #2291 kgena_ua » 24.03.2018, 14:14

Ну не могу я чтобы что-то не пропустить. :smile:

по биографии:
стр.1600 (function on_mouse_wheel(delta))
заменить
Код: Выделить всё
        if (images.length < limit) get_img_from_dir(artist_folder_path(meta_artist), meta_artist);   
на
Код: Выделить всё
        if (images.length < limit) get_img_from_dir(artist_folder_path(clean(meta_artist)), meta_artist);   

по обложкам. Тут вообще случайно удалил целую строку. Выложу весь скрипт.
Get Covers (Artwork) radio logos 24032018.rar
(10.56 КБ) Скачиваний: 205


Забыл добавить. Поиск обложки на LastFM по умолчанию отключен. См.меню "Свойства"
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #2292 MC Web » 25.03.2018, 20:45

kgena_ua, привет.

Сидел разбирался с последней версией "Biography, Albums, Similar and title artist info. www.last.fm".
Ставлю скрипт настроенный под себя (с включенным Эффектом плавного перехода) - при переключении изображений колёсиком заметно притормаживание в работе индикаторов, ставлю оригинал - вроде не заметно.
И вроде как нашел виновника - default img (nocover.png - 500х500, 111 Кб), если он включен, то это и происходит:

Изображение
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #2293 AHAPXICT » 25.03.2018, 22:03

kgena_ua, Приветствую :beer: В последней версии есть небольшой глюк Get Covers (Artwork) radio logos 24032018
В квадратном окне в режиме centre (movable image) картинки перетаскиваются за кадр, при вертикальной прокрутке тоже
Спойлер
Изображение
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #2294 pois22ple » 26.03.2018, 16:51

kgena_ua,

Я так понимаю, что строка в вашем скрипте "Get Covers (Artwork) radio logos":
_menu.EnableMenuItem(set_priority + 20, 1); 
запрещает выполнение данного пункта меню и его затенение.
Если я пытаюсь выполнить скрипт под управлением foo_jscript_panel, то получаю следующую ошибку при нажатии правой кнопки мыши:
Error: JScript Panel v2.1.0.2 (Get Covers (Artwork) radio logos v24032018 by kgena_ua)
JavaScript runtime error:
Object doesn't support property or method 'EnableMenuItem'
File: <main>
Line: 1002, Col: 2
<source text only available at compile time>
После закомментирования всех таких строк, скрипт выполняется нормально, но конкретный пункт меню не затеняется и разрешено его выполнение.
Чем можно заменить вышеприведеннный вызов для foo_jscript_panel.
P.S. Я смотрел документацию по foo_uie_wsh_panel_mod и не нашел там описание вызова EnableMenuItem.
pois22ple
Репутация: 10
С нами: 17 лет 7 месяцев

Сообщение #2295 AHAPXICT » 26.03.2018, 17:34

pois22ple:Я смотрел документацию по foo_uie_wsh_panel_mod и не нашел там описание вызова EnableMenuItem.
Если вы запускаете скрипт на JScript Panel v2.1.0.2, то и смотрите документацию к этой панели(есть непосредственно в папке с компонентом или на офф
сайте)
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #2296 pois22ple » 26.03.2018, 17:44

AHAPXICT,
Отвечаю Вам, хотя спрашивал другого человека -
Скрипт "Get Covers (Artwork) radio logos" непосредственно предназначен для wsh_panel_mod, но в документации по wsh_panel_mod я не нашел описания EnableMenuItem, и не понимаю как это работает.
Если бы понял, то попытался бы слепить ему аналог для JScript Panel.
pois22ple
Репутация: 10
С нами: 17 лет 7 месяцев

Сообщение #2297 AHAPXICT » 26.03.2018, 18:05

v2.0.3
The IMenuObj EnableMenuItem method has been removed. Consider using flags like MF_GRAYED/MF_DISABLED on AppendMenuItem instead. Also, the optional bypos arguments for CheckMenuItem and CheckMenuRadioItem have both been removed. See the updated interfaces.txt for full details.
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #2298 pois22ple » 27.03.2018, 12:25

AHAPXICT,
Спасибо за наводку, теперь скрипт работает и под Jscript Panel. Всего то пришлось заменить:
Спойлер
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_STRING, 20, "Priority external");
    _menu.AppendMenuItem(MF_STRING, 21, "Priority embedded");
_menu.CheckMenuRadioItem(20, 21 , set_priority + 20);
_menu.EnableMenuItem(set_priority + 20, 1); 

_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 30, "Prefer now playing");
_menu.AppendMenuItem(MF_ENABLED, 31, "Follow selected track");
_menu.CheckMenuRadioItem(30, 31 , selection_mode + 30);
_menu.EnableMenuItem(selection_mode + 30, 1); 

_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 40, "Info");
_menu.CheckMenuItem(40, info);

_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 50, "Fade effect");
_menu.CheckMenuItem(50, fade_effect);

_firstgroup = window.CreatePopupMenu();
_firstgroup.AppendTo(_menu, MF_ENABLED, "Align : " + align_mode_a[align_mode]);
_firstgroup.AppendMenuItem(MF_ENABLED, 60, align_mode_a[0]);
_firstgroup.AppendMenuItem(MF_ENABLED, 61, align_mode_a[1]);
_firstgroup.AppendMenuItem(MF_ENABLED, 62, align_mode_a[2] + " (movable image)");
_firstgroup.AppendMenuItem(MF_ENABLED, 63, align_mode_a[3]);
_firstgroup.AppendMenuItem(MF_ENABLED, 64, align_mode_a[4]);
_firstgroup.CheckMenuRadioItem(60, 64, align_mode + 60);
_firstgroup.EnableMenuItem(align_mode + 60, 1);

_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
MF_STRING = covers[covernumber] && typeof covers[covernumber] != 'object' ? MF_ENABLED : MF_GRAYED;
_menu.AppendMenuItem(MF_STRING, 70, "Open folder");

if (t_type == "file"){
MF_STRING = covers[covernumber] && typeof covers[covernumber] != 'object' && t_type == "file" ? MF_ENABLED : MF_GRAYED;
_menu.AppendMenuItem(MF_STRING, 71, "Rename file");
_menu.AppendMenuItem(MF_STRING, 72, "Delete file");
_menu.AppendMenuItem(MF_STRING, 73, "Change file attributes");
}

if (t_type == "file" && search_album_art){
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 80, "Search album art (LastFM)");

_secondgroup = window.CreatePopupMenu();
_secondgroup.AppendTo(_menu,MF_ENABLED, "Download quality : " + quality[download_quality][0]);
_secondgroup.AppendMenuItem(MF_ENABLED, 90, quality[0][0]);
_secondgroup.AppendMenuItem(MF_ENABLED, 91, quality[1][0]);
_secondgroup.AppendMenuItem(MF_ENABLED, 92, quality[2][0]);
_secondgroup.CheckMenuRadioItem(90, 92, download_quality + 90);
_secondgroup.EnableMenuItem(download_quality + 90, 1);

на
Спойлер
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem((set_priority == 0) ? MF_GRAYED : MF_STRING, 20, "Priority external");
    _menu.AppendMenuItem((!set_priority == 0) ? MF_GRAYED : MF_STRING, 21, "Priority embedded");
_menu.CheckMenuRadioItem(20, 21 , set_priority + 20);

_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem((selection_mode == 1) ? MF_ENABLED : MF_GRAYED, 30, "Prefer now playing");
_menu.AppendMenuItem(!(selection_mode == 1) ? MF_ENABLED : MF_GRAYED, 31, "Follow selected track");
_menu.CheckMenuRadioItem(30, 31 , selection_mode + 30);

_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 40, "Info");
_menu.CheckMenuItem(40, info);

_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 50, "Fade effect");
_menu.CheckMenuItem(50, fade_effect);

_firstgroup = window.CreatePopupMenu();
_firstgroup.AppendTo(_menu, MF_ENABLED, "Align : " + align_mode_a[align_mode]);
switch (align_mode) {
case 0:
_firstgroup.AppendMenuItem(MF_GRAYED, 60, align_mode_a[0]);
_firstgroup.AppendMenuItem(MF_ENABLED, 61, align_mode_a[1]);
_firstgroup.AppendMenuItem(MF_ENABLED, 62, align_mode_a[2] + " (movable image)");
_firstgroup.AppendMenuItem(MF_ENABLED, 63, align_mode_a[3]);
_firstgroup.AppendMenuItem(MF_ENABLED, 64, align_mode_a[4]);
break;
case 1:
_firstgroup.AppendMenuItem(MF_ENABLED, 60, align_mode_a[0]);
_firstgroup.AppendMenuItem(MF_GRAYED, 61, align_mode_a[1]);
_firstgroup.AppendMenuItem(MF_ENABLED, 62, align_mode_a[2] + " (movable image)");
_firstgroup.AppendMenuItem(MF_ENABLED, 63, align_mode_a[3]);
_firstgroup.AppendMenuItem(MF_ENABLED, 64, align_mode_a[4]);
break;
case 2:
_firstgroup.AppendMenuItem(MF_ENABLED, 60, align_mode_a[0]);
_firstgroup.AppendMenuItem(MF_ENABLED, 61, align_mode_a[1]);
_firstgroup.AppendMenuItem(MF_GRAYED, 62, align_mode_a[2] + " (movable image)");
_firstgroup.AppendMenuItem(MF_ENABLED, 63, align_mode_a[3]);
_firstgroup.AppendMenuItem(MF_ENABLED, 64, align_mode_a[4]);
break;
case 3:
_firstgroup.AppendMenuItem(MF_ENABLED, 60, align_mode_a[0]);
_firstgroup.AppendMenuItem(MF_ENABLED, 61, align_mode_a[1]);
_firstgroup.AppendMenuItem(MF_ENABLED, 62, align_mode_a[2] + " (movable image)");
_firstgroup.AppendMenuItem(MF_GRAYED, 63, align_mode_a[3]);
_firstgroup.AppendMenuItem(MF_ENABLED, 64, align_mode_a[4]);
break;
case 4:
_firstgroup.AppendMenuItem(MF_ENABLED, 60, align_mode_a[0]);
_firstgroup.AppendMenuItem(MF_ENABLED, 61, align_mode_a[1]);
_firstgroup.AppendMenuItem(MF_ENABLED, 62, align_mode_a[2] + " (movable image)");
_firstgroup.AppendMenuItem(MF_ENABLED, 63, align_mode_a[3]);
_firstgroup.AppendMenuItem(MF_GRAYED, 64, align_mode_a[4]);
break;
}
_firstgroup.CheckMenuRadioItem(60, 64, align_mode + 60);

_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
MF_STRING = covers[covernumber] && typeof covers[covernumber] != 'object' ? MF_ENABLED : MF_GRAYED;
_menu.AppendMenuItem(MF_STRING, 70, "Open folder");

if (t_type == "file"){
MF_STRING = covers[covernumber] && typeof covers[covernumber] != 'object' && t_type == "file" ? MF_ENABLED : MF_GRAYED;
_menu.AppendMenuItem(MF_STRING, 71, "Rename file");
_menu.AppendMenuItem(MF_STRING, 72, "Delete file");
_menu.AppendMenuItem(MF_STRING, 73, "Change file attributes");
}

if (t_type == "file" && search_album_art){
_menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
_menu.AppendMenuItem(MF_ENABLED, 80, "Search album art (LastFM)");

_secondgroup = window.CreatePopupMenu();
_secondgroup.AppendTo(_menu,MF_ENABLED, "Download quality : " + quality[download_quality][0]);
switch (quality[download_quality][0]) {
case "Low":
_secondgroup.AppendMenuItem(MF_GRAYED, 90, quality[0][0]);
_secondgroup.AppendMenuItem(MF_ENABLED, 91, quality[1][0]);
_secondgroup.AppendMenuItem(MF_ENABLED, 92, quality[2][0]);
break;
case "Medium":
_secondgroup.AppendMenuItem(MF_ENABLED, 90, quality[0][0]);
_secondgroup.AppendMenuItem(MF_GRAYED, 91, quality[1][0]);
_secondgroup.AppendMenuItem(MF_ENABLED, 92, quality[2][0]);
break;
case "High":
_secondgroup.AppendMenuItem(MF_ENABLED, 90, quality[0][0]);
_secondgroup.AppendMenuItem(MF_ENABLED, 91, quality[1][0]);
_secondgroup.AppendMenuItem(MF_GRAYED, 92, quality[2][0]);
break;
}
_secondgroup.CheckMenuRadioItem(90, 92, download_quality + 90);
начиная с 998 строки.
Ну и естественно функцию get_color() исправить
Спойлер
function get_color(){
if (window.InstanceType == 0){
bgcolor = window.GetColourCUI(ColorTypeCUI.background);
a_color = window.GetColourCUI(ColorTypeCUI.text);
b_color = window.GetColourCUI(ColorTypeCUI.inactive_selection_text);
} else if (window.InstanceType == 1) {
bgcolor = window.GetColourDUI(ColorTypeDUI.background);
a_color = window.GetColourDUI(ColorTypeDUI.text);
b_color = window.GetColourDUI(ColorTypeDUI.highlight);
}
window.Repaint();
}
pois22ple
Репутация: 10
С нами: 17 лет 7 месяцев

Сообщение #2299 kgena_ua » 27.03.2018, 12:29

pois22ple:Если бы понял, то попытался бы слепить ему аналог для JScript Panel.
pois22ple, Аналог не получится.
Присоединяюсь к MC Web, который писал об удалении функций в JScript. Я не понимаю, зачем.
Приведу на примере части меню - "выравнивание изображения".
Когда метод EnableMenuItem был доступен, можно было одной строкой описать состояние пяти пунктов меню. Теперь-же нужно для каждой строки прописать условие (что по мне не удобно, не наглядно, не "удобночитаемо"):

_firstgroup.AppendTo(_menu, MF_ENABLED, "Align : " + align_mode_a[align_mode]);
_firstgroup.AppendMenuItem(align_mode == 0 ? MF_GRAYED : MF_ENABLED, 60, align_mode_a[0]);
_firstgroup.AppendMenuItem(align_mode == 1 ? MF_GRAYED : MF_ENABLED, 61, align_mode_a[1]);
_firstgroup.AppendMenuItem(align_mode == 2 ? MF_GRAYED : MF_ENABLED, 62, align_mode_a[2] + " (movable image)");
_firstgroup.AppendMenuItem(align_mode == 3 ? MF_GRAYED : MF_ENABLED, 63, align_mode_a[3]);
_firstgroup.AppendMenuItem(align_mode == 4 ? MF_GRAYED : MF_ENABLED, 64, align_mode_a[4]);

а вот для пунктов выбора приоритета обложек условие получится такое:

_menu.AppendMenuItem(set_priority == 0 ? MF_GRAYED : (t_type == "file" ? MF_ENABLED : MF_GRAYED), 20, "Priority external");
_menu.AppendMenuItem(set_priority == 1 ? MF_GRAYED : (t_type == "file" ? MF_ENABLED : MF_GRAYED), 21, "Priority embedded");
_menu.CheckMenuRadioItem(20, 21 , set_priority + 20);
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #2300 seriousstas » 27.03.2018, 22:35

kgena_ua
Кто-то писал, что здесь это инфо малорезультативно ..
Марк часто прислушивается - продублируйте на Гидрогене .
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Пред.След.

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