Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #2001 musikomaniak » 12.11.2017, 12:25

Thank you MC Web.
musikomaniak F
Бывалый
Аватара
Откуда: Paris (France)
Репутация: 1
С нами: 7 месяцев 4 дня

Сообщение #2002 kgena_ua » 12.11.2017, 18:00

Rating & File attributes (JScript Panel)
version "12112017"

Надо тестировать.
1.png

Код: Выделить всё
// ==PREPROCESSOR==
// @name "Rating & File attributes (JScript Panel)"
// @author "kgena_ua"
// @version "12112017"
// @feature "v1.4"
// @feature "watch-metadb"
// ==/PREPROCESSOR==

// foo_playcount.dll required

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);}

function RGBA_color(c) {
    return RGBA(getRed(c), getGreen(c), getBlue(c), b_hover_alpha);
}

var font_name = window.GetProperty(" text: font name", "Arial");
var font_size = window.GetProperty(" text: font size", 10);
var font_style = window.GetProperty(" text: font style", 0);

var font;
get_font();

function get_font(){
    font = gdi.Font(font_name, font_size, font_style);


var ww, wh;

var fso = new ActiveXObject("Scripting.FileSystemObject");

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

MF_ENABLED = 0x00000000;   
MF_GRAYED = 0x00000001;
MF_SEPARATOR = 0x00000800;

IDC_HAND = 32649;
IDC_ARROW = 32512;

ColorTypeCUI = {
    text: 0,
    selection_text: 1,
    inactive_selection_text: 2,
    background: 3,
    selection_background: 4,
    inactive_selection_background: 5,
    active_item_frame: 6
}

ColorTypeDUI = {
   text: 0,
   background: 1,
   highlight: 2,
   selection: 3
}

function get_color(){   
    if (window.InstanceType == 0){
        bgcolor = window.GetColorCUI(ColorTypeCUI.background);
        color1 = window.GetColorCUI(ColorTypeCUI.text);
        color2 = window.GetColorCUI(ColorTypeCUI.selection_text);
        color_error = RGB(255,100,0);
    } else if (window.InstanceType == 1) {
        bgcolor = window.GetColorDUI(ColorTypeDUI.background);
        color1 = window.GetColorDUI(ColorTypeDUI.text);
        color2 = window.GetColorDUI(ColorTypeDUI.highlight);
        color_error = RGB(255,100,0);
    }
    window.Repaint();
}

get_color();

function on_colors_changed(){
    get_color();
}

String.prototype.repeat = function(n) {
    return new Array(n + 1).join(this);
}

window.SetProperty(" - user", "");
if (window.GetProperty(" - user") != "" ) window.SetProperty(" - user", "");
window.SetProperty("-".repeat(50), "");
if (window.GetProperty("-".repeat(50)) != "" ) window.SetProperty("-".repeat(50), "");

var rating = 0, TAGrating, DBrating, nrating = 0;
var rating_mode = window.GetProperty("rating_mode", 0);
var set_rating_5 = window.GetProperty("set rating 5", false);

var x_text = window.GetProperty(" text: x", 0);
var y_text = window.GetProperty(" text: y", 0);
var text = window.GetProperty(" text", true);

var x_star = window.GetProperty(" star: x (0 - HCENTER)", 0);
var y_star = window.GetProperty(" star: y (0 - VCENTER)", 0);
var x_s, y_s;
var star_size = window.GetProperty(" star: size", 20);
var offset = window.GetProperty(" star: offset (percent of star size)", 20) / 100 * star_size;
var shadow = window.GetProperty(" shadow", true);
var fade_effect = window.GetProperty("fade effect", true);
var no_rating_transparent  = window.GetProperty(" no rating img transparent (0-255)", 120);

var file, file_attr, readwrite;

var lbtn_down = false;
var on_mouse = false;

var tooltip = window.GetProperty(" tooltip", true);
var tooltip_on = false;
var tooltip_text;
var tooltip_timer;

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

function on_paint(gr){
   !window.IsTransparent && gr.FillSolidRect(0, 0, ww, wh, bgcolor);
   
    x_s = x_star > 0 ? x_star + star_size / 2: (ww - (star_size + offset) * 4) / 2;
    y_s = y_star > 0 ? y_star + star_size / 2 : wh / 2;

    if (!lbtn_down) r_color = fb.IsPlaying ? color2 : color1;
    if (lbtn_down) r_color = readwrite ? fb.IsPlaying ? color2 : color1 : color_error;

    for (var i = 0; i < 5; i++) {   
        x_d = x_s + (i * (star_size + offset));
        !tooltip_on && star(gr, x_d, y_s, star_size, true, 0, color1, false, bgcolor, no_rating_transparent);
        !tooltip_on && star(gr, x_d, y_s, star_size, true, 0, r_color, shadow, bgcolor, star_alpha[i]);
    }

    h_t = gr.CalcTextHeight("000", font);
    w_t = gr.CalcTextWidth("000", font);
   
    y_t = y_text > 0 ? y_text : y_s - h_t * 0.5;
    x_t = x_text > 0 ? x_text : x_s - star_size / 2 - w_t;

    text && gr.DrawString( rating_mode == 0 ? "db" : "tag" , font, RGBA_color(color1), x_t, y_t, ww, wh);

    tooltip_on && draw_tooltip(gr);   

    gr.GdiDrawText( "", font, RGB(255,255,200), 20, 10, ww, wh );
}

function getNRating(posx) {
    nrating = Math.ceil(( posx + star_size / 2 - x_s ) / (star_size + offset ));
    if (nrating > 5) nrating = 5;
    if (nrating < 0) nrating = 0;
    if (nrating != 0) nrating = set_rating_5 ? 5 : nrating;
}

function getRating(){
  if ( count > 1 ) {
        TAGrating = 0;
        DBrating = 0;
        for (var i = 0; i < count; i++) {
            item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);
            DBrating += parseInt(fb.TitleFormat("$if2(%rating%, 0)").EvalWithMetadb(item));
            TAGrating += parseInt(fb.TitleFormat("$if2($meta(rating), 0)").EvalWithMetadb(item));
        }
        rating = rating_mode == 0 ? DBrating : TAGrating;
        rating = Math.round(rating / count);
    } else {
        DBrating = fb.TitleFormat("$if2(%rating%,0)").EvalWithMetadb(metadb);
        TAGrating = fb.TitleFormat("$if2($meta(rating),0)").EvalWithMetadb(metadb);
        rating =  rating_mode == 0 ? DBrating : TAGrating;
    }
}

function setRating(){
   if ((nrating != rating) && metadb) {   
        if (rating_mode == 0) {
            if (count > 1) {
                for (var i = 0; i < count; i++) {
                    item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);
                    fb.RunContextCommandWithMetadb("Playback Statistics/Rating/" + (nrating == 0 ? "<not set>" : nrating), item);
                }
            } else{
                fb.RunContextCommandWithMetadb("Playback Statistics/Rating/" + (nrating == 0 ? "<not set>" : nrating), metadb);
            }
            rating = nrating;
        }
       
        if (rating_mode == 1) {
            if (count > 1) {
                for (var i = 0; i < count; i++) {
                    item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);
                    item_path = fb.Titleformat("%path%").EvalWithMetadb(item);// 

                    try {      
                        file = fso.GetFile(item_path);   
                        var file_attr = parseInt(file.Attributes);      
                    } catch(e) {};   

                    var item_rw = file_attr == 32 ? true : false;

                    if (item_rw) {
                        var handle = item;
                        var handles = fb.CreateHandleList();
                        handles.Add(handle);
                        handles.UpdateFileInfoFromJSON(JSON.stringify({ "Rating" : nrating == 0 ? "" : nrating }));
                        handles.Dispose();
                        rating = nrating
                    }
                }
             } else {
                if (readwrite){
                    var handle = metadb;
                    var handles = fb.CreateHandleList();
                    handles.Add(handle);
                    handles.UpdateFileInfoFromJSON(JSON.stringify({ "Rating" : nrating == 0 ? "" : nrating }));
                    handles.Dispose();
                    rating = nrating                   
                }               
            }
        }
    }
    if (!readwrite && rating_mode == 1) {
        tooltip && info_tooltip();
    }
}

function on_mouse_lbtn_up(x,y){
    lbtn_down = false;
    setRating();
    check_star_state();
}

function on_mouse_lbtn_down(x,y) {
    lbtn_down = true;
    tooltip && clear_tooltip_timer();
    getNRating(x);
    check_star_state();
    window.Repaint();
}

function on_mouse_mbtn_up(){
    nrating = 0;
    setRating();
}

function on_mouse_move(x, y) {
    on_mouse = true;
    window.SetCursor(IDC_HAND);   
   
    if (lbtn_down){
        getNRating(x);
    }

    button_change_state();         
    check_star_state();          
    window.Repaint();
}   

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

function on_mouse_wheel(delta) {
    tooltip && clear_tooltip_timer();
    if (delta > 0) {rating_mode = 0};
    if (delta < 0) {rating_mode = 1};
    window.SetProperty("rating_mode", rating_mode);
    on_item_focus_change();
    window.Repaint();
}

function on_playlist_switch() {
    on_item_focus_change();
}

function on_playback_new_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 on_metadb_changed() {
    count = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Count;
    if (metadb) {
        rating_mode = window.GetProperty("rating_mode") == 0 ? 0 : 1; 
        getRating();
        check_star_state();
        get_file_attr();
    }
    window.Repaint();
}

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

function on_mouse_rbtn_up (x, y){   
    var _menu = window.CreatePopupMenu();
   
    _menu.AppendMenuItem(MF_ENABLED, 10, "Prefer now playing");   
    _menu.AppendMenuItem(MF_ENABLED, 11, "Follow selected track");   
    _menu.CheckMenuRadioItem(10, 11 , selection_mode + 10);   
    _menu.EnableMenuItem(selection_mode + 10, 1);
   
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, 20, "Store Ratings in the database");
    _menu.AppendMenuItem(MF_ENABLED, 21, "Store Ratings in the file tags");
    _menu.CheckMenuRadioItem(20, 21, rating_mode + 20);      
   _menu.EnableMenuItem(rating_mode + 20, 1);   
   
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, 30, "Set Rating 5");
    _menu.CheckMenuItem(30, set_rating_5);   

    switch (file_attr) {
    case 32:   
        txt = "to read - only";
        break;     
    case 33:   
        txt = "to read - write";
        break;
    default:
        txt = "";
    }

    MF_STRING = txt ? MF_ENABLED : MF_GRAYED;
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);   
    _menu.AppendMenuItem(MF_STRING, 40, "Change file attributes " + txt);
   
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, 50, "Fade effect");
    _menu.CheckMenuItem(50, fade_effect);

    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0);
    _menu.AppendMenuItem(MF_ENABLED, 100, "Properties");
    _menu.AppendMenuItem(MF_ENABLED, 200, "Configure...");

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

    switch (ret) {
    case 10:
    case 11:
        selection_mode = ret - 10;
        window.SetProperty("selection mode", selection_mode);
        on_item_focus_change();
        break;
    case 20:
    case 21:
        rating_mode = ret - 20;
        window.SetProperty("rating_mode", rating_mode);
        on_item_focus_change();
        break;
    case 30:
        window.SetProperty("set rating 5", !set_rating_5);
        set_rating_5 = window.GetProperty("set rating 5");
        break;
    case 40:
        switch (file_attr) {
        case 32:   
            if (metadb) change_file_attr(33); //read only
            on_item_focus_change();
            break;
        case 33:
            if (metadb) change_file_attr(32); //read write
            on_item_focus_change();
            break;
        }   
        break;
    case 50:
        window.SetProperty("fade effect", !fade_effect);
        fade_effect = window.GetProperty("fade effect");
        break;
    case 100:
        window.ShowProperties();
        break;   
    case 200:
        window.ShowConfigure();      
        break; 
    }
    _menu.Dispose();
    return true;
}

function get_file_attr() {   
    t_type = track_type(metadb.RawPath);
    file_attr = 0;   
   
    if (t_type == "file") {   
        for (var i = 0; i < count; i++) {            
            item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);
            item_path = fb.Titleformat("%path%").EvalWithMetadb(item);          
            try {            
                file = fso.GetFile(item_path);            
                file_attr += parseInt(file.Attributes);            
            } catch(e) {};             
        }             
        file_attr = Math.round(file_attr / count);   
    }
   
    var file_read_only = file_attr == 32 ? false : true;
    var file_cue = t_type == "cue" ? true : false;
    var stream = t_type == "stream"  ? true : false;

    tooltip_text = file_cue ? " cue file " : file_read_only && t_type == "file" ? " file" + (count > 1 ? "s are " : " is ") + "read only " : stream ? " stream " : "";

    if ((file_cue || file_read_only || stream) && rating_mode == 1 ) {    
        readwrite = false;                  
    } else {            
        readwrite = true;                     
    }                  
}   

function change_file_attr(k) {
    t_type = track_type(metadb.RawPath);
   
    if (t_type == "file") {
        for (var i = 0; i < count; i++) {
            item = plman.GetPlaylistSelectedItems(plman.ActivePlaylist).Item(i);   
            item_path = fb.Titleformat("%path%").EvalWithMetadb(item);
            try {
                file = fso.GetFile(item_path);
                file.Attributes = k;
            } catch(e) {};
        }
    }   
}

function star(gr, x, y, img_size, fill, line_thickness, color, sh, sh_color, alpha){
    var radius = img_size / 2;
    var radius_2 = radius / 2.61803;
    line_thickness = line_thickness >= radius_2 ? radius_2 : line_thickness;
    var delta = line_thickness / 2 * Math.tan(72 / 180 * Math.PI);

    var points = [], sh_points = [];
    var x_points_1 = [], y_points_1 = [], x_points_2 = [], y_points_2 = [];

    for (var i = 0; i < 10; i++) {
        if (i % 2 == 0) {
            x_points_1.push((radius - delta) * Math.cos(Math.PI * i / 10 * 2 - Math.PI / 2));
            y_points_1.push((radius - delta) * Math.sin(Math.PI * i / 10 * 2 - Math.PI / 2));
        } else {
            x_points_2.push((radius - delta) / 2.61803 * Math.cos(Math.PI * i / 10 * 2 - Math.PI / 2));
            y_points_2.push((radius - delta) / 2.61803 * Math.sin(Math.PI * i / 10 * 2 - Math.PI / 2));
        }
    }
       
    for (var i = 0; i < 5; i++) {
        points.push(x_points_1[i] + radius, y_points_1[i] + radius, x_points_2[i] + radius, y_points_2[i] + radius);
        sh_points.push(x_points_1[i] + radius + 1, y_points_1[i] + radius + 1, x_points_2[i] + radius + 1, y_points_2[i] + radius + 1);
    }

    var img = gdi.CreateImage(img_size, img_size);
    var temp_gr = img.GetGraphics();
    temp_gr.SetSmoothingMode(2);
   
    if (line_thickness > 0) {
        sh && temp_gr.DrawPolygon(sh_color, line_thickness, sh_points);
        temp_gr.DrawPolygon(color, line_thickness, points);
    }

    if (fill && line_thickness == 0) {
        sh && temp_gr.FillPolygon(sh_color, 1, sh_points);
        temp_gr.FillPolygon(color, 1, points)
    }

    gr.DrawImage(img, x - radius, y - radius, img_size, img_size, 0, 0, img_size, img_size, 0, alpha);
   
    img.ReleaseGraphics(temp_gr);
    img.Dispose();
    temp_gr = null;
    img = null;
}

function track_type(p) {
    var type;
    if (p.indexOf("file") >= 0 && p.indexOf("cue") >= 0){
        type = "cue";
    } else if (p.indexOf("file") >= 0){
        type = "file";
    } else if (p.indexOf("cdda") >= 0){
        type = "cdda";
    } else if (p.indexOf('://') >= 0 || p.indexOf('www') >= 0 || p.indexOf("youtube") >= 0 || p.indexOf("video") >= 0 || p.indexOf("vimeo") >= 0){
        type = "stream";
    } else {
        type = "";
    }
    return type;
}

var b_hover_state, b_hover_alpha = 0;
var star_state = [];
var star_alpha = [];
check_star_state();
var b_timer_started = false;

function check_star_state() {
    star_state = [];
   
    for (var i = 0; i < 5; i++) {
        r = lbtn_down ? nrating : rating;
        if (i < r) {star_state[i] = 1} else (star_state[i] = 0);
    }
   
    if (!b_timer_started) button_alpha_timer();
}

function button_change_state() {
    if (!b_timer_started) button_alpha_timer();
    b_hover_state = 1;
}

function button_leave_change_state() {   
    if (b_hover_state != 0) {
        b_hover_state = 0;
    }
}

function button_alpha_timer() {
    b_timer_started = true;
   
    var on_step = 51;
    var off_step = 20;
   
    b_timer = window.SetInterval(function() {
        switch (b_hover_state) {
        case 0:
            b_hover_alpha = fade_effect ? Math.max(0, b_hover_alpha -= off_step) : 0;
            break;
        case 1:
            b_hover_alpha = fade_effect ? Math.min(255, b_hover_alpha += on_step) : 255;
            break;
        }
       
        for (var i = 0; i < 5; i++) {
            if (!star_alpha[i]) star_alpha[i] = 0;
           
            switch (star_state[i]) {
            case 0:
                star_alpha[i] = fade_effect ? Math.max(0, star_alpha[i] -= off_step) : 0;
                break;
            case 1:
                star_alpha[i] = fade_effect ? Math.min(255, star_alpha[i] += on_step) : 255;
                break;
            }
        }
       
        window.Repaint();

        if (!on_mouse){
            var tmp_off = [];
            var tmp_on = [];
            for(var i = 0; i < star_alpha.length; i++) {
                if (star_state[i] != 1) tmp_off.push(star_alpha[i]);
                if (star_state[i] == 1) tmp_on.push(star_alpha[i]);
            }
       
            if (b_hover_alpha <= 0 && Math.max.apply(null, tmp_off) <= 0 && Math.min.apply(null, tmp_on) >= 255){
                window.ClearInterval(b_timer);
                b_timer_started = false;
            }
        }
    }, 30);
}

function info_tooltip() {
    tooltip_on = true;
    window.Repaint();
    tooltip_timer &&  window.ClearTimeout(tooltip_timer);
    tooltip_timer = window.SetTimeout(function() {
        tooltip_on = false;
        window.Repaint();
        tooltip_timer && window.ClearTimeout(tooltip_timer);
    }, 1000);
}

function clear_tooltip_timer(){
    if (tooltip_timer){
        tooltip_on = false;
        window.ClearInterval(tooltip_timer);
    } 
}

function draw_tooltip(gr){
    w_tt = 4 * (star_size + offset) + star_size;
    x_tt = x_s - star_size / 2;
    h_tt = gr.CalcTextHeight("0", font) + 2;
    y_tt = y_s - h_tt * 0.5;

    gr.GdiDrawText( tooltip_text, font, color1, x_tt, y_tt, w_tt, h_tt, DT_SINGLELINE | DT_CENTER | DT_VCENTER | DT_WORD_ELLIPSIS);
}

function print(msg) {
    fb.trace(msg);
}


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

Сообщение #2003 Aliado_71 » 13.11.2017, 21:58

kgena_ua писал(а):Надо тестировать.
Работает, сохраняет и в базу и в теги нормально, :beer:
Aliado_71 M
Бывалый
Аватара
Возраст: 46
Откуда: Украина, Донецк
Репутация: 39
С нами: 2 года 9 месяцев

Сообщение #2004 kgena_ua » 14.11.2017, 13:42

Aliado_71 писал(а):сохраняет и в базу и в теги нормально
Вот и славно. Осталось сделать поддержку одновременно WSH Panel и JScript Panel
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 351
С нами: 4 года 8 месяцев

Сообщение #2005 AHAPXICT » 14.11.2017, 14:24

kgena_ua, Приветствую :beer:
kgena_ua писал(а):Осталось сделать поддержку одновременно WSH Panel и JScript Panel
Я вчера проверял на ХР, на радио в БД пишет без проблем. А что есть несовместимость? Или ограничение по IE9?
Сейчас проверил на JS v1.2.4 при записи в тег выдало ошибку:
Объект не поддерживает свойство или метод "CreateHandleList"
File: <main>
Line: 221, Col: 21
Media Library it's bad - explorer it's good!
AHAPXICT M
Мастер
Аватара
Возраст: 46
Откуда: Киев
Репутация: 113
С нами: 4 года 1 месяц

Сообщение #2006 kgena_ua » 14.11.2017, 18:20

AHAPXICT, привет.
на JS v1.2.4 при записи в тег выдало ошибку:
Объект не поддерживает свойство или метод "CreateHandleList

Скрипт делался для JS v1.3.0. Именно с этой версии убрана поддержка UpdateFileInfoSimple и добавлен метод UpdateFileInfoFromJSON для записи данных в тэг.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 351
С нами: 4 года 8 месяцев

Сообщение #2007 AHAPXICT » 14.11.2017, 18:55

Да я в курсе, сам оставлял сообщение в теме с изменениями к версии 1.3 . Просто когда запустил скрипт и записал рейтинг в БД, мне показалось что функция работает. В общем проехали, всё равно пока не планирую переходить на последнюю версию панели JS.
Media Library it's bad - explorer it's good!
AHAPXICT M
Мастер
Аватара
Возраст: 46
Откуда: Киев
Репутация: 113
С нами: 4 года 1 месяц

Сообщение #2008 kgena_ua » 14.11.2017, 19:00

AHAPXICT, а для записи рейтинга в БД ничего не менялось. Что в WSH, что в JScript - методы одинаковы.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Гуру
Аватара
Возраст: 53
Откуда: Украина, Днепр
Репутация: 351
С нами: 4 года 8 месяцев

Сообщение #2009 AHAPXICT » 14.11.2017, 19:14

Меня с толку сбила ошибка про которую раньше писал, так что это уже не важно.
Правильно MC Web сказал
MC Web писал(а):Похоже этот компонент скоро только на WIN10 будет работать.
Media Library it's bad - explorer it's good!
AHAPXICT M
Мастер
Аватара
Возраст: 46
Откуда: Киев
Репутация: 113
С нами: 4 года 1 месяц

Сообщение #2010 drobovik » 14.11.2017, 22:15

Добряки, расскажите пожалуйста как решить мою проблему.
Захотел я в сборку добавить себе пару панелей.
Добавить добавил, всё работает, но теперь не могу удалить ненужные. Я понимаю что это основы, но и я ну совсем зелёный новичок в этом вопросе.
У меня получилось только "выключить" отображение ненужной панели, но пустое место осталось - я его показал стрелочкой.
Ну и чтоб два раза не вставать - как можно поменять местами эти панели-кнопки?
Я имею в виду LYR, INF, BIO и т.д.
Спойлер
Изображение
Ложная скромность порождает некомпетентность.
---
drobovik M
Новичок
Аватара
Возраст: 38
Репутация: 1
С нами: 7 лет 9 месяцев

Сообщение #2011 vladj » 14.11.2017, 23:34

drobovik писал(а):У меня получилось только "выключить" отображение ненужной панели, но пустое место осталось - я его показал стрелочкой.
Ну и чтоб два раза не вставать - как можно поменять местами эти панели-кнопки?
Спойлер
Изображение
Правильно назвал кнопки кнопками....что-бы ответить нужно иметь такую-же сборку, а так навскидку....это очень просто меняется в скрипте, где прописаны эти кнопки, там у них только поменять значения по горизонтали, а не нужную кнопку сначала закомментировать (двойным слэшем), затем удалить строки которые к ней относятся. Правой по кнопкам, Splitter Settings > Script. В окне скрипта ищешь строчки, которые относятся к кнопкам, типа
$imagebutton(120,40,50,50, т.е. это имидж-рисунок кнопки, где первое значение (тут 120 например) это расположение по горозонтали. Меняешь это значение (первый блок цифирок) что-бы кнопки выстроились так, как тебе нужно. Не нужную панель кстати не выключают, а удаляют или меняют на другую. PS. после изменений не забываем справа-внизу применить Apply.
HTPC Termaltake, eGlobal i5-7200, Asrock Beebox J3160, Onkyo 525E, цап SMSL, фронт Yamaha 8900.
vladj M
Гуру
Аватара
Откуда: Пермский край
Репутация: 308
С нами: 7 лет 10 месяцев

Сообщение #2012 drobovik » 15.11.2017, 00:18

vladj писал(а):Правильно назвал кнопки кнопками....
Терминологию я подтяну. Сегодня впервые занимаюсь "фубаростроительством". Хотя скорее это "фубаронастройка".
vladj писал(а):что-бы ответить нужно иметь такую-же сборку
Это сборка catrox_1_april_2014__by_extremehunter

Настройки скрипта я нашёл, но там $imagebutton имеет значения (,,,,,,,) - это меня поставило в тупик.

Добряк, а ты можешь посмотреть сам? Но самое главное показать мне как, я хочу уметь это делать и настраивать сам, а куда копать пока не пойму.
Чтобы было проще и исключить влияние моих возможных ковыряний, я снова скачал и настроил сборку по инструкциям под себя (добавил три кнопки через компонент foo_jscript_panel-v1.3.0 - больше ничего не делал)


Из хотелок - полностью снести крайнюю слева кнопку-панель BIO - и рассказать как это делается.
Кнопку TREE поставить крайней левой, кнопку LIB второй слева. Ну и показать как это делать.

Залил архив на ЯД. Сборка портабельная, возможно нужно будет установить пару шрифтов, но они есть в архиве.

Был бы весьма признателен за помощь и науку.

https://yadi.sk/d/EyvzLIrc3PhamS
Ложная скромность порождает некомпетентность.
---
drobovik M
Новичок
Аватара
Возраст: 38
Репутация: 1
С нами: 7 лет 9 месяцев

Сообщение #2013 seriousstas » 26.11.2017, 04:20

Финальная версия модифицированного под тач варианта
@name "Biography Text & Album Info & Picture. www.last.fm"
@author "kgena_ua"
@version "18112016"
Подробно здесь .
Скачать
Можно использовать и в обычных условиях ..
Изменения восновном в плане стабильности, исправления , например это исправил
работает и с JScript Panel v1.3.2 [25.11.2017]

За коментами есть возможность управления циклом из MPS (что-б не листал , когда спрятан)
и отключение кнопок и текста , когда используется ,как аватарка (мелкое окно)
применял в своей сборке, мож пригодится кому..
Вложения
Снимок экрана (7).jpg
Снимок экрана (6).jpg
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 69
С нами: 2 года 10 месяцев

Сообщение #2014 MC Web » 27.11.2017, 16:01

AHAPXICT писал(а):Правильно MC Web сказал
MC Web писал(а):Похоже этот компонент скоро только на WIN10 будет работать.

AHAPXICT, приветствую.
Похоже мои опасения подтверждаются, по данному принципу будут обновляться и новые версии Columns UI.
MC Web
Мастер
Аватара
Репутация: 105
С нами: 4 года 3 месяца

Сообщение #2015 seriousstas » 27.11.2017, 17:39

AHAPXICT
пока не планирую переходить на последнюю версию панели JS
Делал стресс тесты недавно для с JScript Panel v1.3.X успешно пройдены в отличии от с JScript Panel v1.2.X , с которой были ранее описанные проблены ,
можно смело перелазить ) , как (соглашаясь с duzzy) и на поновее ОС 7 или 10 по выбору .
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 69
С нами: 2 года 10 месяцев

Сообщение #2016 AHAPXICT » 27.11.2017, 22:37

Приветствую всех :beer:
MC Web, да я читал на гидрогене, по моему, что последняя бета версия будет последней что поддерживает ХР. Ну да это не проблема, CUI нормально и последовательно развивается. А вот что касается JS то "некоторые" по моему без тормозов.
seriousstas, у тебя есть желание каждую неделю скрипты переделывать, которые между собой тупо не совместимы не в какой последовательности?
Марк удалил рендеринг текста в последней версии, задали вопрос на форуме, выложил скрипт в котором просто удалил "лишние" строки или как-то так. Для меня это не приемлемо, и дело тут не в операционной системе. MC Web, ты смотрел этот скрипт(DarkOne4Mod v1)? Оцени проделанную работу, запустить можно и на v4 на панели WSH, достаточно строку // @import заменить на свою.
Media Library it's bad - explorer it's good!
AHAPXICT M
Мастер
Аватара
Возраст: 46
Откуда: Киев
Репутация: 113
С нами: 4 года 1 месяц

Сообщение #2017 MC Web » 28.11.2017, 00:57

AHAPXICT писал(а):ты смотрел этот скрипт(DarkOne4Mod v1)? Оцени проделанную работу, запустить можно и на v4 на панели WSH, достаточно строку // @import заменить на свою.
Посмотрел, только не понял, а в чем разница от такого же скрипта для DarkOne 3.0 - 4.0?
MC Web
Мастер
Аватара
Репутация: 105
С нами: 4 года 3 месяца

Сообщение #2018 AHAPXICT » 28.11.2017, 01:16

MC Web писал(а):Посмотрел, только не понял, а в чем разница от такого же скрипта для DarkOne 3.0 - 4.0?
Я сжато писал и толком не объяснил. Разницы не какой, tedgo тут не причём, Марк удалил из последней версии JS панели рендер текста, ну и естественно удалил его из скрипта исправленного под последнюю версию панели, теперь при переключении вообще не отображается название типа обложки. Ну ты понял о чём я)))
Media Library it's bad - explorer it's good!
AHAPXICT M
Мастер
Аватара
Возраст: 46
Откуда: Киев
Репутация: 113
С нами: 4 года 1 месяц

Сообщение #2019 MC Web » 28.11.2017, 01:35

JS панели меня разочаровали - удалил из своего меню и забыл.
MC Web
Мастер
Аватара
Репутация: 105
С нами: 4 года 3 месяца

Сообщение #2020 seriousstas » 28.11.2017, 02:57

s, у тебя есть желание каждую неделю скрипты переделывать, которые между собой тупо не совместимы не в какой последовательности?
AHAPXICT
Здравствуй , а примеры таких скриптов , где столько гемора ?
использую более десятка разных .. один раз поправил синтаксис после появления v1.2.X -ВСЁ!
хотя сознаюсь - опасения были , что автор снова чего-то "допилил"
Про то как править за три минуты старые WSH под JS есть пояснения у Марка - обычно все сводится к замене fb на plman..
WSH панель в мусорке год как ..)
seriousstas
Мастер
Откуда: Украина , Ивано-Франковск
Репутация: 69
С нами: 2 года 10 месяцев

Пред.След.

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