Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #321 t-s » 07.04.2015, 17:18

iprad:Грубо - но думаю справедливо.

Да, конечно, справедливо :eek:
Я же не профи - и сразу об этом заявил :weirdface:
и попросил помощи у людей, которые работают с кодом помочь разобраться в 10 строчках кода - в результате через неделю спецы, владеющие WSH Panel Mod, JScript , VBScript промурыжив меня и зайдя в тупик сделали вывод, что я сам дурак и не должен в этой теме задавать такие сложные вопросы :clap:

Несколько лет назад на этом форуме на подобные вопросы отвечали за 5 мин и без понтов :fie:
Так что прошу прощения, что нарушил спокойный ритм этого болота :hi: :silenced:
t-s
Гость

Сообщение #322 iprad » 07.04.2015, 17:37

t-s:в результате через неделю спецы, владеющие WSH Panel Mod
не надо обобщать..., Задавать вопросы надо по существу и с точным объяснением (читай "техническим заданием"), с полным кодом.
t-s:Да и экзотическое объявление (т.к. у меня скорее ошибочное)
КОД: ВЫДЕЛИТЬ ВСЁ
var PlaybackPreviewMode = true; //("true"если режим включен, если нет-то "false"
P.S. Давайте возьмем тайм-а́ут до завтра
Это азы, а не экзотика!!!!
t-s:Несколько лет назад на этом форуме на подобные вопросы отвечали за 5 мин и без понтов
Я не собираюсь преподавать Вам основы программирования.
По-этому давайте закончим дискуссию на повышенных тонах. Вас никто ни в чём не упрекает. Если у Вас будет желание - за короткое время Вы станете таким-же "профи".
Последний раз редактировалось iprad 07.04.2015, 17:51, всего редактировалось 1 раз.
iprad M
Аватара
Репутация: 89
С нами: 11 лет

Сообщение #323 LUR » 07.04.2015, 17:43

t-s:Несколько лет назад на этом форуме на подобные вопросы отвечали за 5 мин и без понтов
Не выпендривайтесь, скажите спасибо и дело с концом. Тут вам не институт информационных технологий.
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Сообщение #324 iprad » 07.04.2015, 17:58

Честно говоря, мне очень не нравится появившаяся в последнее время тенденция: Вроде обсуждаем технические проблемы, а в итоге всё заканчивается конфликтом. Ну как я могу объяснить человеку его ошибку, если он даже не представляет с чем имеет дело? И он на это обижается почему-то... :fie:

Давайте иметь хоть минимальное представление о скриптах, прежде чем спрашивать в этой теме...
iprad M
Аватара
Репутация: 89
С нами: 11 лет

Сообщение #325 LUR » 07.04.2015, 18:12

Спойлер
iprad:не нравится появившаяся в последнее время тенденция: Вроде обсуждаем технические проблемы, а в итоге всё заканчивается конфликтом
Юзер больно ленивый пошел. К сожалению это таки тенденция считать, что их время важнее вашего.
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Сообщение #326 iprad » 07.04.2015, 18:17

LUR, может написать небольшую инструкцию по подготовке к изучению азов на собственном опыте? Насколько помню, сам задавал вопрос как в wsh panel mod нарисовать линию... :smile:
iprad M
Аватара
Репутация: 89
С нами: 11 лет

Сообщение #327 LUR » 07.04.2015, 18:55

iprad, не думаю, что подобная инструкция поможет "таким", иначе и смысла нет ее писать.

Добавлено спустя 1 минуту:
Спойлер
И прекращайте этот базар, мусор один в теме... Нормальным людям найти будет сложнее полезное.
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Сообщение #328 seriousstas » 09.04.2015, 05:32

kgena_ua :help:
Есть в сбоке от Макарыча кнопка, которая открывает-закрывает тулбар .
В процессе пользования в авто понял , что этот тулбар (доп рад кнопок) часто открыт .
Может есть способ , сделать такую-же кнопку на WSH , но с таймером ,например на 10 сек ? ,
для автозакрытия второго ряда кнопок .
Кнопка и панель для PSS :
Код: Выделить всё
//---toolbar
$if($isvisible_c(toolbar)
    ,
    $drawtext(',',$sub(%ww%,245),$sub(%hh%,85),80,80,%color0%,hcenter vcenter)
    $imagebutton($sub(%ww%,245),$sub(%hh%,85),80,80,%b0%,%b1%,PANELSHOW:toolbar:0;PANELSHOW:volumbar:0;REFRESH)
    ,
    $drawtext('.',$sub(%ww%,245),$sub(%hh%,85),80,80,%color0%,hcenter vcenter)
    $imagebutton($sub(%ww%,245),$sub(%hh%,85),80,80,%b0%,%b1%,PANELSHOW:toolbar:1;PANELSHOW:volumbar:1;REFRESH)
   
$movepanel_c(toolbar,0,$sub(%hh%,165),$sub(%ps_width%,0),80)
Благодарю заранее !
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #329 kgena_ua » 09.04.2015, 18:07

seriousstas, желательно указывать ссылку на сборку, на которую ссылаетесь. Решил воспользоваться сборкой foobar4Icar_5_JS.
там в папке themes есть кнопки n.png и h.png, которые и взял для отображения. Дополнительно нарисовал изображения, которые будут отображаться на кнопке (положить в папку themes)
toolbar.rar
(1.32 КБ) Скачиваний: 291

Получилось это:
Безымянный.png
Безымянный.png (2.1 КБ) Просмотров: 2273

В PSS нужно будет добавить WSH Panel с координатами $sub(%ww%,245),$sub(%hh%,85),80,80, куда и вставить скрипт.
В корне появится папка settings, где будут создаваться "файлы - переключатели". Состояние кнопки читаем в PSS так:
$puts(set_path,%ps_foobar2000_path%\settings\)
$puts(toolbar_btn,$right($findfile($get(set_path)toolbar_*),1))

Переменная toolbar_btn принимает состояния 1 иои 0 и т.д.
Код: Выделить всё
function RGB(r,g,b) { return (0xff000000|(r<<16)|(g<<8)|(b)); }
var font = gdi.Font("Arial",11,1);
var ww,wh;
var on_mouse = false;

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

var fso = new ActiveXObject("Scripting.FileSystemObject");
if(!fso.FolderExists( fb.ProfilePath + "settings")) {fso.CreateFolder( fb.ProfilePath + "settings" )};
var set_path = fb.ProfilePath + "\\settings\\";

var img_path = fb.ProfilePath + "\\themes\\";

var n_btn = gdi.Image(img_path + "n.png");
var h_btn = gdi.Image(img_path + "h.png");
var on_btn  = gdi.Image(img_path + "toolbar_1.png");
var off_btn = gdi.Image(img_path + "toolbar_0.png");
var is_toolbar = 0;

function on_paint(gr){
    gr.FillSolidRect (0, 0, ww, wh, RGB(40,30,20));

    gr.DrawImage( on_mouse? h_btn : n_btn, 0, 0, 80, 80, 0, 0, 80, 80, 0, 255);
    gr.DrawImage( is_toolbar == 0 ? off_btn : on_btn, 0, 0, 80, 80, 0, 0, 80, 80, 0, 255);
}

function on_mouse_lbtn_up (x, y){
    is_toolbar = is_toolbar == 1 ? 0 : 1;
    try { fso.deleteFile( set_path + "toolbar_" + "*" )
    } catch(e) {};
    fso.CreateTextFile( set_path + "toolbar_" + is_toolbar );

    RefreshPSS();
       
    if (is_toolbar == 0) { if (g_timer){window.ClearTimeout(g_timer)}; return};
    ch_state_btb();
}

var g_timer;

function ch_state_btb(){
    g_timer = window.SetTimeout(function() {
        if(fso.FileExists( set_path + "toolbar_1")) {
            fso.deleteFile( set_path + "toolbar_" + "*" );
            fso.CreateTextFile( set_path + "toolbar_0" )
            is_toolbar = 0;
            window.Repaint();
            RefreshPSS();
            window.ClearTimeout(g_timer);
        }   
    }, 10000);
}

function RefreshPSS() {
    if (fb.IsPlaying || fb.IsPaused) {   
        fb.RunMainMenuCommand("Playback/Play or Pause");
        fb.RunMainMenuCommand("Playback/Play or Pause");
    } else {
        fb.RunMainMenuCommand("Playback/Play");
        fb.RunMainMenuCommand("Playback/Stop");
    }
}

function on_mouse_move(x, y) {
    on_mouse = true;
    window.Repaint();
}   

function on_mouse_leave() {   
    on_mouse = false;
    window.Repaint();
}
Величина задержки в строке 54.


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

Сообщение #330 seriousstas » 10.04.2015, 03:45

kgena_ua
желательно указывать ссылку на сборку
ок
Кнопку создал (таймер работает) . Теперь по нажатию должна открываться панель кнопок с именем
"toolbar" - подскажите , как её привязать к toolbar_1 и закрытие к toolbar_0
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #331 kgena_ua » 10.04.2015, 11:22

seriousstas, кнопку не создавал (не получается вставить панель в сплиттер) , но так должно работать.
перед:
$movepanel_c(toolbar,10,$sub(%hh%,165),$sub(%ww%,10),80)
$movepanel_c(volumbar,250,$sub(%hh%,1),$sub(%ww%,500),80)
вставить:
$puts(set_path,%ps_foobar2000_path%\settings\)
$puts(toolbar_btn,$right($findfile($get(set_path)toolbar_*),1))
$showpanel_c(toolbar,$get(toolbar_btn))
$showpanel_c(volumbar,$ifequal(get(toolbar_btn),0,1,0))




Добавлено спустя 31 минуту 32 секунды:
Вопрос такой:
Есть функция window.GetColorCUI(). Существует-ли обратное действие, что-то типа window.SetColorCUI()
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #332 LUR » 10.04.2015, 13:58

kgena_ua:Существует-ли обратное действие, что-то типа window.SetColorCUI()
А зачем? Вы хотите программно менять настройки плеера? Как-то нелогично. Представьте себе, как пользователь удивится :smile: Так что думаю такое не предусмотрено. И кстати, в папке с плагином есть файлик interface.api же.
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Сообщение #333 kgena_ua » 10.04.2015, 14:15

LUR, сделал скрипт для плавного изменения цвета и яркости через "ползунки" для изменения цвета шрифта в ELP.
Хотел изменять настройки цвета шрифта и в библиотеках, где только через Preferences - Color and Font..
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #334 seriousstas » 10.04.2015, 15:53

kgena_ua
volumbar там внутри(за сплиттером) toolbar-а
дуамю этого $showpanel_c(volumbar,$ifequal(get(toolbar_btn),0,1,0))
не нужно тогда ,
ещё , получается , что фон панели появляется , когда она закрыта , а сама панель при старте открыта (посмотрите, что не так):
http://rghost.ru/8qgMdMprb
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #335 kgena_ua » 10.04.2015, 18:44

seriousstas:панель при старте открыта
Т.к.Foobar закрывается из положения включенного тулбара, давайте принудительно обнулять переменную при старте:
вставить перед function on_paint(gr){
Код: Выделить всё
if(fso.FileExists( set_path + "toolbar_1")) {
    fso.deleteFile( set_path + "toolbar_" + "*" );
    fso.CreateTextFile( set_path + "toolbar_0" )
    RefreshPSS();
}
получается , что фон панели появляется
это не фон, это как-то хитро работает $if($isvisible_c(toolbar),
Попробуйте заменить на $ifequal($get(toolbar_btn),1,
Да, вроде работает.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #336 seriousstas » 10.04.2015, 23:25

БОЛЬШОЕ Спасибо! !!!
Жаль - плюсов больше нельзя наставить .
До недавна и мечтать не мог про такую сборку ...
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #337 kgena_ua » 10.04.2015, 23:35

Спасибо seriousstas. Только хочу отметить для пользователей форума, что эта сборка от macarych , которую используют в автомагнитолах. А seriousstas ее поддерживает и развивает.
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #338 seriousstas » 11.04.2015, 01:13

да, всё начиналось недавно с просьбы к macarych немного увеличть кнопки в его старой сборке под тач (а сам умел только треки добавлять-удалять ) ...

В этой версии решил проблему с падение Фубара по TAB (открытие встроенного переключателя плейлистов в JSPlaylist by Br3tt )
после загрузки из библиотеки - так (кнопка радио):
эмуляция TAB для autohotkey, а фокус в окно JS командой ControlFocus .+ не нужно тыкать в лист каждый раз перед TAB .
Возможно Br3tt и профиксит со временем , но конфликт с библиотекой точно есть .
seriousstas
Откуда: Украина , Ивано-Франковск
Репутация: 110
С нами: 9 лет 1 месяц

Сообщение #339 kgena_ua » 20.04.2015, 20:40

Скрипт для выбора цвета. Может кому пригодится.
Безымянный.png
Безымянный.png (16.02 КБ) Просмотров: 1878

Код: Выделить всё
// ==PREPROCESSOR==
// @name "get R G B"
// @author "kgena_ua"
// ==/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)); }
var font = gdi.Font("Arial",10,1);
var ww,wh;

DT_LEFT = 0x00000000;
DT_RIGHT = 0x00000002;
DT_CENTER = 0x00000001;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
DT_WORD_ELLIPSIS = 0x00040000;

function on_paint(gr){
    gr.FillSolidRect (0, 0, ww, wh, RGB(30,30,30));

    gr.FillSolidRect (col, y5, width, 20, RGB(R,G,B));

    for (var i = 0; i < 4; i++) {
        var g_color = {
            0: drag == i + 1 || s_line == i + 1 ? RGB(240,60,60) : RGB(200,60,60),
            1: drag == i + 1 || s_line == i + 1 ? RGB(0,255,0)   : RGB(0,200,0),
            2: drag == i + 1 || s_line == i + 1 ? RGB(0,128,255) : RGB(0,107,215),
            3: drag == i + 1 || s_line == i + 1 ? RGB(180,180,180) : RGB(160,160,160)
        };
        gr.GdiDrawText(s_color[i], font, drag == i + 1 || s_line == i + 1 ? RGB(230,230,210) : RGB(170,170,170), tcol, y_line[i] - 4, 25, wh, DT_RIGHT);
        gr.FillSolidRect (col, y_line[i], width, h_line, drag == i + 1 || s_line == i + 1 ? RGB(75,75,75) : RGB(70,70,70));
        i <= 2 && gr.FillSolidRect (col, y_line[i], rgb_step * s_color[i], h_line, g_color[i]);
        i == 3 && gr.FillSolidRect (col, y_line[i], v_step * s_color[i], h_line, g_color[i]);
    }
    gr.GdiDrawText("H: " + H + "   S: " + S + "   V: " + s_color[3], font, RGB(200,200,200), col, wh - 20, ww - col, wh, DT_LEFT | DT_WORD_ELLIPSIS );
}

var R, G, B, H, S, V;

get_color();

function get_color(){
    R = window.GetProperty("R",0);
    G = window.GetProperty("G",0);
    B = window.GetProperty("B",0);
}

RGBtoHSV(R,G,B);

var tcol = 10;
var col = tcol + 30;
var h_line = 6;
var interval = 6;
var y1 = 10;
var y2 = y1 + h_line + interval;
var y3 = y2 + h_line + interval;
var y4 = y3 + h_line + interval;
var y5 = y4 + h_line + interval + 10;
var width, rgb_step, v_step;

function on_size(){
    ww = window.Width;   
    wh = window.Height;
    width = ww - col * 2;
    rgb_step = width / 255;
    v_step = width / 100;
}

var y_line = Array(y1,y2,y3,y4);
var s_color = Array(R,G,B,V);
var line = Array(1,2,3,4);

var drag = 0;
var s_line = 0;

function on_mouse_lbtn_down (x, y){
    drag = s_line;
    get_R_G_B(x);
    window.Repaint();
}

function on_mouse_lbtn_up (x, y){
    drag = 0;   
}

function on_mouse_move(x, y) {
    on_mouse = true;
    window.SetCursor(32649);   
    s_line = 0;
    for (i = 0; i < 4; i++) {
        if (y >= y_line[i] && y <= y_line[i] + h_line + interval * 0.7) drag == 0 ? s_line = line[i] : 0;
    }
    get_R_G_B(x);
    window.Repaint();
}      

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

function get_R_G_B(x) {
    if (drag <= 3) {s_color[drag - 1] = Math.max(Math.min(Math.round((x - col) / rgb_step),255),0);
        RGBtoHSV(s_color[0], s_color[1], s_color[2]);
        s_color[3] = V;
    }
    if (drag == 4) {s_color[drag - 1] = Math.max(Math.min(Math.round((x - col) / v_step),100),0);
        RGB_color = HSVtoRGB(H, S, s_color[3]);
        s_color[0] = getRed(RGB_color);
        s_color[1] = getGreen(RGB_color);
        s_color[2] = getBlue(RGB_color);
    }
    window.SetProperty("R",s_color[0]);
    window.SetProperty("G",s_color[1]);
    window.SetProperty("B",s_color[2]);
    get_color();
}

function getRed(color) {
   return ((color >> 16) & 0xff);
}

function getGreen(color) {
   return ((color >> 8) & 0xff);
}

function getBlue(color) {
   return (color & 0xff);
}

function RGBtoHSV(r, g, b) {
    var r = (r / 255);  
    var g = (g / 255);
    var b = (b / 255);

    var min = Math.min( r, g, b );    
    var max = Math.max( r, g, b );   
    var delta = max - min;             

    v = max;

    if (delta == 0) {
        h = 0;                           
        s = 0;
    } else {
        s = delta / max;

        delta_r = (((max - r) / 6) + (delta / 2)) / delta;
        delta_g = (((max - g) / 6) + (delta / 2)) / delta;
        delta_b = (((max - b) / 6) + (delta / 2)) / delta;

        if      (r == max) h = delta_b - delta_g;
        else if (g == max) h = (1 / 3) + delta_r - delta_b;
        else if (b == max) h = (2 / 3) + delta_g - delta_r;

        if ( h < 0 ) h += 1;
        if ( h > 1 ) h -= 1;
    }
    H = Math.round(h * 360);
    S = Math.round(s * 100);
    V = Math.round(v * 100);
}

function HSVtoRGB(h, s, v) {
    var h = h / 360;
    var s = s / 100;
    var v = v / 100;
   
    if (s == 0) {
        var r = v * 255;
        var g = v * 255;
        var b = v * 255;
    } else {
        h = h * 6;
        if ( h == 6 ) h = 0;

        var var_i = Math.floor( h );
        var var_1 = v * (1 - s);
        var var_2 = v * (1 - s * (h - var_i));
        var var_3 = v * (1 - s * (1 - (h - var_i)));

        if      (var_i == 0) {r = v;     g = var_3; b = var_1}
        else if (var_i == 1) {r = var_2; g = v;     b = var_1}
        else if (var_i == 2) {r = var_1; g = v;     b = var_3}
        else if (var_i == 3) {r = var_1; g = var_2; b = v}
        else if (var_i == 4) {r = var_3; g = var_1; b = v}
        else                 {r = v;     g = var_1; b = var_2};

        r = r * 255;          
        g = g * 255;
        b = b * 255;
    }
   return RGB( Math.round(r), Math.round(g), Math.round(b));
}
kgena_ua M
Аватара
Откуда: Украина, Днепр
Репутация: 504
С нами: 10 лет 11 месяцев

Сообщение #340 LUR » 21.04.2015, 02:21

kgena_ua, блин, уважаю, вижу, что человеку программировать интересно)
LUR M
Модератор
Аватара
Откуда: Минск
Репутация: 367
С нами: 11 лет 4 месяца

Пред.След.

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