Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #641 No_mad » 08.02.2016, 16:48

kgena_ua - вот, чтоб не быть голословным моя DUI-WSH сборка (моя -это к слову сборка, а WSH - это в основном к вам) :smoke:
http://rghost.ru/6Hq9Zf7kQ
ЗЫ - доделаю, - выложу на сайт
===================
там в папке temes ещё более интересные темы, но и более требовательные к ресурсам
No_mad
Репутация: 2
С нами: 8 лет 3 месяца

Сообщение #642 seriousstas » 08.02.2016, 18:46

kgena_ua
А как там Марк сделал, можно ссылку на его ветку
https://hydrogenaud.io/index.php/topic,110516.msg915863.html#msg915863

Добавлено спустя 30 минут 53 секунды:
Тестирую на Rадио Relax(взял у Вас) и на {EX.UA} Rock, Blues, Rock & Roll (MC Web ). Пока никаких проблем. Если нет изображения или текста, то сразу иду на сайт (по отдельной кнопке) - если нет, то этого и нет на сайте.
Вчера вечером были проблемы, но если заходил на сайт - "ошибка...нет доступа к странице"
Я вызываю проблему за 5 секунд (сравнение марковский скрипт и Ваш ):
Изображение
Выбираю русский и клацаю сверху вниз ..

Да я бы и не обратил внимания , если-б не Aum , а duzzy подтвердил наличие оного ...
Сейчас закину вам сборку в личку .
Что интересно , если загрузка блокируется , а затем перейти в марковский (сменить панель)- там тоже затык .
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 2 месяца

Сообщение #643 AHAPXICT » 08.02.2016, 23:25

kgena_ua, спасибо. Пока не заработало, но это не к спеху. У меня есть супер идея, потом расскажу, а пока не буду отвлекать. :wink:
AHAPXICT M
Аватара
Откуда: Киев
Репутация: 252
С нами: 10 лет 5 месяцев

Сообщение #644 Aum » 08.02.2016, 23:38

kgena_ua, затык с картинками решен (предположительно была проблема в Eval), в последней версии все гуд.
Теперь вылезла проблема при двойном клике на картинку:
Код: Выделить всё
JScript Panel (Biography Text && Picture. www.last.fm): Ошибка выполнения JavaScript:

File: <main>
Line: 521, Col: 28
<source text only available at compile time>
У всех такое?
Aum M
Аватара
Репутация: 20
С нами: 14 лет 1 месяц

Сообщение #645 seriousstas » 09.02.2016, 00:22

kgena_ua
Aum

У всех такое?
нет такого
затык с картинками решен
Странно :
https://www.youtube.com/watch?v=MNYrKtPp0Gk&feature=youtu.be
Возможно не успевает сменить старые файлы на новые

Уже и от админа запускаю и версию фубара на последнюю сменил и сборку не свою испробовал
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 2 месяца

Сообщение #646 kgena_ua » 09.02.2016, 19:49

По работе скрипта. Вот как выглядит у меня. Не загрузилось только ACDC нет страницы images на сайте.
phpBB [media]

Aum, по двойному клику - не могу сказать пока, не встречал.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет

Сообщение #647 seriousstas » 09.02.2016, 21:03

Вот как выглядит у меня
Хорошо работает :)
Из сборки Rадио Relax.fpl , что бросал Вам личку пробовали ?
Я просто нажимаю 2-3 раза на одну и ту-же станцию - и начинается затык .
пробовал и эту :
No_mad » Вчера, 16:48
kgena_ua - вот, чтоб не быть голословным моя DUI-WSH сборка (моя -это к слову сборка, а WSH - это в основном к вам)
http://rghost.ru/6Hq9Zf7kQ
Вот duzzy сегодня ещё тестировал на чистом Фубаре:
http://pccar.ru/showpost.php?p=351129&postcount=1004
http://pccar.ru/showpost.php?p=351156&postcount=1006

Но,если я перед каждым кликом по станции жму стоп - то тоже работает хорошо
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 2 месяца

Сообщение #648 MC Web » 09.02.2016, 21:52

kgena_ua, спасибо!
Работает нормально, правда изменил кое что под себя, не всегда отображалось сообщение Ничего не найдено и т.п.
То, что не сохраняются настройки Авто-смены изображений - есть такое.

seriousstas, никаких "затыков" с Rадио Relax.fpl у меня нет. Есть несколько станций не работающих (в данный момент или вообще, не замечал), на них приостанавливается и переходит к следующей.

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

Сообщение #649 No_mad » 09.02.2016, 23:29

kgena_ua
Ещё одна хотелка по биографии, думаю не только моя:
- если название исполнителя "Unknown Artist" или "" и т.д. - картинку не запрашивать.
No_mad
Репутация: 2
С нами: 8 лет 3 месяца

Сообщение #650 seriousstas » 10.02.2016, 01:10

MC Web
Ты наверное пропустил обсуждение , да и после аварии на foobar2000.ru ,здесь за пару дней сообщения исчезли после того , как сервер "подняли" .
Радио работает отменно , не переключаются картинки после перехода на другие станции . Попробуй поклацай несколько штук (смени язык) и посмотри ,как
подгружает картинки(WSH Biography Text & Picture Llast.fm) ... Помогает только перезагрузка Фубара .
Видео проблемы есть в моём сообщении выше
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 2 месяца

Сообщение #651 Aum » 10.02.2016, 11:05

seriousstas:Попробуй поклацай несколько штук (смени язык) и посмотри ,как
подгружает картинки(WSH Biography Text & Picture Llast.fm) ... Помогает только перезагрузка Фубара
Была проблема, но после правки автором - в последней версии скрипта все наладилось (на 32 странице скрипт). Проверяйте. У меня заработало.
Ошибка при двойном клике на картинку была в windows 10 из-за нового просмотрщика фотографий (нормализовалась, когда установил его программой по умолчанию для *jpg).
Вылез еще момент, запустил плеер на работе с флешки: ругается и не видит путь к картинкам. Сначала ругался на строку
251: var e = new Enumerator( fso.GetFolder(tmp_b_path).Files );
путь не найден, т.к. при установке на флешку не создавал папку tmp_Biography. Активировал припрятанную строку:
if(!fso.FolderExists(tmp_b_path)) {fso.CreateFolder(tmp_b_path)};, кстати в финальный релиз скрипта может ее все же включить?
Теперь не грузит туда картинки. Проверьте, чем флешка ему не угодила?!
В остальном все работает чудесно, спасибо мастер :wink:
Aum M
Аватара
Репутация: 20
С нами: 14 лет 1 месяц

Сообщение #652 kgena_ua » 10.02.2016, 12:26

seriousstas, по Rадио Relax. Иногда подтормаживает при выборе нового трека (некоторых), даже если удалю скрипт из панели.
Бывает (опять без скрипта биографии) окно плеера подвиснет - станцию не нашел - перескочил на след + отпустило.

Теперь опять демонстрация.
Сборка 4Icar_13_4_MPS_BB
Плейлист {EX.UA} Rock, Blues, Rock & Roll от MC Web.
Буду передвигаться по исполнителям, возвращаясь к предыдущему, т.е. туда - сюда.
phpBB [media]

Видео не хотелось делать большим. А так, если нет текста (языка) или картинки, я сразу на сайт, то и там нет.

No_mad:"Unknown Artist" или "" и т.д. - картинку не запрашивать.
No_mad, я думаю в этом пока нет необходимости:
- может появится какая-нибудь "бяка" кроме Unknown, все случаи не опишеш;
- основная "нагрузка" идет при сохранении картинок, а не сам запрос. Для этого есть проверка (if (xmlhttp.status == 200)) т.е. если сервер не ответил "на данный вопрос", мы ничего и не делаем.

Добавлено спустя 1 час 10 минут:
MC Web:не сохраняются настройки Авто-смены изображений
MC Web, спасибо, я и забыл про это. Это не сложно - добавим.
MC Web:не всегда отображалось сообщение Ничего не найдено
Я знаю почему, осталось узнать как......
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет

Сообщение #653 MC Web » 10.02.2016, 13:56

kgena_ua, в последнем скрипта был заремлин один if_not_found, включил и заработало нормально.
Кажется так, проверить точно сейчас не могу...
MC Web
Репутация: 248
С нами: 10 лет 8 месяцев

Сообщение #654 No_mad » 10.02.2016, 14:20

kgena_ua:основная "нагрузка" идет при сохранении картинок
Я не с точки зрения нагрузки на комп, а с точки зрения нагрузки на зрителя - они иногда для треков с непрописанными или неправильными тегами такие жуткие картинки выводят (видимо с пиратством борются :) )
No_mad
Репутация: 2
С нами: 8 лет 3 месяца

Сообщение #655 duzzy » 10.02.2016, 16:32

kgena_ua
Привет ! :wink:
Записал как работают оба скрипта возможно будет полезно.(скрипты использовал, твой свежий и Марка)
Видос длинный 40 мин. гонял треки и инет-радио.(пытался отловить глюки с загрузкой)
В видео есть моменты когда твой скрипт переставал грузить картинки, приходилось рестартить фубар, и как ни странно скрипт Марка продолжал грузить картинки.
В основном проблемы были только с инет-радио.
Также заметил что Марковский скрипт грузит AC/DC, твой нет.
В самом начале видоса 1:05 в твоем скрипте функция Prefer Now Playing работает в режиме стоп(фубар еще не проигрывал, во время выбора ZZ Top).

Полноценного ступора с загрузкой поймать не получилось на новой версии твоего скрипта.(ступор/затык --- невозможность загрузки картинок вообще до последующего рестарта фубара как в твоем скрипте так и в скрипте Марка)
Видос не на трубе а на гугл-драйве так что мотать и просматривать проще.
Первая часть видоса треки с диска, вторая часть инет-радио.
Видос
duzzy
Репутация: 25
С нами: 8 лет 9 месяцев

Сообщение #656 seriousstas » 10.02.2016, 16:39

kgena_ua
Rock, Blues, Rock & Roll
Поиском не получилось найти ни здесь , ни на http://www.ex.ua/ ..
Где его можно скачать ?
Если картинка есть (как на Вашем видео) и выдержать интервал , то тоже можно повторить ,
но как только попадаю на станцию без картинок или без тегов или чуть быстрее переключать - следующие уже не загрузить ...
Только рестарт Фубара , как было ранее у Aum.
Пробовал уже на 3-х компах с разными ОС .
окно плеера подвиснет - станцию не нашел - перескочил на след + отпустило
У меня даже не подвисает ничего - комп быстрый , а просто перестаёт качать любые картинки ..
Как-будто плеер меня банит до рестарта .

Aum - да, конечно я использую именно последнюю версию с 32-й .

Очередное предположение - дело не в версии , а скорости инета и в пингах ...
duzzy
На 11 минуте видно , что плеер перестаёт закачивать .. у меня такой эффект через 2-5 переключение станций .
И далее только рестарт
Можно и на обычных треках повторить , если быстро переключать .

Добавлено спустя 7 минут 41 секунду:
Полноценного ступора с загрузкой поймать не получилось на новой версии твоего скрипта.(ступор/затык --- невозможность загрузки картинок вообще до последующего рестарта фубара как в твоем скрипте так и
Залипания плеера почти не встречал , а у Тебя да
начиная с 11 минуты Ты ещё 17 минут клацаешь по станциям , а далее рестарт на 28-й (точнее 28:10) и пошла загрузка ...
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 2 месяца

Сообщение #657 kgena_ua » 10.02.2016, 18:18

duzzy, Привет, спасибо.
seriousstas, плейлист {EX.UA} Rock, Blues, Rock & Roll:
{EX.UA} Rock, Blues, Rock & Roll.rar
(29.16 КБ) Скачиваний: 235


По биографии:
- время цикла сохраняется;
- переделал удаление файлов;
- разные изменения.
Код: Выделить всё
// ==PREPROCESSOR==
// @name "Biography Text && Picture. www.last.fm"
// @version "10022016"
// @feature "v1.4"
// @feature "watch-metadb"
// ==/PREPROCESSOR==

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("Arial",12, 1);
var b_font = gdi.Font("Arial",12, 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(30,30,30);
var a_color = RGB(220,220,220);
var b_color = RGB(255,255,230);
var transparent = 200;

var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
var doc = new ActiveXObject("htmlfile");
var fso = new ActiveXObject("Scripting.FileSystemObject");

var tmp_b_path = fb.ProfilePath + "\\tmp_Biography\\";
//if(!fso.FolderExists(tmp_b_path)) {fso.CreateFolder(tmp_b_path)};
var nocover_path = fb.ProfilePath + "nocover.png";

var g_img = null;
var text = "";
var artist, old_artis;
var files = [], selected = 0;

var txt_x = window.GetProperty("txt_x", window.Width / 2);
var txt_y = window.GetProperty("txt_y", window.Height / 2);

var abc_lang = new Array("", "ru/");
var abc = window.GetProperty("abc", 0);
var if_not_found = new Array(". . .", ". . ."); 

var artist_x;
var artist_y;
var b_x;
var b_y;
var t_margin = 15;
var string_width;
var b_text_row_height = 0;
var b_text_rows = 0;
var b_text_height = 0;

var s_text = 0;
var strings_array = [];
var b_text_array = [];
var delta_x, delta_y;
var k_down = false;
var text_scroll = false;

var limit = window.GetProperty("download_limit",5);
var p_margn = 10;

var selection_mode = window.GetProperty("selection_mode", 0);

var metadb;
on_item_focus_change();

var WshShell = new ActiveXObject("WScript.Shell");
var script_path = fb.ProfilePath + "\\tmp_Biography\\download\\";
var vbs = "cscript //nologo \"" + script_path + "download.vbs\"";    


function on_paint(gr){   
   !window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, bgcolor);

    paint(gr);   
       
    if(set_cycle){   
        gr.FillSolidRect(0, 0, ww, wh, RGBA(getRed(bgcolor),getGreen(bgcolor),getBlue(bgcolor),transparent));   
    } 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, a_color, artist_x, artist_y, ww - artist_x, wh, DT_LEFT | DT_WORD_ELLIPSIS );   

    for (var i = 0; i < b_text_height; i++) {   
        gr.GdiDrawText(b_text_array[i + s_text], b_font, b_color, b_x, b_y + b_text_row_height * i, ww, wh, DT_LEFT );
    } 

    var txt_cycle = cycle == 0 ? "off" : cycle + " sec";
    set_cycle && gr.GdiDrawText("auto cycle \n" + txt_cycle, b_font, b_color, 15, 15, ww, wh, DT_LEFT | DT_WORD_ELLIPSIS );

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

function on_mouse_wheel(delta) {
    ShiftDown = utils.IsKeyPressed(0x10) ? true : false;
   
    if (!delay && !text_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_height){   
            if (delta < 0) {s_text = b_text_rows - s_text <= b_text_height ? b_text_rows - b_text_height : s_text += 1}
            if (delta > 0) {s_text = s_text <= 0 ? 0 : s_text -= 1}
        }
    }
    if (ShiftDown) {
        set_cycle = true;
        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_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){
        CollectGarbage();
        g_img = null;
        files = [];
        del_files_from_dir();
        selected = 0;
        s_text = 0;
        text = "";
        get_b_text_array()       
        get_pic();
        old_artis = artist;
    }
    window.Repaint();
}

function get_pic(){
    //var url1 = ("http://www.last.fm/music/" + encodeURIComponent(artist) + "/+albums");
    var url1 = ("http://www.last.fm/music/" + encodeURIComponent(artist) + "/+images");              
    xmlhttp.open("GET", url1, true);         
    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");         
    xmlhttp.send();         
    xmlhttp.onreadystatechange = function () {         
        if (xmlhttp.readyState == 4) {         
            if (xmlhttp.status == 200) {         
                qqq= xmlhttp.status;    window.Repaint();                     
                doc.open();         
              var div = doc.createElement("div");   
              div.innerHTML = xmlhttp.responsetext;   
              var data = div.getElementsByTagName("img");   
              var urls = [];   
                        
                for (i = 0; i < data.length; i++) {         
                 if (data[i].src.indexOf("http://img2-ak.lst.fm/i/u/avatar170s") == 0) urls.push(data[i].src.replace("avatar170s", "")); //
                 //if (data[i].src.indexOf("http://img2-ak.lst.fm/i/u/300") == 0) urls.push(data[i].src.replace("300", "")); //
                         
                }         
                for (i = 1; i < Math.min(urls.length, limit) + 1; i++) {         
                    file = "\"" + tmp_b_path + artist + "_"  + i + ".jpg" + "\"";         
                    WshShell.Run(vbs + " " + urls[i] + " " + file, false);          
                }         
              doc.close();   
            }
            get_b_text();         
        }
    }         
}         

function get_p(url, i){
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
            Stream.Open;
            Stream.Type = 1;
            Stream.Write(xmlhttp.ResponseBody);
            Stream.Position = 0;
            try {
                Stream.SaveToFile(tmp_b_path + artist + "_" + i + ".jpg");
            } catch(e) {};
            Stream.Close;
        }
    }
}

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(artist) == 0){
            files.push(tmp_b_path + name);
        }
        e.moveNext();
    }
}

var delay = false;

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

function paint(gr){
    g_img = gdi.Image(files[selected]); 
    if (!g_img){
        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);
        gr.DrawImage(g_img, p_margn, p_margn, g_img.Width * scale, g_img.Height * scale, 0, 0, g_img.Width, g_img.Height);
    }
}

function on_mouse_move(x, y) {
    on_mouse = true;
    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 - 50 ? ww - 50: txt_x;
        txt_y = txt_y <= 0 ? 0 : txt_y > wh - 50 ? wh - 50: txt_y;
        get_b_text_array();
        window.Repaint();
    }

    if (x  >= txt_x && y  >= txt_y){
        text_scroll = true;
    } else {
        text_scroll = false;
    }
   
    get_b_text_array();
}

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

function on_mouse_lbtn_down(x,y){
    if (x  >= txt_x && y  >= txt_y){
        k_down = true;
        delta_x = x - txt_x;
        delta_y = y - txt_y;
    }
}

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

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 - 50 && txt_x > 0 ? ww - 50 : txt_x;
    txt_y = txt_y >= wh - 50 && txt_y > 0 ? wh - 50 : txt_y;
   
    get_b_text_array();
}

function get_b_text(){
   // if (artist == null) return;
    var url2 = ("http://www.last.fm/" + abc_lang[abc] + "music/" + encodeURIComponent(artist) + "/+wiki");
    xmlhttp.open("GET", url2, true);
    xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    xmlhttp.send();
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                doc.open();
                var div = doc.createElement("div");
                div.innerHTML = xmlhttp.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();
            window.Repaint();   
        }
    }
}

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() {
    artist_x = txt_x + t_margin;
    artist_y = txt_y + t_margin;
    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 * 2;

    b_text_row_height = temp_gr.CalcTextHeight("text", b_font)
    string_width = Math.max(ww - b_x - t_margin, 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_height = Math.ceil((wh - b_y - 20) / b_text_row_height);
   
    temp_bmp.ReleaseGraphics(temp_gr);
    temp_bmp.Dispose();
    temp_gr = null;
    temp_bmp = null;
}

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++, "Prefer now playing");   
    _menu.AppendMenuItem(MF_ENABLED, i++, "Follow selected track");   
    _menu.CheckMenuRadioItem(i - 2, i , selection_mode + 3);   
   _menu.EnableMenuItem(selection_mode + 3, 1); 
      
    ShiftDown = utils.IsKeyPressed(0x10) ? true : false;   
      
//    if (ShiftDown) {   
        _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
        _menu.AppendMenuItem(MF_ENABLED, 10, "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:
        selection_mode = 0;
        window.SetProperty("selection_mode", selection_mode);
        on_item_focus_change();
        break;
    case 4:
        selection_mode = 1;
        window.SetProperty("selection_mode", selection_mode);
        on_item_focus_change();
        break;
    case 10:
        window.Reload();
        break;
    case 20:
        window.ShowProperties();
        break;   
    case 30:
        window.ShowConfigure();   
        break;   
   }
    _menu.Dispose();   
    return true;   
}   

var cycle = window.GetProperty("auto cycle(sec)", 0);
var set_cycle = false;

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

function on_timer(id) {
    ShiftDown = utils.IsKeyPressed(0x10) ? true : false;
    step =  ShiftDown ? 0 : step + 1;
    if (files.length == 0) {get_files_from_dir()};
   
    if (cycle > 0 && step >= cycle && !ShiftDown){
        selected = selected >= files.length - 1 ? 0 : selected = selected + 1;
        window.Repaint();
        step = 0;
    }
   
    if (!ShiftDown) {
        if (set_cycle) dis--;  window.Repaint();
        if (dis <= 0){
            set_cycle = false;
            window.Repaint();
        }
    } else {
        dis = 2;
    }
}

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

function on_mouse_lbtn_dblclk (x,y){
    if ( files[selected] && !text_scroll) WshShell.run( '"' + files[selected] + '"' );
}

var del_files = [];
function del_files_from_dir() {
    del_files = [];
    var e = new Enumerator( fso.GetFolder(tmp_b_path).Files );
    while ( !e.atEnd() ) {
        var name = e.item().Name;
        try {
            //if (name.indexOf(artist) < 0)
            fso.deleteFile(tmp_b_path + name );
        } catch(e) {};
        e.moveNext();
    }
    window.Repaint();
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет

Сообщение #658 No_mad » 10.02.2016, 19:05

kgena_ua
Ух, щас потестю! Кстати, что я не так тут делаю?

Код: Выделить всё
function on_mouse_lbtn_dblclk (x,y){
    //if(x>... && y> //дблклк по "тексту"
        abc = abc >= 2 ? abc+1 : 0;
        window.SetProperty("abc", abc);
        text = "";
        get_b_text();
}

и как правильно реализовать?
No_mad
Репутация: 2
С нами: 8 лет 3 месяца

Сообщение #659 kgena_ua » 10.02.2016, 19:53

No_mad, переключать язык лев.кл. ?
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 11 лет

Сообщение #660 No_mad » 10.02.2016, 21:01

kgena_ua:переключать язык лев.кл. ?
можно, но через подменю для слепого муторно, хотелось бы не целясь в пункт меню просто кликнуть по тексту в любом месте сразу дблклк. А лучше конечно автоматом - начинаем с поиска русского текста, если его нет то повторить поиск англ. и снова встать в дефолтный русский для след. раза
No_mad
Репутация: 2
С нами: 8 лет 3 месяца

Пред.След.

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