Скрипты для foo_uie_wsh_panel_mod

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

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

Сообщение #2961 kgena_ua » 04.12.2021, 23:28

Воронин:В папке должен быть один аудиофайл и несколько картинок. Картинки назывались 0-00, скажем 0-35, 1-20 , то есть минуты, секунды
Это не сложно. Жаль нет времени.
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 9 месяцев

Сообщение #2962 sever2k » 13.12.2021, 20:22

Здравствуйте! На скрине фрагмент скрипта, который отображает картинку соответствующую расширению музыкального файла. Возможно ли изменить скрипт по аналогии чтоб отображать картинку соответствующую тегу?
( var icon = ( fso.FileExists( fb.FoobarPath + '\\flags\\' + %origin% + '.png' ) ) ? gdi.Image( fb.FoobarPath + \\flags\\' + %origin% + '.png' ) : gdi.Image( fb.FoobarPath + '\\flags\\generic.png' );)
Вложения
Снимок.JPG
sever2k
Аватара
Репутация: 2
С нами: 4 года 4 месяца

Сообщение #2963 TaoZuiyin » 30.12.2021, 06:38

Что делать, если ширина индикатора выполнения недостаточно велика
Код: Выделить всё
//WSH Seekbar
// For DarkOne v3.1

DT_LEFT = 0x00000000;
DT_CENTER = 0x00000001;
DT_RIGHT = 0x00000002;
DT_VCENTER = 0x00000004;
DT_SINGLELINE = 0x00000020;
MF_SEPARATOR = 0x00000800;
MF_STRING = 0x00000000;

function RGB(r,g,b){ return (0xff000000|(r<<16)|(g<<8)|(b)); }

var g_font = gdi.Font("DarkOne", 19, 0);
var g_font1 = gdi.Font("Arial Black", 7, 0);
var ui_type = window.InstanceType;
var g_drag = 0;
var g_drag_seek = 0;
var v_change = false;
var v_timer = null;
var percent = fb.TitleFormat("$max(0,$left($muldiv(%playback_time_seconds%,1000,%length_seconds%),$sub($len($muldiv(%playback_time_seconds%,1000,%length_seconds%)),1)))'.'$right($muldiv(%playback_time_seconds%,1000,%length_seconds%),1)'%' $if(%ispaused%,\u258c,\u25ba)");
var playtime = fb.TitleFormat("%playback_time%");
var length = fb.TitleFormat("%length%");
var timeremain = fb.TitleFormat("%playback_time_remaining%");

get_color();   

function TimeFmt(t){
  var zpad = function(n){
      var str = n.toString();
      return (str.length<2) ? "0"+str : str;
  }
  var h = Math.floor(t/3600); t-=h*3600;
  var m = Math.floor(t/60); t-=m*60;
  var s = Math.floor(t);
  if(h>0) return h.toString()+":"+zpad(m)+":"+zpad(s);
  return m.toString()+":"+zpad(s);
}

function on_paint(gr){
  var ww = window.Width;
  var wh = window.Height;
  var txt;
  var txt1;
  var txt2;
  var txt3;
  var txt4;
  var pos = 0;
  var color_rgb =  fb.PlaybackLength <= 0 ? back_rgb : ui_btntxtcol;   
//  var color2_rgb =  fb.PlaybackLength <= 0 ? back_rgb : back2_rgb;
//  var color3_rgb =  fb.PlaybackLength <= 0 ? back2_rgb : font_rgb;
 
  if(fb.PlaybackTime > 0){
      if(g_drag){
          pos = ww * g_drag_seek;
          txt4 = "<< " + TimeFmt(g_drag_seek * fb.PlaybackLength) + " / " + TimeFmt(fb.PlaybackLength) + " >>";
      }
      else{
          pos = ww * (fb.PlaybackTime / fb.PlaybackLength);
          txt = percent.Eval();
          txt1 = playtime.Eval();
          txt2 = length.Eval();
          txt3 = timeremain.Eval();
      }

  }else
  {
  txt4 = "  PLAYBACK STOPPED ";
 }
 
  String.prototype.repeat = function(n) {return new Array(n + 1).join(this);}
 
  gr.FillSolidRect (0, 0, ww, wh, ui_backcol);
  gr.GdiDrawText("\u2598".repeat(30), g_font, back_rgb, 0, 0, ww, wh);
  gr.GdiDrawText("\u2589".repeat(30), g_font, back_rgb, 0, 12, ww, wh);
  gr.GdiDrawText("|".repeat(110), g_font, back2_rgb, 0, -14, ww, wh);
  gr.GdiDrawText("|".repeat(110), g_font, font_rgb, 0, -14, pos, wh);

//  gr.GdiDrawText("\u2589".repeat(30), g_font, font_rgb, 0, 12, pos, wh);
//  gr.GdiDrawText("———".repeat(20), g_font, font_rgb, -30, 4, pos, wh);
  gr.GdiDrawText("—", g_font, peak_rgb, pos - 10, 0, ww + pos, wh);

// ======SYMBOL======= //   \u25CF , \u25A1 , \u25A0  //
//  gr.GdiDrawText("\u25A0".repeat(66), g_font, back2_rgb, 0, -6, ww, wh);
  gr.GdiDrawText("\u25A0".repeat(66), g_font, back2_rgb, 0, 4, ww, wh);
  gr.GdiDrawText("\u25A0".repeat(66), g_font, back2_rgb, 0, 14, ww, wh);
//  gr.GdiDrawText("\u25A0".repeat(66), g_font, font_rgb, 0, -6, pos, wh);
  gr.GdiDrawText("\u25A0".repeat(66), g_font, font_rgb, 0, 4, pos, wh);
  gr.GdiDrawText("\u25A0".repeat(66), g_font, font_rgb, 0, 14, pos, wh);
 
  gr.GdiDrawText( "PERCENT", g_font1, color_rgb, 0, 30, ww, wh, DT_LEFT | DT_SINGLELINE);
  gr.GdiDrawText( "ELAPSED", g_font1, v_change ? back_rgb : color_rgb, -ww/7.5, 30, ww, wh, DT_CENTER | DT_SINGLELINE);
  gr.GdiDrawText( "TIME", g_font1, v_change ? back_rgb : color_rgb, ww/7, 30, ww, wh, DT_CENTER | DT_SINGLELINE);
  gr.GdiDrawText( "REMAIN", g_font1, v_change ? back_rgb : color_rgb, 0, 30, ww, wh, DT_RIGHT | DT_SINGLELINE);
 
  gr.GdiDrawText("\u2589".repeat(30), g_font, back_rgb, 0, 37, ww, wh);
  gr.GdiDrawText( txt, g_font, font_rgb, 0, 37, ww, wh, DT_LEFT | DT_SINGLELINE);
  if (v_change) gr.GdiDrawText("Volume  " + fb.Volume.toFixed(2) + " dB", g_font, font_rgb, 0, 37, ww, wh,  DT_RIGHT | DT_SINGLELINE);
    else {
        gr.GdiDrawText( txt1, g_font, font_rgb, -ww/7.5, 37, ww, wh, DT_CENTER | DT_SINGLELINE);
        gr.GdiDrawText( txt2, g_font, font_rgb, ww/7.5, 37, ww, wh, DT_CENTER | DT_SINGLELINE);
        gr.GdiDrawText( txt3, g_font, font_rgb, 0, 37, ww, wh, DT_RIGHT | DT_SINGLELINE);
        gr.GdiDrawText( txt4, g_font, font_rgb, 0, 37, ww, wh, DT_CENTER | DT_SINGLELINE);
}

}

// ========MENU======== //
function on_mouse_rbtn_up(x, y) {

    var _menu = window.CreatePopupMenu();
   
    _menu.AppendMenuItem(MF_STRING, 1, "Default");
    _menu.AppendMenuItem(MF_STRING, 2, "Blue");
    _menu.AppendMenuItem(MF_STRING, 3, "Green");
    _menu.AppendMenuItem(MF_STRING, 4, "Red");
    _menu.AppendMenuItem(MF_STRING, 5, "White");
    _menu.AppendMenuItem(MF_STRING, 6, "Yellow")
    _menu.AppendMenuItem(MF_STRING, 7, "Grey")
    _menu.CheckMenuRadioItem(1, 7, window.GetProperty("Color", 1));   
    _menu.AppendMenuItem(MF_SEPARATOR, 0, 0)
    _menu.AppendMenuItem(MF_STRING, 8, "Properties...");
    _menu.AppendMenuItem(MF_STRING, 9, "Configure...");

    idx = _menu.TrackPopupMenu(x, y);
    switch (idx) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
       
        ch_color(idx);
   
        break;   
    case 8:
        window.ShowProperties();
        break;
    case 9:
        window.ShowConfigure();
        break;
}
    _menu.Dispose();
    return true
}

//=======================//
var font_rgb, back_rgb, back2_rgb, peak_rgb;

function get_color() {
    ui_backcol = ui_type == 0 ? window.GetColorCUI(3) : window.GetColorDUI(1);
   ui_textcol = ui_type == 0 ? window.GetColorCUI(0) : window.GetColorDUI(0);
   ui_btntxtcol = ui_type == 0 ? window.GetColorCUI(2) : window.GetColorDUI(0);
    if (window.GetProperty("Color") == 1)  font_rgb = RGB(191,228,255), back_rgb = RGB(31,44,53), back2_rgb = RGB(57,68,76), peak_rgb = RGB(255,0,0);   //Default   
    if (window.GetProperty("Color") == 2)  font_rgb = RGB(115,173,229), back_rgb = RGB(28,44,55), back2_rgb = RGB(40,60,79), peak_rgb = RGB(255,0,0);   //Blue = RGB(128,192,255) ;  Blue2 =  RGB(115,173,229)   
    if (window.GetProperty("Color") == 3)  font_rgb = RGB(0,255,0), back_rgb = RGB(18,46,35), back2_rgb = RGB(5,80,5), peak_rgb = RGB(255,0,0);       //Green   
    if (window.GetProperty("Color") == 4)  font_rgb = RGB(255,0,0), back_rgb = RGB(40,27,35), back2_rgb = RGB(95,5,5), peak_rgb = RGB(255,255,255);       //Red   
    if (window.GetProperty("Color") == 5)  font_rgb = RGB(255,255,255), back_rgb = RGB(36,46,53), back2_rgb = RGB(91,91,91), peak_rgb = RGB(255,0,0);   //White   
    if (window.GetProperty("Color") == 6)  font_rgb = RGB(255,255,0), back_rgb = RGB(36,46,35), back2_rgb = RGB(95,95,5), peak_rgb = RGB(255,0,0);     //Yellow
    if (window.GetProperty("Color") == 7)  font_rgb = RGB(63,100,127), back_rgb = RGB(28,44,55), back2_rgb = RGB(38,61,76), peak_rgb = RGB(255,0,0);    //Grey
}

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

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

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

var g_timer;

function ch_color(idx) {
    get_color();

    old_R = getRed(font_rgb);   
    old_G = getGreen(font_rgb);   
    old_B = getBlue(font_rgb);

    window.SetProperty("Color", idx);   

   
    get_color();

    new_R = getRed(font_rgb);   
    new_G = getGreen(font_rgb);   
    new_B = getBlue(font_rgb);

    step_R = (new_R - old_R)/255; step_G = (new_G - old_G)/255; step_B = (new_B - old_B)/255;

    g_timer = window.SetInterval(function() {
        old_R = old_R + step_R; old_G = old_G + step_G; old_B = old_B + step_B;
        R = old_R; G = old_G; B = old_B;
        font_rgb = RGB(R,G,B)
        window.Repaint();
       
        if (
            step_R < 0 && R <= new_R || step_G < 0 && G <= new_G || step_B < 0 && B <= new_B ||
            step_R > 0 && R >= new_R || step_G > 0 && G >= new_G || step_B > 0 && B >= new_B
        ) {window.ClearInterval(g_timer); R = new_R; G = new_G; B = new_B; font_rgb = RGB(R,G,B)};
    }, 5);
}

function on_mouse_lbtn_down(x,y){
  g_drag = 1;
}

function on_mouse_lbtn_up(x,y){
  if(g_drag){
      g_drag = 0;
      g_drag_seek = x / window.Width;
      g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
      fb.PlaybackTime = fb.PlaybackLength * g_drag_seek;
  }
}

function on_mouse_move(x,y){
  if(g_drag){
      g_drag_seek = x / window.Width;
      g_drag_seek = (g_drag_seek<0) ? 0 : (g_drag_seek<1) ? g_drag_seek : 1;
      window.Repaint();
  }
}

function on_mouse_wheel(step) {
   fb.PlaybackTime += step;
}

function on_playback_seek(time) {
   window.Repaint();
}

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

var seek_timer;
function on_playback_time(time){
    seek_timer && window.ClearInterval(seek_timer);
    seek_timer = window.SetInterval(function() {
       window.Repaint();
    }, 50 );
}

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

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

function on_playback_starting(cmd, paused){
   window.Repaint();
}

function on_playback_new_track(info){
  window.Repaint();
}

function on_volume_change(val) {
   var ww = window.Width;
   var wh = window.Height;
    if (v_timer) {
      window.ClearTimeout(v_timer);
      v_timer = null;
   }

   v_timer = window.SetTimeout(
      function () {
         window.RepaintRect(0, 0, ww, wh, DT_CENTER | DT_SINGLELINE);
         window.ClearTimeout(v_timer);
         v_timer = null;
         v_change = false;
      }, 1000);

   v_change = true;
   window.RepaintRect(0, 0, ww, wh, DT_CENTER | DT_SINGLELINE);
}
//EOF
Вложения
Snipaste_2021-12-30_10-24-59.png
Snipaste_2021-12-30_10-24-59.png (2.81 КБ) Просмотров: 337
TaoZuiyin
Репутация: 0
С нами: 29 дней 16 часов

Сообщение #2964 AHAPXICT » 30.12.2021, 09:48

TaoZuiyin, как я понимаю скрипт в теме взяли, это я делал и у меня в сборках есть и другие варианты этого скрипта в папке: foobar2000 MPV\themes\DarkOne_v4.0\Others\WSH Scripts --> DO WSH Seekbar v3.1(Stream+CD)....
TaoZuiyin:Что делать
По большей части копировать и передвигать строки, заниматься дизайном. Нудная, занимающая много времени работа. Приблизительно всё что я привёл ниже(со скрипта своей сборки):
Код: Выделить всё
  gr.GdiDrawText("\u2598".repeat(30), g_font, back_rgb, 0, 0, ww, wh);
  gr.GdiDrawText("\u2589".repeat(30), g_font, back_rgb, 0, 12, ww, wh);
  gr.GdiDrawText("|".repeat(110), g_font, back2_rgb, 0, -14, ww, wh);
  gr.GdiDrawText("|".repeat(110), g_font, font_rgb, 0, -14, pos, wh);

//  gr.GdiDrawText("\u2589".repeat(30), g_font, font_rgb, 0, 12, pos, wh);
//  gr.GdiDrawText("———".repeat(20), g_font, font_rgb, -30, 4, pos, wh);
  gr.GdiDrawText("—", g_font, peak_rgb, pos - 10, 0, ww + pos, wh);

// ======SYMBOL======= //   \u25CF , \u25A1 , \u25A0  //
//  gr.GdiDrawText("\u25A0".repeat(66), g_font, back2_rgb, 0, -6, ww, wh);
  gr.GdiDrawText("\u25A0".repeat(66), g_font, back2_rgb, 0, 4, ww, wh);
  gr.GdiDrawText("\u25A0".repeat(66), g_font, back2_rgb, 0, 14, ww, wh);
//  gr.GdiDrawText("\u25A0".repeat(66), g_font, font_rgb, 0, -6, pos, wh);
  gr.GdiDrawText("\u25A0".repeat(66), g_font, font_rgb, 0, 4, pos, wh);
  gr.GdiDrawText("\u25A0".repeat(66), g_font, font_rgb, 0, 14, pos, wh);

  gr.GdiDrawText( "PERCENT", g_font1, g_drag? back_rgb : color_rgb, 0, 30, ww, wh, DT_LEFT | DT_SINGLELINE);
  gr.GdiDrawText( "ELAPSED", g_font1, v_change ? back_rgb : color_rgb, - Math.round(ww/7.5), 30, ww, wh, DT_CENTER | DT_SINGLELINE);
  gr.GdiDrawText( "TIME", g_font1, v_change ? back_rgb : color_rgb, Math.round(ww/7.5), 30, ww, wh, DT_CENTER | DT_SINGLELINE);
  gr.GdiDrawText( "REMAIN", g_font1, v_change || g_drag ? back_rgb : color_rgb, 0, 30, ww, wh, DT_RIGHT | DT_SINGLELINE);

  gr.GdiDrawText("\u2589".repeat(30), g_font, back_rgb, 0, 38, ww, wh);
  gr.GdiDrawText( txt, g_font, font_rgb, 0, 38, ww, wh, DT_LEFT | DT_SINGLELINE);
  if (v_change) gr.GdiDrawText("Volume  " + fb.Volume.toFixed(2) + " dB", g_font, font_rgb, 0, 38, ww, wh,  DT_RIGHT | DT_SINGLELINE);
    else {
        gr.GdiDrawText( txt1, g_font, font_rgb, - Math.round(ww/7.5), 38, ww, wh, DT_CENTER | DT_SINGLELINE);
        gr.GdiDrawText( txt2, g_font, font_rgb, Math.round(ww/7.5), 38, ww, wh, DT_CENTER | DT_SINGLELINE);
        gr.GdiDrawText( txt3, g_font, font_rgb, 0, 38, ww, wh, DT_RIGHT | DT_SINGLELINE);
        gr.GdiDrawText( txt4, g_font, font_rgb, 0, 38, ww, wh, DT_CENTER | DT_SINGLELINE);
}

Пример: .... , 0, 30, ww, wh,.... Где 0 ось Х, 30 ось Y, ww ширина окна, wh высота окна. Копируйте, добавляйте строки и перемещайте по оси Y меняя значение. Если по длине не хватает знаков шрифта добавляйте количество в скобках "повтор" "\u25A0".repeat(66). Ну и размер шрифта для "PERCENT", "ELAPSED" и т.д. в g_font1 = gdi.Font("Arial Black", 7, 0); если надо.
Media Library it's bad - explorer it's good!
AHAPXICT M
Аватара
Возраст: 51
Откуда: Киев
Репутация: 246
С нами: 8 лет 2 месяца

Сообщение #2965 kgena_ua » 30.12.2021, 13:16

Можно рассчитать кол-во символов на ширину окна.
Например заменить
Код: Выделить всё
  gr.GdiDrawText("|".repeat(110), g_font, back2_rgb, 0, -14, ww, wh);
  gr.GdiDrawText("|".repeat(110), g_font, font_rgb, 0, -14, pos, wh);
на
Код: Выделить всё
  sw = gr.CalcTextWidth("|", g_font);
  s_per_ww = Math.round(ww / sw);
  gr.GdiDrawText("|".repeat(s_per_ww), g_font, back2_rgb, 0, -14, ww, wh);
  gr.GdiDrawText("|".repeat(s_per_ww), g_font, font_rgb, 0, -14, pos, wh);
I.m.UR5EQF.
квартет на миллион долларов
kgena_ua M
Аватара
Возраст: 57
Откуда: Украина, Днепр
Репутация: 501
С нами: 8 лет 9 месяцев

Сообщение #2966 TaoZuiyin » 30.12.2021, 20:07

Мне все еще нужно поблагодарить вас за ответы, но я все еще мало знаю обо мне как новичке :smile: :smile: :smile: :smile: :smile: :smile:
TaoZuiyin
Репутация: 0
С нами: 29 дней 16 часов

Пред.

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



cron