Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #861 AHAPXICT » 11.03.2016, 00:29

duzzy, seriousstas, приветствую!
duzzy, ты как раз и мои мысли изложил! Я даже цитировать не буду, тут и так понятно. Я уже вторую неделю воюю со скриптом, в процессе переделки постоянно вылазят подводные камни об которые расшибаешь лоб. По вопросу координат, полей и полос прокрутки с авто цветом - опишу ниже.
seriousstas, спасибо за оценку. Но для меня эта полоса прокрутки уже вторую неделю жизни не даёт и как раз из за большого размера шрифта. И скрипт лёгкий и всё понятно, но жизни не дают "коварные" связи( очень много переменных которые влияют друг на друга). Вот хотя бы взять цвет на полосе прокрутки, вроде бы в скрипте есть автоматическое назначение с переменными RGBA и вставить строку с добавлением(корректировкой) цвета простое дело, а не тут то было. Убираешь ограничения по цвету и пошло поехало, а пол скрипта переделывать из за двух строк как то не логично.
Давно хотел спросить. Это твоя "хотелка" была добавить в скрипт по двойному клику ЛКМ на картинке открывать программу для просмотра изображений по умолчанию? Хочу узнать для каких целей используешь, ну и потом по работе с ней(запуск из скрипта) вопрос задам.
kgena_ua, уже не знаю что делать... При моих размерах шрифта полоса прокрутки, если текст свёрнут вниз до упора, при смене трека уходит в креш. Уже по изменял параметры с 50 до 80, а воз и ныне там. Эта проблема присутствует на "коробочном" скрипте по умолчанию, если установить большие размеры шрифтов, по моему с 36. Не хочется сильно поднимать вверх, тогда уже вид совсем не тот получается.
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #862 seriousstas » 11.03.2016, 00:41

то твоя "хотелка" была добавить в скрипт по двойному клику ЛКМ на картинке открывать программу для просмотра изображений по умолчанию?
Вроде-бы Aum просил (я предлагал смену аспекта). В Марка варианте я ещё не определился , возможно ту-же смену аспекта по даблу сделаю (дам все инструменты есть - только вставляй) А этот скрипт ещё не исследовал пока, только тестировал (thumbs всю энегрию вытянул)
Если просмотрщик виндовый, дефолтный , то (после открытия ) там кнопка большая сразу слайд-шоу на весь экран запускает .. Я не пользуюсь )
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #863 AHAPXICT » 11.03.2016, 01:09

seriousstas, ну это такое дело, не важно чья "хотелка"))) Самое главное читаешь мои мысли! У меня тоже энергия закончилась :toothless: Вот как раз по поводу слайд -шоу у меня и вопрос. При смене трека слайд -шоу заканчивается, а как сделать REFRESH без перезапуска программы пока не понятно))) Да и если картинка отсутствует нужно поставить переменную чтобы ничего не запускалось(в моём варианте запуск из контекстного меню), а иначе скрипт уходит в креш. По дабл клик ЛКМ сделал смену артист/альбом

Добавлено спустя 9 минут 39 секунд:
По твоему совету ограничил картинки 500х500 и такие оказывается есть на сервере. Теперь картинку не нужно центрировать, да и на будущее планирую сделать сохранение из контекстного меню как это сделано в стандартном плагине БИО. И по возможности остановку поиска, но это не главное.
Save Image_Stop Search.png
Save Image_Stop Search.png (3.28 КБ) Просмотров: 1914
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #864 seriousstas » 11.03.2016, 01:41

при смене трека слайд -шоу заканчивается, а как сделать REFRESH без перезапуска программы пока не понятно
Пробовал этот фокус с ACDSee - аналогично , нужно другие "смотрелки" испытать ..
По твоему совету ограничил картинки 500х500
Я этот широкий "размерный ряд" в папках сервера - сразу заценил . Можно подобрать лучший для сборки размер .
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #865 AHAPXICT » 11.03.2016, 02:10

Я по умолчанию стараюсь в треки обложки альбомов 500Х500 зашивать. Теперь дело за малым...

Добавлено спустя 6 минут 26 секунд:
Как разберусь с текущими проблемами, поставлю выбор из контекстного меню размер обложек по умолчанию avatar170s и 500х500

Добавлено спустя 8 часов 5 минут:
AHAPXICT:kgena_ua, уже не знаю что делать... При моих размерах шрифта полоса прокрутки, если текст свёрнут вниз до упора, при смене трека уходит в креш. Уже по изменял параметры с 50 до 80, а воз и ныне там. Эта проблема присутствует на "коробочном" скрипте по умолчанию, если установить большие размеры шрифтов, по моему с 36. Не хочется сильно поднимать вверх, тогда уже вид совсем не тот получается.
Вопрос снят, проблема решена :smoke: Вот что значит поспать пару часов, за пятнадцать минут сделал, да ещё и не пришлось идти на компромисс. Всё получилось даже лучше чем ожидал.
Осталось решить проблему с крешем при включении из контекстного меню просмотрщик виндовс при отсутствии картинок. Пока не понимаю как обозначить отсутствующую картинку? Есть у кого нибудь мысли по этому поводу. И второй вопрос о возможности/невозможности реализации сценария беспрерывного (слайдшоу) показа картинок при смене трека?
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #866 AHAPXICT » 11.03.2016, 19:43

AHAPXICT:Осталось решить проблему с крешем при включении из контекстного меню просмотрщик виндовс при отсутствии картинок
Дятел :toothless: , к тому же ещё и невнимательный... Никаких проблем не было.
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #867 MC Web » 11.03.2016, 19:52

AHAPXICT, ну разошелся !!!

Хватит самокритикой заниматься ... :smile:

:hi:
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #868 AHAPXICT » 11.03.2016, 20:01

Скрипт готов, "кортит" сборку обновить, а пару вопросов есть))) Ты не занимался проблемой?
AHAPXICT:И второй вопрос о возможности/невозможности реализации сценария беспрерывного (слайдшоу) показа картинок при смене трека?
Или случайно не знаешь команду для WSH панели, аналог PSS WINDOWSIZE:360:504 ?

Добавлено спустя 4 минуты 27 секунд:
А вот что, совсем забыл! Я себе персональный склад плей листов организовал на ЕХ. Пока в процессе. У тебя позаимствовал Yello :beer:

Добавлено спустя 1 минуту 45 секунд:
У тебя скайп есть?
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #869 MC Web » 11.03.2016, 20:14

AHAPXICT, последнее время начинаю отсекать из сборки "все лишнее", не в ущерб функционалу, но влияющее на стабильность работы и "поедание ресурсов". У тебя смотрю аппетиты наоборот растут... :smile:

По скриптам лучше к kgena_ua.

AHAPXICT:У тебя скайп есть?

Микрофона нет, а языком глухонемых не владею. :smile:
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #870 AHAPXICT » 11.03.2016, 20:22

Ну не знаю... У меня фубар 2-6% потребляет. Ты что его на калькуляторе запускаешь?(шутка)
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #871 MC Web » 11.03.2016, 20:32

На "запасном" ноутбуке. Основной похоже помер.
При прослушивании радиостанций
Изображение
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #872 AHAPXICT » 11.03.2016, 20:43

У меня на моём мастодонте.
Спойлер
Изображение
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #873 MC Web » 11.03.2016, 20:57

В сборке отказался от плейлиста JSPlaylis, вернулся на NGP.
Заметил, что JSPlaylis оказывает отрицательное влияние на визуализации (Индикатор уровня и спектра, Бегущая строка) - подтормаживание.
MC Web
Репутация: 248
С нами: 10 лет 7 месяцев

Сообщение #874 seriousstas » 12.03.2016, 01:53

AHAPXICT
Есть у кого нибудь мысли по этому поводу. И второй вопрос о возможности/невозможности реализации сценария беспрерывного (слайдшоу) показа картинок при смене трека?
через FastStone Image Viewer 5.5 (есть вариант с регой и тихой установкой , хоть прога и бесплатна )
http://www.faststone.org/index.htm
Нужно время поставить от 5 сек для слайдов.
Сделал автозапуск при двойном клике , если интересно добавлю архив с инструкцией ...
Работает хорошо при смене трека (заснял на тел переход на другие фото + автозапуск шоу 156 эффектов) :
phpBB [media]
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #875 AHAPXICT » 12.03.2016, 11:37

seriousstas, ты извини что я втянул тебя в этот "маргарин". Я не искал просмотрщик который будет работать без перебоев, просто не люблю когда что то не работает должным образом. Я сначала хотел удалить эту опцию, но потом подумал и решил раз уж её кто то заказывал, а kgena_ua реализовал, то она для кого то представляет интерес. Вот собственно почему я поднял этот вопрос :oops:. А по всей видимости меня поняли не правильно, в том числе и ты :beer:.
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #876 kgena_ua » 12.03.2016, 13:35

AHAPXICT:При моих размерах шрифта полоса прокрутки, если текст свёрнут вниз до упора, при смене трека уходит в креш
AHAPXICT, привет,
"добился" вылета на строке
Код: Выделить всё
gr.FillSolidRect(ww - 4, b_y + scrollbar_y, 2, scrollbar_h, a_color);
попробуйте ( function get_b_text_array() полностью)
Код: Выделить всё
function get_b_text_array() {
    a_x = txt_x + t_margin;
    a_y = txt_y + t_margin;
   
    var strings_array = [];
    b_text_array = [];
   
    temp_bmp = gdi.CreateImage(1, 1);
    temp_gr = temp_bmp.GetGraphics();

    b_x = txt_x + t_margin;
    b_text_row_height = temp_gr.CalcTextHeight("text", b_font);
    b_y = a_y + temp_gr.CalcTextHeight("text", a_font) + b_text_row_height;

    var string_width = Math.max(ww - b_x - 10, 0);

    if (text) strings_array = temp_gr.EstimateLineWrap(text, b_font, string_width).toArray();

    for (var i = 0; i < strings_array.length; i += 2) {
        b_text_array.push(strings_array[i].replace(/^\s+|\s+$/g, ""));
    }

    b_text_rows = b_text_array.length;

    b_text_visable_height = Math.round(Math.max(0, wh - t_margin - b_y));
    b_text_visable_rows = Math.round(b_text_visable_height / b_text_row_height);

    temp_bmp.ReleaseGraphics(temp_gr);
    temp_bmp.Dispose();
    temp_gr = null;
    temp_bmp = null;

    if (b_text_visable_rows + s_text > b_text_rows && s_text > 0) {
        s_text = b_text_rows - b_text_visable_rows;
    };
   
    scrollbar_k = b_text_visable_height / b_text_rows;
    window.Repaint();
}

Добавлено спустя 12 минут 56 секунд:
AHAPXICT:По дабл клик ЛКМ сделал смену артист/альбом
Может:
- двойной клик ЛКМ - программу для просмотра изображений;
- одинарный клик ЛКМ - смена артист/альбом.
Или наоборот.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #877 seriousstas » 12.03.2016, 14:29

AHAPXICT
Я не искал просмотрщик который будет работать без перебоев
Я понял правильно , слайды ведь не предусмотрены и не заказывались (только открытие) - просто самому было интересно реализовать и не заняло много времени - спорт интерес :) . Для частного случая подойдет .
Перебрал штук 5 смотрелок - только вышеописанный справился + отличная замена дефолтному , с которым уже ничего не сделаешь .
В марковском также - простой запуск в просмотрщике , а с шоу :dance: куда интереснее .
Последний раз редактировалось seriousstas 12.03.2016, 14:42, всего редактировалось 2 раз(а).
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #878 kgena_ua » 12.03.2016, 14:31

image.jpg

Добавим еще одну переменную.......
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #879 AHAPXICT » 12.03.2016, 15:09

kgena_ua, seriousstas, приветствую!
Я сегодня что то не в форме)))
kgena_ua:"добился" вылета на строке
Точно, эта самая строка. Но я уже всё сам починил!))) Вы ведь не предусматривали применение очень больших шрифтов по размеру. А для моего варианта, открытия окна фактически на весь экран плеера, требовало применения супер большого шрифта для удобства чтения( с метров трёх от экрана к примеру). Я остановился на варианте, который вам присылал, от 23.02.16 + 9.03.16 в своей модификации. Собственно что я тут рассказываю? Лучше покажу что сделал))) Рекомендую использовать мой шрифт, так как под него вся сборка заточена Imprint MT Shadow+, да и без него не тот эффект получится :smile: При сворачивании текста в низ до упора остаётся название исполнителя, при сворачивании текста в правый нижний угол остаётся заглавная буква исполнителя(стильно и просто) Я пока вашу строку не добавлял, так как у меня там много переделано, а сейчас не в состоянии. Эта версия тоже работает без сбоев.
Код: Выделить всё
// ==PREPROCESSOR==
// @name "Biography Text && Picture. www.last.fm"
// @author "kgena_ua"
// @version "23022016-09032016"
// @feature "v1.4"
// @feature "watch-metadb"
// ==/PREPROCESSOR==

// NOTE: "Grab Focus"  It must be enabled: ON

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)); }
function getRed(color) {return ((color >> 16) & 0xff);};
function getGreen(color) {return ((color >> 8) & 0xff);};
function getBlue(color) {return (color & 0xff);};

var a_font = gdi.Font("Imprint MT Shadow+",48, 0);
var s_font = gdi.Font("Times New Roman",16, 1);
var b_font = gdi.Font("Imprint MT Shadow+",36, 0);
var ww,wh;

var on_mouse = false;

DT_LEFT = 0x00000000;
DT_RIGHT = 0x00000002;
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;
DT_WORDBREAK = 0x00000010;
DT_CALCRECT = 0x00000400;
DT_NOPREFIX = 0x00000800;

var bgcolor = RGB(19,30,38);
var a_color = RGB(180,132,7);
var b_color = RGB(160,160,160);
var transparent = 220;

//var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var doc = new ActiveXObject("htmlfile");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var WshShell = new ActiveXObject("WScript.Shell");
var script_path = fb.ProfilePath + "\\tmp_Biography\\download\\";
var vbs = "cscript //nologo \"" + script_path + "download.vbs\"";

var tmp_b_path = fb.ProfilePath + "\\tmp_Biography\\";
if(!fso.FolderExists(tmp_b_path)) {fso.CreateFolder(tmp_b_path)};
if(!fso.FolderExists(tmp_b_path + "\\download\\")) {fso.CreateFolder(tmp_b_path + "\\download\\")};
if(!fso.FileExists(tmp_b_path + "\\download\\" + "download.vbs")) {create_download_file()};
var nocover_path = fb.ProfilePath + "nocover.png";
var nocover = window.GetProperty("nocover image", false);

var last_fm_logo;
load_last_fm_logo();

var artist, old_artis, filename;

var g_img = null;
var p_margn = 0;
var files = [], selected = 0;
var limit = window.GetProperty("download limit",5);
var cycle = window.GetProperty("auto cycle (sec)", 60);
var fsize = window.GetProperty("Font Size", 0);
var psize = window.GetProperty("Picture Size", 0);
var txt_x = window.GetProperty("txt_x", 0);
var txt_y = window.GetProperty("txt_y", window.Height / 1.4);
var delta_x, delta_y;
var k_down = false;
var text_scroll = false;
var pic_scroll = false;

var scrollbar = window.GetProperty("scrollbar", true);
var sb_down = false;
var sb_scroll = false;
var scrollbar_k;
var posy = 0;

var t_margin = 16;
var artist_x, artist_y;
var b_x = 0, b_y = 0;
var text = "";
var s_text = 0;
var string_width;
var strings_array = [];
var b_text_rows = 0;
var b_text_row_height = 0;
var b_text_visable_rows = 0;
var b_text_visable_height = 0;
var b_text_array = [];

var abc_lang = new Array("", "ru/");
var abc = window.GetProperty("abc", 1);
var if_not_found = new Array(". . .", ". . .");
var select_p_a = window.GetProperty("pictures/albums", 0);
var select_p_a_old;
var p_a = new Array("images", "albums");

var selection_mode = window.GetProperty("selection mode", 0);
var metadb;
on_item_focus_change();

//Remove false string from file names
function clean_filename(filename) {
    return filename.replace(/[\/\:\*\?\"\<\>\|\s]/g,'_');
}

function on_paint(gr){   
   !window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, bgcolor);
    if (window.GetProperty("Font Size") == 0) var x_font = s_font;
    if (window.GetProperty("Font Size") == 1) var x_font = b_font;
    if(fsize > 1){x_font = b_font;}
    paint(gr);   

    if(set_cycle){   
        gr.FillSolidRect(0, 0, ww, wh, RGBA(getRed(bgcolor),getGreen(bgcolor),getBlue(bgcolor),transparent));   
        var txt_cycle = cycle == 0 ? "off" : cycle + " sec";   
        set_cycle && gr.GdiDrawText("AUTO CYCLE \n" + txt_cycle, b_font, a_color, 15, 25, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );   
    } else{   
        gr.FillSolidRect(txt_x, txt_y, ww - txt_x, wh - txt_y, RGBA(getRed(bgcolor),getGreen(bgcolor),getBlue(bgcolor),transparent));   
    }   

    gr.GdiDrawText(artist, a_font, RGB(10,21,29), artist_x - 6, artist_y + 1, ww - artist_x, wh, DT_NOPREFIX | DT_LEFT | DT_WORD_ELLIPSIS );   
    gr.GdiDrawText(artist, a_font, a_color, artist_x - 7, artist_y, ww - artist_x, wh, DT_NOPREFIX | DT_LEFT | DT_WORD_ELLIPSIS );

    for (var i = 0; i < b_text_visable_rows; i++) {
//        gr.GdiDrawText(b_text_array[i + s_text], x_font, RGB(10,21,29), b_x + 1, b_y + b_text_row_height * i + 2, ww, wh, DT_NOPREFIX | DT_LEFT );
        gr.GdiDrawText(b_text_array[i + s_text], x_font, b_color, b_x, b_y + b_text_row_height * i, ww, wh, DT_NOPREFIX | DT_LEFT );
    }

    scrollbar && draw_scrollbar(gr);
   
    gr.GdiDrawText("", b_font, b_color, 15, 0, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );
}

function paint(gr){
    g_img = gdi.Image(files[selected]);
    if (!g_img && nocover){
        try {
            g_img = gdi.Image(nocover_path);
        } catch(e) {};
    }
   
    if (g_img){
        var scale_w = (ww - p_margn * 2) / g_img.Width;
        var scale_h = (wh - p_margn * 2) / g_img.Height;
        var scale = Math.min(scale_w, scale_h);
       
        g_img = g_img.CreateRawBitmap();
        gr.GdiDrawBitmap(g_img, p_margn, p_margn, g_img.Width * scale, g_img.Height * scale, 0, 0, g_img.Width, g_img.Height);
    }
   
    logo_img = gdi.Image(tmp_b_path + "\\download\\" + "last_fm_logo.jpg");
    if (logo_img && files.length == 0 && !nocover){
        gr.DrawImage(logo_img, p_margn, p_margn, logo_img.Width * 0.8, logo_img.Height * 0.8, 0, 0, logo_img.Width, logo_img.Height, 0, 255);   
    }
}

function draw_scrollbar(gr){
    scrollbar_h = b_text_rows > b_text_visable_rows ? b_text_visable_height * (b_text_visable_rows / b_text_rows) + 10: 0;
    scrollbar_y = s_text > 0 ? s_text * scrollbar_k : 0;

//    gr.FillSolidRect(ww - 4, b_y + scrollbar_y, 2, scrollbar_h, b_color);
    gr.FillSolidRect(ww - 6, b_y, 6, wh*scrollbar_h, RGBA(63, 100, 127, 32));   
    gr.FillSolidRect(ww - 6, b_y + scrollbar_y, 6, scrollbar_h, RGBA(63, 100, 127, 150));
}


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() {
    switch (selection_mode) {
    case 0:
        metadb = fb.IsPlaying ? fb.GetNowPlaying() : fb.GetFocusItem();   
        break;   
    case 1:   
       metadb = fb.GetFocusItem();
        break;   
    }   
    if (metadb) on_metadb_changed();   
}   

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

function on_metadb_changed() {
    if (!metadb) return;   
    artist = Eval("%artist%");
    if (artist != old_artis || select_p_a != select_p_a_old){
        CollectGarbage();
        g_img = null;
        s_text = 0;
        text = "";
        get_b_text_array()       
        get_b_text();
        del_files_from_dir();
        files = [];
        selected = 0;
        get_pic();       
        old_artis = artist;
        select_p_a_old = select_p_a;
    }
}     

function get_pic(){
    if (window.GetProperty("Picture Size") == 0) var p_s = "500x500";   // "500x500" заменить на "34s", "64s", "174s" или "300x300"
    if (window.GetProperty("Picture Size") == 1) var p_s = "";
    if(psize > 1){p_s = "";}
    xmlhttp1 = new ActiveXObject("Microsoft.XMLHTTP");     
    var url1 = ("http://www.last.fm/music/" + encodeURIComponent(artist) + "/+" + p_a[select_p_a]);     
    xmlhttp1.open("GET", url1, true);     
    xmlhttp1.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");     
    xmlhttp1.send();     
    xmlhttp1.onreadystatechange = function () {     
        if (xmlhttp1.readyState == 4) {     
            if (xmlhttp1.status == 200) {     
                doc.open();     
              var div = doc.createElement("div");
              div.innerHTML = xmlhttp1.responsetext;
              var data = div.getElementsByTagName("img");
              var urls = [];
                for (i = 0; i < data.length; i++) {     
                    if (data[i].className == "image-list-image"){       
                        if (data[i].src.indexOf("http://img2-ak.lst.fm/i/u/avatar170s") == 0) urls.push(data[i].src.replace("avatar170s", p_s));
                    }       
                    if (data[i].className == "album-grid-album-art"){       
                        if (data[i].src.indexOf("http://img2-ak.lst.fm/i/u/300") == 0 && data[i].src.indexOf("c6f59c1e5e7240a4c0d427abd71f3dbb") < 0) urls.push(data[i].src.replace("300", ""));       
                    }       
                }     
                for (i = 0; i < Math.min(urls.length, limit); i++) {     
                    file = "\"" + tmp_b_path + clean_filename(artist) + "_"  + i + "_" + p_a[select_p_a] + ".jpg" + "\"";     
                    WshShell.Run(vbs + " " + urls[i] + " " + file, false);       
                }     
              doc.close();
            }       
            //get_b_text();     
        }     
    }     
}
function get_files_from_dir() {
    files = [];
    var e = new Enumerator( fso.GetFolder(tmp_b_path).Files );
    while ( !e.atEnd() ) {
        var name = e.item().Name;
        if (name.indexOf(clean_filename(artist)) == 0){
            files.push(tmp_b_path + name);
        }
        e.moveNext();
    }
}

/*function get_files_from_dir() {
    files = [];
    files = utils.Glob(tmp_b_path + artist + "*.*").toArray();
}
*/
function get_b_text(){
    xmlhttp2 = new ActiveXObject("Microsoft.XMLHTTP");
    var url2 = ("http://www.last.fm/" + abc_lang[abc] + "music/" + encodeURIComponent(artist) + "/+wiki");
    xmlhttp2.open("GET", url2, true);
    xmlhttp2.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    xmlhttp2.send();
    xmlhttp2.onreadystatechange = function () {
        if (xmlhttp2.readyState == 4) {
            if (xmlhttp2.status == 200) {
                doc.open();
                var div = doc.createElement("div");
                div.innerHTML = xmlhttp2.responsetext;
                var data = div.getElementsByTagName("div");
                for (i = 0; i < data.length; i++) {
                    if (data[i].className == "wiki-content") {
                        text = strip_tags(data[i].innerHTML);
                        break;
                    }
                }
                doc.close();
            }
            if (text == "") text = if_not_found[abc];
            get_b_text_array();
        }
    }
}

function strip_tags(t) {
    doc.open();
    var div = doc.createElement("div");
    div.innerHTML = t.replace(/<[Pp][^>]*>/g, "").replace(/<\/[Pp]>/g, "<br>").replace(/\n/g, "<br>");
    var text = div.innerText;
    doc.close();
    return text;
}

function get_b_text_array() {
    if (window.GetProperty("Font Size") == 0) var x_font = s_font;
    if (window.GetProperty("Font Size") == 1) var x_font = b_font;
    if(fsize > 1){x_font = b_font;}
    artist_x = txt_x + t_margin;
    artist_y = txt_y + t_margin/8;
    strings_array = [];
    b_text_array = [];
   
    temp_bmp = gdi.CreateImage(1, 1);
    temp_gr = temp_bmp.GetGraphics();

    b_x = txt_x + t_margin;
    b_y = txt_y + temp_gr.CalcTextHeight("text", a_font) + t_margin/4;

    b_text_row_height = temp_gr.CalcTextHeight("text", x_font)
    string_width = Math.max(ww - b_x - 10, 0);

    if (text) strings_array = temp_gr.EstimateLineWrap(text, x_font, string_width).toArray();

    for (var i = 0; i < strings_array.length; i += 2) {
        b_text_array.push(strings_array[i].replace(/^\s+|\s+$/g, ""));
    }

    b_text_rows = b_text_array.length;
    b_text_visable_rows = Math.round((wh - b_y - 10) / b_text_row_height);
    b_text_visable_height = Math.round(wh - b_y - 10);
   // b_text_height = b_text_array.length * b_text_row_height;

    temp_bmp.ReleaseGraphics(temp_gr);
    temp_bmp.Dispose();
    temp_gr = null;
    temp_bmp = null;

    if (b_text_visable_rows + s_text > b_text_rows && s_text > 0) {
        s_text = b_text_rows - b_text_visable_rows;
    };
   
    scrollbar_k = b_text_visable_height / b_text_rows;
    window.Repaint();
}

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

    MF_ENABLED = 0x00000000;   
    MF_GRAYED = 0x00000001;   
    MF_SEPARATOR = 0x00000800;   
     
    _menu.AppendMenuItem(MF_ENABLED, i++, "EN text");   
    _menu.AppendMenuItem(MF_ENABLED, i++, "RU text");   
    _menu.CheckMenuRadioItem(1, i, abc + 1);         
    _menu.EnableMenuItem(abc + 1, 1);     

    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, i++, "Small font")
    _menu.AppendMenuItem(MF_ENABLED, i++, "Big font")
    _menu.CheckMenuRadioItem(i - 2, i, fsize + 3);         
    _menu.EnableMenuItem(fsize + 3, 1); 

    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, i++, "Prefer now playing");   
    _menu.AppendMenuItem(MF_ENABLED, i++, "Follow selected track");   
    _menu.CheckMenuRadioItem(i - 2, i , selection_mode + 5);   
    _menu.EnableMenuItem(selection_mode + 5, 1);
       
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    _menu.AppendMenuItem(MF_ENABLED, i++, "Artist pictures");   
    _menu.AppendMenuItem(MF_ENABLED, i++, "Albums pictures");   
    _menu.CheckMenuRadioItem(i - 2, i , select_p_a + 7);   
    _menu.EnableMenuItem(select_p_a + 7, 1);

    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    var is_artist = artist ? MF_ENABLED : MF_GRAYED;   
    _menu.AppendMenuItem(is_artist, i++, "last.fm Artist");   
     
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, i++, "Small pictures")
    _menu.AppendMenuItem(MF_ENABLED, i++, "Big pictures")
    _menu.CheckMenuRadioItem(i - 2, i, psize + 10);         
    _menu.EnableMenuItem(psize + 10, 1);

//    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, 12, "Image Viewer");

//    if (ShiftDown) {   
        _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
        _menu.AppendMenuItem(MF_ENABLED, 19, "Reload");   
        _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
        _menu.AppendMenuItem(MF_ENABLED, 20, "Properties");   
        _menu.AppendMenuItem(MF_ENABLED, 30, "Configure ...");
//    }

    ret = _menu.TrackPopupMenu(x,y);

    switch (ret) {
    case 1:
        abc = 0;
        window.SetProperty("abc", abc);
        s_text = 0;
        text = "";
        get_b_text();
        break;
    case 2:
        abc = 1;
        window.SetProperty("abc", abc);
        s_text = 0;
        text = "";
        get_b_text();
        break;
    case 3:   
        fsize = 0;
        window.SetProperty("Font Size", fsize);   
        s_text = 0;
        text = "";
        get_b_text();
        break; 
    case 4:
        fsize = 1;
        window.SetProperty("Font Size", fsize);   
        s_text = 0;
        text = "";
        get_b_text(); 
        break; 
    case 5:
        selection_mode = 0;
        window.SetProperty("selection_mode", selection_mode);
        on_item_focus_change();
        break;
    case 6:
        selection_mode = 1;
        window.SetProperty("selection_mode", selection_mode);
        on_item_focus_change();
        break;
    case 7:
        select_p_a = 0;
        window.SetProperty("pictures/albums", select_p_a);
        del_files_from_dir();
        files = [];
        selected = 0;
        get_pic();
        //on_metadb_changed();
        break;
    case 8:
        select_p_a = 1;
        window.SetProperty("pictures/albums", select_p_a);
        del_files_from_dir();
        files = [];
        selected = 0;
        get_pic();
        //on_metadb_changed();
        break;
    case 9:
        WshShell.run("http://www.last.fm/" + abc_lang[abc] + "music/" + encodeURIComponent(artist));
        break;
    case 10:   
        psize = 0;
        window.SetProperty("Picture Size", psize);   
        p_s = "";
        del_files_from_dir();
        files = [];
        selected = 0;
        get_pic();
        break; 
    case 11:
        psize = 1;
        window.SetProperty("Picture Size", psize);   
        p_s = "";
        del_files_from_dir();
        files = [];
        selected = 0;
        get_pic();
        break;     
    case 12:
       if (files[selected] && pic_scroll) WshShell.run( '"' + files[selected] + '"' );
        break;
   
    case 19:
        window.Reload();
        break;
    case 20:
        window.ShowProperties();
        break;   
    case 30:
        window.ShowConfigure();   
        break;   
   }
    _menu.Dispose();   
    return true;   
}   

var timer = window.SetInterval(on_timer, 1000);
var step = 0;
var set_cycle = false;
var dis_timer, dis = 0;

function on_timer(id) {
    step =  set_cycle || cycle == 0 ? 0 : step + 1;
    if (files.length == 0) {get_files_from_dir(); window.Repaint();};
   
    if (cycle > 0 && step >= cycle){
        selected = selected >= files.length - 1 ? 0 : selected = selected + 1;
        window.Repaint();
        step = 0;
    }
}

function on_key_down(vkey) {
    if (vkey == 16){
        set_cycle = true;
        dis_set();
        window.Repaint();
    }
}

function dis_set(){
    dis = 0;
    dis_timer && window.ClearInterval(dis_timer);
    dis_timer = window.SetInterval(function() {
        if (set_cycle) {
            dis++;
            if(dis == 1) {
                set_cycle = false;
                window.ClearInterval(dis_timer);               
                window.Repaint();
            };
        }
    }, 1000 );
}

var delay = false;

function fdelay(){
    var delay_timer = window.SetTimeout(function() {
        delay = false;
        window.ClearTimeout(delay_timer);
    }, 200);
}

function del_files_from_dir() {
    var del_files = [];
    var e = new Enumerator( fso.GetFolder(tmp_b_path).Files );
    while ( !e.atEnd() ) {
        var name = e.item().Name;
        try {
            fso.deleteFile(tmp_b_path + name );
        } catch(e) {};
        e.moveNext();
    }
}

/*
function del_files_from_dir() {
    del_files = [];
    del_files = utils.Glob(tmp_b_path + "*.*").toArray();
   
    for (i in del_files) {
        try {
            fso.deleteFile(del_files[i]);
        } catch(e) {};
    }
}
*/

function load_last_fm_logo(){
    if(!fso.FileExists(tmp_b_path + "\\download\\" + "last_fm_logo.jpg")) {
        var url = "http://www.last.fm/static/images/logo_beta.png?eb6d3ca20e73"
        var file = "\"" + tmp_b_path + "\\download\\" + "last_fm_logo.jpg" + "\"";
        WshShell.Run(vbs + " " + url + " " + file, false);
        var url = "http://static-web.last.fm/static/images/favicon.702b239b6194.ico"
        var file = "\"" + tmp_b_path + "\\download\\" + "last_fm_ico.ico" + "\"";
        WshShell.Run(vbs + " " + url + " " + file, false);
    }
}

function create_download_file() {
    try {
        file = fso.CreateTextFile(tmp_b_path + "\\download\\" + "download.vbs" )
       
        var text =   
            "If (WScript.Arguments.Count <> 2) Then" + "\n\r" +   
            "   WScript.Quit" + "\n\r" +
            "End If" + "\n\r" + "\n\r" +   

            "url = WScript.Arguments(0)" + "\n\r" +   
            "file = WScript.Arguments(1)" + "\n\r"  + "\n\r" +   

            "Set objFSO = Createobject(" + '"Scripting.FileSystemObject"' + ")" + "\n\r" +   
            "If objFSO.Fileexists(file) Then" + "\n\r" +   
            "   Set objFSO = Nothing" + "\n\r" +
            "   WScript.Quit" + "\n\r" +
            "End If" + "\n\r" + "\n\r" +   

            "Set objXMLHTTP = CreateObject(" + '"MSXML2.XMLHTTP"' + ")" + "\n\r" +   
            "objXMLHTTP.open " + '"GET"' + ", url,false" + "\n\r" +   
            "objXMLHTTP.send()" + "\n\r" + "\n\r" +   

            "If objXMLHTTP.Status = 200 Then" + "\n\r" +   
            "   Set objADOStream = CreateObject(" + '"ADODB.Stream"' + ")" + "\n\r" +
            "   objADOStream.Open" + "\n\r" +
            "   objADOStream.Type = 1" + "\n\r" +
            "   objADOStream.Write objXMLHTTP.ResponseBody" + "\n\r" +
            "   objADOStream.Position = 0" + "\n\r" +
            "   objADOStream.SaveToFile file" + "\n\r" +
            "   objADOStream.Close" + "\n\r" +
            "   Set objADOStream = Nothing" + "\n\r" +
            "End If" + "\n\r" + "\n\r" +   

            "Set objFSO = Nothing" + "\n\r" +   
            "Set objXMLHTTP = Nothing"   
        ;

        file.WriteLine(text);
        file.Close();
    } catch(e) {};
}

function on_mouse_move(x, y) {
    window.SetCursor(32649);
    if (k_down){
        txt_x = x - delta_x ;
        txt_y = y - delta_y;

        txt_x = txt_x <= 0 ? 0 : txt_x >= ww - 65 ? ww - 65: txt_x;
        txt_y = txt_y <= 0 ? 0 : txt_y >= wh - 65 ? wh - 65: txt_y;
        //if (b_text_visable_rows + s_text > b_text_rows && s_text > 0){ s_text -= 1};
        get_b_text_array();
    }

    text_scroll = x >= txt_x && x < ww - 20 && y  >= txt_y ? true : false;
    sb_scroll =  x > ww - 20 && y  >= txt_y ? true : false;
    pic_scroll = !text_scroll && !sb_scroll ? true : false;

    if (sb_down && scrollbar){
        posy = y + delta_y;
        s_text = y + delta_y >= 0 ? y + delta_y <= (b_text_rows - b_text_visable_rows) * scrollbar_k ? Math.round(posy / scrollbar_k) : b_text_rows - b_text_visable_rows : 0;
        window.Repaint();
    }
}

function on_mouse_wheel(delta) {
    ShiftDown = utils.IsKeyPressed(0x10) ? true : false;
   
    if (!delay && pic_scroll && !ShiftDown){
        delay = true;
        fdelay();
        get_files_from_dir();
        if (delta < 0) {selected = selected <= 0 ? files.length - 1 : selected = selected - 1};
        if (delta > 0) {selected = selected >= files.length - 1 ? 0 : selected = selected + 1};

    }
    if (text_scroll && !ShiftDown){
        if (b_text_rows > b_text_visable_rows){
            if (delta < 0) {s_text = b_text_rows - s_text <= b_text_visable_rows ? b_text_rows - b_text_visable_rows : s_text += 1}
            if (delta > 0) {s_text = s_text <= 0 ? 0 : s_text -= 1}
        }
    }
   
    if (set_cycle) {
        if (delta < 0) {cycle = cycle <= 0 ? 0 : cycle - 5;};
        if (delta > 0) {cycle = cycle >= 60 ? 60 : cycle + 5;};
        window.SetProperty("auto cycle (sec)", cycle);
    }
    window.Repaint();
}

function on_mouse_lbtn_down(x,y){
    if (text_scroll){
        k_down = true;
        delta_x = x - txt_x;
        delta_y = y - txt_y;
    }
    if (sb_scroll){
        sb_down = true;
        posy = s_text * scrollbar_k;
        delta_y = posy - y;
    }
}

function on_mouse_lbtn_up(x,y){
    window.SetProperty("txt_x", txt_x);
    window.SetProperty("txt_y", txt_y);
    k_down = false;
    sb_down = false;
}

function on_mouse_lbtn_dblclk (x,y){
    if (text_scroll){
        abc = abc == 1 ? 0 : 1;
        window.SetProperty("abc", abc);
        s_text = 0;
        b_text_array = [];
        text = "";
        get_b_text();
    }
    if (files[selected] && pic_scroll){
        select_p_a = select_p_a == 1 ? 0 : 1;
        window.SetProperty("pictures/albums", select_p_a);
        del_files_from_dir();
        files = [];
        selected = 0;
        get_pic();
    }
   
}

function on_mouse_leave() {
    window.SetCursor(32512);
    window.Repaint();
}

function on_size(){
    ww = window.Width;   
    wh = window.Height;
   
    txt_x = window.GetProperty("txt_x");
    txt_y = window.GetProperty("txt_y");

    txt_x = txt_x >= ww - 65 && txt_x >= 0 ? ww - 65 : txt_x;
    txt_y = txt_y >= wh - 65 && txt_y >= 0 ? wh - 65 : txt_y;
   
   // if (b_text_visable_rows + s_text > b_text_rows && s_text > 0) {s_text -= 1};
    get_b_text_array();
}
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 4 месяца

Сообщение #880 kgena_ua » 12.03.2016, 15:28

AHAPXICT:команду для WSH панели, аналог PSS WINDOWSIZE:360:504 ?
AHAPXICT, нужно изменять размер окна ?
Что-то подобное
phpBB [media]
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Пред.След.

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